1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
|
/******************************************************************************
*
* Copyright (C) 2003-2012 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.
*
******************************************************************************/
/******************************************************************************
*
* This is the public interface file for the audio gateway (AG) subsystem
* of BTA, Broadcom's Bluetooth application layer for mobile phones.
*
******************************************************************************/
#ifndef BTA_AG_API_H
#define BTA_AG_API_H
#include "bta_api.h"
/*****************************************************************************
* Constants and data types
****************************************************************************/
/* Number of SCBs (AG service instances that can be registered) */
#define BTA_AG_MAX_NUM_CLIENTS 6
#define HFP_VERSION_1_1 0x0101
#define HFP_VERSION_1_5 0x0105
#define HFP_VERSION_1_6 0x0106
#define HFP_VERSION_1_7 0x0107
#define HFP_VERSION_1_8 0x0108
#define HSP_VERSION_1_0 0x0100
#define HSP_VERSION_1_2 0x0102
/* Note, if you change the default version here, please also change the one in
* bta_hs_api.h, they are meant to be the same.
*/
#ifndef BTA_HFP_VERSION
#define BTA_HFP_VERSION HFP_VERSION_1_8
#endif
/* AG feature masks */
#define BTA_AG_FEAT_3WAY 0x00000001 /* Three-way calling */
#define BTA_AG_FEAT_ECNR 0x00000002 /* Echo cancellation/noise reduction */
#define BTA_AG_FEAT_VREC 0x00000004 /* Voice recognition */
#define BTA_AG_FEAT_INBAND 0x00000008 /* In-band ring tone */
#define BTA_AG_FEAT_VTAG 0x00000010 /* Attach a phone number to a voice tag */
#define BTA_AG_FEAT_REJECT 0x00000020 /* Ability to reject incoming call */
#define BTA_AG_FEAT_ECS 0x00000040 /* Enhanced Call Status */
#define BTA_AG_FEAT_ECC 0x00000080 /* Enhanced Call Control */
#define BTA_AG_FEAT_EXTERR 0x00000100 /* Extended error codes */
#define BTA_AG_FEAT_CODEC 0x00000200 /* Codec Negotiation */
/* Valid feature bit mask for HFP 1.6 (and below) */
#define HFP_1_6_FEAT_MASK 0x000003FF
/* HFP 1.7+ */
#define BTA_AG_FEAT_HF_IND 0x00000400 /* HF Indicators */
#define BTA_AG_FEAT_ESCO 0x00000800 /* eSCO S4 (and T2) setting supported */
/* HFP 1.8+ */
#define BTA_AG_FEAT_ENHC_VREC 0x00001000 /* Voice enhanced recognition status*/
#define BTA_AG_FEAT_VREC_TEXT 0x00002000 /* Voice recognition text*/
/* HFP 1.8+ for SDP supported features*/
#define BTA_AG_SDP_FEAT_ENHC_VREC 0x00000040 /* Voice enhanced recognition status*/
#define BTA_AG_SDP_FEAT_VREC_TEXT 0x00000080 /* Voice recognition text*/
/* Proprietary features: using 31 ~ 16 bits */
#define BTA_AG_FEAT_BTRH 0x00010000 /* CCAP incoming call hold */
#define BTA_AG_FEAT_UNAT 0x00020000 /* Pass unknown AT commands to app */
#define BTA_AG_FEAT_NOSCO 0x00040000 /* No SCO control performed by BTA AG */
#define BTA_AG_FEAT_NO_ESCO 0x00080000 /* Do not allow or use eSCO */
#define BTA_AG_FEAT_VOIP 0x00100000 /* VoIP call */
typedef uint32_t tBTA_AG_FEAT;
/* AG parse mode */
#define BTA_AG_PARSE 0 /* Perform AT command parsing in AG */
/* Pass data directly to phone's AT command interpreter */
#define BTA_AG_PASS_THROUGH 1
typedef uint8_t tBTA_AG_PARSE_MODE;
/* AG open status */
#define BTA_AG_SUCCESS 0 /* Connection successfully opened */
#define BTA_AG_FAIL_SDP 1 /* Open failed due to SDP */
#define BTA_AG_FAIL_RFCOMM 2 /* Open failed due to RFCOMM */
#define BTA_AG_FAIL_RESOURCES 3 /* out of resources failure */
/* Status to disallow passing AT Events after BTIF */
#define BTA_AG_DISALLOW_AT 5
typedef uint8_t tBTA_AG_STATUS;
/* handle values used with BTA_AgResult */
#define BTA_AG_HANDLE_NONE 0
#define BTA_AG_HANDLE_ALL 0xFFFF
/* It is safe to use the same value as BTA_AG_HANDLE_ALL
* HANDLE_ALL is used for delivering indication
* SCO_NO_CHANGE is used for changing sco behavior
* They donot interfere with each other
*/
/* Number of supported HF indicators, there is one HF indicator so far i.e.
enhanced driver status. */
/* Number of supported HF indicators,
1 for Enhanced Safety Status
2 for Battery Level Status */
#ifndef BTA_AG_NUM_LOCAL_HF_IND
#define BTA_AG_NUM_LOCAL_HF_IND 2
#endif
#define BTA_AG_HANDLE_SCO_NO_CHANGE 0xFFFF
/* AG result codes used with BTA_AgResult */
#define BTA_AG_SPK_RES 0 /* Update speaker volume */
#define BTA_AG_MIC_RES 1 /* Update microphone volume */
#define BTA_AG_INBAND_RING_RES 2 /* Update inband ring state */
#define BTA_AG_CIND_RES 3 /* Send indicator response for AT+CIND */
#define BTA_AG_BINP_RES 4 /* Send phone number for voice tag for AT+BINP */
#define BTA_AG_IND_RES 5 /* Update an indicator value */
#define BTA_AG_BVRA_RES 6 /* Update voice recognition state */
#define BTA_AG_CNUM_RES 7 /* Send subscriber number response for AT+CNUM */
#define BTA_AG_BTRH_RES 8 /* Send CCAP incoming call hold */
#define BTA_AG_CLCC_RES 9 /* Query list of calls */
#define BTA_AG_COPS_RES 10 /* Read network operator */
#define BTA_AG_IN_CALL_RES 11 /* Indicate incoming phone call */
#define BTA_AG_IN_CALL_CONN_RES 12 /* Incoming phone call connected */
#define BTA_AG_CALL_WAIT_RES 13 /* Call waiting notification */
#define BTA_AG_OUT_CALL_ORIG_RES 14 /* Outgoing phone call origination */
/* Outgoing phone call alerting remote party */
#define BTA_AG_OUT_CALL_ALERT_RES 15
#define BTA_AG_OUT_CALL_CONN_RES 16 /* Outgoing phone call connected */
/* Incoming/outgoing 3-way canceled before connected */
#define BTA_AG_CALL_CANCEL_RES 17
#define BTA_AG_END_CALL_RES 18 /* End call */
#define BTA_AG_IN_CALL_HELD_RES 19 /* Incoming call held */
#define BTA_AG_UNAT_RES 20 /* Response to unknown AT command event */
#define BTA_AG_MULTI_CALL_RES 21 /* SLC at three way call */
#define BTA_AG_BIND_RES 22 /* Activate/Deactivate HF indicator */
/* Enhanced voice recogniton activation */
#define BTA_AG_ENHC_BVRA_RES 23 /* Update enhanced voice recognition state */
#define BTA_AG_IND_RES_ON_DEMAND 33 /* Update an indicator value forcible */
typedef uint8_t tBTA_AG_RES;
/* HFP peer features */
#define BTA_AG_PEER_FEAT_ECNR 0x0001 /* Echo cancellation/noise reduction */
#define BTA_AG_PEER_FEAT_3WAY 0x0002 /* Call waiting and three-way calling */
#define BTA_AG_PEER_FEAT_CLI 0x0004 /* Caller ID presentation capability */
#define BTA_AG_PEER_FEAT_VREC 0x0008 /* Voice recognition activation */
#define BTA_AG_PEER_FEAT_VOL 0x0010 /* Remote volume control */
#define BTA_AG_PEER_FEAT_ECS 0x0020 /* Enhanced Call Status */
#define BTA_AG_PEER_FEAT_ECC 0x0040 /* Enhanced Call Control */
#define BTA_AG_PEER_FEAT_CODEC 0x0080 /* Codec Negotiation */
#define BTA_AG_PEER_FEAT_HF_IND 0x0100 /* HF Indicators */
#define BTA_AG_PEER_FEAT_ESCO 0x0200 /* eSCO S4 (and T2) setting supported */
#define BTA_AG_PEER_FEAT_ENHC_VREC 0x0400 /* Voice enhanced recognition */
#define BTA_AG_PEER_FEAT_VREC_TEXT 0x0800 /* Voice recognition text */
/* Proprietary features: using bits after 12 */
/* Pass unknown AT command responses to application */
#define BTA_AG_PEER_FEAT_UNAT 0x1000
#define BTA_AG_PEER_FEAT_VOIP 0x2000 /* VoIP call */
typedef uint16_t tBTA_AG_PEER_FEAT;
/* HFP peer supported codec masks */
// TODO(google) This should use common definitions
#define BTA_AG_CODEC_NONE BTM_SCO_CODEC_NONE
#define BTA_AG_CODEC_CVSD BTM_SCO_CODEC_CVSD /* CVSD */
#define BTA_AG_CODEC_MSBC BTM_SCO_CODEC_MSBC /* mSBC */
typedef uint16_t tBTA_AG_PEER_CODEC;
/* HFP errcode - Set when BTA_AG_OK_ERROR is returned in 'ok_flag' */
#define BTA_AG_ERR_PHONE_FAILURE 0 /* Phone Failure */
#define BTA_AG_ERR_NO_CONN_PHONE 1 /* No connection to phone */
#define BTA_AG_ERR_OP_NOT_ALLOWED 3 /* Operation not allowed */
#define BTA_AG_ERR_OP_NOT_SUPPORTED 4 /* Operation not supported */
#define BTA_AG_ERR_PHSIM_PIN_REQ 5 /* PH-SIM PIN required */
#define BTA_AG_ERR_SIM_NOT_INSERTED 10 /* SIM not inserted */
#define BTA_AG_ERR_SIM_PIN_REQ 11 /* SIM PIN required */
#define BTA_AG_ERR_SIM_PUK_REQ 12 /* SIM PUK required */
#define BTA_AG_ERR_SIM_FAILURE 13 /* SIM failure */
#define BTA_AG_ERR_SIM_BUSY 14 /* SIM busy */
#define BTA_AG_ERR_INCORRECT_PWD 16 /* Incorrect password */
#define BTA_AG_ERR_SIM_PIN2_REQ 17 /* SIM PIN2 required */
#define BTA_AG_ERR_SIM_PUK2_REQ 18 /* SIM PUK2 required */
#define BTA_AG_ERR_MEMORY_FULL 20 /* Memory full */
#define BTA_AG_ERR_INVALID_INDEX 21 /* Invalid index */
#define BTA_AG_ERR_MEMORY_FAILURE 23 /* Memory failure */
#define BTA_AG_ERR_TEXT_TOO_LONG 24 /* Text string too long */
#define BTA_AG_ERR_INV_CHAR_IN_TSTR 25 /* Invalid characters in text string */
#define BTA_AG_ERR_DSTR_TOO_LONG 26 /* Dial string too long */
#define BTA_AG_ERR_INV_CHAR_IN_DSTR 27 /* Invalid characters in dial string */
#define BTA_AG_ERR_NO_NETWORK_SERV 30 /* No network service */
#define BTA_AG_ERR_NETWORK_TIME_OUT 31 /* Network timeout */
/* Network not allowed - emergency service only */
#define BTA_AG_ERR_NO_NET_EMG_ONLY 32
/* AG cannot create simultaneous VoIP and CS calls */
#define BTA_AG_ERR_VOIP_CS_CALLS 33
#define BTA_AG_ERR_NOT_FOR_VOIP 34 /* Not supported on this call type(VoIP) */
#define BTA_AG_ERR_SIP_RESP_CODE 35 /* SIP 3 digit response code */
#if 0 /* Not Used in Bluetooth HFP 1.5 Specification */
#define BTA_AG_ERR_PHADAP_LNK_RES 2 /* Phone-adapter link reserved */
#define BTA_AG_ERR_PHFSIM_PIN_REQ 6 /* PH-FSIM PIN required */
#define BTA_AG_ERR_PHFSIM_PUK_REQ 7 /* PH-FSIM PUK required */
#define BTA_AG_ERR_SIM_WRONG 15 /* SIM wrong */
#define BTA_AG_ERR_NOT_FOUND 22 /* Not found */
#define BTA_AG_ERR_NETWORK_TIMEOUT 31 /* Network timeout */
#define BTA_AG_ERR_NET_PIN_REQ 40 /* Network personalization PIN required */
#define BTA_AG_ERR_NET_PUK_REQ 41 /* Network personalization PUK required */
/* Network subset personalization PIN required */
#define BTA_AG_ERR_SUBSET_PIN_REQ 42
/* Network subset personalization PUK required */
#define BTA_AG_ERR_SUBSET_PUK_REQ 43
/* Service provider personalization PIN required */
#define BTA_AG_ERR_SERVPRO_PIN_REQ 44
/* Service provider personalization PUK required */
#define BTA_AG_ERR_SERVPRO_PUK_REQ 45
/* Corporate personalization PIN required */
#define BTA_AG_ERR_CORP_PIN_REQ 46
/* Corporate personalization PUK required */
#define BTA_AG_ERR_CORP_PUK_REQ 47
#define BTA_AG_ERR_UNKNOWN 100 /* Unknown error */
/* GPRS-related errors */
#define BTA_AG_ERR_ILL_MS 103 /* Illegal MS (#3) */
#define BTA_AG_ERR_ILL_ME 106 /* Illegal ME (#6) */
#define BTA_AG_ERR_GPRS_NOT_ALLOWED 107 /* GPRS services not allowed (#7) */
#define BTA_AG_ERR_PLMN_NOT_ALLOWED 111 /* PLMN services not allowed (#11) */
#define BTA_AG_ERR_LOC_NOT_ALLOWED 112 /* Location area not allowed (#12) */
/* Roaming not allowed in this location area (#13) */
#define BTA_AG_ERR_ROAM_NOT_ALLOWED 113
/* Errors related to a failure to Activate a Context */
#define BTA_AG_ERR_OPT_NOT_SUPP 132 /* Service option not supported (#32) */
/* Requested service option not subscribed (#33) */
#define BTA_AG_ERR_OPT_NOT_SUBSCR 133
/* Service option temporarily out of order (#34) */
#define BTA_AG_ERR_OPT_OUT_OF_ORDER 134
#define BTA_AG_ERR_PDP_AUTH_FAILURE 149 /* PDP authentication failure */
/* Other GPRS errors */
#define BTA_AG_ERR_INV_MOBILE_CLASS 150 /* Invalid mobile class */
#define BTA_AG_ERR_UNSPEC_GPRS_ERR 148 /* Unspecified GPRS error */
#endif /* Unused error codes */
/* HFP result data 'ok_flag' */
#define BTA_AG_OK_CONTINUE 0 /* Send out response (more responses coming) */
#define BTA_AG_OK_DONE 1 /* Send out response followed by OK (finished) */
#define BTA_AG_OK_ERROR 2 /* Error response */
/* BTRH values */
#define BTA_AG_BTRH_SET_HOLD 0 /* Put incoming call on hold */
#define BTA_AG_BTRH_SET_ACC 1 /* Accept incoming call on hold */
#define BTA_AG_BTRH_SET_REJ 2 /* Reject incoming call on hold */
#define BTA_AG_BTRH_READ 3 /* Read the current value */
#define BTA_AG_BTRH_NO_RESP 4 /* Not in RH States (reply to read) */
/* clip type constants */
#define BTA_AG_CLIP_TYPE_MIN 128
#define BTA_AG_CLIP_TYPE_MAX 175
#define BTA_AG_CLIP_TYPE_DEFAULT 129
#define BTA_AG_CLIP_TYPE_VOIP 255
/* ASCII character string of arguments to the AT command or result */
#ifndef BTA_AG_AT_MAX_LEN
#define BTA_AG_AT_MAX_LEN 256
#endif
/* data associated with BTA_AG_IND_RES */
typedef struct {
uint16_t id;
uint16_t value;
bool on_demand;
} tBTA_AG_IND;
/* data type for BTA_AgResult() */
struct tBTA_AG_RES_DATA {
char str[BTA_AG_AT_MAX_LEN + 1];
tBTA_AG_IND ind;
uint16_t num;
uint16_t audio_handle;
uint16_t errcode; /* Valid only if 'ok_flag' is set to BTA_AG_OK_ERROR */
uint8_t
ok_flag; /* Indicates if response is finished, and if error occurred */
bool state;
static const tBTA_AG_RES_DATA kEmpty;
};
/* AG callback events */
#define BTA_AG_ENABLE_EVT 0 /* AG enabled */
#define BTA_AG_REGISTER_EVT 1 /* AG registered */
#define BTA_AG_OPEN_EVT 2 /* AG connection open */
#define BTA_AG_CLOSE_EVT 3 /* AG connection closed */
#define BTA_AG_CONN_EVT 4 /* Service level connection opened */
#define BTA_AG_AUDIO_OPEN_EVT 5 /* Audio connection open */
#define BTA_AG_AUDIO_OPENING_EVT 32 /* Audio connection opening */
#define BTA_AG_AUDIO_CLOSE_EVT 6 /* Audio connection closed */
#define BTA_AG_SPK_EVT 7 /* Speaker volume changed */
#define BTA_AG_MIC_EVT 8 /* Microphone volume changed */
#define BTA_AG_AT_CKPD_EVT 9 /* CKPD from the HS */
#define BTA_AG_DISABLE_EVT 30 /* AG disabled */
#define BTA_AG_WBS_EVT 31 /* SCO codec info */
/* Values below are for HFP only */
#define BTA_AG_AT_A_EVT 10 /* Answer a call */
#define BTA_AG_AT_D_EVT 11 /* Place a call using number or memory dial */
#define BTA_AG_AT_CHLD_EVT 12 /* Call hold */
#define BTA_AG_AT_CHUP_EVT 13 /* Hang up a call */
#define BTA_AG_AT_CIND_EVT 14 /* Read indicator settings */
#define BTA_AG_AT_VTS_EVT 15 /* Transmit DTMF tone */
#define BTA_AG_AT_BINP_EVT 16 /* Retrieve number from voice tag */
#define BTA_AG_AT_BLDN_EVT 17 /* Place call to last dialed number */
#define BTA_AG_AT_BVRA_EVT 18 /* Enable/disable voice recognition */
#define BTA_AG_AT_NREC_EVT 19 /* Disable echo canceling */
#define BTA_AG_AT_CNUM_EVT 20 /* Retrieve subscriber number */
#define BTA_AG_AT_BTRH_EVT 21 /* CCAP-style incoming call hold */
#define BTA_AG_AT_CLCC_EVT 22 /* Query list of current calls */
#define BTA_AG_AT_COPS_EVT 23 /* Query list of current calls */
#define BTA_AG_AT_UNAT_EVT 24 /* Unknown AT command */
#define BTA_AG_AT_CBC_EVT 25 /* Battery Level report from HF */
#define BTA_AG_AT_BAC_EVT 26 /* avablable codec */
#define BTA_AG_AT_BCS_EVT 27 /* Codec select */
#define BTA_AG_AT_BIND_EVT 28 /* HF indicator */
#define BTA_AG_AT_BIEV_EVT 29 /* HF indicator updates from peer */
typedef uint8_t tBTA_AG_EVT;
/* data associated with most non-AT events */
typedef struct {
uint16_t handle;
uint8_t app_id;
tBTA_AG_STATUS status;
} tBTA_AG_HDR;
/* data associated with BTA_AG_REGISTER_EVT */
typedef struct {
tBTA_AG_HDR hdr;
tBTA_AG_STATUS status;
} tBTA_AG_REGISTER;
/* data associated with BTA_AG_OPEN_EVT */
typedef struct {
tBTA_AG_HDR hdr;
RawAddress bd_addr;
tBTA_SERVICE_ID service_id;
tBTA_AG_STATUS status;
} tBTA_AG_OPEN;
/* data associated with BTA_AG_CLOSE_EVT */
typedef struct {
tBTA_AG_HDR hdr;
RawAddress bd_addr;
} tBTA_AG_CLOSE;
/* data associated with BTA_AG_CONN_EVT */
typedef struct {
tBTA_AG_HDR hdr;
tBTA_AG_PEER_FEAT peer_feat;
RawAddress bd_addr;
tBTA_AG_PEER_CODEC peer_codec;
} tBTA_AG_CONN;
/* data associated with AT command event */
typedef struct {
tBTA_AG_HDR hdr;
RawAddress bd_addr;
char str[BTA_AG_AT_MAX_LEN + 1];
uint16_t num;
uint8_t idx; /* call number used by CLCC and CHLD */
uint16_t lidx; /* long index, ex, HF indicator */
} tBTA_AG_VAL;
/* union of data associated with AG callback */
typedef union {
tBTA_AG_HDR hdr;
tBTA_AG_REGISTER reg;
tBTA_AG_OPEN open;
tBTA_AG_CLOSE close;
tBTA_AG_CONN conn;
tBTA_AG_VAL val;
} tBTA_AG;
/* AG callback */
typedef void(tBTA_AG_CBACK)(tBTA_AG_EVT event, tBTA_AG* p_data);
/* indicator constants HFP 1.1 and later */
#define BTA_AG_IND_CALL 1 /* position of call indicator */
#define BTA_AG_IND_CALLSETUP 2 /* position of callsetup indicator */
#define BTA_AG_IND_SERVICE 3 /* position of service indicator */
/* indicator constants HFP 1.5 and later */
#define BTA_AG_IND_SIGNAL 4 /* position of signal strength indicator */
#define BTA_AG_IND_ROAM 5 /* position of roaming indicator */
#define BTA_AG_IND_BATTCHG 6 /* position of battery charge indicator */
#define BTA_AG_IND_CALLHELD 7 /* position of callheld indicator */
#define BTA_AG_IND_BEARER 8 /* position of bearer indicator */
/* call indicator values */
#define BTA_AG_CALL_INACTIVE 0 /* Phone call inactive */
#define BTA_AG_CALL_ACTIVE 1 /* Phone call active */
/* callsetup indicator values */
#define BTA_AG_CALLSETUP_NONE 0 /* Not currently in call set up */
#define BTA_AG_CALLSETUP_INCOMING 1 /* Incoming call process ongoing */
#define BTA_AG_CALLSETUP_OUTGOING 2 /* Outgoing call set up is ongoing */
/* Remote party being alerted in an outgoing call */
#define BTA_AG_CALLSETUP_ALERTING 3
/* service indicator values */
#define BTA_AG_SERVICE_NONE 0 /* Neither CS nor VoIP service is available */
#define BTA_AG_SERVICE_CS 1 /* Only CS service is available */
#define BTA_AG_SERVICE_VOIP 2 /* Only VoIP service is available */
#define BTA_AG_SERVICE_CS_VOIP 3 /* Both CS and VoIP services available */
/* callheld indicator values */
#define BTA_AG_CALLHELD_INACTIVE 0 /* No held calls */
#define BTA_AG_CALLHELD_ACTIVE 1 /* Call held and call active */
#define BTA_AG_CALLHELD_NOACTIVE 2 /* Call held and no call active */
/* signal strength indicator values */
#define BTA_AG_ROAMING_INACTIVE 0 /* Phone call inactive */
#define BTA_AG_ROAMING_ACTIVE 1 /* Phone call active */
/* bearer indicator values */
#define BTA_AG_BEARER_WLAN 0 /* WLAN */
#define BTA_AG_BEARER_BLUETOOTH 1 /* Bluetooth */
#define BTA_AG_BEARER_WIRED 2 /* Wired */
#define BTA_AG_BEARER_2G3G 3 /* 2G 3G */
#define BTA_AG_BEARER_WIMAX 4 /* WIMAX */
#define BTA_AG_BEARER_RES1 5 /* Reserved */
#define BTA_AG_BEARER_RES2 6 /* Reserved */
#define BTA_AG_BEARER_RES3 7 /* Reserved */
/* type for HF indicator */
typedef struct {
uint16_t ind_id;
bool is_supported;
bool is_enable;
uint32_t ind_min_val;
uint32_t ind_max_val;
} tBTA_AG_HF_IND;
/* AG configuration structure */
typedef struct {
const char* cind_info;
const char* bind_info;
uint8_t num_local_hf_ind;
int32_t conn_tout;
uint16_t sco_pkt_types;
const char* chld_val_ecc;
const char* chld_val;
} tBTA_AG_CFG;
/*****************************************************************************
* External Function Declarations
****************************************************************************/
/*******************************************************************************
*
* Function BTA_AgEnable
*
* Description Enable the audio gateway service. When the enable
* operation is complete the callback function will be
* called with a BTA_AG_ENABLE_EVT. This function must
* be called before other function in the AG API are
* called.
*
* Returns BTA_SUCCESS if OK, BTA_FAILURE otherwise.
*
******************************************************************************/
tBTA_STATUS BTA_AgEnable(tBTA_AG_PARSE_MODE parse_mode, tBTA_AG_CBACK* p_cback);
/*******************************************************************************
*
* Function BTA_AgDisable
*
* Description Disable the audio gateway service
*
*
* Returns void
*
******************************************************************************/
void BTA_AgDisable(void);
/*******************************************************************************
*
* Function BTA_AgRegister
*
* Description Register an Audio Gateway service.
*
*
* Returns void
*
******************************************************************************/
void BTA_AgRegister(tBTA_SERVICE_MASK services, tBTA_SEC sec_mask,
tBTA_AG_FEAT features, const char* p_service_names[],
uint8_t app_id);
/*******************************************************************************
*
* Function BTA_AgDeregister
*
* Description Deregister an audio gateway service.
*
*
* Returns void
*
******************************************************************************/
void BTA_AgDeregister(uint16_t handle);
/*******************************************************************************
*
* Function BTA_AgOpen
*
* Description Opens a connection to a headset or hands-free device.
* When connection is open callback function is called
* with a BTA_AG_OPEN_EVT. Only the data connection is
* opened. The audio connection is not opened.
*
*
* Returns void
*
******************************************************************************/
void BTA_AgOpen(uint16_t handle, const RawAddress& bd_addr, tBTA_SEC sec_mask,
tBTA_SERVICE_MASK services);
/*******************************************************************************
*
* Function BTA_AgClose
*
* Description Close the current connection to a headset or a handsfree
* Any current audio connection will also be closed
*
*
* Returns void
*
******************************************************************************/
void BTA_AgClose(uint16_t handle);
/*******************************************************************************
*
* Function BTA_AgAudioOpen
*
* Description Opens an audio connection to the currently connected
* headset or hnadsfree
*
*
* Returns void
*
******************************************************************************/
void BTA_AgAudioOpen(uint16_t handle);
/*******************************************************************************
*
* Function BTA_AgAudioClose
*
* Description Close the currently active audio connection to a headset
* or hnadsfree. The data connection remains open
*
*
* Returns void
*
******************************************************************************/
void BTA_AgAudioClose(uint16_t handle);
/*******************************************************************************
*
* Function BTA_AgResult
*
* Description Send an AT result code to a headset or hands-free device.
* This function is only used when the AG parse mode is set
* to BTA_AG_PARSE.
*
*
* Returns void
*
******************************************************************************/
void BTA_AgResult(uint16_t handle, tBTA_AG_RES result,
tBTA_AG_RES_DATA* p_data);
/*******************************************************************************
*
* Function BTA_AgSetCodec
*
* Description Specify the codec type to be used for the subsequent
* audio connection.
*
*
*
* Returns void
*
******************************************************************************/
void BTA_AgSetCodec(uint16_t handle, tBTA_AG_PEER_CODEC codec);
void BTA_AgSetScoAllowed(bool value);
void BTA_AgSetActiveDevice(const RawAddress& active_device_addr);
void BTA_AgSetMaxHfClients(uint8_t value);
bool BTA_AgInbandEnabled(uint16_t handle);
#endif /* BTA_AG_API_H */
|