/******************************************************************************
 *
 *  Copyright (C) 2006-2016 Broadcom Corporation
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at:
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *
 ******************************************************************************/

/******************************************************************************
 *
 *  AVRCP definition and data types
 *
 ******************************************************************************/
#ifndef _AVRC_DEFS_H
#define _AVRC_DEFS_H

#include "stack/include/bt_types.h"

/*****************************************************************************
 *  constants
 ****************************************************************************/

/* Profile revision numbers */
#define AVRC_REV_1_0 0x0100
#define AVRC_REV_1_3 0x0103
#define AVRC_REV_1_4 0x0104
#define AVRC_REV_1_5 0x0105
#define AVRC_REV_1_6 0x0106

/* defines from the spec */
#define AVRC_PACKET_LEN 512 /* You must support 512 byte RC packets */

#define AVRC_MIN_CONTROL_MTU 48 /* Minimum MTU for the control channel */
#define AVRC_MIN_BROWSE_MTU 335 /* Minimum MTU for the browsing channel */

#define AVRC_META_PDU_OFFSET 4
#define AVRC_SUB_TYPE_LEN 4
#define AVRC_UID_SIZE 8
#define AVRC_FEATURE_MASK_SIZE 16

/* command type codes */
#define AVRC_CMD_CTRL 0   /* Instruct a target to perform an operation */
#define AVRC_CMD_STATUS 1 /* Check a device's current status */
#define AVRC_CMD_SPEC_INQ                                                \
  2                      /* Check whether a target supports a particular \
                            control command; all operands are included */
#define AVRC_CMD_NOTIF 3 /* Notification of a change in a device's state */
#define AVRC_CMD_GEN_INQ                            \
  4 /* Check whether a target supports a particular \
       control command; operands are not included */

/* response type codes */
#define AVRC_RSP_NOT_IMPL                                  \
  8 /* The target does not implement the command specified \
       by the opcode and operand,                          \
       or doesn't implement the specified subunit */
#define AVRC_RSP_ACCEPT                                \
  9 /* The target executed or is executing the command \
       */
#define AVRC_RSP_REJ                                        \
  10 /* The target implements the command specified by the  \
        opcode but cannot respond because the current state \
        of the target doesn't allow it */
#define AVRC_RSP_IN_TRANS                                  \
  11 /* The target implements the status command but it is \
        in a state of transition; the status command may   \
        be retried at a future time */
#define AVRC_RSP_IMPL_STBL                               \
  12 /* For specific inquiry or general inquiy commands, \
        the target implements the command; for status    \
        commands, the target returns stable and includes \
        the status results */
#define AVRC_RSP_CHANGED                                    \
  13 /* The response frame contains a notification that the \
        target device's state has changed */
#define AVRC_RSP_INTERIM                                        \
  15 /* For control commands, the target has accepted the       \
        request but cannot return information within 100        \
        milliseconds; for notify commands, the target accepted  \
        the command, and will notify the controller of a change \
        of target state at a future time */

/* subunit type */
#define AVRC_SUB_MONITOR 0x00  /* Monitor */
#define AVRC_SUB_AUDIO 0x01    /* Audio */
#define AVRC_SUB_PRINTER 0x02  /* Printer */
#define AVRC_SUB_DISC 0x03     /* Disc */
#define AVRC_SUB_TAPE 0x04     /* Tape recorder/player */
#define AVRC_SUB_TUNER 0x05    /* Tuner */
#define AVRC_SUB_CA 0x06       /* CA */
#define AVRC_SUB_CAMERA 0x07   /* Camera */
#define AVRC_SUB_PANEL 0x09    /* Panel */
#define AVRC_SUB_BB 0x0A       /* Bulletin Board */
#define AVRC_SUB_CAM_STOR 0x0B /* Camera Storage */
#define AVRC_SUB_VENDOR 0x1C   /* Vendor unique */
#define AVRC_SUB_EXT 0x1E      /* Subunit type extended to next byte */
#define AVRC_SUB_UNIT 0x1F     /* Unit */

/* opcodes - defined by 1394ta */
#define AVRC_OP_UNIT_INFO 0x30 /* Report unit information */
#define AVRC_OP_SUB_INFO 0x31  /* Report subunit information */
#define AVRC_OP_VENDOR 0x00    /* Vendor-dependent commands */
#define AVRC_OP_PASS_THRU 0x7C /* panel subunit opcode */
/* opcodes 80-9F and E0-FF are not used by 1394ta.  Sneak one for browsing */
#define AVRC_OP_BROWSE 0xFF  /* Browsing */
#define AVRC_OP_INVALID 0xFE /* invalid one */

/* Company ID's
*/
#define AVRC_CO_BLUETOOTH_SIG 0x00FFFFFF
#define AVRC_CO_WIDCOMM 0x00000361
#define AVRC_CO_BROADCOM 0x00001018
#define AVRC_CO_GOOGLE 0x00DAA119
#define AVRC_CO_METADATA \
  0x00001958 /* Unique COMPANY ID for Metadata messages */

/* State flag for Passthrough commands
*/
#define AVRC_STATE_PRESS 0
#define AVRC_STATE_RELEASE 1

/* Operation ID list for Passthrough commands
*/
#define AVRC_ID_SELECT 0x00     /* select */
#define AVRC_ID_UP 0x01         /* up */
#define AVRC_ID_DOWN 0x02       /* down */
#define AVRC_ID_LEFT 0x03       /* left */
#define AVRC_ID_RIGHT 0x04      /* right */
#define AVRC_ID_RIGHT_UP 0x05   /* right-up */
#define AVRC_ID_RIGHT_DOWN 0x06 /* right-down */
#define AVRC_ID_LEFT_UP 0x07    /* left-up */
#define AVRC_ID_LEFT_DOWN 0x08  /* left-down */
#define AVRC_ID_ROOT_MENU 0x09  /* root menu */
#define AVRC_ID_SETUP_MENU 0x0A /* setup menu */
#define AVRC_ID_CONT_MENU 0x0B  /* contents menu */
#define AVRC_ID_FAV_MENU 0x0C   /* favorite menu */
#define AVRC_ID_EXIT 0x0D       /* exit */
#define AVRC_ID_0 0x20          /* 0 */
#define AVRC_ID_1 0x21          /* 1 */
#define AVRC_ID_2 0x22          /* 2 */
#define AVRC_ID_3 0x23          /* 3 */
#define AVRC_ID_4 0x24          /* 4 */
#define AVRC_ID_5 0x25          /* 5 */
#define AVRC_ID_6 0x26          /* 6 */
#define AVRC_ID_7 0x27          /* 7 */
#define AVRC_ID_8 0x28          /* 8 */
#define AVRC_ID_9 0x29          /* 9 */
#define AVRC_ID_DOT 0x2A        /* dot */
#define AVRC_ID_ENTER 0x2B      /* enter */
#define AVRC_ID_CLEAR 0x2C      /* clear */
#define AVRC_ID_CHAN_UP 0x30    /* channel up */
#define AVRC_ID_CHAN_DOWN 0x31  /* channel down */
#define AVRC_ID_PREV_CHAN 0x32  /* previous channel */
#define AVRC_ID_SOUND_SEL 0x33  /* sound select */
#define AVRC_ID_INPUT_SEL 0x34  /* input select */
#define AVRC_ID_DISP_INFO 0x35  /* display information */
#define AVRC_ID_HELP 0x36       /* help */
#define AVRC_ID_PAGE_UP 0x37    /* page up */
#define AVRC_ID_PAGE_DOWN 0x38  /* page down */
#define AVRC_ID_POWER 0x40      /* power */
#define AVRC_ID_VOL_UP 0x41     /* volume up */
#define AVRC_ID_VOL_DOWN 0x42   /* volume down */
#define AVRC_ID_MUTE 0x43       /* mute */
#define AVRC_ID_PLAY 0x44       /* play */
#define AVRC_ID_STOP 0x45       /* stop */
#define AVRC_ID_PAUSE 0x46      /* pause */
#define AVRC_ID_RECORD 0x47     /* record */
#define AVRC_ID_REWIND 0x48     /* rewind */
#define AVRC_ID_FAST_FOR 0x49   /* fast forward */
#define AVRC_ID_EJECT 0x4A      /* eject */
#define AVRC_ID_FORWARD 0x4B    /* forward */
#define AVRC_ID_BACKWARD 0x4C   /* backward */
#define AVRC_ID_ANGLE 0x50      /* angle */
#define AVRC_ID_SUBPICT 0x51    /* subpicture */
#define AVRC_ID_F1 0x71         /* F1 */
#define AVRC_ID_F2 0x72         /* F2 */
#define AVRC_ID_F3 0x73         /* F3 */
#define AVRC_ID_F4 0x74         /* F4 */
#define AVRC_ID_F5 0x75         /* F5 */
#define AVRC_ID_VENDOR 0x7E     /* vendor unique */
#define AVRC_KEYPRESSED_RELEASE 0x80

/*****************************************************************************
 *  Metadata transfer definitions
 ****************************************************************************/

/* Define the Metadata Packet types
*/
#define AVRC_PKT_SINGLE 0
#define AVRC_PKT_START 1
#define AVRC_PKT_CONTINUE 2
#define AVRC_PKT_END 3
#define AVRC_PKT_TYPE_MASK 3

