MXC-A36_2024.04.17/MXC-Screen_display/components/btdm/include/avrcp_api.h

5460 lines
199 KiB
C

#ifndef __AVRCP_API_H_
#define __AVRCP_API_H_
#include "btconfig.h"
#include "avctp_api.h"
#include "bt_types.h"
/*---------------------------------------------------------------------------
* AVRCP API layer
*
* The Audio/Video Remote Control Profile (AVRCP) defines procedures for
* exchanging 1394 Trade Association AV/C commands between Bluetooth
* enabled Audio/Video devices. In addition, more advanced Bluetooth
* specific AV/C commands are available for exchanging media information
* and player settings. Finally, if media browsing is supported (AVRCP
* 1.4), AVRCP specific browsing commands can be exchanged. Internally,
* AVRCP uses the Audio/Video Control Transport Protocol (AVCTP) to
* exchange messages.
*
* This API is designed to support AV remote control applications using
* the SDK core protocol stack. It provides an API
* for connection management and message handling.
*/
/****************************************************************************
*
* Constants
*
****************************************************************************/
/*---------------------------------------------------------------------------
* AVRCP_ADVANCED_TARGET constant
*
* When set to XA_ENABLED, the AVRCP profile adds handling for the
* Advanced AV/C features of AVRCP for the target device. This feature
* is used to exchanged media information and player settings with the
* remote device.
*
* The application will receive AVRCP_EVENT_ADV_INFO and
* AVRCP_EVENT_ADV_REQ events for commands sent by the controller. Some
* commands will not generate events, but will be responded to
* automatically, based on the current media and player data that is set
* through API calls. Several interfaces exist for setting the data that
* will be sent in the responses.
*/
#ifndef AVRCP_ADVANCED_TARGET
#define AVRCP_ADVANCED_TARGET XA_ENABLED
#endif /* AVRCP_ADVANCED_TARGET */
/*---------------------------------------------------------------------------
* AVRCP_ADVANCED_CONTROLLER constant
*
* When set to XA_ENABLED, the AVRCP profile adds handling for
* the advanced features of AVRCP for the controller device. These
* feature is used to exchanged media information with the remote device.
*
* For controllers, the application may invoke several functions for
* receiving the player settings and media information from the target
* device. The application will also receive AVRCP_EVENT_ADV_RESPONSE
* and AVRCP_EVENT_ADV_NOTIFY events.
*/
#ifndef AVRCP_ADVANCED_CONTROLLER
#define AVRCP_ADVANCED_CONTROLLER XA_ENABLED
#endif /* AVRCP_ADVANCED_CONTROLLER */
/*---------------------------------------------------------------------------
* AVRCP_SUBUNIT_OP_QUEUE_MAX constant
*
* Defines the length of the internal operation queue used on the
* controller side by AVRCP_SetPanelKey. To buffer n keystrokes,
* set this constant to (n*2)+1. Attempts to add keystrokes beyond
* the queue size with AVRCP_SetPanelKey() will fail.
*/
#ifndef AVRCP_SUBUNIT_OP_QUEUE_MAX
#define AVRCP_SUBUNIT_OP_QUEUE_MAX 15
#endif /* AVRCP_SUBUNIT_OP_QUEUE_MAX */
/*---------------------------------------------------------------------------
* AVRCP_MAX_CHAR_SETS constant
*
* Defines the maximum number of supported character sets that will be
* read by the TG and sent by the CT. The character sets define all the
* supported IANA character sets supported by the device. UTF-8 is the
* default and must be supported by all devices.
*/
#ifndef AVRCP_MAX_CHAR_SETS
#define AVRCP_MAX_CHAR_SETS 10
#endif /* AVRCP_MAX_CHAR_SETS */
/*---------------------------------------------------------------------------
* AVRCP_ADVANCED_RESPONSE_SIZE constant
*
* Defines the maximum size of a response received by the controller or
* sent by the target. This size should be large enough to handle
* the largest possible media attribute response. The response includes
* all the attribute strings + 8 bytes per attribute and one more byte
* to hold the number of attributes in the response. The supported media
* attributes are defined by AvrcpMediaAttrId.
*
* If a response is too large for the allocated buffer on the target,
* only part of the response will be sent. If a response received by the
* controller is too large, the response will be aborted.
*
* The default size is 1024 bytes.
*/
#ifndef AVRCP_ADVANCED_RESPONSE_SIZE
#define AVRCP_ADVANCED_RESPONSE_SIZE 1024
#endif /* AVRCP_ADVANCED_RESPONSE_SIZE */
/*---------------------------------------------------------------------------
* AVRCP_NO_TRACK_CURRENTLY_SELECTED constant
*
* The following value should be used for the hi and low playback
* positions and track indices when no track is currently selected.
*/
#define AVRCP_NO_TRACK_CURRENTLY_SELECTED 0xFFFFFFFF
/*---------------------------------------------------------------------------
* AVRCP_MAX_MEDIA_PLAYERS constant
*
* Defines the maximum number of media players that can be registered on
* a device. Media players are entities to which advanced commands can
* be routed. If browsing is supported, media libraries on specified
* players can be browsed.
*
* The default is 10.
*/
#ifndef AVRCP_MAX_MEDIA_PLAYERS
#define AVRCP_MAX_MEDIA_PLAYERS 10
#endif /* AVRCP_MAX_MEDIA_PLAYERS */
/*--------------------------------------------------------------------------
* AVRCP_BROWSING_TARGET constant
*
* Defines whether the browsing channel (target role) is supported for
* browsing media players and their libraries.
*
* This feature is enabled by default.
*/
#if AVRCP_ADVANCED_TARGET == XA_ENABLED
/* Advanced control is supported */
#ifndef AVRCP_BROWSING_TARGET
#define AVRCP_BROWSING_TARGET XA_DISABLED
#endif
#else
/* Advanced control is not supported */
#if AVRCP_BROWSING_TARGET == XA_ENABLED
/* Browsing target is not supported if advanced target is not supported */
#error AVRCP_ADVANCED_TARGET must be enabled
#endif
#endif
/*--------------------------------------------------------------------------
* AVRCP_BROWSING_CONTROLLER constant
*
* Defines whether the browsing channel (controller role) is supported
* for browsing media players and their libraries.
*
* This feature is enabled by default.
*/
#if AVRCP_ADVANCED_CONTROLLER == XA_ENABLED
/* Advanced control is supported */
#ifndef AVRCP_BROWSING_CONTROLLER
#define AVRCP_BROWSING_CONTROLLER XA_DISABLED
#endif
#else
/* Advanced control is not supported */
#if AVRCP_BROWSING_CONTROLLER == XA_ENABLED
/* Browsing controller is not supported if advanced controller is not
* supported
*/
#error AVRCP_ADVANCED_CONTROLLER must be enabled
#endif
#endif
/* For convenience */
#define AVRCP_BROWSING_ENABLED ((AVRCP_BROWSING_TARGET == XA_ENABLED) || \
(AVRCP_BROWSING_CONTROLLER == XA_ENABLED))
/*--------------------------------------------------------------------------
* AVRCP_LIST_PLAYERS_ENABLED constant
*
* If AVRCP_LIST_PLAYERS_ENABLED, then the browsing channel is enabled
* for the target (even if AVRCP_BROWSING_TARGET is disabled). If a
* target supports Category 1 or Category 3 features, and it is an AVRCP
* 1.4 device (AVRCP_VERSION_1_3_ONLY is disabed), then a browsing
* channel is required, as is support for listing media players.
*
* The default value is XA_ENABLED if AVRCP_ADVANCED_TARGET is enabled
* and AVRCP_VERSION_1_3 is disabled.
*
* This value can be overidden in overide.h, but this should only be done
* if an AVRCP 1.4 device supports only the Category 2 features as a
* target.
*/
#ifndef AVRCP_LIST_PLAYERS_ENABLED
#define AVRCP_LIST_PLAYERS_ENABLED XA_DISABLED
#endif
/*--------------------------------------------------------------------------
* AVRCP_BROWSE_AUTO_ACCEPT constant
*
* If AVRCP_BROWSE_AUTO_ACCEPT is defined to be XA_ENABLED, then the
* acceptor of a browsing channel will automatically accept the
* connection. If AVRCP_BROWSE_AUTO_ACCEPT is defined to be XA_DISABLED,
* then the application must call AVRCP_BrowseConnectRsp() to accept (or
* reject) the connection.
*
* The default value is XA_ENABLED.
*/
#ifndef AVRCP_BROWSE_AUTO_ACCEPT
#define AVRCP_BROWSE_AUTO_ACCEPT XA_ENABLED
#endif
/*--------------------------------------------------------------------------
* AVRCP_MAX_FOLDER_DEPTH constant
*
* Defines the maximum folder depth of a media player.
*
* The default value is 10.
*/
#ifndef AVRCP_MAX_FOLDER_DEPTH
#define AVRCP_MAX_FOLDER_DEPTH 10
#endif
#define AVRCP_NUM_SDP_SERVER_ATTRIBUTES 8
#define AVRCP_NUM_SDP_SEARCH_ATTRIBUTES 27
#define AVRCP_NUM_EVENTS 13
#define AVRCP_MAX_NOTIFICATIONS 15
#define AVRCP_ADVANCED_CMD_SIZE 512
#define AVRCP_MAX_VOLUME 0x7F
/* The number of enumeration elements
* defined for the AvrcpMediaAttrId type.
*/
#define AVRCP_NUM_MEDIA_ATTRIBUTES 7
/* Number of milliseconds to wait before deciding that a pressed key is being
* held (target-side)
*/
#define AVRCP_PANEL_PRESSHOLD_TIME 300
/* How long to wait before assuming that the currently held key has been
* released (target-side)
*/
#define AVRCP_PANEL_AUTORELEASE_TIME 2000
/* How long to wait between updates for a held-down key (controller-side)
*/
#define AVRCP_PANEL_HOLDUPDATE_TIME 1000
/* These are always enabled now */
#ifndef AVRCP_PANEL_SUBUNIT
#define AVRCP_PANEL_SUBUNIT XA_ENABLED
#endif
/* For testing only */
#ifndef AVRCP_SET_DEFAULT_BRWS_PLAYER
#define AVRCP_SET_DEFAULT_BRWS_PLAYER XA_DISABLED
#endif
/*--------------------------------------------------------------------------
* AVRCP_NUM_PLAYER_SETTINGS constant
*
* Defines the maximum number of player settings supported on the device.
* This value must be greater than or equal to 4, so that room is
* provided for the specification defined player settings. If greater
* than 4, then application extensions to the player settings are
* possible.
*
* The default value is 4.
*/
#ifndef AVRCP_NUM_PLAYER_SETTINGS
#define AVRCP_NUM_PLAYER_SETTINGS 4
#endif
#if AVRCP_NUM_PLAYER_SETTINGS < 4
#error AVRCP_NUM_PLAYER_SETTINGS must be 4 or greater
#endif
/*--------------------------------------------------------------------------
* AVRCP_MAX_PLAYER_STRINGS constant
*
* Defines the maximum number of setting strings supported by application
* extended player setting attributes.
*
* The default value is 5.
*/
#ifndef AVRCP_MAX_PLAYER_STRINGS
#define AVRCP_MAX_PLAYER_STRINGS 5
#endif
/****************************************************************************
*
* Types
*
****************************************************************************/
/*---------------------------------------------------------------------------
* AvrcpEvent type
*
*/
typedef AvctpEvent AvrcpEvent;
/* Group: Connection events for establishing and releasing the AVRCP control
* channel. The control channel is used for the exchange of basic AV/C
* commands/responses and for the exchange of AV/C commands directed to the
* panel subunit (which includes advanced Bluetooth specific commands).
*/
/** The transport layer is connected and commands/responses can now
* be exchanged.
*
* During this callback, the 'p.remDev' parameter is valid.
*/
#define AVRCP_EVENT_CONNECT AVCTP_EVENT_CONNECT
/** 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 AVRCP_EVENT_DISCONNECT AVCTP_EVENT_DISCONNECT
/** A remote device is attempting to connect the transport layer.
* Only the acceptor of the connection is notified. The acceptor may
* call AVRCP_ConnectRsp() to either accept or reject the connection.
*
* During this callback, the 'p.remDev' parameter is valid.
*/
#define AVRCP_EVENT_CONNECT_IND AVCTP_EVENT_CONNECT_IND
/* Group: Events for the exchange of basic AV/C commands that are not routed
* to the panel subunit.
*/
/** A AV/C command was received from the remote device (controller). This
* event is received for commands not routed to the panel subunit.
*
* During this callback, the 'p.cmdFrame' parameter is valid. It contains the
* the AVRCP command header information, including operands. If the "more"
* value is TRUE then this event only signals the first part of the operands.
* Subsequent AVRCP_EVENT_OPERANDS events will follow this event with
* additional operand data.
*
* Note that the AVRCP specification requires that target devices respond to
* commands within 100ms after receiving the command.
*/
#define AVRCP_EVENT_COMMAND AVCTP_EVENT_COMMAND
/** A AV/C response was received from the remote device (target). This event
* is received for responses not routed to the panel subunit.
*
* During this callback, the 'p.rspFrame' parameter is valid. It contains the
* the AVRCP response header information, including operands. If the "more"
* value is TRUE then this event only signals the first part of the operands.
* Subsequent AVRCP_EVENT_OPERANDS events will follow this event with
* additional operand data.
*/
#define AVRCP_EVENT_RESPONSE AVCTP_EVENT_RESPONSE
/** The remote device (target) rejected the AV/C command. This event is
* received for responses not routed to the panel subunit.
*
* During this callback, the 'p.rspFrame' parameter is valid. It contains the
* the AVRCP reject header information, including operands. If the "more"
* value is TRUE then this event only signals the first part of the operands.
* Subsequent AVRCP_EVENT_OPERANDS events will follow this event with
* additional operand data.
*/
#define AVRCP_EVENT_REJECT AVCTP_EVENT_REJECT
/** A command (see AVRCP_SendCommand) or response (see AVRCP_SendResponse)
* has been sent. Memory allocated for the operation can be freed or reused
* after receiving this event. This event is received for commands or
* responses not routed to the panel subunit.
*
* During this callback, the 'p.cmdFrame' or 'p.rspFrame' parameter associated
* with the sent command or response is valid. They contain a pointer to the
* AV/C comand or response that was sent. In addition, "status" will be set
* to "BT_STATUS_SUCCESS" or "BT_STATUS_FAILED" to indicate whether
* the event was properly delivered.
*/
#define AVRCP_EVENT_TX_DONE AVCTP_EVENT_TX_DONE
/** Additional operand data has been received for the previous
* AVRCP_EVENT_COMMAND or AVRCP_EVENT_RESPONSE. This event is received for
* commands or responses not routed to the panel subunit.
*
* During this callback, the 'p.cmdFrame' or 'p.rspFrame' parameter associated
* with the received command or response is valid. The "operands" and
* "operandLen" fields indicate the chunk of operands being received for
* the command or response. If the "more" field is set to TRUE, the full
* operand buffer will be received in multiple _OPERANDS events and the
* last operand buffer indicated with the "more" field set to FALSE.
*/
#define AVRCP_EVENT_OPERANDS AVCTP_EVENT_OPERANDS
/** An AV/C command has timed out. Memory allocated for the command can be
* freed or reused after receiving this event. This event is received for
* commands not routed to the panel subunit.
*
* During this callback, the 'p.cmdFrame' parameter is valid. It contains a
* pointer to the the AV/C command that was sent.
*/
#define AVRCP_EVENT_CMD_TIMEOUT (AVCTP_EVENT_LAST + 1)
/* Group: Events for the exchange of standard AV/C panel subunit commands.
*/
/** The key corresponding to a panel operation has been pressed on the
* remote controller device. See p.panelInd for information about the
* operation.
*
* AVRCP_RejectPanelOperation may be used to reject an unsupported or
* reserved command. If the operation is not rejected during the callback
* it is implicitly accepted. If accepted, the next panel-related event
* for the operation will be AVRCP_EVENT_PANEL_HOLD (if the controller key
* is held down for at least AVRCP_PANEL_PRESSHOLD_TIME) or
* AVRCP_EVENT_PANEL_RELEASE (if the controller key is released more quickly).
*/
#define AVRCP_EVENT_PANEL_PRESS (AVCTP_EVENT_LAST + 2)
/** The key corresponding to a panel operation has been held down on the
* remote controller device for at least AVRCP_PANEL_PRESSHOLD_TIME.
* See p.panelInd for information about the operation.
*
* A target receiving this event should act as if the key was held down until
* the AVRCP_EVENT_PANEL_RELEASE event is received.
*/
#define AVRCP_EVENT_PANEL_HOLD (AVCTP_EVENT_LAST + 3)
/** The key corresponding to a panel operation has been released on the
* remote controller device. See p.panelInd for information about the
* operation.
*/
#define AVRCP_EVENT_PANEL_RELEASE (AVCTP_EVENT_LAST + 4)
/** A panel response has been received from the remote target device.
* All fields of "p.panelCnf" are valid.
*/
#define AVRCP_EVENT_PANEL_CNF (AVCTP_EVENT_LAST + 5)
/* Group: Events for the exchange of Bluetooth specific advanced AV/C
* commands routed through the panel subunit. These event are used primarily
* for the exchange of media information (metadata) and player settings.
*/
/** Advanced status information has been received from the controller. During
* this callback, "advOp" is set to the operation type that was received
* from the controller, and "p.adv.info" contains the relevant information
* based on the operation type. A response was automatically sent to the
* controller.
*/
#define AVRCP_EVENT_ADV_INFO (AVCTP_EVENT_LAST + 6)
/** An advanced request was received and requires a response by the
* application. During this callback, "advOp" is set to the operation type
* that was received from the controller, and "p.adv.req" contains relevant
* information based on the operation type. A response should be sent
* quickly to avoid a timeout on the controller (see
* AVRCP_TgSendAdvResponse()).
*/
#define AVRCP_EVENT_ADV_REQ (AVCTP_EVENT_LAST + 7)
/** The notification of a registered event has been received.
* During this callback, "p.adv.notify" contains the relevant notification
* information. If "errorCode" indicates that no error occured, the
* "p.adv.notify.event" field contains the type of notification,
* and "p.adv.notify.value" contains the value of the notification.
*/
#define AVRCP_EVENT_ADV_NOTIFY (AVCTP_EVENT_LAST + 8)
/** An Advanced command was sent successfully to the target and a response
* was received. During this callback, "advOp" is set to the operation type
* that was sent to the target, and "p.adv.rsp" contains the relevant
* response information based on the operation type.
*/
#define AVRCP_EVENT_ADV_RESPONSE (AVCTP_EVENT_LAST + 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.
*
* During this callback, the 'p.cmdFrame' parameter is valid. It contains
* the the Advanced command that was sent.
*/
#define AVRCP_EVENT_ADV_CMD_TIMEOUT (AVCTP_EVENT_LAST + 10)
/** An Advanced PDU was sent successfully. The memory used by the PDU can be
* freed or reused. During this callback, "p.advTxPdu" points to the memory
* used by the PDU. The operation associated with the PDU is contained in
* "p.advTxPdu->op", and the associated parameters are in
* "p.advTxPdu->parms". The transmitted PDU may have been sent in either an
* advanced command or response. The "status" field contains the results of
* the transmission.
*/
#define AVRCP_EVENT_ADV_TX_DONE (AVCTP_EVENT_LAST + 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.
*/
/** The transport layer is connected and commands/responses can now
* be exchanged on the browsing channel.
*
* During this callback, the 'p.remDev' parameter is valid.
*/
#define AVRCP_EVENT_BROWSE_CONNECT (AVCTP_EVENT_LAST + 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.
*
* During this callback, the 'p.remDev' parameter is valid.
*/
#define AVRCP_EVENT_BROWSE_DISCONNECT (AVCTP_EVENT_LAST + 13)
/** A remote device is attempting to connect the browsing channel. Only the
* acceptor of the connection is notified. The acceptor may call
* AVRCP_BrowseConnectRsp() to either accept or reject the connection.
*
* During this callback, the 'p.remDev' parameter is valid.
*/
#define AVRCP_EVENT_BROWSE_CONNECT_IND (AVCTP_EVENT_LAST + 14)
/* Group: Events for the exchange of browsing channel commands. The browsing
* channel is used for the exchange of AVCTP-based commands/responses which
* contain Bluetooth specific media operations.
*/
/** An browsing request was received and requires a response by the
* application. During this callback, "advOp" is set to the operation type
* that was received from the controller, and "p.adv.browseReq" contains
* relevant information based on the operation type. A response should be
* sent quickly to avoid a timeout on the controller.
*/
#define AVRCP_EVENT_BROWSE_REQ (AVCTP_EVENT_LAST + 15)
/** Advanced status information has been received from the controller. During
* this callback, "advOp" is set to the operation type that was received
* from the controller, and "p.adv.browseInfo" contains the relevant
* information based on the operation type. A response was automatically
* sent to the controller.
*/
#define AVRCP_EVENT_BROWSE_INFO (AVCTP_EVENT_LAST + 16)
/** An browsing command was sent successfully to the target and a response
* was received. During this callback, "advOp" is set to the operation type
* that was sent to the target, and "p.adv.browseRsp" contains the relevant
* response information based on the operation type.
*/
#define AVRCP_EVENT_BROWSE_RESPONSE (AVCTP_EVENT_LAST + 17)
/** No response was received for a Browsing command and it has timed out.
* This event is received for browsing commands only.
*
* During this callback, the 'p.cmdFrame' parameter is valid. It contains
* the the Browsing command that was sent.
*/
#define AVRCP_EVENT_BROWSE_CMD_TIMEOUT (AVCTP_EVENT_LAST + 18)
/** A browsing PDU was sent successfully. The memory used by the PDU can be
* freed or reused. During this callback, "p.advTxPdu" points to the memory
* used by the PDU. The transmitted PDU may have been sent in either an
* browsing command or response. The "status" field contains the results of
* the transmission.
*/
#define AVRCP_EVENT_BROWSE_TX_DONE (AVCTP_EVENT_LAST + 19)
#define AVRCP_EVENT_LAST (AVCTP_EVENT_LAST + 19)
/* End of AvrcpEvent */
/*---------------------------------------------------------------------------
* AvrcpRole type
*
* Describes the roles supported by the device. A device may have both
* target and controller roles with various features sets. These values may
* be OR'd together to best describe the device. The roles and features
* defined here are included in the SDP database. The actual functionality
* of the API is not limited by the values chosen here. A device is free to
* play either role and send any command desired, regardless of the declared
* roles and features. It is up to the application to advertise its
* capabilities properly and provide the proper functionality.
*
* Typically, an audio sink will support AVRCP_CT_CATEGORY_1 (play control)
* and AVRCP_TG_CATEGORY_2 (volume control), while an audio source will support
* AVRCP_TG_CATEGORY_1 and AVRCP_CT_CATEGORY_2 (see AVRCP_CT and AVRCP_TG).
* It is important to note that a device that includes volume control is both
* a controller and a target. An audio sink will be a controller for most
* functions, but a target for volume control. The reverse is true for an
* audio source. The API does not restrict the sending of any command or
* response, regardless of the roles defined, so it is important that the
* application only send the appropriate commands/responses.
*
* For AVRCP 1.3 or later devices, other advanced features that are implemented
* by the application can be declared here as well. For devices supporting
* AVRCP 1.3 or earlier, the "browsing" feature is not supported.
* Devices that support advanced features, such as Player Settings and Group
* Navigation, must have the features enabled in the build (see
* AVRCP_ADVANCED_CONTROLLER and AVRCP_ADVANCED_TARGET).
*/
typedef uint16_t AvrcpRole;
/* Controller: Player/recorder features supported ("play" and "stop") */
#define AVRCP_CT_CATEGORY_1 0x0001
/* Controller: Monitor/amplifier features supported ("volume up" and "volume down") */
#define AVRCP_CT_CATEGORY_2 0x0002
/* Controller: Tuner features supported ("channel up" and "channel down") */
#define AVRCP_CT_CATEGORY_3 0x0004
/* Controller: Menu features supported ("root menu", "up", "down", "left",
* "right", and "select")
*/
#define AVRCP_CT_CATEGORY_4 0x0008
#if AVRCP_BROWSING_CONTROLLER == XA_ENABLED
/* Controller: Media browsing is supported */
#define AVRCP_CT_BROWSING 0x0040
#endif /* AVRCP_BROWSING_CONTROLLER == XA_ENABLED */
/* Target: Player/recorder features supported ("play" and "stop") */
#define AVRCP_TG_CATEGORY_1 0x0100
/* Target: Monitor/amplifier features supported ("volume up" and "volume down") */
#define AVRCP_TG_CATEGORY_2 0x0200
/* Target: Tuner features supported ("channel up" and "channel down") */
#define AVRCP_TG_CATEGORY_3 0x0400
/* Target: Menu features supported ("root menu", "up", "down", "left",
* "right", and "select")
*/
#define AVRCP_TG_CATEGORY_4 0x0800
/* Target: Player settings supported */
#define AVRCP_TG_PLAYER_SETTINGS 0x1000
/* Target: Group navigation supported */
#define AVRCP_TG_GROUP_NAV 0x2000
#if AVRCP_BROWSING_TARGET == XA_ENABLED
/* Target: Media browsing is supported */
#define AVRCP_TG_BROWSING 0x4000
#endif /* AVRCP_BROWSING_TARGET == XA_ENABLED */
/* Target: Multiple media players */
#define AVRCP_TG_MULTIPLE_PLAYERS 0x8000
/* Primary Role as Controller. This define can be used for a device
* whose primary role is as a Controller, providing Category 1 capabilities
* in the controller role, and Category 2 capabilities (volume control)
* in the target role. Other features, such as Player Settings and
* Group Navigation can be added, if the application supports those features.
*/
#if AVRCP_BROWSING_CONTROLLER == XA_ENABLED
#define AVRCP_CT (AVRCP_CT_CATEGORY_1 | AVRCP_TG_CATEGORY_2 | AVRCP_CT_BROWSING)
#else
#define AVRCP_CT (AVRCP_CT_CATEGORY_1 | AVRCP_TG_CATEGORY_2)
#endif
/* Primary Role as Target. This define can be used for a device
* whose primary role is as a Target, providing Category 1 capabilities
* in the target role, and Category 2 capabilities (volume control)
* in the controller role. Other features, such as Player Settings and
* Group Navigation can be added, if the application supports those features.
*/
#if AVRCP_BROWSING_TARGET == XA_ENABLED
#define AVRCP_TG (AVRCP_TG_CATEGORY_1 | AVRCP_CT_CATEGORY_2 | AVRCP_TG_BROWSING)
#else
#define AVRCP_TG (AVRCP_TG_CATEGORY_1 | AVRCP_CT_CATEGORY_2)
#endif
/* End of AvrcpRole */
/*---------------------------------------------------------------------------
* AvrcpCtype type
*
* This type defines the AV/C ctype (command type) codes.
*/
typedef AvctpCtype AvrcpCtype;
#define AVRCP_CTYPE_CONTROL AVCTP_CTYPE_CONTROL
#define AVRCP_CTYPE_STATUS AVCTP_CTYPE_STATUS
#define AVRCP_CTYPE_SPECIFIC_INQUIRY AVCTP_CTYPE_SPECIFIC_INQUIRY
#define AVRCP_CTYPE_NOTIFY AVCTP_CTYPE_NOTIFY
#define AVRCP_CTYPE_GENERAL_INQUIRY AVCTP_CTYPE_GENERAL_INQUIRY
#if AVRCP_BROWSING_ENABLED || AVRCP_LIST_PLAYERS_ENABLED
#define AVRCP_CTYPE_BROWSING AVCTP_CTYPE_BROWSING
#endif /* AVRCP_BROWSING_ENABLED || AVRCP_LIST_PLAYERS_ENABLED */
/* End of AvrcpCtype */
/*---------------------------------------------------------------------------
* AvrcpResponse type
*
* This type defines the AV/C response codes.
*/
typedef AvctpResponse AvrcpResponse;
#define AVRCP_RESPONSE_NOT_IMPLEMENTED AVCTP_RESPONSE_NOT_IMPLEMENTED
#define AVRCP_RESPONSE_ACCEPTED AVCTP_RESPONSE_ACCEPTED
#define AVRCP_RESPONSE_REJECTED AVCTP_RESPONSE_REJECTED
#define AVRCP_RESPONSE_IN_TRANSITION AVCTP_RESPONSE_IN_TRANSITION
#define AVRCP_RESPONSE_IMPLEMENTED_STABLE AVCTP_RESPONSE_IMPLEMENTED_STABLE
#define AVRCP_RESPONSE_CHANGED AVCTP_RESPONSE_CHANGED
#define AVRCP_RESPONSE_INTERIM AVCTP_RESPONSE_INTERIM
#if AVRCP_BROWSING_ENABLED || AVRCP_LIST_PLAYERS_ENABLED
#define AVRCP_RESPONSE_BROWSING AVCTP_RESPONSE_BROWSING
#endif /* AVRCP_BROWSING_ENABLED || AVRCP_LIST_PLAYERS_ENABLED */
/* This code, when received in an AVRCP_EVENT_PANEL_CNF event, indicates
* that a "release" command was not actually delivered to the target because
* the original "press" command was rejected.
*
* This value is NOT legal for use in functions that accept AvrcpResponse
* as a parameter.
*/
#define AVRCP_RESPONSE_SKIPPED 0xF0
/* This code, when received in an AVRCP_EVENT_PANEL_CNF event, indicates
* that the expected response message from the target was not received
* within the expected time frame. The application may proceed normally
* as if the command was accepted, or take some other action.
*
* This value is NOT legal for use in functions that accept AvrcpResponse
* as a parameter.
*/
#define AVRCP_RESPONSE_TIMEOUT 0xF1
/* End of AvrcpResponse */
/*---------------------------------------------------------------------------
* AvrcpOpcode type
*
* This type defines the AV/C Opcodes.
*/
typedef AvctpOpcode AvrcpOpcode;
#define AVRCP_OPCODE_VENDOR_DEPENDENT AVCTP_OPCODE_VENDOR_DEPENDENT
#define AVRCP_OPCODE_UNIT_INFO AVCTP_OPCODE_UNIT_INFO
#define AVRCP_OPCODE_SUBUNIT_INFO AVCTP_OPCODE_SUBUNIT_INFO
#define AVRCP_OPCODE_PASS_THROUGH AVCTP_OPCODE_PASS_THROUGH
/* End of AvrcpOpcode */
/*---------------------------------------------------------------------------
* AvrcpCmdFrame type
*
* Defines the parameters required for an AV/C command.
*/
typedef AvctpCmdFrame AvrcpCmdFrame;
/* End of AvrcpCmdFrame */
/*---------------------------------------------------------------------------
* AvrcpRspFrame type
*
* Defines the parameters required for an AV/C response.
*/
typedef AvctpRspFrame AvrcpRspFrame;
/* End of AvrcpRspFrame */
/*---------------------------------------------------------------------------
* AvrcpSubunitType type
*
* Defines recognized AVRCP subunit types
*/
typedef uint8_t AvrcpSubunitType;
/* Panel subunit type, as specified by the 1394 AV/C Panel Subunit
* Specification
*/
#define AVRCP_SUBUNIT_PANEL 0x09
/* Unit type, used when requesting Unit Info or Subunit Info */
#define AVRCP_SUBUNIT_UNIT 0x1F
/* End of AvrcpSubunitType */
/*---------------------------------------------------------------------------
* AvrcpPanelOperation type
*
* Panel subunit operations that may be sent (by a controller) or
* received (by a target). These codes are defined by the 1394
* AV/C Panel Subunit Specification (version 1.1).
*/
typedef uint16_t AvrcpPanelOperation;
#define AVRCP_POP_SELECT 0x0000
#define AVRCP_POP_UP 0x0001
#define AVRCP_POP_DOWN 0x0002
#define AVRCP_POP_LEFT 0x0003
#define AVRCP_POP_RIGHT 0x0004
#define AVRCP_POP_RIGHT_UP 0x0005
#define AVRCP_POP_RIGHT_DOWN 0x0006
#define AVRCP_POP_LEFT_UP 0x0007
#define AVRCP_POP_LEFT_DOWN 0x0008
#define AVRCP_POP_ROOT_MENU 0x0009
#define AVRCP_POP_SETUP_MENU 0x000A
#define AVRCP_POP_CONTENTS_MENU 0x000B
#define AVRCP_POP_FAVORITE_MENU 0x000C
#define AVRCP_POP_EXIT 0x000D
#define AVRCP_POP_0 0x0020
#define AVRCP_POP_1 0x0021
#define AVRCP_POP_2 0x0022
#define AVRCP_POP_3 0x0023
#define AVRCP_POP_4 0x0024
#define AVRCP_POP_5 0x0025
#define AVRCP_POP_6 0x0026
#define AVRCP_POP_7 0x0027
#define AVRCP_POP_8 0x0028
#define AVRCP_POP_9 0x0029
#define AVRCP_POP_DOT 0x002A
#define AVRCP_POP_ENTER 0x002B
#define AVRCP_POP_CLEAR 0x002C
#define AVRCP_POP_CHANNEL_UP 0x0030
#define AVRCP_POP_CHANNEL_DOWN 0x0031
#define AVRCP_POP_PREVIOUS_CHANNEL 0x0032
#define AVRCP_POP_SOUND_SELECT 0x0033
#define AVRCP_POP_INPUT_SELECT 0x0034
#define AVRCP_POP_DISPLAY_INFO 0x0035
#define AVRCP_POP_HELP 0x0036
#define AVRCP_POP_PAGE_UP 0x0037
#define AVRCP_POP_PAGE_DOWN 0x0038
#define AVRCP_POP_POWER 0x0040
#define AVRCP_POP_VOLUME_UP 0x0041
#define AVRCP_POP_VOLUME_DOWN 0x0042
#define AVRCP_POP_MUTE 0x0043
#define AVRCP_POP_PLAY 0x0044
#define AVRCP_POP_STOP 0x0045
#define AVRCP_POP_PAUSE 0x0046
#define AVRCP_POP_RECORD 0x0047
#define AVRCP_POP_REWIND 0x0048
#define AVRCP_POP_FAST_FORWARD 0x0049
#define AVRCP_POP_EJECT 0x004A
#define AVRCP_POP_FORWARD 0x004B
#define AVRCP_POP_BACKWARD 0x004C
#define AVRCP_POP_ANGLE 0x0050
#define AVRCP_POP_SUBPICTURE 0x0051
#define AVRCP_POP_F1 0x0071
#define AVRCP_POP_F2 0x0072
#define AVRCP_POP_F3 0x0073
#define AVRCP_POP_F4 0x0074
#define AVRCP_POP_F5 0x0075
#define AVRCP_POP_VENDOR_UNIQUE 0x007E
#define AVRCP_POP_NEXT_GROUP 0x017E
#define AVRCP_POP_PREV_GROUP 0x027E
#define AVRCP_POP_RESERVED 0x007F
/* End of AvrcpPanelOperation */
/*---------------------------------------------------------------------------
* AvrcpOperation type
*
* AVRCP Bluetooth specific operations that may be sent/received by a
* controller or target. Some operations are Bluetooth specific AV/C
* commands sent over the control channel and routed through the panel
* subunit, and others are browsing commands sent over the browsing
* channel.
*
* Each operation is associated with an API function and/or event. The
* function name and the events and parameters used in the callback
* function are described below.
*/
typedef uint8_t AvrcpOperation;
/* Associated Function: AVRCP_CtGetCapabilities()
*
* When 'advOp' is set to AVRCP_OP_GET_CAPABILITIES during the
* AVRCP_EVENT_ADV_RESPONSE event, the 'p.adv.rsp.capability' field contains
* the results of the operation.
*/
#define AVRCP_OP_GET_CAPABILITIES 0x10
/* Associated Function: AVRCP_CtListPlayerSettingAttrs()
*
* When 'advOp' is set to AVRCP_OP_LIST_PLAYER_SETTING_ATTRIBS during the
* AVRCP_EVENT_ADV_RESPONSE event, the 'p.adv.rsp.attrMask' field contains
* the results of the operation.
*/
#define AVRCP_OP_LIST_PLAYER_SETTING_ATTRIBS 0x11
/* Associated Function: AVRCP_CtListPlayerSettingValues()
*
* When 'advOp' is set to AVRCP_OP_LIST_PLAYER_SETTING_VALUES during the
* AVRCP_EVENT_ADV_RESPONSE event, the 'p.adv.rsp.attrValues' field contains
* the results of the operation.
*/
#define AVRCP_OP_LIST_PLAYER_SETTING_VALUES 0x12
/* Associated Function: AVRCP_CtGetPlayerSettingValues()
*
* When 'advOp' is set to AVRCP_OP_GET_PLAYER_SETTING_VALUE during the
* AVRCP_EVENT_ADV_RESPONSE event, the 'p.adv.rsp.setting' field contains the
* results of the operation.
*/
#define AVRCP_OP_GET_PLAYER_SETTING_VALUE 0x13
/* Associated Function: AVRCP_CtSetPlayerSettingValues()
*
* When 'advOp' is set to AVRCP_OP_SET_PLAYER_SETTING_VALUE during the
* AVRCP_EVENT_ADV_INFO event, the 'p.adv.info.setting' field contains the
* results of the operation.
*/
#define AVRCP_OP_SET_PLAYER_SETTING_VALUE 0x14
/* Associated Function: AVRCP_CtGetPlayerSettingAttrTxt()
*
* When 'advOp' is set to AVRCP_OP_GET_PLAYER_SETTING_ATTR_TEXT during the
* AVRCP_EVENT_ADV_RESPONSE event, the 'p.adv.rsp.attrStrings' field contains
* the results of the operation.
*/
#define AVRCP_OP_GET_PLAYER_SETTING_ATTR_TEXT 0x15
/* Associated Function: AVRCP_CtGetPlayerSettingValueTxt()
*
* When 'advOp' is set to AVRCP_OP_GET_PLAYER_SETTING_VALUE_TEXT during the
* AVRCP_EVENT_ADV_RESPONSE event, the 'p.adv.rsp.settingStrings' field
* contains the results of the operation.
*/
#define AVRCP_OP_GET_PLAYER_SETTING_VALUE_TEXT 0x16
/* Associated Function: AVRCP_CtInformCharset()
*
* When 'advOp' is set to AVRCP_OP_INFORM_DISP_CHAR_SET during the
* AVRCP_EVENT_ADV_INFO event, the 'p.adv.info.charSet' field contains the
* results of the operation.
*/
#define AVRCP_OP_INFORM_DISP_CHAR_SET 0x17
/* Associated Function: AVRCP_CtInformBatteryStatus()
*
* When 'advOp' is set to AVRCP_OP_INFORM_BATT_STATUS during the
* AVRCP_EVENT_ADV_INFO event, the 'p.adv.info.battStatus' field contains the
* results of the operation.
*/
#define AVRCP_OP_INFORM_BATT_STATUS 0x18
/* Associated Function: AVRCP_CtGetMediaInfo()
*
* When 'advOp' is set to AVRCP_OP_GET_MEDIA_INFO during the
* AVRCP_EVENT_ADV_RESPONSE event, the 'p.adv.rsp.element' field contains the
* results of the operation.
*/
#define AVRCP_OP_GET_MEDIA_INFO 0x20
/* Associated Function: AVRCP_CtGetPlayStatus()
*
* When 'advOp' is set to AVRCP_OP_GET_PLAY_STATUS during the
* AVRCP_EVENT_ADV_INFO event, the 'p.adv.info.charSet' field contains the
* results of the operation.
*/
#define AVRCP_OP_GET_PLAY_STATUS 0x30
/* Associated Function: AVRCP_CtRegisterNotification()
*
* When 'advOp' is set to AVRCP_OP_REGISTER_NOTIFY during the
* AVRCP_EVENT_ADV_RESPONSE event, or when the AVRCP_EVENT_ADV_NOTIFY event
* is received, the 'p.adv.notify' field contains the response or parameters
* for the operation.
*/
#define AVRCP_OP_REGISTER_NOTIFY 0x31
/* This operation is used internally and will not be seen at the API
* layer.
*/
#define AVRCP_OP_REQUEST_CONT_RESP 0x40
/* This operation is used internally and will not be seen at the API
* layer.
*/
#define AVRCP_OP_ABORT_CONT_RESP 0x41
/* Associated Function: AVRCP_CtSetAbsoluteVolume()
*
* When 'advOp' is set to AVRCP_OP_SET_ABSOLUTE_VOLUME during the
* AVRCP_EVENT_ADV_INFO event, the 'p.info.volume' field contains the
* results of the operation.
*/
#define AVRCP_OP_SET_ABSOLUTE_VOLUME 0x50
/* Associated Function: AVRCP_CtSetAddressedPlayer()
*
* When 'advOp' is set to AVRCP_OP_SET_ADDRESSED_PLAYER during the
* AVRCP_EVENT_ADV_INFO event, the 'p.info.addrPlayer' field contains the
* results of the operation.
*/
#define AVRCP_OP_SET_ADDRESSED_PLAYER 0x60
/* Associated Function: AVRCP_CtSetBrowsedPlayer()
*
* When 'advOp' is set to AVRCP_OP_SET_BROWSED_PLAYER during the
* AVRCP_EVENT_BROWSE_RESPONSE event, the 'p.adv.browseRsp.brwsPlayer' field
* contains the results of the operation.
*
* When 'advOp' is set to AVRCP_OP_SET_BROWSED_PLAYER during the
* AVRCP_EVENT_BROWSE_INFO event, the 'p.adv.browseInfo.brwsPlayer' field
* contains the browsing information (no response expected).
*
* This operation is used only on the browsing channel.
*/
#define AVRCP_OP_SET_BROWSED_PLAYER 0x70
/* Associated Function: AVRCP_CtGetFolderItems()
*
* When 'advOp' is set to AVRCP_OP_GET_FOLDER_ITEMS during the
* AVRCP_EVENT_BROWSE_RESPONSE event, the 'p.adv.browseRsp.fldrItems' field
* contains the results of the operation.
*
* When 'advOp' is set to AVRCP_OP_GET_FOLDER_ITEMS during the
* AVRCP_EVENT_BROWSE_REQ event, the 'p.adv.browseReq.folder' field contains
* the browsing request (a response is expected).
*
* This operation is used only on the browsing channel.
*/
#define AVRCP_OP_GET_FOLDER_ITEMS 0x71
/* Associated Function: AVRCP_CtChangePath()
*
* When 'advOp' is set to AVRCP_OP_CHANGE_PATH during the
* AVRCP_EVENT_BROWSE_RESPONSE event, the 'p.adv.browseRsp.chPath' field
* contains the results of the operation.
*
* When 'advOp' is set to AVRCP_OP_CHANGE_PATH during the
* AVRCP_EVENT_BROWSE_REQ event, the 'p.adv.browseReq.chPath' field contains
* the browsing request (a response is expected).
*
* This operation is used only on the browsing channel.
*/
#define AVRCP_OP_CHANGE_PATH 0x72
/* Associated Function: AVRCP_CtGetItemAttributes()
*
* When 'advOp' is set to AVRCP_OP_GET_ITEM_ATTRIBUTES during the
* AVRCP_EVENT_BROWSE_RESPONSE event, the 'p.adv.browseRsp.itemAttrs' field
* contains the results of the operation.
*
* When 'advOp' is set to AVRCP_OP_GET_ITEM_ATTRIBUTES during the
* AVRCP_EVENT_BROWSE_REQ event, the 'p.adv.browseReq.attr' field contains
* the browsing request (a response is expected).
*
* This operation is used only on the browsing channel.
*/
#define AVRCP_OP_GET_ITEM_ATTRIBUTES 0x73
/* Associated Function: AVRCP_CtPlayItem()
*
* When 'advOp' is set to AVRCP_OP_PLAY_ITEM during the AVRCP_EVENT_ADV_REQ
* event, the 'p.adv.req.item' field contains the browsing request (a
* response is expected).
*/
#define AVRCP_OP_PLAY_ITEM 0x74
/* Associated Function: AVRCP_CtSearch()
*
* When 'advOp' is set to AVRCP_OP_SEARCH during the
* AVRCP_EVENT_BROWSE_RESPONSE event, the 'p.adv.browseRsp.search' field
* contains the results of the operation.
*
* When 'advOp' is set to AVRCP_OP_SEARCH during the
* AVRCP_EVENT_BROWSE_REQ event, the 'p.adv.browseReq.search' field contains
* the browsing request (a response is expected).
*
* This operation is used only on the browsing channel.
*/
#define AVRCP_OP_SEARCH 0x80
/* Associated Function: AVRCP_CtAddToNowPlaying()
*
* When 'advOp' is set to AVRCP_OP_ADD_TO_NOW_PLAYING during the
* AVRCP_EVENT_ADV_REQ event, the 'p.adv.req.item' field contains the
* browsing request (a response is expected).
*/
#define AVRCP_OP_ADD_TO_NOW_PLAYING 0x90
/* This operation is used internally and will not be seen at the API
* layer.
*/
#define AVRCP_OP_GENERAL_REJECT 0xA0
/* End of AvrcpOperation */
/*---------------------------------------------------------------------------
* AvrcpErrorCode
*
* Error code for AVRCP specific operations.
*/
typedef uint8_t AvrcpErrorCode;
#define AVRCP_ERR_INVALID_CMD 0x00
#define AVRCP_ERR_INVALID_PARM 0x01
#define AVRCP_ERR_PARM_NOT_FOUND 0x02
#define AVRCP_ERR_INTERNAL_ERROR 0x03
#define AVRCP_ERR_NO_ERROR 0x04
#define AVRCP_ERR_UIDS_CHANGED 0x05
#define AVRCP_ERR_UNKNOWN_ERROR 0x06
#define AVRCP_ERR_INVALID_DIRECTION 0x07
#define AVRCP_ERR_NON_DIRECTORY 0x08
#define AVRCP_ERR_DOES_NOT_EXIST 0x09
#define AVRCP_ERR_INVALID_SCOPE 0x0A
#define AVRCP_ERR_OUT_OF_BOUNDS 0x0B
#define AVRCP_ERR_IS_DIRECTORY 0x0C
#define AVRCP_ERR_MEDIA_IN_USE 0x0D
#define AVRCP_ERR_NOW_PLAYING_FULL 0x0E
#define AVRCP_ERR_NO_SEARCH_SUPPORT 0x0F
#define AVRCP_ERR_SEARCH_IN_PROGRESS 0x10
#define AVRCP_ERR_INVALID_PLAYER_ID 0x11
#define AVRCP_ERR_NOT_BROWSABLE 0x12
#define AVRCP_ERR_NOT_ADDRESSED 0x13
#define AVRCP_ERR_NO_SEARCH_RESULTS 0x14
#define AVRCP_ERR_NO_AVAIL_PLAYERS 0x15
#define AVRCP_ERR_ADDR_PLAYER_CHANGED 0x16
/* End of AvrcpErrorCode */
/*---------------------------------------------------------------------------
* AvrcpEventId
*
* AVRCP events for the AVRCP_REGISTER_NOTIFY operation.
*/
typedef uint8_t AvrcpEventId;
#define AVRCP_EID_MEDIA_STATUS_CHANGED 0x01 /* Change in media status */
#define AVRCP_EID_TRACK_CHANGED 0x02 /* Current track changed */
#define AVRCP_EID_TRACK_END 0x03 /* Reached end of track */
#define AVRCP_EID_TRACK_START 0x04 /* Reached track start */
#define AVRCP_EID_PLAY_POS_CHANGED 0x05 /* Change in playback position.
* Returned after the specified
* playback notification change
* notification interval.
*/
#define AVRCP_EID_BATT_STATUS_CHANGED 0x06 /* Change in battery status */
#define AVRCP_EID_SYS_STATUS_CHANGED 0x07 /* Change in system status */
#define AVRCP_EID_APP_SETTING_CHANGED 0x08 /* Change in player
* application setting
*/
#define AVRCP_EID_NOW_PLAYING_CONTENT_CHANGED 0x09 /* Contents of the now playing
* list have changed
*/
#define AVRCP_EID_AVAILABLE_PLAYERS_CHANGED 0x0A /* The available players have
* changed
*/
#define AVRCP_EID_ADDRESSED_PLAYER_CHANGED 0x0B /* The addressed player has
* changed
*/
#define AVRCP_EID_UIDS_CHANGED 0x0C /* The UIDS have changed */
#define AVRCP_EID_VOLUME_CHANGED 0x0D /* The volume was changed */
#define AVRCP_EID_FLAG_INTERIM 0x80 /* Used Internally */
/* End of AvrcpEventId */
/*---------------------------------------------------------------------------
* AvrcpEventMask
*
* Bitmask of supported AVRCP events. By default, only
* AVRCP_ENABLE_PLAY_STATUS_CHANGED and AVRCP_ENABLE_TRACK_CHANGED are
* enabled when a channel is registered. The application must explicitly
* enable any other supported events.
*/
typedef uint16_t AvrcpEventMask;
#define AVRCP_ENABLE_PLAY_STATUS_CHANGED 0x0001 /* Change in playback
* status
*/
#define AVRCP_ENABLE_MEDIA_STATUS_CHANGED 0x0001 /* Alias */
#define AVRCP_ENABLE_TRACK_CHANGED 0x0002 /* Current track changed */
#define AVRCP_ENABLE_TRACK_END 0x0004 /* Reached end of track */
#define AVRCP_ENABLE_TRACK_START 0x0008 /* Reached track start */
#define AVRCP_ENABLE_PLAY_POS_CHANGED 0x0010 /* Change in playback
* position
*/
#define AVRCP_ENABLE_BATT_STATUS_CHANGED 0x0020 /* Change in battery
* status
*/
#define AVRCP_ENABLE_SYS_STATUS_CHANGED 0x0040 /* Change in system status */
#define AVRCP_ENABLE_APP_SETTING_CHANGED 0x0080 /* Change in player
* application setting
*/
#define AVRCP_ENABLE_NOW_PLAYING_CHANGED 0x0100 /* Change in the now
* playing list
*/
#define AVRCP_ENABLE_AVAIL_PLAYERS_CHANGED 0x0200 /* Available players
* changed
*/
#define AVRCP_ENABLE_ADDRESSED_PLAYER_CHANGED 0x0400 /* Addressed player changed */
#define AVRCP_ENABLE_UIDS_CHANGED 0x0800 /* UIDS changed */
#define AVRCP_ENABLE_VOLUME_CHANGED 0x1000 /* Volume Changed */
/* End of AvrcpEventMask */
/*---------------------------------------------------------------------------
* AvrcpCapabilityId type
*
* Defines the capability ID for the AVRCP_OP_GET_CAPABILITIES operation.
*/
typedef uint8_t AvrcpCapabilityId;
#define AVRCP_CAPABILITY_COMPANY_ID 2
#define AVRCP_CAPABILITY_EVENTS_SUPPORTED 3
/* End of AvrcpCapabilityId */
/*---------------------------------------------------------------------------
* AvrcpPlayerAttrId type
*
* Defines the attribute IDs used for specific player application settings,
* as defined by the AVRCP spec. Other values greater than 4 may be used for
* application defined player settings extensions.
*/
typedef uint8_t AvrcpPlayerAttrId;
#define AVRCP_PLAYER_EQ_STATUS 1 /* Player equalizer status */
#define AVRCP_PLAYER_REPEAT_STATUS 2 /* Player repeat status */
#define AVRCP_PLAYER_SHUFFLE_STATUS 3 /* Player Shuffle status */
#define AVRCP_PLAYER_SCAN_STATUS 4 /* Player scan status */
/* End of AvrcpPlayerAttrId */
/*---------------------------------------------------------------------------
* AvrcpPlayerAttrIdMask type
*
* Defines which attribute IDs are supported for player application settings.
* By default, no attributes are enabled when a channel is registered. The
* application must explicitly enable supported attributes and set the
* appropriate values. The first 4 player attributes are defined by the
* AVRCP specification. If application defined extenstions to the player
* settings are supported, the AVRCP_ENABLE_PLAYER_EXTENSION_ID_N bit must be
* set, where N is the ID for the player attribute.
*/
typedef uint16_t AvrcpPlayerAttrIdMask;
#define AVRCP_ENABLE_PLAYER_EQ_STATUS 0x0001
#define AVRCP_ENABLE_PLAYER_REPEAT_STATUS 0x0002
#define AVRCP_ENABLE_PLAYER_SHUFFLE_STATUS 0x0004
#define AVRCP_ENABLE_PLAYER_SCAN_STATUS 0x0008
#define AVRCP_ENABLE_PLAYER_EXTENSION_ID_5 0x0010
#define AVRCP_ENABLE_PLAYER_EXTENSION_ID_6 0x0020
#define AVRCP_ENABLE_PLAYER_EXTENSION_ID_7 0x0040
#define AVRCP_ENABLE_PLAYER_EXTENSION_ID_8 0x0080
#define AVRCP_ENABLE_PLAYER_EXTENSION_ID_9 0x0100
#define AVRCP_ENABLE_PLAYER_EXTENSION_ID_10 0x0200
#define AVRCP_ENABLE_PLAYER_EXTENSION_ID_11 0x0400
#define AVRCP_ENABLE_PLAYER_EXTENSION_ID_12 0x0800
#define AVRCP_ENABLE_PLAYER_EXTENSION_ID_13 0x1000
#define AVRCP_ENABLE_PLAYER_EXTENSION_ID_14 0x2000
#define AVRCP_ENABLE_PLAYER_EXTENSION_ID_15 0x4000
#define AVRCP_ENABLE_PLAYER_EXTENSION_ID_16 0x8000
/* End of AvrcpPlayerAttrIdMask */
/*---------------------------------------------------------------------------
* AvrcpEqValue type
*
* Defines values for the player equalizer status.
*/
typedef uint8_t AvrcpEqValue;
#define AVRCP_EQ_OFF 1
#define AVRCP_EQ_ON 2
/* End of AvrcpEqValue */
/*---------------------------------------------------------------------------
* AvrcpRepeatValue type
*
* Defines values for the player repeat mode status.
*/
typedef uint8_t AvrcpRepeatValue;
#define AVRCP_REPEAT_OFF 1
#define AVRCP_REPEAT_SINGLE 2
#define AVRCP_REPEAT_ALL 3
#define AVRCP_REPEAT_GROUP 4
/* End of AvrcpRepeatValue */
/*---------------------------------------------------------------------------
* AvrcpShuffleValue type
*
* Defines values for the player shuffle mode status.
*/
typedef uint8_t AvrcpShuffleValue;
#define AVRCP_SHUFFLE_OFF 1
#define AVRCP_SHUFFLE_ALL 2
#define AVRCP_SHUFFLE_GROUP 3
/* End of AvrcpShuffleValue */
/*---------------------------------------------------------------------------
* AvrcpScanValue type
*
* Defines values for the player scan mode status.
*/
typedef uint8_t AvrcpScanValue;
#define AVRCP_SCAN_OFF 1
#define AVRCP_SCAN_ALL 2
#define AVRCP_SCAN_GROUP 3
/* End of AvrcpScanValue */
/*---------------------------------------------------------------------------
* AvrcpExtValue type
*
* Defines values for the player setting extensions.
*/
typedef uint8_t AvrcpExtValue;
/* End of AvrcpExtValue */
/*---------------------------------------------------------------------------
* AvrcpBatteryStatus type
*
* Defines values for battery status.
*/
typedef uint8_t AvrcpBatteryStatus;
#define AVRCP_BATT_STATUS_NORMAL 0
#define AVRCP_BATT_STATUS_WARNING 1
#define AVRCP_BATT_STATUS_CRITICAL 2
#define AVRCP_BATT_STATUS_EXTERNAL 3
#define AVRCP_BATT_STATUS_FULL_CHARGE 4
/* End of AvrcpBatteryStatus */
/*---------------------------------------------------------------------------
* AvrcpSystemStatus type
*
* Defines values for system status.
*/
typedef uint8_t AvrcpSystemStatus;
#define AVRCP_SYS_POWER_ON 0
#define AVRCP_SYS_POWER_OFF 1
#define AVRCP_SYS_UNPLUGGED 2
/* End of AvrcpSystemStatus */
/*---------------------------------------------------------------------------
* AvrcpMediaAttrId type
*
* Defines values for the media attribute ID.
*/
typedef uint32_t AvrcpMediaAttrId;
#define AVRCP_MEDIA_ATTR_TITLE 0x00000001
#define AVRCP_MEDIA_ATTR_ARTIST 0x00000002
#define AVRCP_MEDIA_ATTR_ALBUM 0x00000003
#define AVRCP_MEDIA_ATTR_TRACK 0x00000004
#define AVRCP_MEDIA_ATTR_NUM_TRACKS 0x00000005
#define AVRCP_MEDIA_ATTR_GENRE 0x00000006
#define AVRCP_MEDIA_ATTR_DURATION 0x00000007
/* End of AvrcpMediaAttrId */
/*---------------------------------------------------------------------------
* AvrcpMediaAttrIdMask type
*
* Defines supported values for the media attribute ID. By default, only
* AVRCP_ENABLE_MEDIA_ATTR_TITLE is enabled when a channel is registered.
* The application must explicitly enable any supported attributes and
* set the appropriate values.
*/
typedef uint8_t AvrcpMediaAttrIdMask;
#define AVRCP_ENABLE_MEDIA_ATTR_TITLE 0x01
#define AVRCP_ENABLE_MEDIA_ATTR_ARTIST 0x02
#define AVRCP_ENABLE_MEDIA_ATTR_ALBUM 0x04
#define AVRCP_ENABLE_MEDIA_ATTR_TRACK 0x08
#define AVRCP_ENABLE_MEDIA_ATTR_NUM_TRACKS 0x10
#define AVRCP_ENABLE_MEDIA_ATTR_GENRE 0x20
#define AVRCP_ENABLE_MEDIA_ATTR_DURATION 0x40
/* End of AvrcpMediaAttrIdMask */
/*---------------------------------------------------------------------------
* AvrcpMediaStatus type
*
* Defines play status of the currently playing media.
*/
typedef uint8_t AvrcpMediaStatus;
#define AVRCP_MEDIA_STOPPED 0x00
#define AVRCP_MEDIA_PLAYING 0x01
#define AVRCP_MEDIA_PAUSED 0x02
#define AVRCP_MEDIA_FWD_SEEK 0x03
#define AVRCP_MEDIA_REV_SEEK 0x04
#define AVRCP_MEDIA_ERROR 0xFF
/* End of AvrcpMediaStatus */
/*--------------------------------------------------------------------------
* AvrcpVersion type
*
* AVRCP profile version discovered during the SDP query.
*/
typedef uint16_t AvrcpVersion;
/* Unable to determine the Hands Free Profile version that is supported */
#define AVRCP_VERSION_UNKNOWN 0x0000
/* Supports Version 1.0 of the AVRCP Profile */
#define AVRCP_VERSION_1_0 0x0100
/* Supports Version 1.3 of the AVRCP Profile */
#define AVRCP_VERSION_1_3 0x0103
/* Supports Version 1.4 of the AVRCP Profile */
#define AVRCP_VERSION_1_4 0x0104
/* End of AvrcpVersion */
/*---------------------------------------------------------------------------
* AvrcpFeatures type
*
* Device features used in SDP queries.
*/
typedef uint16_t AvrcpFeatures;
/* Player/recorder features supported ("play" and "stop") */
#define AVRCP_FEATURES_CATEGORY_1 0x0001
/* Monitor/amplifier features supported ("volume up" and "volume down") */
#define AVRCP_FEATURES_CATEGORY_2 0x0002
/* Tuner features supported ("channel up" and "channel down") */
#define AVRCP_FEATURES_CATEGORY_3 0x0004
/* Menu features supported ("root menu", "up", "down", "left", "right", and
* "select")
*/
#define AVRCP_FEATURES_CATEGORY_4 0x0008
/* Player settings supported */
#define AVRCP_FEATURES_PLAYER_SETTINGS 0x0010
/* Group navigation supported */
#define AVRCP_FEATURES_GROUP_NAV 0x0020
/* Media browsing is supported */
#define AVRCP_FEATURES_BROWSING 0x0040
/* Multiple media players */
#define AVRCP_FEATURES_MULTIPLE_PLAYERS 0x0080
/* End of AvrcpFeatures */
/*---------------------------------------------------------------------------
* AvrcpMajPlayerType type
*
*/
typedef uint8_t AvrcpMajPlayerType;
#define AVRCP_MAJ_PLAYER_AUDIO 0x01
#define AVRCP_MAJ_PLAYER_VIDEO 0x02
#define AVRCP_MAJ_PLAYER_AUD_BCAST 0x04
#define AVRCP_MAJ_PLAYER_VID_BCAST 0x08
/* End of AvrcpMajPlayerType */
/*---------------------------------------------------------------------------
* AvrcpPlayerSubType type
*
*/
typedef uint32_t AvrcpPlayerSubType;
#define AVRCP_PLAYER_SUB_AUDIO_BOOK 0x00000001
#define AVRCP_PLAYER_SUB_PODCAST 0x00000002
/* End of AvrcpPlayerSubType */
/*---------------------------------------------------------------------------
* AvrcpScope type
*
*/
typedef uint8_t AvrcpScope;
#define AVRCP_SCOPE_MEDIA_PLAYER_LIST 0x00
#define AVRCP_SCOPE_VIRTUAL_FILESYS 0x01
#define AVRCP_SCOPE_SEARCH 0x02
#define AVRCP_SCOPE_NOW_PLAYING 0x03
/* End of AvrcpScope */
/*---------------------------------------------------------------------------
* AvrcpChgPathDirection type
*
*/
typedef uint8_t AvrcpChgPathDirection;
#define AVRCP_DIR_UP 0x00
#define AVRCP_DIR_DOWN 0x01
/* End of AvrcpChgPathDirection */
/*---------------------------------------------------------------------------
* AvrcpPlyrFeatrByte type
*
*/
typedef uint8_t AvrcpPlyrFeatrByte;
/* Byte 0 */
#define AVRCP_BRWS_0_FEAT_SELECT 0x01
#define AVRCP_BRWS_0_FEAT_UP 0x02
#define AVRCP_BRWS_0_FEAT_DOWN 0x04
#define AVRCP_BRWS_0_FEAT_LEFT 0x08
#define AVRCP_BRWS_0_FEAT_RIGHT 0x10
#define AVRCP_BRWS_0_FEAT_RIGHT_UP 0x20
#define AVRCP_BRWS_0_FEAT_RIGHT_DOWN 0x40
#define AVRCP_BRWS_0_FEAT_LEFT_UP 0x80
/* Byte 1 */
#define AVRCP_BRWS_1_FEAT_LEFT_DOWN 0x01
#define AVRCP_BRWS_1_FEAT_ROOT_MENU 0x02
#define AVRCP_BRWS_1_FEAT_SETUP_MENU 0x04
#define AVRCP_BRWS_1_FEAT_CONTENTS_MENU 0x08
#define AVRCP_BRWS_1_FEAT_FAVORITE_MENU 0x10
#define AVRCP_BRWS_1_FEAT_EXIT 0x20
#define AVRCP_BRWS_1_FEAT_0 0x40
#define AVRCP_BRWS_1_FEAT_1 0x80
/* Byte 2 */
#define AVRCP_BRWS_2_FEAT_2 0x01
#define AVRCP_BRWS_2_FEAT_3 0x02
#define AVRCP_BRWS_2_FEAT_4 0x04
#define AVRCP_BRWS_2_FEAT_5 0x08
#define AVRCP_BRWS_2_FEAT_6 0x10
#define AVRCP_BRWS_2_FEAT_7 0x20
#define AVRCP_BRWS_2_FEAT_8 0x40
#define AVRCP_BRWS_2_FEAT_9 0x80
/* Byte 3 */
#define AVRCP_BRWS_3_FEAT_DOT 0x01
#define AVRCP_BRWS_3_FEAT_ENTER 0x02
#define AVRCP_BRWS_3_FEAT_CLEAR 0x04
#define AVRCP_BRWS_3_FEAT_CHNL_UP 0x08
#define AVRCP_BRWS_3_FEAT_CHNL_DOWN 0x10
#define AVRCP_BRWS_3_FEAT_PREV_CHNL 0x20
#define AVRCP_BRWS_3_FEAT_SOUND_SEL 0x40
#define AVRCP_BRWS_3_FEAT_INPUT_SEL 0x80
/* Byte 4 */
#define AVRCP_BRWS_3_FEAT_DISPLAY_INFO 0x01
#define AVRCP_BRWS_4_FEAT_HELP 0x02
#define AVRCP_BRWS_4_FEAT_PG_UP 0x04
#define AVRCP_BRWS_4_FEAT_PG_DOWN 0x08
#define AVRCP_BRWS_4_FEAT_POWER 0x10
#define AVRCP_BRWS_4_FEAT_VOL_UP 0x20
#define AVRCP_BRWS_4_FEAT_VOL_DOWN 0x40
#define AVRCP_BRWS_4_FEAT_MUTE 0x80
/* Byte 5 */
#define AVRCP_BRWS_5_FEAT_PLAY 0x01
#define AVRCP_BRWS_5_FEAT_STOP 0x02
#define AVRCP_BRWS_5_FEAT_PAUSE 0x04
#define AVRCP_BRWS_5_FEAT_RECORD 0x08
#define AVRCP_BRWS_5_FEAT_REWIND 0x10
#define AVRCP_BRWS_5_FEAT_FF 0x20
#define AVRCP_BRWS_5_FEAT_EJECT 0x40
#define AVRCP_BRWS_5_FEAT_FORWARD 0x80
/* Byte 6 */
#define AVRCP_BRWS_6_FEAT_BACKWARD 0x01
#define AVRCP_BRWS_6_FEAT_ANGLE 0x02
#define AVRCP_BRWS_6_FEAT_SUBPIC 0x04
#define AVRCP_BRWS_6_FEAT_F1 0x08
#define AVRCP_BRWS_6_FEAT_F2 0x10
#define AVRCP_BRWS_6_FEAT_F3 0x20
#define AVRCP_BRWS_6_FEAT_F4 0x40
#define AVRCP_BRWS_6_FEAT_F5 0x80
/* Byte 7 */
#define AVRCP_BRWS_7_FEAT_VENDOR_UNIQUE 0x01
#define AVRCP_BRWS_7_FEAT_GROUP_NAV 0x02
#define AVRCP_BRWS_7_FEAT_ADVANCED_CTRL 0x04
#define AVRCP_BRWS_7_FEAT_BROWSING 0x08
#define AVRCP_BRWS_7_FEAT_SEARCHING 0x10
#define AVRCP_BRWS_7_FEAT_ADD_TO_PLAYING 0x20
#define AVRCP_BRWS_7_FEAT_UIDS_UNIQUE 0x40
#define AVRCP_BRWS_7_FEAT_BRWS_WHEN_ADDRESSED 0x80
/* Byte 8 */
#define AVRCP_BRWS_8_SEARCH_WHEN_ADDRESSED 0x01
#define AVRCP_BRWS_8_NOW_PLAYING 0x02
#define AVRCP_BRWS_8_UID_PERSISTENT 0x04
/* End of AvrcpPlyrFeatrByte */
/*---------------------------------------------------------------------------
* AvrcpItemType type
*
* The type of an media item.
*/
typedef uint8_t AvrcpItemType;
#define AVRCP_ITEM_MEDIA_PLAYER 0x01
#define AVRCP_ITEM_FOLDER 0x02
#define AVRCP_ITEM_MEDIA_ELEMENT 0x03
/* End of AvrcpItemType */
/*---------------------------------------------------------------------------
* AvrcpFolderType type
*
* The type of a media folder.
*/
typedef uint8_t AvrcpFolderType;
#define AVRCP_FOLDER_TYPE_MIXED 0x00
#define AVRCP_FOLDER_TYPE_TITLES 0x01
#define AVRCP_FOLDER_TYPE_ALBUMS 0x02
#define AVRCP_FOLDER_TYPE_ARTISTS 0x03
#define AVRCP_FOLDER_TYPE_GENRES 0x04
#define AVRCP_FOLDER_TYPE_PLAYLISTS 0x05
#define AVRCP_FOLDER_TYPE_YEARS 0x06
/* End of AvrcpFolderType */
/*---------------------------------------------------------------------------
* AvrcpIsPlayable type
*
* Flag that describes whether a folder is playable or not.
*/
typedef uint8_t AvrcpIsPlayable;
#define AVRCP_IS_NOT_PLAYABLE 0x00
#define AVRCP_IS_PLAYABLE 0x01
/* End of AvrcpIsPlayable */
/*---------------------------------------------------------------------------
* AvrcpMediaType type
*
* The type of media element.
*/
typedef uint8_t AvrcpMediaType;
#define AVRCP_MEDIA_TYPE_AUDIO 0x00
#define AVRCP_MEIDA_TYPE_VIDEO 0x01
/* End of AvrcpMediaType */
/* Forward reference */
typedef struct _AvrcpChannel AvrcpChannel;
typedef struct _AvrcpCallbackParms AvrcpCallbackParms;
typedef struct _AvrcpAdvancedPdu AvrcpAdvancedPdu;
typedef struct _AvrcpPlayerSetting AvrcpPlayerSetting;
typedef struct _AvrcpPlayerStrings AvrcpPlayerStrings;
typedef struct _AvrcpEqString AvrcpEqString;
typedef struct _AvrcpRepeatString AvrcpRepeatString;
typedef struct _AvrcpShuffleString AvrcpShuffleString;
typedef struct _AvrcpScanString AvrcpScanString;
typedef struct _AvrcpExtString AvrcpExtString;
typedef struct _AvrcpCharSets AvrcpCharSets;
typedef struct _AvrcpMediaInfo AvrcpMediaInfo;
typedef struct _AvrcpMediaPlayStatus AvrcpMediaPlayStatus;
typedef struct _AvrcpTrackStruct AvrcpTrackStruct;
/*---------------------------------------------------------------------------
* AvrcpCallback type
*
* A function of this type is called to indicate events to the application.
*/
typedef void (*AvrcpCallback)(AvrcpChannel *chnl,
const AvrcpCallbackParms *Parms);
/* End of AvrcpCallback */
/****************************************************************************
*
* Data Structures
*
****************************************************************************/
/*---------------------------------------------------------------------------
* AvrcpEqString Structure
*
* Contains EQ Status strings.
*/
struct _AvrcpEqString {
/* Index 0 == Off, Index 1 == On */
const char *string[2];
uint8_t len[2];
};
/*---------------------------------------------------------------------------
* AvrcpRepeatString Structure
*
* Contains Repeat status strings.
*/
struct _AvrcpRepeatString {
/* Index 0 == Off, Index 1 == Single, Index 2 == All, Index 3 == Group */
const char *string[4];
uint8_t len[4];
};
/*---------------------------------------------------------------------------
* AvrcpShuffleString Structure
*
* Contains Shuffle status strings.
*/
struct _AvrcpShuffleString {
/* Index 0 == Off, Index 1 == All, Index 2 == Group */
const char *string[3];
uint8_t len[3];
};
/*---------------------------------------------------------------------------
* AvrcpScanString Structure
*
* Contains Scan status strings.
*/
struct _AvrcpScanString {
/* Index 0 == Off, Index 1 == All, Index 2 == Group */
const char *string[3];
uint8_t len[3];
};
/*---------------------------------------------------------------------------
* AvrcpExtString Structure
*
* Contains strings for extended player settings defined by the application.
*/
struct _AvrcpExtString {
/* Number of extended player settings */
uint8_t numStrings;
const char *string[AVRCP_MAX_PLAYER_STRINGS]; /* The player setting string */
uint8_t len[AVRCP_MAX_PLAYER_STRINGS]; /* The player setting string length */
};
/*---------------------------------------------------------------------------
* AvrcpPlayerSetting Structure
*
* Contains the Media Player device settings.
*/
struct _AvrcpPlayerSetting {
AvrcpPlayerAttrId attrId; /* Media Player Attribute ID */
union {
AvrcpEqValue eq;
AvrcpRepeatValue repeat;
AvrcpShuffleValue shuffle;
AvrcpScanValue scan;
AvrcpExtValue extValue;
uint8_t value; /* Used Internally */
} setting;
};
/*---------------------------------------------------------------------------
* AvrcpPlayerStrings Structure
*
* Contains the Media Player attribute and value strings.
*/
struct _AvrcpPlayerStrings {
const char *attrString; /* Media Player Attribute Text */
uint8_t attrLen; /* Length of the Attribute Text */
union {
AvrcpEqString eq; /* Equalizer status */
AvrcpRepeatString repeat; /* Repeat mode status */
AvrcpShuffleString shuffle; /* Shuffle mode status */
AvrcpScanString scan; /* Scan mode status */
AvrcpExtString ext; /* Extended settings status */
} setting;
};
/*---------------------------------------------------------------------------
* AvrcpMediaInfo Structure
*
* Contains the Media element information.
*/
struct _AvrcpMediaInfo {
AvrcpMediaAttrId attrId; /* Media element attribute ID */
const char *string; /* The media element */
uint16_t length; /* Length of the media element */
};
/*---------------------------------------------------------------------------
* AvrcpCharSets Structure
*
* Contains the supported character sets.
*/
struct _AvrcpCharSets {
uint8_t numCharSets;
uint16_t charSets[AVRCP_MAX_CHAR_SETS];
};
/*---------------------------------------------------------------------------
* AvrcpMediaPlayStatus structure
*
* Contains status of the currently playing media.
*/
struct _AvrcpMediaPlayStatus {
uint32_t length;
/* If a track is currently selected, then this contains the current
* playback position within the current track, measured in milliseconds.
* Otherwise, it will contain AVRCP_NO_TRACK_CURRENTLY_SELECTED.
*/
uint32_t position;
AvrcpMediaStatus mediaStatus;
};
/*---------------------------------------------------------------------------
* AvrcpFolder
*
* Contains information about a media player folder.
*/
typedef struct _AvrcpFolder {
uint16_t nameLen;
const char *name;
} AvrcpFolder;
/*---------------------------------------------------------------------------
* AvrcpMediaPlayerItem
*
* Contains information about a media player item.
*/
typedef struct _AvrcpMediaPlayerItem {
/* Used Internally */
ListEntry node;
/* Used Internally */
uint16_t playerId;
/* Major Player Type */
AvrcpMajPlayerType majorType;
/* Player Sub Type */
AvrcpPlayerSubType subType;
/* Current media play status */
AvrcpMediaStatus mediaStatus;
/* Player feature bitmask */
AvrcpPlyrFeatrByte 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 */
AvrcpFolder folder[AVRCP_MAX_FOLDER_DEPTH];
/* Number of items in the current folder */
uint32_t numItems;
} AvrcpMediaPlayerItem;
#if AVRCP_BROWSING_ENABLED || AVRCP_LIST_PLAYERS_ENABLED
/*---------------------------------------------------------------------------
* AvrcpFolderItem
*
* Contains information about a folder item.
*/
typedef struct _AvrcpFolderItem {
/* The UID of this media element */
uint8_t uid[8];
/* Folder Type */
AvrcpFolderType folderType;
/* Is Playable Flag */
AvrcpIsPlayable 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;
} AvrcpFolderItem;
/*---------------------------------------------------------------------------
* AvrcpMediaAttributes
*
* Media Attributes
*/
typedef struct _AvrcpMediaAttribute {
/* Attribute ID */
AvrcpMediaAttrId attrId;
/* Character Set */
uint16_t charSet;
/* Attribute Length */
uint16_t valueLen;
/* Attribute Name */
uint8_t *value;
} AvrcpMediaAttribute;
/*---------------------------------------------------------------------------
* AvrcpMediaElementItem
*
* Media Elements
*/
typedef struct _AvrcpMediaElementItem {
/* The UID of this media element */
uint8_t uid[8];
/* Media type (audio or video) */
AvrcpMediaType 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 */
AvrcpMediaAttribute attrs[AVRCP_NUM_MEDIA_ATTRIBUTES];
} AvrcpMediaElementItem;
/*---------------------------------------------------------------------------
* AvrcpMediaItem
*
* A media item.
*/
typedef struct _AvrcpMediaItem {
/* Media Item Type */
AvrcpItemType itemType;
/* The Media Item */
union {
AvrcpMediaPlayerItem player;
AvrcpFolderItem folder;
AvrcpMediaElementItem element;
} item;
} AvrcpMediaItem;
#endif /* AVRCP_BROWSING_ENABLED || AVRCP_LIST_PLAYERS_ENABLED */
/*--------------------------------------------------------------------------
* AvrcpAdvancedPdu structure
*
* Contains the data for a advanced PDU.
*/
struct _AvrcpAdvancedPdu {
/* Used Internally by AVRCP */
ListEntry node;
/* Operation (PDU ID) */
AvrcpOperation op;
/* Operation parameter length */
uint16_t parmLen;
/* Operation parameters */
uint8_t *parms;
/* Transaction ID */
uint8_t transId;
/* === Internal use only === */
int more;
uint16_t curLen;
uint16_t bytesToSend;
uint8_t contOp;
int abort;
/* For responses */
int internal;
AvrcpResponse response;
AvrcpErrorCode error;
};
/*---------------------------------------------------------------------------
* AvrcpTrackStruct structure
*
* Defines a 64 bit structure used to store track index information. As of
* AVRCP spec v1.4, the only valid values are 0 (track selected) and 0
* AVRCP_NO_TRACK_CURRENTLY_SELECTED. Any other value should be treated the
* same as 0.
*/
struct _AvrcpTrackStruct {
/* The most significant 32 bits of the track index information. */
uint32_t msuint32_t;
/* The least significant 32 bits of the track index information. */
uint32_t lsuint32_t;
};
/*---------------------------------------------------------------------------
* AvrcpAdvReqParms req;
*
* Defines the call back parameters received during an AVRCP_EVENT_ADV_REQ
* event.
*
*/
typedef struct _AvrcpAdvReqParms {
/* Transaction ID of the request */
uint8_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 {
AvrcpScope scope;
uint8_t uid[8];
uint16_t uidCounter;
} item;
} p;
} AvrcpAdvReqParms;
/*---------------------------------------------------------------------------
* AvrcpAdvInfParms structure
*
* Defines the callback parameters received during an AVRCP_EVENT_ADV_INFO
* event.
*/
typedef union _AvrcpAdvInfParms {
/* The value of each player setting. This is valid when "advOp" is set
* to AVRCP_OP_SET_PLAYER_SETTING_VALUE.
*/
AvrcpPlayerSetting playerSetting;
struct {
/* Bitmask that describes which
* attributes are being reported
*/
AvrcpPlayerAttrIdMask attrMask;
/* The equalizer setting. */
AvrcpEqValue eq;
/* The repeat setting. */
AvrcpRepeatValue repeat;
/* The shuffle setting. */
AvrcpShuffleValue shuffle;
/* The scan setting. */
AvrcpScanValue scan;
#if AVRCP_NUM_PLAYER_SETTINGS > 4
/* Extended player setting. */
AvrcpExtValue extValue[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).
*/
AvrcpCharSets charSet;
/* The battery status of the controller.
* This is valid when "advOp" is set to AVRCP_OP_INFORM_BATT_STATUS.
*/
AvrcpBatteryStatus battStatus;
#if AVRCP_VERSION_1_3_ONLY == XA_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.
*/
AvrcpMediaPlayerItem *addrPlayer;
#endif /* AVRCP_VERSION_1_3_ONLY == XA_DISABLED */
} AvrcpAdvInfParms;
/*---------------------------------------------------------------------------
* AvrcpPlayerAttrib structure
*
* Used to describe player setting attributes.
*/
typedef struct _AvrcpPlayerAttrib {
AvrcpPlayerAttrId attrId;
uint16_t charSet;
uint8_t length;
const char *string;
} AvrcpPlayerAttrib;
/*---------------------------------------------------------------------------
* AvrcpPlayerSettings structure
*
* Used to describe player setting values.
*/
typedef struct _AvrcpPlayerSettings {
uint8_t valueId;
uint16_t charSet;
uint8_t length;
const char *string;
} AvrcpPlayerSettings;
/*---------------------------------------------------------------------------
* AvrcpMediaAttr structure
*
* Used to describe media info attributes.
*/
typedef struct _AvrcpMediaAttr {
uint32_t attrId;
uint16_t charSet;
uint16_t length;
const char *string;
} AvrcpMediaAttr;
/*---------------------------------------------------------------------------
* AvrcpRspParms structure
*
* Defines the callback parameters received during the
* AVRCP_EVENT_ADV_RESPONSE event, not including AVRCP_OP_REGISTER_NOTIFY
* operation (see AvrcpNotifyParms).
*/
typedef union _AvrcpAdvRspParms {
/* The capabilities of the target.
* This is valid when "advOp" is set to AVRCP_OP_GET_CAPABILITIES.
*/
struct {
/* The type of capability. */
AvrcpCapabilityId 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)
*/
AvrcpEventMask 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.
*/
AvrcpPlayerAttrIdMask 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 */
AvrcpPlayerAttrib txt[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
*/
AvrcpPlayerAttrIdMask attrMask;
/* The equalizer setting. */
AvrcpEqValue eq;
/* The repeat setting. */
AvrcpRepeatValue repeat;
/* The shuffle setting. */
AvrcpShuffleValue shuffle;
/* The scan setting. */
AvrcpScanValue scan;
#if AVRCP_NUM_PLAYER_SETTINGS > 4
/* Extended player setting. */
AvrcpExtValue extValue[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 */
AvrcpPlayerSettings txt[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 */
AvrcpMediaAttr txt[AVRCP_NUM_MEDIA_ATTRIBUTES];
} element;
/* The playback status of the current track.
* This is valid when "advOp" is set to AVRCP_OP_GET_PLAY_STATUS.
*/
struct {
uint32_t length;
uint32_t position;
AvrcpMediaStatus mediaStatus;
} playStatus;
#if AVRCP_VERSION_1_3_ONLY == XA_DISABLED
/* The Absolute Volume
* This is valid when "advOp" is set to AVRCP_OP_SET_ABSOLUTE_VOLUME.
*/
uint8_t volume;
#endif /* AVRCP_VERSION_1_3_ONLY == XA_DISABLED */
} AvrcpAdvRspParms;
/*---------------------------------------------------------------------------
* 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 _AvrcpAdvNotifyParms {
/* Defines the event ID that was received */
AvrcpEventId event;
union {
/* Play status of the media. Valid when the event ID is
* AVRCP_EID_MEDIA_STATUS_CHANGED.
*/
AvrcpMediaStatus mediaStatus;
/* The current track. Valid when the event ID is
* AVRCP_EID_TRACK_CHANGED.
*/
AvrcpTrackStruct 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.
*/
AvrcpBatteryStatus battStatus;
/* The system status of the target. Valid when the event ID is
* AVRCP_EID_SYS_STATUS_CHANGED.
*/
AvrcpSystemStatus sysStatus;
/* The player settings. Valid when the event ID is
* AVRCP_EID_APP_SETTING_CHANGED
*/
struct {
/* Bitmask that describes which
* attributes are being reported
*/
AvrcpPlayerAttrIdMask attrMask;
/* The equalizer setting. */
AvrcpEqValue eq;
/* The repeat setting. */
AvrcpRepeatValue repeat;
/* The shuffle setting. */
AvrcpShuffleValue shuffle;
/* The scan setting. */
AvrcpScanValue scan;
#if AVRCP_NUM_PLAYER_SETTINGS > 4
/* Extended player setting. */
AvrcpExtValue extValue[AVRCP_NUM_PLAYER_SETTINGS-4];
#endif
} setting;
#if AVRCP_VERSION_1_3_ONLY == XA_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 /* AVRCP_VERSION_1_3_ONLY == XA_DISABLED */
} p;
} AvrcpAdvNotifyParms;
#if AVRCP_BROWSING_ENABLED || AVRCP_LIST_PLAYERS_ENABLED
/*---------------------------------------------------------------------------
* AvrcpBrowseReqParms structure
*
* Defines the callback parameters for the AVRCP_EVENT_BROWSE_REQ event.
*/
typedef struct _AvrcpBrowseReqParms {
uint8_t transId;
union {
/* Folder Item. Valid when "advOp" is AVRCP_OP_GET_FOLDER_ITEMS */
struct {
AvrcpScope 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 {
AvrcpScope 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;
} AvrcpBrowseReqParms;
#endif /* AVRCP_BROWSING_ENABLED || AVRCP_LIST_PLAYERS_ENABLED */
#if AVRCP_BROWSING_TARGET == XA_ENABLED
/*---------------------------------------------------------------------------
* AvrcpBrowseInfParms structure
*
* Defines the callback parameters for the AVRCP_EVENT_BROWSE_INFO event.
*/
typedef union _AvrcpBrowseInfParms {
/* The browsed player. Valid when "advOp" is AVRCP_OP_SET_BROWSED_PLAYER
*/
AvrcpMediaPlayerItem *brwsPlayer;
} AvrcpBrowseInfParms;
#endif /* AVRCP_BROWSING_TARGET == XA_ENABLED */
#if AVRCP_BROWSING_CONTROLLER == XA_ENABLED
/*---------------------------------------------------------------------------
* AvrcpBrowseRspParms structure
*
* Defines the callback parameters for the AVRCP_EVENT_BROWSE_RESPONSE.
*/
typedef union _AvrcpBrowseRspParms {
/* 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;
} AvrcpBrowseRspParms;
#endif /* AVRCP_BROWSING_CONTROLLER == XA_ENABLED */
/*---------------------------------------------------------------------------
* AvrcpAdvCallbackParms structure
*
* Defines the callback parameters for advanced AVRCP commands/responses.
*/
typedef union _AvrcpAdvCallbackParms {
/* Advanced PDU associated with the event. Valid during the
AVRCP_EVENT_ADV_TX_DONE event */
AvrcpAdvancedPdu *txPdu;
#if AVRCP_ADVANCED_TARGET == XA_ENABLED
#if AVRCP_VERSION_1_3_ONLY == XA_DISABLED
/* Contains the parameters of a request that was received from the
* controller. A response is required. This is valid during the
* AVRCP_EVENT_ADV_REQ event.
*/
AvrcpAdvReqParms req;
#endif /* AVRCP_VERSION_1_3_ONLY == XA_DISABLED */
/* Contains information about a command that altered the local settings.
* This is valid during the AVRCP_EVENT_ADV_INFO event. No response is
* required
*/
AvrcpAdvInfParms info;
#endif /* AVRCP_ADVANCED_TARGET == XA_ENABLED */
#if AVRCP_ADVANCED_CONTROLLER == XA_ENABLED
/* Contains the parameters received in response to an advanced control
* command. This is valid during the AVRCP_EVENT_ADV_RESPONSE event.
*/
AvrcpAdvRspParms rsp;
/* Contains the parameters of a notification or status of a registered
* event. This is valid during the AVRCP_EVENT_ADV_RESPONSE
* when "advOp" is set to AVRCP_OP_REGISTER_NOTIFY. Also valid
* during the AVRCP_EVENT_ADV_NOTIFY event.
*/
AvrcpAdvNotifyParms notify;
#endif /* AVRCP_ADVANCED_CONTROLLER == XA_ENABLED */
#if AVRCP_BROWSING_ENABLED || AVRCP_LIST_PLAYERS_ENABLED
/* Contains the parameters of a request that was received from the
* controller on the browsing channel. A response is required. This is
* valid during the AVRCP_EVENT_BROWSE_REQ event.
*/
AvrcpBrowseReqParms browseReq;
#endif /* AVRCP_BROWSING_ENABLED || AVRCP_LIST_PLAYERS_ENABLED */
#if AVRCP_BROWSING_TARGET == XA_ENABLED
/* Contains information about a command that altered the local settings.
* This is valid during the AVRCP_EVENT_BROWSE_INFO event. No response
* is required
*/
AvrcpBrowseInfParms browseInfo;
#endif /* AVRCP_BROWSING_TARGET == XA_ENABLED */
#if AVRCP_BROWSING_CONTROLLER == XA_ENABLED
/* Contains the parameters received in response to an browsing command.
* This is valid during the AVRCP_EVENT_BROWSE_RESPONSE event.
*/
AvrcpBrowseRspParms browseRsp;
#endif /* AVRCP_BROWSING_CONTROLLER == XA_ENABLED */
} AvrcpAdvCallbackParms;
/*---------------------------------------------------------------------------
* AvrcpCallbackParms structure
*
* Contains information for the application callback event.
*/
struct _AvrcpCallbackParms {
/* AVRCP event */
AvrcpEvent event;
/* AVRCP channel associated with the event */
AvrcpChannel *channel;
/* Status of the communications channel */
BtStatus status;
#if (AVRCP_ADVANCED_TARGET == XA_ENABLED) || (AVRCP_ADVANCED_CONTROLLER == XA_ENABLED)
/* AVRCP Advanced operation */
AvrcpOperation advOp;
/* AVRCP error code. Contains the AVRCP error code when an advanced
* operation fails. Valid if 'status' is not equal to BT_STATUS_SUCCESS,
* otherwise it is set to AVRCP_ERR_NO_ERROR. If 'status' is not equal
* to BT_STATUS_SUCCESS and 'errorCode' is set to AVRCP_ERR_NO_ERROR,
* then there was a transport error.
*/
AvrcpErrorCode errorCode;
#endif
/* Callback parameter object */
union {
/* Remote device associated with the event */
BtRemoteDevice *remDev;
/* Command frame associated with the event */
AvrcpCmdFrame *cmdFrame;
/* Response frame associated with the event */
AvrcpRspFrame *rspFrame;
/* Panel indication received during AVRCP_EVENT_PANEL_CNF */
struct {
/* Operation to which the remote target responded */
AvrcpPanelOperation operation;
/* The press state of the key in the command to which
* the target responded.
*/
int press;
/* Response from the target. May indicate
* an "extended" response code such as
* AVRCP_RESPONSE_SKIPPED or AVRCP_RESPONSE_TIMEOUT.
*/
AvrcpResponse response;
} panelCnf;
/* Panel indication received during AVRCP_EVENT_PANEL_PRESS,
* AVRCP_EVENT_PANEL_HOLD, or AVRCP_EVENT_PANEL_RELEASE.
*/
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.
*/
AvrcpPanelOperation operation;
} panelInd;
#if (AVRCP_ADVANCED_TARGET == XA_ENABLED) || (AVRCP_ADVANCED_CONTROLLER == XA_ENABLED)
/* Advanced AVRCP command/response parameters */
AvrcpAdvCallbackParms adv;
#endif
} p;
};
/*---------------------------------------------------------------------------
* AvrcpChannel structure
*
* Defines the RCP channel.
*/
struct _AvrcpChannel {
/* === Internal use only === */
/* AVRCP Role */
AvrcpRole role;
/* Application callback function */
AvrcpCallback callback;
/* AVCTP Channel */
AvctpChannel chnl;
int initiator;
#if AVRCP_BROWSING_ENABLED || AVRCP_LIST_PLAYERS_ENABLED
/* AVCTP Browing Channel */
AvctpChannel brwsChnl;
int disconnecting;
#endif
#if AVRCP_BROWSING_CONTROLLER == XA_ENABLED
uint8_t brwsCmdTransId;
uint8_t brwsCmdTransactions[AVRCP_MAX_NOTIFICATIONS+1];
#endif
/* Transaction IDs */
uint8_t cmdTransId;
uint8_t rspTransId;
uint8_t rspTransType;
uint8_t cmdTransactions[AVRCP_MAX_NOTIFICATIONS+1];
/* Connection Manager Handler */
CmgrHandler cmgrHandler;
/* SDP Variables */
uint8_t sdpStage;
SdpQueryToken sdpQueryToken;
uint8_t sdpSrchAttrib[AVRCP_NUM_SDP_SEARCH_ATTRIBUTES];
/* Profile version parsed from SDP */
AvrcpVersion avrcpVersion;
/* Features of currently connected remote device */
AvrcpFeatures remoteCtFeatures;
AvrcpFeatures remoteTgFeatures;
/* Panel Subunit */
struct {
struct {
uint8_t state;
EvmTimer timer;
AvrcpPanelOperation opQueue[AVRCP_SUBUNIT_OP_QUEUE_MAX];
uint8_t opRead, opWrite;
AvrcpCmdFrame cmd;
uint8_t data[7];
} Int;
struct {
uint8_t state;
EvmTimer timer;
AvrcpPanelOperation curOp;
AvrcpResponse curRsp;
AvrcpRspFrame rsp;
int rspInUse;
uint8_t data[7];
} Rsp;
/* Received Commands */
ListEntry rxCmdQueue;
} panel;
#if (AVRCP_ADVANCED_TARGET == XA_ENABLED) || (AVRCP_ADVANCED_CONTROLLER == XA_ENABLED)
/* Advanced Control */
struct {
#if AVRCP_ADVANCED_TARGET == XA_ENABLED
/* Supported Events */
AvrcpEventMask eventMask;
/* Supported player settings */
AvrcpPlayerAttrIdMask playerSettingsMask;
/* Supported media attributes */
AvrcpMediaAttrIdMask mediaAttrMask;
/* Current player settings */
AvrcpPlayerSetting playerSettings[AVRCP_NUM_PLAYER_SETTINGS];
/* Current player strings */
AvrcpPlayerStrings playerStrings[AVRCP_NUM_PLAYER_SETTINGS];
/* Current media info */
AvrcpMediaInfo mediaInfo[AVRCP_NUM_MEDIA_ATTRIBUTES];
/* Current status of the playing media */
AvrcpMediaPlayStatus playStatus;
/* Battery Status */
AvrcpBatteryStatus battStatus;
/* System Status */
AvrcpSystemStatus sysStatus;
/* Current track index */
AvrcpTrackStruct currentTrack;
/* Current character set */
AvrcpCharSets charSets;
uint16_t defaultCharSet;
/* This is part of the Current Registered Notifications Parameters.
* It contains the number of notification that have been sent.
*/
uint8_t numNotifications;
/* This is part of the Current Registered Notifications Parameters.
* It contains the time interval that should elapse between position
* reports.
*/
uint32_t playbackInterval;
/* This is part of the Current Registered Notifications Parameters.
* If the track was selected when the playback position was last
* reported, then this contains the last reported playback position
* within the current track, measured in milliseconds. Otherwise,
* it will contain AVRCP_NO_TRACK_CURRENTLY_SELECTED.
*/
uint32_t playbackReference;
#if AVRCP_VERSION_1_3_ONLY == XA_DISABLED
/* The absolute volume on the device. With volume commands, the
* Sink is the target and the Source is the controller
*/
uint8_t volume;
/* Media players selected on the target */
AvrcpMediaPlayerItem *addrPlayer;
uint16_t uidCounter;
#endif /* AVRCP_VERSION_1_3_ONLY == XA_DISABLED */
#if AVRCP_BROWSING_ENABLED || AVRCP_LIST_PLAYERS_ENABLED
AvrcpMediaPlayerItem *brwsPlayer;
/* System browsing structure */
int brwsRspInUse;
AvrcpRspFrame brwsRsp;
ListEntry txBrwsRspQueue;
AvrcpAdvancedPdu *txBrwsRspPdu;
#endif /* AVRCP_BROWSING_ENABLED || AVRCP_LIST_PLAYERS_ENABLED */
/* System response structure */
int rspInUse;
AvrcpRspFrame rsp;
/* Current Registered Notifications */
uint8_t rspNotifications[AVRCP_MAX_NOTIFICATIONS+1];
/* Received Command PDUs */
ListEntry rxCmdQueue;
AvrcpAdvancedPdu *rxCmdPdu;
int cmdFragment;
/* API Response PDU queue */
ListEntry txRspQueue;
AvrcpAdvancedPdu *txRspPdu;
/* System Response PDU */
AvrcpAdvancedPdu sysRspPdu;
uint8_t sysRspParms[AVRCP_ADVANCED_RESPONSE_SIZE];
uint16_t sysRspParmLen;
#if AVRCP_VERSION_1_3_ONLY == XA_DISABLED
/* Registered Media Players */
uint16_t regPlyrCount;
AvrcpMediaPlayerItem *regPlayers[AVRCP_MAX_MEDIA_PLAYERS];
#endif /* AVRCP_VERSION_1_3_ONLY == XA_DISABLED */
#endif /* AVRCP_ADVANCED_TARGET == XA_ENABLED */
#if AVRCP_ADVANCED_CONTROLLER == XA_ENABLED
/* System command structure */
int cmdInUse;
AvrcpCmdFrame cmd;
/* 0 = unknown, 1 = command, 2 = response */
uint8_t type;
/* API Command PDU queue */
ListEntry txCmdQueue;
AvrcpAdvancedPdu *txCmdPdu;
/* System PDU */
AvrcpAdvancedPdu sysCmdPdu;
uint8_t sysCmdParms[AVRCP_ADVANCED_CMD_SIZE];
/* Received Response PDU */
AvrcpAdvancedPdu rspPdu;
uint8_t rspParms[AVRCP_ADVANCED_RESPONSE_SIZE];
uint16_t rspParmLen;
int rspFragment;
#if AVRCP_BROWSING_CONTROLLER == XA_ENABLED
int brwsCmdInUse;
AvrcpCmdFrame brwsCmd;
ListEntry txBrwsCmdQueue;
AvrcpAdvancedPdu *txBrwsCmdPdu;
#endif /* AVRCP_BROWSING_CONTROLLER == XA_ENABLED */
#endif /* AVRCP_ADVANCED_CONTROLLER == XA_ENABLED */
} adv;
#endif /* (AVRCP_ADVANCED_TARGET == XA_ENABLED) ||( AVRCP_ADVANCED_CONTROLLER == XA_ENABLED) */
};
/****************************************************************************
*
* Function Reference
*
****************************************************************************/
/*---------------------------------------------------------------------------
* AVRCP_Init()
*
* Initialize the AVRCP SDK. This function should only be called
* once, normally at initialization time. The calling of this function
* can be specified in overide.h using the XA_LOAD_LIST macro
* (i.e. #define XA_LOAD_LIST XA_MODULE(AVRCP) ... ).
*
* Returns:
* TRUE - Initialization was successful
*
* FALSE - Initialization failed.
*/
int AVRCP_Init(void);
/*---------------------------------------------------------------------------
* AVRCP_Register()
*
* Registers an application callback to receive AVRCP events. This
* function must be called before any other AVRCP functions. Multiple
* channels may be registered for connections to multiple devices,
* however, the features registered with a role must be the same for
* each registration. The features and security parameters specified
* with the first registration of a role will be registered with the
* SDP entry, and the features of subsequent registrations for that
* role will be ignored.
*
* Parameters:
*
* chnl - Channel structure that receives or initiates connections.
*
* callback - Identifies the application function that will be called
* with AVRCP events.
*
* role - Role and features supported by the device. Each registration
* of a channel must specify the same role and features.
*
* SecParms - Requested security parameters. If 0, baseline security
* parameters are used (BSL_SECURITY_L1_IN | BSL_SECURITY_L1_OUT).
*
* Returns:
* BT_STATUS_SUCCESS - The AVRCP application callback Function was
* successfully registered.
*
* BT_STATUS_IN_USE - The specified channel is already in use.
*
* BT_STATUS_FAILED - The specified role differs from a previously
* registered role. Only one role can be defined per device.
*
* BT_STATUS_INVALID_PARM - The chnl or Callback parameter does not
* contain a valid pointer. (XA_ERROR_CHECK only).
*/
BtStatus AVRCP_RegisterSec(AvrcpChannel *chnl,
AvrcpCallback callback,
AvrcpRole role,
BtSecurityParms *SecParms);
/*---------------------------------------------------------------------------
* AVRCP_Register()
*
* Registers an application callback to receive AVRCP events. This
* function must be called before any other AVRCP functions. Multiple
* channels may be registered for connections to multiple devices,
* however, the features registered with a role must be the same for
* each registration. The features specified with the first
* registration of a role will be registered with the SDP entry, and the
* features of subsequent registrations for that role will be ignored.
*
* Parameters:
*
* chnl - Channel structure that receives or initiates connections.
*
* callback - Identifies the application function that will be called
* with AVRCP events.
*
* role - Role and features supported by the device. Each registration
* of a channel must specify the same role and features.
*
* Returns:
* BT_STATUS_SUCCESS - The AVRCP application callback Function was
* successfully registered.
*
* BT_STATUS_IN_USE - The specified channel is already in use.
*
* BT_STATUS_FAILED - The specified role differs from a previously
* registered role. Only one role can be defined per device.
*
* BT_STATUS_INVALID_PARM - The chnl or Callback parameter does not
* contain a valid pointer. (XA_ERROR_CHECK only).
*/
BtStatus AVRCP_Register(AvrcpChannel *chnl,
AvrcpCallback callback,
AvrcpRole role);
#define AVRCP_Register(X,Y,Z) AVRCP_RegisterSec(X, Y, Z, 0)
/*---------------------------------------------------------------------------
* AVRCP_Deregister()
*
* De-registers the AVRCP callback. After making this call
* successfully, the callback specified in AVRCP_Register will
* receive no further events.
*
* Parameters:
*
* chnl - Channel structure that receives or initiates connections.
*
* Returns:
* BT_STATUS_SUCCESS - The AVRCP callback was successfully
* deregistered.
*
* BT_STATUS_IN_USE - The specified channel is still in use.
*
* BT_STATUS_NOT_FOUND - An AVRCP callback was not previously
* registered.
*
* BT_STATUS_INVALID_PARM - The chnl parameter does not contain a valid
* pointer. (XA_ERROR_CHECK only).
*/
BtStatus AVRCP_Deregister(AvrcpChannel *chnl);
/*---------------------------------------------------------------------------
* AVRCP_Connect()
*
* Initiates a connection to a remote AVRCP device. This function is
* used to establish the lower layer connection (L2CAP), which allows
* sending messages.
*
* If the connection attempt is successful, the AVRCP_EVENT_CONNECT event
* will be received. If the connection attempt is unsuccessful, the
* AVRCP_EVENT_DISCONNECT event will be received.
*
* Parameters:
*
* chnl - Channel structure that receives or initiates connections.
*
* addr - The Bluetooth address of the device to which the connection
* should be made. If 0, the connection manager is used
* to select an appropriate device.
*
* Returns:
*
* BT_STATUS_PENDING - The connection process has been successfully
* started. When the connection process is complete, the
* application callback will receive either the AVRCP_EVENT_CONNECT
* or AVRCP_EVENT_DISCONNECT event.
*
* BT_STATUS_IN_USE - This channel is already connected or is in the
* process of connecting.
*
* BT_STATUS_INVALID_PARM - The chnl parameter does not contain a
* valid pointer. (XA_ERROR_CHECK only).
*
* BT_STATUS_NOT_FOUND - The specified device was not found in the device
* selector database. The device must be discovered, paired, or
* added manually using DS_AddDevice().
*
* Other - It is possible to receive other error codes, depending on the
* lower layer service in use (L2CAP or Management Entity).
*/
BtStatus AVRCP_Connect(AvrcpChannel *chnl, BD_ADDR *addr);
/*---------------------------------------------------------------------------
* AVRCP_ConnectRsp()
*
* Responds to a connection request from the remote AVRCP device. This
* function is used to establish the lower layer connection (L2CAP),
* which allows the sending of commands.
*
* Parameters:
*
* Chnl - A registered AVRCP channel.
*
* Accept - TRUE accepts the connect or FALSE rejects the connection.
*
* Returns:
*
* BT_STATUS_PENDING - The connection responses has been successfully
* sent. When the connection process is complete, the application
* callback will receive the AVRCP_EVENT_CONNECT event.
*
* BT_STATUS_BUSY - The connection is already connected.
*
* BT_STATUS_INVALID_PARM - The Chnl parameter does not contain a
* valid pointer. (XA_ERROR_CHECK only).
*
* BT_STATUS_NOT_FOUND - The specified device was not found in the device
* selector database. The device must be discovered, paired, or
* added manually using DS_AddDevice().
*
* Other - It is possible to receive other error codes, depending on the
* lower layer service in use (L2CAP or Management Entity).
*/
extern BtStatus AVCTP_ConnectRsp(AvctpChannel *Chnl, int Accept);
BtStatus AVRCP_ConnectRsp(AvrcpChannel *Chnl, int Accept);
#define AVRCP_ConnectRsp(c, a) AVCTP_ConnectRsp(&(c)->chnl, a)
/*---------------------------------------------------------------------------
* AVRCP_Disconnect()
*
* Terminates a connection with a remote AVRCP device. The lower layer
* connection (L2CAP) is disconnected.
*
* Parameters:
*
* chnl - A registered and open AVRCP channel.
*
* Returns:
*
* BT_STATUS_PENDING - The disconnect process has been successfully
* started. When the disconnect process is complete, the
* application callback will receive the AVRCP_EVENT_DISCONNECT
* event.
*
* BT_STATUS_INVALID_PARM - The chnl parameter does not contain a valid
* pointer. (XA_ERROR_CHECK only).
*
* BT_STATUS_NO_CONNECTION - No connection exists on the specified
* channel.
*
* BT_STATUS_NOT_FOUND - The specified device was not found in the device
* selector database. The device must be discovered, paired, or
* added manually using DS_AddDevice().
*
* It is possible to receive other error codes, depending on the lower
* layer service in use (L2CAP or Management Entity).
*/
BtStatus AVRCP_Disconnect(AvrcpChannel *chnl);
/*---------------------------------------------------------------------------
* AVRCP_SendCommand()
*
* Sends an RCP command on the specified channel. The channel must be
* connected, in the open state, and without another command
* outstanding. The "cmdFrame" parameter must be set with valid RCP
* command parameters.
*
* Parameters:
* chnl - A registered and open AVRCP channel.
*
* cmdFrame - An AvrcpCmdFrame structure initialized with valid
* RCP command parameters.
*
* Returns:
*
* BT_STATUS_PENDING - The send command operation has been started
* successfully. When the associated packet has been sent,
* the application callback will receive the AVRCP_EVENT_TX_DONE
* event.
*
* BT_STATUS_BUSY - A command is already outstanding.
*
* BT_STATUS_INVALID_PARM - The chnl parameter does not contain a valid
* pointer, or the channel is not registered as a controller
* (XA_ERROR_CHECK only).
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_SendCommand(AvrcpChannel *chnl, AvrcpCmdFrame *cmdFrame);
/*---------------------------------------------------------------------------
* AVRCP_SendResponse()
*
* Sends an RCP command on the specified channel. The channel must be
* connected and in the open state. The "cmdFrame" parameter must be
* set with valid RCP command parameters.
*
* Parameters:
* chnl - A registered and open AVRCP channel.
*
* rspFrame - An AvrcpRspFrame structure initialized with valid
* RCP response parameters. The 'transId' parameter should be set to
* match the transaction ID of a received command.
*
* Returns:
*
* BT_STATUS_PENDING - The send response operation has been started
* successfully. When the associated packet has been sent,
* the application callback will receive the AVRCP_EVENT_TX_DONE
* event.
*
* BT_STATUS_FAILED - There is no outstanding command to respond to.
*
* BT_STATUS_INVALID_PARM - The chnl parameter does not contain a valid
* pointer. (XA_ERROR_CHECK only).
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_SendResponse(AvrcpChannel *chnl, AvrcpRspFrame *rspFrame);
/*---------------------------------------------------------------------------
* AVRCP_GetRemoteDevice()
*
* Returns a pointer to the current remote device.
*
* Parameters:
*
* chnl - An AVRCP channel.
*
* Returns:
*
* A pointer to a remote device.
*/
BtRemoteDevice *AVRCP_RemoteDevice(AvrcpChannel *chnl);
#define AVRCP_RemoteDevice(c) AVCTP_RemoteDevice(&(c)->chnl)
/*---------------------------------------------------------------------------
* AVRCP_SetPanelKey()
*
* Indicates the state of the key corresponding to the specified
* panel subunit operation. Successive calls to this function will
* queue up key events to be delivered to the target.
*
* Parameters:
* chnl - A registered and open AVRCP channel.
*
* op - Panel operation code to send. If a previous call indicated a
* different "advOp" as pressed, calling this function with a new
* "advOp" will automatically release it.
*
* press - TRUE indicates the key corresponding to operation was pressed,
* FALSE indicates the key was released. For FALSE, if the "advOp"
* specified was not already pressed, this call signals a
* single press-and-release of the key.
*
* Returns:
* BT_STATUS_PENDING - The operation was started successfully.
* AVRCP_EVENT_PANEL_CNF message(s) will be sent corresponding
* to the target's responses to the press, release, or hold messages
* brought about by this command.
*
* BT_STATUS_NO_RESOURCES - The internal keystroke buffer is full.
*
* BT_STATUS_INVALID_PARM - The chnl parameter does not contain a valid
* pointer. (XA_ERROR_CHECK only).
*/
BtStatus AVRCP_SetPanelKey(AvrcpChannel *chnl,
AvrcpPanelOperation op,
int press);
/*---------------------------------------------------------------------------
* AVRCP_RejectPanelOperation()
*
* Rejects a panel operation received from the connected
* controller. This function must be called during
* notification of the AVRCP_EVENT_PANEL_IND event. Further notifications
* corresponding to the operation (AVRCP_PS_HOLD, AVRCP_PS_RELEASE)
* will not be received.
*
* If this function is not called during the AVRCP_EVENT_PANEL_IND
* the operation is automatically "ACCEPTED".
*
* Parameters:
* chnl - A registered and open AVRCP channel.
*
* rsp - Response code. Must be one of AVRCP_RESPONSE_NOT_IMPLEMENTED
* or AVRCP_RESPONSE_REJECTED. Note that REJECTED is only used
* when the operation is already reserved by another controller.
* This response code does NOT indicate the result of the
* operation itself (for example, a PLAY command when no media
* is available should be accepted, but simply have no effect).
*
* Returns:
* None
*/
void AVRCP_RejectPanelOperation(AvrcpChannel *chnl, AvrcpResponse rsp);
#define AVRCP_RejectPanelOperation(c,r) (c)->panel.Rsp.curRsp = (r)
#if AVRCP_BROWSING_ENABLED || AVRCP_LIST_PLAYERS_ENABLED
/*---------------------------------------------------------------------------
* AVRCP_GetBrowsingTxMtuSize()
*
* Returns the maximum amount of data that the remote device can receive
* on the browsing channel.
*
* Parameters:
* chnl - A registered and open AVRCP channel.
*
* Returns:
* Browsing channel MTU size.
*/
uint16_t AVRCP_GetBrowsingTxMtuSize(AvrcpChannel *chnl);
/*---------------------------------------------------------------------------
* AVRCP_BrowseConnect()
*
* Initiates a connection to a remote AVRCP device for browsing. This
* function is used to establish the lower layer connection (L2CAP),
* which allows sending browsing commands.
*
* If the connection attempt is successful, the
* AVRCP_EVENT_BROWSE_CONNECT event will be received. If the connection
* attempt is unsuccessful, the AVRCP_EVENT_BROWSE_DISCONNECT event will
* be received.
*
* Parameters:
*
* chnl - Channel structure that receives or initiates connections.
*
* Returns:
*
* BT_STATUS_PENDING - The connection process has been successfully
* started. When the connection process is complete, the
* application callback will receive either the AVRCP_EVENT_CONNECT
* or AVRCP_EVENT_DISCONNECT event.
*
* BT_STATUS_IN_USE - This channel is already connected or is in the
* process of connecting.
*
* BT_STATUS_INVALID_PARM - The chnl parameter does not contain a
* valid pointer. (XA_ERROR_CHECK only).
*
* BT_STATUS_NO_CONNECTION - The AVRCP control channel does not exist. A
* browsing channel cannot be established if the control channel is
* not already connected.
*
* Other - It is possible to receive other error codes, depending on the
* lower layer service in use (L2CAP or Management Entity).
*/
BtStatus AVRCP_BrowseConnect(AvrcpChannel *chnl);
/*---------------------------------------------------------------------------
* AVRCP_BrowseDisconnect()
*
* Terminates the browsing channel connection. The lower layer
* connection (L2CAP) is disconnected.
*
* Parameters:
*
* chnl - A registered and open AVRCP channel.
*
* Returns:
*
* BT_STATUS_PENDING - The disconnect process has been successfully
* started. When the disconnect process is complete, the
* application callback will receive the
* AVRCP_EVENT_BROWSE_DISCONNECT event.
*
* BT_STATUS_INVALID_PARM - The chnl parameter does not contain a valid
* pointer. (XA_ERROR_CHECK only).
*
* BT_STATUS_NO_CONNECTION - No connection exists on the specified
* channel.
*
* It is possible to receive other error codes, depending on the lower
* layer service in use (L2CAP or Management Entity).
*/
BtStatus AVRCP_BrowseDisconnect(AvrcpChannel *chnl);
#endif /* AVRCP_BROWSING_ENABLED || AVRCP_LIST_PLAYERS_ENABLED */
#if AVRCP_ADVANCED_TARGET == XA_ENABLED
/*---------------------------------------------------------------------------
* AVRCP_TgSetEventMask()
*
* Allows the application to specify which events will be supported
* by the current media player. When a flag is set in the event
* mask, then associated feature is supported.
* AVRCP_ENABLE_PLAY_STATUS_CHANGED and AVRCP_ENABLE_TRACK_CHANGED
* must both be set, and if not specified, will be added to the
* mask.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* mask - A bitmask with bits set to enable individual events.
*
* Returns:
* BT_STATUS_SUCCESS - The operation completed successfully.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl parameter is invalid.
*/
BtStatus AVRCP_TgSetEventMask(AvrcpChannel *chnl,
AvrcpEventMask mask);
/*---------------------------------------------------------------------------
* AVRCP_TgSetPlayerSettingsMask()
*
* Allows the application to specify which player settings are
* supported by the current media player. When a flag is set in
* the event mask, then associated setting is supported. This mask
* applies only to player settings defined by the AVRCP specification.
* Extensions to these player settings are possible, and are defined by
* the application.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* mask - A bitmask with bits set to enable individual player settings.
*
* Returns:
* BT_STATUS_SUCCESS - The operation completed successfully.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl parameter is invalid.
*/
BtStatus AVRCP_TgSetPlayerSettingsMask(AvrcpChannel *chnl,
AvrcpPlayerAttrIdMask mask);
/*---------------------------------------------------------------------------
* AVRCP_TgSetMediaAttributesMask()
*
* Allows the application to specify which media attributes are
* supported by the current media player. When a flag is set in
* the event mask, then associated setting is supported.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* mask - A bitmask with bits set to enable individual media attributes.
*
* Returns:
* BT_STATUS_SUCCESS - The operation completed successfully.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl parameter is invalid.
*/
BtStatus AVRCP_TgSetMediaAttributesMask(AvrcpChannel *chnl,
AvrcpMediaAttrIdMask mask);
/*---------------------------------------------------------------------------
* AVRCP_TgSetPlayerSetting()
*
* Allows the application to specify the local settings for the addressed
* player. The settings are updated internally and, when requested, will
* be sent to the controller.
*
* If the controller has registered for notification of a change in the
* player settings (AVRCP_EID_APP_SETTING_CHANGED), then calling this
* function will result in completion of that notification. The memory
* pointed to by the 'rsp' parameter will be used to send the completion
* event, and this function will return BT_STATUS_PENDING.
*
* If no request for notification has been registered by the controller,
* this function will return BT_STATUS_SUCCESS.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* rsp - A PDU for sending responses.
*
* setting - The new player setting.
*
* Returns:
* BT_STATUS_SUCCESS - The operation completed successfully without
* sending any data to the controller. Only an internal status was
* set. The memory pointed to by the "rsp" parameter can be re-used
* or freed.
*
* BT_STATUS_PENDING - The operation was started and data was queued
* to be sent to the controller. When the associated data has been
* sent, the application callback will receive the
* AVRCP_EVENT_ADV_TX_DONE event. The callback parameter
* 'p.advTxPdu' will point to the memory passed into the 'rsp'
* parameter.
*
* BT_STATUS_IN_USE - The 'rsp' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* 'chnl', 'rsp', or 'setting' parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_TgSetPlayerSetting(AvrcpChannel *chnl,
AvrcpAdvancedPdu *rsp,
AvrcpPlayerSetting *setting);
/*---------------------------------------------------------------------------
* AVRCP_TgSetPlayerStrings()
*
* Allows the application to specify the local strings for the addressed
* player. The strings are updated internally and, when requested, will
* be sent to the controller.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* attrId - The player setting attribute to which the strings apply.
*
* strings - A set of strings in the IANA format specified in the call to
* AVRCP_TgSetCharSet(). If AVRCP_TgSetCharSet() has never been
* called, then the default format is UTF-8.
*
* Returns:
* BT_STATUS_SUCCESS - The operation completed successfully.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl or strings parameter is invalid.
*/
BtStatus AVRCP_TgSetPlayerStrings(AvrcpChannel *chnl,
AvrcpPlayerAttrId attrId,
AvrcpPlayerStrings *strings);
/*---------------------------------------------------------------------------
* AVRCP_TgSetMediaInfo()
*
* Allows the application to specify the local media information for the
* current track. The media information is updated internally and, when
* requested, will be sent to the controller.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* numElements - The number of elements in the info parameter.
*
* info - An array of structures containing the media information for the
* current track (see AvrcpMediaInfo).
*
* Returns:
* BT_STATUS_SUCCESS - The operation completed successfully.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl or info parameter is invalid.
*/
BtStatus AVRCP_TgSetMediaInfo(AvrcpChannel *chnl,
uint8_t numElements,
AvrcpMediaInfo *info);
/*---------------------------------------------------------------------------
* AVRCP_TgSetPlayStatus()
*
* Allows the application to specify the media status of the local
* addressed player. The status is updated internally and, when
* requested, will be sent to the controller.
*
* If the controller has registered for notification of a change in the
* media play status (AVRCP_EID_MEDIA_STATUS_CHANGED), then calling this
* function will result in completion of that notification. The memory
* pointed to by the 'rsp' parameter will be used to send the completion
* event, and this function will return BT_STATUS_PENDING.
*
* If no request for notification has been registered by the controller,
* this function will return BT_STATUS_SUCCESS.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* rsp - A PDU for sending responses.
*
* mediaStatus - The current play status of the media.
*
* Returns:
* BT_STATUS_SUCCESS - The operation completed successfully without
* sending any data to the controller. Only an internal status was
* set. The memory pointed to by the "rsp" parameter can be re-used
* or freed.
*
* BT_STATUS_PENDING - The operation was started and data was queued
* to be sent to the controller. When the associated data has been
* sent, the application callback will receive the
* AVRCP_EVENT_ADV_TX_DONE event. The callback parameter
* 'p.advTxPdu' will point to the memory passed into the 'rsp'
* parameter.
*
* BT_STATUS_IN_USE - The 'rsp' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* 'chnl' or 'rsp' parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_TgSetPlayStatus(AvrcpChannel *chnl,
AvrcpAdvancedPdu *rsp,
AvrcpMediaStatus mediaStatus);
/*---------------------------------------------------------------------------
* AVRCP_TgSetPlayPosition()
*
* Allows the application to specify the local addressed player's media
* play position and length. The status is updated internally and, when
* requested, will be sent to the controller.
*
* If the controller has registered for notification of a change in the
* play position (AVRCP_EID_PLAY_POS_CHANGED), then calling this function
* will result in completion of that notification. The memory pointed to
* by the 'rsp' parameter will be used to send the completion event, and
* this function will return BT_STATUS_PENDING.
*
* If no request for notification has been registered by the controller,
* this function will return BT_STATUS_SUCCESS.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* rsp - A PDU for sending responses.
*
* position - The current position of the media in milliseconds.
*
* length - The total length of the media in milliseconds.
*
* Returns:
* BT_STATUS_SUCCESS - The operation completed successfully without
* sending any data to the controller. Only an internal status was
* set. The memory pointed to by the "rsp" parameter can be re-used
* or freed.
*
* BT_STATUS_PENDING - The operation was started and data was queued
* to be sent to the controller. When the associated data has been
* sent, the application callback will receive the
* AVRCP_EVENT_ADV_TX_DONE event. The callback parameter
* 'p.advTxPdu' will point to the memory passed into the 'rsp'
* parameter.
*
* BT_STATUS_IN_USE - The 'rsp' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* 'chnl' or 'rsp' parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_TgSetPlayPosition(AvrcpChannel *chnl,
AvrcpAdvancedPdu *rsp,
uint32_t position,
uint32_t length);
/*---------------------------------------------------------------------------
* AVRCP_TgSetBattStatus()
*
* Allows the application to specify the current Battery status of the
* local device. The status is updated internally and, when requested,
* will be sent to the controller.
*
* If the controller has registered for notification of a change in the
* battery status (AVRCP_EID_BATT_STATUS_CHANGED), then calling this
* function will result in completion of that notification. The memory
* pointed to by the 'rsp' parameter will be used to send the completion
* event, and this function will return BT_STATUS_PENDING.
*
* If no request for notification has been registered by the controller,
* this function will return BT_STATUS_SUCCESS.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* rsp - A PDU for sending responses.
*
* battStatus - The current battery status.
*
* Returns:
* BT_STATUS_SUCCESS - The operation completed successfully without
* sending any data to the controller. Only an internal status was
* set. The memory pointed to by the "rsp" parameter can be re-used
* or freed.
*
* BT_STATUS_PENDING - The operation was started and data was queued
* to be sent to the controller. When the associated data has been
* sent, the application callback will receive the
* AVRCP_EVENT_ADV_TX_DONE event. The callback parameter
* 'p.advTxPdu' will point to the memory passed into the 'rsp'
* parameter.
*
* BT_STATUS_IN_USE - The 'rsp' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* 'chnl' or 'rsp' parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_TgSetBattStatus(AvrcpChannel *chnl,
AvrcpAdvancedPdu *rsp,
AvrcpBatteryStatus battStatus);
/*---------------------------------------------------------------------------
* AVRCP_TgSetSystemStatus()
*
* Allows the application to specify the current System status of the
* local device. The status is updated internally and, when requested,
* will be sent to the controller.
*
* If the controller has registered for notification of a change in the
* system status (AVRCP_EID_SYS_STATUS_CHANGED), then calling this
* function will result in completion of that notification. The memory
* pointed to by the 'rsp' parameter will be used to send the completion
* event, and this function will return BT_STATUS_PENDING.
*
* If no request for notification has been registered by the controller,
* this function will return BT_STATUS_SUCCESS.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* rsp - A PDU for sending responses.
*
* sysStatus - The current system status.
*
* Returns:
* BT_STATUS_SUCCESS - The operation completed successfully without
* sending any data to the controller. Only an internal status was
* set. The memory pointed to by the "rsp" parameter can be re-used
* or freed.
*
* BT_STATUS_PENDING - The operation was started and data was queued
* to be sent to the controller. When the associated data has been
* sent, the application callback will receive the
* AVRCP_EVENT_ADV_TX_DONE event. The callback parameter
* 'p.advTxPdu' will point to the memory passed into the 'rsp'
* parameter.
*
* BT_STATUS_IN_USE - The 'rsp' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* 'chnl' or 'rsp' parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_TgSetSystemStatus(AvrcpChannel *chnl,
AvrcpAdvancedPdu *rsp,
AvrcpSystemStatus sysStatus);
/*---------------------------------------------------------------------------
* AVRCP_TgSetTrack()
*
* Allows the application to specify the current track of the addressed
* player. The status is updated internally and, when requested, will be
* sent to the controller.
*
* If the controller has registered for notification of a change in the
* current track (AVRCP_EID_TRACK_CHANGED), then calling this function
* will result in completion of that notification. The memory pointed to
* by the 'rsp' parameter will be used to send the completion event, and
* this function will return BT_STATUS_PENDING.
*
* If no request for notification has been registered by the controller,
* this function will return BT_STATUS_SUCCESS.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* rsp - A PDU for sending responses.
*
* trackP - A pointer to a 64-bit track index structure. As of AVRCP
* specification 1.4, the only valid values for the track index are 0
* (track selected) and AVRCP_NO_TRACK_CURRENTLY_SELECTED, unless
* browsing is supported. If browsing is supported, the UID of a
* media element in the Now Playing folder should be used.
*
* Returns:
* BT_STATUS_SUCCESS - The operation completed successfully without
* sending any data to the controller. Only an internal status was
* set. The memory pointed to by the "rsp" parameter can be re-used
* or freed.
*
* BT_STATUS_PENDING - The operation was started and data was queued
* to be sent to the controller. When the associated data has been
* sent, the application callback will receive the
* AVRCP_EVENT_ADV_TX_DONE event. The callback parameter
* 'p.advTxPdu' will point to the memory passed into the 'rsp'
* parameter.
*
* BT_STATUS_IN_USE - The 'rsp' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* 'chnl' or 'rsp' parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_TgSetTrack(AvrcpChannel *chnl,
AvrcpAdvancedPdu *rsp,
AvrcpTrackStruct *trackP);
/*---------------------------------------------------------------------------
* AVRCP_TgSetAbsoluteVolume()
*
* Allows the application to specify the current volume of the local
* device. This function should only be called by the rendering device
* (Sink), which means that the local device may need to be registered as
* both a Category 2 Target and a Category 1 Controller. The status is
* updated internally and, when requested, will be sent to the controller
* (Source).
*
* If the controller has registered for notification of a change in the
* volume (AVRCP_EID_VOLUME_CHANGED), then calling this function will
* result in completion of that notification. The memory pointed to by
* the 'rsp' parameter will be used to send the completion event, and
* this function will return BT_STATUS_PENDING.
*
* If no request for notification has been registered by the controller,
* this function will return BT_STATUS_SUCCESS.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* rsp - A PDU for sending responses.
*
* volume - The absolute volume of the Sink (0 - 0x7F).
*
* Returns:
* BT_STATUS_SUCCESS - The operation completed successfully.
*
* BT_STATUS_PENDING - The send response operation has been started
* successfully. When the associated packet has been sent,
* the application callback will receive the AVCTP_EVENT_TX_DONE
* event.
*
* BT_STATUS_IN_USE - The 'rsp' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_TgSetAbsoluteVolume(AvrcpChannel *chnl, AvrcpAdvancedPdu *rsp, uint8_t volume);
/*---------------------------------------------------------------------------
* AVRCP_TgSignalTrackStart()
*
* Allows the application to signal the start of a new track on the local
* addressed player. The status is updated internally and, when
* requested, will be sent to the controller.
*
* If the controller has registered for notification of a track start
* (AVRCP_EID_TRACK_START), then calling this function will result in
* completion of that notification. The memory pointed to by the 'rsp'
* parameter will be used to send the completion event, and this function
* will return BT_STATUS_PENDING.
*
* If no request for notification has been registered by the controller,
* this function will return BT_STATUS_SUCCESS.
*
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* rsp - A PDU for sending responses.
*
* Returns:
* BT_STATUS_SUCCESS - The operation completed successfully without
* sending any data to the controller. Only an internal status was
* set. The memory pointed to by the "rsp" parameter can be re-used
* or freed.
*
* BT_STATUS_PENDING - The operation was started and data was queued
* to be sent to the controller. When the associated data has been
* sent, the application callback will receive the
* AVRCP_EVENT_ADV_TX_DONE event. The callback parameter
* 'p.advTxPdu' will point to the memory passed into the 'rsp'
* parameter.
*
* BT_STATUS_IN_USE - The 'rsp' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* 'chnl' or 'rsp' parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_TgSignalTrackStart(AvrcpChannel *chnl, AvrcpAdvancedPdu *rsp);
/*---------------------------------------------------------------------------
* AVRCP_TgSignalTrackEnd()
*
* Allows the application to signal the end of a track on the local
* addressed player. The status is updated internally and, when
* requested, will be sent to the controller.
*
* If the controller has registered for notification of a track end
* (AVRCP_EID_TRACK_END), then calling this function will result in
* completion of that notification. The memory pointed to by the 'rsp'
* parameter will be used to send the completion event, and this function
* will return BT_STATUS_PENDING.
*
* If no request for notification has been registered by the controller,
* this function will return BT_STATUS_SUCCESS.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* rsp - A PDU for sending responses.
*
* Returns:
* BT_STATUS_SUCCESS - The operation completed successfully without
* sending any data to the controller. Only an internal status was
* set. The memory pointed to by the "rsp" parameter can be re-used
* or freed.
*
* BT_STATUS_PENDING - The operation was started and data was queued
* to be sent to the controller. When the associated data has been
* sent, the application callback will receive the
* AVRCP_EVENT_ADV_TX_DONE event. The callback parameter
* 'p.advTxPdu' will point to the memory passed into the 'rsp'
* parameter.
*
* BT_STATUS_IN_USE - The 'rsp' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* 'chnl' or 'rsp' parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_TgSignalTrackEnd(AvrcpChannel *chnl, AvrcpAdvancedPdu *rsp);
/*---------------------------------------------------------------------------
* AVRCP_TgSetCurrentCharSet()
*
* Allows the application to specify the default IANA character set for
* the local device. This number must match a character set received
* during the AVRCP_EVENT_ADV_INFO event when 'p.advOp' is set to
* AVRCP_OP_INFORM_DISP_CHAR_SET, or it must be set to UTF-8 (default).
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* charSet - The IANA character set that will be used.
*
* Returns:
* BT_STATUS_SUCCESS - The operation completed successfully.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* 'chnl' parameter is invalid.
*/
BtStatus AVRCP_TgSetCurrentCharSet(AvrcpChannel *chnl, uint16_t charSet);
/*---------------------------------------------------------------------------
* AVRCP_TgGetCurrentCharSet()
*
* Retrieves the character set currently selected for display by the
* controller.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* Returns:
* A 16 bit value containing the current IANA character set.
*/
uint16_t AVRCP_TgGetCurrentCharSet(AvrcpChannel *chnl);
/*---------------------------------------------------------------------------
* AVRCP_TgInitMediaPlayerItem()
*
* Initialized an AvrcpMediaPlayerItem structure. Before setting fields
* an the structure, this function should be called to initialize all
* fields to 0.
*
* Parameters:
* player - An initialized media player structure.
*
* Returns:
* void
*/
void AVRCP_TgInitMediaPlayerItem(AvrcpMediaPlayerItem *player);
#define AVRCP_TgInitMediaPlayerItem(p) (OS_MemSet((uint8_t*)p, 0, sizeof(AvrcpMediaPlayerItem)))
/*---------------------------------------------------------------------------
* AVRCP_TgRegisterPlayer()
*
* Allows the application to register a player on the Target. Before
* registering a player, AVRCP_TgInitMediaPlayerItem() should be called,
* and then any information about the player should be initialized in the
* structure.
*
* If the controller has registered for notification of a change in the
* available players (AVRCP_EID_AVAILABLE_PLAYERS_CHANGED), then calling
* will result in completion of that notification. The memory pointed to
* by the 'rsp' parameter will be used to send the completion event, and
* this function will return BT_STATUS_PENDING.
*
* If no request for notification has been registered by the controller,
* this function will return BT_STATUS_SUCCESS.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* rsp - A PDU for sending responses.
*
* player - An initialized media player structure.
*
* Returns:
* BT_STATUS_SUCCESS - The operation completed successfully without
* sending any data to the controller. Only an internal status was
* set. The memory pointed to by the "rsp" parameter can be re-used
* or freed.
*
* BT_STATUS_PENDING - The operation was started and data was queued
* to be sent to the controller. When the associated data has been
* sent, the application callback will receive the
* AVRCP_EVENT_ADV_TX_DONE event. The callback parameter
* 'p.advTxPdu' will point to the memory passed into the 'rsp'
* parameter.
*
* BT_STATUS_FAILED - Not enough room to register the new player (see
* AVRCP_MAX_MEDIA_PLAYERS).
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* 'chnl', 'rsp' or 'player' parameter is invalid.
*
* BT_STATUS_IN_USE - The player is already registered.
*/
BtStatus AVRCP_TgRegisterPlayer(AvrcpChannel *chnl,
AvrcpAdvancedPdu *rsp,
AvrcpMediaPlayerItem *player);
/*---------------------------------------------------------------------------
* AVRCP_TgDeregisterPlayer()
*
* Allows the application to deregister a player on the Target.
*
* If the controller has registered for notification of a change in the
* available players (AVRCP_EID_AVAILABLE_PLAYERS_CHANGED), then calling
* this function will result in completion of that notification. The
* memory pointed to by the 'rsp' parameter will be used to send the
* completion event, and this function will return BT_STATUS_PENDING.
*
* If no request for notification has been registered by the controller,
* this function will return BT_STATUS_SUCCESS.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* rsp - A PDU for sending responses.
*
* player - A data structure describing the media player that is being
* deregistered.
*
* Returns:
* BT_STATUS_SUCCESS - The operation completed successfully without
* sending any data to the controller. Only an internal status was
* set. The memory pointed to by the "rsp" parameter can be re-used
* or freed.
*
* BT_STATUS_PENDING - The operation was started and data was queued
* to be sent to the controller. When the associated data has been
* sent, the application callback will receive the
* AVRCP_EVENT_ADV_TX_DONE event. The callback parameter
* 'p.advTxPdu' will point to the memory passed into the 'rsp'
* parameter.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* 'chnl', 'rsp', or 'player' parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The player is not registered.
*/
BtStatus AVRCP_TgDeregisterPlayer(AvrcpChannel *chnl,
AvrcpAdvancedPdu *rsp,
AvrcpMediaPlayerItem *player);
/*---------------------------------------------------------------------------
* AVRCP_TgSetAddressedPlayer()
*
* Allows the application to specify the locally addressed media player.
*
* If the controller has registered for notification when the addressed
* player changes (AVRCP_EID_ADDRESSED_PLAYER_CHANGED), then calling
* this function will result in completion of that notification. The
* memory pointed to by the 'rsp' parameter will be used to send the
* completion event, and this function will return BT_STATUS_PENDING.
*
* If no request for notification has been registered by the controller,
* this function will return BT_STATUS_SUCCESS.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* rsp - A PDU for sending responses.
*
* player - A data structure describing the media player that will
* receive AVRCP commands.
*
* Returns:
* BT_STATUS_SUCCESS - The operation completed successfully without
* sending any data to the controller. Only an internal status was
* set. The memory pointed to by the "rsp" parameter can be re-used
* or freed.
*
* BT_STATUS_PENDING - The operation was started and data was queued
* to be sent to the controller. When the associated data has been
* sent, the application callback will receive the
* AVRCP_EVENT_ADV_TX_DONE event. The callback parameter
* 'p.advTxPdu' will point to the memory passed into the 'rsp'
* parameter.
*
* BT_STATUS_IN_USE - The 'rsp' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* 'chnl', 'rsp', or 'player' parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_TgSetAddressedPlayer(AvrcpChannel *chnl,
AvrcpAdvancedPdu *rsp,
AvrcpMediaPlayerItem *player);
/*---------------------------------------------------------------------------
* AVRCP_TgNowPlayingChanged()
*
* Allows the application to indicate a change in the "Now Playing"
* folder.
*
* If the controller has registered for notification of a change in the
* "Now Playing" folder (AVRCP_EID_NOW_PLAYING_CONTENT_CHANGED), then
* calling this function will result in completion of that notification.
* The memory pointed to by the 'rsp' parameter will be used to send the
* completion event, and this function will return BT_STATUS_PENDING.
*
* If no request for notification has been registered by the controller,
* this function will return BT_STATUS_SUCCESS.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* rsp - A PDU for sending responses.
*
* player - A data structure describing the media player whose now player
* list has changed.
*
* Returns:
* BT_STATUS_SUCCESS - The operation completed successfully without
* sending any data to the controller. Only an internal status was
* set. The memory pointed to by the "rsp" parameter can be re-used
* or freed.
*
* BT_STATUS_PENDING - The operation was started and data was queued
* to be sent to the controller. When the associated data has been
* sent, the application callback will receive the
* AVRCP_EVENT_ADV_TX_DONE event. The callback parameter
* 'p.advTxPdu' will point to the memory passed into the 'rsp'
* parameter.
*
* BT_STATUS_IN_USE - The 'rsp' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* 'chnl', 'rsp', or 'player' parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_TgNowPlayingChanged(AvrcpChannel *chnl,
AvrcpAdvancedPdu *rsp,
AvrcpMediaPlayerItem *player);
/*---------------------------------------------------------------------------
* AVRCP_TgUidsChanged()
*
* Allows the application to indicate a change in the UIDs of the local
* virtual file system (media library).
*
* If the controller has registered for notification of a change in the
* UIDs (AVRCP_EID_UIDS_CHANGED), then calling this function will result
* in completion of that notification. The memory pointed to by the 'rsp'
* parameter will be used to send the completion event, and this function
* will return BT_STATUS_PENDING.
*
* If no request for notification has been registered by the controller,
* this function will return BT_STATUS_SUCCESS.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* rsp - A PDU for sending responses.
*
* Returns:
* BT_STATUS_SUCCESS - The operation completed successfully without
* sending any data to the controller. Only an internal status was
* set. The memory pointed to by the "rsp" parameter can be re-used
* or freed.
*
* BT_STATUS_PENDING - The operation was started and data was queued
* to be sent to the controller. When the associated data has been
* sent, the application callback will receive the
* AVRCP_EVENT_ADV_TX_DONE event. The callback parameter
* 'p.advTxPdu' will point to the memory passed into the 'rsp'
* parameter.
*
* BT_STATUS_IN_USE - The 'rsp' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* 'chnl' or 'rsp' parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_TgUidsChanged(AvrcpChannel *chnl,
AvrcpAdvancedPdu *rsp);
/*---------------------------------------------------------------------------
* AVRCP_TgCreatePlayItemRsp()
*
* Allows the application to create a response to a AVRCP_EVENT_ADV_REQ
* event where "advOp" is set to AVRCP_OP_PLAY_ITEM. Once a response is
* created, it can be sent by calling AVRCP_TgSendAdvResponse().
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* rsp - A PDU for creating the responses.
*
* error - Error code of the response. If successful, set to
* AVRCP_ERR_NO_ERROR.
*
* Returns:
* BT_STATUS_SUCCESS - The response was created successfully.
*
* BT_STATUS_INVALID_PARM - The 'chnl' or 'rsp' parameter is invalid.
*/
BtStatus AVRCP_TgCreatePlayItemRsp(AvrcpChannel *chnl,
AvrcpAdvancedPdu *rsp,
AvrcpErrorCode error);
/*---------------------------------------------------------------------------
* AVRCP_TgCreateAddToNowPlayingRsp()
*
* Allows the application to create a response to a AVRCP_EVENT_ADV_REQ
* event where "advOp" is set to AVRCP_OP_ADD_TO_NOW_PLAYING. Once a
* response is created, it can be sent by calling
* AVRCP_TgSendAdvResponse().
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* rsp - A PDU for creating the responses.
*
* error - Error code of the response. If successful, set to
* AVRCP_ERR_NO_ERROR.
*
* Returns:
* BT_STATUS_SUCCESS - The response was created successfully.
*
* BT_STATUS_INVALID_PARM - The 'chnl' or 'rsp' parameter is invalid.
*/
BtStatus AVRCP_TgCreateAddToNowPlayingRsp(AvrcpChannel *chnl,
AvrcpAdvancedPdu *rsp,
AvrcpErrorCode error);
/*--------------------------------------------------------------------------
* AVRCP_TgSendAdvResponse()
*
* Allows the application to send a response to the AVRCP_EVENT_ADV_REQ
* event. The 'rsp' parameter must be properly formatted according to
* the AVRCP specification. Helper functions are available for creating
* a response to most advanced commands.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* rsp - A PDU for sending responses.
*
* transId - The transaction ID received in the callback parameters of
* the AVRCP_EVENT_ADV_REQ event (p.adv.req.transId).
*
* Returns:
*
* BT_STATUS_PENDING - The operation was started and data was queued
* to be sent to the controller. When the associated data has been
* sent, the application callback will receive the
* AVRCP_EVENT_ADV_TX_DONE event. The callback parameter
* 'p.advTxPdu' will point to the memory passed into the 'rsp'
* parameter.
*
* BT_STATUS_IN_USE - The 'rsp' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_TgSendAdvResponse(AvrcpChannel *chnl,
AvrcpAdvancedPdu *rsp,
uint8_t transId);
#if AVRCP_BROWSING_TARGET == XA_ENABLED
/*---------------------------------------------------------------------------
* AVRCP_TgSendBrowsingResponse()
*
* Sends a browsing response on the specified channel. The channel must
* be connected and in the open state. Called in response to a
* AVRCP_EVENT_BROWSE_REQ event. The 'rsp' parameter must be properly
* formatted according to the AVRCP specification. Helper functions are
* available for creating a response to most browsing commands.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* rsp - A PDU for sending responses.
*
* transId - The transaction ID of the request.
*
* Returns:
* BT_STATUS_PENDING - The operation was started and data was queued
* to be sent to the controller. When the associated data has been
* sent, the application callback will receive the
* AVRCP_EVENT_BROWSE_TX_DONE event. The callback parameter
* 'p.advTxPdu' will point to the memory passed into the 'rsp'
* parameter.
*
* BT_STATUS_IN_USE - The 'rsp' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_TgSendBrowsingResponse(AvrcpChannel *chnl,
AvrcpAdvancedPdu *rsp,
uint8_t transId);
/*---------------------------------------------------------------------------
* AVRCP_TgGetBrowsedPlayer()
*
* Returns the current browsed player, or 0 if not browsed player has
* been set.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* Returns:
* The current browsed player or 0.
*/
AvrcpMediaPlayerItem * AVRCP_TgGetBrowsedPlayer(AvrcpChannel *chnl);
/*---------------------------------------------------------------------------
* AVRCP_TgSetUidCounter()
*
* Set the current value of the UID counter.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* uidCounter - The new UID counter.
*
* Returns:
* BT_STATUS_SUCCESS - The response was created successfully.
*
* BT_STATUS_INVALID_PARM - The 'chnl' or 'rsp' parameter is invalid.
*/
BtStatus AVRCP_TgSetUidCounter(AvrcpChannel *chnl, uint16_t uidCounter);
/*---------------------------------------------------------------------------
* AVRCP_TgGetUidCounter()
*
* Get the current value of the UID counter.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* Returns:
* The current UID counter.
*/
uint16_t AVRCP_TgGetUidCounter(AvrcpChannel *chnl);
/*---------------------------------------------------------------------------
* AVRCP_TgCreateItemAttrRsp()
*
* Create a response to an item attributes request. This function will
* create a properly formatted response PDU for use with
* AVRCP_TgSendBrowsingResponse.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* pdu - A PDU for creating the responses.
*
* pduLen - The maximum size of the PDU.
*
* error - Error code of the response. If successful, set to
* AVRCP_ERR_NO_ERROR.
*
* numAttrs - The number of attributes in the response.
*
* attributes - The list of attributes.
*
* Returns:
* BT_STATUS_SUCCESS - The response was created successfully.
*
* BT_STATUS_INVALID_PARM - The 'chnl' or 'rsp' parameter is invalid.
*/
BtStatus AVRCP_TgCreateItemAttrRsp(AvrcpChannel *chnl,
AvrcpAdvancedPdu *pdu,
uint16_t pduLen,
AvrcpErrorCode errCode,
uint8_t numAttrs,
AvrcpMediaAttribute *attributes);
/*---------------------------------------------------------------------------
* AVRCP_TgCreateChangePathRsp()
*
* Create a response to a change directory request. This function will
* create a properly formatted response PDU for use with
* AVRCP_TgSendBrowsingResponse.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* pdu - A PDU for creating the responses.
*
* pduLen - The maximum size of the PDU.
*
* error - Error code of the response. If successful, set to
* AVRCP_ERR_NO_ERROR.
*
* numItems - The number of items in the current directory.
*
* Returns:
* BT_STATUS_SUCCESS - The response was created successfully.
*
* BT_STATUS_INVALID_PARM - The 'chnl' or 'rsp' parameter is invalid.
*/
BtStatus AVRCP_TgCreateChangePathRsp(AvrcpChannel *chnl,
AvrcpAdvancedPdu *pdu,
uint16_t pduLen,
AvrcpErrorCode errCode,
uint32_t numItems);
/*---------------------------------------------------------------------------
* AVRCP_TgCreateSearchRsp()
*
* Create a response to a search request. This function will create a
* properly formatted response PDU for use with
* AVRCP_TgSendBrowsingResponse.
*
* Parameters:
* chnl - A registered AVRCP channel.
*
* pdu - A PDU for creating the responses.
*
* pduLen - The maximum size of the PDU.
*
* error - Error code of the response. If successful, set to
* AVRCP_ERR_NO_ERROR.
*
* numItems - The number of items in the search response.
*
* Returns:
* BT_STATUS_SUCCESS - The response was created successfully.
*
* BT_STATUS_INVALID_PARM - The 'chnl' or 'rsp' parameter is invalid.
*/
BtStatus AVRCP_TgCreateSearchRsp(AvrcpChannel *chnl,
AvrcpAdvancedPdu *pdu,
uint16_t pduLen,
AvrcpErrorCode errCode,
uint32_t numItems);
/*---------------------------------------------------------------------------
* AVRCP_TgCreateFolderItemsRsp()
*
* Create a response to a folder item list request. This function will
* create a properly formatted response PDU for use with
* AVRCP_TgSendBrowsingResponse.
*
* Parameters: chnl - A registered AVRCP channel.
*
* pdu - A PDU for creating the responses.
*
* pduLen - The maximum size of the PDU.
*
* error - Error code of the response. If successful, set to
* AVRCP_ERR_NO_ERROR.
*
* numItems - The number of items in the response.
*
* items - The list of items in the response.
*
* Returns:
* BT_STATUS_SUCCESS - The response was created successfully.
*
* BT_STATUS_INVALID_PARM - The 'chnl' or 'rsp' parameter is invalid.
*/
uint16_t AVRCP_TgCreateFolderItemsRsp(AvrcpChannel *chnl,
AvrcpAdvancedPdu *pdu,
uint16_t pduLen,
AvrcpErrorCode errCode,
uint16_t numItems,
AvrcpMediaItem *items);
#endif /* AVRCP_BROWSING_TARGET == XA_ENABLED */
#endif /* AVRCP_ADVANCED_TARGET == XA_ENABLED */
#if AVRCP_ADVANCED_CONTROLLER == XA_ENABLED
/*---------------------------------------------------------------------------
* AVRCP_CtGetCapabilities()
*
* Get the capabilities of the target device. The capabilities
* supported by the target device may change. If the target device
* application changes to support less functionality, then errors
* will begin to be received for capabilities that were previously
* supported. If this occurs, AVRCP_CtGetCapabilities() can be called
* again to get the most current capabilities. AVRCP_CtGetCapabilities()
* may be occasionally called to poll for capability changes.
*
* When the final response event is received (AVRCP_EVENT_ADV_RESPONSE),
* the 'advOp' field in the callback parameters will set to
* AVRCP_OP_GET_CAPABILITIES.
*
* Parameters:
* chnl - A registered and open AVRCP channel.
*
* cmd - A PDU for sending commands.
*
* capabilityId - The specific capability that is being requested.
*
* Returns:
* BT_STATUS_PENDING - The operation has been started successfully. When
* the associated packet has been sent, the application callback will
* receive the AVRCP_EVENT_ADV_TX_DONE event. When a response has
* been received from the remote device, a AVRCP_EVENT_ADV_RESPONSE
* event will be received.
*
* BT_STATUS_IN_USE - The 'cmd' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl or cmd parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_CtGetCapabilities(AvrcpChannel *chnl,
AvrcpAdvancedPdu *cmd,
AvrcpCapabilityId capabilityId);
/*---------------------------------------------------------------------------
* AVRCP_CtListPlayerSettingAttrs()
*
* List the attributes for the settings of the current media
* player on the target device.
*
* When the final response event is received (AVRCP_EVENT_ADV_RESPONSE),
* the 'advOp' field in the callback parameters will set to
* AVRCP_OP_LIST_PLAYER_SETTING_ATTRIBS.
*
* Parameters:
* chnl - A registered and open AVRCP channel.
*
* cmd - A PDU for sending commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has been started successfully. When
* the associated packet has been sent, the application callback will
* receive the AVRCP_EVENT_ADV_TX_DONE event. When a response has
* been received from the remote device, a AVRCP_EVENT_ADV_RESPONSE
* event will be received.
*
* BT_STATUS_IN_USE - The 'cmd' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl or cmd parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_CtListPlayerSettingAttrs(AvrcpChannel *chnl,
AvrcpAdvancedPdu *cmd);
/*---------------------------------------------------------------------------
* AVRCP_CtListPlayerSettingValues()
*
* List the set of possible values for the settings of the current media
* player on the target device.
*
* When the final response event is received (AVRCP_EVENT_ADV_RESPONSE),
* the 'advOp' field in the callback parameters will set to
* AVRCP_OP_LIST_PLAYER_SETTING_VALUES.
*
* Parameters:
* chnl - A registered and open AVRCP channel.
*
* cmd - A PDU for sending commands.
*
* attrId - The player application setting attribute identification for
* which the set of possible is to be listed.
*
* Returns:
* BT_STATUS_PENDING - The operation has been started successfully. When
* the associated packet has been sent, the application callback will
* receive the AVRCP_EVENT_ADV_TX_DONE event. When a response has
* been received from the remote device, a AVRCP_EVENT_ADV_RESPONSE
* event will be received.
*
* BT_STATUS_IN_USE - The 'cmd' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl or cmd parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_CtListPlayerSettingValues(AvrcpChannel *chnl,
AvrcpAdvancedPdu *cmd,
AvrcpPlayerAttrId attrId);
/*---------------------------------------------------------------------------
* AVRCP_CtGetPlayerSettingValues()
*
* Get the indicated setting values for the current media player on the
* target device.
*
* When the final response event is received (AVRCP_EVENT_ADV_RESPONSE),
* the 'advOp' field in the callback parameters will set to
* AVRCP_OP_GET_PLAYER_SETTING_VALUE.
*
* Parameters:
* chnl - A registered and open AVRCP channel.
*
* cmd - A PDU for sending commands.
*
* attrMask - Defines which attibutes are to be queried.
*
* Returns:
* BT_STATUS_PENDING - The operation has been started successfully. When
* the associated packet has been sent, the application callback will
* receive the AVRCP_EVENT_ADV_TX_DONE event. When a response has
* been received from the remote device, a AVRCP_EVENT_ADV_RESPONSE
* event will be received.
*
* BT_STATUS_IN_USE - The 'cmd' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl or cmd parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_CtGetPlayerSettingValues(AvrcpChannel *chnl,
AvrcpAdvancedPdu *cmd,
AvrcpPlayerAttrIdMask attrMask);
/*---------------------------------------------------------------------------
* AVRCP_CtSetAbsoluteVolume()
*
* Set the absolute volume on the target. This function should be called
* only by the source (capturing) device, which is the opposite of
* almost all other controller commands. This means that the local
* device may need to be registered as both a Category 1 Target and a
* Category 2 Controller.
*
* When the final response event is received (AVRCP_EVENT_ADV_RESPONSE),
* the 'advOp' field in the callback parameters will set to
* AVRCP_OP_SET_ABSOLUTE_VOLUME.
*
* Parameters:
* chnl - A registered and open AVRCP channel.
*
* cmd - A PDU for sending commands.
*
* volume - The absolute volume of the Sink (0 - 0x7F).
*
* Returns:
* BT_STATUS_PENDING - The operation has been started successfully. When
* the associated packet has been sent, the application callback will
* receive the AVRCP_EVENT_ADV_TX_DONE event. When a response has
* been received from the remote device, a AVRCP_EVENT_ADV_RESPONSE
* event will be received.
*
* BT_STATUS_IN_USE - The 'cmd' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl or setting parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_CtSetAbsoluteVolume(AvrcpChannel *chnl, AvrcpAdvancedPdu *cmd,uint8_t volume);
/*---------------------------------------------------------------------------
* AVRCP_CtSetPlayerSettingValues()
*
* Set the settings values of the current media player on
* the target device.
*
* When the final response event is received (AVRCP_EVENT_ADV_RESPONSE),
* the 'advOp' field in the callback parameters will set to
* AVRCP_OP_SET_PLAYER_SETTING_VALUE.
*
* Parameters:
* chnl - A registered and open AVRCP channel.
*
* cmd - A PDU for sending commands.
*
* numSettings - The number of attribute ID and setting pair elements in
* the array pointed at by the setting parameter.
*
* setting - This value must point to an array of attribute ID and
* setting pairs sized to contain numSettings elements. The setting
* pairs must be set to the desired setting values.
*
* Returns:
* BT_STATUS_PENDING - The operation has been started successfully. When
* the associated packet has been sent, the application callback will
* receive the AVRCP_EVENT_ADV_TX_DONE event. When a response has
* been received from the remote device, a AVRCP_EVENT_ADV_RESPONSE
* event will be received.
*
* BT_STATUS_IN_USE - The 'cmd' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl or setting parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_CtSetPlayerSettingValues(AvrcpChannel *chnl,
AvrcpAdvancedPdu *cmd,
uint8_t numSettings,
AvrcpPlayerSetting *setting);
/*---------------------------------------------------------------------------
* AVRCP_CtGetPlayerSettingAttrTxt()
*
* Get the text for the setting attributes of the current media
* player on the target device.
*
* When the final response event is received (AVRCP_EVENT_ADV_RESPONSE),
* the 'advOp' field in the callback parameters will set to
* AVRCP_OP_GET_PLAYER_SETTING_ATTR_TEXT.
*
* Parameters:
* chnl - A registered and open AVRCP channel.
*
* cmd - A PDU for sending commands.
*
* attrMask - Defines which attibutes are to be queried.
*
* Returns:
* BT_STATUS_PENDING - The operation has been started successfully. When
* the associated packet has been sent, the application callback will
* receive the AVRCP_EVENT_ADV_TX_DONE event. When a response has
* been received from the remote device, a AVRCP_EVENT_ADV_RESPONSE
* event will be received.
*
* BT_STATUS_IN_USE - The 'cmd' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl or cmd parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_CtGetPlayerSettingAttrTxt(AvrcpChannel *chnl,
AvrcpAdvancedPdu *cmd,
AvrcpPlayerAttrIdMask attrMask);
/* Forward reference */
BtStatus AvrcpCtGetPlayerSettingValueTxt(AvrcpChannel *chnl,
AvrcpAdvancedPdu *cmd,
AvrcpPlayerAttrId attrId,
uint16_t NumValues);
/*---------------------------------------------------------------------------
* AVRCP_CtGetPlayerSettingValueTxt()
*
* Get the text for the player setting values of the current media
* player on the target device.
*
* When the final response event is received (AVRCP_EVENT_ADV_RESPONSE),
* the 'advOp' field in the callback parameters will set to
* AVRCP_OP_GET_PLAYER_SETTING_VALUE_TEXT.
*
* Parameters:
* chnl - A registered and open AVRCP channel.
*
* cmd - A PDU for sending commands.
*
* attrId - The player application setting attribute identification for
* which the set of possible is to be listed.
*
* Returns:
* BT_STATUS_PENDING - The operation has been started successfully. When
* the associated packet has been sent, the application callback will
* receive the AVRCP_EVENT_ADV_TX_DONE event. When a response has
* been received from the remote device, a AVRCP_EVENT_ADV_RESPONSE
* event will be received.
*
* BT_STATUS_IN_USE - The 'cmd' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl or cmd parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_CtGetPlayerSettingValueTxt(AvrcpChannel *chnl,
AvrcpAdvancedPdu *cmd,
AvrcpPlayerAttrId attrId);
#define AVRCP_CtGetPlayerSettingValueTxt(ch,cmd,att) AvrcpCtGetPlayerSettingValueTxt(ch,cmd,att,0)
/*---------------------------------------------------------------------------
* AVRCP_CtGetExtPlayerSettingValueTxt()
*
* Get the text for the player setting values of the current media
* player on the target device. This function may be used used to get
* any values, including those not defined by the AVRCP specification.
* For application extensions to the player settings, attribute IDs
* greater than 4 are used.
*
* When the final response event is received (AVRCP_EVENT_ADV_RESPONSE),
* the 'advOp' field in the callback parameters will set to
* AVRCP_OP_GET_PLAYER_SETTING_VALUE_TEXT.
*
* Parameters:
* chnl - A registered and open AVRCP channel.
*
* cmd - A PDU for sending commands.
*
* attrId - The player application setting attribute identification for
* which the set of possible is to be listed.
*
* NumValues - The number of player settings values supported by the
* player setting attribute. This value is ignored for player
* settings attributes defined by the AVRCP specification (1 - 4).
*
* Returns:
* BT_STATUS_PENDING - The operation has been started successfully. When
* the associated packet has been sent, the application callback will
* receive the AVRCP_EVENT_ADV_TX_DONE event. When a response has
* been received from the remote device, a AVRCP_EVENT_ADV_RESPONSE
* event will be received.
*
* BT_STATUS_IN_USE - The 'cmd' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl or cmd parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_CtGetExtPlayerSettingValueTxt(AvrcpChannel *chnl,
AvrcpAdvancedPdu *cmd,
AvrcpPlayerAttrId attrId,
uint16_t NumValues);
#define AVRCP_CtGetExtPlayerSettingValueTxt(ch,cmd,att,num) AvrcpCtGetPlayerSettingValueTxt(ch,cmd,att,num)
/*---------------------------------------------------------------------------
* AVRCP_CtInformCharset()
*
* Send the controller's displayable character sets to the target
* device. When the target device receives this command, the target
* device can begin sending strings in one of the character sets that was
* specified by AVRCP_CtInformCharset(). By default target device sends
* strings in the UTF-8 format until AVRCP_CtInformCharset() has been
* invoked.
*
* When the final response event is received (AVRCP_EVENT_ADV_RESPONSE),
* the 'advOp' field in the callback parameters will set to
* AVRCP_OP_INFORM_DISP_CHAR_SET.
*
* Parameters:
* chnl - A registered and open AVRCP channel.
*
* cmd - A PDU for sending commands.
*
* numCharsets - The number of displayable character set elements in the
* array pointed at by the charsets parameter.
*
* charsets - This value must point to an array of character set
* identifiers sized to contain numCharsets elements. The character
* set identifiers must be set to values supported by this device.
*
* Returns:
* BT_STATUS_PENDING - The operation has been started successfully. When
* the associated packet has been sent, the application callback will
* receive the AVRCP_EVENT_ADV_TX_DONE event. When a response has
* been received from the remote device, a AVRCP_EVENT_ADV_RESPONSE
* event will be received.
*
* BT_STATUS_IN_USE - The 'cmd' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl or charsets parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_CtInformCharset(AvrcpChannel *chnl,
AvrcpAdvancedPdu *cmd,
uint8_t numCharsets,
uint16_t *charsets);
/*---------------------------------------------------------------------------
* AVRCP_CtInformBatteryStatus()
*
* Send the controller's battery status to the target device.
*
* When the final response event is received (AVRCP_EVENT_ADV_RESPONSE),
* the 'advOp' field in the callback parameters will set to
* AVRCP_OP_INFORM_BATT_STATUS.
*
* Parameters:
* chnl - A registered and open AVRCP channel.
*
* cmd - A PDU for sending commands.
*
* battStatus - Must be set to an enumeration value corresponding to the
* controller's current battery status.
*
* Returns:
* BT_STATUS_PENDING - The operation has been started successfully. When
* the associated packet has been sent, the application callback will
* receive the AVRCP_EVENT_ADV_TX_DONE event. When a response has
* been received from the remote device, a AVRCP_EVENT_ADV_RESPONSE
* event will be received.
*
* BT_STATUS_IN_USE - The 'cmd' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl or cmd parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_CtInformBatteryStatus(AvrcpChannel *chnl,
AvrcpAdvancedPdu *cmd,
AvrcpBatteryStatus battStatus);
/*---------------------------------------------------------------------------
* AVRCP_CtGetMediaInfo()
*
* Get the media attributes for the current track on the current
* media player on target device.
*
* When the final response event is received (AVRCP_EVENT_ADV_RESPONSE),
* the 'advOp' field in the callback parameters will set to
* AVRCP_OP_GET_MEDIA_INFO.
*
* Parameters:
* chnl - A registered and open AVRCP channel.
*
* cmd - A PDU for sending commands.
*
* mediaMask - Defines which media attibutes are to be queried. If set
* to 0, then all attributes will be requested.
*
* Returns:
* BT_STATUS_PENDING - The operation has been started successfully. When
* the associated packet has been sent, the application callback will
* receive the AVRCP_EVENT_ADV_TX_DONE event. When a response has
* been received from the remote device, a AVRCP_EVENT_ADV_RESPONSE
* event will be received.
*
* BT_STATUS_IN_USE - The 'cmd' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl or cmd parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_CtGetMediaInfo(AvrcpChannel *chnl,
AvrcpAdvancedPdu *cmd,
AvrcpMediaAttrIdMask mediaMask);
/*---------------------------------------------------------------------------
* AVRCP_CtGetPlayStatus()
*
* Get the play status of the current media player on the target
* device.
*
* When the final response event is received (AVRCP_EVENT_ADV_RESPONSE),
* the 'advOp' field in the callback parameters will set to
* AVRCP_OP_GET_PLAY_STATUS.
*
* Parameters:
* chnl - A registered and open AVRCP channel.
*
* cmd - A PDU for sending commands.
*
* Returns:
* BT_STATUS_PENDING - The operation has been started successfully. When
* the associated packet has been sent, the application callback will
* receive the AVRCP_EVENT_ADV_TX_DONE event. When a response has
* been received from the remote device, a AVRCP_EVENT_ADV_RESPONSE
* event will be received.
*
* BT_STATUS_IN_USE - The 'cmd' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl or cmd parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_CtGetPlayStatus(AvrcpChannel *chnl,
AvrcpAdvancedPdu *cmd);
/*---------------------------------------------------------------------------
* AVRCP_CtRegisterNotification()
*
* Register for notification of events on the target device.
*
* When the final response event is received (AVRCP_EVENT_ADV_RESPONSE),
* the 'advOp' field in the callback parameters will set to
* AVRCP_OP_REGISTER_NOTIFY.
*
* Parameters:
* chnl - A registered and open AVRCP channel.
*
* cmd - A PDU for sending commands.
*
* eventId - The event for which the CT requires notifications.
*
* interval - For the AVRCP_EID_PLAY_POS_CHANGED event, the interval
* parameter specifies the time interval (in seconds) at which the
* change in the playback position will be notified. If the song is
* being forwarded or rewind, a notification will be received
* whenever the playback position will change by this value even if
* the interval has not yet expired. For other events, the value of
* this parameter is ignored.
*
* Returns:
* BT_STATUS_PENDING - The operation has been started successfully. When
* the associated packet has been sent, the application callback will
* receive the AVRCP_EVENT_ADV_TX_DONE event. When a response has
* been received from the remote device, a AVRCP_EVENT_ADV_RESPONSE
* event will be received.
*
* BT_STATUS_IN_USE - The 'cmd' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl or cmd parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_CtRegisterNotification(AvrcpChannel *chnl,
AvrcpAdvancedPdu *cmd,
AvrcpEventId eventId,
uint32_t interval);
/*---------------------------------------------------------------------------
* AVRCP_CtSetAddressedPlayer()
*
* Set the addressed player on the target.
*
* When the final response event is received (AVRCP_EVENT_ADV_RESPONSE),
* the 'advOp' field in the callback parameters will set to
* AVRCP_OP_SET_ADDRESSED_PLAYER.
*
* Parameters:
*
* chnl - A registered and open AVRCP channel.
*
* cmd - A PDU for sending commands.
*
* playerId - Identifier of the player on the remote device.
*
* Returns:
* BT_STATUS_PENDING - The operation has been started successfully. When
* the associated packet has been sent, the application callback will
* receive the AVRCP_EVENT_ADV_TX_DONE event. When a response has
* been received from the remote device, a AVRCP_EVENT_ADV_RESPONSE
* event will be received.
*
* BT_STATUS_IN_USE - The 'cmd' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl or cmd parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_CtSetAddressedPlayer(AvrcpChannel *chnl,
AvrcpAdvancedPdu *cmd,
uint16_t playerId);
/*---------------------------------------------------------------------------
* AVRCP_CtPlayItem()
*
* Play an item on the target.
*
* When the final response event is received (AVRCP_EVENT_ADV_RESPONSE),
* the 'advOp' field in the callback parameters will set to
* AVRCP_OP_PLAY_ITEM.
*
* Parameters:
*
* chnl - A registered and open AVRCP channel.
*
* cmd - A PDU for sending commands.
*
* scope - The scope on the virtual file system.
*
* uid - The UID of the item to be played.
*
* uidCount - The UID count reported from the target.
*
* Returns:
* BT_STATUS_PENDING - The operation has been started successfully. When
* the associated packet has been sent, the application callback will
* receive the AVRCP_EVENT_ADV_TX_DONE event. When a response has
* been received from the remote device, a AVRCP_EVENT_ADV_RESPONSE
* event will be received.
*
* BT_STATUS_IN_USE - The 'cmd' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl or cmd parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_CtPlayItem(AvrcpChannel *chnl,
AvrcpAdvancedPdu *cmd,
AvrcpScope scope,
uint8_t *uid,
uint16_t uidCount);
/*---------------------------------------------------------------------------
* AVRCP_CtAddToNowPlaying()
*
* Add the specified item to the now playing list.
*
* When the final response event is received (AVRCP_EVENT_ADV_RESPONSE),
* the 'advOp' field in the callback parameters will set to
* AVRCP_OP_ADD_TO_NOW_PLAYING.
*
* Parameters:
*
* chnl - A registered and open AVRCP channel.
*
* cmd - A PDU for sending commands.
*
* scope - The scope on the virtual file system.
*
* uid - The UID of the item to be played.
*
* uidCount - The UID count reported from the target.
*
* Returns:
* BT_STATUS_PENDING - The operation has been started successfully. When
* the associated packet has been sent, the application callback will
* receive the AVRCP_EVENT_ADV_TX_DONE event. When a response has
* been received from the remote device, a AVRCP_EVENT_ADV_RESPONSE
* event will be received.
*
* BT_STATUS_IN_USE - The 'cmd' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl or cmd parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_CtAddToNowPlaying(AvrcpChannel *chnl,
AvrcpAdvancedPdu *cmd,
AvrcpScope scope,
uint8_t *uid,
uint16_t uidCount);
#if AVRCP_BROWSING_CONTROLLER == XA_ENABLED
/*---------------------------------------------------------------------------
* AVRCP_CtSearch()
*
* Search on the browsed target.
*
* When the final response event is received (AVRCP_EVENT_ADV_RESPONSE),
* the 'advOp' field in the callback parameters will set to
* AVRCP_OP_SEARCH.
*
* Parameters:
*
* chnl - A registered and open AVRCP channel.
*
* cmd - A PDU for sending commands.
*
* charSet - The character set used by the search string.
*
* length - The length of the search string.
*
* searchSTr - A pointer to the search string.
*
* Returns:
* BT_STATUS_PENDING - The operation has been started
* successfully. When the associated packet has been sent,
* the application callback will receive the
* AVRCP_EVENT_BROWSE_TX_DONE event. When a response has been
* received from the remote device, a AVRCP_EVENT_BROWSE_RESPONSE
* event will be received.
*
* BT_STATUS_IN_USE - The 'cmd' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl or cmd parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_CtSearch(AvrcpChannel *chnl,
AvrcpAdvancedPdu *cmd,
uint16_t charSet,
uint16_t length,
uint8_t *searchStr);
/*---------------------------------------------------------------------------
* AVRCP_CtSetBrowsedPlayer()
*
* Set the browsed player on the target.
*
* When the final response event is received (AVRCP_EVENT_ADV_RESPONSE),
* the 'advOp' field in the callback parameters will set to
* AVRCP_OP_SET_BROWSED_PLAYER.
*
* Parameters:
*
* chnl - A registered and open AVRCP channel.
*
* pdu - A PDU for sending the browse command.
*
* playerId - Identifier for the player on the target that will be
* browsed by subsequent requests.
*
* Returns:
* BT_STATUS_PENDING - The operation has been started
* successfully. When the associated packet has been sent,
* the application callback will receive the
* AVRCP_EVENT_BROWSE_TX_DONE event. When a response has been
* received from the remote device, a AVRCP_EVENT_BROWSE_RESPONSE
* event will be received.
*
* BT_STATUS_IN_USE - The 'cmd' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl or cmd parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_CtSetBrowsedPlayer(AvrcpChannel *chnl,
AvrcpAdvancedPdu *pdu,
uint16_t playerId);
/*---------------------------------------------------------------------------
* AVRCP_CtChangePath()
*
* Change the current path on the browsed target.
*
* When the final response event is received (AVRCP_EVENT_ADV_RESPONSE),
* the 'advOp' field in the callback parameters will set to
* AVRCP_OP_CHANGE_PATH.
*
* Parameters:
*
* chnl - A registered and open AVRCP channel.
*
* pdu - A PDU for sending the browse command.
*
* uidCounter - The UID count reported from the target.
*
* direction - Direction for the change path command (up or down)
*
* uid - The UID of the directory when direction is down. Otherwise,
* this is ignored and may bet set to 0.
*
* Returns:
* BT_STATUS_PENDING - The operation has been started
* successfully. When the associated packet has been sent,
* the application callback will receive the
* AVRCP_EVENT_BROWSE_TX_DONE event. When a response has been
* received from the remote device, a AVRCP_EVENT_BROWSE_RESPONSE
* event will be received.
*
* BT_STATUS_IN_USE - The 'cmd' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl or cmd parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_CtChangePath(AvrcpChannel *chnl,
AvrcpAdvancedPdu *pdu,
uint16_t uidCounter,
AvrcpChgPathDirection direction,
uint8_t *uid);
/*---------------------------------------------------------------------------
* AVRCP_CtGetItemAttributes()
*
* Get the attributes of the specified item on the browsed target.
*
* When the final response event is received (AVRCP_EVENT_ADV_RESPONSE),
* the 'advOp' field in the callback parameters will set to
* AVRCP_OP_GET_ITEM_ATTRIBUTES.
*
* Parameters:
*
* chnl - A registered and open AVRCP channel.
*
* pdu - A PDU for sending a browse command.
*
* uidCounter - The UID count reported from the target.
*
* uid - The UID of the item.
*
* scope - The scope on the virtual file system.
*
* numAttrs - The number of attributes being requested. If 0 is
* specified, then all attributes will be returned.
*
* attrList - The list of attributes being requested. If numAttrs is 0,
* then this value can be NULL.
*
* Returns:
* BT_STATUS_PENDING - The operation has been started
* successfully. When the associated packet has been sent,
* the application callback will receive the
* AVRCP_EVENT_BROWSE_TX_DONE event.
*
* BT_STATUS_IN_USE - The 'cmd' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl or cmd parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_CtGetItemAttributes(AvrcpChannel *chnl,
AvrcpAdvancedPdu *pdu,
uint16_t uidCounter,
uint8_t *uid,
AvrcpScope scope,
uint8_t numAttrs,
AvrcpMediaAttrId *attrList);
/*---------------------------------------------------------------------------
* AVRCP_CtGetFolderItems()
*
* Get items from the current folder on the browsed target. Only the
* number of items that will fit in a single L2CAP MTU will be returned.
* The response will contain the number of items returned. To get more
* items, subsequent requests must be made.
*
* When the final response event is received (AVRCP_EVENT_ADV_RESPONSE),
* the 'advOp' field in the callback parameters will set to
* AVRCP_OP_GET_FOLDER_ITEMS.
*
* Parameters:
*
* chnl - A registered and open AVRCP channel.
*
* pdu - A PDU for sending a browse command.
*
* scope - The scope on the virtual file system.
*
* start - The starting item in the current directory to be returned.
*
* end - The ending item in the current directory to be returned.
*
* numAttrs - The number of attributes being requested.
*
* attrList - The list of attributes being requested.
*
* Returns:
* BT_STATUS_PENDING - The operation has been started
* successfully. When the associated packet has been sent,
* the application callback will receive the
* AVRCP_EVENT_BROWSE_TX_DONE event. When a response has been
* received from the remote device, a AVRCP_EVENT_BROWSE_RESPONSE
* event will be received.
*
* BT_STATUS_IN_USE - The 'cmd' packet was in use and cannot be sent.
*
* BT_STATUS_INVALID_PARM - The operation failed, because the
* chnl or cmd parameter is invalid.
*
* BT_STATUS_NOT_FOUND - The specified channel is not registered.
*/
BtStatus AVRCP_CtGetFolderItems(AvrcpChannel *chnl,
AvrcpAdvancedPdu *pdu,
AvrcpScope scope,
uint32_t start,
uint32_t end,
uint8_t numAttrs,
AvrcpMediaAttrId *attrList);
/*---------------------------------------------------------------------------
* AVRCP_CtParseNextFolderItem()
*
* Parse folder item response. This function can be used to parse a list
* of folder items in a GetFolderItem response (see the
* 'p.adv.browseRsp.fldrItems.list' parameter of the
* AVRCP_OP_GET_FOLDER_ITEMS operation). The 'list' parameter should
* point to the beginning of the list on the first call. Each call will
* return a folder item into the 'mediaItem' structure. The function will
* return a pointer to the next folder item, which should be passed into
* the 'list' parameter on the next call. This function should only be
* called once for each item in the list. The number of items in the list
* is returned with the AVRCP_OP_GET_FOLDER_ITEMS operation in the
* 'p.adv.browseRsp.fldrItems.numItems' parameter.
*
* Parameters:
*
* list - A pointer to a list of folder items that were returned from the
* browsed target.
*
* mediaItem - A pointer to memory where the parsed results will be
* placed.
*
* Returns:
* A pointer to the next item in the list.
*/
uint8_t * AVRCP_CtParseNextFolderItem(uint8_t *list, AvrcpMediaItem *mediaItem);
/*---------------------------------------------------------------------------
* AVRCP_CtParseNextAttribute()
*
* Parse an attribute list. This function can be used to parse a list of
* attributes in a GetItemAttributes response (see the
* 'p.adv.browseRsp.itemAttrs.list' parameter of the
* AVRCP_OP_GET_ITEM_ATTRIBUTES operation). The 'list' parameter should
* point to the beginning of the list on the first call. Each call will
* return a folder item into the 'mediaAttr' structure. The function will
* return a pointer to the next attribute, which should be passed into
* the 'list' parameter on the next call. This function should only be
* called once for each attribute in the list. The number of attributes
* in the list is returned with the AVRCP_OP_GET_ITEM_ATTRIBUTES
* operation in the 'p.adv.browseRsp.itemAttrs.numAttrs' parameter.
*
* Parameters:
*
* list - A pointer to a list of folder items that were returned from the
* browsed target.
*
* mediaAttr - A pointer to memory where the parsed results will be
* placed.
*
* Returns:
* A pointer to the next item in the list.
*/
uint8_t * AVRCP_CtParseNextAttribute(uint8_t *list, AvrcpMediaAttribute *mediaAttr);
/*---------------------------------------------------------------------------
* AVRCP_CtParseNextFolderName()
*
* Parse a list of folder names. This function can be used to parse a
* list of attributes in a SetBrowsedPlayer response (see the
* 'p.adv.browseRsp.brwsPlayer.list' parameter of the
* AVRCP_OP_SET_BROWSED_PLAYER operation). The 'list' parameter should
* point to the beginning of the list on the first call. Each call will
* copy a folder name into the 'folderName' structure. The function will
* return a pointer to the next folderName, which should be passed into
* the 'list' parameter on the next call. This function should only be
* called once for each attribute in the list. The number of folder names
* in the list is returned with the AVRCP_OP_SET_BROWSED_PLAYER
* operation in the 'p.adv.browseRsp.brwsPlayer.fDepth'parameter.
*
* Parameters:
*
* list - A pointer to a list of folder names were returned
* from the AVRCP_OP_SET_BROWSED_PLAYER operation.
*
* folderName - A pointer to memory where the parsed results
* will be copied.
*
* Returns:
* A pointer to the next item in the list.
*/
uint8_t * AVRCP_CtParseNextFolderName(uint8_t *list, uint16_t length, uint8_t *folderName);
#endif /* AVRCP_BROWSING_CONTROLLER == XA_ENABLED */
#endif /* AVRCP_ADVANCED_CONTROLLER == XA_ENABLED */
#endif /* __AVRCP_H_ */