31986606372af976aff9be5a5645ce68a2bdf7a4
[platform/core/connectivity/bluetooth-agent.git] / ag-agent / bluetooth-ag-agent.h
1 /*
2  * Bluetooth-ag-agent.h
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact:     Hocheol Seo <hocheol.seo@samsung.com>
7  *              Chethan TN <chethan.tn@samsung.com>
8  *              Chanyeol Park <chanyeol.park@samsung.com>
9  *              Rakesh MK <rakesh.mk@samsung.com>
10  *
11  * Licensed under the Apache License, Version 2.0 (the "License");
12  * you may not use this file except in compliance with the License.
13  * You may obtain a copy of the License at
14  *
15  *              http://www.apache.org/licenses/LICENSE-2.0
16  *
17  * Unless required by applicable law or agreed to in writing, software
18  * distributed under the License is distributed on an "AS IS" BASIS,
19  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20  * See the License for the specific language governing permissions and
21  * limitations under the License.
22  *
23  */
24
25 #ifndef __DEF_BT_AG_AGENT_H_
26 #define __DEF_BT_AG_AGENT_H_
27
28 #undef LOG_TAG
29 #define LOG_TAG "BLUETOOTH_AG_AGENT"
30
31 #define LOG_COLOR_RESET    "\033[0m"
32 #define LOG_COLOR_RED      "\033[31m"
33 #define LOG_COLOR_YELLOW   "\033[33m"
34 #define LOG_COLOR_GREEN         "\033[32m"
35 #define LOG_COLOR_BLUE          "\033[36m"
36 #define LOG_COLOR_PURPLE   "\033[35m"
37
38 #define DBG(fmt, args...) SLOGD(fmt, ##args)
39 #define INFO(fmt, args...) SLOGI(fmt, ##args)
40 #define ERR(fmt, args...) SLOGE(fmt, ##args)
41 #define DBG_SECURE(fmt, args...) SECURE_SLOGD(fmt, ##args)
42 #define INFO_SECURE(fmt, args...) SECURE_SLOGI(fmt, ##args)
43 #define ERR_SECURE(fmt, args...) SECURE_SLOGE(fmt, ##args)
44 #define DBG_SECURE(fmt, args...) SECURE_SLOGD(fmt, ##args)
45 #define ERR_SECURE(fmt, args...) SECURE_SLOGE(fmt, ##args)
46 #define INFO_C(fmt, arg...) \
47         SLOGI_IF(TRUE,  LOG_COLOR_BLUE" "fmt" "LOG_COLOR_RESET, ##arg)
48 #define ERR_C(fmt, arg...) \
49         SLOGI_IF(TRUE,  LOG_COLOR_RED" "fmt" "LOG_COLOR_RESET, ##arg)
50
51 #include <unistd.h>
52 #include <dlog.h>
53 #include <stdio.h>
54 #include <signal.h>
55 #include <string.h>
56 #include <unistd.h>
57 #include <fcntl.h>
58 #include <inttypes.h>
59 #include <sys/socket.h>
60 #include <glib.h>
61 #include <gio/gio.h>
62 #include <errno.h>
63
64 #include "vconf.h"
65 #include "vconf-keys.h"
66
67 #define BT_AG_SERVICE_NAME "org.bluez.ag_agent"
68 #define BT_AG_AGENT_OBJECT_PATH "/org/bluez/hfp_agent"
69 #define BT_HS_AG_AGENT_OBJECT_PATH "/org/bluez/hsp_agent"
70 #define BLUEZ_AG_INTERFACE_NAME "Hands-Free Audio Gateway"
71 #define BLUEZ_SERVICE_NAME "org.bluez"
72 #define BLUEZ_PROFILE_MGMT_INTERFACE "org.bluez.ProfileManager1"
73 #define BT_MANAGER_INTERFACE "org.freedesktop.DBus.ObjectManager"
74 #define HFP_APP_INTERFACE "Org.Hfp.App.Interface"
75 #define TELEPHONY_APP_INTERFACE "org.tizen.csd.Call.Instance"
76 #define BT_HEADSET_INTERFACE "org.bluez.Headset"
77 #define BT_ADAPTER_INTERFACE    "org.bluez.Adapter1"
78 #define BT_INTERFACES_ADDED "InterfacesAdded"
79 #define BT_INTERFACES_REMOVED "InterfacesRemoved"
80 #ifdef TIZEN_FEATURE_BT_MEDIA_ENHANCE
81 #define BT_PROPERTIES_INTERFACE "org.freedesktop.DBus.Properties"
82 #define BLUEZ_MEDIA_TRANSPORT_INTERFACE "org.bluez.MediaTransport1"
83 #define BLUEZ_MEDIA_ENDPOINT_INTERFACE "org.bluez.MediaEndpoint1"
84 #define BLUEZ_DEVICE_INTERFACE  "org.bluez.Device1"
85 #define A2DP_SOURCE_ENDPOINT "/MediaEndpoint/A2DPSource"
86 #endif
87
88 #define BT_ADAPTER_OBJECT_PATH_MAX 50
89
90 #define BT_ADDRESS_STRING_SIZE 18
91 #define MAX_BUFFER_SIZE 1024
92
93 /* Response and hold values */
94 #define BT_RSP_HOLD_NOT_SUPPORTED       -2
95 #define HANDSFREE_FEATURE_CALL_WAITING_AND_3WAY 0x0002
96
97 /* HFP Agent Indicator event values */
98 #define INDICATOR_EVENT_SERVICE_NONE                    0
99 #define INDICATOR_EVENT_SERVICE_PRESENT         1
100
101 #define INDICATOR_EVENT_CALL_INACTIVE                   0
102 #define INDICATOR_EVENT_CALL_ACTIVE                     1
103
104 #define INDICATOR_EVENT_CALLSETUP_INACTIVE               0
105 #define INDICATOR_EVENT_CALLSETUP_INCOMING               1
106 #define INDICATOR_EVENT_CALLSETUP_OUTGOING               2
107 #define INDICATOR_EVENT_CALLSETUP_ALERTING               3
108
109 #define INDICATOR_EVENT_CALLHELD_NONE                   0
110 #define INDICATOR_EVENT_CALLHELD_MULTIPLE               1
111 #define INDICATOR_EVENT_CALLHELD_ON_HOLD                2
112
113 #define INDICATOR_EVENT_ROAM_INACTIVE                   0
114 #define INDICATOR_EVENT_ROAM_ACTIVE                     1
115
116 /* Telephony number types */
117 #define AGENT_NUMBER_TYPE_TELEPHONY             129
118 #define AGENT_NUMBER_TYPE_INTERNATIONAL 145
119
120 /* Call direction parameters */
121 #define AGENT_CALL_DIRECTION_OUTGOING   0
122 #define AGENT_CALL_DIRECTION_INCOMING           1
123
124 #define AGENT_CALL_STATUS_ACTIVE                0
125 #define AGENT_CALL_STATUS_HELD          1
126 #define AGENT_CALL_STATUS_DIALING               2
127 #define AGENT_CALL_STATUS_ALERTING      3
128 #define AGENT_CALL_STATUS_INCOMING      4
129 #define AGENT_CALL_STATUS_WAITING               5
130
131 #define AGENT_CALL_MODE_VOICE           0
132 #define AGENT_CALL_MODE_DATA            1
133 #define AGENT_CALL_MODE_FAX             2
134
135 #define AGENT_CALL_MULTIPARTY_NO                0
136 #define AGENT_CALL_MULTIPARTY_YES               1
137
138 /* Subscriber number parameters*/
139 #define AGENT_SUBSCRIBER_SERVICE_VOICE  4
140
141 /* Operator selection mode values */
142 #define AGENT_OPERATOR_MODE_AUTO                        0
143 #define HSP_VERSION_1_2  0x0102
144
145 /* Voice recognition blacklist file */
146 #define AGENT_VR_BLACKLIST_FILE (APP_SYSCONFDIR"/voice-recognition-blacklist")
147
148 #define BT_LOWER_ADDRESS_LENGTH 9
149
150 enum hfp_version {
151         HFP_VERSION_1_5 = 0x0105,
152         HFP_VERSION_1_6 = 0x0106,
153         HFP_VERSION_1_7 = 0x0107,
154         HFP_VERSION_LATEST = HFP_VERSION_1_7,
155 };
156
157 /* BD Address */
158 typedef struct {
159         uint8_t b[6];
160 } __attribute__((packed)) bt_addrs;
161
162 /**
163  * @brief Outgoing call type status
164  *
165  * 0 : Follow last call log \n
166  * 1 : Voice call \n
167  * 2 : Video call \n
168  */
169 #define BT_FOLLOW_CALL_LOG 0
170 #define BT_VOICE_CALL 1
171 #define BT_VIDEO_CALL 2
172
173 /**
174  * @brief The status of making outgoing calls with BT headsets
175  *
176  * 0 : Even when device locked \n
177  * 1 : Only when device unlocked \n
178  */
179 #define BT_MO_EVEN_LOCKED 0
180 #define BT_MO_ONLY_UNLOCKED 1
181
182 #define BT_CVSD_CODEC_ID 1
183 #define BT_MSBC_CODEC_ID 2
184
185 #define BT_CVSD_CODEC_MASK 0x0001
186 #define BT_MSBC_CODEC_MASK 0x0002
187
188 #define BT_HFP_MSBC_VOICE                       0x0063
189 #define BT_HFP_CVSD_VOICE                       0x0060
190
191 #define BT_SOCKET_LEVEL                 274
192 #define BT_VOICE_NUM                    11
193
194 #define BT_SCO_PRTCL    2
195
196 #define HFP_CODEC_NEGOTIATION_TIMEOUT 3 /* 3 seconds */
197
198 #define BT_SCO_OPEN_DELAY_TIMER 1000 /*1000 milliseconds*/
199
200 /* AT+CSQ : Returns received signal strength indication.
201      Command response: +CSQ: <rssi>,<ber>
202     <ber> is not supported and has a constant value of 99, included for compatibility reasons.
203 */
204 #define BT_SIGNAL_QUALITY_BER 99
205
206 /*Length of the string used to send telephone number*/
207 #define BT_MAX_TEL_NUM_STRING 30
208
209 #define FUCNTION_CALLS
210 #ifdef FUCNTION_CALLS
211 #define FN_START        DBG("ENTER==>")
212 #define FN_END          DBG("EXIT===>")
213 #else
214 #define FN_START
215 #define FN_END
216 #endif
217
218 /* HS states */
219 typedef enum {
220         HEADSET_STATE_DISCONNECTED,
221         HEADSET_STATE_CONNECTING,
222         HEADSET_STATE_CONNECTED,
223         HEADSET_STATE_PLAY_IN_PROGRESS,
224         HEADSET_STATE_ON_CALL
225 } hs_state_t;
226
227 typedef enum {
228         HFP_STATE_MNGR_ERR_AG_FAILURE = 0,
229         HFP_STATE_MNGR_NO_PHONE_CONNECTION = 1,
230         HFP_STATE_MNGR_ERR_NOT_ALLOWED  = 3,
231         HFP_STATE_MNGR_ERR_NOT_SUPPORTED        = 4,
232         HFP_STATE_MNGR_ERR_SIM_BUSY     = 14,
233         HFP_STATE_MNGR_ERR_INVALID_INDEX        = 21,
234         HFP_STATE_MNGR_ERR_INVALID_CHAR_IN_STRING       = 25,
235         HFP_STATE_MNGR_ERR_NO_NETWORK_SERVICE   = 30,
236         HFP_STATE_MNGR_ERR_NONE = 0x8000
237 } hfp_state_manager_err_t;
238
239 typedef enum {
240         BT_AG_FEATURE_THREE_WAY_CALL                    = 0x0001,
241         BT_AG_FEATURE_EC_AND_NR                         = 0x0002,
242         BT_AG_FEATURE_VOICE_RECOGNITION                 = 0x0004,
243         BT_AG_FEATURE_INBAND_RINGTONE                   = 0x0008,
244         BT_AG_FEATURE_ATTACH_NUMBER_TO_VOICETAG         = 0x0010,
245         BT_AG_FEATURE_REJECT_CALL                       = 0x0020,
246         BT_AG_FEATURE_ENHANCED_CALL_STATUS              = 0x0040,
247         BT_AG_FEATURE_ENHANCED_CALL_CONTROL             = 0x0080,
248         BT_AG_FEATURE_EXTENDED_ERROR_RESULT_CODES       = 0x0100,
249         BT_AG_FEATURE_CODEC_NEGOTIATION                 = 0x0200,
250         BT_AG_FEATURE_HF_INDICATORS                     = 0x0400,
251         BT_AG_FEATURE_ESCO_S4_T2_SUPPORT                = 0x0800,
252 } bt_ag_agent_feature_t;
253
254 typedef enum {
255         BT_HF_FEATURE_EC_ANDOR_NR                       = 0x0001,
256         BT_HF_FEATURE_CALL_WAITING_AND_3WAY     = 0x0002,
257         BT_HF_FEATURE_CLI_PRESENTATION          = 0x0004,
258         BT_HF_FEATURE_VOICE_RECOGNITION         = 0x0008,
259         BT_HF_FEATURE_REMOTE_VOLUME_CONTROL     = 0x0010,
260         BT_HF_FEATURE_ENHANCED_CALL_STATUS              = 0x0020,
261         BT_HF_FEATURE_ENHANCED_CALL_CONTROL     = 0x0040,
262         BT_HF_FEATURE_CODEC_NEGOTIATION = 0x0080,
263 } bt_hf_agent_feature_t;
264
265 /* HFP AG service record bitmap. Bluetooth HFP 1.6 spec page 95 */
266 #define BT_AG_FEATURE_SDP_3WAY                  0x1
267 #define BT_AG_FEATURE_SDP_ECNR                  0x2
268 #define BT_AG_FEATURE_SDP_VOICE_RECOG           0x4
269 #define BT_AG_FEATURE_SDP_IN_BAND_RING_TONE     0x8
270 #define BT_AG_FEATURE_SDP_ATTACH_VOICE_TAG              0x10
271 #define BT_AG_FEATURE_SDP_WIDEBAND_SPEECH               0x20
272
273 #define BT_AG_AGENT_ERROR (__bt_ag_agent_error_quark())
274
275 #define BT_ERROR_INTERNAL "InternalError"
276 #define BT_ERROR_NOT_AVAILABLE "NotAvailable"
277 #define BT_ERROR_NOT_CONNECTED "NotConnected"
278 #define BT_ERROR_BUSY "InProgress"
279 #define BT_ERROR_INVALID_PARAM "InvalidArguments"
280 #define BT_ERROR_ALREADY_EXSIST "AlreadyExists"
281 #define BT_ERROR_ALREADY_CONNECTED "Already Connected"
282 #define BT_ERROR_NO_MEMORY "No memory"
283 #define BT_ERROR_I_O_ERROR "I/O error"
284 #define BT_ERROR_OPERATION_NOT_AVAILABLE "Operation currently not available"
285 #define BT_ERROR_BATTERY "Battery error "
286 #define BT_ERROR_SIGNAL "Signal error"
287 #define BT_ERROR_NO_CALL_LOG "No Call log"
288 #define BT_ERROR_INVLAID_DTMF "Invalid dtmf"
289
290 #define BT_CHECK_SIGNAL_STRENGTH(rssi) \
291         if (rssi >= VCONFKEY_TELEPHONY_RSSI_4) \
292                 rssi = VCONFKEY_TELEPHONY_RSSI_5
293
294 typedef enum {
295         BT_HFP_AGENT_ERROR_NONE,
296         BT_HFP_AGENT_ERROR_INTERNAL,
297         BT_HFP_AGENT_ERROR_NOT_AVAILABLE,
298         BT_HFP_AGENT_ERROR_NOT_CONNECTED,
299         BT_HFP_AGENT_ERROR_BUSY,
300         BT_HFP_AGENT_ERROR_INVALID_PARAM,
301         BT_HFP_AGENT_ERROR_ALREADY_EXSIST,
302         BT_HFP_AGENT_ERROR_ALREADY_CONNECTED,
303         BT_HFP_AGENT_ERROR_NO_MEMORY,
304         BT_HFP_AGENT_ERROR_I_O_ERROR,
305         BT_HFP_AGENT_ERROR_OPERATION_NOT_AVAILABLE,
306         BT_HFP_AGENT_ERROR_NO_CALL_LOGS,
307         BT_HFP_AGENT_ERROR_INVALID_MEMORY_INDEX,
308         BT_HFP_AGENT_ERROR_INVALID_CHLD_INDEX,
309         BT_HFP_AGENT_ERROR_BATTERY_STATUS,
310         BT_HFP_AGENT_ERROR_SIGNAL_STATUS,
311         BT_HFP_AGENT_ERROR_NOT_SUPPORTED,
312         BT_HFP_AGENT_ERROR_INVALID_NUMBER,
313         BT_HFP_AGENT_ERROR_APPLICATION,
314         BT_HFP_AGENT_ERROR_INVALID_DTMF,
315 } bt_hfp_agent_error_t;
316
317 typedef enum {
318         BT_AGENT_NETWORK_REG_STATUS_HOME,
319         BT_AGENT_NETWORK_REG_STATUS_ROAMING,
320         BT_AGENT_NETWORK_REG_STATUS_OFFLINE,
321         BT_AGENT_NETWORK_REG_STATUS_SEARCHING,
322         BT_AGENT_NETWORK_REG_STATUS_NO_SIM,
323         BT_AGENT_NETWORK_REG_STATUS_POWEROFF,
324         BT_AGENT_NETWORK_REG_STATUS_POWERSAFE,
325         BT_AGENT_NETWORK_REG_STATUS_NO_COVERAGE,
326         BT_AGENT_NETWORK_REG_STATUS_REJECTED,
327         BT_AGENT_NETWORK_REG_STATUS_UNKOWN,
328 } bt_hfp_agent_network_registration_status_t;
329
330 typedef enum {
331         BT_AGENT_NETWORK_REG_STATUS_NOT_REGISTER,
332         BT_AGENT_NETWORK_REG_STATUS_REGISTER_HOME_NETWORK,
333         BT_AGENT_NETWORK_REG_STATUS_SEARCH,
334         BT_AGENT_NETWORK_REG_STATUS_REGISTRATION_DENIED,
335         BT_AGENT_NETWORK_REG_STATUS_UNKNOWN,
336         BT_AGENT_NETWORK_REG_STATUS_REGISTERED_ROAMING,
337         BT_AGENT_NETWORK_REG_STATUS_REGISTERED_SMS_HOME,
338         BT_AGENT_NETWORK_REG_STATUS_REGISTERED_SMS_ROAMING,
339         BT_AGENT_NETWORK_REG_STATUS_EMERGENCY,
340         BT_AGENT_NETWORK_REG_STATUS_REGISTERED_CSFB_HOME,
341         BT_AGENT_NETWORK_REG_STATUS_REGISTERED_CSFB_ROAMING,
342 } bt_hfp_agent_reg_status_t;
343
344 #ifdef TIZEN_FEATURE_BT_MEDIA_ENHANCE
345 typedef enum media_transport_state {
346         MEDIA_TRANSPORT_STATE_DISCONNECTED,
347         MEDIA_TRANSPORT_STATE_IDLE,
348         MEDIA_TRANSPORT_STATE_PLAYING
349 } bt_ag_media_transport_state_t;
350
351 /* Profile states matched to btd_service_state_t of bluez service.h */
352 typedef enum {
353         BT_PROFILE_STATE_UNAVAILABLE,
354         BT_PROFILE_STATE_DISCONNECTED,
355         BT_PROFILE_STATE_CONNECTING,
356         BT_PROFILE_STATE_CONNECTED,
357         BT_PROFILE_STATE_DISCONNECTING,
358 } bt_profile_state_t;
359 #endif
360
361 #define retv_if(expr, val) \
362         do { \
363                 if (expr) { \
364                         ERR("(%s) return", #expr); \
365                         return (val); \
366                 } \
367         } while (0)
368
369 #define ret_if(expr) \
370         do { \
371                 if (expr) { \
372                         ERR("(%s) return", #expr); \
373                         return; \
374                 } \
375         } while (0)
376
377 typedef struct {
378         unsigned char b[6];
379 } __attribute__((packed)) bdaddr_t;
380
381 /* Remote socket address */
382 struct sockaddr_remote {
383         sa_family_t     family;
384         bdaddr_t        remote_bdaddr;
385         uint8_t         channel;
386 };
387
388 typedef struct {
389         const char *indicator_desc;
390         const char *indicator_range;
391         int hfp_value;
392         gboolean ignore;
393         gboolean is_activated;
394 } bt_ag_indicators_t;
395
396 typedef struct {
397         gboolean telephony_ready;       /* plugin initialized */
398         uint32_t features;            /* AG features */
399         const bt_ag_indicators_t *indicators;     /* Supported indicators */
400         int er_mode;               /* Event reporting mode */
401         int er_ind;                 /* Event reporting for indicators */
402         int rh;                 /* Response and Hold state */
403         char *number;             /* Incoming phone number */
404         int number_type;                /* Incoming number type */
405         guint ring_timer;               /* For incoming call indication */
406         const char *chld;               /* Response to AT+CHLD=? */
407         uint32_t sdp_features; /* SDP features */
408 } bt_ag_status_t;
409
410 typedef struct {
411         char buffer[MAX_BUFFER_SIZE];
412
413         int start;
414         int length;
415
416         gboolean is_nrec;
417         gboolean is_nrec_req;
418         gboolean is_pending_ring;
419         gboolean is_inband_ring;
420         gboolean is_cme_enabled;
421         gboolean is_cwa_enabled;
422         gboolean is_client_active;
423         gboolean is_voice_recognition_running;
424
425         int speaker_gain;
426         int microphone_gain;
427
428         unsigned int hs_features;
429 } bt_ag_slconn_t;
430
431 typedef struct {
432 /*      DBusMessage *msg;
433         DBusPendingCall *call;*/
434         GIOChannel *io;
435         int err;
436         hs_state_t target_state;
437         GSList *callbacks;
438         uint16_t svclass;
439 } hs_connecting_t;
440
441 typedef struct {
442         char *object_path;
443         gboolean is_negotiating;
444         gboolean requested_by_hf;
445         guint nego_timer;
446         unsigned int remote_codecs;
447         unsigned int sending_codec;
448         unsigned int final_codec;
449 } bt_negotiation_info_t;
450
451 typedef struct {
452         const char *path;
453         guint32 fd;
454
455         gboolean auto_connect;
456         GIOChannel *io_chan;
457         char *remote_addr;
458         guint watch_id;
459         GIOChannel *sco_server;
460         guint sco_watch_id;
461
462         GIOChannel *rfcomm;
463         GIOChannel *sco;
464         guint sco_id;
465         guint sco_incoming_id;
466         guint codec;
467
468         gboolean auto_dc;
469
470         guint dc_timer;
471
472         gboolean hfp_active;
473         gboolean search_hfp;
474         gboolean rfcomm_initiator;
475         gboolean vr_blacklisted;
476
477         hs_state_t state;
478         bt_ag_slconn_t *slc;
479         hs_connecting_t *pending;
480         GSList *nrec_cbs;
481         gboolean sco_server_started;
482         gboolean nrec_status;
483         bt_negotiation_info_t codec_info;
484 #if defined(TIZEN_SUPPORT_DUAL_HF)
485         gboolean is_companion_device;
486 #endif
487 } bt_ag_info_t;
488
489 typedef void (*headset_nrec_cb) (bt_ag_info_t *hs,
490                                         gboolean nrec,
491                                         void *user_data);
492
493 struct hs_nrec_callback {
494         unsigned int id;
495         headset_nrec_cb cb;
496         void *user_data;
497 };
498
499 typedef void (*hs_state_cb) (bt_ag_info_t *hs,
500                 hs_state_t old_state,
501                 hs_state_t new_state,
502                 void *user_data);
503
504 struct hs_state_callback {
505                 hs_state_cb cb;
506                 void *user_data;
507                 unsigned int id;
508 };
509
510 int __attribute__((format(printf, 2, 3)))
511                         _bt_ag_send_at(bt_ag_info_t *hs, char *format, ...);
512 void __attribute__((format(printf, 3, 4)))
513                 _bt_ag_send_foreach_headset(GSList *devices,
514                 int (*cmp) (bt_ag_info_t *hs),
515                 char *format, ...);
516 void _bt_ag_slconn_complete(bt_ag_info_t *hs);
517 int _bt_ag_send_response(bt_ag_info_t *hs, hfp_state_manager_err_t err);
518 void _bt_hfp_call_hold_request(const char *t_cmd, void *t_device);
519 void _bt_hfp_key_press_request(const char *t_key_press, void *t_device);
520 void _bt_hfp_terminate_call_request(void *t_device);
521 void _bt_hfp_answer_call_request(void *t_device);
522 void _bt_hfp_update_event_request(int indicator, void *t_device);
523 void _bt_hfp_response_and_hold_request(void *t_device);
524 void _bt_hfp_last_dialed_number_request(void *t_device);
525 void _bt_hfp_dial_number_request(const char *dial_number, void *t_device);
526 void _bt_hfp_channel_dtmf_request(char t_tone, void *t_device);
527 void _bt_hfp_subscriber_number_request(void *t_device);
528 void _bt_hfp_get_operator_selection_request(void *t_device);
529 void _bt_hfp_noise_red_and_echo_cancel_request(gboolean t_enable,
530                         void *t_device);
531 void _bt_hfp_voice_dial_request(gboolean t_enable, void *t_device);
532 void _bt_hfp_set_indicators(const char *t_command, void *t_device);
533 void _bt_hfp_select_phonebook_memory_status(void *t_device);
534 void _bt_hfp_select_phonebook_memory_list(void *t_device);
535 void _bt_hfp_select_phonebook_memory(void *t_device, const gchar *pb_path);
536 void _bt_hfp_read_phonebook_entries_list(void *t_device);
537 void _bt_hfp_read_phonebook_entries(void *t_device, const char *cmd);
538 void _bt_hfp_find_phonebook_entries_status(void *t_device);
539 void _bt_hfp_find_phonebook_entries(void *t_device, const char *cmd);
540 void _bt_hfp_get_character_set(void *t_device);
541 void _bt_hfp_list_supported_character(void *t_device);
542 void _bt_hfp_set_character_set(void *t_device, const char *cmd);
543 void _bt_hfp_get_battery_property(void *t_device);
544 void _bt_hfp_signal_quality_reply(int32_t rssi, int32_t ber,
545         void *t_device);
546 void _bt_hfp_battery_property_reply(void *data, int32_t bcs,
547                         int32_t bcl);
548 void _bt_hfp_operator_reply(char *operator_name,  void *t_device);
549 bt_hfp_agent_error_t _bt_ag_agent_dial_num(const gchar *number, guint flags);
550 bt_hfp_agent_error_t _bt_ag_agent_dial_last_num(void *device);
551 bt_hfp_agent_error_t _bt_ag_agent_send_dtmf(const gchar *dtmf,
552                                 const gchar *path, const gchar *sender);
553 bt_hfp_agent_error_t _bt_ag_agent_dial_memory(unsigned int location);
554 gboolean _bt_ag_agent_get_signal_quality(void *device);
555 gboolean _bt_ag_agent_get_battery_status(void *device);
556 gboolean _bt_ag_agent_get_operator_name(void *device);
557 gboolean _bt_hfp_agent_nrec_status(gboolean status,
558         void *t_device);
559 gboolean _bt_ag_agent_voice_dial(gboolean activate);
560 gboolean _bt_ag_agent_answer_call(unsigned int call_id,
561                                 const gchar *path, const gchar *sender);
562 gboolean _bt_ag_agent_reject_call(unsigned int call_id,
563                                 const gchar *path, const gchar *sender);
564 gboolean _bt_ag_agent_release_call(unsigned int call_id,
565                                 const gchar *path, const gchar *sender);
566 gboolean _bt_ag_agent_threeway_call(unsigned int chld_value,
567                                 const gchar *path, const gchar *sender);
568 void _bt_list_current_calls(void *t_device);
569 void _bt_get_activity_status(void *t_device);
570 int _bt_hfp_set_property_name(const char *property, const char *operator_name);
571 void _bt_hfp_get_imei_number_reply(char *imei_number,  void *t_device);
572 void _bt_hfp_get_model_info_reply(char *model,  void *t_device);
573 void _bt_hfp_get_device_manufacturer_reply(char *manufacturer,  void *t_device);
574 void _bt_hfp_get_revision_info_reply(char *revision,  void *t_device);
575 void _bt_hfp_device_disconnected(void *t_device);
576 int _bt_hfp_get_equipment_identity(bt_ag_info_t *device, const char *buf);
577 int _bt_hfp_get_model_information(bt_ag_info_t *device, const char *buf);
578 int _bt_hfp_get_device_manufacturer(bt_ag_info_t *device, const char *buf);
579 int _bt_hfp_get_imsi(bt_ag_info_t *device, const char *buf);
580 int _bt_hfp_get_creg_status(bt_ag_info_t *device, const char *buf);
581 int _bt_hfp_get_revision_information(bt_ag_info_t *device, const char *buf);
582 void _bt_hfp_get_equipment_identity_req(void *t_device);
583 bt_hfp_agent_error_t _bt_hfp_register_telephony_agent(gboolean register_flag,
584                 const char *path_to_register,
585                 const char *sender);
586 bt_hfp_agent_error_t _bt_hfp_incoming_call(const char *call_path,
587                 const char *incoming_number,
588                 uint32_t incoming_call_id,
589                 const char *sender);
590 bt_hfp_agent_error_t _bt_hfp_outgoing_call(const char *call_path,
591                 const char *number,
592                 uint32_t call_id, const char *sender);
593 bt_hfp_agent_error_t _bt_hfp_change_call_status(const char *call_path,
594                 const char *number,
595                 uint32_t call_status,
596                 uint32_t call_id,
597                 const char *sender);
598 void _bt_hfp_initialize_telephony_manager(uint32_t ag_features);
599 void _bt_hfp_deinitialize_telephony_manager(void);
600 gboolean _bt_ag_agent_emit_property_changed(
601                                 GDBusConnection *connection,
602                                 const char *path,
603                                 const char *interface,
604                                 const char *name,
605                                 GVariant *property);
606 void _bt_hfp_get_model_info_req(void *t_device);
607 void _bt_hfp_get_device_manufacturer_req(void *t_device);
608 void _bt_hfp_get_imsi_req(void *t_device);
609 void _bt_hfp_get_creg_status_req(void *t_device);
610 void _bt_hfp_get_revision_info_req(void *t_device);
611 gboolean _bt_hfp_is_call_exist(void);
612 void _bt_hfp_release_all_calls_by_sender(const char *sender);
613 void _bt_hfp_get_imsi_reply(char *mcc, char *mnc, char *msin, void *t_device);
614 void _bt_hfp_get_creg_status_reply(int n, int status, void *t_device);
615 int _bt_hfp_set_property_value(const char *property, int value);
616 void _bt_hfp_vendor_cmd_request(const char *cmd,
617                                                 void *t_device);
618
619 gboolean _bt_ag_agent_get_imei_number(void *device);
620 void _bt_ag_agent_get_model_name(void *device);
621 void _bt_ag_agent_get_manufacturer_name(void *device);
622 void _bt_ag_agent_get_imsi(void *device);
623 void _bt_ag_agent_get_creg_status(void *device);
624 void _bt_ag_agent_get_revision_information(void *device);
625 bt_hfp_agent_error_t _bt_ag_agent_vendor_cmd(const gchar *cmd,
626                 const gchar *path, const gchar *sender);
627 #ifdef TIZEN_FEATURE_BT_MEDIA_ENHANCE
628 void _bt_ag_agent_check_transport_state(void);
629 #endif
630
631 #endif /* __DEF_BT_AG_AGENT_H_ */