/* Define the PDUs carried in the vendor dependant data
*/
#define AVRC_PDU_GET_CAPABILITIES 0x10
#define AVRC_PDU_LIST_PLAYER_APP_ATTR 0x11
#define AVRC_PDU_LIST_PLAYER_APP_VALUES 0x12
#define AVRC_PDU_GET_CUR_PLAYER_APP_VALUE 0x13
#define AVRC_PDU_SET_PLAYER_APP_VALUE 0x14
#define AVRC_PDU_GET_PLAYER_APP_ATTR_TEXT 0x15
#define AVRC_PDU_GET_PLAYER_APP_VALUE_TEXT 0x16
#define AVRC_PDU_INFORM_DISPLAY_CHARSET 0x17
#define AVRC_PDU_INFORM_BATTERY_STAT_OF_CT 0x18
#define AVRC_PDU_GET_ELEMENT_ATTR 0x20
#define AVRC_PDU_GET_PLAY_STATUS 0x30
#define AVRC_PDU_REGISTER_NOTIFICATION 0x31
#define AVRC_PDU_REQUEST_CONTINUATION_RSP 0x40
#define AVRC_PDU_ABORT_CONTINUATION_RSP 0x41
/* added in 1.4 */
#define AVRC_PDU_SET_ABSOLUTE_VOLUME 0x50
#define AVRC_PDU_SET_ADDRESSED_PLAYER 0x60
#define AVRC_PDU_SET_BROWSED_PLAYER 0x70
#define AVRC_PDU_GET_FOLDER_ITEMS 0x71
#define AVRC_PDU_CHANGE_PATH 0x72
#define AVRC_PDU_GET_ITEM_ATTRIBUTES 0x73
#define AVRC_PDU_PLAY_ITEM 0x74
/* Added in post 1.5 */
#define AVRC_PDU_GET_TOTAL_NUM_OF_ITEMS 0x75
#define AVRC_PDU_SEARCH 0x80
#define AVRC_PDU_ADD_TO_NOW_PLAYING 0x90
#define AVRC_PDU_GENERAL_REJECT 0xA0

/* Define the vendor unique id carried in the pass through data
*/
#define AVRC_PDU_NEXT_GROUP 0x00
#define AVRC_PDU_PREV_GROUP 0x01
/* The only pass through vendor unique commands defined by AVRC are the group
 *  navigation commands.
 * The len for vendor unique data is 5
 */
#define AVRC_PASS_THRU_GROUP_LEN 5

#define AVRC_PDU_INVALID 0xff
/* 6.15.3 error status code for general reject */
/* Invalid command, sent if TG received a PDU that it did not understand. */
#define AVRC_STS_BAD_CMD 0x00
/* Invalid parameter, sent if the TG received a PDU with a parameter ID that it
 * did not understand. Sent if there is only one parameter ID in the PDU. */
#define AVRC_STS_BAD_PARAM 0x01
/* Specified parameter not found., sent if the parameter ID is understood, but
 * content is wrong or corrupted. */
#define AVRC_STS_NOT_FOUND 0x02
/* Internal Error, sent if there are error conditions not covered by a more
 * specific error code. */
#define AVRC_STS_INTERNAL_ERR 0x03
/* Operation completed without error.  This is the status that should be
 * returned if the operation was successful. */
#define AVRC_STS_NO_ERROR 0x04
/* UID Changed - The UIDs on the device have changed */
#define AVRC_STS_UID_CHANGED 0x05
/* #define AVRC_STS_GEN_ERROR   0x06    Unknown Error - now "reserved" */
/* Invalid Direction - The Direction parameter is invalid - Change Path*/
#define AVRC_STS_BAD_DIR 0x07
/* Not a Directory - The UID provided does not refer to a folder item -
 *      Change Path */
#define AVRC_STS_NOT_DIR 0x08
/* Does Not Exist - The UID provided does not refer to any item - Change Path,
 *      PlayItem, AddToNowPlaying, GetItemAttributes */
#define AVRC_STS_NOT_EXIST 0x09
/* Invalid Scope - The scope parameter is invalid - GetFolderItems, PlayItem,
 *      AddToNowPlayer, GetItemAttributes */
#define AVRC_STS_BAD_SCOPE 0x0a
/* Range Out of Bounds - The start of range provided is not valid
 *      GetFolderItems*/
#define AVRC_STS_BAD_RANGE 0x0b
/* UID is a Directory - The UID provided refers to a directory, which cannot be
 * handled by this media player -  PlayItem, AddToNowPlaying */
#define AVRC_STS_UID_IS_DIR 0x0c
/* Media in Use - The media is not able to be used for this operation at this
 * time - PlayItem, AddToNowPlaying */
#define AVRC_STS_IN_USE 0x0d
/* Now Playing List Full - No more items can be added to the Now Playing List -
 * AddToNowPlaying*/
#define AVRC_STS_NOW_LIST_FULL 0x0e
/* Search Not Supported - The Browsed Media Player does not support search -
 * Search */
#define AVRC_STS_SEARCH_NOT_SUP 0x0f
/* Search in Progress - A search operation is already in progress - Search*/
#define AVRC_STS_SEARCH_BUSY 0x10
/* Invalid Player Id - The specified Player Id does not refer to a valid player
 * - SetAddressedPlayer, SetBrowsedPlayer*/
#define AVRC_STS_BAD_PLAYER_ID 0x11
/* Player Not Browsable - The Player Id supplied refers to a Media Player which
 * does not support browsing - SetBrowsedPlayer */
#define AVRC_STS_PLAYER_N_BR 0x12
/* Player Not Addressed.  The Player Id supplied refers to a player which is not
 * currently addressed, and the command is not able to be performed if the
 * player is not set as addressed - Search, SetBrowsedPlayer*/
#define AVRC_STS_PLAYER_N_ADDR 0x13
/* No valid Search Results - The Search result list does not contain valid
 * entries, e.g. after being invalidated due to change of browsed player -
 * GetFolderItems */
#define AVRC_STS_BAD_SEARCH_RES 0x14
/* No available players ALL */
#define AVRC_STS_NO_AVAL_PLAYER 0x15
/* Addressed Player Changed - Register Notification */
#define AVRC_STS_ADDR_PLAYER_CHG 0x16
typedef uint8_t tAVRC_STS;

/* Define the Capability IDs
*/
#define AVRC_CAP_COMPANY_ID 0x02
#define AVRC_CAP_EVENTS_SUPPORTED 0x03
#define AVRC_COMPANY_ID_LEN 3
#define AVRC_CAPABILITY_OFFSET 2

/* Define the Player Application Settings IDs
*/
#define AVRC_PLAYER_SETTING_EQUALIZER 0x01
#define AVRC_PLAYER_SETTING_REPEAT 0x02
#define AVRC_PLAYER_SETTING_SHUFFLE 0x03
#define AVRC_PLAYER_SETTING_SCAN 0x04
#define AVRC_PLAYER_SETTING_LOW_MENU_EXT 0x80
#define AVRC_PLAYER_SETTING_HIGH_MENU_EXT 0xff

/* Define the possible values of the Player Application Settings
*/
#define AVRC_PLAYER_VAL_OFF 0x01
#define AVRC_PLAYER_VAL_ON 0x02
#define AVRC_PLAYER_VAL_SINGLE_REPEAT 0x02
#define AVRC_PLAYER_VAL_ALL_REPEAT 0x03
#define AVRC_PLAYER_VAL_GROUP_REPEAT 0x04
#define AVRC_PLAYER_VAL_ALL_SHUFFLE 0x02
#define AVRC_PLAYER_VAL_GROUP_SHUFFLE 0x03
#define AVRC_PLAYER_VAL_ALL_SCAN 0x02
#define AVRC_PLAYER_VAL_GROUP_SCAN 0x03

/* Define the possible values of Battery Status PDU
*/
#define AVRC_BATTERY_STATUS_NORMAL 0x00
#define AVRC_BATTERY_STATUS_WARNING 0x01
#define AVRC_BATTERY_STATUS_CRITICAL 0x02
#define AVRC_BATTERY_STATUS_EXTERNAL 0x03
#define AVRC_BATTERY_STATUS_FULL_CHARGE 0x04
typedef uint8_t tAVRC_BATTERY_STATUS;

/* Define character set */
#define AVRC_CHAR_SET_SIZE 2

/* Define the Media Attribute IDs
*/
#define AVRC_MEDIA_ATTR_ID_TITLE 0x00000001
#define AVRC_MEDIA_ATTR_ID_ARTIST 0x00000002
#define AVRC_MEDIA_ATTR_ID_ALBUM 0x00000003
#define AVRC_MEDIA_ATTR_ID_TRACK_NUM 0x00000004
#define AVRC_MEDIA_ATTR_ID_NUM_TRACKS 0x00000005
#define AVRC_MEDIA_ATTR_ID_GENRE 0x00000006
#define AVRC_MEDIA_ATTR_ID_PLAYING_TIME 0x00000007 /* in miliseconds */
#define AVRC_MAX_NUM_MEDIA_ATTR_ID 7

