bt_hf.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2012 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef ANDROID_INCLUDE_BT_HF_H
18 #define ANDROID_INCLUDE_BT_HF_H
19 
20 __BEGIN_DECLS
21 
22 /* AT response code - OK/Error */
23 typedef enum {
27 
28 typedef enum {
35 
36 typedef enum {
42 
43 typedef enum {
47 
48 typedef enum {
52 
53 /* Noise Reduction and Echo Cancellation */
54 typedef enum
55 {
58 } bthf_nrec_t;
59 
60 /* WBS codec setting */
61 typedef enum
62 {
67 
68 /* CHLD - Call held handling */
69 typedef enum
70 {
71  BTHF_CHLD_TYPE_RELEASEHELD, // Terminate all held or set UDUB("busy") to a waiting call
72  BTHF_CHLD_TYPE_RELEASEACTIVE_ACCEPTHELD, // Terminate all active calls and accepts a waiting/held call
73  BTHF_CHLD_TYPE_HOLDACTIVE_ACCEPTHELD, // Hold all active calls and accepts a waiting/held call
74  BTHF_CHLD_TYPE_ADDHELDTOCONF, // Add all held calls to a conference
76 
77 /** Callback for connection state change.
78  * state will have one of the values from BtHfConnectionState
79  */
80 typedef void (* bthf_connection_state_callback)(bthf_connection_state_t state, bt_bdaddr_t *bd_addr);
81 
82 /** Callback for audio connection state change.
83  * state will have one of the values from BtHfAudioState
84  */
85 typedef void (* bthf_audio_state_callback)(bthf_audio_state_t state, bt_bdaddr_t *bd_addr);
86 
87 /** Callback for VR connection state change.
88  * state will have one of the values from BtHfVRState
89  */
90 typedef void (* bthf_vr_cmd_callback)(bthf_vr_state_t state, bt_bdaddr_t *bd_addr);
91 
92 /** Callback for answer incoming call (ATA)
93  */
94 typedef void (* bthf_answer_call_cmd_callback)(bt_bdaddr_t *bd_addr);
95 
96 /** Callback for disconnect call (AT+CHUP)
97  */
98 typedef void (* bthf_hangup_call_cmd_callback)(bt_bdaddr_t *bd_addr);
99 
100 /** Callback for disconnect call (AT+CHUP)
101  * type will denote Speaker/Mic gain (BtHfVolumeControl).
102  */
103 typedef void (* bthf_volume_cmd_callback)(bthf_volume_type_t type, int volume, bt_bdaddr_t *bd_addr);
104 
105 /** Callback for dialing an outgoing call
106  * If number is NULL, redial
107  */
108 typedef void (* bthf_dial_call_cmd_callback)(char *number, bt_bdaddr_t *bd_addr);
109 
110 /** Callback for sending DTMF tones
111  * tone contains the dtmf character to be sent
112  */
113 typedef void (* bthf_dtmf_cmd_callback)(char tone, bt_bdaddr_t *bd_addr);
114 
115 /** Callback for enabling/disabling noise reduction/echo cancellation
116  * value will be 1 to enable, 0 to disable
117  */
118 typedef void (* bthf_nrec_cmd_callback)(bthf_nrec_t nrec, bt_bdaddr_t *bd_addr);
119 
120 /** Callback for AT+BCS and event from BAC
121  * WBS enable, WBS disable
122  */
123 typedef void (* bthf_wbs_callback)(bthf_wbs_config_t wbs, bt_bdaddr_t *bd_addr);
124 
125 /** Callback for call hold handling (AT+CHLD)
126  * value will contain the call hold command (0, 1, 2, 3)
127  */
128 typedef void (* bthf_chld_cmd_callback)(bthf_chld_type_t chld, bt_bdaddr_t *bd_addr);
129 
130 /** Callback for CNUM (subscriber number)
131  */
132 typedef void (* bthf_cnum_cmd_callback)(bt_bdaddr_t *bd_addr);
133 
134 /** Callback for indicators (CIND)
135  */
136 typedef void (* bthf_cind_cmd_callback)(bt_bdaddr_t *bd_addr);
137 
138 /** Callback for operator selection (COPS)
139  */
140 typedef void (* bthf_cops_cmd_callback)(bt_bdaddr_t *bd_addr);
141 
142 /** Callback for call list (AT+CLCC)
143  */
144 typedef void (* bthf_clcc_cmd_callback) (bt_bdaddr_t *bd_addr);
145 
146 /** Callback for unknown AT command recd from HF
147  * at_string will contain the unparsed AT string
148  */
149 typedef void (* bthf_unknown_at_cmd_callback)(char *at_string, bt_bdaddr_t *bd_addr);
150 
151 /** Callback for keypressed (HSP) event.
152  */
153 typedef void (* bthf_key_pressed_cmd_callback)(bt_bdaddr_t *bd_addr);
154 
155 /** BT-HF callback structure. */
156 typedef struct {
157  /** set to sizeof(BtHfCallbacks) */
158  size_t size;
177 
178 /** Network Status */
179 typedef enum
180 {
184 
185 /** Service type */
186 typedef enum
187 {
191 
192 typedef enum {
201 
202 typedef enum {
206 
207 typedef enum {
212 
213 typedef enum {
217 
218 typedef enum {
222 /** Represents the standard BT-HF interface. */
223 typedef struct {
224 
225  /** set to sizeof(BtHfInterface) */
226  size_t size;
227  /**
228  * Register the BtHf callbacks
229  */
230  bt_status_t (*init)( bthf_callbacks_t* callbacks, int max_hf_clients);
231 
232  /** connect to headset */
233  bt_status_t (*connect)( bt_bdaddr_t *bd_addr );
234 
235  /** dis-connect from headset */
236  bt_status_t (*disconnect)( bt_bdaddr_t *bd_addr );
237 
238  /** create an audio connection */
239  bt_status_t (*connect_audio)( bt_bdaddr_t *bd_addr );
240 
241  /** close the audio connection */
242  bt_status_t (*disconnect_audio)( bt_bdaddr_t *bd_addr );
243 
244  /** start voice recognition */
245  bt_status_t (*start_voice_recognition)( bt_bdaddr_t *bd_addr );
246 
247  /** stop voice recognition */
248  bt_status_t (*stop_voice_recognition)( bt_bdaddr_t *bd_addr );
249 
250  /** volume control */
251  bt_status_t (*volume_control) (bthf_volume_type_t type, int volume, bt_bdaddr_t *bd_addr );
252 
253  /** Combined device status change notification */
254  bt_status_t (*device_status_notification)(bthf_network_state_t ntk_state, bthf_service_type_t svc_type, int signal,
255  int batt_chg);
256 
257  /** Response for COPS command */
258  bt_status_t (*cops_response)(const char *cops, bt_bdaddr_t *bd_addr );
259 
260  /** Response for CIND command */
261  bt_status_t (*cind_response)(int svc, int num_active, int num_held, bthf_call_state_t call_setup_state,
262  int signal, int roam, int batt_chg, bt_bdaddr_t *bd_addr );
263 
264  /** Pre-formatted AT response, typically in response to unknown AT cmd */
265  bt_status_t (*formatted_at_response)(const char *rsp, bt_bdaddr_t *bd_addr );
266 
267  /** ok/error response
268  * ERROR (0)
269  * OK (1)
270  */
271  bt_status_t (*at_response) (bthf_at_response_t response_code, int error_code, bt_bdaddr_t *bd_addr );
272 
273  /** response for CLCC command
274  * Can be iteratively called for each call index
275  * Call index of 0 will be treated as NULL termination (Completes response)
276  */
277  bt_status_t (*clcc_response) (int index, bthf_call_direction_t dir,
279  bthf_call_mpty_type_t mpty, const char *number,
280  bthf_call_addrtype_t type, bt_bdaddr_t *bd_addr );
281 
282  /** notify of a call state change
283  * Each update notifies
284  * 1. Number of active/held/ringing calls
285  * 2. call_state: This denotes the state change that triggered this msg
286  * This will take one of the values from BtHfCallState
287  * 3. number & type: valid only for incoming & waiting call
288  */
289  bt_status_t (*phone_state_change) (int num_active, int num_held, bthf_call_state_t call_setup_state,
290  const char *number, bthf_call_addrtype_t type);
291 
292  /** Closes the interface. */
293  void (*cleanup)( void );
294 
295  /** configureation for the SCO codec */
296  bt_status_t (*configure_wbs)( bt_bdaddr_t *bd_addr ,bthf_wbs_config_t config );
298 
299 __END_DECLS
300 
301 #endif /* ANDROID_INCLUDE_BT_HF_H */
bthf_wbs_config_t
Definition: bt_hf.h:61
void(* bthf_cnum_cmd_callback)(bt_bdaddr_t *bd_addr)
Definition: bt_hf.h:132
void(* bthf_clcc_cmd_callback)(bt_bdaddr_t *bd_addr)
Definition: bt_hf.h:144
bthf_cops_cmd_callback cops_cmd_cb
Definition: bt_hf.h:172
size_t size
Definition: bt_hf.h:226
bthf_dial_call_cmd_callback dial_call_cmd_cb
Definition: bt_hf.h:165
void(* bthf_volume_cmd_callback)(bthf_volume_type_t type, int volume, bt_bdaddr_t *bd_addr)
Definition: bt_hf.h:103
void(* bthf_chld_cmd_callback)(bthf_chld_type_t chld, bt_bdaddr_t *bd_addr)
Definition: bt_hf.h:128
bthf_volume_cmd_callback volume_cmd_cb
Definition: bt_hf.h:164
bthf_connection_state_callback connection_state_cb
Definition: bt_hf.h:159
bthf_vr_state_t
Definition: bt_hf.h:43
bthf_call_mode_t
Definition: bt_hf.h:207
bthf_nrec_cmd_callback nrec_cmd_cb
Definition: bt_hf.h:167
void(* bthf_wbs_callback)(bthf_wbs_config_t wbs, bt_bdaddr_t *bd_addr)
Definition: bt_hf.h:123
bt_status_t
Definition: bluetooth.h:80
void(* bthf_key_pressed_cmd_callback)(bt_bdaddr_t *bd_addr)
Definition: bt_hf.h:153
bthf_service_type_t
Definition: bt_hf.h:186
bthf_vr_cmd_callback vr_cmd_cb
Definition: bt_hf.h:161
void(* bthf_dial_call_cmd_callback)(char *number, bt_bdaddr_t *bd_addr)
Definition: bt_hf.h:108
bthf_chld_cmd_callback chld_cmd_cb
Definition: bt_hf.h:169
bthf_cind_cmd_callback cind_cmd_cb
Definition: bt_hf.h:171
void(* bthf_nrec_cmd_callback)(bthf_nrec_t nrec, bt_bdaddr_t *bd_addr)
Definition: bt_hf.h:118
void(* bthf_answer_call_cmd_callback)(bt_bdaddr_t *bd_addr)
Definition: bt_hf.h:94
bthf_nrec_t
Definition: bt_hf.h:54
bthf_call_mpty_type_t
Definition: bt_hf.h:213
void(* bthf_hangup_call_cmd_callback)(bt_bdaddr_t *bd_addr)
Definition: bt_hf.h:98
bthf_audio_state_callback audio_state_cb
Definition: bt_hf.h:160
bthf_call_direction_t
Definition: bt_hf.h:202
bthf_chld_type_t
Definition: bt_hf.h:69
void(* bthf_connection_state_callback)(bthf_connection_state_t state, bt_bdaddr_t *bd_addr)
Definition: bt_hf.h:80
bthf_audio_state_t
Definition: bt_hf.h:36
bthf_hangup_call_cmd_callback hangup_call_cmd_cb
Definition: bt_hf.h:163
size_t size
Definition: bt_hf.h:158
void(* bthf_cops_cmd_callback)(bt_bdaddr_t *bd_addr)
Definition: bt_hf.h:140
bthf_connection_state_t
Definition: bt_hf.h:28
bthf_wbs_callback wbs_cb
Definition: bt_hf.h:168
bthf_key_pressed_cmd_callback key_pressed_cmd_cb
Definition: bt_hf.h:175
bthf_volume_type_t
Definition: bt_hf.h:48
bthf_call_state_t
Definition: bt_hf.h:192
void(* bthf_dtmf_cmd_callback)(char tone, bt_bdaddr_t *bd_addr)
Definition: bt_hf.h:113
void(* bthf_audio_state_callback)(bthf_audio_state_t state, bt_bdaddr_t *bd_addr)
Definition: bt_hf.h:85
bthf_clcc_cmd_callback clcc_cmd_cb
Definition: bt_hf.h:173
bthf_answer_call_cmd_callback answer_call_cmd_cb
Definition: bt_hf.h:162
bthf_network_state_t
Definition: bt_hf.h:179
void(* bthf_unknown_at_cmd_callback)(char *at_string, bt_bdaddr_t *bd_addr)
Definition: bt_hf.h:149
void(* bthf_cind_cmd_callback)(bt_bdaddr_t *bd_addr)
Definition: bt_hf.h:136
bthf_cnum_cmd_callback cnum_cmd_cb
Definition: bt_hf.h:170
bthf_at_response_t
Definition: bt_hf.h:23
bthf_unknown_at_cmd_callback unknown_at_cmd_cb
Definition: bt_hf.h:174
bthf_call_addrtype_t
Definition: bt_hf.h:218
void(* bthf_vr_cmd_callback)(bthf_vr_state_t state, bt_bdaddr_t *bd_addr)
Definition: bt_hf.h:90
bthf_dtmf_cmd_callback dtmf_cmd_cb
Definition: bt_hf.h:166