1/****************************************************************************** 2 * 3 * Copyright (C) 1999-2012 Broadcom Corporation 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at: 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ******************************************************************************/ 18 19/****************************************************************************** 20 * 21 * This file contains sync message over UIPC 22 * 23 ******************************************************************************/ 24 25#ifndef UIPC_MSG_H 26#define UIPC_MSG_H 27 28#include "bt_types.h" 29 30/****************************************************************************/ 31/* UIPC version number: 1.0 */ 32/****************************************************************************/ 33#define UIPC_VERSION_MAJOR 0x0001 34#define UIPC_VERSION_MINOR 0x0000 35 36 37/******************************** 38 39 UIPC Management Messages 40 41********************************/ 42 43/* tUIPC_STATUS codes*/ 44enum 45{ 46 UIPC_STATUS_SUCCESS, 47 UIPC_STATUS_FAIL 48}; 49typedef UINT8 tUIPC_STATUS; 50 51/* op_code */ 52#define UIPC_OPEN_REQ 0x00 53#define UIPC_OPEN_RSP 0x01 54#define UIPC_CLOSE_REQ 0x02 55#define UIPC_CLOSE_RSP 0x03 56 57/* Structure of UIPC_OPEN_REQ message */ 58typedef struct 59{ 60 UINT8 opcode; /* UIPC_OPEN_REQ */ 61} tUIPC_OPEN_REQ; 62#define UIPC_OPEN_REQ_MSGLEN (1) 63 64/* Structure of UIPC_OPEN_RSP message */ 65typedef struct 66{ 67 UINT8 opcode; /* UIPC_OPEN_RESP */ 68 tUIPC_STATUS status; /* UIPC_STATUS */ 69 UINT16 version_major; /* UIPC_VERSION_MAJOR */ 70 UINT16 version_minor; /* UIPC_VERSION_MINOR */ 71 UINT8 num_streams; /* Number of simultaneous streams supported by the light stack */ 72} tUIPC_OPEN_RSP; 73#define UIPC_OPEN_RSP_MSGLEN (7) 74 75/* Structure of UIPC_CLOSE_REQ message */ 76typedef struct t_uipc_close_req 77{ 78 UINT8 opcode; /* UIPC_CLOSE_REQ */ 79} tUIPC_CLOSE_REQ; 80#define UIPC_CLOSE_REQ_MSGLEN (1) 81 82/* Structure of UIPC_CLOSE_RSP message, only for BTC, full stack may ignore it */ 83typedef struct t_uipc_close_rsp 84{ 85 UINT8 opcode; /* UIPC_CLOSE_RSP */ 86} tUIPC_CLOSE_RSP; 87#define UIPC_CLOSE_RSP_MSGLEN (1) 88 89/* UIPC management message structures */ 90typedef union 91{ 92 UINT8 opcode; 93 tUIPC_OPEN_REQ open_req; 94 tUIPC_OPEN_RSP open_resp; 95 tUIPC_CLOSE_REQ close_req; 96} tUIPC_MSG; 97 98#define UIPC_MGMT_MSG_MAXLEN (sizeof(tUIPC_MSG)) 99 100#define IPC_LOG_MSG_LEN 100 101typedef struct t_uipc_log_msg 102{ 103 UINT32 trace_set_mask; 104 UINT8 msg[IPC_LOG_MSG_LEN]; 105} tUIPC_LOG_MSG; 106#define UIPC_LOG_MSGLEN (IPC_LOG_MSG_LEN + 4) 107 108/******************************** 109 110 H5 Sync Message 111 112********************************/ 113 114/* op_code */ 115#define SLIP_SYNC_TO_LITE_REQ 0 116#define SLIP_SYNC_TO_LITE_RESP 1 117#define SLIP_SYNC_TO_FULL_REQ 2 118#define SLIP_SYNC_TO_FULL_RESP 3 119#define SLIP_SYNC_NOTIFY 4 120 121/* status */ 122#define SLIP_SYNC_SUCCESS 0 123#define SLIP_SYNC_FAILURE 1 124 125typedef struct 126{ 127 UINT8 op_code; 128 UINT8 status; 129 UINT16 acl_pkt_size; 130 UINT8 state; 131 UINT8 lp_state; /* Low Power state */ 132 UINT8 next_seqno; /* next send seq */ 133 UINT8 ack; /* next ack seq, expected seq from peer */ 134 UINT8 sent_ack; /* last sent ack */ 135 UINT8 sliding_window_size;/* window size */ 136 BOOLEAN oof_flow_control; /* Out of Frame SW Flow Control */ 137 BOOLEAN data_integrity_type;/* Level of Data Integrity Check */ 138 UINT8 rx_state; /* rx state for incoming packet processing */ 139} tSLIP_SYNC_INFO; 140 141/******************************** 142 143 L2CAP Sync Message 144 145********************************/ 146 147/* op_code */ 148#define L2C_SYNC_TO_LITE_REQ 0 149#define L2C_SYNC_TO_LITE_RESP 1 150#define L2C_REMOVE_TO_LITE_REQ 2 151#define L2C_REMOVE_TO_LITE_RESP 3 152#define L2C_FLUSH_TO_FULL_IND 4 153 154/* status */ 155#define L2C_SYNC_SUCCESS 0 156#define L2C_SYNC_FAILURE 1 157 158typedef struct t_l2c_stream_info 159{ 160 UINT16 local_cid; /* Local CID */ 161 UINT16 remote_cid; /* Remote CID */ 162 UINT16 out_mtu; /* Max MTU we will send */ 163 UINT16 handle; /* The handle used with LM */ 164 UINT16 link_xmit_quota; /* Num outstanding pkts allowed */ 165 BOOLEAN is_flushable; /* TRUE if flushable channel */ 166} tL2C_STREAM_INFO; 167 168typedef struct t_l2c_sync_to_lite_req 169{ 170 UINT8 op_code; /* L2C_SYNC_TO_LITE_REQ */ 171 UINT16 light_xmit_quota; /* Total quota for light stack */ 172 UINT16 acl_data_size; /* Max ACL data size across HCI transport */ 173 UINT16 non_flushable_pbf; /* L2CAP_PKT_START_NON_FLUSHABLE if controller supports */ 174 /* Otherwise, L2CAP_PKT_START */ 175 UINT8 multi_av_data_cong_start; /* Multi-AV queue size to start congestion */ 176 UINT8 multi_av_data_cong_end; /* Multi-AV queue size to end congestion */ 177 UINT8 multi_av_data_cong_discard; /* Multi-AV queue size to discard */ 178 UINT8 num_stream; 179 tL2C_STREAM_INFO stream[BTM_SYNC_INFO_NUM_STR]; 180} tL2C_SYNC_TO_LITE_REQ; 181 182typedef struct t_l2c_sync_to_lite_resp_stream 183{ 184 UINT16 lcid; 185 UINT8 status; 186} tL2C_SYNC_TO_LITE_RESP_STREAM; 187 188typedef struct t_l2c_sync_to_lite_resp 189{ 190 UINT8 op_code; /* L2C_SYNC_TO_LITE_RESP */ 191 UINT16 light_xmit_unacked; /* unacked packet more than quota in light stack */ 192 UINT8 num_stream; 193 tL2C_SYNC_TO_LITE_RESP_STREAM stream[BTM_SYNC_INFO_NUM_STR]; 194} tL2C_SYNC_TO_LITE_RESP; 195 196typedef struct t_l2c_remove_to_lite_req 197{ 198 UINT8 op_code; /* L2C_REMOVE_TO_LITE_REQ */ 199 UINT16 light_xmit_quota; /* Total quota for light stack */ 200 UINT8 num_stream; 201 UINT16 lcid[BTM_SYNC_INFO_NUM_STR]; 202} tL2C_REMOVE_TO_LITE_REQ; 203 204typedef tL2C_SYNC_TO_LITE_RESP tL2C_REMOVE_TO_LITE_RESP; 205typedef tL2C_REMOVE_TO_LITE_REQ tL2C_FLUSH_TO_FULL_IND; 206 207typedef union t_l2c_sync_msg 208{ 209 UINT8 op_code; 210 tL2C_SYNC_TO_LITE_REQ sync_req; 211 tL2C_SYNC_TO_LITE_RESP sync_resp; 212 tL2C_REMOVE_TO_LITE_REQ remove_req; 213 tL2C_REMOVE_TO_LITE_RESP remove_resp; 214 tL2C_FLUSH_TO_FULL_IND flush_ind; 215} tL2C_SYNC_MSG; 216 217/******************************** 218 219 AVDTP Sync Message 220 221********************************/ 222 223/* op_code */ 224#define AVDT_SYNC_TO_LITE_REQ 0 225#define AVDT_SYNC_TO_LITE_RESP 1 226#define AVDT_RESYNC_TO_LITE_REQ 2 227#define AVDT_RESYNC_TO_LITE_RESP 3 228#define AVDT_SYNC_TO_FULL_REQ 4 229#define AVDT_SYNC_TO_FULL_RESP 5 230#define AVDT_REMOVE_TO_LITE_REQ 6 231#define AVDT_REMOVE_TO_LITE_RESP 7 232#define AVDT_SYNC_TO_BTC_LITE_REQ 8 233#define AVDT_SYNC_TO_BTC_LITE_RESP 9 234 235/* status */ 236#define AVDT_SYNC_SUCCESS 0 237#define AVDT_SYNC_FAILURE 1 238 239typedef struct 240{ 241 UINT16 lcid; 242 UINT32 ssrc; 243} tAVDT_SYNC_TO_BTC_LITE_REQ_STREAM; 244 245typedef struct 246{ 247 UINT8 opcode; /* AVDT_SYNC_TO_BTC_LITE_REQ */ 248 UINT8 num_stream; 249 tAVDT_SYNC_TO_BTC_LITE_REQ_STREAM stream[BTM_SYNC_INFO_NUM_STR]; 250} tAVDT_SYNC_TO_BTC_LITE_REQ; 251 252typedef struct 253{ 254 UINT8 opcode; /* AVDT_SYNC_TO_BTC_LITE_RESP */ 255 UINT8 status; 256} tAVDT_SYNC_TO_BTC_LITE_RESP; 257 258typedef struct t_avdt_scb_sync_info 259{ 260 UINT8 handle; /* SCB handle */ 261 BD_ADDR peer_addr; /* BD address of peer */ 262 UINT16 local_cid; /* Local CID */ 263 UINT16 peer_mtu; /* L2CAP mtu of the peer device */ 264 UINT8 mux_tsid_media; /* TSID for media transport session */ 265 UINT16 media_seq; /* media packet sequence number */ 266} tAVDT_SCB_SYNC_INFO; 267 268typedef struct t_avdt_sync_info 269{ 270 UINT8 op_code; 271 UINT8 status; 272 273 tAVDT_SCB_SYNC_INFO scb_info[BTM_SYNC_INFO_NUM_STR]; 274 275} tAVDT_SYNC_INFO; 276 277typedef union t_avdt_sync_msg 278{ 279 UINT8 op_code; 280 tAVDT_SYNC_INFO sync_info; 281 tAVDT_SYNC_TO_BTC_LITE_REQ btc_sync_req; 282 tAVDT_SYNC_TO_BTC_LITE_RESP btc_sync_resp; 283} tAVDT_SYNC_MSG; 284 285/******************************** 286 287 BTA AV Sync Message 288 289********************************/ 290 291/* op_code for MM light stack */ 292#define BTA_AV_SYNC_TO_LITE_REQ 0 293#define BTA_AV_SYNC_TO_LITE_RESP 1 294#define BTA_AV_STR_START_TO_LITE_REQ 2 295#define BTA_AV_STR_START_TO_LITE_RESP 3 296#define BTA_AV_STR_STOP_TO_LITE_REQ 4 297#define BTA_AV_STR_STOP_TO_LITE_RESP 5 298#define BTA_AV_STR_CLEANUP_TO_LITE_REQ 6 299#define BTA_AV_STR_CLEANUP_TO_LITE_RESP 7 300#define BTA_AV_STR_SUSPEND_TO_LITE_REQ 8 301#define BTA_AV_STR_SUSPEND_TO_LITE_RESP 9 302#define BTA_AV_SYNC_ERROR_RESP 10 303 304/* op_code for BTC light stack */ 305#define A2DP_START_REQ 11 306#define A2DP_START_RESP 12 307#define A2DP_STOP_REQ 13 308#define A2DP_STOP_RESP 14 309#define A2DP_CLEANUP_REQ 15 310#define A2DP_CLEANUP_RESP 16 311#define A2DP_SUSPEND_REQ 17 312#define A2DP_SUSPEND_RESP 18 313 314#define A2DP_JITTER_DONE_IND 41 /* For BTSNK */ 315 316#define AUDIO_CODEC_CONFIG_REQ 19 317#define AUDIO_CODEC_CONFIG_RESP 20 318#define AUDIO_CODEC_SET_BITRATE_REQ 21 319#define AUDIO_CODEC_FLUSH_REQ 22 320#define AUDIO_ROUTE_CONFIG_REQ 23 321#define AUDIO_ROUTE_CONFIG_RESP 24 322#define AUDIO_MIX_CONFIG_REQ 25 323#define AUDIO_MIX_CONFIG_RESP 26 324#define AUDIO_BURST_FRAMES_IND 27 325#define AUDIO_BURST_END_IND 28 326#define AUDIO_EQ_MODE_CONFIG_REQ 29 327#define AUDIO_SCALE_CONFIG_REQ 30 328 329/* For TIVO, only applicable for I2S -> DAC */ 330#define AUDIO_SUB_ROUTE_REQ 51 331#define AUDIO_SUB_ROUTE_RESP 52 332 333typedef struct 334{ 335 UINT8 opcode; /* A2DP_START_REQ */ 336 UINT16 lcid; 337 UINT16 curr_mtu; 338}tA2DP_START_REQ; 339 340typedef struct 341{ 342 UINT8 opcode; /* A2DP_STOP_REQ */ 343 UINT16 lcid; 344}tA2DP_STOP_REQ; 345 346typedef struct 347{ 348 UINT8 opcode; /* A2DP_SUSPEND_REQ */ 349 UINT16 lcid; 350}tA2DP_SUSPEND_REQ; 351 352typedef struct 353{ 354 UINT8 opcode; /* A2DP_CLEANUP_REQ */ 355 UINT16 lcid; 356 UINT16 curr_mtu; 357} tA2DP_CLEANUP_REQ; 358 359typedef struct 360{ 361 UINT8 opcode; /* A2DP_START_RESP, A2DP_STOP_RESP, A2DP_CLEANUP_RESP, A2DP_SUSPEND_RESP */ 362 UINT16 lcid; 363}tA2DP_GENERIC_RESP; 364 365#define AUDIO_CODEC_NONE 0x0000 366#define AUDIO_CODEC_SBC_ENC 0x0001 367#define AUDIO_CODEC_SBC_DEC 0x0002 368#define AUDIO_CODEC_MP3_ENC 0x0004 369#define AUDIO_CODEC_MP3_DEC 0x0008 370#define AUDIO_CODEC_AAC_ENC 0x0010 371#define AUDIO_CODEC_AAC_DEC 0x0020 372#define AUDIO_CODEC_AAC_PLUS_ENC 0x0040 373#define AUDIO_CODEC_AAC_PLUS_DEC 0x0080 374#define AUDIO_CODEC_MP2_ENC 0x0100 375#define AUDIO_CODEC_MP2_DEC 0x0200 376#define AUDIO_CODEC_MP2_5_ENC 0x0400 377#define AUDIO_CODEC_MP2_5_DEC 0x0800 378 379typedef UINT16 tAUDIO_CODEC_TYPE; 380 381/* SBC CODEC Parameters */ 382 383#define CODEC_INFO_SBC_SF_16K 0x00 384#define CODEC_INFO_SBC_SF_32K 0x01 385#define CODEC_INFO_SBC_SF_44K 0x02 386#define CODEC_INFO_SBC_SF_48K 0x03 387 388#define CODEC_INFO_SBC_BLOCK_4 0x00 389#define CODEC_INFO_SBC_BLOCK_8 0x01 390#define CODEC_INFO_SBC_BLOCK_12 0x02 391#define CODEC_INFO_SBC_BLOCK_16 0x03 392 393#define CODEC_INFO_SBC_CH_MONO 0x00 394#define CODEC_INFO_SBC_CH_DUAL 0x01 395#define CODEC_INFO_SBC_CH_STEREO 0x02 396#define CODEC_INFO_SBC_CH_JS 0x03 397 398#define CODEC_INFO_SBC_ALLOC_LOUDNESS 0x00 399#define CODEC_INFO_SBC_ALLOC_SNR 0x01 400 401#define CODEC_INFO_SBC_SUBBAND_4 0x00 402#define CODEC_INFO_SBC_SUBBAND_8 0x01 403 404/* MPEG audio version ID */ 405#define CODEC_INFO_MP25_ID 0x00 406#define CODEC_INFO_RESERVE 0x01 407#define CODEC_INFO_MP2_ID 0x02 408#define CODEC_INFO_MP3_ID 0x03 409 410#define CODEC_INFO_MP3_PROTECTION_ON 0x00 411#define CODEC_INFO_MP3_PROTECTION_OFF 0x01 412 413#define CODEC_INFO_MP3_BR_IDX_FREE 0x00 414#define CODEC_INFO_MP3_BR_IDX_32K 0x01 415#define CODEC_INFO_MP3_BR_IDX_40K 0x02 416#define CODEC_INFO_MP3_BR_IDX_48K 0x03 417#define CODEC_INFO_MP3_BR_IDX_56K 0x04 418#define CODEC_INFO_MP3_BR_IDX_64K 0x05 419#define CODEC_INFO_MP3_BR_IDX_80K 0x06 420#define CODEC_INFO_MP3_BR_IDX_96K 0x07 421#define CODEC_INFO_MP3_BR_IDX_112K 0x08 422#define CODEC_INFO_MP3_BR_IDX_128K 0x09 423#define CODEC_INFO_MP3_BR_IDX_160K 0x0A 424#define CODEC_INFO_MP3_BR_IDX_192K 0x0B 425#define CODEC_INFO_MP3_BR_IDX_224K 0x0C 426#define CODEC_INFO_MP3_BR_IDX_256K 0x0D 427#define CODEC_INFO_MP3_BR_IDX_320K 0x0E 428 429#define CODEC_INFO_MP3_SF_44K 0x00 430#define CODEC_INFO_MP3_SF_48K 0x01 431#define CODEC_INFO_MP3_SF_32K 0x02 432 433#define CODEC_INFO_MP3_MODE_STEREO 0x00 434#define CODEC_INFO_MP3_MODE_JS 0x01 435#define CODEC_INFO_MP3_MODE_DUAL 0x02 436#define CODEC_INFO_MP3_MODE_SINGLE 0x03 437 438/* layer 3, type of joint stereo coding method (intensity and ms) */ 439#define CODEC_INFO_MP3_MODE_EXT_OFF_OFF 0x00 440#define CODEC_INFO_MP3_MODE_EXT_ON_OFF 0x01 441#define CODEC_INFO_MP3_MODE_EXT_OFF_ON 0x02 442#define CODEC_INFO_MP3_MODE_EXT_ON_ON 0x03 443 444 445#define CODEC_INFO_MP2_PROTECTION_ON 0x00 446#define CODEC_INFO_MP2_PROTECTION_OFF 0x01 447 448#define CODEC_INFO_MP2_BR_IDX_FREE 0x00 449#define CODEC_INFO_MP2_BR_IDX_8K 0x01 450#define CODEC_INFO_MP2_BR_IDX_16K 0x02 451#define CODEC_INFO_MP2_BR_IDX_24K 0x03 452#define CODEC_INFO_MP2_BR_IDX_32K 0x04 453#define CODEC_INFO_MP2_BR_IDX_40K 0x05 454#define CODEC_INFO_MP2_BR_IDX_48K 0x06 455#define CODEC_INFO_MP2_BR_IDX_56K 0x07 456#define CODEC_INFO_MP2_BR_IDX_64K 0x08 457#define CODEC_INFO_MP2_BR_IDX_80K 0x09 458#define CODEC_INFO_MP2_BR_IDX_96K 0x0A 459#define CODEC_INFO_MP2_BR_IDX_112K 0x0B 460#define CODEC_INFO_MP2_BR_IDX_128K 0x0C 461#define CODEC_INFO_MP2_BR_IDX_144K 0x0D 462#define CODEC_INFO_MP2_BR_IDX_160K 0x0E 463 464#define CODEC_INFO_MP2_SF_22K 0x00 465#define CODEC_INFO_MP2_SF_24K 0x01 466#define CODEC_INFO_MP2_SF_16K 0x02 467 468#define CODEC_INFO_MP2_MODE_STEREO 0x00 469#define CODEC_INFO_MP2_MODE_JS 0x01 470#define CODEC_INFO_MP2_MODE_DUAL 0x02 471#define CODEC_INFO_MP2_MODE_SINGLE 0x03 472 473/* layer 3, type of joint stereo coding method (intensity and ms) */ 474#define CODEC_INFO_MP2_MODE_EXT_OFF_OFF 0x00 475#define CODEC_INFO_MP2_MODE_EXT_ON_OFF 0x01 476#define CODEC_INFO_MP2_MODE_EXT_OFF_ON 0x02 477#define CODEC_INFO_MP2_MODE_EXT_ON_ON 0x03 478 479#define CODEC_INFO_MP2_SAMPLE_PER_FRAME 576 480 481/* mpeg 2.5 layer 3 decoder */ 482 483#define CODEC_INFO_MP25_PROTECTION_ON 0x00 484#define CODEC_INFO_MP25_PROTECTION_OFF 0x01 485 486#define CODEC_INFO_MP25_BR_IDX_FREE 0x00 487#define CODEC_INFO_MP25_BR_IDX_8K 0x01 488#define CODEC_INFO_MP25_BR_IDX_16K 0x02 489#define CODEC_INFO_MP25_BR_IDX_24K 0x03 490#define CODEC_INFO_MP25_BR_IDX_32K 0x04 491#define CODEC_INFO_MP25_BR_IDX_40K 0x05 492#define CODEC_INFO_MP25_BR_IDX_48K 0x06 493#define CODEC_INFO_MP25_BR_IDX_56K 0x07 494#define CODEC_INFO_MP25_BR_IDX_64K 0x08 495#define CODEC_INFO_MP25_BR_IDX_80K 0x09 496#define CODEC_INFO_MP25_BR_IDX_96K 0x0A 497#define CODEC_INFO_MP25_BR_IDX_112K 0x0B 498#define CODEC_INFO_MP25_BR_IDX_128K 0x0C 499#define CODEC_INFO_MP25_BR_IDX_144K 0x0D 500#define CODEC_INFO_MP25_BR_IDX_160K 0x0E 501 502#define CODEC_INFO_MP25_SF_11K 0x00 503#define CODEC_INFO_MP25_SF_12K 0x01 504#define CODEC_INFO_MP25_SF_8K 0x02 505 506#define CODEC_INFO_MP25_MODE_STEREO 0x00 507#define CODEC_INFO_MP25_MODE_JS 0x01 508#define CODEC_INFO_MP25_MODE_DUAL 0x02 509#define CODEC_INFO_MP25_MODE_SINGLE 0x03 510 511/* layer 3, type of joint stereo coding method (intensity and ms) */ 512#define CODEC_INFO_MP25_MODE_EXT_OFF_OFF 0x00 513#define CODEC_INFO_MP25_MODE_EXT_ON_OFF 0x01 514#define CODEC_INFO_MP25_MODE_EXT_OFF_ON 0x02 515#define CODEC_INFO_MP25_MODE_EXT_ON_ON 0x03 516 517#define CODEC_INFO_MP25_SAMPLE_PER_FRAME 576 518 519/* AAC/AAC+ CODEC Parameters */ 520#define CODEC_INFO_AAC_SF_IDX_96K 0x0 521#define CODEC_INFO_AAC_SF_IDX_88K 0x1 522#define CODEC_INFO_AAC_SF_IDX_64K 0x2 523#define CODEC_INFO_AAC_SF_IDX_48K 0x3 524#define CODEC_INFO_AAC_SF_IDX_44K 0x4 525#define CODEC_INFO_AAC_SF_IDX_32K 0x5 526#define CODEC_INFO_AAC_SF_IDX_24K 0x6 527#define CODEC_INFO_AAC_SF_IDX_22K 0x7 528#define CODEC_INFO_AAC_SF_IDX_16K 0x8 529#define CODEC_INFO_AAC_SF_IDX_12K 0x9 530#define CODEC_INFO_AAC_SF_IDX_11K 0xA 531#define CODEC_INFO_AAC_SF_IDX_08K 0xB 532#define CODEC_INFO_AAC_SF_IDX_RESERVE 0xC 533 534#define CODEC_INFO_AAC_BR_RATE_48K 288000 535#define CODEC_INFO_AAC_BR_RATE_44K 264600 536#define CODEC_INFO_AAC_BR_RATE_32K 192000 537 538 539#define CODEC_INFO_AAC_1_CH 1 /*center front speaker */ 540#define CODEC_INFO_AAC_2_CH 2 /*left, right front speaker */ 541#define CODEC_INFO_AAC_3_CH 3 /*center front speaker, left right front speaker */ 542#define CODEC_INFO_AAC_4_CH 4 /*center/rear front speaker, left/right front speaker */ 543#define CODEC_INFO_AAC_5_CH 5 /*center, left, right front speaker, left/right surround */ 544#define CODEC_INFO_AAC_6_CH 6 /*center, left, right front speaker, left/right surround, LFE */ 545#define CODEC_INFO_AAC_7_CH 7 /*(left, right)center/left,right front speaker, left/right surround, LFE */ 546 547 548typedef struct 549{ 550 UINT8 sampling_freq; 551 UINT8 channel_mode; 552 UINT8 block_length; 553 UINT8 num_subbands; 554 UINT8 alloc_method; 555 UINT8 bitpool_size; /* 2 - 250 */ 556} tCODEC_INFO_SBC; 557 558typedef struct 559{ 560 UINT8 ch_mode; 561 UINT8 sampling_freq; 562 UINT8 bitrate_index; /* 0 - 14 */ 563} tCODEC_INFO_MP3; 564 565typedef struct 566{ 567 UINT8 ch_mode; 568 UINT8 sampling_freq; 569 UINT8 bitrate_index; /* 0 - 14 */ 570} tCODEC_INFO_MP2; 571 572 573typedef struct 574{ 575 UINT8 ch_mode; 576 UINT8 sampling_freq; 577 UINT8 bitrate_index; /* 0 - 14 */ 578} tCODEC_INFO_MP2_5; 579 580typedef struct 581{ 582 UINT16 sampling_freq; 583 UINT8 channel_mode; /* 0x02:mono, 0x01:dual */ 584 UINT32 bitrate; /* 0 - 320K */ 585 UINT32 sbr_profile; /* 1: ON, 0: OFF */ 586} tCODEC_INFO_AAC; 587 588typedef union 589{ 590 tCODEC_INFO_SBC sbc; 591 tCODEC_INFO_MP3 mp3; 592 tCODEC_INFO_MP2 mp2; 593 tCODEC_INFO_MP2_5 mp2_5; 594 tCODEC_INFO_AAC aac; 595} tCODEC_INFO; 596 597typedef struct 598{ 599 UINT8 opcode; /* AUDIO_CODEC_CONFIG_REQ */ 600 tAUDIO_CODEC_TYPE codec_type; 601 tCODEC_INFO codec_info; 602} tAUDIO_CODEC_CONFIG_REQ; 603 604#define AUDIO_CONFIG_SUCCESS 0x00 605#define AUDIO_CONFIG_NOT_SUPPORTED 0x01 606#define AUDIO_CONFIG_FAIL_OUT_OF_MEMORY 0x02 607#define AUDIO_CONFIG_FAIL_CODEC_USED 0x03 608#define AUDIO_CONFIG_FAIL_ROUTE 0x04 609typedef UINT8 tAUDIO_CONFIG_STATUS; 610 611typedef struct 612{ 613 UINT8 opcode; /* AUDIO_CODEC_CONFIG_RESP */ 614 tAUDIO_CONFIG_STATUS status; 615} tAUDIO_CODEC_CONFIG_RESP; 616 617typedef struct 618{ 619 UINT8 opcode; /* AUDIO_CODEC_SET_BITRATE_REQ */ 620 tAUDIO_CODEC_TYPE codec_type; 621 union 622 { 623 UINT8 sbc; 624 UINT8 mp3; 625 UINT32 aac; 626 } codec_bitrate; 627} tAUDIO_CODEC_SET_BITRATE_REQ; 628 629#define AUDIO_ROUTE_SRC_FMRX 0x00 630#define AUDIO_ROUTE_SRC_I2S 0x01 631#define AUDIO_ROUTE_SRC_ADC 0x02 632#define AUDIO_ROUTE_SRC_HOST 0x03 633#define AUDIO_ROUTE_SRC_PTU 0x04 634#define AUDIO_ROUTE_SRC_BTSNK 0x05 635#define AUDIO_ROUTE_SRC_NONE 0x80 636#define MAX_AUDIO_ROUTE_SRC 6 637typedef UINT8 tAUDIO_ROUTE_SRC; 638 639#define AUDIO_ROUTE_MIX_NONE 0x00 640#define AUDIO_ROUTE_MIX_HOST 0x01 641#define AUDIO_ROUTE_MIX_PCM 0x02 642#define AUDIO_ROUTE_MIX_CHIRP 0x03 643#define AUDIO_ROUTE_MIX_I2S 0x04 644#define AUDIO_ROUTE_MIX_ADC 0x05 645#define AUDIO_ROUTE_MIX_RESERVED 0x06 646#define MAX_AUDIO_ROUTE_MIX 7 647typedef UINT8 tAUDIO_ROUTE_MIX; 648 649#define AUDIO_ROUTE_OUT_NONE 0x0000 650#define AUDIO_ROUTE_OUT_BTA2DP 0x0001 651#define AUDIO_ROUTE_OUT_FMTX 0x0002 652#define AUDIO_ROUTE_OUT_BTSCO 0x0004 653#define AUDIO_ROUTE_OUT_HOST 0x0008 654#define AUDIO_ROUTE_OUT_DAC 0x0010 655#define AUDIO_ROUTE_OUT_I2S 0x0020 656#define AUDIO_ROUTE_OUT_BTA2DP_DAC 0x0040 657#define AUDIO_ROUTE_OUT_BTA2DP_I2S 0x0080 658#define AUDIO_ROUTE_OUT_BTSCO_DAC 0x0100 659#define AUDIO_ROUTE_OUT_BTSCO_I2S 0x0200 660#define AUDIO_ROUTE_OUT_HOST_BTA2DP 0x0400 661#define AUDIO_ROUTE_OUT_HOST_BTSCO 0x0800 662#define AUDIO_ROUTE_OUT_HOST_DAC 0x1000 663#define AUDIO_ROUTE_OUT_HOST_I2S 0x2000 664#define AUDIO_ROUTE_OUT_DAC_I2S 0x4000 665#define AUDIO_ROUTE_OUT_RESERVED_2 0x8000 666 667#define MAX_AUDIO_SINGLE_ROUTE_OUT 6 668#define MAX_AUDIO_MULTI_ROUTE_OUT 16 669typedef UINT16 tAUDIO_MULTI_ROUTE_OUT; 670typedef UINT8 tAUDIO_ROUTE_OUT; 671 672#define AUDIO_ROUTE_SF_8K 0x00 673#define AUDIO_ROUTE_SF_16K 0x01 674#define AUDIO_ROUTE_SF_32K 0x02 675#define AUDIO_ROUTE_SF_44_1K 0x03 676#define AUDIO_ROUTE_SF_48K 0x04 677#define AUDIO_ROUTE_SF_11K 0x05 678#define AUDIO_ROUTE_SF_12K 0x06 679#define AUDIO_ROUTE_SF_22K 0x07 680#define AUDIO_ROUTE_SF_24K 0x08 681#define AUDIO_ROUTE_SF_NA 0xFF 682typedef UINT8 tAUDIO_ROUTE_SF; 683 684#define AUDIO_ROUTE_EQ_BASS_BOOST 0x00 685#define AUDIO_ROUTE_EQ_CLASSIC 0x01 686#define AUDIO_ROUTE_EQ_JAZZ 0x02 687#define AUDIO_ROUTE_EQ_LIVE 0x03 688#define AUDIO_ROUTE_EQ_NORMAL 0x04 689#define AUDIO_ROUTE_EQ_ROCK 0x05 690#define AUDIO_ROUTE_EQ_BYPASS 0x06 691 692#define AUDIO_ROUTE_DIGITAL_VOLUME_CONTROL 0x07 693 694#define AUDIO_ROUTE_EQ_CONFIG_GAIN 0xFF /* Custion Gain Config */ 695typedef UINT8 tAUDIO_ROUTE_EQ; 696 697typedef struct 698{ 699 UINT8 opcode; /* AUDIO_ROUTE_CONFIG_REQ */ 700 tAUDIO_ROUTE_SRC src; 701 tAUDIO_ROUTE_SF src_sf; 702 tAUDIO_ROUTE_OUT out; 703 tAUDIO_ROUTE_SF out_codec_sf; 704 tAUDIO_ROUTE_SF out_i2s_sf; 705 tAUDIO_ROUTE_EQ eq_mode; 706} tAUDIO_ROUTE_CONFIG_REQ; 707 708typedef struct 709{ 710 UINT8 opcode; /* AUDIO_ROUTE_CONFIG_RESP */ 711 tAUDIO_CONFIG_STATUS status; 712} tAUDIO_ROUTE_CONFIG_RESP; 713 714typedef struct 715{ 716 UINT16 amp[2]; /* left/right 15 bit amplitude value */ 717 UINT16 tone[2]; /* left/right 12 bit frequency 0 - 4096Hz */ 718 UINT16 mark[2]; /* left/right 16 bit mark time 0 - 65535ms */ 719 UINT16 space[2]; /* left/right 16 bit space time 0 - 65535ms */ 720} tCHIRP_CONFIG; 721 722typedef struct 723{ 724 UINT8 pri_l; /* Primary Left scale : 0 ~ 255 */ 725 UINT8 mix_l; /* Mixing Left scale : 0 ~ 255 */ 726 UINT8 pri_r; /* Primary Right scale : 0 ~ 255 */ 727 UINT8 mix_r; /* Mixing Right scale : 0 ~ 255 */ 728} tMIX_SCALE_CONFIG; 729 730/* For custon equalizer gain configuration */ 731typedef struct 732{ 733 UINT32 audio_l_g0; /* IIR biquad filter left ch gain 0 */ 734 UINT32 audio_l_g1; /* IIR biquad filter left ch gain 1 */ 735 UINT32 audio_l_g2; /* IIR biquad filter left ch gain 2 */ 736 UINT32 audio_l_g3; /* IIR biquad filter left ch gain 3 */ 737 UINT32 audio_l_g4; /* IIR biquad filter left ch gain 4 */ 738 UINT32 audio_l_gl; /* IIR biquad filter left ch global gain */ 739 UINT32 audio_r_g0; /* IIR biquad filter left ch gain 0 */ 740 UINT32 audio_r_g1; /* IIR biquad filter left ch gain 1 */ 741 UINT32 audio_r_g2; /* IIR biquad filter left ch gain 2 */ 742 UINT32 audio_r_g3; /* IIR biquad filter left ch gain 3 */ 743 UINT32 audio_r_g4; /* IIR biquad filter left ch gain 4 */ 744 UINT32 audio_r_gl; /* IIR biquad filter left ch global gain */ 745} tEQ_GAIN_CONFIG; 746 747typedef struct 748{ 749 UINT8 opcode; /* AUDIO_MIX_CONFIG_REQ */ 750 tAUDIO_ROUTE_MIX mix_src; 751 tAUDIO_ROUTE_SF mix_src_sf; 752 tMIX_SCALE_CONFIG mix_scale; 753 tCHIRP_CONFIG chirp_config; 754} tAUDIO_MIX_CONFIG_REQ; 755 756typedef struct 757{ 758 UINT8 opcode; /* AUDIO_MIX_CONFIG_RESP */ 759 tAUDIO_CONFIG_STATUS status; 760} tAUDIO_MIX_CONFIG_RESP; 761 762 763typedef struct 764{ 765 UINT8 opcode; /* AUDIO_BURST_FRAMES_IND */ 766 UINT32 burst_size; /* in bytes */ 767} tAUDIO_BURST_FRAMES_IND; 768 769typedef struct 770{ 771 UINT8 opcode; /* AUDIO_BURST_END_IND */ 772} tAUDIO_BURST_END_IND; 773 774typedef struct 775{ 776 UINT8 opcode; /* AUDIO_CODEC_FLUSH_REQ */ 777} tAUDIO_CODEC_FLUSH_REQ; 778 779typedef struct 780{ 781 UINT8 opcode; /* AUDIO_EQ_MODE_CONFIG_REQ */ 782 tAUDIO_ROUTE_EQ eq_mode; 783 tEQ_GAIN_CONFIG filter_gain; /* Valid only when eq_mode is 0xFF */ 784} tAUDIO_EQ_MODE_CONFIG_REQ; 785 786typedef struct 787{ 788 UINT8 opcode; /* AUDIO_SCALE_CONFIG_REQ */ 789 tMIX_SCALE_CONFIG mix_scale; 790} tAUDIO_SCALE_CONFIG_REQ; 791 792typedef UINT8 tBTA_AV_DUAL_STACK_EVT; 793 794typedef struct 795{ 796 UINT8 avdt_handle; /* AVDTP handle */ 797 UINT8 chnl; /* the channel: audio/video */ 798 UINT8 codec_type; /* codec type */ 799 BOOLEAN cong; /* TRUE if AVDTP congested */ 800 UINT8 hdi; /* the index to SCB[] */ 801 UINT8 hndl; /* the handle: ((hdi + 1)|chnl) */ 802 UINT8 l2c_bufs; /* the number of buffers queued to L2CAP */ 803 UINT16 l2c_cid; /* L2CAP channel ID */ 804 BD_ADDR peer_addr; /* peer BD address */ 805}tBTA_AV_SYNC_INFO; 806 807typedef struct 808{ 809 tBTA_AV_DUAL_STACK_EVT event; 810 tBTA_AV_SYNC_INFO sync_info; 811 UINT16 curr_mtu; /* common mtu shared by all active streams */ 812 UINT8 multi_av_supported; /* Whether multi-av is supported */ 813}tBTA_AV_SYNC_INFO_REQ; /* SYNC_TO_LITE_REQ */ 814 815/* Dual stack stream events */ 816typedef struct 817{ 818 tBTA_AV_DUAL_STACK_EVT event; 819 UINT8 scb_idx; 820}tBTA_AV_SCB_EVT; 821 822/* data type for the Audio Codec Information*/ 823typedef struct 824{ 825 UINT16 bit_rate; /* SBC encoder bit rate in kbps */ 826 UINT16 bit_rate_busy; /* SBC encoder bit rate in kbps */ 827 UINT16 bit_rate_swampd; /* SBC encoder bit rate in kbps */ 828 UINT8 busy_level; /* Busy level indicating the bit-rate to be used */ 829 UINT8 codec_info[AVDT_CODEC_SIZE]; 830 UINT8 codec_type; /* Codec type */ 831} tBTA_AV_AUDIO_CODEC_SYNC_INFO; 832 833/* Dual stack stream events */ 834typedef struct 835{ 836 tBTA_AV_DUAL_STACK_EVT event; 837 UINT8 scb_idx; 838 UINT8 audio_open_cnt; 839 tBTA_AV_AUDIO_CODEC_SYNC_INFO p_codec_cfg; 840 UINT8 start_stop_flag; 841}tBTA_AV_SCB_REQ; 842 843typedef struct 844{ 845 tBTA_AV_DUAL_STACK_EVT event; 846 UINT8 scb_idx; 847 UINT8 audio_open_cnt; 848 UINT16 curr_mtu; /* common mtu shared by all active streams */ 849}tBTA_AV_SCB_CLEANUP_REQ; 850 851/* Add request/response structures if needed ... 852typedef struct 853{ 854 event; 855 data; 856}tBTA_AV_SYNC_*_REQ/RESP; 857*/ 858 859typedef union 860{ 861 /* MM light stack */ 862 tBTA_AV_DUAL_STACK_EVT event; 863 tBTA_AV_SYNC_INFO_REQ sync_info_req; 864 tBTA_AV_SCB_EVT scb_evt; 865 tBTA_AV_SCB_REQ scb_req; 866 tBTA_AV_SCB_CLEANUP_REQ scb_cleanup_req; 867 868 /* BTC light stack */ 869 UINT8 opcode; 870 tA2DP_START_REQ btc_start_req; 871 tA2DP_STOP_REQ btc_stop_req; 872 tA2DP_CLEANUP_REQ btc_cleanup_req; 873 tA2DP_SUSPEND_REQ btc_suspend_req; 874 875 tAUDIO_CODEC_CONFIG_REQ codec_config_req; 876 tAUDIO_CODEC_SET_BITRATE_REQ codec_bitrate_req; 877 tAUDIO_CODEC_FLUSH_REQ codec_flush_req; 878 tAUDIO_ROUTE_CONFIG_REQ route_config_req; 879 tAUDIO_MIX_CONFIG_REQ mix_config_req; 880 tAUDIO_EQ_MODE_CONFIG_REQ eq_mode_req; 881 tAUDIO_SCALE_CONFIG_REQ scale_config_req; 882}tBTA_DUAL_STACK_MSG; 883 884#endif /* UIPC_MSG_H */ 885