/* Define the possible values of play state
*/
#define AVRC_PLAYSTATE_RESP_MSG_SIZE 9
#define AVRC_PLAYSTATE_STOPPED 0x00  /* Stopped */
#define AVRC_PLAYSTATE_PLAYING 0x01  /* Playing */
#define AVRC_PLAYSTATE_PAUSED 0x02   /* Paused  */
#define AVRC_PLAYSTATE_FWD_SEEK 0x03 /* Fwd Seek*/
#define AVRC_PLAYSTATE_REV_SEEK 0x04 /* Rev Seek*/
#define AVRC_PLAYSTATE_ERROR 0xFF    /* Error   */
typedef uint8_t tAVRC_PLAYSTATE;

/* Define the events that can be registered for notifications
*/
#define AVRC_EVT_PLAY_STATUS_CHANGE 0x01
#define AVRC_EVT_TRACK_CHANGE 0x02
#define AVRC_EVT_TRACK_REACHED_END 0x03
#define AVRC_EVT_TRACK_REACHED_START 0x04
#define AVRC_EVT_PLAY_POS_CHANGED 0x05
#define AVRC_EVT_BATTERY_STATUS_CHANGE 0x06
#define AVRC_EVT_SYSTEM_STATUS_CHANGE 0x07
#define AVRC_EVT_APP_SETTING_CHANGE 0x08
/* added in AVRCP 1.4 */
#define AVRC_EVT_NOW_PLAYING_CHANGE 0x09
#define AVRC_EVT_AVAL_PLAYERS_CHANGE 0x0a
#define AVRC_EVT_ADDR_PLAYER_CHANGE 0x0b
#define AVRC_EVT_UIDS_CHANGE 0x0c
#define AVRC_EVT_VOLUME_CHANGE 0x0d

/* the number of events that can be registered for notifications */
#define AVRC_NUM_NOTIF_EVENTS 0x0d

#define AVRC_EVT_MSG_LEN_1 0x01
#define AVRC_EVT_MSG_LEN_2 0x02
#define AVRC_EVT_MSG_LEN_5 0x05
#define AVRC_EVT_MSG_LEN_9 0x09

#define AVRC_MAX_VOLUME 0x7F

/* Define the possible values of system status
*/
#define AVRC_SYSTEMSTATE_PWR_ON 0x00
#define AVRC_SYSTEMSTATE_PWR_OFF 0x01
#define AVRC_SYSTEMSTATE_PWR_UNPLUGGED 0x02
typedef uint8_t tAVRC_SYSTEMSTATE;

/* the frequently used character set ids */
#define AVRC_CHARSET_ID_ASCII ((uint16_t)0x0003) /* ASCII */
#define AVRC_CHARSET_ID_UTF8 ((uint16_t)0x006a)  /* UTF-8 */
#define AVRC_CHARSET_ID_UTF16 ((uint16_t)0x03f7) /* 1015 */
#define AVRC_CHARSET_ID_UTF32 ((uint16_t)0x03f9) /* 1017 */

/*****************************************************************************
 *  Advanced Control
 ****************************************************************************/
#define AVRC_ITEM_PLAYER 0x01
#define AVRC_ITEM_FOLDER 0x02
#define AVRC_ITEM_MEDIA 0x03

/* Media Player Item - Contains all available media players */
#define AVRC_SCOPE_PLAYER_LIST 0x00
/* Folder Item, Media Element Item - The virtual filesystem containing the media
 * content of the browsed player */
#define AVRC_SCOPE_FILE_SYSTEM 0x01
/* Media Element Item  The results of a search operation on the browsed player
 */
#define AVRC_SCOPE_SEARCH 0x02
/* Media Element Item  The Now Playing list (or queue) of the addressed player
 */
#define AVRC_SCOPE_NOW_PLAYING 0x03

#define AVRC_FOLDER_ITEM_COUNT_NONE 0xFF

/* folder type */
#define AVRC_FOLDER_TYPE_MIXED 0x00
#define AVRC_FOLDER_TYPE_TITLES 0x01
#define AVRC_FOLDER_TYPE_ALNUMS 0x02
#define AVRC_FOLDER_TYPE_ARTISTS 0x03
#define AVRC_FOLDER_TYPE_GENRES 0x04
#define AVRC_FOLDER_TYPE_PLAYLISTS 0x05
#define AVRC_FOLDER_TYPE_YEARS 0x06

/* major player type */
#define AVRC_MJ_TYPE_AUDIO 0x01    /* Audio */
#define AVRC_MJ_TYPE_VIDEO 0x02    /* Video */
#define AVRC_MJ_TYPE_BC_AUDIO 0x04 /* Broadcasting Audio */
#define AVRC_MJ_TYPE_BC_VIDEO 0x08 /* Broadcasting Video */
#define AVRC_MJ_TYPE_INVALID 0xF0

/* player sub type */
#define AVRC_SUB_TYPE_NONE 0x00
#define AVRC_SUB_TYPE_AUDIO_BOOK 0x01 /* Audio Book */
#define AVRC_SUB_TYPE_PODCAST 0x02    /* Podcast */
#define AVRC_SUB_TYPE_INVALID 0xFC

/* media item - media type */
#define AVRC_MEDIA_TYPE_AUDIO 0x00
#define AVRC_MEDIA_TYPE_VIDEO 0x01

#define AVRC_DIR_UP 0x00   /* Folder Up */
#define AVRC_DIR_DOWN 0x01 /* Folder Down */

#define AVRC_UID_SIZE 8
typedef uint8_t tAVRC_UID[AVRC_UID_SIZE];

/*****************************************************************************
 *  player attribute - supported features
 ****************************************************************************/
#define AVRC_PF_SELECT_BIT_NO 0
#define AVRC_PF_SELECT_MASK 0x01
#define AVRC_PF_SELECT_OFF 0
#define AVRC_PF_SELECT_SUPPORTED(x) \
  ((x)[AVRC_PF_SELECT_OFF] & AVRC_PF_SELECT_MASK)

#define AVRC_PF_UP_BIT_NO 1
#define AVRC_PF_UP_MASK 0x02
#define AVRC_PF_UP_OFF 0
#define AVRC_PF_UP_SUPPORTED(x) ((x)[AVRC_PF_UP_OFF] & AVRC_PF_UP_MASK)

#define AVRC_PF_DOWN_BIT_NO 2
#define AVRC_PF_DOWN_MASK 0x04
#define AVRC_PF_DOWN_OFF 0
#define AVRC_PF_DOWN_SUPPORTED(x) ((x)[AVRC_PF_DOWN_OFF] & AVRC_PF_DOWN_MASK)

#define AVRC_PF_LEFT_BIT_NO 3
#define AVRC_PF_LEFT_MASK 0x08
#define AVRC_PF_LEFT_OFF 0
#define AVRC_PF_LEFT_SUPPORTED(x) ((x)[AVRC_PF_LEFT_OFF] & AVRC_PF_LEFT_MASK)

#define AVRC_PF_RIGHT_BIT_NO 4
#define AVRC_PF_RIGHT_MASK 0x10
#define AVRC_PF_RIGHT_OFF 0
#define AVRC_PF_RIGHT_SUPPORTED(x) ((x)[AVRC_PF_RIGHT_OFF] & AVRC_PF_RIGHT_MASK)

#define AVRC_PF_RIGHTUP_BIT_NO 5
#define AVRC_PF_RIGHTUP_MASK 0x20
#define AVRC_PF_RIGHTUP_OFF 0
#define AVRC_PF_RIGHTUP_SUPPORTED(x) \
  ((x)[AVRC_PF_RIGHTUP_OFF] & AVRC_PF_RIGHTUP_MASK)

#define AVRC_PF_RIGHTDOWN_BIT_NO 6
#define AVRC_PF_RIGHTDOWN_MASK 0x40
#define AVRC_PF_RIGHTDOWN_OFF 0
#define AVRC_PF_RIGHTDOWN_SUPPORTED(x) \
  ((x)[AVRC_PF_RIGHTDOWN_OFF] & AVRC_PF_RIGHTDOWN_MASK)

#define AVRC_PF_LEFTUP_BIT_NO 7
#define AVRC_PF_LEFTUP_MASK 0x80
#define AVRC_PF_LEFTUP_OFF 0
#define AVRC_PF_LEFTUP_SUPPORTED(x) \
  ((x)[AVRC_PF_LEFTUP_OFF] & AVRC_PF_LEFTUP_MASK)

#define AVRC_PF_LEFTDOWN_BIT_NO 8
#define AVRC_PF_LEFTDOWN_MASK 0x01
#define AVRC_PF_LEFTDOWN_OFF 1
#define AVRC_PF_LEFTDOWN_SUPPORTED(x) \
  ((x)[AVRC_PF_LEFTDOWN_OFF] & AVRC_PF_LEFTDOWN_MASK)

#define AVRC_PF_ROOT_MENU_BIT_NO 9
#define AVRC_PF_ROOT_MENU_MASK 0x02
#define AVRC_PF_ROOT_MENU_OFF 1
#define AVRC_PF_ROOT_MENU_SUPPORTED(x) \
  ((x)[AVRC_PF_ROOT_MENU_OFF] & AVRC_PF_ROOT_MENU_MASK)

