96bd7f3b2efb6b5044581faa78dda246fefc0de6
[platform/core/connectivity/bluetooth-agent.git] / ag-agent / bluetooth-ag-handler.h
1 /*
2  * bluetoth-ag-handler.h
3  *
4  * Copyright (c) 2014 - 2015 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 #include <stdio.h>
26 #include <stdint.h>
27 #include <stdlib.h>
28 #include <glib.h>
29 #include "bluetooth-ag-agent.h"
30
31 #define BT_HFP_SPEAKER_GAIN 'S'
32 #define BT_HFP_MICROPHONE_GAIN 'M'
33
34 #define AG_RING_INTERVAL 1500
35
36 typedef struct {
37         gboolean wbs_enable;
38         uint8_t i2s_enable;
39         uint8_t is_master;
40         uint8_t clock_rate;
41         uint8_t pcm_interface_rate;
42 } wbs_options;
43
44 /* BD Address */
45 typedef struct {
46         uint8_t b[6];
47 } __attribute__((packed)) bt_addr;
48
49 int _bt_hfp_supported_features(bt_ag_info_t *hs, const char *buf);
50 int _bt_hfp_report_indicators(bt_ag_info_t *hs, const char *buf);
51 int _bt_hfp_enable_indicators(bt_ag_info_t *hdset, const char *buffer);
52 int _bt_hfp_call_hold(bt_ag_info_t *hs, const char *buf);
53 int _bt_hfp_answer_call(bt_ag_info_t *hs, const char *buf);
54 int _bt_hfp_dial_number(bt_ag_info_t *hs, const char *buf);
55 int _bt_hfp_signal_gain_setting(bt_ag_info_t *hs, const char *buf);
56 int _bt_hfp_terminate_call(bt_ag_info_t *hs, const char *buf);
57 int _bt_hfp_key_press(bt_ag_info_t *hs, const char *buf);
58 int _bt_hfp_last_dialed_number(bt_ag_info_t *hs, const char *buf);
59 int _bt_hfp_response_and_hold(bt_ag_info_t *hs, const char *buf);
60 int _bt_hfp_cli_notification(bt_ag_info_t *hs, const char *buf);
61 int _bt_hfp_dtmf_tone(bt_ag_info_t *hs, const char *buf);
62 int _bt_hfp_subscriber_number(bt_ag_info_t *hs, const char *buf);
63 int _bt_hfp_list_current_calls(bt_ag_info_t *hs, const char *buf);
64 int _bt_hfp_extended_errors(bt_ag_info_t *hs, const char *buf);
65 int _bt_hfp_call_waiting_notify(bt_ag_info_t *hs, const char *buf);
66 int _bt_hfp_operator_selection(bt_ag_info_t *hs, const char *buf);
67 int _bt_hfp_nr_and_ec(bt_ag_info_t *hs, const char *buf);
68 int _bt_hfp_voice_dial(bt_ag_info_t *hs, const char *buf);
69 int _bt_hfp_apl_command(bt_ag_info_t *hs, const char *buf);
70 int _bt_hfp_apl_command(bt_ag_info_t *hs, const char *buf);
71 int _bt_hfp_indicators_activation(bt_ag_info_t *hs, const char *buf);
72 int _bt_hfp_select_pb_memory(bt_ag_info_t *hs, const char *buf);
73 int _bt_hfp_read_pb_entries(bt_ag_info_t *hs, const char *buf);
74 int _bt_hfp_select_character_set(bt_ag_info_t *hs, const char *buf);
75 int _bt_hfp_find_pb_entires(bt_ag_info_t *hs, const char *buf);
76 int _bt_hfp_get_signal_quality(bt_ag_info_t *hs, const char *buf);
77 int _bt_hfp_get_battery_charge_status(bt_ag_info_t *hs, const char *buf);
78 int _bt_calling_stopped_indicator(void);
79 int _bt_incoming_call_indicator(const char *number, int type);
80 int _bt_call_waiting_indicator(const char *number, int type);
81 void _bt_hfp_deinitialize(void);
82 gboolean __bt_ring_timer_cb(gpointer data);
83 bt_hfp_agent_error_t _bt_hfp_event_indicator(int index);
84 void _bt_hfp_set_ag_indicator(uint32_t ag_features,
85                                 const bt_ag_indicators_t *ag_indicators,
86                                 int rh, const char *chld);
87 int _bt_calling_stopped_indicator(void);
88 int _bt_incoming_call_indicator(const char *number, int type);
89 int _bt_dial_number_response(void *t_device, bt_hfp_agent_error_t err);
90 int _bt_event_reporting_response(void *t_device,
91                                 bt_hfp_agent_error_t err);
92 int _bt_terminate_call_response(void *t_device,
93                                 hfp_state_manager_err_t err);
94 int _bt_call_hold_response(void *t_device, bt_hfp_agent_error_t err);
95 int _bt_key_press_response(void *t_device, bt_hfp_agent_error_t err);
96 int _bt_subscriber_number_indicator(const char *call_num,
97                                 int type, int service);
98 int _bt_subscriber_number_response(void *t_device,
99                                         bt_hfp_agent_error_t err);
100 int _bt_list_current_call_indicator(bt_ag_info_t *hs, int index, int direction,
101         int mode, int status, const char *call_num, int conference, int t_num);
102 int _bt_list_current_calls_response(void *t_device,
103                                         bt_hfp_agent_error_t err);
104 int _bt_nr_and_ec_response(void *t_device, bt_hfp_agent_error_t err);
105 int _bt_voice_dial_response(void *t_device, bt_hfp_agent_error_t err);
106 int _bt_indicators_activation_response(void *t_device,
107                                         bt_hfp_agent_error_t err);
108 int _bt_select_phonebook_memory_status_response(void *t_device,
109                                                 const char *path,
110                                                 uint32_t total, uint32_t used,
111                                                 bt_hfp_agent_error_t err);
112 int _bt_select_phonebook_memory_list_response(void *t_device,
113                                                 const char *buf,
114                                                 bt_hfp_agent_error_t err);
115 int _bt_select_phonebook_memory_response(void *t_device,
116                                                 bt_hfp_agent_error_t err);
117 int _bt_read_phonebook_entries_list_response(void *t_device,
118                                                 uint32_t used,
119                                                 uint32_t number_length,
120                                                 uint32_t name_length,
121                                                 bt_hfp_agent_error_t err);
122 int _bt_read_phonebook_entries_response(void *t_device,
123                                         bt_hfp_agent_error_t err);
124 int _bt_find_phonebook_entries_status_indicator(uint32_t number_length,
125                                         uint32_t name_length);
126 int _bt_find_phonebook_entries_status_response(void *t_device,
127                                                 bt_hfp_agent_error_t err);
128 int _bt_supported_character_generic_response(void *t_device,
129                                                 char *character_set_list,
130                                                 bt_hfp_agent_error_t err);
131 int _bt_set_characterset_generic_response(void *t_device,
132                                         bt_hfp_agent_error_t err);
133 int _bt_signal_quality_response(void *t_device,
134                                                 int32_t rssi,
135                                                 int32_t ber,
136                                                 bt_hfp_agent_error_t err);
137 int _bt_battery_charge_status_response(void *t_device,
138                                                 int32_t bcs,
139                                                 int32_t bcl,
140                                                 bt_hfp_agent_error_t err);
141 int _bt_operator_selection_indicator(int mode, const char *oper);
142 int _bt_operator_selection_response(void *t_device,
143                                         bt_hfp_agent_error_t err);
144 int _bt_transmit_dtmf_response(void *t_device,
145                         bt_hfp_agent_error_t err);
146 int _bt_find_phonebook_entries_response(void *t_device,
147                                         bt_hfp_agent_error_t err);
148 int _bt_response_and_hold_response(void *t_device,
149                                         bt_hfp_agent_error_t err);
150 int _bt_answer_call_response(void *hs, bt_hfp_agent_error_t err);
151 int _bt_read_phonebook_entries_indicator(const char *name,
152                                         const char *number,
153                                         uint32_t handle);
154 int _bt_hfp_get_activity_status_rsp(void *t_device,
155                                                 int status,
156                                                 bt_hfp_agent_error_t err);
157 int _bt_hfp_get_activity_status(bt_ag_info_t *device, const char *buf);
158 int _bt_hfp_set_speaker_gain(bt_ag_info_t *hs,
159                 uint16_t gain_value);
160 int _bt_hfp_set_microphone_gain(bt_ag_info_t *hs,
161                 uint16_t gain_value);
162 int _bt_hfp_set_voice_dial(bt_ag_info_t *hs,
163                 gboolean enable);
164 int _bt_hfp_get_equipment_identity_rsp(void *t_device,
165                                 char *identity, bt_hfp_agent_error_t err);
166 int _bt_hfp_get_imsi_rsp(void *t_device,
167                 char *mcc, char *mnc, char *msin, bt_hfp_agent_error_t err);
168 int _bt_hfp_get_creg_status_rsp(void *t_device,
169                 int n, int status, bt_hfp_agent_error_t err);
170 int _bt_hfp_get_model_info_rsp(void *t_device,
171                                 char *model, bt_hfp_agent_error_t err);
172 int _bt_hfp_get_device_manufacturer_rsp(void *t_device,
173                                 char *manufacturer, bt_hfp_agent_error_t err);
174 int _bt_hfp_get_revision_info_rsp(void *t_device,
175                                 char *revision, bt_hfp_agent_error_t err);
176 int _bt_hfp_vendor_cmd(bt_ag_info_t *hs, const char *buf);
177 int _bt_hfp_send_vendor_cmd(bt_ag_info_t *hs,
178                 const char *cmd);
179 int _bt_vendor_cmd_response(void *t_device, bt_hfp_agent_error_t err);