1703 lines
58 KiB
C
1703 lines
58 KiB
C
/***************************************************************************
|
|
*
|
|
* Copyright 2015-2019 BES.
|
|
* All rights reserved. All unpublished rights reserved.
|
|
*
|
|
* No part of this work may be used or reproduced in any form or by any
|
|
* means, or stored in a database or retrieval system, without prior written
|
|
* permission of BES.
|
|
*
|
|
* Use of this work is governed by a license granted by BES.
|
|
* This work contains confidential and proprietary information of
|
|
* BES. which is protected by copyright, trade secret,
|
|
* trademark and other intellectual property rights.
|
|
*
|
|
****************************************************************************/
|
|
#ifndef _AVRCP_API_H
|
|
#define _AVRCP_API_H
|
|
#include "me_api.h"
|
|
#include "avctp_api.h"
|
|
#include "bluetooth.h"
|
|
#include "plat_types.h"
|
|
#include "cqueue.h"
|
|
|
|
#define BTIF_AVRCP_MAX_CHAR_SETS 10
|
|
|
|
#define BTIF_AVTP_HEADER_LEN 10
|
|
|
|
#define BTIF_AVRCP_RX_FRAG_BUFF_SIZE 672 //L2CAP_DEFAULT_MTU
|
|
|
|
typedef btif_avctp_event_t btif_avrcp_event_t;
|
|
typedef void *btif_avrcp_chnl_handle_t;
|
|
typedef void *btif_app_bt_device_t;
|
|
|
|
|
|
/** The transport layer is connected and commands/responses can now
|
|
* be exchanged.
|
|
*/
|
|
#define BTIF_AVRCP_EVENT_CONNECT BTIF_AVCTP_CONNECT_EVENT
|
|
|
|
/** The application will receive this event when a lower layer connection
|
|
* (L2CAP) has been disconnected. Both the target and controller of the
|
|
* connection are notified.
|
|
*
|
|
* During this callback, the 'p.remDev' parameter is valid.
|
|
*/
|
|
#define BTIF_AVRCP_EVENT_DISCONNECT BTIF_AVCTP_DISCONNECT_EVENT
|
|
|
|
/** A remote device is attempting to connect the transport layer.
|
|
* Only the acceptor of the connection is notified.
|
|
*/
|
|
#define BTIF_AVRCP_EVENT_CONNECT_IND BTIF_AVCTP_CONNECT_IND_EVENT
|
|
|
|
/* Group: Events for the exchange of basic AV/C commands that are not routed
|
|
* to the panel subunit.
|
|
*/
|
|
#define BTIF_AVRCP_EVENT_COMMAND BTIF_AVCTP_COMMAND_EVENT
|
|
|
|
/** A AV/C response was received from the remote device (target). This event
|
|
* is received for responses not routed to the panel subunit.
|
|
*/
|
|
#define BTIF_AVRCP_EVENT_RESPONSE BTIF_AVCTP_RESPONSE_EVENT
|
|
|
|
/** The remote device (target) rejected the AV/C command. This event is
|
|
* received for responses not routed to the panel subunit.
|
|
*/
|
|
#define BTIF_AVRCP_EVENT_REJECT BTIF_AVCTP_REJECT_EVENT
|
|
|
|
/** A command (see AVRCP_SendCommand) or response (see AVRCP_SendResponse)
|
|
* has been sent.
|
|
*/
|
|
#define BTIF_AVRCP_EVENT_TX_DONE BTIF_AVCTP_TX_DONE_EVENT
|
|
|
|
/** Additional operand data has been received for the previous
|
|
* AVRCP_EVENT_COMMAND or AVRCP_EVENT_RESPONSE.
|
|
*/
|
|
#define BTIF_AVRCP_EVENT_OPERANDS BTIF_AVCTP_OPERANDS_EVENT
|
|
|
|
/** An AV/C command has timed out.
|
|
*/
|
|
#define BTIF_AVRCP_EVENT_CMD_TIMEOUT ( BTIF_AVCTP_LAST_EVENT + 1)
|
|
|
|
/* Group: Events for the exchange of standard AV/C panel subunit commands.
|
|
*/
|
|
|
|
#define BTIF_AVRCP_EVENT_PANEL_PRESS ( BTIF_AVCTP_LAST_EVENT + 2)
|
|
|
|
/** The key corresponding to a panel operation has been held down on the
|
|
* remote controller device for at least AVRCP_PANEL_PRESSHOLD_TIME.
|
|
*/
|
|
#define BTIF_AVRCP_EVENT_PANEL_HOLD ( BTIF_AVCTP_LAST_EVENT + 3)
|
|
|
|
/** The key corresponding to a panel operation has been released on the
|
|
* remote controller device.
|
|
*/
|
|
#define BTIF_AVRCP_EVENT_PANEL_RELEASE ( BTIF_AVCTP_LAST_EVENT + 4)
|
|
|
|
/** A panel response has been received from the remote target device.
|
|
* All fields of "p.panelCnf" are valid.
|
|
*/
|
|
#define BTIF_AVRCP_EVENT_PANEL_CNF ( BTIF_AVCTP_LAST_EVENT + 5)
|
|
|
|
/* Group: Events for the exchange of Bluetooth specific advanced AV/C
|
|
* commands routed through the panel subunit.
|
|
*/
|
|
|
|
/** Advanced status information has been received from the controller.
|
|
*/
|
|
#define BTIF_AVRCP_EVENT_ADV_INFO ( BTIF_AVCTP_LAST_EVENT + 6)
|
|
|
|
/** An advanced request was received and requires a response by the
|
|
* application.
|
|
*/
|
|
#define BTIF_AVRCP_EVENT_ADV_REQ ( BTIF_AVCTP_LAST_EVENT + 7)
|
|
|
|
/** The notification of a registered event has been received.
|
|
*/
|
|
#define BTIF_AVRCP_EVENT_ADV_NOTIFY ( BTIF_AVCTP_LAST_EVENT + 8)
|
|
|
|
/** An Advanced command was sent successfully to the target and a response
|
|
* was received.
|
|
*/
|
|
#define BTIF_AVRCP_EVENT_ADV_RESPONSE ( BTIF_AVCTP_LAST_EVENT + 9)
|
|
|
|
/** No response was received for an Advanced command and it has timed out.
|
|
* This event is received for advanced commands routed to the panel subunit.
|
|
*/
|
|
#define BTIF_AVRCP_EVENT_ADV_CMD_TIMEOUT ( BTIF_AVCTP_LAST_EVENT + 10)
|
|
|
|
/** An Advanced PDU was sent successfully.
|
|
*/
|
|
#define BTIF_AVRCP_EVENT_ADV_TX_DONE ( BTIF_AVCTP_LAST_EVENT + 11)
|
|
|
|
/* Group: Connection events for establishing and releasing the AVRCP browsing
|
|
* channel. The browsing channel is used for the exchange of AVCTP-based
|
|
* commands/responses which contain Bluetooth specific media
|
|
* operations.
|
|
*/
|
|
#define BTIF_AVRCP_EVENT_BROWSE_CONNECT ( BTIF_AVCTP_LAST_EVENT + 12)
|
|
|
|
/** The application will receive this event when a lower layer connection
|
|
* (L2CAP) has been disconnected. Both the target and controller of the
|
|
* connection are notified.
|
|
*/
|
|
#define BTIF_AVRCP_EVENT_BROWSE_DISCONNECT ( BTIF_AVCTP_LAST_EVENT + 13)
|
|
|
|
/** remote device is attempting to connect the browsing channel.
|
|
*/
|
|
#define BTIF_AVRCP_EVENT_BROWSE_CONNECT_IND ( BTIF_AVCTP_LAST_EVENT + 14)
|
|
|
|
/* Group: Events for the exchange of browsing channel commands.
|
|
*/
|
|
#define BTIF_AVRCP_EVENT_BROWSE_REQ ( BTIF_AVCTP_LAST_EVENT + 15)
|
|
|
|
#define BTIF_AVRCP_EVENT_BROWSE_INFO ( BTIF_AVCTP_LAST_EVENT + 16)
|
|
|
|
#define BTIF_AVRCP_EVENT_BROWSE_RESPONSE ( BTIF_AVCTP_LAST_EVENT + 17)
|
|
|
|
#define BTIF_AVRCP_EVENT_BROWSE_CMD_TIMEOUT ( BTIF_AVCTP_LAST_EVENT + 18)
|
|
|
|
#define BTIF_AVRCP_EVENT_BROWSE_TX_DONE ( BTIF_AVCTP_LAST_EVENT + 19)
|
|
|
|
#define BTIF_AVRCP_EVENT_LAST ( BTIF_AVCTP_LAST_EVENT + 19)
|
|
|
|
typedef uint16_t avrcp_role_t;
|
|
|
|
/* Controller: Player/recorder features supported ("play" and "stop") */
|
|
#define BTIF_AVRCP_CT_CATEGORY_1 0x0001
|
|
|
|
/* Controller: Monitor/amplifier features supported ("volume up" and "volume down") */
|
|
#define BTIF_AVRCP_CT_CATEGORY_2 0x0002
|
|
|
|
/* Controller: Tuner features supported ("channel up" and "channel down") */
|
|
#define BTIF_AVRCP_CT_CATEGORY_3 0x0004
|
|
|
|
/* Controller: Menu features supported ("root menu", "up", "down", "left",
|
|
* "right", and "select")
|
|
*/
|
|
#define BTIF_AVRCP_CT_CATEGORY_4 0x0008
|
|
|
|
/* Target: Player/recorder features supported ("play" and "stop") */
|
|
#define BTIF_AVRCP_TG_CATEGORY_1 0x0100
|
|
|
|
/* Target: Monitor/amplifier features supported ("volume up" and "volume down") */
|
|
#define BTIF_AVRCP_TG_CATEGORY_2 0x0200
|
|
|
|
/* Target: Tuner features supported ("channel up" and "channel down") */
|
|
#define BTIF_AVRCP_TG_CATEGORY_3 0x0400
|
|
|
|
/* Target: Menu features supported ("root menu", "up", "down", "left",
|
|
* "right", and "select")
|
|
*/
|
|
#define BTIF_AVRCP_TG_CATEGORY_4 0x0800
|
|
|
|
/* Target: Player settings supported */
|
|
#define BTIF_AVRCP_TG_PLAYER_SETTINGS 0x1000
|
|
|
|
/* Target: Group navigation supported */
|
|
#define BTIF_AVRCP_TG_GROUP_NAV 0x2000
|
|
|
|
/* Target: Media browsing is supported */
|
|
#define BTIF_AVRCP_TG_BROWSING 0x4000
|
|
|
|
/* Target: Multiple media players */
|
|
#define BTIF_AVRCP_TG_MULTIPLE_PLAYERS 0x8000
|
|
|
|
typedef uint8_t avrcp_ctype_t;
|
|
|
|
#define BTIF_AVRCP_CTYPE_CONTROL BTIF_ AVCTP_CTYPE_CONTROL
|
|
#define BTIF_AVRCP_CTYPE_STATUS BTIF_AVCTP_CTYPE_STATUS
|
|
#define BTIF_AVRCP_CTYPE_SPECIFIC_INQUIRY BTIF_ AVCTP_CTYPE_SPECIFIC_INQUIRY
|
|
#define BTIF_AVRCP_CTYPE_NOTIFY BTIF_AVCTP_CTYPE_NOTIFY
|
|
#define BTIF_AVRCP_CTYPE_GENERAL_INQUIRY BTIF_AVCTP_CTYPE_GENERAL_INQUIRY
|
|
|
|
#define BTIF_AVRCP_CTYPE_BROWSING BTIF_AVCTP_CTYPE_BROWSING
|
|
|
|
typedef avctp_response_t avrcp_response_t;
|
|
|
|
#define BTIF_AVRCP_RESPONSE_NOT_IMPLEMENTED BTIF_AVCTP_RESPONSE_NOT_IMPLEMENTED
|
|
#define BTIF_AVRCP_RESPONSE_ACCEPTED AVCTP_RESPONSE_ACCEPTED
|
|
#define BTIF_AVRCP_RESPONSE_REJECTED AVCTP_RESPONSE_REJECTED
|
|
#define BTIF_AVRCP_RESPONSE_IN_TRANSITION AVCTP_RESPONSE_IN_TRANSITION
|
|
#define BTIF_AVRCP_RESPONSE_IMPLEMENTED_STABLE AVCTP_RESPONSE_IMPLEMENTED_STABLE
|
|
#define BTIF_AVRCP_RESPONSE_CHANGED AVRCP_RESP_CHANGED
|
|
#define BTIF_AVRCP_RESPONSE_INTERIM AVCTP_RESPONSE_INTERIM
|
|
|
|
#define BTIF_AVRCP_RESPONSE_BROWSING AVCTP_RESPONSE_BROWSING
|
|
|
|
#define BTIF_AVRCP_RESPONSE_SKIPPED 0xF0
|
|
|
|
#define BTIF_AVRCP_RESPONSE_TIMEOUT 0xF1
|
|
|
|
typedef uint8_t avrcp_opcode_t;
|
|
|
|
#define BTIF_AVRCP_OPCODE_VENDOR_DEPENDENT AVRCP_VENDOR_DEP_IND
|
|
#define BTIF_AVRCP_OPCODE_UNIT_INFO AVRCP_UINT_INFO_IND
|
|
#define BTIF_AVRCP_OPCODE_SUBUNIT_INFO AVRCP_SUBUNIT_INFO_IND
|
|
#define BTIF_AVRCP_OPCODE_PASS_THROUGH AVRCP_PASSTHROUGH_IND
|
|
|
|
typedef avctp_cmdframe_t avrcp_cmdframe_t;
|
|
typedef avctp_rspframe_t avrcp_rspframe_t;
|
|
|
|
typedef uint8_t avrcp_subunit_type_t;
|
|
|
|
#define BTIF_AVRCP_SUBUNIT_PANEL 0x09
|
|
#define BTIF_AVRCP_SUBUNIT_UNIT 0x1F
|
|
|
|
typedef U16 avrcp_panel_operation_t;
|
|
|
|
#define BTIF_AVRCP_POP_SELECT 0x0000
|
|
#define BTIF_AVRCP_POP_UP 0x0001
|
|
#define BTIF_AVRCP_POP_DOWN 0x0002
|
|
#define BTIF_AVRCP_POP_LEFT 0x0003
|
|
#define BTIF_AVRCP_POP_RIGHT 0x0004
|
|
#define BTIF_AVRCP_POP_RIGHT_UP 0x0005
|
|
#define BTIF_AVRCP_POP_RIGHT_DOWN 0x0006
|
|
#define BTIF_AVRCP_POP_LEFT_UP 0x0007
|
|
#define BTIF_AVRCP_POP_LEFT_DOWN 0x0008
|
|
#define BTIF_AVRCP_POP_ROOT_MENU 0x0009
|
|
#define BTIF_AVRCP_POP_SETUP_MENU 0x000A
|
|
#define BTIF_AVRCP_POP_CONTENTS_MENU 0x000B
|
|
#define BTIF_AVRCP_POP_FAVORITE_MENU 0x000C
|
|
#define BTIF_AVRCP_POP_EXIT 0x000D
|
|
|
|
#define BTIF_AVRCP_POP_0 0x0020
|
|
#define BTIF_AVRCP_POP_1 0x0021
|
|
#define BTIF_AVRCP_POP_2 0x0022
|
|
#define BTIF_AVRCP_POP_3 0x0023
|
|
#define BTIF_AVRCP_POP_4 0x0024
|
|
#define BTIF_AVRCP_POP_5 0x0025
|
|
#define BTIF_AVRCP_POP_6 0x0026
|
|
#define BTIF_AVRCP_POP_7 0x0027
|
|
#define BTIF_AVRCP_POP_8 0x0028
|
|
#define BTIF_AVRCP_POP_9 0x0029
|
|
#define BTIF_AVRCP_POP_DOT 0x002A
|
|
#define BTIF_AVRCP_POP_ENTER 0x002B
|
|
#define BTIF_AVRCP_POP_CLEAR 0x002C
|
|
|
|
#define BTIF_AVRCP_POP_CHANNEL_UP 0x0030
|
|
#define BTIF_AVRCP_POP_CHANNEL_DOWN 0x0031
|
|
#define BTIF_AVRCP_POP_PREVIOUS_CHANNEL 0x0032
|
|
#define BTIF_AVRCP_POP_SOUND_SELECT 0x0033
|
|
#define BTIF_AVRCP_POP_INPUT_SELECT 0x0034
|
|
#define BTIF_AVRCP_POP_DISPLAY_INFO 0x0035
|
|
#define BTIF_AVRCP_POP_HELP 0x0036
|
|
#define BTIF_AVRCP_POP_PAGE_UP 0x0037
|
|
#define BTIF_AVRCP_POP_PAGE_DOWN 0x0038
|
|
|
|
#define BTIF_AVRCP_POP_POWER 0x0040
|
|
#define BTIF_AVRCP_POP_VOLUME_UP 0x0041
|
|
#define BTIF_AVRCP_POP_VOLUME_DOWN 0x0042
|
|
#define BTIF_AVRCP_POP_MUTE 0x0043
|
|
#define BTIF_AVRCP_POP_PLAY 0x0044
|
|
#define BTIF_AVRCP_POP_STOP 0x0045
|
|
#define BTIF_AVRCP_POP_PAUSE 0x0046
|
|
#define BTIF_AVRCP_POP_RECORD 0x0047
|
|
#define BTIF_AVRCP_POP_REWIND 0x0048
|
|
#define BTIF_AVRCP_POP_FAST_FORWARD 0x0049
|
|
#define BTIF_AVRCP_POP_EJECT 0x004A
|
|
#define BTIF_AVRCP_POP_FORWARD 0x004B
|
|
#define BTIF_AVRCP_POP_BACKWARD 0x004C
|
|
|
|
#define BTIF_AVRCP_POP_ANGLE 0x0050
|
|
#define BTIF_AVRCP_POP_SUBPICTURE 0x0051
|
|
|
|
#define BTIF_AVRCP_POP_F1 0x0071
|
|
#define BTIF_AVRCP_POP_F2 0x0072
|
|
#define BTIF_AVRCP_POP_F3 0x0073
|
|
#define BTIF_AVRCP_POP_F4 0x0074
|
|
#define BTIF_AVRCP_POP_F5 0x0075
|
|
|
|
#define BTIF_AVRCP_POP_VENDOR_UNIQUE 0x007E
|
|
|
|
#define BTIF_AVRCP_POP_NEXT_GROUP 0x017E
|
|
#define BTIF_AVRCP_POP_PREV_GROUP 0x027E
|
|
|
|
#define BTIF_AVRCP_POP_RESERVED 0x007F
|
|
|
|
#define BTIF_AVRCP_NUM_EVENTS 13
|
|
#define BTIF_AVRCP_MAX_NOTIFICATIONS 15
|
|
|
|
#define BTIF_AVRCP_SUBUNIT_OP_QUEUE_MAX 15
|
|
|
|
/*---------------------------------------------------------------------------
|
|
* avrcp operation code
|
|
*/
|
|
typedef U8 btif_avrcp_operation_t;
|
|
|
|
#define BTIF_AVRCP_OP_GET_CAPABILITIES 0x10
|
|
|
|
#define BTIF_AVRCP_OP_LIST_PLAYER_SETTING_ATTRIBS 0x11
|
|
|
|
#define BTIF_AVRCP_OP_LIST_PLAYER_SETTING_VALUES 0x12
|
|
|
|
#define BTIF_AVRCP_OP_GET_PLAYER_SETTING_VALUE 0x13
|
|
|
|
#define BTIF_AVRCP_OP_SET_PLAYER_SETTING_VALUE 0x14
|
|
|
|
#define BTIF_AVRCP_OP_GET_PLAYER_SETTING_ATTR_TEXT 0x15
|
|
|
|
#define BTIF_AVRCP_OP_GET_PLAYER_SETTING_VALUE_TEXT 0x16
|
|
|
|
#define BTIF_AVRCP_OP_INFORM_DISP_CHAR_SET 0x17
|
|
|
|
#define BTIF_AVRCP_OP_INFORM_BATT_STATUS 0x18
|
|
|
|
#define BTIF_AVRCP_OP_GET_MEDIA_INFO 0x20
|
|
|
|
#define BTIF_AVRCP_OP_GET_PLAY_STATUS 0x30
|
|
|
|
#define BTIF_AVRCP_OP_REGISTER_NOTIFY 0x31
|
|
|
|
#define BTIF_AVRCP_OP_REQUEST_CONT_RESP 0x40
|
|
|
|
#define BTIF_AVRCP_OP_ABORT_CONT_RESP 0x41
|
|
|
|
#define BTIF_AVRCP_OP_SET_ABSOLUTE_VOLUME 0x50
|
|
|
|
#define BTIF_AVRCP_OP_SET_ADDRESSED_PLAYER 0x60
|
|
|
|
#define BTIF_AVRCP_OP_SET_BROWSED_PLAYER 0x70
|
|
|
|
#define BTIF_AVRCP_OP_GET_FOLDER_ITEMS 0x71
|
|
|
|
#define BTIF_AVRCP_OP_CHANGE_PATH 0x72
|
|
|
|
#define BTIF_AVRCP_OP_GET_ITEM_ATTRIBUTES 0x73
|
|
|
|
#define BTIF_AVRCP_OP_PLAY_ITEM 0x74
|
|
|
|
#define BTIF_AVRCP_OP_SEARCH 0x80
|
|
|
|
#define BTIF_AVRCP_OP_ADD_TO_NOW_PLAYING 0x90
|
|
|
|
#define BTIF_AVRCP_OP_GENERAL_REJECT 0xA0
|
|
|
|
#define BTIF_AVRCP_OP_CUSTOM_CMD 0xF0
|
|
|
|
typedef uint8_t avrcp_error_code_t;
|
|
|
|
#define BTIF_AVRCP_INVALID_CMD_ERR 0x00
|
|
#define BTIF_AVRCP_INVALID_PARM_ERR 0x01
|
|
#define BTIF_AVRCP_PARM_NOT_FOUND_ERR 0x02
|
|
#define BTIF_AVRCP_INTERNAL_ERROR_ERR 0x03
|
|
#define BTIF_AVRCP_NO_ERROR_ERR 0x04
|
|
#define BTIF_AVRCP_UIDS_CHANGED_ERR 0x05
|
|
#define BTIF_AVRCP_ERR_UNKNOWN_ERROR 0x06
|
|
#define BTIF_AVRCP_ERR_INVALID_DIRECTION 0x07
|
|
#define BTIF_AVRCP_ERR_NON_DIRECTORY 0x08
|
|
#define BTIF_AVRCP_ERR_DOES_NOT_EXIST 0x09
|
|
#define BTIF_AVRCP_ERR_INVALID_SCOPE 0x0A
|
|
#define BTIF_AVRCP_ERR_OUT_OF_BOUNDS 0x0B
|
|
#define BTIF_AVRCP_ERR_IS_DIRECTORY 0x0C
|
|
#define BTIF_AVRCP_ERR_MEDIA_IN_USE 0x0D
|
|
#define BTIF_AVRCP_ERR_NOW_PLAYING_FULL 0x0E
|
|
#define BTIF_AVRCP_ERR_NO_SEARCH_SUPPORT 0x0F
|
|
#define BTIF_AVRCP_ERR_SEARCH_IN_PROGRESS 0x10
|
|
#define BTIF_AVRCP_ERR_INVALID_PLAYER_ID 0x11
|
|
#define BTIF_AVRCP_ERR_NOT_BROWSABLE 0x12
|
|
#define BTIF_AVRCP_ERR_NOT_ADDRESSED 0x13
|
|
#define BTIF_AVRCP_ERR_NO_SEARCH_RESULTS 0x14
|
|
#define BTIF_AVRCP_ERR_NO_AVAIL_PLAYERS 0x15
|
|
#define BTIF_AVRCP_ERR_ADDR_PLAYER_CHANGED 0x16
|
|
|
|
/*---------------------------------------------------------------------------
|
|
* event Id
|
|
*/
|
|
typedef uint8_t avrcp_event_Id_t;
|
|
|
|
#define BTIF_AVRCP_EID_MEDIA_STATUS_CHANGED 0x01 /* Change in media status */
|
|
|
|
#define BTIF_AVRCP_EID_TRACK_CHANGED 0x02 /* Current track changed */
|
|
|
|
#define BTIF_AVRCP_EID_TRACK_END 0x03 /* Reached end of track */
|
|
|
|
#define BTIF_AVRCP_EID_TRACK_START 0x04 /* Reached track start */
|
|
|
|
#define BTIF_AVRCP_EID_PLAY_POS_CHANGED 0x05 /* Change in playback position.
|
|
* Returned after the specified
|
|
* playback notification change
|
|
* notification interval.
|
|
*/
|
|
|
|
#define BTIF_AVRCP_EID_BATT_STATUS_CHANGED 0x06 /* Change in battery status */
|
|
#define BTIF_AVRCP_EID_SYS_STATUS_CHANGED 0x07 /* Change in system status */
|
|
#define BTIF_AVRCP_EID_APP_SETTING_CHANGED 0x08 /* Change in player
|
|
* application setting
|
|
*/
|
|
|
|
#define BTIF_AVRCP_EID_NOW_PLAYING_CONTENT_CHANGED 0x09 /* Contents of the now playing
|
|
* list have changed
|
|
*/
|
|
|
|
#define BTIF_AVRCP_EID_AVAILABLE_PLAYERS_CHANGED 0x0A /* The available players have
|
|
* changed
|
|
*/
|
|
|
|
#define BTIF_AVRCP_EID_ADDRESSED_PLAYER_CHANGED 0x0B /* The addressed player has
|
|
* changed
|
|
*/
|
|
|
|
#define BTIF_AVRCP_EID_UIDS_CHANGED 0x0C /* The UIDS have changed */
|
|
|
|
#define BTIF_AVRCP_EID_VOLUME_CHANGED 0x0D /* The volume was changed */
|
|
|
|
#define BTIF_AVRCP_EID_FLAG_INTERIM 0x80 /* Used Internally */
|
|
|
|
/*---------------------------------------------------------------------------
|
|
* even mask
|
|
*/
|
|
typedef uint16_t avrcp_event_mask_t;
|
|
|
|
#define BTIF_AVRCP_ENABLE_PLAY_STATUS_CHANGED 0x0001 /* Change in playback
|
|
* status
|
|
*/
|
|
#define BTIF_AVRCP_ENABLE_MEDIA_STATUS_CHANGED 0x0001 /* Alias */
|
|
#define BTIF_AVRCP_ENABLE_TRACK_CHANGED 0x0002 /* Current track changed */
|
|
#define BTIF_AVRCP_ENABLE_TRACK_END 0x0004 /* Reached end of track */
|
|
#define BTIF_AVRCP_ENABLE_TRACK_START 0x0008 /* Reached track start */
|
|
#define BTIF_AVRCP_ENABLE_PLAY_POS_CHANGED 0x0010 /* Change in playback
|
|
* position
|
|
*/
|
|
#define BTIF_AVRCP_ENABLE_BATT_STATUS_CHANGED 0x0020 /* Change in battery
|
|
* status
|
|
*/
|
|
#define BTIF_AVRCP_ENABLE_SYS_STATUS_CHANGED 0x0040 /* Change in system status */
|
|
#define BTIF_AVRCP_ENABLE_APP_SETTING_CHANGED 0x0080 /* Change in player
|
|
* application setting
|
|
*/
|
|
|
|
#define BTIF_AVRCP_ENABLE_NOW_PLAYING_CHANGED 0x0100 /* Change in the now
|
|
* playing list
|
|
*/
|
|
#define BTIF_AVRCP_ENABLE_AVAIL_PLAYERS_CHANGED 0x0200 /* Available players
|
|
* changed
|
|
*/
|
|
#define BTIF_AVRCP_ENABLE_ADDRESSED_PLAYER_CHANGED 0x0400 /* Addressed player changed */
|
|
#define BTIF_AVRCP_ENABLE_UIDS_CHANGED 0x0800 /* UIDS changed */
|
|
#define BTIF_AVRCP_ENABLE_VOLUME_CHANGED 0x1000 /* Volume Changed */
|
|
|
|
typedef uint8_t btif_avrcp_capabilityId;
|
|
|
|
#define BTIF_AVRCP_CAPABILITY_COMPANY_ID 2
|
|
#define BTIF_AVRCP_CAPABILITY_EVENTS_SUPPORTED 3
|
|
|
|
/*---------------------------------------------------------------------------
|
|
* player attrId type
|
|
*/
|
|
typedef uint8_t avrcp_playerAttrId;
|
|
|
|
#define BTIF_AVRCP_PLAYER_EQ_STATUS 1 /* Player equalizer status */
|
|
#define BTIF_AVRCP_PLAYER_REPEAT_STATUS 2 /* Player repeat status */
|
|
#define BTIF_AVRCP_PLAYER_SHUFFLE_STATUS 3 /* Player Shuffle status */
|
|
#define BTIF_AVRCP_PLAYER_SCAN_STATUS 4 /* Player scan status */
|
|
|
|
/*---------------------------------------------------------------------------
|
|
* playerattrId mask type
|
|
*/
|
|
typedef uint16_t avrcp_player_attrId_mask_t;
|
|
|
|
#define BTIF_AVRCP_ENABLE_PLAYER_EQ_STATUS 0x0001
|
|
#define BTIF_AVRCP_ENABLE_PLAYER_REPEAT_STATUS 0x0002
|
|
#define BTIF_AVRCP_ENABLE_PLAYER_SHUFFLE_STATUS 0x0004
|
|
#define BTIF_AVRCP_ENABLE_PLAYER_SCAN_STATUS 0x0008
|
|
#define BTIF_AVRCP_ENABLE_PLAYER_EXTENSION_ID_5 0x0010
|
|
#define BTIF_AVRCP_ENABLE_PLAYER_EXTENSION_ID_6 0x0020
|
|
#define BTIF_AVRCP_ENABLE_PLAYER_EXTENSION_ID_7 0x0040
|
|
#define BTIF_AVRCP_ENABLE_PLAYER_EXTENSION_ID_8 0x0080
|
|
#define BTIF_AVRCP_ENABLE_PLAYER_EXTENSION_ID_9 0x0100
|
|
#define BTIF_AVRCP_ENABLE_PLAYER_EXTENSION_ID_10 0x0200
|
|
#define BTIF_AVRCP_ENABLE_PLAYER_EXTENSION_ID_11 0x0400
|
|
#define BTIF_AVRCP_ENABLE_PLAYER_EXTENSION_ID_12 0x0800
|
|
#define BTIF_AVRCP_ENABLE_PLAYER_EXTENSION_ID_13 0x1000
|
|
#define BTIF_AVRCP_ENABLE_PLAYER_EXTENSION_ID_14 0x2000
|
|
#define BTIF_AVRCP_ENABLE_PLAYER_EXTENSION_ID_15 0x4000
|
|
#define BTIF_AVRCP_ENABLE_PLAYER_EXTENSION_ID_16 0x8000
|
|
|
|
#ifndef BTIF_AVRCP_MAX_FOLDER_DEPTH
|
|
#define BTIF_AVRCP_MAX_FOLDER_DEPTH 10
|
|
#endif
|
|
|
|
typedef uint8_t avrcp_eq_value_t;
|
|
|
|
#define BTIF_AVRCP_EQ_OFF 1
|
|
#define BTIF_AVRCP_EQ_ON 2
|
|
|
|
typedef uint8_t avrcp_repeat_value_t;
|
|
|
|
#define BTIF_AVRCP_REPEAT_OFF 1
|
|
#define BTIF_AVRCP_REPEAT_SINGLE 2
|
|
#define BTIF_AVRCP_REPEAT_ALL 3
|
|
#define BTIF_AVRCP_REPEAT_GROUP 4
|
|
|
|
typedef uint8_t avrcp_shuffle_value_t;
|
|
|
|
#define BTIF_AVRCP_SHUFFLE_OFF 1
|
|
#define BTIF_AVRCP_SHUFFLE_ALL 2
|
|
#define BTIF_AVRCP_SHUFFLE_GROUP 3
|
|
|
|
typedef uint8_t avrcp_scan_value_t;
|
|
|
|
#define BTIF_AVRCP_SCAN_OFF 1
|
|
#define BTIF_AVRCP_SCAN_ALL 2
|
|
#define BTIF_AVRCP_SCAN_GROUP 3
|
|
|
|
typedef uint8_t avrcp_ext_value_t;
|
|
|
|
typedef uint8_t avrcp_battery_status_t;
|
|
|
|
#define BTIF_AVRCP_BATT_STATUS_NORMAL 0
|
|
#define BTIF_AVRCP_BATT_STATUS_WARNING 1
|
|
#define BTIF_AVRCP_BATT_STATUS_CRITICAL 2
|
|
#define BTIF_AVRCP_BATT_STATUS_EXTERNAL 3
|
|
#define BTIF_AVRCP_BATT_STATUS_FULL_CHARGE 4
|
|
|
|
typedef uint8_t avrcp_system_status_t;
|
|
|
|
#define BTIF_AVRCP_SYS_POWER_ON 0
|
|
#define BTIF_AVRCP_SYS_POWER_OFF 1
|
|
#define BTIF_AVRCP_SYS_UNPLUGGED 2
|
|
|
|
typedef uint32_t avrcp_media_attrId_t;
|
|
|
|
#define BTIF_AVRCP_MEDIA_ATTR_TITLE 0x00000001
|
|
#define BTIF_AVRCP_MEDIA_ATTR_ARTIST 0x00000002
|
|
#define BTIF_AVRCP_MEDIA_ATTR_ALBUM 0x00000003
|
|
#define BTIF_AVRCP_MEDIA_ATTR_TRACK 0x00000004
|
|
#define BTIF_AVRCP_MEDIA_ATTR_NUM_TRACKS 0x00000005
|
|
#define BTIF_AVRCP_MEDIA_ATTR_GENRE 0x00000006
|
|
#define BTIF_AVRCP_MEDIA_ATTR_DURATION 0x00000007
|
|
|
|
typedef uint32_t avrcp_media_attrId_mask_t;
|
|
|
|
#define BTIF_AVRCP_ENABLE_MEDIA_ATTR_TITLE 0x01
|
|
#define BTIF_AVRCP_ENABLE_MEDIA_ATTR_ARTIST 0x02
|
|
#define BTIF_AVRCP_ENABLE_MEDIA_ATTR_ALBUM 0x04
|
|
#define BTIF_AVRCP_ENABLE_MEDIA_ATTR_TRACK 0x08
|
|
#define BTIF_AVRCP_ENABLE_MEDIA_ATTR_NUM_TRACKS 0x10
|
|
#define BTIF_AVRCP_ENABLE_MEDIA_ATTR_GENRE 0x20
|
|
#define BTIF_AVRCP_ENABLE_MEDIA_ATTR_DURATION 0x40
|
|
|
|
typedef uint8_t avrcp_media_status_t;
|
|
|
|
#define BTIF_AVRCP_MEDIA_STOPPED 0x00
|
|
#define BTIF_AVRCP_MEDIA_PLAYING 0x01
|
|
#define BTIF_AVRCP_MEDIA_PAUSED 0x02
|
|
#define BTIF_AVRCP_MEDIA_FWD_SEEK 0x03
|
|
#define BTIF_AVRCP_MEDIA_REV_SEEK 0x04
|
|
#define BTIF_AVRCP_MEDIA_ERROR 0xFF
|
|
|
|
typedef uint16_t avrcp_version_t;
|
|
|
|
/* Unable to determine the Hands Free Profile version that is supported */
|
|
#define BTIF_AVRCP_VERSION_UNKNOWN 0x0000
|
|
|
|
/* Supports Version 1.0 of the AVRCP Profile */
|
|
#define BTIF_AVRCP_VERSION_1_0 0x0100
|
|
|
|
/* Supports Version 1.3 of the AVRCP Profile */
|
|
#define BTIF_AVRCP_VERSION_1_3 0x0103
|
|
|
|
/* Supports Version 1.4 of the AVRCP Profile */
|
|
#define BTIF_AVRCP_VERSION_1_4 0x0104
|
|
|
|
typedef uint16_t avrcp_features_t;
|
|
|
|
/* Player/recorder features supported ("play" and "stop") */
|
|
#define BTIF_AVRCP_FEATURES_CATEGORY_1 0x0001
|
|
|
|
/* Monitor/amplifier features supported ("volume up" and "volume down") */
|
|
#define BTIF_AVRCP_FEATURES_CATEGORY_2 0x0002
|
|
|
|
/* Tuner features supported ("channel up" and "channel down") */
|
|
#define BTIF_AVRCP_FEATURES_CATEGORY_3 0x0004
|
|
|
|
/* Menu features supported ("root menu", "up", "down", "left", "right", and
|
|
* "select")
|
|
*/
|
|
#define BTIF_AVRCP_FEATURES_CATEGORY_4 0x0008
|
|
|
|
/* Player settings supported */
|
|
#define BTIF_AVRCP_FEATURES_PLAYER_SETTINGS 0x0010
|
|
|
|
/* Group navigation supported */
|
|
#define BTIF_AVRCP_FEATURES_GROUP_NAV 0x0020
|
|
|
|
#define BTIF_AVRCP_FEATURES_BROWSING 0x0040
|
|
|
|
#define BTIF_AVRCP_FEATURES_MULTIPLE_PLAYERS 0x0080
|
|
|
|
typedef uint8_t avrcp_maj_player_type_t;
|
|
|
|
#define BTIF_AVRCP_MAJ_PLAYER_AUDIO 0x01
|
|
#define BTIF_AVRCP_MAJ_PLAYER_VIDEO 0x02
|
|
#define BTIF_AVRCP_MAJ_PLAYER_AUD_BCAST 0x04
|
|
#define BTIF_AVRCP_MAJ_PLAYER_VID_BCAST 0x08
|
|
|
|
typedef uint32_t avrcp_player_sub_type_t;
|
|
|
|
#define BTIF_AVRCP_PLAYER_SUB_AUDIO_BOOK 0x00000001
|
|
#define BTIF_AVRCP_PLAYER_SUB_PODCAST 0x00000002
|
|
|
|
typedef uint8_t avrcp_scope_t;
|
|
|
|
#define BTIF_AVRCP_SCOPE_MEDIA_PLAYER_LIST 0x00
|
|
#define BTIF_AVRCP_SCOPE_VIRTUAL_FILESYS 0x01
|
|
#define BTIF_AVRCP_SCOPE_SEARCH 0x02
|
|
#define BTIF_AVRCP_SCOPE_NOW_PLAYING 0x03
|
|
|
|
typedef uint8_t avrcp_chg_path_direction_t;
|
|
|
|
#define BTIF_AVRCP_DIR_UP 0x00
|
|
#define BTIF_AVRCP_DIR_DOWN 0x01
|
|
|
|
typedef uint8_t avrcp_plyr_featr_byte_t;
|
|
|
|
/* Byte 0 */
|
|
|
|
#define BTIF_AVRCP_BRWS_0_FEAT_SELECT 0x01
|
|
#define BTIF_AVRCP_BRWS_0_FEAT_UP 0x02
|
|
#define BTIF_AVRCP_BRWS_0_FEAT_DOWN 0x04
|
|
#define BTIF_AVRCP_BRWS_0_FEAT_LEFT 0x08
|
|
#define BTIF_AVRCP_BRWS_0_FEAT_RIGHT 0x10
|
|
#define BTIF_AVRCP_BRWS_0_FEAT_RIGHT_UP 0x20
|
|
#define BTIF_AVRCP_BRWS_0_FEAT_RIGHT_DOWN 0x40
|
|
#define BTIF_AVRCP_BRWS_0_FEAT_LEFT_UP 0x80
|
|
|
|
/* Byte 1 */
|
|
|
|
#define BTIF_AVRCP_BRWS_1_FEAT_LEFT_DOWN 0x01
|
|
#define BTIF_AVRCP_BRWS_1_FEAT_ROOT_MENU 0x02
|
|
#define BTIF_AVRCP_BRWS_1_FEAT_SETUP_MENU 0x04
|
|
#define BTIF_AVRCP_BRWS_1_FEAT_CONTENTS_MENU 0x08
|
|
#define BTIF_AVRCP_BRWS_1_FEAT_FAVORITE_MENU 0x10
|
|
#define BTIF_AVRCP_BRWS_1_FEAT_EXIT 0x20
|
|
#define BTIF_AVRCP_BRWS_1_FEAT_0 0x40
|
|
#define BTIF_AVRCP_BRWS_1_FEAT_1 0x80
|
|
|
|
/* Byte 2 */
|
|
|
|
#define BTIF_AVRCP_BRWS_2_FEAT_2 0x01
|
|
#define BTIF_AVRCP_BRWS_2_FEAT_3 0x02
|
|
#define BTIF_AVRCP_BRWS_2_FEAT_4 0x04
|
|
#define BTIF_AVRCP_BRWS_2_FEAT_5 0x08
|
|
#define BTIF_AVRCP_BRWS_2_FEAT_6 0x10
|
|
#define BTIF_AVRCP_BRWS_2_FEAT_7 0x20
|
|
#define BTIF_AVRCP_BRWS_2_FEAT_8 0x40
|
|
#define BTIF_AVRCP_BRWS_2_FEAT_9 0x80
|
|
|
|
/* Byte 3 */
|
|
|
|
#define BTIF_AVRCP_BRWS_3_FEAT_DOT 0x01
|
|
#define BTIF_AVRCP_BRWS_3_FEAT_ENTER 0x02
|
|
#define BTIF_AVRCP_BRWS_3_FEAT_CLEAR 0x04
|
|
#define BTIF_AVRCP_BRWS_3_FEAT_CHNL_UP 0x08
|
|
#define BTIF_AVRCP_BRWS_3_FEAT_CHNL_DOWN 0x10
|
|
#define BTIF_AVRCP_BRWS_3_FEAT_PREV_CHNL 0x20
|
|
#define BTIF_AVRCP_BRWS_3_FEAT_SOUND_SEL 0x40
|
|
#define BTIF_AVRCP_BRWS_3_FEAT_INPUT_SEL 0x80
|
|
|
|
/* Byte 4 */
|
|
|
|
#define BTIF_AVRCP_BRWS_3_FEAT_DISPLAY_INFO 0x01
|
|
#define BTIF_AVRCP_BRWS_4_FEAT_HELP 0x02
|
|
#define BTIF_AVRCP_BRWS_4_FEAT_PG_UP 0x04
|
|
#define BTIF_AVRCP_BRWS_4_FEAT_PG_DOWN 0x08
|
|
#define BTIF_AVRCP_BRWS_4_FEAT_POWER 0x10
|
|
#define BTIF_AVRCP_BRWS_4_FEAT_VOL_UP 0x20
|
|
#define BTIF_AVRCP_BRWS_4_FEAT_VOL_DOWN 0x40
|
|
#define BTIF_AVRCP_BRWS_4_FEAT_MUTE 0x80
|
|
|
|
/* Byte 5 */
|
|
|
|
#define BTIF_AVRCP_BRWS_5_FEAT_PLAY 0x01
|
|
#define BTIF_AVRCP_BRWS_5_FEAT_STOP 0x02
|
|
#define BTIF_AVRCP_BRWS_5_FEAT_PAUSE 0x04
|
|
#define BTIF_AVRCP_BRWS_5_FEAT_RECORD 0x08
|
|
#define BTIF_AVRCP_BRWS_5_FEAT_REWIND 0x10
|
|
#define BTIF_AVRCP_BRWS_5_FEAT_FF 0x20
|
|
#define BTIF_AVRCP_BRWS_5_FEAT_EJECT 0x40
|
|
#define BTIF_AVRCP_BRWS_5_FEAT_FORWARD 0x80
|
|
|
|
/* Byte 6 */
|
|
|
|
#define BTIF_AVRCP_BRWS_6_FEAT_BACKWARD 0x01
|
|
#define BTIF_AVRCP_BRWS_6_FEAT_ANGLE 0x02
|
|
#define BTIF_AVRCP_BRWS_6_FEAT_SUBPIC 0x04
|
|
#define BTIF_AVRCP_BRWS_6_FEAT_F1 0x08
|
|
#define BTIF_AVRCP_BRWS_6_FEAT_F2 0x10
|
|
#define BTIF_AVRCP_BRWS_6_FEAT_F3 0x20
|
|
#define BTIF_AVRCP_BRWS_6_FEAT_F4 0x40
|
|
#define BTIF_AVRCP_BRWS_6_FEAT_F5 0x80
|
|
|
|
/* Byte 7 */
|
|
|
|
#define BTIF_AVRCP_BRWS_7_FEAT_VENDOR_UNIQUE 0x01
|
|
#define BTIF_AVRCP_BRWS_7_FEAT_GROUP_NAV 0x02
|
|
#define BTIF_AVRCP_BRWS_7_FEAT_ADVANCED_CTRL 0x04
|
|
#define BTIF_AVRCP_BRWS_7_FEAT_BROWSING 0x08
|
|
#define BTIF_AVRCP_BRWS_7_FEAT_SEARCHING 0x10
|
|
#define BTIF_AVRCP_BRWS_7_FEAT_ADD_TO_PLAYING 0x20
|
|
#define BTIF_AVRCP_BRWS_7_FEAT_UIDS_UNIQUE 0x40
|
|
#define BTIF_AVRCP_BRWS_7_FEAT_BRWS_WHEN_ADDRESSED 0x80
|
|
|
|
/* Byte 8 */
|
|
|
|
#define BTIF_AVRCP_BRWS_8_SEARCH_WHEN_ADDRESSED 0x01
|
|
#define BTIF_AVRCP_BRWS_8_NOW_PLAYING 0x02
|
|
#define BTIF_AVRCP_BRWS_8_UID_PERSISTENT 0x04
|
|
|
|
typedef uint8_t avrcp_item_type_t;
|
|
|
|
#define BTIF_AVRCP_ITEM_MEDIA_PLAYER 0x01
|
|
#define BTIF_AVRCP_ITEM_FOLDER 0x02
|
|
#define BTIF_AVRCP_ITEM_MEDIA_ELEMENT 0x03
|
|
|
|
typedef uint8_t avrcp_folder_type_t;
|
|
|
|
#define BTIF_AVRCP_FOLDER_TYPE_MIXED 0x00
|
|
#define BTIF_AVRCP_FOLDER_TYPE_TITLES 0x01
|
|
#define BTIF_AVRCP_FOLDER_TYPE_ALBUMS 0x02
|
|
#define BTIF_AVRCP_FOLDER_TYPE_ARTISTS 0x03
|
|
#define BTIF_AVRCP_FOLDER_TYPE_GENRES 0x04
|
|
#define BTIF_AVRCP_FOLDER_TYPE_PLAYLISTS 0x05
|
|
#define BTIF_AVRCP_FOLDER_TYPE_YEARS 0x06
|
|
|
|
typedef uint8_t avrcp_is_playable_t;
|
|
typedef uint16_t avrcp_capabilityId_t;
|
|
typedef void avrcp_advanced_pdu_t;
|
|
|
|
#define BTIF_AVRCP_IS_NOT_PLAYABLE 0x00
|
|
#define BTIF_AVRCP_IS_PLAYABLE 0x01
|
|
|
|
typedef uint8_t avrcp_media_type_t;
|
|
|
|
#define BTIF_AVRCP_MEDIA_TYPE_AUDIO 0x00
|
|
#define BTIF_AVRCP_MEIDA_TYPE_VIDEO 0x01
|
|
|
|
#define BTIF_AVCTP_RESPONSE_INTERIM 0x0F
|
|
|
|
typedef struct {
|
|
|
|
/* Index 0 == Off, Index 1 == On */
|
|
const char *string[2];
|
|
uint8_t len[2];
|
|
} avrcp_eq_string_t;
|
|
|
|
typedef struct {
|
|
|
|
/* Index 0 == Off, Index 1 == Single, Index 2 == All, Index 3 == Group */
|
|
const char *string[4];
|
|
uint8_t len[4];
|
|
} avrcp_repeat_string_t;
|
|
|
|
typedef struct {
|
|
|
|
/* Index 0 == Off, Index 1 == All, Index 2 == Group */
|
|
const char *string[3];
|
|
uint8_t len[3];
|
|
} avrcp_shuffle_string_t;
|
|
|
|
typedef struct {
|
|
|
|
/* Index 0 == Off, Index 1 == All, Index 2 == Group */
|
|
const char *string[3];
|
|
uint8_t len[3];
|
|
} avrcp_scan_string_t;
|
|
|
|
#ifndef BTIF_AVRCP_MAX_PLAYER_STRINGS
|
|
#define BTIF_AVRCP_MAX_PLAYER_STRINGS 5
|
|
#endif
|
|
/*--------------------------------------------------------------------------
|
|
* NUM PLAYER SETTINGS constant
|
|
*/
|
|
|
|
#define BTIF_AVRCP_PANEL_STATE_NONE 0
|
|
|
|
#define BTIF_AVRCP_PANEL_STATE_C_IDLE 1
|
|
#define BTIF_AVRCP_PANEL_STATE_C_PRESS 2
|
|
#define BTIF_AVRCP_PANEL_STATE_C_PRESS_R 3
|
|
#define BTIF_AVRCP_PANEL_STATE_C_RELEASE 4
|
|
#define BTIF_AVRCP_PANEL_STATE_C_SKIP 5
|
|
|
|
#define BTIF_AVRCP_PANEL_STATE_T_IDLE 101
|
|
#define BTIF_AVRCP_PANEL_STATE_T_PRESS 102
|
|
#define BTIF_AVRCP_PANEL_STATE_T_HOLD 103
|
|
|
|
typedef struct {
|
|
|
|
/* Number of extended player settings */
|
|
uint8_t numStrings;
|
|
const char *string[BTIF_AVRCP_MAX_PLAYER_STRINGS]; /* The player setting string */
|
|
uint8_t len[BTIF_AVRCP_MAX_PLAYER_STRINGS]; /* The player setting string length */
|
|
} avrcp_ext_string_t;
|
|
typedef uint8_t avrcp_player_attrId_t;
|
|
|
|
typedef struct {
|
|
avrcp_player_attrId_t attrId; /* Media Player Attribute ID */
|
|
union {
|
|
avrcp_eq_value_t eq;
|
|
avrcp_repeat_value_t repeat;
|
|
avrcp_shuffle_value_t shuffle;
|
|
avrcp_scan_value_t scan;
|
|
avrcp_ext_value_t extValue;
|
|
uint8_t value; /* Used Internally */
|
|
} setting;
|
|
} avrcp_player_setting_t;
|
|
|
|
typedef struct {
|
|
const char *attrString; /* Media Player Attribute Text */
|
|
uint8_t attrLen; /* Length of the Attribute Text */
|
|
union {
|
|
avrcp_eq_string_t eq; /* Equalizer status */
|
|
avrcp_repeat_string_t repeat; /* Repeat mode status */
|
|
avrcp_shuffle_string_t shuffle; /* Shuffle mode status */
|
|
avrcp_scan_string_t scan; /* Scan mode status */
|
|
avrcp_ext_string_t ext; /* Extended settings status */
|
|
} setting;
|
|
} avrcp_player_strings_t;
|
|
|
|
typedef struct {
|
|
avrcp_media_attrId_t attrId; /* Media element attribute ID */
|
|
const char *string; /* The media element */
|
|
uint16_t length; /* Length of the media element */
|
|
} avrcp_media_info_t;
|
|
|
|
typedef struct {
|
|
uint8_t numCharSets;
|
|
uint16_t charSets[BTIF_AVRCP_MAX_CHAR_SETS];
|
|
} avrcp_char_sets_t;
|
|
|
|
typedef struct {
|
|
uint32_t length;
|
|
|
|
uint32_t position;
|
|
avrcp_media_status_t mediaStatus;
|
|
} avrcp_media_play_status_t;
|
|
|
|
typedef struct {
|
|
uint16_t nameLen;
|
|
const char *name;
|
|
} avrcp_folder_t;
|
|
|
|
typedef struct {
|
|
|
|
/* Used Internally */
|
|
list_entry_t node;
|
|
|
|
/* Used Internally */
|
|
uint16_t playerId;
|
|
|
|
/* Major Player Type */
|
|
avrcp_maj_player_type_t majorType;
|
|
|
|
/* Player Sub Type */
|
|
avrcp_player_sub_type_t subType;
|
|
|
|
/* Current media play status */
|
|
avrcp_media_status_t mediaStatus;
|
|
|
|
/* Player feature bitmask */
|
|
avrcp_plyr_featr_byte_t features[16];
|
|
|
|
/* Displayable character set */
|
|
uint16_t charSet;
|
|
|
|
/* Player name length */
|
|
uint16_t nameLen;
|
|
|
|
/* Player name */
|
|
const char *name;
|
|
|
|
/* Folder depth */
|
|
uint16_t folderDepth;
|
|
|
|
/* Current folder */
|
|
avrcp_folder_t folder[BTIF_AVRCP_MAX_FOLDER_DEPTH];
|
|
|
|
/* Number of items in the current folder */
|
|
uint32_t numItems;
|
|
} avrcp_media_player_item_t;
|
|
typedef uint16_t avrcp_event_mask_t;
|
|
typedef uint8_t avrcp_operation_t;
|
|
|
|
typedef struct _AvrcpFolderItem {
|
|
|
|
/* The UID of this media element */
|
|
uint8_t uid[8];
|
|
|
|
/* Folder Type */
|
|
avrcp_folder_type_t folderType;
|
|
|
|
/* Is Playable Flag */
|
|
avrcp_is_playable_t isPlayable;
|
|
|
|
/* Character Set */
|
|
uint16_t charSet;
|
|
|
|
/* The name length of this media element */
|
|
uint16_t nameLen;
|
|
|
|
/* The name of this media element */
|
|
uint8_t *name;
|
|
} avrcp_folder_item_t;
|
|
|
|
typedef struct {
|
|
|
|
/* Attribute ID */
|
|
avrcp_media_attrId_t attrId;
|
|
|
|
/* Character Set */
|
|
uint16_t charSet;
|
|
|
|
/* Attribute Length */
|
|
uint16_t valueLen;
|
|
|
|
/* Attribute Name */
|
|
uint8_t *value;
|
|
} avrcp_media_attribute_t;
|
|
|
|
typedef struct {
|
|
|
|
/* The UID of this media element */
|
|
uint8_t uid[8];
|
|
|
|
/* Media type (audio or video) */
|
|
avrcp_media_type_t mediaType;
|
|
|
|
/* Character Set */
|
|
uint16_t charSet;
|
|
|
|
/* The name length of this media element */
|
|
uint16_t nameLen;
|
|
|
|
/* The name of this media element */
|
|
uint8_t *name;
|
|
|
|
/* Number of media attributes */
|
|
uint8_t numAttrs;
|
|
|
|
/* Media Attributes */
|
|
avrcp_media_attribute_t attrs[BTIF_AVRCP_NUM_MEDIA_ATTRIBUTES];
|
|
} avrcp_media_element_item_t;
|
|
|
|
typedef uint8_t avrcp_Item_type_t;
|
|
|
|
typedef struct {
|
|
|
|
/* Media Item Type */
|
|
avrcp_Item_type_t itemType;
|
|
|
|
/* The Media Item */
|
|
union {
|
|
avrcp_media_player_item_t player;
|
|
avrcp_folder_item_t folder;
|
|
avrcp_media_element_item_t element;
|
|
} item;
|
|
} avrcp_media_item_t;
|
|
|
|
typedef struct {
|
|
|
|
/* The most significant 32 bits of the track index information. */
|
|
uint32_t msU32;
|
|
|
|
/* The least significant 32 bits of the track index information. */
|
|
uint32_t lsU32;
|
|
} avrcp_track_struct_t;
|
|
|
|
typedef struct {
|
|
|
|
/* Transaction ID of the request */
|
|
uint32_t transId;
|
|
union {
|
|
|
|
/* Contains an item to be played on the addressed media player. This
|
|
* is valid when "advOp" is set to AVRCP_OP_PLAY_ITEM or
|
|
* AVRCP_OP_ADD_TO_NOW_PLAYING.
|
|
*/
|
|
struct {
|
|
avrcp_scope_t scope;
|
|
uint8_t uid[8];
|
|
uint16_t uidCounter;
|
|
} item;
|
|
} p;
|
|
} avrcp_adv_req_parms_t;
|
|
|
|
typedef union {
|
|
|
|
/* The value of each player setting. This is valid when "advOp" is set
|
|
* to AVRCP_OP_SET_PLAYER_SETTING_VALUE.
|
|
*/
|
|
avrcp_player_setting_t playerSetting;
|
|
struct {
|
|
|
|
/* Bitmask that describes which
|
|
* attributes are being reported
|
|
*/
|
|
avrcp_player_attrId_mask_t attrMask;
|
|
|
|
/* The equalizer setting. */
|
|
avrcp_eq_value_t eq;
|
|
|
|
/* The repeat setting. */
|
|
avrcp_repeat_value_t repeat;
|
|
|
|
/* The shuffle setting. */
|
|
avrcp_shuffle_value_t shuffle;
|
|
|
|
/* The scan setting. */
|
|
avrcp_scan_value_t scan;
|
|
|
|
#if BTIF_AVRCP_NUM_PLAYER_SETTINGS > 4
|
|
/* Extended player setting. */
|
|
avrcp_ext_value_t extValue[BTIF_AVRCP_NUM_PLAYER_SETTINGS - 4];
|
|
|
|
#endif /* */
|
|
} setting;
|
|
|
|
/* The list of character sets displayable on the controller.
|
|
* This is valid when "advOp" is set to AVRCP_OP_INFORM_DISP_CHAR_SET. The
|
|
* default is 106 (UTF-8).
|
|
*/
|
|
avrcp_char_sets_t charSet;
|
|
|
|
/* The battery status of the controller.
|
|
* This is valid when "advOp" is set to AVRCP_OP_INFORM_BATT_STATUS.
|
|
*/
|
|
avrcp_battery_status_t battStatus;
|
|
|
|
#if BTIF_AVRCP_VERSION_1_3_ONLY == BTIF_DISABLED
|
|
/* The Absolute Volume
|
|
* This is valid when "advOp" is set to AVRCP_OP_SET_ABSOLUTE_VOLUME.
|
|
*/
|
|
uint8_t volume;
|
|
|
|
/* The addressed player
|
|
* This is valid when "advOp" is set to AVRCP_OP_SET_ADDRESSED_PLAYER.
|
|
*/
|
|
avrcp_media_player_item_t *addrPlayer;
|
|
|
|
#endif /* BTIF_AVRCP_VERSION_1_3_ONLY == BTIF_DISABLED */
|
|
} avrcp_adv_inf_parms_t;
|
|
|
|
typedef struct {
|
|
avrcp_player_attrId_t attrId;
|
|
uint16_t charSet;
|
|
uint8_t length;
|
|
const char *string;
|
|
} avrcp_player_attrib_t;
|
|
|
|
typedef struct {
|
|
uint8_t valueId;
|
|
uint16_t charSet;
|
|
uint8_t length;
|
|
const char *string;
|
|
} avrcp_player_settings_t;
|
|
|
|
typedef struct {
|
|
U32 attrId;
|
|
uint16_t charSet;
|
|
uint16_t length;
|
|
const char *string;
|
|
} avrcp_media_attr_t;
|
|
typedef uint16_t avrcp_player_attrId_mask_t;
|
|
|
|
typedef struct {
|
|
uint32_t length;
|
|
uint32_t position;
|
|
uint8_t mediaStatus;
|
|
} adv_play_status_t;
|
|
|
|
typedef union {
|
|
|
|
/* The capabilities of the target.
|
|
* This is valid when "advOp" is set to AVRCP_OP_GET_CAPABILITIES.
|
|
*/
|
|
struct {
|
|
|
|
/* The type of capability. */
|
|
uint8_t type;
|
|
|
|
/* The capability info. */
|
|
union {
|
|
|
|
/* The list of company IDs.
|
|
* (type == AVRCP_CAPABILITY_COMPANY_ID)
|
|
*/
|
|
struct {
|
|
|
|
/* The number of supported company IDs. */
|
|
uint8_t numIds;
|
|
|
|
/* An array of company IDs (3 bytes each). */
|
|
uint8_t *ids;
|
|
} companyId;
|
|
|
|
/* A bitmask of the supported events.
|
|
* (type == AVRCP_CAPABILITY_EVENTS_SUPPORTED)
|
|
*/
|
|
uint16_t eventMask;
|
|
} info;
|
|
} capability;
|
|
|
|
/* A bitmask that indicates the player settings supported by
|
|
* the target device.
|
|
* This is valid when "advOp" is set to
|
|
* AVRCP_OP_LIST_PLAYER_SETTING_ATTRIBS.
|
|
*/
|
|
uint16_t attrMask;
|
|
|
|
/* The list of values for the requested attribute on the target
|
|
* device.
|
|
* This is valid when "advOp" is set to AVRCP_OP_LIST_PLAYER_SETTING_VALUES.
|
|
*/
|
|
struct {
|
|
|
|
/* The number of supported value IDs. */
|
|
uint8_t numIds;
|
|
|
|
/* An array of value ID (1 byte each). */
|
|
uint8_t *ids;
|
|
} attrValues;
|
|
|
|
/* The text of each player setting attribute.
|
|
* This is valid when "advOp" is set to
|
|
* AVRCP_OP_GET_PLAYER_SETTING_ATTR_TEXT
|
|
*/
|
|
struct {
|
|
|
|
/* The number of attribute IDs returned. */
|
|
uint8_t numIds;
|
|
|
|
/* An array of attribute text information */
|
|
avrcp_player_attrib_t txt[BTIF_AVRCP_NUM_PLAYER_SETTINGS];
|
|
} attrStrings;
|
|
|
|
/* The value of each player setting.
|
|
* This is valid when "advOp" is set to AVRCP_OP_GET_PLAYER_SETTING_VALUE.
|
|
*/
|
|
struct {
|
|
|
|
/* Bitmask that describes which
|
|
* attributes are being reported
|
|
*/
|
|
avrcp_player_attrId_mask_t attrMask;
|
|
|
|
/* The equalizer setting. */
|
|
avrcp_eq_value_t eq;
|
|
|
|
/* The repeat setting. */
|
|
avrcp_repeat_value_t repeat;
|
|
|
|
/* The shuffle setting. */
|
|
avrcp_shuffle_value_t shuffle;
|
|
|
|
/* The scan setting. */
|
|
avrcp_scan_value_t scan;
|
|
|
|
#if BTIF_AVRCP_NUM_PLAYER_SETTINGS > 4
|
|
/* Extended player setting. */
|
|
avrcp_ext_value_t extValue[BTIF_AVRCP_NUM_PLAYER_SETTINGS - 4];
|
|
|
|
#endif /* */
|
|
} setting;
|
|
|
|
/* The list of setting values for the requested attribute on the target.
|
|
* This is valid when "advOp" is set to
|
|
* AVRCP_OP_GET_PLAYER_SETTING_VALUE_TEXT.
|
|
*/
|
|
struct {
|
|
|
|
/* The number of settings returned */
|
|
uint8_t numSettings;
|
|
|
|
/* An array of value text information */
|
|
avrcp_player_settings_t txt[BTIF_AVRCP_NUM_PLAYER_SETTINGS];
|
|
} settingStrings;
|
|
|
|
/* The list of element values for the current track on the
|
|
* target. This is valid when "advOp" is set to AVRCP_OP_GET_MEDIA_INFO.
|
|
*/
|
|
struct {
|
|
|
|
/* The number of elements returned */
|
|
uint8_t numIds;
|
|
|
|
/* An array of element value text information */
|
|
avrcp_media_attr_t txt[BTIF_AVRCP_NUM_MEDIA_ATTRIBUTES];
|
|
} element;
|
|
|
|
adv_play_status_t playStatus;
|
|
|
|
#if BTIF_AVRCP_VERSION_1_3_ONLY == BTIF_DISABLED
|
|
/* The Absolute Volume
|
|
* This is valid when "advOp" is set to AVRCP_OP_SET_ABSOLUTE_VOLUME.
|
|
*/
|
|
uint8_t volume;
|
|
|
|
#endif /* BTIF_AVRCP_VERSION_1_3_ONLY == BTIF_DISABLED */
|
|
} avrcp_adv_rsp_parms_t;
|
|
|
|
/*---------------------------------------------------------------------------
|
|
* AvrcpNotifyParms structure
|
|
*
|
|
* Defines the callback parameters for AVRCP_EVENT_ADV_RESPONSE when "advOp" is
|
|
* set to AVRCP_OP_REGISTER_NOTIFY, and for the AVRCP_EVENT_ADV_NOTIFY event.
|
|
*/
|
|
typedef struct {
|
|
|
|
/* Defines the event ID that was received */
|
|
avrcp_event_Id_t event;
|
|
union {
|
|
|
|
/* Play status of the media. Valid when the event ID is
|
|
* AVRCP_EID_MEDIA_STATUS_CHANGED.
|
|
*/
|
|
avrcp_media_status_t mediaStatus;
|
|
|
|
/* The current track. Valid when the event ID is
|
|
* AVRCP_EID_TRACK_CHANGED.
|
|
*/
|
|
avrcp_track_struct_t track;
|
|
|
|
/* The position (ms) of the current track. Valid when the event
|
|
* ID is AVRCP_EID_PLAY_POS_CHANGED.
|
|
*/
|
|
uint32_t position;
|
|
|
|
/* The battery status of the target. Valid when the event ID is
|
|
* AVRCP_EID_BATT_STATUS_CHANGED.
|
|
*/
|
|
avrcp_battery_status_t battStatus;
|
|
|
|
/* The system status of the target. Valid when the event ID is
|
|
* AVRCP_EID_SYS_STATUS_CHANGED.
|
|
*/
|
|
avrcp_system_status_t sysStatus;
|
|
|
|
/* The player settings. Valid when the event ID is
|
|
* AVRCP_EID_APP_SETTING_CHANGED
|
|
*/
|
|
struct {
|
|
|
|
/* Bitmask that describes which
|
|
* attributes are being reported
|
|
*/
|
|
avrcp_player_attrId_mask_t attrMask;
|
|
|
|
/* The equalizer setting. */
|
|
avrcp_eq_value_t eq;
|
|
|
|
/* The repeat setting. */
|
|
avrcp_repeat_value_t repeat;
|
|
|
|
/* The shuffle setting. */
|
|
avrcp_shuffle_value_t shuffle;
|
|
|
|
/* The scan setting. */
|
|
avrcp_scan_value_t scan;
|
|
|
|
#if BTIF_AVRCP_NUM_PLAYER_SETTINGS > 4
|
|
/* Extended player setting. */
|
|
avrcp_ext_value_t extValue[BTIF_AVRCP_NUM_PLAYER_SETTINGS - 4];
|
|
|
|
#endif /* */
|
|
} setting;
|
|
|
|
#if BTIF_AVRCP_VERSION_1_3_ONLY == BTIF_DISABLED
|
|
/* Absolute volume. Valid when the event ID is
|
|
* AVRCP_EID_VOLUME_CHANGED.
|
|
*/
|
|
uint8_t volume;
|
|
|
|
/* The addressed player. Valid when the event ID is
|
|
* AVRCP_EID_ADDRESSED_PLAYER_CHANGED.
|
|
*/
|
|
struct {
|
|
uint16_t playerId;
|
|
uint16_t uidCounter;
|
|
} addrPlayer;
|
|
|
|
/* The UID counter. Valid when the event ID is
|
|
* AVRCP_EID_UIDS_CHANGED.
|
|
*/
|
|
uint16_t uidCounter;
|
|
|
|
#endif /* BTIF_AVRCP_VERSION_1_3_ONLY == BTIF_DISABLED */
|
|
} p;
|
|
} avrcp_adv_notify_parms_t;
|
|
|
|
typedef struct {
|
|
uint8_t transId;
|
|
union {
|
|
|
|
/* Folder Item. Valid when "advOp" is AVRCP_OP_GET_FOLDER_ITEMS */
|
|
struct {
|
|
avrcp_scope_t scope; /* The requested scope */
|
|
uint32_t start; /* The starting item */
|
|
uint32_t end; /* The ending item */
|
|
uint8_t numAttrs; /* Number of attributes requested */
|
|
uint8_t *attrList; /* List of attributes requested */
|
|
} folder;
|
|
|
|
/* Path. Valid when "advOp" is AVRCP_OP_CHANGE_PATH */
|
|
struct {
|
|
uint16_t uidCounter; /* Current UID counter */
|
|
uint8_t direction; /* Direction to change in the path (up or down) */
|
|
uint8_t *uid; /* UID of folder to change to (down) */
|
|
} chPath;
|
|
|
|
/* Item Attributes. Valid when "advOp" is AVRCP_OP_GET_ITEM_ATTRIBUTES */
|
|
struct {
|
|
avrcp_scope_t scope; /* The requested scope */
|
|
uint8_t *uid; /* UID of the requested item */
|
|
uint16_t uidCounter; /* Current UID counter */
|
|
uint8_t numAttrs; /* Number of attributes requested */
|
|
uint8_t *attrList; /* List of attributes requested */
|
|
} attr;
|
|
|
|
/* Search. Valid when "advOp" is AVRCP_OP_SEARCH */
|
|
struct {
|
|
uint16_t charSet; /* Character set of the search string */
|
|
uint16_t len; /* Length of the search string */
|
|
uint8_t *str; /* Search string */
|
|
} search;
|
|
} p;
|
|
} avrcp_browse_req_parms_t;
|
|
|
|
typedef union {
|
|
/* The browsed player. Valid when "advOp" is AVRCP_OP_SET_BROWSED_PLAYER
|
|
*/
|
|
avrcp_media_player_item_t *brwsPlayer;
|
|
} avrcp_browse_inf_parms_t;
|
|
|
|
typedef union {
|
|
/* Browsed Player. Valid when "advOp" is AVRCP_OP_SET_BROWSED_PLAYER */
|
|
struct {
|
|
uint16_t uidCounter; /* Current UID counter */
|
|
uint32_t numItems; /* Number of items in the current path */
|
|
uint16_t charSet; /* Character set used by the player */
|
|
uint8_t fDepth; /* Number of folder length/name pairs to follow */
|
|
uint8_t *list; /* List of folder names */
|
|
} brwsPlayer;
|
|
|
|
/* Folder Items. Valid when "advOp" is AVRCP_OP_GET_FOLDER_ITEMS */
|
|
struct {
|
|
uint16_t uidCounter; /* Current UID counter */
|
|
uint32_t numItems; /* Number of items in the current path */
|
|
uint8_t *list; /* List of items returned */
|
|
} fldrItems;
|
|
|
|
/* Change Path. Valid when "advOp" is AVRCP_OP_CHANGE_PATH */
|
|
struct {
|
|
uint32_t numItems; /* Number of items in the current path */
|
|
} chPath;
|
|
|
|
/* Item Attributes. Valid when "advOp" is AVRCP_OP_GET_ITEM_ATTRIBUTES */
|
|
struct {
|
|
uint8_t numAttrs; /* Number of attributes returned */
|
|
uint8_t *list; /* List of attributes returned */
|
|
} itemAttrs;
|
|
|
|
/* Search. Valid when "advOp" is AVRCP_OP_SEARCH */
|
|
struct {
|
|
uint16_t uidCounter; /* Current UID counter */
|
|
uint32_t numItems; /* Number of items found in the search */
|
|
} search;
|
|
} avrcp_browse_rsp_parms_t;
|
|
|
|
typedef struct {
|
|
|
|
/* Operation to which the remote target responded */
|
|
uint16_t operation;
|
|
|
|
/* The press state of the key in the command to which
|
|
* the target responded.
|
|
*/
|
|
BOOL press;
|
|
|
|
/* Response from the target. May indicate
|
|
* an "extended" response code such as
|
|
* AVRCP_RESPONSE_SKIPPED or AVRCP_RESPONSE_TIMEOUT.
|
|
*/
|
|
uint8_t response;
|
|
} avrcp_panel_cnf_t;
|
|
typedef struct {
|
|
|
|
/* Operation corresponding to the key pressed, held, or
|
|
* released. AVRCP will only indicate a new operation
|
|
* when the previous one has been _RELEASE'd.
|
|
*/
|
|
uint16_t operation;
|
|
} avrcp_panel_ind_t;
|
|
|
|
/* Channel Packet */
|
|
typedef struct {
|
|
list_entry_t node;
|
|
U8 transId;
|
|
U8 msgType;
|
|
U8 msgHdrLen;
|
|
U8 msgHdr[BTIF_AVTP_HEADER_LEN];
|
|
U8 txIdSize;
|
|
U16 txId;
|
|
U16 txDataLen;
|
|
U8 *txData;
|
|
U32 context;
|
|
} avtp_packet_t;
|
|
|
|
typedef struct {
|
|
list_entry_t node; /* Used internally by AVCTP. */
|
|
uint8_t transId; /* Transaction ID */
|
|
uint8_t ctype; /* 4 bits */
|
|
uint8_t subunitType; /* 5 bits */
|
|
uint8_t subunitId; /* 3 bits */
|
|
uint8_t opcode; /* 8 bits */
|
|
uint8_t headerLen; /* Header length */
|
|
uint8_t header[6]; /* Header information */
|
|
uint16_t operandLen; /* Length of buffer in "operands" */
|
|
uint8_t *operands; /* Buffer containing the command data */
|
|
BOOL more; /* Indicates whether to expect additional
|
|
* frames containing more operand data. */
|
|
avtp_packet_t avtpPacket; /* For sending over AVTP */
|
|
|
|
// EvmTimer timer; /* Timer for the command */
|
|
} avctp_cmd_frame_t;
|
|
|
|
enum {
|
|
BTIF_AVRCP_STATE_DISCONNECTED,
|
|
BTIF_AVRCP_STATE_CONNECTED
|
|
};
|
|
typedef void avrcp_callback_parms_t;
|
|
|
|
typedef void (*btif_avrcp_callback)(btif_avrcp_chnl_handle_t chnl, const avrcp_callback_parms_t *parms);
|
|
|
|
static POSSIBLY_UNUSED inline btif_avctp_event_t btif_convert_avrcp_event(btif_avrcp_event_t event)
|
|
{
|
|
return (btif_avctp_event_t) event;
|
|
}
|
|
|
|
#define BTIF_AVRCP_EVENT(stack_avrcp_event) btif_convert_avrcp_event(stack_avrcp_event)
|
|
#define BTIF_AVRCP_ERROR_CODE(statck_error_code) statck_error_code
|
|
|
|
typedef struct
|
|
{
|
|
list_entry_t node;
|
|
U8 op;
|
|
U16 parm_len;
|
|
U8 *parms;
|
|
U8 trans_id;
|
|
|
|
BOOL more;
|
|
U16 cur_len;
|
|
U16 bytes_to_send;
|
|
U8 cont_op;
|
|
BOOL abort;
|
|
|
|
BOOL internal;
|
|
U8 response;
|
|
U8 error;
|
|
|
|
BOOL is_cmd;
|
|
U8 ctype; /* 4 bits */
|
|
} btif_avrcp_advanced_cmd_pdu_t ;
|
|
|
|
typedef struct
|
|
{
|
|
bool free;
|
|
uint8_t state;
|
|
list_entry_t tx_cmd_list;
|
|
CQueue tx_op_queue;
|
|
uint8_t tx_op_queue_buff[BTIF_AVRCP_SUBUNIT_OP_QUEUE_MAX*3]; // 3 bytes per operation
|
|
avctp_cmd_frame_t rx_cmd_frame;
|
|
uint8_t rx_frag_buff[BTIF_AVRCP_RX_FRAG_BUFF_SIZE];
|
|
uint32_t rx_frag_buff_offset;
|
|
struct
|
|
{
|
|
avrcp_event_mask_t rem_eventMask;
|
|
btif_avrcp_advanced_cmd_pdu_t *tx_cmd;
|
|
} adv;
|
|
btif_avrcp_callback cb;
|
|
btif_avrcp_chnl_handle_t avrcp_channel_handle;
|
|
} btif_avrcp_channel_t;
|
|
|
|
typedef struct
|
|
{
|
|
btif_avrcp_advanced_cmd_pdu_t *tx_cmd;
|
|
avrcp_adv_rsp_parms_t rsp;
|
|
avrcp_adv_notify_parms_t notify;
|
|
} btif_avrcp_rsp_adv;
|
|
|
|
typedef struct
|
|
{
|
|
btif_avrcp_event_t event;
|
|
btif_avrcp_channel_t *channel;
|
|
bt_status_t status;
|
|
uint8_t error_code;
|
|
btif_avrcp_operation_t adv_op;
|
|
union
|
|
{
|
|
avctp_cmd_frame_t *cmdFrame;
|
|
btif_avrcp_rsp_adv adv;
|
|
avrcp_panel_cnf_t panel_cnf;
|
|
avrcp_panel_ind_t panel_ind;
|
|
} p;
|
|
} btif_avrcp_callback_parms_t;
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
void btif_avrcp_init(btif_app_bt_device_t btif_app_bt_device);
|
|
|
|
bt_status_t btif_avrcp_register(btif_avrcp_channel_t *channel, btif_avrcp_callback cb, avrcp_features_t feat);
|
|
|
|
btif_avrcp_channel_t *btif_alloc_avrcp_channel(void);
|
|
|
|
btif_avrcp_channel_t *btif_get_avrcp_channel(btif_avrcp_chnl_handle_t handle);
|
|
|
|
btif_avctp_event_t btif_avrcp_get_callback_event(const avrcp_callback_parms_t * parms);
|
|
|
|
bool btif_avrcp_state_connected(btif_avrcp_channel_t * channel);
|
|
|
|
void btif_avrcp_set_volume_cmd(void *cmd, uint8_t transid, int8_t volume);
|
|
|
|
void btif_avrcp_register_read_remote_sdp_callback(void (*cb)(btif_avrcp_chnl_handle_t chnl, uint16_t version, uint16_t features));
|
|
|
|
void btif_avrcp_send_custom_cmd_generic(btif_avrcp_channel_t * chnl, uint8_t * ptrData,
|
|
uint32_t len);
|
|
bt_status_t btif_avrcp_ct_accept_custom_cmd_rsp(btif_avrcp_channel_t * chnl, void *cmd_res,
|
|
uint8_t isAccept);
|
|
bt_status_t btif_avrcp_connect(btif_avrcp_channel_t * channel, bt_bdaddr_t * addr);
|
|
|
|
bt_status_t btif_avrcp_connect_rsp(btif_avrcp_channel_t * chnl, BOOL accept);
|
|
|
|
bt_status_t btif_avrcp_disconnect(btif_avrcp_chnl_handle_t channel);
|
|
|
|
bt_status_t btif_avrcp_ct_get_play_status(btif_avrcp_channel_t * channel,
|
|
|
|
avrcp_advanced_pdu_t * cmd);
|
|
avrcp_version_t btif_get_avrcp_version(btif_avrcp_channel_t * channel);
|
|
|
|
bt_status_t btif_avrcp_ct_get_capabilities(btif_avrcp_channel_t * channel,
|
|
avrcp_advanced_pdu_t * pdu,
|
|
btif_avrcp_capabilityId capabilityId);
|
|
|
|
void btif_set_avrcp_state(btif_avrcp_channel_t * channel, uint8_t avrcp_state);
|
|
|
|
uint8_t btif_get_avrcp_state(btif_avrcp_channel_t * channel);
|
|
|
|
bool btif_avrcp_is_control_channel_connected(btif_avrcp_channel_t * channel);
|
|
|
|
btif_remote_device_t *btif_avrcp_get_remote_device(btif_avrcp_chnl_handle_t handle);
|
|
|
|
uint8_t btif_avrcp_get_channel_panel_int_state(btif_avrcp_chnl_handle_t handle);
|
|
|
|
uint8_t btif_avrcp_get_channel_avrcp_state(btif_avrcp_chnl_handle_t handle);
|
|
|
|
void btif_avrcp_set_register_notify_check_callback(bool (*cb)(uint8_t event), void (*resp_cb)(uint8_t event));
|
|
|
|
bt_status_t btif_avrcp_ct_register_notification(btif_avrcp_channel_t * channel,
|
|
avrcp_advanced_pdu_t * pdu,
|
|
btif_avrcp_event_t eventId, uint32_t interval);
|
|
void btif_avrcp_ct_register_notify_response_check(btif_avrcp_channel_t * channel, uint8_t event);
|
|
bt_status_t btif_get_avrcp_cb_channel_state(const avrcp_callback_parms_t * parms);
|
|
|
|
avrcp_error_code_t btif_get_avrcp_cb_channel_error_code(const avrcp_callback_parms_t * parms);
|
|
|
|
btif_avrcp_operation_t btif_get_avrcp_cb_channel_advOp(const avrcp_callback_parms_t * parms);
|
|
|
|
void *btif_get_avrcp_cb_txPdu(const avrcp_callback_parms_t * parms);
|
|
|
|
btif_avrcp_operation_t btif_get_avrcp_cb_txPdu_Op(const avrcp_callback_parms_t * parms);
|
|
|
|
uint8_t btif_get_avrcp_pdu_ctype(void * adv_pdu);
|
|
|
|
uint8_t btif_get_avrcp_cb_txPdu_transId(const avrcp_callback_parms_t * parms);
|
|
|
|
avrcp_role_t btif_get_avrcp_cb_channel_role(btif_avrcp_channel_t * channel);
|
|
|
|
avrcp_panel_cnf_t *btif_get_panel_cnf(const avrcp_callback_parms_t * parms);
|
|
|
|
avrcp_role_t btif_get_avrcp_channel_role(btif_avrcp_channel_t * channel);
|
|
|
|
adv_play_status_t *btif_get_avrcp_adv_rsp_play_status(const avrcp_callback_parms_t * parms);
|
|
|
|
avrcp_adv_rsp_parms_t *btif_get_avrcp_adv_rsp(const avrcp_callback_parms_t * parms);
|
|
|
|
avrcp_adv_notify_parms_t *btif_get_avrcp_adv_notify(const avrcp_callback_parms_t * parms);
|
|
|
|
avrcp_event_mask_t btif_get_avrcp_adv_rem_event_mask(btif_avrcp_channel_t * channel);
|
|
|
|
void btif_set_avrcp_adv_rem_event_mask(btif_avrcp_channel_t * channel, uint16_t mask);
|
|
|
|
void btif_set_app_bt_device_avrcp_notify_rsp_ctype(avrcp_advanced_pdu_t * cmd, uint8_t type);
|
|
|
|
uint8_t btif_get_app_bt_device_avrcp_notify_rsp_transid(avrcp_advanced_pdu_t * cmd);
|
|
|
|
bt_status_t btif_avrcp_ct_get_media_Info(btif_avrcp_channel_t * channel,
|
|
|
|
avrcp_advanced_pdu_t * cmd,
|
|
avrcp_media_attrId_mask_t mediaMask);
|
|
avctp_cmd_frame_t *btif_get_avrcp_cmd_frame(const avrcp_callback_parms_t * parms);
|
|
|
|
void btif_avrcp_set_capabilities_rsp_cmd(avrcp_advanced_pdu_t * cmd_pdu, uint8_t transId,
|
|
|
|
uint8_t type);
|
|
|
|
void btif_avrcp_set_control_rsp_cmd(avrcp_advanced_pdu_t * cmd_pdu, uint8_t transId,
|
|
uint8_t type);
|
|
|
|
void btif_avrcp_set_control_rsp_cmd_witherror(avrcp_advanced_pdu_t * cmd_pdu, uint8_t transId, uint8_t type, uint8_t error);
|
|
|
|
bt_status_t btif_avrcp_ct_get_capabilities_rsp(btif_avrcp_channel_t * channel,
|
|
avrcp_advanced_pdu_t * cmd_pdu,
|
|
avrcp_capabilityId_t capid, uint16_t mask);
|
|
|
|
bt_status_t btif_avrcp_ct_get_capabilities_company_id_rsp(btif_avrcp_channel_t * channel, avrcp_advanced_pdu_t * cmd_pdu);
|
|
|
|
bt_status_t btif_avrcp_ct_accept_absolute_volume_rsp(btif_avrcp_channel_t * channel,
|
|
avrcp_advanced_pdu_t * cmd_pdu,
|
|
uint8_t volume);
|
|
|
|
void btif_avrcp_set_notify_rsp_cmd(avrcp_advanced_pdu_t * cmd_pdu, uint8_t transId,
|
|
uint8_t type);
|
|
|
|
void btif_avrcp_set_notify_rsp_cmd_witherror(avrcp_advanced_pdu_t * cmd_pdu, uint8_t transId, uint8_t type, uint8_t error);
|
|
|
|
void btif_avrcp_recheck_vol_ctrl_flag(uint8_t * flag);
|
|
|
|
bt_status_t btif_avrcp_ct_get_absolute_volume_rsp(btif_avrcp_channel_t * channel,
|
|
avrcp_advanced_pdu_t * cmd_pdu,
|
|
uint8_t volume);
|
|
|
|
bt_status_t btif_avrcp_tg_absolute_volume_notify(btif_avrcp_channel_t * channel, avrcp_advanced_pdu_t * cmd_pdu, uint8_t volume);
|
|
|
|
uint16_t btif_avrcp_get_cmgrhandler_remDev_hciHandle(btif_avrcp_channel_t * channel);
|
|
|
|
avrcp_panel_cnf_t *btif_get_avrcp_panel_cnf(const avrcp_callback_parms_t * parms);
|
|
|
|
avrcp_panel_ind_t *btif_get_avrcp_panel_ind(const avrcp_callback_parms_t * parms);
|
|
|
|
bt_status_t btif_avrcp_set_panel_key(btif_avrcp_channel_t * channel, avrcp_panel_operation_t op,
|
|
bool press);
|
|
|
|
uint8_t btif_avrcp_get_ctl_trans_id(btif_avrcp_channel_t * channel);
|
|
void btif_avrcp_set_ctl_trans_id(btif_avrcp_channel_t * channel, uint8_t trans_id);
|
|
|
|
bt_status_t btif_avrcp_ct_set_absolute_volume(btif_avrcp_channel_t *channel, avrcp_advanced_pdu_t *_pdu, uint8_t volume);
|
|
|
|
void btif_avrcp_set_channel_adv_event_mask(btif_avrcp_chnl_handle_t handle, uint16_t mask);
|
|
|
|
bt_status_t btif_avrcp_tg_send_general_rsp(btif_avrcp_channel_t * channel, avrcp_advanced_pdu_t * cmd_pdu, uint8_t op, uint8_t error_code);
|
|
|
|
bt_status_t btif_avrcp_ct_invalid_volume_rsp(btif_avrcp_channel_t * channel, avrcp_advanced_pdu_t * cmd_pdu);
|
|
|
|
#if defined(IBRT)
|
|
uint32_t btif_avrcp_profile_save_ctxs(btif_remote_device_t *rem_dev, uint8_t *buf, uint32_t buf_len);
|
|
uint32_t btif_avrcp_profile_restore_ctxs(uint8_t *buf, uint32_t buf_len);
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif
|