#define AVRC_PF_SETUP_MENU_BIT_NO 10
#define AVRC_PF_SETUP_MENU_MASK 0x04
#define AVRC_PF_SETUP_MENU_OFF 1
#define AVRC_PF_SETUP_MENU_SUPPORTED(x) \
  ((x)[AVRC_PF_SETUP_MENU_OFF] & AVRC_PF_SETUP_MENU_MASK)

#define AVRC_PF_CONTENTS_MENU_BIT_NO 11
#define AVRC_PF_CONTENTS_MENU_MASK 0x08
#define AVRC_PF_CONTENTS_MENU_OFF 1
#define AVRC_PF_CONTENTS_MENU_SUPPORTED(x) \
  ((x)[AVRC_PF_CONTENTS_MENU_OFF] & AVRC_PF_CONTENTS_MENU_MASK)

#define AVRC_PF_FAVORITE_MENU_BIT_NO 12
#define AVRC_PF_FAVORITE_MENU_MASK 0x10
#define AVRC_PF_FAVORITE_MENU_OFF 1
#define AVRC_PF_FAVORITE_MENU_SUPPORTED(x) \
  ((x)[AVRC_PF_FAVORITE_MENU_OFF] & AVRC_PF_FAVORITE_MENU_MASK)

#define AVRC_PF_EXIT_BIT_NO 13
#define AVRC_PF_EXIT_MASK 0x20
#define AVRC_PF_EXIT_OFF 1
#define AVRC_PF_EXIT_SUPPORTED(x) ((x)[AVRC_PF_EXIT_OFF] & AVRC_PF_EXIT_MASK)

#define AVRC_PF_0_BIT_NO 14
#define AVRC_PF_0_MASK 0x40
#define AVRC_PF_0_OFF 1
#define AVRC_PF_0_SUPPORTED(x) ((x)[AVRC_PF_0_OFF] & AVRC_PF_0_MASK)

#define AVRC_PF_1_BIT_NO 15
#define AVRC_PF_1_MASK 0x80
#define AVRC_PF_1_OFF 1
#define AVRC_PF_1_SUPPORTED(x) ((x)[AVRC_PF_1_OFF] & AVRC_PF_1_MASK)

#define AVRC_PF_2_BIT_NO 16
#define AVRC_PF_2_MASK 0x01
#define AVRC_PF_2_OFF 2
#define AVRC_PF_2_SUPPORTED(x) ((x)[AVRC_PF_2_OFF] & AVRC_PF_2_MASK)

#define AVRC_PF_3_BIT_NO 17
#define AVRC_PF_3_MASK 0x02
#define AVRC_PF_3_OFF 2
#define AVRC_PF_3_SUPPORTED(x) ((x)[AVRC_PF_3_OFF] & AVRC_PF_3_MASK)

#define AVRC_PF_4_BIT_NO 18
#define AVRC_PF_4_MASK 0x04
#define AVRC_PF_4_OFF 2
#define AVRC_PF_4_SUPPORTED(x) ((x)[AVRC_PF_4_OFF] & AVRC_PF_4_MASK)

#define AVRC_PF_5_BIT_NO 19
#define AVRC_PF_5_MASK 0x08
#define AVRC_PF_5_OFF 2
#define AVRC_PF_5_SUPPORTED(x) ((x)[AVRC_PF_5_OFF] & AVRC_PF_5_MASK)

#define AVRC_PF_6_BIT_NO 20
#define AVRC_PF_6_MASK 0x10
#define AVRC_PF_6_OFF 2
#define AVRC_PF_6_SUPPORTED(x) ((x)[AVRC_PF_6_OFF] & AVRC_PF_6_MASK)

#define AVRC_PF_7_BIT_NO 21
#define AVRC_PF_7_MASK 0x20
#define AVRC_PF_7_OFF 2
#define AVRC_PF_7_SUPPORTED(x) ((x)[AVRC_PF_7_OFF] & AVRC_PF_7_MASK)

#define AVRC_PF_8_BIT_NO 22
#define AVRC_PF_8_MASK 0x40
#define AVRC_PF_8_OFF 2
#define AVRC_PF_8_SUPPORTED(x) ((x)[AVRC_PF_8_OFF] & AVRC_PF_8_MASK)

#define AVRC_PF_9_BIT_NO 23
#define AVRC_PF_9_MASK 0x80
#define AVRC_PF_9_OFF 2
#define AVRC_PF_9_SUPPORTED(x) ((x)[AVRC_PF_9_OFF] & AVRC_PF_9_MASK)

#define AVRC_PF_DOT_BIT_NO 24
#define AVRC_PF_DOT_MASK 0x01
#define AVRC_PF_DOT_OFF 3
#define AVRC_PF_DOT_SUPPORTED(x) ((x)[AVRC_PF_DOT_OFF] & AVRC_PF_DOT_MASK)

#define AVRC_PF_ENTER_BIT_NO 25
#define AVRC_PF_ENTER_MASK 0x02
#define AVRC_PF_ENTER_OFF 3
#define AVRC_PF_ENTER_SUPPORTED(x) ((x)[AVRC_PF_ENTER_OFF] & AVRC_PF_ENTER_MASK)

#define AVRC_PF_CLEAR_BIT_NO 26
#define AVRC_PF_CLEAR_MASK 0x04
#define AVRC_PF_CLEAR_OFF 3
#define AVRC_PF_CLEAR_SUPPORTED(x) ((x)[AVRC_PF_CLEAR_OFF] & AVRC_PF_CLEAR_MASK)

#define AVRC_PF_CHNL_UP_BIT_NO 27
#define AVRC_PF_CHNL_UP_MASK 0x08
#define AVRC_PF_CHNL_UP_OFF 3
#define AVRC_PF_CHNL_UP_SUPPORTED(x) \
  ((x)[AVRC_PF_CHNL_UP_OFF] & AVRC_PF_CHNL_UP_MASK)

#define AVRC_PF_CHNL_DOWN_BIT_NO 28
#define AVRC_PF_CHNL_DOWN_MASK 0x10
#define AVRC_PF_CHNL_DOWN_OFF 3
#define AVRC_PF_CHNL_DOWN_SUPPORTED(x) \
  ((x)[AVRC_PF_CHNL_DOWN_OFF] & AVRC_PF_CHNL_DOWN_MASK)

#define AVRC_PF_PREV_CHNL_BIT_NO 29
#define AVRC_PF_PREV_CHNL_MASK 0x20
#define AVRC_PF_PREV_CHNL_OFF 3
#define AVRC_PF_PREV_CHNL_SUPPORTED(x) \
  ((x)[AVRC_PF_PREV_CHNL_OFF] & AVRC_PF_PREV_CHNL_MASK)

#define AVRC_PF_SOUND_SEL_BIT_NO 30
#define AVRC_PF_SOUND_SEL_MASK 0x40
#define AVRC_PF_SOUND_SEL_OFF 3
#define AVRC_PF_SOUND_SEL_SUPPORTED(x) \
  ((x)[AVRC_PF_SOUND_SEL_OFF] & AVRC_PF_SOUND_SEL_MASK)

#define AVRC_PF_INPUT_SEL_BIT_NO 31
#define AVRC_PF_INPUT_SEL_MASK 0x80
#define AVRC_PF_INPUT_SEL_OFF 3
#define AVRC_PF_INPUT_SEL_SUPPORTED(x) \
  ((x)[AVRC_PF_INPUT_SEL_OFF] & AVRC_PF_INPUT_SEL_MASK)

#define AVRC_PF_DISP_INFO_BIT_NO 32
#define AVRC_PF_DISP_INFO_MASK 0x01
#define AVRC_PF_DISP_INFO_OFF 4
#define AVRC_PF_DISP_INFO_SUPPORTED(x) \
  ((x)[AVRC_PF_DISP_INFO_OFF] & AVRC_PF_DISP_INFO_MASK)

#define AVRC_PF_HELP_BIT_NO 33
#define AVRC_PF_HELP_MASK 0x02
#define AVRC_PF_HELP_OFF 4
#define AVRC_PF_HELP_SUPPORTED(x) ((x)[AVRC_PF_HELP_OFF] & AVRC_PF_HELP_MASK)

#define AVRC_PF_PAGE_UP_BIT_NO 34
#define AVRC_PF_PAGE_UP_MASK 0x04
#define AVRC_PF_PAGE_UP_OFF 4
#define AVRC_PF_PAGE_UP_SUPPORTED(x) \
  ((x)[AVRC_PF_PAGE_UP_OFF] & AVRC_PF_PAGE_UP_MASK)

#define AVRC_PF_PAGE_DOWN_BIT_NO 35
#define AVRC_PF_PAGE_DOWN_MASK 0x08
#define AVRC_PF_PAGE_DOWN_OFF 4
#define AVRC_PF_PAGE_DOWN_SUPPORTED(x) \
  ((x)[AVRC_PF_PAGE_DOWN_OFF] & AVRC_PF_PAGE_DOWN_MASK)

#define AVRC_PF_POWER_BIT_NO 36
#define AVRC_PF_POWER_MASK 0x10
#define AVRC_PF_POWER_OFF 4
#define AVRC_PF_POWER_SUPPORTED(x) ((x)[AVRC_PF_POWER_OFF] & AVRC_PF_POWER_MASK)

