blob: d61fae2753bb9a4843f18783a401190a9d0397c5 [file] [log] [blame]
Sridhar Vashistd51ab122015-05-19 03:32:21 -05001/******************************************************************************
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};
Marie Janssenc40c21f2016-08-05 16:13:13 -070049typedef uint8_t tUIPC_STATUS;
Sridhar Vashistd51ab122015-05-19 03:32:21 -050050
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#pragma pack(push) /* push current alignment to stack */
58#pragma pack(1) /* set alignment to 1 byte boundary to allow for offset mappings */
59
60/* Structure of UIPC_OPEN_REQ message */
61typedef struct
62{
Marie Janssenc40c21f2016-08-05 16:13:13 -070063 uint8_t opcode; /* UIPC_OPEN_REQ */
Sridhar Vashistd51ab122015-05-19 03:32:21 -050064} tUIPC_OPEN_REQ;
65#define UIPC_OPEN_REQ_MSGLEN (1)
66
67/* Structure of UIPC_OPEN_RSP message */
68typedef struct
69{
Marie Janssenc40c21f2016-08-05 16:13:13 -070070 uint8_t opcode; /* UIPC_OPEN_RESP */
Sridhar Vashistd51ab122015-05-19 03:32:21 -050071 tUIPC_STATUS status; /* UIPC_STATUS */
Marie Janssenc40c21f2016-08-05 16:13:13 -070072 uint16_t version_major; /* UIPC_VERSION_MAJOR */
73 uint16_t version_minor; /* UIPC_VERSION_MINOR */
74 uint8_t num_streams; /* Number of simultaneous streams supported by the light stack */
Sridhar Vashistd51ab122015-05-19 03:32:21 -050075} tUIPC_OPEN_RSP;
76#define UIPC_OPEN_RSP_MSGLEN (7)
77
78/* Structure of UIPC_CLOSE_REQ message */
79typedef struct t_uipc_close_req
80{
Marie Janssenc40c21f2016-08-05 16:13:13 -070081 uint8_t opcode; /* UIPC_CLOSE_REQ */
Sridhar Vashistd51ab122015-05-19 03:32:21 -050082} tUIPC_CLOSE_REQ;
83#define UIPC_CLOSE_REQ_MSGLEN (1)
84
85/* Structure of UIPC_CLOSE_RSP message, only for BTC, full stack may ignore it */
86typedef struct t_uipc_close_rsp
87{
Marie Janssenc40c21f2016-08-05 16:13:13 -070088 uint8_t opcode; /* UIPC_CLOSE_RSP */
Sridhar Vashistd51ab122015-05-19 03:32:21 -050089} tUIPC_CLOSE_RSP;
90#define UIPC_CLOSE_RSP_MSGLEN (1)
91
92/* UIPC management message structures */
93typedef union
94{
Marie Janssenc40c21f2016-08-05 16:13:13 -070095 uint8_t opcode;
Sridhar Vashistd51ab122015-05-19 03:32:21 -050096 tUIPC_OPEN_REQ open_req;
97 tUIPC_OPEN_RSP open_resp;
98 tUIPC_CLOSE_REQ close_req;
99} tUIPC_MSG;
100
101#define UIPC_MGMT_MSG_MAXLEN (sizeof(tUIPC_MSG))
102
103#define IPC_LOG_MSG_LEN 100
104typedef struct t_uipc_log_msg
105{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700106 uint32_t trace_set_mask;
107 uint8_t msg[IPC_LOG_MSG_LEN];
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500108} tUIPC_LOG_MSG;
109#define UIPC_LOG_MSGLEN (IPC_LOG_MSG_LEN + 4)
110
111/********************************
112
113 H5 Sync Message
114
115********************************/
116
117/* op_code */
118#define SLIP_SYNC_TO_LITE_REQ 0
119#define SLIP_SYNC_TO_LITE_RESP 1
120#define SLIP_SYNC_TO_FULL_REQ 2
121#define SLIP_SYNC_TO_FULL_RESP 3
122#define SLIP_SYNC_NOTIFY 4
123
124/* status */
125#define SLIP_SYNC_SUCCESS 0
126#define SLIP_SYNC_FAILURE 1
127
128typedef struct
129{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700130 uint8_t op_code;
131 uint8_t status;
132 uint16_t acl_pkt_size;
133 uint8_t state;
134 uint8_t lp_state; /* Low Power state */
135 uint8_t next_seqno; /* next send seq */
136 uint8_t ack; /* next ack seq, expected seq from peer */
137 uint8_t sent_ack; /* last sent ack */
138 uint8_t sliding_window_size;/* window size */
Marie Janssend84f6082016-08-05 16:54:46 -0700139 bool oof_flow_control; /* Out of Frame SW Flow Control */
140 bool data_integrity_type;/* Level of Data Integrity Check */
Marie Janssenc40c21f2016-08-05 16:13:13 -0700141 uint8_t rx_state; /* rx state for incoming packet processing */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500142} tSLIP_SYNC_INFO;
143
144/********************************
145
146 L2CAP Sync Message
147
148********************************/
149
150/* op_code */
151#define L2C_SYNC_TO_LITE_REQ 0
152#define L2C_SYNC_TO_LITE_RESP 1
153#define L2C_REMOVE_TO_LITE_REQ 2
154#define L2C_REMOVE_TO_LITE_RESP 3
155#define L2C_FLUSH_TO_FULL_IND 4
156
157/* status */
158#define L2C_SYNC_SUCCESS 0
159#define L2C_SYNC_FAILURE 1
160
161typedef struct t_l2c_stream_info
162{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700163 uint16_t local_cid; /* Local CID */
164 uint16_t remote_cid; /* Remote CID */
165 uint16_t out_mtu; /* Max MTU we will send */
166 uint16_t handle; /* The handle used with LM */
167 uint16_t link_xmit_quota; /* Num outstanding pkts allowed */
Marie Janssend84f6082016-08-05 16:54:46 -0700168 bool is_flushable; /* TRUE if flushable channel */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500169} tL2C_STREAM_INFO;
170
171typedef struct t_l2c_sync_to_lite_req
172{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700173 uint8_t op_code; /* L2C_SYNC_TO_LITE_REQ */
174 uint16_t light_xmit_quota; /* Total quota for light stack */
175 uint16_t acl_data_size; /* Max ACL data size across HCI transport */
176 uint16_t non_flushable_pbf; /* L2CAP_PKT_START_NON_FLUSHABLE if controller supports */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500177 /* Otherwise, L2CAP_PKT_START */
Marie Janssenc40c21f2016-08-05 16:13:13 -0700178 uint8_t multi_av_data_cong_start; /* Multi-AV queue size to start congestion */
179 uint8_t multi_av_data_cong_end; /* Multi-AV queue size to end congestion */
180 uint8_t multi_av_data_cong_discard; /* Multi-AV queue size to discard */
181 uint8_t num_stream;
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500182 tL2C_STREAM_INFO stream;
183} tL2C_SYNC_TO_LITE_REQ;
184
185typedef struct t_l2c_sync_to_lite_resp_stream
186{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700187 uint16_t lcid;
188 uint8_t status;
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500189} tL2C_SYNC_TO_LITE_RESP_STREAM;
190
191
192typedef struct t_l2c_sync_to_lite_resp
193{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700194 uint8_t op_code; /* L2C_SYNC_TO_LITE_RESP */
195 uint16_t light_xmit_unacked; /* unacked packet more than quota in light stack */
196 uint8_t num_stream;
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500197 tL2C_SYNC_TO_LITE_RESP_STREAM stream;
198} tL2C_SYNC_TO_LITE_RESP;
199
200typedef struct t_l2c_remove_to_lite_req
201{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700202 uint8_t op_code; /* L2C_REMOVE_TO_LITE_REQ */
203 uint16_t light_xmit_quota; /* Total quota for light stack */
204 uint8_t num_stream;
205 uint16_t lcid;
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500206} tL2C_REMOVE_TO_LITE_REQ;
207
208typedef tL2C_SYNC_TO_LITE_RESP tL2C_REMOVE_TO_LITE_RESP;
209typedef tL2C_REMOVE_TO_LITE_REQ tL2C_FLUSH_TO_FULL_IND;
210
211typedef union t_l2c_sync_msg
212{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700213 uint8_t op_code;
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500214 tL2C_SYNC_TO_LITE_REQ sync_req;
215 tL2C_SYNC_TO_LITE_RESP sync_resp;
216 tL2C_REMOVE_TO_LITE_REQ remove_req;
217 tL2C_REMOVE_TO_LITE_RESP remove_resp;
218 tL2C_FLUSH_TO_FULL_IND flush_ind;
219} tL2C_SYNC_MSG;
220
221/********************************
222
223 AVDTP Sync Message
224
225********************************/
226
227/* op_code */
228#define AVDT_SYNC_TO_LITE_REQ 0
229#define AVDT_SYNC_TO_LITE_RESP 1
230#define AVDT_RESYNC_TO_LITE_REQ 2
231#define AVDT_RESYNC_TO_LITE_RESP 3
232#define AVDT_SYNC_TO_FULL_REQ 4
233#define AVDT_SYNC_TO_FULL_RESP 5
234#define AVDT_REMOVE_TO_LITE_REQ 6
235#define AVDT_REMOVE_TO_LITE_RESP 7
236#define AVDT_SYNC_TO_BTC_LITE_REQ 8
237#define AVDT_SYNC_TO_BTC_LITE_RESP 9
238
239/* status */
240#define AVDT_SYNC_SUCCESS 0
241#define AVDT_SYNC_FAILURE 1
242
243typedef struct
244{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700245 uint16_t lcid;
246 uint32_t ssrc;
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500247} tAVDT_SYNC_TO_BTC_LITE_REQ_STREAM;
248
249typedef struct
250{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700251 uint8_t opcode; /* AVDT_SYNC_TO_BTC_LITE_REQ */
252 uint8_t num_stream;
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500253 tAVDT_SYNC_TO_BTC_LITE_REQ_STREAM stream;
254} tAVDT_SYNC_TO_BTC_LITE_REQ;
255
256typedef struct
257{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700258 uint8_t opcode; /* AVDT_SYNC_TO_BTC_LITE_RESP */
259 uint8_t status;
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500260} tAVDT_SYNC_TO_BTC_LITE_RESP;
261
262typedef struct t_avdt_scb_sync_info
263{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700264 uint8_t handle; /* SCB handle */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500265 BD_ADDR peer_addr; /* BD address of peer */
Marie Janssenc40c21f2016-08-05 16:13:13 -0700266 uint16_t local_cid; /* Local CID */
267 uint16_t peer_mtu; /* L2CAP mtu of the peer device */
268 uint8_t mux_tsid_media; /* TSID for media transport session */
269 uint16_t media_seq; /* media packet sequence number */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500270} tAVDT_SCB_SYNC_INFO;
271
272typedef struct t_avdt_sync_info
273{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700274 uint8_t op_code;
275 uint8_t status;
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500276
277 tAVDT_SCB_SYNC_INFO scb_info;
278
279} tAVDT_SYNC_INFO;
280
281typedef union t_avdt_sync_msg
282{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700283 uint8_t op_code;
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500284 tAVDT_SYNC_INFO sync_info;
285 tAVDT_SYNC_TO_BTC_LITE_REQ btc_sync_req;
286 tAVDT_SYNC_TO_BTC_LITE_RESP btc_sync_resp;
287} tAVDT_SYNC_MSG;
288
289/********************************
290
291 BTA AV Sync Message
292
293********************************/
294
295/* op_code for MM light stack */
296#define BTA_AV_SYNC_TO_LITE_REQ 0
297#define BTA_AV_SYNC_TO_LITE_RESP 1
298#define BTA_AV_STR_START_TO_LITE_REQ 2
299#define BTA_AV_STR_START_TO_LITE_RESP 3
300#define BTA_AV_STR_STOP_TO_LITE_REQ 4
301#define BTA_AV_STR_STOP_TO_LITE_RESP 5
302#define BTA_AV_STR_CLEANUP_TO_LITE_REQ 6
303#define BTA_AV_STR_CLEANUP_TO_LITE_RESP 7
304#define BTA_AV_STR_SUSPEND_TO_LITE_REQ 8
305#define BTA_AV_STR_SUSPEND_TO_LITE_RESP 9
306#define BTA_AV_SYNC_ERROR_RESP 10
307
308/* op_code for BTC light stack */
309#define A2DP_START_REQ 11
310#define A2DP_START_RESP 12
311#define A2DP_STOP_REQ 13
312#define A2DP_STOP_RESP 14
313#define A2DP_CLEANUP_REQ 15
314#define A2DP_CLEANUP_RESP 16
315#define A2DP_SUSPEND_REQ 17
316#define A2DP_SUSPEND_RESP 18
317
318#define A2DP_JITTER_DONE_IND 41 /* For BTSNK */
319
320#define AUDIO_CODEC_CONFIG_REQ 19
321#define AUDIO_CODEC_CONFIG_RESP 20
322#define AUDIO_CODEC_SET_BITRATE_REQ 21
323#define AUDIO_CODEC_FLUSH_REQ 22
324#define AUDIO_ROUTE_CONFIG_REQ 23
325#define AUDIO_ROUTE_CONFIG_RESP 24
326#define AUDIO_MIX_CONFIG_REQ 25
327#define AUDIO_MIX_CONFIG_RESP 26
328#define AUDIO_BURST_FRAMES_IND 27
329#define AUDIO_BURST_END_IND 28
330#define AUDIO_EQ_MODE_CONFIG_REQ 29
331#define AUDIO_SCALE_CONFIG_REQ 30
332
333/* For TIVO, only applicable for I2S -> DAC */
334#define AUDIO_SUB_ROUTE_REQ 51
335#define AUDIO_SUB_ROUTE_RESP 52
336
337typedef struct
338{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700339 uint8_t opcode; /* A2DP_START_REQ */
340 uint16_t lcid;
341 uint16_t curr_mtu;
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500342}tA2DP_START_REQ;
343
344typedef struct
345{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700346 uint8_t opcode; /* A2DP_STOP_REQ */
347 uint16_t lcid;
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500348}tA2DP_STOP_REQ;
349
350typedef struct
351{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700352 uint8_t opcode; /* A2DP_SUSPEND_REQ */
353 uint16_t lcid;
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500354}tA2DP_SUSPEND_REQ;
355
356typedef struct
357{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700358 uint8_t opcode; /* A2DP_CLEANUP_REQ */
359 uint16_t lcid;
360 uint16_t curr_mtu;
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500361} tA2DP_CLEANUP_REQ;
362
363typedef struct
364{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700365 uint8_t opcode; /* A2DP_START_RESP, A2DP_STOP_RESP, A2DP_CLEANUP_RESP, A2DP_SUSPEND_RESP */
366 uint16_t lcid;
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500367}tA2DP_GENERIC_RESP;
368
369#define AUDIO_CODEC_NONE 0x0000
370#define AUDIO_CODEC_SBC_ENC 0x0001
371#define AUDIO_CODEC_SBC_DEC 0x0002
372#define AUDIO_CODEC_MP3_ENC 0x0004
373#define AUDIO_CODEC_MP3_DEC 0x0008
374#define AUDIO_CODEC_AAC_ENC 0x0010
375#define AUDIO_CODEC_AAC_DEC 0x0020
376#define AUDIO_CODEC_AAC_PLUS_ENC 0x0040
377#define AUDIO_CODEC_AAC_PLUS_DEC 0x0080
378#define AUDIO_CODEC_MP2_ENC 0x0100
379#define AUDIO_CODEC_MP2_DEC 0x0200
380#define AUDIO_CODEC_MP2_5_ENC 0x0400
381#define AUDIO_CODEC_MP2_5_DEC 0x0800
382
Marie Janssenc40c21f2016-08-05 16:13:13 -0700383typedef uint16_t tAUDIO_CODEC_TYPE;
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500384
385/* SBC CODEC Parameters */
386
387#define CODEC_INFO_SBC_SF_16K 0x00
388#define CODEC_INFO_SBC_SF_32K 0x01
389#define CODEC_INFO_SBC_SF_44K 0x02
390#define CODEC_INFO_SBC_SF_48K 0x03
391
392#define CODEC_INFO_SBC_BLOCK_4 0x00
393#define CODEC_INFO_SBC_BLOCK_8 0x01
394#define CODEC_INFO_SBC_BLOCK_12 0x02
395#define CODEC_INFO_SBC_BLOCK_16 0x03
396
397#define CODEC_INFO_SBC_CH_MONO 0x00
398#define CODEC_INFO_SBC_CH_DUAL 0x01
399#define CODEC_INFO_SBC_CH_STEREO 0x02
400#define CODEC_INFO_SBC_CH_JS 0x03
401
402#define CODEC_INFO_SBC_ALLOC_LOUDNESS 0x00
403#define CODEC_INFO_SBC_ALLOC_SNR 0x01
404
405#define CODEC_INFO_SBC_SUBBAND_4 0x00
406#define CODEC_INFO_SBC_SUBBAND_8 0x01
407
408/* MPEG audio version ID */
409#define CODEC_INFO_MP25_ID 0x00
410#define CODEC_INFO_RESERVE 0x01
411#define CODEC_INFO_MP2_ID 0x02
412#define CODEC_INFO_MP3_ID 0x03
413
414#define CODEC_INFO_MP3_PROTECTION_ON 0x00
415#define CODEC_INFO_MP3_PROTECTION_OFF 0x01
416
417#define CODEC_INFO_MP3_BR_IDX_FREE 0x00
418#define CODEC_INFO_MP3_BR_IDX_32K 0x01
419#define CODEC_INFO_MP3_BR_IDX_40K 0x02
420#define CODEC_INFO_MP3_BR_IDX_48K 0x03
421#define CODEC_INFO_MP3_BR_IDX_56K 0x04
422#define CODEC_INFO_MP3_BR_IDX_64K 0x05
423#define CODEC_INFO_MP3_BR_IDX_80K 0x06
424#define CODEC_INFO_MP3_BR_IDX_96K 0x07
425#define CODEC_INFO_MP3_BR_IDX_112K 0x08
426#define CODEC_INFO_MP3_BR_IDX_128K 0x09
427#define CODEC_INFO_MP3_BR_IDX_160K 0x0A
428#define CODEC_INFO_MP3_BR_IDX_192K 0x0B
429#define CODEC_INFO_MP3_BR_IDX_224K 0x0C
430#define CODEC_INFO_MP3_BR_IDX_256K 0x0D
431#define CODEC_INFO_MP3_BR_IDX_320K 0x0E
432
433#define CODEC_INFO_MP3_SF_44K 0x00
434#define CODEC_INFO_MP3_SF_48K 0x01
435#define CODEC_INFO_MP3_SF_32K 0x02
436
437#define CODEC_INFO_MP3_MODE_STEREO 0x00
438#define CODEC_INFO_MP3_MODE_JS 0x01
439#define CODEC_INFO_MP3_MODE_DUAL 0x02
440#define CODEC_INFO_MP3_MODE_SINGLE 0x03
441
442/* layer 3, type of joint stereo coding method (intensity and ms) */
443#define CODEC_INFO_MP3_MODE_EXT_OFF_OFF 0x00
444#define CODEC_INFO_MP3_MODE_EXT_ON_OFF 0x01
445#define CODEC_INFO_MP3_MODE_EXT_OFF_ON 0x02
446#define CODEC_INFO_MP3_MODE_EXT_ON_ON 0x03
447
448
449#define CODEC_INFO_MP2_PROTECTION_ON 0x00
450#define CODEC_INFO_MP2_PROTECTION_OFF 0x01
451
452#define CODEC_INFO_MP2_BR_IDX_FREE 0x00
453#define CODEC_INFO_MP2_BR_IDX_8K 0x01
454#define CODEC_INFO_MP2_BR_IDX_16K 0x02
455#define CODEC_INFO_MP2_BR_IDX_24K 0x03
456#define CODEC_INFO_MP2_BR_IDX_32K 0x04
457#define CODEC_INFO_MP2_BR_IDX_40K 0x05
458#define CODEC_INFO_MP2_BR_IDX_48K 0x06
459#define CODEC_INFO_MP2_BR_IDX_56K 0x07
460#define CODEC_INFO_MP2_BR_IDX_64K 0x08
461#define CODEC_INFO_MP2_BR_IDX_80K 0x09
462#define CODEC_INFO_MP2_BR_IDX_96K 0x0A
463#define CODEC_INFO_MP2_BR_IDX_112K 0x0B
464#define CODEC_INFO_MP2_BR_IDX_128K 0x0C
465#define CODEC_INFO_MP2_BR_IDX_144K 0x0D
466#define CODEC_INFO_MP2_BR_IDX_160K 0x0E
467
468#define CODEC_INFO_MP2_SF_22K 0x00
469#define CODEC_INFO_MP2_SF_24K 0x01
470#define CODEC_INFO_MP2_SF_16K 0x02
471
472#define CODEC_INFO_MP2_MODE_STEREO 0x00
473#define CODEC_INFO_MP2_MODE_JS 0x01
474#define CODEC_INFO_MP2_MODE_DUAL 0x02
475#define CODEC_INFO_MP2_MODE_SINGLE 0x03
476
477/* layer 3, type of joint stereo coding method (intensity and ms) */
478#define CODEC_INFO_MP2_MODE_EXT_OFF_OFF 0x00
479#define CODEC_INFO_MP2_MODE_EXT_ON_OFF 0x01
480#define CODEC_INFO_MP2_MODE_EXT_OFF_ON 0x02
481#define CODEC_INFO_MP2_MODE_EXT_ON_ON 0x03
482
483#define CODEC_INFO_MP2_SAMPLE_PER_FRAME 576
484
485/* mpeg 2.5 layer 3 decoder */
486
487#define CODEC_INFO_MP25_PROTECTION_ON 0x00
488#define CODEC_INFO_MP25_PROTECTION_OFF 0x01
489
490#define CODEC_INFO_MP25_BR_IDX_FREE 0x00
491#define CODEC_INFO_MP25_BR_IDX_8K 0x01
492#define CODEC_INFO_MP25_BR_IDX_16K 0x02
493#define CODEC_INFO_MP25_BR_IDX_24K 0x03
494#define CODEC_INFO_MP25_BR_IDX_32K 0x04
495#define CODEC_INFO_MP25_BR_IDX_40K 0x05
496#define CODEC_INFO_MP25_BR_IDX_48K 0x06
497#define CODEC_INFO_MP25_BR_IDX_56K 0x07
498#define CODEC_INFO_MP25_BR_IDX_64K 0x08
499#define CODEC_INFO_MP25_BR_IDX_80K 0x09
500#define CODEC_INFO_MP25_BR_IDX_96K 0x0A
501#define CODEC_INFO_MP25_BR_IDX_112K 0x0B
502#define CODEC_INFO_MP25_BR_IDX_128K 0x0C
503#define CODEC_INFO_MP25_BR_IDX_144K 0x0D
504#define CODEC_INFO_MP25_BR_IDX_160K 0x0E
505
506#define CODEC_INFO_MP25_SF_11K 0x00
507#define CODEC_INFO_MP25_SF_12K 0x01
508#define CODEC_INFO_MP25_SF_8K 0x02
509
510#define CODEC_INFO_MP25_MODE_STEREO 0x00
511#define CODEC_INFO_MP25_MODE_JS 0x01
512#define CODEC_INFO_MP25_MODE_DUAL 0x02
513#define CODEC_INFO_MP25_MODE_SINGLE 0x03
514
515/* layer 3, type of joint stereo coding method (intensity and ms) */
516#define CODEC_INFO_MP25_MODE_EXT_OFF_OFF 0x00
517#define CODEC_INFO_MP25_MODE_EXT_ON_OFF 0x01
518#define CODEC_INFO_MP25_MODE_EXT_OFF_ON 0x02
519#define CODEC_INFO_MP25_MODE_EXT_ON_ON 0x03
520
521#define CODEC_INFO_MP25_SAMPLE_PER_FRAME 576
522
523/* AAC/AAC+ CODEC Parameters */
524#define CODEC_INFO_AAC_SF_IDX_96K 0x0
525#define CODEC_INFO_AAC_SF_IDX_88K 0x1
526#define CODEC_INFO_AAC_SF_IDX_64K 0x2
527#define CODEC_INFO_AAC_SF_IDX_48K 0x3
528#define CODEC_INFO_AAC_SF_IDX_44K 0x4
529#define CODEC_INFO_AAC_SF_IDX_32K 0x5
530#define CODEC_INFO_AAC_SF_IDX_24K 0x6
531#define CODEC_INFO_AAC_SF_IDX_22K 0x7
532#define CODEC_INFO_AAC_SF_IDX_16K 0x8
533#define CODEC_INFO_AAC_SF_IDX_12K 0x9
534#define CODEC_INFO_AAC_SF_IDX_11K 0xA
535#define CODEC_INFO_AAC_SF_IDX_08K 0xB
536#define CODEC_INFO_AAC_SF_IDX_RESERVE 0xC
537
538#define CODEC_INFO_AAC_BR_RATE_48K 288000
539#define CODEC_INFO_AAC_BR_RATE_44K 264600
540#define CODEC_INFO_AAC_BR_RATE_32K 192000
541
542
543#define CODEC_INFO_AAC_1_CH 1 /*center front speaker */
544#define CODEC_INFO_AAC_2_CH 2 /*left, right front speaker */
545#define CODEC_INFO_AAC_3_CH 3 /*center front speaker, left right front speaker */
546#define CODEC_INFO_AAC_4_CH 4 /*center/rear front speaker, left/right front speaker */
547#define CODEC_INFO_AAC_5_CH 5 /*center, left, right front speaker, left/right surround */
548#define CODEC_INFO_AAC_6_CH 6 /*center, left, right front speaker, left/right surround, LFE */
549#define CODEC_INFO_AAC_7_CH 7 /*(left, right)center/left,right front speaker, left/right surround, LFE */
550
551
552typedef struct
553{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700554 uint8_t sampling_freq;
555 uint8_t channel_mode;
556 uint8_t block_length;
557 uint8_t num_subbands;
558 uint8_t alloc_method;
559 uint8_t bitpool_size; /* 2 - 250 */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500560} tCODEC_INFO_SBC;
561
562typedef struct
563{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700564 uint8_t ch_mode;
565 uint8_t sampling_freq;
566 uint8_t bitrate_index; /* 0 - 14 */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500567} tCODEC_INFO_MP3;
568
569typedef struct
570{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700571 uint8_t ch_mode;
572 uint8_t sampling_freq;
573 uint8_t bitrate_index; /* 0 - 14 */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500574} tCODEC_INFO_MP2;
575
576
577typedef struct
578{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700579 uint8_t ch_mode;
580 uint8_t sampling_freq;
581 uint8_t bitrate_index; /* 0 - 14 */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500582} tCODEC_INFO_MP2_5;
583
584typedef struct
585{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700586 uint16_t sampling_freq;
587 uint8_t channel_mode; /* 0x02:mono, 0x01:dual */
588 uint32_t bitrate; /* 0 - 320K */
589 uint32_t sbr_profile; /* 1: ON, 0: OFF */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500590} tCODEC_INFO_AAC;
591
592typedef union
593{
594 tCODEC_INFO_SBC sbc;
595 tCODEC_INFO_MP3 mp3;
596 tCODEC_INFO_MP2 mp2;
597 tCODEC_INFO_MP2_5 mp2_5;
598 tCODEC_INFO_AAC aac;
599} tCODEC_INFO;
600
601typedef struct
602{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700603 uint8_t opcode; /* AUDIO_CODEC_CONFIG_REQ */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500604 tAUDIO_CODEC_TYPE codec_type;
605 tCODEC_INFO codec_info;
606} tAUDIO_CODEC_CONFIG_REQ;
607
608#define AUDIO_CONFIG_SUCCESS 0x00
609#define AUDIO_CONFIG_NOT_SUPPORTED 0x01
610#define AUDIO_CONFIG_FAIL_OUT_OF_MEMORY 0x02
611#define AUDIO_CONFIG_FAIL_CODEC_USED 0x03
612#define AUDIO_CONFIG_FAIL_ROUTE 0x04
Marie Janssenc40c21f2016-08-05 16:13:13 -0700613typedef uint8_t tAUDIO_CONFIG_STATUS;
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500614
615typedef struct
616{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700617 uint8_t opcode; /* AUDIO_CODEC_CONFIG_RESP */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500618 tAUDIO_CONFIG_STATUS status;
619} tAUDIO_CODEC_CONFIG_RESP;
620
621typedef struct
622{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700623 uint8_t opcode; /* AUDIO_CODEC_SET_BITRATE_REQ */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500624 tAUDIO_CODEC_TYPE codec_type;
625 union
626 {
Marie Janssenc40c21f2016-08-05 16:13:13 -0700627 uint8_t sbc;
628 uint8_t mp3;
629 uint32_t aac;
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500630 } codec_bitrate;
631} tAUDIO_CODEC_SET_BITRATE_REQ;
632
633#define AUDIO_ROUTE_SRC_FMRX 0x00
634#define AUDIO_ROUTE_SRC_I2S 0x01
635#define AUDIO_ROUTE_SRC_ADC 0x02
636#define AUDIO_ROUTE_SRC_HOST 0x03
637#define AUDIO_ROUTE_SRC_PTU 0x04
638#define AUDIO_ROUTE_SRC_BTSNK 0x05
639#define AUDIO_ROUTE_SRC_NONE 0x80
640#define MAX_AUDIO_ROUTE_SRC 6
Marie Janssenc40c21f2016-08-05 16:13:13 -0700641typedef uint8_t tAUDIO_ROUTE_SRC;
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500642
643#define AUDIO_ROUTE_MIX_NONE 0x00
644#define AUDIO_ROUTE_MIX_HOST 0x01
645#define AUDIO_ROUTE_MIX_PCM 0x02
646#define AUDIO_ROUTE_MIX_CHIRP 0x03
647#define AUDIO_ROUTE_MIX_I2S 0x04
648#define AUDIO_ROUTE_MIX_ADC 0x05
649#define AUDIO_ROUTE_MIX_RESERVED 0x06
650#define MAX_AUDIO_ROUTE_MIX 7
Marie Janssenc40c21f2016-08-05 16:13:13 -0700651typedef uint8_t tAUDIO_ROUTE_MIX;
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500652
653#define AUDIO_ROUTE_OUT_NONE 0x0000
654#define AUDIO_ROUTE_OUT_BTA2DP 0x0001
655#define AUDIO_ROUTE_OUT_FMTX 0x0002
656#define AUDIO_ROUTE_OUT_BTSCO 0x0004
657#define AUDIO_ROUTE_OUT_HOST 0x0008
658#define AUDIO_ROUTE_OUT_DAC 0x0010
659#define AUDIO_ROUTE_OUT_I2S 0x0020
660#define AUDIO_ROUTE_OUT_BTA2DP_DAC 0x0040
661#define AUDIO_ROUTE_OUT_BTA2DP_I2S 0x0080
662#define AUDIO_ROUTE_OUT_BTSCO_DAC 0x0100
663#define AUDIO_ROUTE_OUT_BTSCO_I2S 0x0200
664#define AUDIO_ROUTE_OUT_HOST_BTA2DP 0x0400
665#define AUDIO_ROUTE_OUT_HOST_BTSCO 0x0800
666#define AUDIO_ROUTE_OUT_HOST_DAC 0x1000
667#define AUDIO_ROUTE_OUT_HOST_I2S 0x2000
668#define AUDIO_ROUTE_OUT_DAC_I2S 0x4000
669#define AUDIO_ROUTE_OUT_RESERVED_2 0x8000
670
671#define MAX_AUDIO_SINGLE_ROUTE_OUT 6
672#define MAX_AUDIO_MULTI_ROUTE_OUT 16
Marie Janssenc40c21f2016-08-05 16:13:13 -0700673typedef uint16_t tAUDIO_MULTI_ROUTE_OUT;
674typedef uint8_t tAUDIO_ROUTE_OUT;
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500675
676#define AUDIO_ROUTE_SF_8K 0x00
677#define AUDIO_ROUTE_SF_16K 0x01
678#define AUDIO_ROUTE_SF_32K 0x02
679#define AUDIO_ROUTE_SF_44_1K 0x03
680#define AUDIO_ROUTE_SF_48K 0x04
681#define AUDIO_ROUTE_SF_11K 0x05
682#define AUDIO_ROUTE_SF_12K 0x06
683#define AUDIO_ROUTE_SF_22K 0x07
684#define AUDIO_ROUTE_SF_24K 0x08
685#define AUDIO_ROUTE_SF_NA 0xFF
Marie Janssenc40c21f2016-08-05 16:13:13 -0700686typedef uint8_t tAUDIO_ROUTE_SF;
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500687
688#define AUDIO_ROUTE_EQ_BASS_BOOST 0x00
689#define AUDIO_ROUTE_EQ_CLASSIC 0x01
690#define AUDIO_ROUTE_EQ_JAZZ 0x02
691#define AUDIO_ROUTE_EQ_LIVE 0x03
692#define AUDIO_ROUTE_EQ_NORMAL 0x04
693#define AUDIO_ROUTE_EQ_ROCK 0x05
694#define AUDIO_ROUTE_EQ_BYPASS 0x06
695
696#define AUDIO_ROUTE_DIGITAL_VOLUME_CONTROL 0x07
697
698#define AUDIO_ROUTE_EQ_CONFIG_GAIN 0xFF /* Custion Gain Config */
Marie Janssenc40c21f2016-08-05 16:13:13 -0700699typedef uint8_t tAUDIO_ROUTE_EQ;
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500700
701typedef struct
702{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700703 uint8_t opcode; /* AUDIO_ROUTE_CONFIG_REQ */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500704 tAUDIO_ROUTE_SRC src;
705 tAUDIO_ROUTE_SF src_sf;
706 tAUDIO_ROUTE_OUT out;
707 tAUDIO_ROUTE_SF out_codec_sf;
708 tAUDIO_ROUTE_SF out_i2s_sf;
709 tAUDIO_ROUTE_EQ eq_mode;
710} tAUDIO_ROUTE_CONFIG_REQ;
711
712typedef struct
713{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700714 uint8_t opcode; /* AUDIO_ROUTE_CONFIG_RESP */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500715 tAUDIO_CONFIG_STATUS status;
716} tAUDIO_ROUTE_CONFIG_RESP;
717
718typedef struct
719{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700720 uint16_t amp[2]; /* left/right 15 bit amplitude value */
721 uint16_t tone[2]; /* left/right 12 bit frequency 0 - 4096Hz */
722 uint16_t mark[2]; /* left/right 16 bit mark time 0 - 65535ms */
723 uint16_t space[2]; /* left/right 16 bit space time 0 - 65535ms */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500724} tCHIRP_CONFIG;
725
726typedef struct
727{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700728 uint8_t pri_l; /* Primary Left scale : 0 ~ 255 */
729 uint8_t mix_l; /* Mixing Left scale : 0 ~ 255 */
730 uint8_t pri_r; /* Primary Right scale : 0 ~ 255 */
731 uint8_t mix_r; /* Mixing Right scale : 0 ~ 255 */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500732} tMIX_SCALE_CONFIG;
733
734/* For custon equalizer gain configuration */
735typedef struct
736{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700737 uint32_t audio_l_g0; /* IIR biquad filter left ch gain 0 */
738 uint32_t audio_l_g1; /* IIR biquad filter left ch gain 1 */
739 uint32_t audio_l_g2; /* IIR biquad filter left ch gain 2 */
740 uint32_t audio_l_g3; /* IIR biquad filter left ch gain 3 */
741 uint32_t audio_l_g4; /* IIR biquad filter left ch gain 4 */
742 uint32_t audio_l_gl; /* IIR biquad filter left ch global gain */
743 uint32_t audio_r_g0; /* IIR biquad filter left ch gain 0 */
744 uint32_t audio_r_g1; /* IIR biquad filter left ch gain 1 */
745 uint32_t audio_r_g2; /* IIR biquad filter left ch gain 2 */
746 uint32_t audio_r_g3; /* IIR biquad filter left ch gain 3 */
747 uint32_t audio_r_g4; /* IIR biquad filter left ch gain 4 */
748 uint32_t audio_r_gl; /* IIR biquad filter left ch global gain */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500749} tEQ_GAIN_CONFIG;
750
751typedef struct
752{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700753 uint8_t opcode; /* AUDIO_MIX_CONFIG_REQ */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500754 tAUDIO_ROUTE_MIX mix_src;
755 tAUDIO_ROUTE_SF mix_src_sf;
756 tMIX_SCALE_CONFIG mix_scale;
757 tCHIRP_CONFIG chirp_config;
758} tAUDIO_MIX_CONFIG_REQ;
759
760typedef struct
761{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700762 uint8_t opcode; /* AUDIO_MIX_CONFIG_RESP */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500763 tAUDIO_CONFIG_STATUS status;
764} tAUDIO_MIX_CONFIG_RESP;
765
766
767typedef struct
768{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700769 uint8_t opcode; /* AUDIO_BURST_FRAMES_IND */
770 uint32_t burst_size; /* in bytes */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500771} tAUDIO_BURST_FRAMES_IND;
772
773typedef struct
774{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700775 uint8_t opcode; /* AUDIO_BURST_END_IND */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500776} tAUDIO_BURST_END_IND;
777
778typedef struct
779{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700780 uint8_t opcode; /* AUDIO_CODEC_FLUSH_REQ */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500781} tAUDIO_CODEC_FLUSH_REQ;
782
783typedef struct
784{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700785 uint8_t opcode; /* AUDIO_EQ_MODE_CONFIG_REQ */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500786 tAUDIO_ROUTE_EQ eq_mode;
787 tEQ_GAIN_CONFIG filter_gain; /* Valid only when eq_mode is 0xFF */
788} tAUDIO_EQ_MODE_CONFIG_REQ;
789
790typedef struct
791{
Marie Janssenc40c21f2016-08-05 16:13:13 -0700792 uint8_t opcode; /* AUDIO_SCALE_CONFIG_REQ */
Sridhar Vashistd51ab122015-05-19 03:32:21 -0500793 tMIX_SCALE_CONFIG mix_scale;
794} tAUDIO_SCALE_CONFIG_REQ;
795
796#pragma pack(pop) /* pop saved alignment to stack */
797
798#endif /* UIPC_MSG_H */