2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 #ifndef _BLUETOOTH_TELEPHONY_API_H_
19 #define _BLUETOOTH_TELEPHONY_API_H_
27 #endif /*__cplusplus*/
29 typedef void (*bt_telephony_func_ptr)(int, void *, void *);
31 #define BLUETOOTH_TELEPHONY_ERROR_NONE ((int)0)
32 #define BLUETOOTH_TELEPHONY_ERROR_INTERNAL \
33 ((int)BLUETOOTH_TELEPHONY_ERROR_NONE - 0x01)
34 #define BLUETOOTH_TELEPHONY_ERROR_INVALID_PARAM \
35 ((int)BLUETOOTH_TELEPHONY_ERROR_NONE - 0x02)
36 #define BLUETOOTH_TELEPHONY_ERROR_ALREADY_INITIALIZED \
37 ((int)BLUETOOTH_TELEPHONY_ERROR_NONE - 0x03)
38 #define BLUETOOTH_TELEPHONY_ERROR_NOT_INITIALIZED \
39 ((int)BLUETOOTH_TELEPHONY_ERROR_NONE - 0x04)
40 #define BLUETOOTH_TELEPHONY_ERROR_AUDIO_NOT_CONNECTED \
41 ((int)BLUETOOTH_TELEPHONY_ERROR_NONE - 0x05)
42 #define BLUETOOTH_TELEPHONY_ERROR_NOT_ENABLED \
43 ((int)BLUETOOTH_TELEPHONY_ERROR_NONE - 0x06)
44 #define BLUETOOTH_TELEPHONY_ERROR_NOT_AVAILABLE \
45 ((int)BLUETOOTH_TELEPHONY_ERROR_NONE - 0x07)
46 #define BLUETOOTH_TELEPHONY_ERROR_NOT_CONNECTED \
47 ((int)BLUETOOTH_TELEPHONY_ERROR_NONE - 0x08)
48 #define BLUETOOTH_TELEPHONY_ERROR_BUSY \
49 ((int)BLUETOOTH_TELEPHONY_ERROR_NONE - 0x09)
50 #define BLUETOOTH_TELEPHONY_ERROR_ALREADY_EXSIST \
51 ((int)BLUETOOTH_TELEPHONY_ERROR_NONE - 0x0A)
52 #define BLUETOOTH_TELEPHONY_ERROR_NO_MEMORY \
53 ((int)BLUETOOTH_TELEPHONY_ERROR_NONE - 0x0B)
54 #define BLUETOOTH_TELEPHONY_ERROR_I_O_ERROR \
55 ((int)BLUETOOTH_TELEPHONY_ERROR_NONE - 0x0C)
56 #define BLUETOOTH_TELEPHONY_ERROR_ALREADY_CONNECTED \
57 ((int)BLUETOOTH_TELEPHONY_ERROR_NONE - 0x0D)
58 #define BLUETOOTH_TELEPHONY_ERROR_OPERATION_NOT_AVAILABLE \
59 ((int)BLUETOOTH_TELEPHONY_ERROR_NONE - 0x0E)
60 #define BLUETOOTH_TELEPHONY_ERROR_PERMISSION_DENIED \
61 ((int)BLUETOOTH_TELEPHONY_ERROR_NONE - 0x0F)
63 #define BT_ADDRESS_STR_LEN 18
64 #define BT_ADAPTER_PATH_LEN 50
65 #define BT_AUDIO_CALL_PATH_LEN 50
71 } telephony_event_param_t;
75 } telephony_event_callid_t;
79 } telephony_event_dtmf_t;
82 BLUETOOTH_STATE_CONNECTED,
83 BLUETOOTH_STATE_PLAYING,
84 BLUETOOTH_STATE_DISCONNETED,
85 } bluetooth_headset_state_t;
88 BLUETOOTH_TELEPHONY_ERROR_INVALID_CHLD_INDEX,
89 BLUETOOTH_TELEPHONY_ERROR_BATTERY_STATUS,
90 BLUETOOTH_TELEPHONY_ERROR_SIGNAL_STATUS,
91 BLUETOOTH_TELEPHONY_ERROR_NOT_SUPPORTED,
92 BLUETOOTH_TELEPHONY_ERROR_APPLICATION,
93 BLUETOOTH_TELEPHONY_ERROR_INVALID_DTMF,
94 } bluetooth_telephony_error_t;
98 CSD_CALL_STATUS_CREATE,
99 CSD_CALL_STATUS_COMING,
100 CSD_CALL_STATUS_PROCEEDING,
101 CSD_CALL_STATUS_MO_ALERTING,
102 CSD_CALL_STATUS_MT_ALERTING,
103 CSD_CALL_STATUS_WAITING,
104 CSD_CALL_STATUS_ANSWERED,
105 CSD_CALL_STATUS_ACTIVE,
106 CSD_CALL_STATUS_MO_RELEASE,
107 CSD_CALL_STATUS_MT_RELEASE,
108 CSD_CALL_STATUS_HOLD_INITIATED,
109 CSD_CALL_STATUS_HOLD,
110 CSD_CALL_STATUS_RETRIEVE_INITIATED,
111 CSD_CALL_STATUS_RECONNECT_PENDING,
112 CSD_CALL_STATUS_TERMINATED,
113 CSD_CALL_STATUS_SWAP_INITIATED,
114 } bt_telephony_call_status_t;
116 #define BLUETOOTH_EVENT_TYPE_TELEPHONY_BASE (unsigned int)(0x00500)
119 BLUETOOTH_EVENT_TELEPHONY_ANSWER_CALL = BLUETOOTH_EVENT_TYPE_TELEPHONY_BASE,
120 BLUETOOTH_EVENT_TELEPHONY_RELEASE_CALL,
121 BLUETOOTH_EVENT_TELEPHONY_REJECT_CALL,
122 BLUETOOTH_EVENT_TELEPHONY_CHLD_0_RELEASE_ALL_HELD_CALL,
123 BLUETOOTH_EVENT_TELEPHONY_CHLD_1_RELEASE_ALL_ACTIVE_CALL,
124 BLUETOOTH_EVENT_TELEPHONY_CHLD_2_ACTIVE_HELD_CALL,
125 BLUETOOTH_EVENT_TELEPHONY_CHLD_3_MERGE_CALL,
126 BLUETOOTH_EVENT_TELEPHONY_CHLD_4_EXPLICIT_CALL_TRANSFER,
127 BLUETOOTH_EVENT_TELEPHONY_SEND_DTMF,
128 BLUETOOTH_EVENT_TELEPHONY_HFP_CONNECTED,
129 BLUETOOTH_EVENT_TELEPHONY_HFP_DISCONNECTED,
130 BLUETOOTH_EVENT_TELEPHONY_AUDIO_CONNECTED,
131 BLUETOOTH_EVENT_TELEPHONY_AUDIO_DISCONNECTED,
132 BLUETOOTH_EVENT_TELEPHONY_SET_SPEAKER_GAIN,
133 BLUETOOTH_EVENT_TELEPHONY_SET_MIC_GAIN,
134 BLUETOOTH_EVENT_TELEPHONY_NREC_CHANGED,
135 BLUETOOTH_EVENT_TELEPHONY_VENDOR_AT_CMD,
136 } bluetooth_telephony_event_type;
139 BLUETOOTH_CALL_STATE_NONE,
140 BLUETOOTH_CALL_STATE_CONNECTED,
141 BLUETOOTH_CALL_STATE_HELD,
142 BLUETOOTH_CALL_STATE_DIALLING,
143 BLUETOOTH_CALL_STATE_ALERTING,
144 BLUETOOTH_CALL_STATE_INCOMING,
145 BLUETOOTH_CALL_STATE_WAITING,
146 BLUETOOTH_CALL_STATE_ERROR,
147 } bt_telephony_call_state_t;
150 BLUETOOTH_AGENT_ERROR_NONE,
151 BLUETOOTH_AGENT_ERROR_INTERNAL,
152 BLUETOOTH_AGENT_ERROR_NOT_AVAILABLE,
153 BLUETOOTH_AGENT_ERROR_NOT_CONNECTED,
154 BLUETOOTH_AGENT_ERROR_BUSY,
155 BLUETOOTH_AGENT_ERROR_INVALID_PARAM,
156 BLUETOOTH_AGENT_ERROR_ALREADY_EXSIST,
157 BLUETOOTH_AGENT_ERROR_ALREADY_CONNECTED,
158 BLUETOOTH_AGENT_ERROR_NO_MEMORY,
159 BLUETOOTH_AGENT_ERROR_I_O_ERROR,
160 BLUETOOTH_AGENT_ERROR_OPERATION_NOT_AVAILABLE,
161 BLUETOOTH_AGENT_ERROR_NO_CALL_LOGS,
162 BLUETOOTH_AGENT_ERROR_INVALID_MEMORY_INDEX,
163 BLUETOOTH_AGENT_ERROR_INVALID_CHLD_INDEX,
164 BLUETOOTH_AGENT_ERROR_BATTERY_STATUS,
165 BLUETOOTH_AGENT_ERROR_SIGNAL_STATUS,
166 BLUETOOTH_AGENT_ERROR_NOT_SUPPORTED,
167 BLUETOOTH_AGENT_ERROR_INVALID_NUMBER,
168 BLUETOOTH_AGENT_ERROR_APPLICATION,
169 BLUETOOTH_AGENT_ERROR_INVALID_DTMF,
170 } bluetooth_telephony_agent_error_t;
173 unsigned int call_id;
174 bt_telephony_call_state_t call_status;
176 } bt_telephony_call_status_info_t;
179 * @brief The function bluetooth_telephony_init is initialize telephony calls.
181 * @param[in] cb Callback function
182 * @param[in] user_data Data sent by application, which will be
183 * returned in event handler.
184 * @return int Zero on Success or reason for error if any.
187 int bluetooth_telephony_init(bt_telephony_func_ptr cb, void *user_data);
190 * @brief The function bluetooth_telephony_deinit is deinitialize telephony calls.
192 * @return int Zero on Success or reason for error if any.
195 int bluetooth_telephony_deinit(void);
198 * @brief The function bluetooth_telephony_audio_open is to open SCO channel
200 * @return int Zero on Success or reason for error if any.
203 int bluetooth_telephony_audio_open(void);
206 * @brief The function bluetooth_telephony_audio_close is to close SCO channel.
207 * that the Volume on AG is changed.
209 * @return int Zero on Success or reason for error if any.
212 int bluetooth_telephony_audio_close(void);
215 * @brief The function bluetooth_telephony_call_remote_ringing is send
218 * @param[in] call_id Call Id.
219 * @return int Zero on Success or reason for error if any.
222 int bluetooth_telephony_call_remote_ringing(unsigned int call_id);
225 * @brief The function bluetooth_telephony_call_answered is called to
228 * @param[in] call_id Call Id.
229 * @param[in] bt_audio flag
230 * @return int Zero on Success or reason for error if any.
233 int bluetooth_telephony_call_answered(unsigned int call_id,
234 unsigned int bt_audio);
237 * @brief The function bluetooth_telephony_call_end to end call
239 * @param[in] call_id Call Id.
240 * @return int Zero on Success or reason for error if any.
243 int bluetooth_telephony_call_end(unsigned int call_id);
246 * @brief The function bluetooth_telephony_call_held to hold call
248 * @param[in] call_id Call Id.
249 * @return int Zero on Success or reason for error if any.
252 int bluetooth_telephony_call_held(unsigned int call_id);
255 * @brief The function bluetooth_telephony_call_retrieved to retrieve call
257 * @param[in] call_id Call Id.
258 * @return int Zero on Success or reason for error if any.
261 int bluetooth_telephony_call_retrieved(unsigned int call_id);
264 * @brief The function bluetooth_telephony_call_swapped to swap call
266 * @param[in] call_list Call info such as id and status.
267 * @param[in] call_count Call count.
268 * @return int Zero on Success or reason for error if any.
271 int bluetooth_telephony_call_swapped(void *call_list,
272 unsigned int call_count);
275 * @brief The function bluetooth_telephony_set_call_status to set call status
277 * @param[in] call_list Call info such as id and status.
278 * @param[in] call_count Call count.
279 * @return int Zero on Success or reason for error if any.
282 int bluetooth_telephony_set_call_status(void *call_list,
283 unsigned int call_count);
286 * @brief The function bluetooth_telephony_indicate_outgoing_call toindicate
289 * @param[in] ph_number Phone number of the outgoing call.
290 * @param[in] call_id Call ID.
291 * @param[in] bt_audio Flag.
292 * @return int Zero on Success or reason for error if any.
295 int bluetooth_telephony_indicate_outgoing_call(
296 const char *ph_number, unsigned int call_id,
297 unsigned int bt_audio);
300 * @brief The function bluetooth_telephony_indicate_incoming_call to indicate
303 * @param[in] call_info Call info such as id and status.
304 * @param[in] call_count Call count.
305 * @return int Zero on Success or reason for error if any.
308 int bluetooth_telephony_indicate_incoming_call(
309 const char *ph_number, unsigned int call_id);
312 * @brief The function bluetooth_telephony_is_sco_connected to check
313 * if SCO channel is connected.
315 * @return gboolean TRUE if headset playing else FALSE.
318 gboolean bluetooth_telephony_is_sco_connected(void);
321 * @brief The function bluetooth_telephony_is_nrec_enabled to check
322 * for noise reduction and echo cancelation(nrec) status
324 * @return int Zero on Success or reason for error if any.
327 int bluetooth_telephony_is_nrec_enabled(gboolean *status);
330 * @brief The function bluetooth_telephony_is_nrec_enabled to check
331 * for wide band speech status
333 * @return int Zero on Success or reason for error if any.
336 int bluetooth_telephony_is_wbs_mode(gboolean *status);
339 * @brief This function send XSAT vendor specific AT command
341 * @return int Zero on Success or reason for error if any.
343 int bluetooth_telephony_send_vendor_cmd(const char *cmd);
347 * @brief This function sends request to enable voice recognition feature
349 * @return int Zero on Success or reason for error if any.
351 int bluetooth_telephony_start_voice_recognition(void);
354 * @brief This function sends request to disable voice recognition feature
356 * @return int Zero on Success or reason for error if any.
358 int bluetooth_telephony_stop_voice_recognition(void);
362 * @brief The function bluetooth_telephony_get_headset_volume is called to get
363 * the changed Volume on AG.
365 * @param[out] speaker_gain Speaker gain.
366 * @return int Zero on Success or reason for error if any.
369 int bluetooth_telephony_get_headset_volume(unsigned int *speaker_gain);
372 * @brief The function bluetooth_telephony_set_speaker_gain is called to indicate
373 * that the Volume on AG is changed.
375 * @param[in] speaker_gain Speaker gain.
376 * @return int Zero on Success or reason for error if any.
379 int bluetooth_telephony_set_speaker_gain(unsigned short speaker_gain);
382 * @brief The function bluetooth_telephony_is_connected is called to get
383 * the connection state on AG.
385 * @param[in] ag_connnected Connection state.
386 * @return int Zero on Success or reason for error if any.
389 int bluetooth_telephony_is_connected(gboolean *ag_connected);
392 * @brief The function bluetooth_telephony_set_active_headset is called to select
393 * the active headset device for AG role if more than one headset is connected.
395 * @param[in] remote_addr Remote Addr.
396 * @return int Zero on Success or reason for error if any.
399 int bluetooth_telephony_set_active_headset(const char *remote_addr);
403 #endif /*__cplusplus*/
404 #endif/*_BLUETOOTH_TELEPHONY_API_H_*/