#define AVRC_PF_VOL_UP_BIT_NO 37
#define AVRC_PF_VOL_UP_MASK 0x20
#define AVRC_PF_VOL_UP_OFF 4
#define AVRC_PF_VOL_UP_SUPPORTED(x) \
  ((x)[AVRC_PF_VOL_UP_OFF] & AVRC_PF_VOL_UP_MASK)

#define AVRC_PF_VOL_DOWN_BIT_NO 38
#define AVRC_PF_VOL_DOWN_MASK 0x40
#define AVRC_PF_VOL_DOWN_OFF 4
#define AVRC_PF_VOL_DOWN_SUPPORTED(x) \
  ((x)[AVRC_PF_VOL_DOWN_OFF] & AVRC_PF_VOL_DOWN_MASK)

#define AVRC_PF_MUTE_BIT_NO 39
#define AVRC_PF_MUTE_MASK 0x80
#define AVRC_PF_MUTE_OFF 4
#define AVRC_PF_MUTE_SUPPORTED(x) ((x)[AVRC_PF_MUTE_OFF] & AVRC_PF_MUTE_MASK)

#define AVRC_PF_PLAY_BIT_NO 40
#define AVRC_PF_PLAY_MASK 0x01
#define AVRC_PF_PLAY_OFF 5
#define AVRC_PF_PLAY_SUPPORTED(x) ((x)[AVRC_PF_PLAY_OFF] & AVRC_PF_PLAY_MASK)

#define AVRC_PF_STOP_BIT_NO 41
#define AVRC_PF_STOP_MASK 0x02
#define AVRC_PF_STOP_OFF 5
#define AVRC_PF_STOP_SUPPORTED(x) ((x)[AVRC_PF_STOP_OFF] & AVRC_PF_STOP_MASK)

#define AVRC_PF_PAUSE_BIT_NO 42
#define AVRC_PF_PAUSE_MASK 0x04
#define AVRC_PF_PAUSE_OFF 5
#define AVRC_PF_PAUSE_SUPPORTED(x) ((x)[AVRC_PF_PAUSE_OFF] & AVRC_PF_PAUSE_MASK)

#define AVRC_PF_RECORD_BIT_NO 43
#define AVRC_PF_RECORD_MASK 0x08
#define AVRC_PF_RECORD_OFF 5
#define AVRC_PF_RECORD_SUPPORTED(x) \
  ((x)[AVRC_PF_RECORD_OFF] & AVRC_PF_RECORD_MASK)

#define AVRC_PF_REWIND_BIT_NO 44
#define AVRC_PF_REWIND_MASK 0x10
#define AVRC_PF_REWIND_OFF 5
#define AVRC_PF_REWIND_SUPPORTED(x) \
  ((x)[AVRC_PF_REWIND_OFF] & AVRC_PF_REWIND_MASK)

#define AVRC_PF_FAST_FWD_BIT_NO 45
#define AVRC_PF_FAST_FWD_MASK 0x20
#define AVRC_PF_FAST_FWD_OFF 5
#define AVRC_PF_FAST_FWD_SUPPORTED(x) \
  ((x)[AVRC_PF_FAST_FWD_OFF] & AVRC_PF_FAST_FWD_MASK)

#define AVRC_PF_EJECT_BIT_NO 46
#define AVRC_PF_EJECT_MASK 0x40
#define AVRC_PF_EJECT_OFF 5
#define AVRC_PF_EJECT_SUPPORTED(x) ((x)[AVRC_PF_EJECT_OFF] & AVRC_PF_EJECT_MASK)

#define AVRC_PF_FORWARD_BIT_NO 47
#define AVRC_PF_FORWARD_MASK 0x80
#define AVRC_PF_FORWARD_OFF 5
#define AVRC_PF_FORWARD_SUPPORTED(x) \
  ((x)[AVRC_PF_FORWARD_OFF] & AVRC_PF_FORWARD_MASK)

#define AVRC_PF_BACKWARD_BIT_NO 48
#define AVRC_PF_BACKWARD_MASK 0x01
#define AVRC_PF_BACKWARD_OFF 6
#define AVRC_PF_BACKWARD_SUPPORTED(x) \
  ((x)[AVRC_PF_BACKWARD_OFF] & AVRC_PF_BACKWARD_MASK)

#define AVRC_PF_ANGLE_BIT_NO 49
#define AVRC_PF_ANGLE_MASK 0x02
#define AVRC_PF_ANGLE_OFF 6
#define AVRC_PF_ANGLE_SUPPORTED(x) ((x)[AVRC_PF_ANGLE_OFF] & AVRC_PF_ANGLE_MASK)

#define AVRC_PF_SUBPICTURE_BIT_NO 50
#define AVRC_PF_SUBPICTURE_MASK 0x04
#define AVRC_PF_SUBPICTURE_OFF 6
#define AVRC_PF_SUBPICTURE_SUPPORTED(x) \
  ((x)[AVRC_PF_SUBPICTURE_OFF] & AVRC_PF_SUBPICTURE_MASK)

#define AVRC_PF_F1_BIT_NO 51
#define AVRC_PF_F1_MASK 0x08
#define AVRC_PF_F1_OFF 6
#define AVRC_PF_F1_SUPPORTED(x) ((x)[AVRC_PF_F1_OFF] & AVRC_PF_F1_MASK)

#define AVRC_PF_F2_BIT_NO 52
#define AVRC_PF_F2_MASK 0x10
#define AVRC_PF_F2_OFF 6
#define AVRC_PF_F2_SUPPORTED(x) ((x)[AVRC_PF_F2_OFF] & AVRC_PF_F2_MASK)

#define AVRC_PF_F3_BIT_NO 53
#define AVRC_PF_F3_MASK 0x20
#define AVRC_PF_F3_OFF 6
#define AVRC_PF_F3_SUPPORTED(x) ((x)[AVRC_PF_F3_OFF] & AVRC_PF_F3_MASK)

#define AVRC_PF_F4_BIT_NO 54
#define AVRC_PF_F4_MASK 0x40
#define AVRC_PF_F4_OFF 6
#define AVRC_PF_F4_SUPPORTED(x) ((x)[AVRC_PF_F4_OFF] & AVRC_PF_F4_MASK)

#define AVRC_PF_F5_BIT_NO 55
#define AVRC_PF_F5_MASK 0x80
#define AVRC_PF_F5_OFF 6
#define AVRC_PF_F5_SUPPORTED(x) ((x)[AVRC_PF_F5_OFF] & AVRC_PF_F5_MASK)

/* Vendor unique. This PASSTHROUGH command is supported. */
#define AVRC_PF_VENDOR_BIT_NO 56
#define AVRC_PF_VENDOR_MASK 0x01
#define AVRC_PF_VENDOR_OFF 7
#define AVRC_PF_VENDOR_SUPPORTED(x) \
  ((x)[AVRC_PF_VENDOR_OFF] & AVRC_PF_VENDOR_MASK)

/* Basic Group Navigation.  This overrules the SDP entry as it is set per
 * player.7 */
#define AVRC_PF_GROUP_NAVI_BIT_NO 57
#define AVRC_PF_GROUP_NAVI_MASK 0x02
#define AVRC_PF_GROUP_NAVI_OFF 7
#define AVRC_PF_GROUP_NAVI_SUPPORTED(x) \
  ((x)[AVRC_PF_GROUP_NAVI_OFF] & AVRC_PF_GROUP_NAVI_MASK)

/* Advanced Control Player.  This bit is set if the player supports at least
 * AVRCP 1.4. */
#define AVRC_PF_ADV_CTRL_BIT_NO 58
#define AVRC_PF_ADV_CTRL_MASK 0x04
#define AVRC_PF_ADV_CTRL_OFF 7
#define AVRC_PF_ADV_CTRL_SUPPORTED(x) \
  ((x)[AVRC_PF_ADV_CTRL_OFF] & AVRC_PF_ADV_CTRL_MASK)

/* Browsing.  This bit is set if the player supports browsing. */
#define AVRC_PF_BROWSE_BIT_NO 59
#define AVRC_PF_BROWSE_MASK 0x08
#define AVRC_PF_BROWSE_OFF 7
#define AVRC_PF_BROWSE_SUPPORTED(x) \
  ((x)[AVRC_PF_BROWSE_OFF] & AVRC_PF_BROWSE_MASK)

/* Searching. This bit is set if the player supports searching. */
#define AVRC_PF_SEARCH_BIT_NO 60
#define AVRC_PF_SEARCH_MASK 0x10
#define AVRC_PF_SEARCH_OFF 7
#define AVRC_PF_SEARCH_SUPPORTED(x) \
  ((x)[AVRC_PF_SEARCH_OFF] & AVRC_PF_SEARCH_MASK)

/* AddToNowPlaying.  This bit is set if the player supports the AddToNowPlaying
 * command. */
#define AVRC_PF_ADD2NOWPLAY_BIT_NO 61
#define AVRC_PF_ADD2NOWPLAY_MASK 0x20
#define AVRC_PF_ADD2NOWPLAY_OFF 7
#define AVRC_PF_ADD2NOWPLAY_SUPPORTED(x) \
  ((x)[AVRC_PF_ADD2NOWPLAY_OFF] & AVRC_PF_ADD2NOWPLAY_MASK)

