Update AG and HF agent codes from wearable product
[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_hfp_select_phonebook_memory_status_reply(bt_ag_info_t *hs);
88 int _bt_calling_stopped_indicator(void);
89 int _bt_incoming_call_indicator(const char *number, int type);
90 int _bt_dial_number_response(void *t_device, bt_hfp_agent_error_t err);
91 int _bt_event_reporting_response(void *t_device,
92                                 bt_hfp_agent_error_t err);
93 int _bt_terminate_call_response(void *t_device,
94                                 hfp_state_manager_err_t err);
95 int _bt_call_hold_response(void *t_device, bt_hfp_agent_error_t err);
96 int _bt_key_press_response(void *t_device, bt_hfp_agent_error_t err);
97 int _bt_subscriber_number_indicator(const char *call_num,
98                                 int type, int service);
99 int _bt_subscriber_number_response(void *t_device,
100                                         bt_hfp_agent_error_t err);
101 int _bt_list_current_call_indicator(bt_ag_info_t *hs, int index, int direction,
102         int mode, int status, const char *call_num, int conference, int t_num);
103 int _bt_list_current_calls_response(void *t_device,
104                                         bt_hfp_agent_error_t err);
105 int _bt_nr_and_ec_response(void *t_device, bt_hfp_agent_error_t err);
106 int _bt_voice_dial_response(void *t_device, bt_hfp_agent_error_t err);
107 int _bt_indicators_activation_response(void *t_device,
108                                         bt_hfp_agent_error_t err);
109 int _bt_select_phonebook_memory_status_response(void *t_device,
110                                                 const char *path,
111                                                 uint32_t total, uint32_t used,
112                                                 bt_hfp_agent_error_t err);
113 int _bt_select_phonebook_memory_list_response(void *t_device,
114                                                 const char *buf,
115                                                 bt_hfp_agent_error_t err);
116 int _bt_select_phonebook_memory_response(void *t_device,
117                                                 bt_hfp_agent_error_t err);
118 int _bt_read_phonebook_entries_list_response(void *t_device,
119                                                 uint32_t used,
120                                                 uint32_t number_length,
121                                                 uint32_t name_length,
122                                                 bt_hfp_agent_error_t err);
123 int _bt_read_phonebook_entries_response(void *t_device,
124                                         bt_hfp_agent_error_t err);
125 int _bt_find_phonebook_entries_status_indicator(uint32_t number_length,
126                                         uint32_t name_length);
127 int _bt_find_phonebook_entries_status_response(void *t_device,
128                                                 bt_hfp_agent_error_t err);
129 int _bt_supported_character_generic_response(void *t_device,
130                                                 char *character_set_list,
131                                                 bt_hfp_agent_error_t err);
132 int _bt_set_characterset_generic_response(void *t_device,
133                                         bt_hfp_agent_error_t err);
134 int _bt_signal_quality_response(void *t_device,
135                                                 int32_t rssi,
136                                                 int32_t ber,
137                                                 bt_hfp_agent_error_t err);
138 int _bt_battery_charge_status_response(void *t_device,
139                                                 int32_t bcs,
140                                                 int32_t bcl,
141                                                 bt_hfp_agent_error_t err);
142 int _bt_operator_selection_indicator(int mode, const char *oper);
143 int _bt_operator_selection_response(void *t_device,
144                                         bt_hfp_agent_error_t err);
145 int _bt_transmit_dtmf_response(void *t_device,
146                         bt_hfp_agent_error_t err);
147 int _bt_find_phonebook_entries_response(void *t_device,
148                                         bt_hfp_agent_error_t err);
149 int _bt_read_phonebook_entries_indicator(const char *name, const char *number,
150                                         uint32_t handle);
151 int _bt_response_and_hold_response(void *t_device,
152                                         bt_hfp_agent_error_t err);
153 int _bt_answer_call_response(void *hs, bt_hfp_agent_error_t err);
154 int _bt_read_phonebook_entries_indicator(const char *name,
155                                         const char *number,
156                                         uint32_t handle);
157 int _bt_read_phonebook_entries_indicator_by_name(const char *name,
158                                         const char *number,
159                                         uint32_t handle);
160 int _bt_hfp_get_activity_status_rsp(void *t_device,
161                                                 int status,
162                                                 bt_hfp_agent_error_t err);
163 int _bt_hfp_get_activity_status(bt_ag_info_t *device, const char *buf);
164 int _bt_hfp_set_speaker_gain(bt_ag_info_t *hs,
165                 uint16_t gain_value);
166 int _bt_hfp_set_microphone_gain(bt_ag_info_t *hs,
167                 uint16_t gain_value);
168 int _bt_hfp_set_voice_dial(bt_ag_info_t *hs,
169                 gboolean enable);
170 int _bt_hfp_get_equipment_identity_rsp(void *t_device,
171                                 char *identity, bt_hfp_agent_error_t err);
172 int _bt_hfp_get_imsi_rsp(void *t_device,
173                 char *mcc, char *mnc, char *msin, bt_hfp_agent_error_t err);
174 int _bt_hfp_get_creg_status_rsp(void *t_device,
175                 int n, int status, bt_hfp_agent_error_t err);
176 int _bt_hfp_get_model_info_rsp(void *t_device,
177                                 char *model, bt_hfp_agent_error_t err);
178 int _bt_hfp_get_device_manufacturer_rsp(void *t_device,
179                                 char *manufacturer, bt_hfp_agent_error_t err);
180 int _bt_hfp_get_revision_info_rsp(void *t_device,
181                                 char *revision, bt_hfp_agent_error_t err);
182 int _bt_hfp_vendor_cmd(bt_ag_info_t *hs, const char *buf);
183 int _bt_hfp_send_vendor_cmd(bt_ag_info_t *hs,
184                 const char *cmd);
185 int _bt_vendor_cmd_response(void *t_device, bt_hfp_agent_error_t err);