32#define AVRC_REV_1_0 0x0100
33#define AVRC_REV_1_3 0x0103
34#define AVRC_REV_1_4 0x0104
36#define AVRC_PACKET_LEN 512
38#define AVRC_MIN_CONTROL_MTU 48
39#define AVRC_MIN_BROWSE_MTU 335
41#define AVRC_META_PDU_OFFSET 4
42#define AVRC_SUB_TYPE_LEN 4
43#define AVRC_UID_SIZE 8
44#define AVRC_FEATURE_MASK_SIZE 16
47#define AVRC_CMD_CTRL 0
48#define AVRC_CMD_STATUS 1
49#define AVRC_CMD_SPEC_INQ 2
51#define AVRC_CMD_NOTIF 3
52#define AVRC_CMD_GEN_INQ 4
56#define AVRC_RSP_NOT_IMPL 8
59#define AVRC_RSP_ACCEPT 9
60#define AVRC_RSP_REJ 10
63#define AVRC_RSP_IN_TRANS 11
66#define AVRC_RSP_IMPL_STBL 12
70#define AVRC_RSP_CHANGED 13
72#define AVRC_RSP_INTERIM 15
79#define AVRC_SUB_MONITOR 0x00
80#define AVRC_SUB_AUDIO 0x01
81#define AVRC_SUB_PRINTER 0x02
82#define AVRC_SUB_DISC 0x03
83#define AVRC_SUB_TAPE 0x04
84#define AVRC_SUB_TUNER 0x05
85#define AVRC_SUB_CA 0x06
86#define AVRC_SUB_CAMERA 0x07
87#define AVRC_SUB_PANEL 0x09
88#define AVRC_SUB_BB 0x0A
89#define AVRC_SUB_CAM_STOR 0x0B
90#define AVRC_SUB_VENDOR 0x1C
91#define AVRC_SUB_EXT 0x1E
92#define AVRC_SUB_UNIT 0x1F
95#define AVRC_OP_UNIT_INFO 0x30
96#define AVRC_OP_SUB_INFO 0x31
97#define AVRC_OP_VENDOR 0x00
98#define AVRC_OP_PASS_THRU 0x7C
100#define AVRC_OP_BROWSE 0xFF
101#define AVRC_OP_INVALID 0xFE
105#define AVRC_CO_BLUETOOTH_SIG 0x00FFFFFF
106#define AVRC_CO_WIDCOMM 0x00000361
107#define AVRC_CO_BROADCOM 0x00001018
108#define AVRC_CO_METADATA 0x00001958
112#define AVRC_STATE_PRESS 0
113#define AVRC_STATE_RELEASE 1
117#define AVRC_ID_SELECT 0x00
118#define AVRC_ID_UP 0x01
119#define AVRC_ID_DOWN 0x02
120#define AVRC_ID_LEFT 0x03
121#define AVRC_ID_RIGHT 0x04
122#define AVRC_ID_RIGHT_UP 0x05
123#define AVRC_ID_RIGHT_DOWN 0x06
124#define AVRC_ID_LEFT_UP 0x07
125#define AVRC_ID_LEFT_DOWN 0x08
126#define AVRC_ID_ROOT_MENU 0x09
127#define AVRC_ID_SETUP_MENU 0x0A
128#define AVRC_ID_CONT_MENU 0x0B
129#define AVRC_ID_FAV_MENU 0x0C
130#define AVRC_ID_EXIT 0x0D
131#define AVRC_ID_0 0x20
132#define AVRC_ID_1 0x21
133#define AVRC_ID_2 0x22
134#define AVRC_ID_3 0x23
135#define AVRC_ID_4 0x24
136#define AVRC_ID_5 0x25
137#define AVRC_ID_6 0x26
138#define AVRC_ID_7 0x27
139#define AVRC_ID_8 0x28
140#define AVRC_ID_9 0x29
141#define AVRC_ID_DOT 0x2A
142#define AVRC_ID_ENTER 0x2B
143#define AVRC_ID_CLEAR 0x2C
144#define AVRC_ID_CHAN_UP 0x30
145#define AVRC_ID_CHAN_DOWN 0x31
146#define AVRC_ID_PREV_CHAN 0x32
147#define AVRC_ID_SOUND_SEL 0x33
148#define AVRC_ID_INPUT_SEL 0x34
149#define AVRC_ID_DISP_INFO 0x35
150#define AVRC_ID_HELP 0x36
151#define AVRC_ID_PAGE_UP 0x37
152#define AVRC_ID_PAGE_DOWN 0x38
153#define AVRC_ID_POWER 0x40
154#define AVRC_ID_VOL_UP 0x41
155#define AVRC_ID_VOL_DOWN 0x42
156#define AVRC_ID_MUTE 0x43
157#define AVRC_ID_PLAY 0x44
158#define AVRC_ID_STOP 0x45
159#define AVRC_ID_PAUSE 0x46
160#define AVRC_ID_RECORD 0x47
161#define AVRC_ID_REWIND 0x48
162#define AVRC_ID_FAST_FOR 0x49
163#define AVRC_ID_EJECT 0x4A
164#define AVRC_ID_FORWARD 0x4B
165#define AVRC_ID_BACKWARD 0x4C
166#define AVRC_ID_ANGLE 0x50
167#define AVRC_ID_SUBPICT 0x51
168#define AVRC_ID_F1 0x71
169#define AVRC_ID_F2 0x72
170#define AVRC_ID_F3 0x73
171#define AVRC_ID_F4 0x74
172#define AVRC_ID_F5 0x75
173#define AVRC_ID_VENDOR 0x7E
174#define AVRC_KEYPRESSED_RELEASE 0x80
182#define AVRC_PKT_SINGLE 0
183#define AVRC_PKT_START 1
184#define AVRC_PKT_CONTINUE 2
185#define AVRC_PKT_END 3
186#define AVRC_PKT_TYPE_MASK 3
190#define AVRC_PDU_GET_CAPABILITIES 0x10
191#define AVRC_PDU_LIST_PLAYER_APP_ATTR 0x11
192#define AVRC_PDU_LIST_PLAYER_APP_VALUES 0x12
193#define AVRC_PDU_GET_CUR_PLAYER_APP_VALUE 0x13
194#define AVRC_PDU_SET_PLAYER_APP_VALUE 0x14
195#define AVRC_PDU_GET_PLAYER_APP_ATTR_TEXT 0x15
196#define AVRC_PDU_GET_PLAYER_APP_VALUE_TEXT 0x16
197#define AVRC_PDU_INFORM_DISPLAY_CHARSET 0x17
198#define AVRC_PDU_INFORM_BATTERY_STAT_OF_CT 0x18
199#define AVRC_PDU_GET_ELEMENT_ATTR 0x20
200#define AVRC_PDU_GET_PLAY_STATUS 0x30
201#define AVRC_PDU_REGISTER_NOTIFICATION 0x31
202#define AVRC_PDU_REQUEST_CONTINUATION_RSP 0x40
203#define AVRC_PDU_ABORT_CONTINUATION_RSP 0x41
205#define AVRC_PDU_SET_ABSOLUTE_VOLUME 0x50
206#define AVRC_PDU_SET_ADDRESSED_PLAYER 0x60
207#define AVRC_PDU_SET_BROWSED_PLAYER 0x70
208#define AVRC_PDU_GET_FOLDER_ITEMS 0x71
209#define AVRC_PDU_CHANGE_PATH 0x72
210#define AVRC_PDU_GET_ITEM_ATTRIBUTES 0x73
211#define AVRC_PDU_PLAY_ITEM 0x74
212#define AVRC_PDU_SEARCH 0x80
213#define AVRC_PDU_ADD_TO_NOW_PLAYING 0x90
214#define AVRC_PDU_GENERAL_REJECT 0xA0
218#define AVRC_PDU_NEXT_GROUP 0x00
219#define AVRC_PDU_PREV_GROUP 0x01
222#define AVRC_PASS_THRU_GROUP_LEN 5
224#define AVRC_PDU_INVALID 0xff
226#define AVRC_STS_BAD_CMD 0x00
227#define AVRC_STS_BAD_PARAM 0x01
228#define AVRC_STS_NOT_FOUND 0x02
229#define AVRC_STS_INTERNAL_ERR 0x03
230#define AVRC_STS_NO_ERROR 0x04
231#define AVRC_STS_UID_CHANGED 0x05
233#define AVRC_STS_BAD_DIR 0x07
234#define AVRC_STS_NOT_DIR 0x08
235#define AVRC_STS_NOT_EXIST 0x09
236#define AVRC_STS_BAD_SCOPE 0x0a
237#define AVRC_STS_BAD_RANGE 0x0b
238#define AVRC_STS_UID_IS_DIR 0x0c
239#define AVRC_STS_IN_USE 0x0d
240#define AVRC_STS_NOW_LIST_FULL 0x0e
241#define AVRC_STS_SEARCH_NOT_SUP 0x0f
242#define AVRC_STS_SEARCH_BUSY 0x10
243#define AVRC_STS_BAD_PLAYER_ID 0x11
244#define AVRC_STS_PLAYER_N_BR 0x12
245#define AVRC_STS_PLAYER_N_ADDR 0x13
246#define AVRC_STS_BAD_SEARCH_RES 0x14
247#define AVRC_STS_NO_AVAL_PLAYER 0x15
248#define AVRC_STS_ADDR_PLAYER_CHG 0x16
249typedef UINT8 tAVRC_STS;
254#define AVRC_CAP_COMPANY_ID 0x02
255#define AVRC_CAP_EVENTS_SUPPORTED 0x03
256#define AVRC_COMPANY_ID_LEN 3
257#define AVRC_CAPABILITY_OFFSET 2
261#define AVRC_PLAYER_SETTING_EQUALIZER 0x01
262#define AVRC_PLAYER_SETTING_REPEAT 0x02
263#define AVRC_PLAYER_SETTING_SHUFFLE 0x03
264#define AVRC_PLAYER_SETTING_SCAN 0x04
265#define AVRC_PLAYER_SETTING_LOW_MENU_EXT 0x80
266#define AVRC_PLAYER_SETTING_HIGH_MENU_EXT 0xff
270#define AVRC_PLAYER_VAL_OFF 0x01
271#define AVRC_PLAYER_VAL_ON 0x02
272#define AVRC_PLAYER_VAL_SINGLE_REPEAT 0x02
273#define AVRC_PLAYER_VAL_ALL_REPEAT 0x03
274#define AVRC_PLAYER_VAL_GROUP_REPEAT 0x04
275#define AVRC_PLAYER_VAL_ALL_SHUFFLE 0x02
276#define AVRC_PLAYER_VAL_GROUP_SHUFFLE 0x03
277#define AVRC_PLAYER_VAL_ALL_SCAN 0x02
278#define AVRC_PLAYER_VAL_GROUP_SCAN 0x03
282#define AVRC_BATTERY_STATUS_NORMAL 0x00
283#define AVRC_BATTERY_STATUS_WARNING 0x01
284#define AVRC_BATTERY_STATUS_CRITICAL 0x02
285#define AVRC_BATTERY_STATUS_EXTERNAL 0x03
286#define AVRC_BATTERY_STATUS_FULL_CHARGE 0x04
287typedef UINT8 tAVRC_BATTERY_STATUS;
290#define AVRC_CHAR_SET_SIZE 2
294#define AVRC_MEDIA_ATTR_ID_TITLE 0x00000001
295#define AVRC_MEDIA_ATTR_ID_ARTIST 0x00000002
296#define AVRC_MEDIA_ATTR_ID_ALBUM 0x00000003
297#define AVRC_MEDIA_ATTR_ID_TRACK_NUM 0x00000004
298#define AVRC_MEDIA_ATTR_ID_NUM_TRACKS 0x00000005
299#define AVRC_MEDIA_ATTR_ID_GENRE 0x00000006
300#define AVRC_MEDIA_ATTR_ID_PLAYING_TIME 0x00000007
301#define AVRC_MAX_NUM_MEDIA_ATTR_ID 7
305#define AVRC_PLAYSTATE_RESP_MSG_SIZE 9
306#define AVRC_PLAYSTATE_STOPPED 0x00
307#define AVRC_PLAYSTATE_PLAYING 0x01
308#define AVRC_PLAYSTATE_PAUSED 0x02
309#define AVRC_PLAYSTATE_FWD_SEEK 0x03
310#define AVRC_PLAYSTATE_REV_SEEK 0x04
311#define AVRC_PLAYSTATE_ERROR 0xFF
312typedef UINT8 tAVRC_PLAYSTATE;
316#define AVRC_EVT_PLAY_STATUS_CHANGE 0x01
317#define AVRC_EVT_TRACK_CHANGE 0x02
318#define AVRC_EVT_TRACK_REACHED_END 0x03
319#define AVRC_EVT_TRACK_REACHED_START 0x04
320#define AVRC_EVT_PLAY_POS_CHANGED 0x05
321#define AVRC_EVT_BATTERY_STATUS_CHANGE 0x06
322#define AVRC_EVT_SYSTEM_STATUS_CHANGE 0x07
323#define AVRC_EVT_APP_SETTING_CHANGE 0x08
325#define AVRC_EVT_NOW_PLAYING_CHANGE 0x09
326#define AVRC_EVT_AVAL_PLAYERS_CHANGE 0x0a
327#define AVRC_EVT_ADDR_PLAYER_CHANGE 0x0b
328#define AVRC_EVT_UIDS_CHANGE 0x0c
329#define AVRC_EVT_VOLUME_CHANGE 0x0d
332#define AVRC_NUM_NOTIF_EVENTS 0x0d
334#define AVRC_EVT_MSG_LEN_1 0x01
335#define AVRC_EVT_MSG_LEN_2 0x02
336#define AVRC_EVT_MSG_LEN_5 0x05
337#define AVRC_EVT_MSG_LEN_9 0x09
339#define AVRC_MAX_VOLUME 0x7F
343#define AVRC_SYSTEMSTATE_PWR_ON 0x00
344#define AVRC_SYSTEMSTATE_PWR_OFF 0x01
345#define AVRC_SYSTEMSTATE_PWR_UNPLUGGED 0x02
346typedef UINT8 tAVRC_SYSTEMSTATE;
349#define AVRC_CHARSET_ID_ASCII ((UINT16) 0x0003)
350#define AVRC_CHARSET_ID_UTF8 ((UINT16) 0x006a)
351#define AVRC_CHARSET_ID_UTF16 ((UINT16) 0x03f7)
352#define AVRC_CHARSET_ID_UTF32 ((UINT16) 0x03f9)
357#define AVRC_ITEM_PLAYER 0x01
358#define AVRC_ITEM_FOLDER 0x02
359#define AVRC_ITEM_MEDIA 0x03
361#define AVRC_SCOPE_PLAYER_LIST 0x00
362#define AVRC_SCOPE_FILE_SYSTEM 0x01
364#define AVRC_SCOPE_SEARCH 0x02
365#define AVRC_SCOPE_NOW_PLAYING 0x03
367#define AVRC_FOLDER_ITEM_COUNT_NONE 0xFF
370#define AVRC_FOLDER_TYPE_MIXED 0x00
371#define AVRC_FOLDER_TYPE_TITLES 0x01
372#define AVRC_FOLDER_TYPE_ALNUMS 0x02
373#define AVRC_FOLDER_TYPE_ARTISTS 0x03
374#define AVRC_FOLDER_TYPE_GENRES 0x04
375#define AVRC_FOLDER_TYPE_PLAYLISTS 0x05
376#define AVRC_FOLDER_TYPE_YEARS 0x06
379#define AVRC_MJ_TYPE_AUDIO 0x01
380#define AVRC_MJ_TYPE_VIDEO 0x02
381#define AVRC_MJ_TYPE_BC_AUDIO 0x04
382#define AVRC_MJ_TYPE_BC_VIDEO 0x08
383#define AVRC_MJ_TYPE_INVALID 0xF0
386#define AVRC_SUB_TYPE_NONE 0x00
387#define AVRC_SUB_TYPE_AUDIO_BOOK 0x01
388#define AVRC_SUB_TYPE_PODCAST 0x02
389#define AVRC_SUB_TYPE_INVALID 0xFC
392#define AVRC_MEDIA_TYPE_AUDIO 0x00
393#define AVRC_MEDIA_TYPE_VIDEO 0x01
395#define AVRC_DIR_UP 0x00
396#define AVRC_DIR_DOWN 0x01
398#define AVRC_UID_SIZE 8
399typedef UINT8 tAVRC_UID[AVRC_UID_SIZE];
404#define AVRC_PF_SELECT_BIT_NO 0
405#define AVRC_PF_SELECT_MASK 0x01
406#define AVRC_PF_SELECT_OFF 0
407#define AVRC_PF_SELECT_SUPPORTED(x) ((x)[AVRC_PF_SELECT_OFF] & AVRC_PF_SELECT_MASK)
409#define AVRC_PF_UP_BIT_NO 1
410#define AVRC_PF_UP_MASK 0x02
411#define AVRC_PF_UP_OFF 0
412#define AVRC_PF_UP_SUPPORTED(x) ((x)[AVRC_PF_UP_OFF] & AVRC_PF_UP_MASK)
414#define AVRC_PF_DOWN_BIT_NO 2
415#define AVRC_PF_DOWN_MASK 0x04
416#define AVRC_PF_DOWN_OFF 0
417#define AVRC_PF_DOWN_SUPPORTED(x) ((x)[AVRC_PF_DOWN_OFF] & AVRC_PF_DOWN_MASK)
419#define AVRC_PF_LEFT_BIT_NO 3
420#define AVRC_PF_LEFT_MASK 0x08
421#define AVRC_PF_LEFT_OFF 0
422#define AVRC_PF_LEFT_SUPPORTED(x) ((x)[AVRC_PF_LEFT_OFF] & AVRC_PF_LEFT_MASK)
424#define AVRC_PF_RIGHT_BIT_NO 4
425#define AVRC_PF_RIGHT_MASK 0x10
426#define AVRC_PF_RIGHT_OFF 0
427#define AVRC_PF_RIGHT_SUPPORTED(x) ((x)[AVRC_PF_RIGHT_OFF] & AVRC_PF_RIGHT_MASK)
429#define AVRC_PF_RIGHTUP_BIT_NO 5
430#define AVRC_PF_RIGHTUP_MASK 0x20
431#define AVRC_PF_RIGHTUP_OFF 0
432#define AVRC_PF_RIGHTUP_SUPPORTED(x) ((x)[AVRC_PF_RIGHTUP_OFF] & AVRC_PF_RIGHTUP_MASK)
434#define AVRC_PF_RIGHTDOWN_BIT_NO 6
435#define AVRC_PF_RIGHTDOWN_MASK 0x40
436#define AVRC_PF_RIGHTDOWN_OFF 0
437#define AVRC_PF_RIGHTDOWN_SUPPORTED(x) ((x)[AVRC_PF_RIGHTDOWN_OFF] & AVRC_PF_RIGHTDOWN_MASK)
439#define AVRC_PF_LEFTUP_BIT_NO 7
440#define AVRC_PF_LEFTUP_MASK 0x80
441#define AVRC_PF_LEFTUP_OFF 0
442#define AVRC_PF_LEFTUP_SUPPORTED(x) ((x)[AVRC_PF_LEFTUP_OFF] & AVRC_PF_LEFTUP_MASK)
444#define AVRC_PF_LEFTDOWN_BIT_NO 8
445#define AVRC_PF_LEFTDOWN_MASK 0x01
446#define AVRC_PF_LEFTDOWN_OFF 1
447#define AVRC_PF_LEFTDOWN_SUPPORTED(x) ((x)[AVRC_PF_LEFTDOWN_OFF] & AVRC_PF_LEFTDOWN_MASK)
449#define AVRC_PF_ROOT_MENU_BIT_NO 9
450#define AVRC_PF_ROOT_MENU_MASK 0x02
451#define AVRC_PF_ROOT_MENU_OFF 1
452#define AVRC_PF_ROOT_MENU_SUPPORTED(x) ((x)[AVRC_PF_ROOT_MENU_OFF] & AVRC_PF_ROOT_MENU_MASK)
454#define AVRC_PF_SETUP_MENU_BIT_NO 10
455#define AVRC_PF_SETUP_MENU_MASK 0x04
456#define AVRC_PF_SETUP_MENU_OFF 1
457#define AVRC_PF_SETUP_MENU_SUPPORTED(x) ((x)[AVRC_PF_SETUP_MENU_OFF] & AVRC_PF_SETUP_MENU_MASK)
459#define AVRC_PF_CONTENTS_MENU_BIT_NO 11
460#define AVRC_PF_CONTENTS_MENU_MASK 0x08
461#define AVRC_PF_CONTENTS_MENU_OFF 1
462#define AVRC_PF_CONTENTS_MENU_SUPPORTED(x) ((x)[AVRC_PF_CONTENTS_MENU_OFF] & AVRC_PF_CONTENTS_MENU_MASK)
464#define AVRC_PF_FAVORITE_MENU_BIT_NO 12
465#define AVRC_PF_FAVORITE_MENU_MASK 0x10
466#define AVRC_PF_FAVORITE_MENU_OFF 1
467#define AVRC_PF_FAVORITE_MENU_SUPPORTED(x) ((x)[AVRC_PF_FAVORITE_MENU_OFF] & AVRC_PF_FAVORITE_MENU_MASK)
469#define AVRC_PF_EXIT_BIT_NO 13
470#define AVRC_PF_EXIT_MASK 0x20
471#define AVRC_PF_EXIT_OFF 1
472#define AVRC_PF_EXIT_SUPPORTED(x) ((x)[AVRC_PF_EXIT_OFF] & AVRC_PF_EXIT_MASK)
474#define AVRC_PF_0_BIT_NO 14
475#define AVRC_PF_0_MASK 0x40
476#define AVRC_PF_0_OFF 1
477#define AVRC_PF_0_SUPPORTED(x) ((x)[AVRC_PF_0_OFF] & AVRC_PF_0_MASK)
479#define AVRC_PF_1_BIT_NO 15
480#define AVRC_PF_1_MASK 0x80
481#define AVRC_PF_1_OFF 1
482#define AVRC_PF_1_SUPPORTED(x) ((x)[AVRC_PF_1_OFF] & AVRC_PF_1_MASK)
484#define AVRC_PF_2_BIT_NO 16
485#define AVRC_PF_2_MASK 0x01
486#define AVRC_PF_2_OFF 2
487#define AVRC_PF_2_SUPPORTED(x) ((x)[AVRC_PF_2_OFF] & AVRC_PF_2_MASK)
489#define AVRC_PF_3_BIT_NO 17
490#define AVRC_PF_3_MASK 0x02
491#define AVRC_PF_3_OFF 2
492#define AVRC_PF_3_SUPPORTED(x) ((x)[AVRC_PF_3_OFF] & AVRC_PF_3_MASK)
494#define AVRC_PF_4_BIT_NO 18
495#define AVRC_PF_4_MASK 0x04
496#define AVRC_PF_4_OFF 2
497#define AVRC_PF_4_SUPPORTED(x) ((x)[AVRC_PF_4_OFF] & AVRC_PF_4_MASK)
499#define AVRC_PF_5_BIT_NO 19
500#define AVRC_PF_5_MASK 0x08
501#define AVRC_PF_5_OFF 2
502#define AVRC_PF_5_SUPPORTED(x) ((x)[AVRC_PF_5_OFF] & AVRC_PF_5_MASK)
504#define AVRC_PF_6_BIT_NO 20
505#define AVRC_PF_6_MASK 0x10
506#define AVRC_PF_6_OFF 2
507#define AVRC_PF_6_SUPPORTED(x) ((x)[AVRC_PF_6_OFF] & AVRC_PF_6_MASK)
509#define AVRC_PF_7_BIT_NO 21
510#define AVRC_PF_7_MASK 0x20
511#define AVRC_PF_7_OFF 2
512#define AVRC_PF_7_SUPPORTED(x) ((x)[AVRC_PF_7_OFF] & AVRC_PF_7_MASK)
514#define AVRC_PF_8_BIT_NO 22
515#define AVRC_PF_8_MASK 0x40
516#define AVRC_PF_8_OFF 2
517#define AVRC_PF_8_SUPPORTED(x) ((x)[AVRC_PF_8_OFF] & AVRC_PF_8_MASK)
519#define AVRC_PF_9_BIT_NO 23
520#define AVRC_PF_9_MASK 0x80
521#define AVRC_PF_9_OFF 2
522#define AVRC_PF_9_SUPPORTED(x) ((x)[AVRC_PF_9_OFF] & AVRC_PF_9_MASK)
524#define AVRC_PF_DOT_BIT_NO 24
525#define AVRC_PF_DOT_MASK 0x01
526#define AVRC_PF_DOT_OFF 3
527#define AVRC_PF_DOT_SUPPORTED(x) ((x)[AVRC_PF_DOT_OFF] & AVRC_PF_DOT_MASK)
529#define AVRC_PF_ENTER_BIT_NO 25
530#define AVRC_PF_ENTER_MASK 0x02
531#define AVRC_PF_ENTER_OFF 3
532#define AVRC_PF_ENTER_SUPPORTED(x) ((x)[AVRC_PF_ENTER_OFF] & AVRC_PF_ENTER_MASK)
534#define AVRC_PF_CLEAR_BIT_NO 26
535#define AVRC_PF_CLEAR_MASK 0x04
536#define AVRC_PF_CLEAR_OFF 3
537#define AVRC_PF_CLEAR_SUPPORTED(x) ((x)[AVRC_PF_CLEAR_OFF] & AVRC_PF_CLEAR_MASK)
539#define AVRC_PF_CHNL_UP_BIT_NO 27
540#define AVRC_PF_CHNL_UP_MASK 0x08
541#define AVRC_PF_CHNL_UP_OFF 3
542#define AVRC_PF_CHNL_UP_SUPPORTED(x) ((x)[AVRC_PF_CHNL_UP_OFF] & AVRC_PF_CHNL_UP_MASK)
544#define AVRC_PF_CHNL_DOWN_BIT_NO 28
545#define AVRC_PF_CHNL_DOWN_MASK 0x10
546#define AVRC_PF_CHNL_DOWN_OFF 3
547#define AVRC_PF_CHNL_DOWN_SUPPORTED(x) ((x)[AVRC_PF_CHNL_DOWN_OFF] & AVRC_PF_CHNL_DOWN_MASK)
549#define AVRC_PF_PREV_CHNL_BIT_NO 29
550#define AVRC_PF_PREV_CHNL_MASK 0x20
551#define AVRC_PF_PREV_CHNL_OFF 3
552#define AVRC_PF_PREV_CHNL_SUPPORTED(x) ((x)[AVRC_PF_PREV_CHNL_OFF] & AVRC_PF_PREV_CHNL_MASK)
554#define AVRC_PF_SOUND_SEL_BIT_NO 30
555#define AVRC_PF_SOUND_SEL_MASK 0x40
556#define AVRC_PF_SOUND_SEL_OFF 3
557#define AVRC_PF_SOUND_SEL_SUPPORTED(x) ((x)[AVRC_PF_SOUND_SEL_OFF] & AVRC_PF_SOUND_SEL_MASK)
559#define AVRC_PF_INPUT_SEL_BIT_NO 31
560#define AVRC_PF_INPUT_SEL_MASK 0x80
561#define AVRC_PF_INPUT_SEL_OFF 3
562#define AVRC_PF_INPUT_SEL_SUPPORTED(x) ((x)[AVRC_PF_INPUT_SEL_OFF] & AVRC_PF_INPUT_SEL_MASK)
564#define AVRC_PF_DISP_INFO_BIT_NO 32
565#define AVRC_PF_DISP_INFO_MASK 0x01
566#define AVRC_PF_DISP_INFO_OFF 4
567#define AVRC_PF_DISP_INFO_SUPPORTED(x) ((x)[AVRC_PF_DISP_INFO_OFF] & AVRC_PF_DISP_INFO_MASK)
569#define AVRC_PF_HELP_BIT_NO 33
570#define AVRC_PF_HELP_MASK 0x02
571#define AVRC_PF_HELP_OFF 4
572#define AVRC_PF_HELP_SUPPORTED(x) ((x)[AVRC_PF_HELP_OFF] & AVRC_PF_HELP_MASK)
574#define AVRC_PF_PAGE_UP_BIT_NO 34
575#define AVRC_PF_PAGE_UP_MASK 0x04
576#define AVRC_PF_PAGE_UP_OFF 4
577#define AVRC_PF_PAGE_UP_SUPPORTED(x) ((x)[AVRC_PF_PAGE_UP_OFF] & AVRC_PF_PAGE_UP_MASK)
579#define AVRC_PF_PAGE_DOWN_BIT_NO 35
580#define AVRC_PF_PAGE_DOWN_MASK 0x08
581#define AVRC_PF_PAGE_DOWN_OFF 4
582#define AVRC_PF_PAGE_DOWN_SUPPORTED(x) ((x)[AVRC_PF_PAGE_DOWN_OFF] & AVRC_PF_PAGE_DOWN_MASK)
584#define AVRC_PF_POWER_BIT_NO 36
585#define AVRC_PF_POWER_MASK 0x10
586#define AVRC_PF_POWER_OFF 4
587#define AVRC_PF_POWER_SUPPORTED(x) ((x)[AVRC_PF_POWER_OFF] & AVRC_PF_POWER_MASK)
589#define AVRC_PF_VOL_UP_BIT_NO 37
590#define AVRC_PF_VOL_UP_MASK 0x20
591#define AVRC_PF_VOL_UP_OFF 4
592#define AVRC_PF_VOL_UP_SUPPORTED(x) ((x)[AVRC_PF_VOL_UP_OFF] & AVRC_PF_VOL_UP_MASK)
594#define AVRC_PF_VOL_DOWN_BIT_NO 38
595#define AVRC_PF_VOL_DOWN_MASK 0x40
596#define AVRC_PF_VOL_DOWN_OFF 4
597#define AVRC_PF_VOL_DOWN_SUPPORTED(x) ((x)[AVRC_PF_VOL_DOWN_OFF] & AVRC_PF_VOL_DOWN_MASK)
599#define AVRC_PF_MUTE_BIT_NO 39
600#define AVRC_PF_MUTE_MASK 0x80
601#define AVRC_PF_MUTE_OFF 4
602#define AVRC_PF_MUTE_SUPPORTED(x) ((x)[AVRC_PF_MUTE_OFF] & AVRC_PF_MUTE_MASK)
604#define AVRC_PF_PLAY_BIT_NO 40
605#define AVRC_PF_PLAY_MASK 0x01
606#define AVRC_PF_PLAY_OFF 5
607#define AVRC_PF_PLAY_SUPPORTED(x) ((x)[AVRC_PF_PLAY_OFF] & AVRC_PF_PLAY_MASK)
609#define AVRC_PF_STOP_BIT_NO 41
610#define AVRC_PF_STOP_MASK 0x02
611#define AVRC_PF_STOP_OFF 5
612#define AVRC_PF_STOP_SUPPORTED(x) ((x)[AVRC_PF_STOP_OFF] & AVRC_PF_STOP_MASK)
614#define AVRC_PF_PAUSE_BIT_NO 42
615#define AVRC_PF_PAUSE_MASK 0x04
616#define AVRC_PF_PAUSE_OFF 5
617#define AVRC_PF_PAUSE_SUPPORTED(x) ((x)[AVRC_PF_PAUSE_OFF] & AVRC_PF_PAUSE_MASK)
619#define AVRC_PF_RECORD_BIT_NO 43
620#define AVRC_PF_RECORD_MASK 0x08
621#define AVRC_PF_RECORD_OFF 5
622#define AVRC_PF_RECORD_SUPPORTED(x) ((x)[AVRC_PF_RECORD_OFF] & AVRC_PF_RECORD_MASK)
624#define AVRC_PF_REWIND_BIT_NO 44
625#define AVRC_PF_REWIND_MASK 0x10
626#define AVRC_PF_REWIND_OFF 5
627#define AVRC_PF_REWIND_SUPPORTED(x) ((x)[AVRC_PF_REWIND_OFF] & AVRC_PF_REWIND_MASK)
629#define AVRC_PF_FAST_FWD_BIT_NO 45
630#define AVRC_PF_FAST_FWD_MASK 0x20
631#define AVRC_PF_FAST_FWD_OFF 5
632#define AVRC_PF_FAST_FWD_SUPPORTED(x) ((x)[AVRC_PF_FAST_FWD_OFF] & AVRC_PF_FAST_FWD_MASK)
634#define AVRC_PF_EJECT_BIT_NO 46
635#define AVRC_PF_EJECT_MASK 0x40
636#define AVRC_PF_EJECT_OFF 5
637#define AVRC_PF_EJECT_SUPPORTED(x) ((x)[AVRC_PF_EJECT_OFF] & AVRC_PF_EJECT_MASK)
639#define AVRC_PF_FORWARD_BIT_NO 47
640#define AVRC_PF_FORWARD_MASK 0x80
641#define AVRC_PF_FORWARD_OFF 5
642#define AVRC_PF_FORWARD_SUPPORTED(x) ((x)[AVRC_PF_FORWARD_OFF] & AVRC_PF_FORWARD_MASK)
644#define AVRC_PF_BACKWARD_BIT_NO 48
645#define AVRC_PF_BACKWARD_MASK 0x01
646#define AVRC_PF_BACKWARD_OFF 6
647#define AVRC_PF_BACKWARD_SUPPORTED(x) ((x)[AVRC_PF_BACKWARD_OFF] & AVRC_PF_BACKWARD_MASK)
649#define AVRC_PF_ANGLE_BIT_NO 49
650#define AVRC_PF_ANGLE_MASK 0x02
651#define AVRC_PF_ANGLE_OFF 6
652#define AVRC_PF_ANGLE_SUPPORTED(x) ((x)[AVRC_PF_ANGLE_OFF] & AVRC_PF_ANGLE_MASK)
654#define AVRC_PF_SUBPICTURE_BIT_NO 50
655#define AVRC_PF_SUBPICTURE_MASK 0x04
656#define AVRC_PF_SUBPICTURE_OFF 6
657#define AVRC_PF_SUBPICTURE_SUPPORTED(x) ((x)[AVRC_PF_SUBPICTURE_OFF] & AVRC_PF_SUBPICTURE_MASK)
659#define AVRC_PF_F1_BIT_NO 51
660#define AVRC_PF_F1_MASK 0x08
661#define AVRC_PF_F1_OFF 6
662#define AVRC_PF_F1_SUPPORTED(x) ((x)[AVRC_PF_F1_OFF] & AVRC_PF_F1_MASK)
664#define AVRC_PF_F2_BIT_NO 52
665#define AVRC_PF_F2_MASK 0x10
666#define AVRC_PF_F2_OFF 6
667#define AVRC_PF_F2_SUPPORTED(x) ((x)[AVRC_PF_F2_OFF] & AVRC_PF_F2_MASK)
669#define AVRC_PF_F3_BIT_NO 53
670#define AVRC_PF_F3_MASK 0x20
671#define AVRC_PF_F3_OFF 6
672#define AVRC_PF_F3_SUPPORTED(x) ((x)[AVRC_PF_F3_OFF] & AVRC_PF_F3_MASK)
674#define AVRC_PF_F4_BIT_NO 54
675#define AVRC_PF_F4_MASK 0x40
676#define AVRC_PF_F4_OFF 6
677#define AVRC_PF_F4_SUPPORTED(x) ((x)[AVRC_PF_F4_OFF] & AVRC_PF_F4_MASK)
679#define AVRC_PF_F5_BIT_NO 55
680#define AVRC_PF_F5_MASK 0x80
681#define AVRC_PF_F5_OFF 6
682#define AVRC_PF_F5_SUPPORTED(x) ((x)[AVRC_PF_F5_OFF] & AVRC_PF_F5_MASK)
685#define AVRC_PF_VENDOR_BIT_NO 56
686#define AVRC_PF_VENDOR_MASK 0x01
687#define AVRC_PF_VENDOR_OFF 7
688#define AVRC_PF_VENDOR_SUPPORTED(x) ((x)[AVRC_PF_VENDOR_OFF] & AVRC_PF_VENDOR_MASK)
691#define AVRC_PF_GROUP_NAVI_BIT_NO 57
692#define AVRC_PF_GROUP_NAVI_MASK 0x02
693#define AVRC_PF_GROUP_NAVI_OFF 7
694#define AVRC_PF_GROUP_NAVI_SUPPORTED(x) ((x)[AVRC_PF_GROUP_NAVI_OFF] & AVRC_PF_GROUP_NAVI_MASK)
697#define AVRC_PF_ADV_CTRL_BIT_NO 58
698#define AVRC_PF_ADV_CTRL_MASK 0x04
699#define AVRC_PF_ADV_CTRL_OFF 7
700#define AVRC_PF_ADV_CTRL_SUPPORTED(x) ((x)[AVRC_PF_ADV_CTRL_OFF] & AVRC_PF_ADV_CTRL_MASK)
703#define AVRC_PF_BROWSE_BIT_NO 59
704#define AVRC_PF_BROWSE_MASK 0x08
705#define AVRC_PF_BROWSE_OFF 7
706#define AVRC_PF_BROWSE_SUPPORTED(x) ((x)[AVRC_PF_BROWSE_OFF] & AVRC_PF_BROWSE_MASK)
709#define AVRC_PF_SEARCH_BIT_NO 60
710#define AVRC_PF_SEARCH_MASK 0x10
711#define AVRC_PF_SEARCH_OFF 7
712#define AVRC_PF_SEARCH_SUPPORTED(x) ((x)[AVRC_PF_SEARCH_OFF] & AVRC_PF_SEARCH_MASK)
715#define AVRC_PF_ADD2NOWPLAY_BIT_NO 61
716#define AVRC_PF_ADD2NOWPLAY_MASK 0x20
717#define AVRC_PF_ADD2NOWPLAY_OFF 7
718#define AVRC_PF_ADD2NOWPLAY_SUPPORTED(x) ((x)[AVRC_PF_ADD2NOWPLAY_OFF] & AVRC_PF_ADD2NOWPLAY_MASK)
721#define AVRC_PF_UID_UNIQUE_BIT_NO 62
722#define AVRC_PF_UID_UNIQUE_MASK 0x40
723#define AVRC_PF_UID_UNIQUE_OFF 7
724#define AVRC_PF_UID_UNIQUE_SUPPORTED(x) ((x)[AVRC_PF_UID_UNIQUE_OFF] & AVRC_PF_UID_UNIQUE_MASK)
727#define AVRC_PF_BR_WH_ADDR_BIT_NO 63
728#define AVRC_PF_BR_WH_ADDR_MASK 0x80
729#define AVRC_PF_BR_WH_ADDR_OFF 7
730#define AVRC_PF_BR_WH_ADDR_SUPPORTED(x) ((x)[AVRC_PF_BR_WH_ADDR_OFF] & AVRC_PF_BR_WH_ADDR_MASK)
733#define AVRC_PF_SEARCH_WH_ADDR_BIT_NO 64
734#define AVRC_PF_SEARCH_WH_ADDR_MASK 0x01
735#define AVRC_PF_SEARCH_WH_ADDR_OFF 8
736#define AVRC_PF_SEARCH_WH_ADDR_SUPPORTED(x) ((x)[AVRC_PF_SEARCH_WH_ADDR_OFF] & AVRC_PF_SEARCH_WH_ADDR_MASK)
739#define AVRC_PF_NOW_PLAY_BIT_NO 65
740#define AVRC_PF_NOW_PLAY_MASK 0x02
741#define AVRC_PF_NOW_PLAY_OFF 8
742#define AVRC_PF_NOW_PLAY_SUPPORTED(x) ((x)[AVRC_PF_NOW_PLAY_OFF] & AVRC_PF_NOW_PLAY_MASK)
745#define AVRC_PF_UID_PERSIST_BIT_NO 66
746#define AVRC_PF_UID_PERSIST_MASK 0x04
747#define AVRC_PF_UID_PERSIST_OFF 8
748#define AVRC_PF_UID_PERSIST_SUPPORTED(x) ((x)[AVRC_PF_UID_PERSIST_OFF] & AVRC_PF_UID_PERSIST_MASK)
780 UINT8 subunit_type[AVRC_SUB_TYPE_LEN];
794 UINT8 *p_vendor_data;
813#define AVRC_CMD AVCT_CMD
814#define AVRC_RSP AVCT_RSP
822 UINT8 *p_browse_data;
839#define AVRC_IS_VALID_CAP_ID(a) (((a == AVRC_CAP_COMPANY_ID) || (a == AVRC_CAP_EVENTS_SUPPORTED)) ? TRUE : FALSE)
841#define AVRC_IS_VALID_EVENT_ID(a) (((a >= AVRC_EVT_PLAY_STATUS_CHANGE) && \
842 (a <= AVRC_EVT_APP_SETTING_CHANGE)) ? TRUE : FALSE)
844#define AVRC_IS_VALID_ATTRIBUTE(a) (((((a > 0) && a <= AVRC_PLAYER_SETTING_SCAN)) || \
845 ((a >= AVRC_PLAYER_SETTING_LOW_MENU_EXT) && \
846 (a <= AVRC_PLAYER_SETTING_HIGH_MENU_EXT))) ? TRUE : FALSE)
849#define AVRC_IS_VALID_MEDIA_ATTRIBUTE(a) ((a >= AVRC_MEDIA_ATTR_ID_TITLE) && \
850 (a <= AVRC_MEDIA_ATTR_ID_PLAYING_TIME) ? TRUE : FALSE)
852#define AVRC_IS_VALID_BATTERY_STATUS(a) ((a <= AVRC_BATTERY_STATUS_FULL_CHARGE) ? TRUE : FALSE)
854#define AVRC_IS_VALID_SYSTEM_STATUS(a) ((a <= AVRC_SYSTEMSTATE_PWR_UNPLUGGED) ? TRUE : FALSE)
856#define AVRC_IS_VALID_GROUP(a) ((a <= AVRC_PDU_PREV_GROUP) ? TRUE : FALSE)
859#define AVRC_CO_ID_TO_BE_STREAM(p, u32) {*(p)++ = (UINT8)((u32) >> 16); *(p)++ = (UINT8)((u32) >> 8); *(p)++ = (UINT8)(u32); }
860#define AVRC_BE_STREAM_TO_CO_ID(u32, p) {u32 = (((UINT32)(*((p) + 2))) + (((UINT32)(*((p) + 1))) << 8) + (((UINT32)(*(p))) << 16)); (p) += 3;}
865#define AVRC_MAX_APP_ATTR_SIZE 16
866#define AVRC_MAX_CHARSET_SIZE 16
867#define AVRC_MAX_ELEM_ATTR_SIZE 8
886#ifndef AVRC_CAP_MAX_NUM_COMP_ID
887#define AVRC_CAP_MAX_NUM_COMP_ID 4
890#ifndef AVRC_CAP_MAX_NUM_EVT_ID
891#define AVRC_CAP_MAX_NUM_EVT_ID 16
896 UINT32 company_id[AVRC_CAP_MAX_NUM_COMP_ID];
897 UINT8 event_id[AVRC_CAP_MAX_NUM_EVT_ID];
914typedef UINT8 tAVRC_FEATURE_MASK[AVRC_FEATURE_MASK_SIZE];
923 tAVRC_FEATURE_MASK features;
990 UINT8 attrs[AVRC_MAX_APP_ATTR_SIZE];
1010 UINT8 attrs[AVRC_MAX_APP_ATTR_SIZE];
1021 UINT8 vals[AVRC_MAX_APP_ATTR_SIZE];
1031 UINT16 charsets[AVRC_MAX_CHARSET_SIZE];
1040 UINT8 battery_status;
1050 UINT32 attrs[AVRC_MAX_ELEM_ATTR_SIZE];
1100 UINT32 *p_attr_list;
1111 tAVRC_UID folder_uid;
1124 UINT32 *p_attr_list;
1210 UINT8 capability_id;
1222 UINT8 attrs[AVRC_MAX_APP_ATTR_SIZE];
1232 UINT8 vals[AVRC_MAX_APP_ATTR_SIZE];
1283#ifndef AVRC_MAX_APP_SETTINGS
1284#define AVRC_MAX_APP_SETTINGS 8
1291 UINT8 attr_id[AVRC_MAX_APP_SETTINGS];
1292 UINT8 attr_value[AVRC_MAX_APP_SETTINGS];
1297 tAVRC_PLAYSTATE play_status;
1300 tAVRC_BATTERY_STATUS battery_status;
1301 tAVRC_SYSTEMSTATE system_status;