/* UIDs unique in player browse tree.  This bit is set if the player is able to
 * maintain unique UIDs across the player browse tree. */
#define AVRC_PF_UID_UNIQUE_BIT_NO 62
#define AVRC_PF_UID_UNIQUE_MASK 0x40
#define AVRC_PF_UID_UNIQUE_OFF 7
#define AVRC_PF_UID_UNIQUE_SUPPORTED(x) \
  ((x)[AVRC_PF_UID_UNIQUE_OFF] & AVRC_PF_UID_UNIQUE_MASK)

/* OnlyBrowsableWhenAddressed.  This bit is set if the player is only able to be
 * browsed when it is set as the Addressed Player. */
#define AVRC_PF_BR_WH_ADDR_BIT_NO 63
#define AVRC_PF_BR_WH_ADDR_MASK 0x80
#define AVRC_PF_BR_WH_ADDR_OFF 7
#define AVRC_PF_BR_WH_ADDR_SUPPORTED(x) \
  ((x)[AVRC_PF_BR_WH_ADDR_OFF] & AVRC_PF_BR_WH_ADDR_MASK)

/* OnlySearchableWhenAddressed.  This bit is set if the player is only able to
 * be searched when it is set as the Addressed player. */
#define AVRC_PF_SEARCH_WH_ADDR_BIT_NO 64
#define AVRC_PF_SEARCH_WH_ADDR_MASK 0x01
#define AVRC_PF_SEARCH_WH_ADDR_OFF 8
#define AVRC_PF_SEARCH_WH_ADDR_SUPPORTED(x) \
  ((x)[AVRC_PF_SEARCH_WH_ADDR_OFF] & AVRC_PF_SEARCH_WH_ADDR_MASK)

/* NowPlaying.  This bit is set if the player supports the NowPlaying folder.
 * Note that for all players that support browsing this bit shall be set */
#define AVRC_PF_NOW_PLAY_BIT_NO 65
#define AVRC_PF_NOW_PLAY_MASK 0x02
#define AVRC_PF_NOW_PLAY_OFF 8
#define AVRC_PF_NOW_PLAY_SUPPORTED(x) \
  ((x)[AVRC_PF_NOW_PLAY_OFF] & AVRC_PF_NOW_PLAY_MASK)

/* UIDPersistency.  This bit is set if the Player is able to persist UID values
 * between AVRCP Browse Reconnect */
#define AVRC_PF_UID_PERSIST_BIT_NO 66
#define AVRC_PF_UID_PERSIST_MASK 0x04
#define AVRC_PF_UID_PERSIST_OFF 8
#define AVRC_PF_UID_PERSIST_SUPPORTED(x) \
  ((x)[AVRC_PF_UID_PERSIST_OFF] & AVRC_PF_UID_PERSIST_MASK)

/* NumberOfItems. This bit is set if player supports the GetTotalNumberOfItems
 * browsing command. */
#define AVRC_PF_GET_NUM_OF_ITEMS_BIT_NO 67
#define AVRC_PF_GET_NUM_OF_ITEMS_MASK 0x08
#define AVRC_PF_GET_NUM_OF_ITEMS_OFF 8
#define AVRC_PF_GET_NUM_OF_ITEMS_SUPPORTED(x) \
  ((x)[AVRC_PF_GET_NUM_OF_ITEMS_OFF] & AVRC_PF_GET_NUM_OF_ITEMS_MASK)

/*****************************************************************************
 *  data type definitions
 ****************************************************************************/

/*
This structure contains the header parameters of an AV/C message.
*/
typedef struct {
  uint8_t ctype;        /* Command type.  */
  uint8_t subunit_type; /* Subunit type. */
  uint8_t subunit_id; /* Subunit ID.  This value is typically ignored in AVRCP,
                       * except for VENDOR DEPENDENT messages when the value is
                       * vendor-dependent.  Value range is 0-7. */
  uint8_t opcode;     /* Op Code (passthrough, vendor, etc) */
} tAVRC_HDR;

/* This structure contains a UNIT INFO message. */
typedef struct {
  tAVRC_HDR hdr;       /* Message header. */
  uint32_t company_id; /* Company identifier. */
  uint8_t unit_type;   /* Unit type.  Uses the same values as subunit type. */
  uint8_t unit;        /* This value is vendor dependent and typically zero.  */
} tAVRC_MSG_UNIT;

/* This structure contains a SUBUNIT INFO message. */
typedef struct {
  tAVRC_HDR hdr; /* Message header. */
  uint8_t subunit_type[AVRC_SUB_TYPE_LEN];
  /* Array containing subunit type values.  */
  bool panel;   /* true if the panel subunit type is in the
                 * subunit_type array, false otherwise. */
  uint8_t page; /* Specifies which part of the subunit type table is
                 * returned.  For AVRCP it is typically zero.
                 * Value range is 0-7. */
} tAVRC_MSG_SUB;

/* This structure contains a VENDOR DEPENDENT message. */
typedef struct {
  tAVRC_HDR hdr;          /* Message header. */
  uint32_t company_id;    /* Company identifier. */
  uint8_t* p_vendor_data; /* Pointer to vendor dependent data. */
  uint16_t vendor_len;    /* Length in bytes of vendor dependent data. */
} tAVRC_MSG_VENDOR;

/* PASS THROUGH message structure */
typedef struct {
  tAVRC_HDR hdr;        /* hdr.ctype Unused.
                         * hdr.subunit_type Unused.
                         * hdr.subunit_id Unused. */
  uint8_t op_id;        /* Operation ID.  */
  uint8_t state;        /* Keypress state.  */
  uint8_t* p_pass_data; /* Pointer to data.  This parameter is only valid
                         * when the op_id is AVRC_ID_VENDOR.*/
  uint8_t pass_len;     /* Length in bytes of data. This parameter is only
                         * valid when the op_id is AVRC_ID_VENDOR.*/
} tAVRC_MSG_PASS;

/* Command/Response indicator. */
#define AVRC_CMD AVCT_CMD /* Command message */
#define AVRC_RSP AVCT_RSP /* Response message */

/* Browsing channel message structure */
typedef struct {
  tAVRC_HDR hdr;          /* hdr.ctype AVRC_CMD or AVRC_RSP.
                           * hdr.subunit_type Unused.
                           * hdr.subunit_id Unused. */
  uint8_t* p_browse_data; /* Pointer to data.  */
  uint16_t browse_len;    /* Length in bytes of data. */
  BT_HDR* p_browse_pkt; /* The GKI buffer received. Set to NULL, if the callback
                           function wants to keep the buffer */
} tAVRC_MSG_BROWSE;

/* This is a union of all message type structures. */
typedef union {
  tAVRC_HDR hdr;           /* Message header. */
  tAVRC_MSG_UNIT unit;     /* UNIT INFO message. */
  tAVRC_MSG_SUB sub;       /* SUBUNIT INFO message. */
  tAVRC_MSG_VENDOR vendor; /* VENDOR DEPENDENT message. */
  tAVRC_MSG_PASS pass;     /* PASS THROUGH message. */
  tAVRC_MSG_BROWSE browse; /* messages thru browsing channel */
} tAVRC_MSG;

/* macros */
#define AVRC_IS_VALID_CAP_ID(a)                                         \
  ((((a) == AVRC_CAP_COMPANY_ID) || ((a) == AVRC_CAP_EVENTS_SUPPORTED)) \
       ? true                                                           \
       : false)

#define AVRC_IS_VALID_EVENT_ID(a)                                            \
  ((((a) >= AVRC_EVT_PLAY_STATUS_CHANGE) && ((a) <= AVRC_EVT_VOLUME_CHANGE)) \
       ? true                                                                \
       : false)

#define AVRC_IS_VALID_ATTRIBUTE(a)                      \
  ((((((a) > 0) && (a) <= AVRC_PLAYER_SETTING_SCAN)) || \
    ((a) >= AVRC_PLAYER_SETTING_LOW_MENU_EXT))          \
       ? true                                           \
       : false)

#define AVRC_IS_VALID_MEDIA_ATTRIBUTE(a)            \
  (((a) >= AVRC_MEDIA_ATTR_ID_TITLE) &&             \
           ((a) <= AVRC_MEDIA_ATTR_ID_PLAYING_TIME) \
       ? true                                       \
       : false)

#define AVRC_IS_VALID_BATTERY_STATUS(a) \
  (((a) <= AVRC_BATTERY_STATUS_FULL_CHARGE) ? true : false)

#define AVRC_IS_VALID_SYSTEM_STATUS(a) \
  (((a) <= AVRC_SYSTEMSTATE_PWR_UNPLUGGED) ? true : false)

#define AVRC_IS_VALID_GROUP(a) (((a) <= AVRC_PDU_PREV_GROUP) ? true : false)

/* Company ID is 24-bit integer We can not use the macros in bt_types.h */
#define AVRC_CO_ID_TO_BE_STREAM(p, u32) \
  {                                     \
    *(p)++ = (uint8_t)((u32) >> 16);    \
    *(p)++ = (uint8_t)((u32) >> 8);     \
    *(p)++ = (uint8_t)(u32);            \
  }
