blob: 917c605e53d7fed424b56d88a3583cf44cb2db6c [file] [log] [blame]
Hemant Gupta41d4a262013-08-19 18:33:01 +05301/******************************************************************************
2 *
3 * Copyright (c) 2014 The Android Open Source Project
4 * Copyright (C) 2003-2012 Broadcom Corporation
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at:
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 *
18 ******************************************************************************/
19
20/*****************************************************************************
21** Data types
22*****************************************************************************/
23
24/* ASCII character string of arguments to the AT command */
25#define BTA_HF_CLIENT_AT_MAX_LEN 512
26
27/* AT command table element */
28typedef struct
29{
30 const char *p_cmd; /* AT command string */
31 UINT8 arg_type; /* allowable argument type syntax */
32 UINT8 fmt; /* whether arg is int or string */
33 UINT8 min; /* minimum value for int arg */
34 INT16 max; /* maximum value for int arg */
35} tBTA_AG_AT_CMD;
36
37/* callback function executed when command is parsed */
38typedef void (tBTA_AG_AT_CMD_CBACK)(void *p_user, UINT16 cmd, UINT8 arg_type,
39 char *p_arg, INT16 int_arg);
40
41/* callback function executed to send "ERROR" result code */
42typedef void (tBTA_AG_AT_ERR_CBACK)(void *p_user, BOOLEAN unknown, char *p_arg);
43
44enum
45{
46 BTA_HF_CLIENT_AT_NONE,
47 BTA_HF_CLIENT_AT_BRSF,
48 BTA_HF_CLIENT_AT_BAC,
49 BTA_HF_CLIENT_AT_CIND,
50 BTA_HF_CLIENT_AT_CIND_STATUS,
51 BTA_HF_CLIENT_AT_CMER,
52 BTA_HF_CLIENT_AT_CHLD,
53 BTA_HF_CLIENT_AT_CMEE,
54 BTA_HF_CLIENT_AT_BIA,
55 BTA_HF_CLIENT_AT_CLIP,
56 BTA_HF_CLIENT_AT_CCWA,
57 BTA_HF_CLIENT_AT_COPS,
58 BTA_HF_CLIENT_AT_CLCC,
59 BTA_HF_CLIENT_AT_BVRA,
60 BTA_HF_CLIENT_AT_VGS,
61 BTA_HF_CLIENT_AT_VGM,
62 BTA_HF_CLIENT_AT_ATD,
63 BTA_HF_CLIENT_AT_BLDN,
64 BTA_HF_CLIENT_AT_ATA,
65 BTA_HF_CLIENT_AT_CHUP,
66 BTA_HF_CLIENT_AT_BTRH,
67 BTA_HF_CLIENT_AT_VTS,
68 BTA_HF_CLIENT_AT_BCC,
69 BTA_HF_CLIENT_AT_BCS,
70 BTA_HF_CLIENT_AT_CNUM,
71 BTA_HF_CLIENT_AT_NREC,
72 BTA_HF_CLIENT_AT_BINP,
73};
74
75typedef UINT8 tBTA_HF_CLIENT_AT_CMD;
76
77/* Maximum combined buffer for received AT events string */
78#define BTA_HF_CLIENT_AT_PARSER_MAX_LEN 4096
79
80/* This structure holds prepared AT command queued for sending */
81struct queued_at_cmd{
82 tBTA_HF_CLIENT_AT_CMD cmd;
83 char buf[BTA_HF_CLIENT_AT_MAX_LEN];
84 UINT16 buf_len;
85 struct queued_at_cmd *next;
86};
87typedef struct queued_at_cmd tBTA_HF_CLIENT_AT_QCMD;
88
89/* Maximum number of indicators */
90#define BTA_HF_CLIENT_AT_INDICATOR_COUNT 20
91
92/* AT command parsing control block */
93typedef struct
94{
95 char buf[BTA_HF_CLIENT_AT_PARSER_MAX_LEN + 1]; /* extra byte to always have \0 at the end */
96 unsigned int offset;
97 tBTA_HF_CLIENT_AT_CMD current_cmd;
98 tBTA_HF_CLIENT_AT_QCMD *queued_cmd;
99
100 TIMER_LIST_ENT resp_timer; /* AT response timer */
101 BOOLEAN resp_timer_on; /* TRUE if AT response timer is active */
102
103 TIMER_LIST_ENT hold_timer; /* AT hold timer */
104 BOOLEAN hold_timer_on; /* TRUE if AT hold timer is active */
105
106 /* CIND: lookup table to store the sequence of incoming indicators and their values
107 so when their values come later, we know which value in sequence match certain indicator */
108 int indicator_lookup[BTA_HF_CLIENT_AT_INDICATOR_COUNT];
109
110} tBTA_HF_CLIENT_AT_CB;
111
112/*****************************************************************************
113** Functions
114*****************************************************************************/
115
116void bta_hf_client_at_init(void);
117void bta_hf_client_at_reset(void);