#define AVRC_BE_STREAM_TO_CO_ID(u32, p)                                   \
  {                                                                       \
    (u32) = (((uint32_t)(*((p) + 2))) + (((uint32_t)(*((p) + 1))) << 8) + \
             (((uint32_t)(*(p))) << 16));                                 \
    (p) += 3;                                                             \
  }

/*****************************************************************************
 *  data type definitions
 ****************************************************************************/
#define AVRC_MAX_APP_ATTR_SIZE 16
#define AVRC_MAX_CHARSET_SIZE 16
#define AVRC_MAX_ELEM_ATTR_SIZE 8

/*****************************************************************************
 *  Metadata transfer Building/Parsing definitions
 ****************************************************************************/

typedef struct {
  uint16_t charset_id;
  uint16_t str_len;
  uint8_t* p_str;
} tAVRC_FULL_NAME;

typedef struct {
  uint16_t str_len;
  uint8_t* p_str;
} tAVRC_NAME;

#ifndef AVRC_CAP_MAX_NUM_COMP_ID
#define AVRC_CAP_MAX_NUM_COMP_ID 4
#endif

#ifndef AVRC_CAP_MAX_NUM_EVT_ID
#define AVRC_CAP_MAX_NUM_EVT_ID 16
#endif

typedef union {
  uint32_t company_id[AVRC_CAP_MAX_NUM_COMP_ID];
  uint8_t event_id[AVRC_CAP_MAX_NUM_EVT_ID];
} tAVRC_CAPS_PARAM;

typedef struct {
  uint8_t attr_id;
  uint8_t attr_val;
} tAVRC_APP_SETTING;

typedef struct {
  uint8_t attr_id;
  uint16_t charset_id;
  uint8_t str_len;
  uint8_t* p_str;
} tAVRC_APP_SETTING_TEXT;

typedef uint8_t tAVRC_FEATURE_MASK[AVRC_FEATURE_MASK_SIZE];

typedef struct {
  uint16_t player_id;  /* A unique identifier for this media player.*/
  uint8_t major_type;  /* Use AVRC_MJ_TYPE_AUDIO, AVRC_MJ_TYPE_VIDEO,
                          AVRC_MJ_TYPE_BC_AUDIO, or AVRC_MJ_TYPE_BC_VIDEO.*/
  uint32_t sub_type;   /* Use AVRC_SUB_TYPE_NONE, AVRC_SUB_TYPE_AUDIO_BOOK, or
                          AVRC_SUB_TYPE_PODCAST*/
  uint8_t play_status; /* Use AVRC_PLAYSTATE_STOPPED, AVRC_PLAYSTATE_PLAYING,
                          AVRC_PLAYSTATE_PAUSED, AVRC_PLAYSTATE_FWD_SEEK,
                           AVRC_PLAYSTATE_REV_SEEK, or AVRC_PLAYSTATE_ERROR*/
  tAVRC_FEATURE_MASK features; /* Supported feature bit mask*/
  tAVRC_FULL_NAME name; /* The player name, name length and character set id.*/
} tAVRC_ITEM_PLAYER;

typedef struct {
  tAVRC_UID uid;        /* The uid of this folder */
  uint8_t type;         /* Use AVRC_FOLDER_TYPE_MIXED, AVRC_FOLDER_TYPE_TITLES,
                           AVRC_FOLDER_TYPE_ALNUMS, AVRC_FOLDER_TYPE_ARTISTS,
                           AVRC_FOLDER_TYPE_GENRES,
                           AVRC_FOLDER_TYPE_PLAYLISTS, or AVRC_FOLDER_TYPE_YEARS.*/
  bool playable;        /* true, if the folder can be played. */
  tAVRC_FULL_NAME name; /* The folder name, name length and character set id. */
} tAVRC_ITEM_FOLDER;

typedef struct {
  uint32_t
      attr_id; /* Use AVRC_MEDIA_ATTR_ID_TITLE, AVRC_MEDIA_ATTR_ID_ARTIST,
                  AVRC_MEDIA_ATTR_ID_ALBUM,
                  AVRC_MEDIA_ATTR_ID_TRACK_NUM, AVRC_MEDIA_ATTR_ID_NUM_TRACKS,
                  AVRC_MEDIA_ATTR_ID_GENRE, AVRC_MEDIA_ATTR_ID_PLAYING_TIME */
  tAVRC_FULL_NAME
      name; /* The attribute value, value length and character set id. */
} tAVRC_ATTR_ENTRY;

typedef struct {
  tAVRC_UID uid; /* The uid of this media element item */
  uint8_t type;  /* Use AVRC_MEDIA_TYPE_AUDIO or AVRC_MEDIA_TYPE_VIDEO. */
  tAVRC_FULL_NAME name; /* The media name, name length and character set id. */
  uint8_t attr_count;   /* The number of attributes in p_attr_list */
  tAVRC_ATTR_ENTRY* p_attr_list; /* Attribute entry list. */
} tAVRC_ITEM_MEDIA;

typedef struct {
  uint8_t
      item_type; /* AVRC_ITEM_PLAYER, AVRC_ITEM_FOLDER, or AVRC_ITEM_MEDIA */
  union {
    tAVRC_ITEM_PLAYER player; /* The properties of a media player item.*/
    tAVRC_ITEM_FOLDER folder; /* The properties of a folder item.*/
    tAVRC_ITEM_MEDIA media;   /* The properties of a media item.*/
  } u;
} tAVRC_ITEM;

/* GetCapability */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */
  uint8_t capability_id;
} tAVRC_GET_CAPS_CMD;

/* ListPlayerAppValues */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */
  uint8_t attr_id;
} tAVRC_LIST_APP_VALUES_CMD;

/* GetCurAppValue */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */
  uint8_t num_attr;
  uint8_t attrs[AVRC_MAX_APP_ATTR_SIZE];
} tAVRC_GET_CUR_APP_VALUE_CMD;

/* SetAppValue */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */
  uint8_t num_val;
  tAVRC_APP_SETTING* p_vals;
} tAVRC_SET_APP_VALUE_CMD;

/* GetAppAttrTxt */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */
  uint8_t num_attr;
  uint8_t attrs[AVRC_MAX_APP_ATTR_SIZE];
} tAVRC_GET_APP_ATTR_TXT_CMD;

/* GetAppValueTxt */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */
  uint8_t attr_id;
  uint8_t num_val;
  uint8_t vals[AVRC_MAX_APP_ATTR_SIZE];
} tAVRC_GET_APP_VAL_TXT_CMD;

/* InformCharset */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */
  uint8_t num_id;
  uint16_t charsets[AVRC_MAX_CHARSET_SIZE];
} tAVRC_INFORM_CHARSET_CMD;

/* InformBatteryStatus */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */
  uint8_t battery_status;
} tAVRC_BATTERY_STATUS_CMD;

/* GetElemAttrs */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */
  uint8_t num_attr;
  uint32_t attrs[AVRC_MAX_ELEM_ATTR_SIZE];
} tAVRC_GET_ELEM_ATTRS_CMD;

/* RegNotify */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */
  uint8_t event_id;
  uint32_t param;
} tAVRC_REG_NOTIF_CMD;

/* SetAddrPlayer */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */
  uint16_t player_id;
} tAVRC_SET_ADDR_PLAYER_CMD;

/* SetBrowsedPlayer */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */
  uint16_t player_id;
} tAVRC_SET_BR_PLAYER_CMD;

/* SetAbsVolume */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */
  uint8_t volume;
} tAVRC_SET_VOLUME_CMD;

/* GetFolderItems */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */
  uint8_t scope;
  uint32_t start_item;
  uint32_t end_item;
  uint8_t attr_count;
  uint32_t* p_attr_list;
} tAVRC_GET_ITEMS_CMD;

/* ChangePath */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */
  uint16_t uid_counter;
  uint8_t direction;
  tAVRC_UID folder_uid;
} tAVRC_CHG_PATH_CMD;

/* GetItemAttrs */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */
  uint8_t scope;
  tAVRC_UID uid;
  uint16_t uid_counter;
  uint8_t attr_count;
  uint32_t* p_attr_list;
} tAVRC_GET_ATTRS_CMD;

/* Search */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */
  tAVRC_FULL_NAME string;
} tAVRC_SEARCH_CMD;

/* PlayItem */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */
  uint8_t scope;
  tAVRC_UID uid;
  uint16_t uid_counter;
} tAVRC_PLAY_ITEM_CMD;

/* AddToNowPlaying */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */
  uint8_t scope;
  tAVRC_UID uid;
  uint16_t uid_counter;
} tAVRC_ADD_TO_PLAY_CMD;

/* GetTotalNumOfItems */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */
  uint8_t scope;
} tAVRC_GET_NUM_OF_ITEMS_CMD;

typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */
} tAVRC_CMD;

/* Continue and Abort */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (assigned by AVRC_BldCommand according to pdu) */
  uint8_t target_pdu;
} tAVRC_NEXT_CMD;

typedef union {
  uint8_t pdu;
  tAVRC_CMD cmd;
  tAVRC_GET_CAPS_CMD get_caps;                    /* GetCapability */
  tAVRC_CMD list_app_attr;                        /* ListPlayerAppAttr */
  tAVRC_LIST_APP_VALUES_CMD list_app_values;      /* ListPlayerAppValues */
  tAVRC_GET_CUR_APP_VALUE_CMD get_cur_app_val;    /* GetCurAppValue */
  tAVRC_SET_APP_VALUE_CMD set_app_val;            /* SetAppValue */
  tAVRC_GET_APP_ATTR_TXT_CMD get_app_attr_txt;    /* GetAppAttrTxt */
  tAVRC_GET_APP_VAL_TXT_CMD get_app_val_txt;      /* GetAppValueTxt */
  tAVRC_INFORM_CHARSET_CMD inform_charset;        /* InformCharset */
  tAVRC_BATTERY_STATUS_CMD inform_battery_status; /* InformBatteryStatus */
  tAVRC_GET_ELEM_ATTRS_CMD get_elem_attrs;        /* GetElemAttrs */
  tAVRC_CMD get_play_status;                      /* GetPlayStatus */
  tAVRC_REG_NOTIF_CMD reg_notif;                  /* RegNotify */
  tAVRC_NEXT_CMD continu;                         /* Continue */
  tAVRC_NEXT_CMD abort;                           /* Abort */

  tAVRC_SET_ADDR_PLAYER_CMD addr_player;       /* SetAddrPlayer */
  tAVRC_SET_VOLUME_CMD volume;                 /* SetAbsVolume */
  tAVRC_SET_BR_PLAYER_CMD br_player;           /* SetBrowsedPlayer */
  tAVRC_GET_ITEMS_CMD get_items;               /* GetFolderItems */
  tAVRC_CHG_PATH_CMD chg_path;                 /* ChangePath */
  tAVRC_GET_ATTRS_CMD get_attrs;               /* GetItemAttrs */
  tAVRC_SEARCH_CMD search;                     /* Search */
  tAVRC_PLAY_ITEM_CMD play_item;               /* PlayItem */
  tAVRC_ADD_TO_PLAY_CMD add_to_play;           /* AddToNowPlaying */
  tAVRC_GET_NUM_OF_ITEMS_CMD get_num_of_items; /* GetTotalNumOfItems */
} tAVRC_COMMAND;

/* GetCapability */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse
                     user. invalid one to generate according to pdu) */
  uint8_t capability_id;
  uint8_t count;
  tAVRC_CAPS_PARAM param;
} tAVRC_GET_CAPS_RSP;

/* ListPlayerAppAttr */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse
                     user. invalid one to generate according to pdu) */
  uint8_t num_attr;
  uint8_t attrs[AVRC_MAX_APP_ATTR_SIZE];
} tAVRC_LIST_APP_ATTR_RSP;

/* ListPlayerAppValues */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse
                     user. invalid one to generate according to pdu) */
  uint8_t num_val;
  uint8_t vals[AVRC_MAX_APP_ATTR_SIZE];
} tAVRC_LIST_APP_VALUES_RSP;

/* GetCurAppValue */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse
                     user. invalid one to generate according to pdu) */
  uint8_t num_val;
  tAVRC_APP_SETTING* p_vals;
} tAVRC_GET_CUR_APP_VALUE_RSP;

/* GetAppAttrTxt */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse
                     user. invalid one to generate according to pdu) */
  uint8_t num_attr;
  tAVRC_APP_SETTING_TEXT* p_attrs;
} tAVRC_GET_APP_ATTR_TXT_RSP;

/* GetPlayStatus */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse
                     user. invalid one to generate according to pdu) */
  uint32_t song_len;
  uint32_t song_pos;
  uint8_t play_status;
} tAVRC_GET_PLAY_STATUS_RSP;

/* notification event parameter for AddressedPlayer change */
typedef struct {
  uint16_t player_id;
  uint16_t uid_counter;
} tAVRC_ADDR_PLAYER_PARAM;

#ifndef AVRC_MAX_APP_SETTINGS
#define AVRC_MAX_APP_SETTINGS 8
#endif

/* notification event parameter for Player Application setting change */
typedef struct {
  uint8_t num_attr;
  uint8_t attr_id[AVRC_MAX_APP_SETTINGS];
  uint8_t attr_value[AVRC_MAX_APP_SETTINGS];
} tAVRC_PLAYER_APP_PARAM;

typedef union {
  tAVRC_PLAYSTATE play_status;
  tAVRC_UID track;
  uint32_t play_pos;
  tAVRC_BATTERY_STATUS battery_status;
  tAVRC_SYSTEMSTATE system_status;
  tAVRC_PLAYER_APP_PARAM player_setting;
  tAVRC_ADDR_PLAYER_PARAM addr_player;
  uint16_t uid_counter;
  uint8_t volume;
} tAVRC_NOTIF_RSP_PARAM;

/* RegNotify */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse
                     user. invalid one to generate according to pdu) */
  uint8_t event_id;
  tAVRC_NOTIF_RSP_PARAM param;
} tAVRC_REG_NOTIF_RSP;

/* SetAbsVolume */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse
                     user. invalid one to generate according to pdu) */
  uint8_t volume;
} tAVRC_SET_VOLUME_RSP;

/* SetBrowsedPlayer */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse
                     user. invalid one to generate according to pdu) */
  uint16_t uid_counter;
  uint32_t num_items;
  uint16_t charset_id;
  uint8_t folder_depth;
  tAVRC_NAME* p_folders;
} tAVRC_SET_BR_PLAYER_RSP;

/* GetFolderItems */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse
                     user. invalid one to generate according to pdu) */
  uint16_t uid_counter;
  uint16_t item_count;
  tAVRC_ITEM* p_item_list;
} tAVRC_GET_ITEMS_RSP;

/* ChangePath */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse
                     user. invalid one to generate according to pdu) */
  uint32_t num_items;
} tAVRC_CHG_PATH_RSP;

/* GetItemAttrs, GetElemAttrs */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse
                     user. invalid one to generate according to pdu) */
  uint8_t num_attrs;
  tAVRC_ATTR_ENTRY* p_attrs;
} tAVRC_GET_ATTRS_RSP;

/* Get Total Number of Items */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse
                     user. invalid one to generate according to pdu) */
  uint16_t uid_counter;
  uint32_t num_items;
} tAVRC_GET_NUM_OF_ITEMS_RSP;

/* Search */
typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse
                     user. invalid one to generate according to pdu) */
  uint16_t uid_counter;
  uint32_t num_items;
} tAVRC_SEARCH_RSP;

typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse
                     user. invalid one to generate according to pdu) */
  uint8_t target_pdu;
} tAVRC_NEXT_RSP;

typedef struct {
  uint8_t pdu;
  tAVRC_STS status;
  uint8_t opcode; /* Op Code (copied from avrc_cmd.opcode by AVRC_BldResponse
                     user. invalid one to generate according to pdu) */
} tAVRC_RSP;

typedef union {
  uint8_t pdu;
  tAVRC_RSP rsp;
  tAVRC_GET_CAPS_RSP get_caps;                 /* GetCapability */
  tAVRC_LIST_APP_ATTR_RSP list_app_attr;       /* ListPlayerAppAttr */
  tAVRC_LIST_APP_VALUES_RSP list_app_values;   /* ListPlayerAppValues */
  tAVRC_GET_CUR_APP_VALUE_RSP get_cur_app_val; /* GetCurAppValue */
  tAVRC_RSP set_app_val;                       /* SetAppValue */
  tAVRC_GET_APP_ATTR_TXT_RSP get_app_attr_txt; /* GetAppAttrTxt */
  tAVRC_GET_APP_ATTR_TXT_RSP get_app_val_txt;  /* GetAppValueTxt */
  tAVRC_RSP inform_charset;                    /* InformCharset */
  tAVRC_RSP inform_battery_status;             /* InformBatteryStatus */
  tAVRC_GET_PLAY_STATUS_RSP get_play_status;   /* GetPlayStatus */
  tAVRC_REG_NOTIF_RSP reg_notif;               /* RegNotify */
  tAVRC_NEXT_RSP continu;                      /* Continue */
  tAVRC_NEXT_RSP abort;                        /* Abort */
  tAVRC_RSP addr_player;                       /* SetAddrPlayer */
  tAVRC_SET_VOLUME_RSP volume;                 /* SetAbsVolume */
  tAVRC_SET_BR_PLAYER_RSP br_player;           /* SetBrowsedPlayer */
  tAVRC_GET_ITEMS_RSP get_items;               /* GetFolderItems */
  tAVRC_CHG_PATH_RSP chg_path;                 /* ChangePath */
  tAVRC_GET_ATTRS_RSP get_attrs;               /* GetItemAttrs, GetElemAttrs */
  tAVRC_GET_NUM_OF_ITEMS_RSP get_num_of_items; /* GetTotalNumberOfItems */
  tAVRC_SEARCH_RSP search;                     /* Search */
  tAVRC_RSP play_item;                         /* PlayItem */
  tAVRC_RSP add_to_play;                       /* AddToNowPlaying */
} tAVRC_RESPONSE;

#endif
