2 * This file is part of samsung-ril.
4 * Copyright (C) 2010-2011 Joerie de Gram <j.de.gram@gmail.com>
5 * Copyright (C) 2011 Paul Kocialkowski <contact@oaulk.fr>
7 * samsung-ril is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
12 * samsung-ril is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with samsung-ril. If not, see <http://www.gnu.org/licenses/>.
22 #ifndef _SAMSUNG_RIL_H_
23 #define _SAMSUNG_RIL_H_
27 #include <telephony/ril.h>
37 #define RIL_CLIENT_LOCK(client) pthread_mutex_lock(&(client->mutex));
38 #define RIL_CLIENT_UNLOCK(client) pthread_mutex_unlock(&(client->mutex));
40 #define RIL_onRequestCompleteReal(t, e, response, responselen) ril_env->OnRequestComplete(t,e, response, responselen)
41 #define RIL_onUnsolicitedResponse(a,b,c) ril_env->OnUnsolicitedResponse(a,b,c)
42 #define RIL_requestTimedCallback(a,b,c) ril_env->RequestTimedCallback(a,b,c)
44 #define reqIdNew() ril_request_id_new()
45 #define reqGetId(t) ril_request_get_id(t)
46 #define reqGetToken(i) ril_request_get_token(i)
61 extern struct ril_client *ipc_fmt_client;
62 extern struct ril_client *ipc_rfs_client;
63 extern struct ril_client *srs_client;
65 extern const struct RIL_Env *ril_env;
66 extern struct ril_state ril_state;
72 typedef int (*ril_client_func)(struct ril_client *client);
76 RIL_CLIENT_CREATED = 1,
78 RIL_CLIENT_DESTROYED = 3,
84 ril_client_func create;
85 ril_client_func destroy;
86 ril_client_func read_loop;
91 pthread_mutex_t mutex;
93 ril_client_state state;
96 struct ril_client_funcs {
97 ril_client_func create;
98 ril_client_func destroy;
99 ril_client_func read_loop;
102 struct ril_client *ril_client_new(struct ril_client_funcs *client_funcs);
103 int ril_client_free(struct ril_client *client);
104 int ril_client_create(struct ril_client *client);
105 int ril_client_destroy(struct ril_client *client);
106 int ril_client_thread_start(struct ril_client *client);
112 struct ril_request_token {
117 void ril_requests_tokens_init(void);
118 int ril_request_reg_id(RIL_Token token);
119 int ril_request_get_id(RIL_Token token);
120 RIL_Token ril_request_get_token(int id);
121 int ril_request_get_canceled(RIL_Token token);
122 void ril_request_set_canceled(RIL_Token token, int canceled);
124 void RIL_onRequestComplete(RIL_Token t, RIL_Errno e, void *response, size_t responselen);
131 RIL_Token radio_power;
133 RIL_Token get_imeisv;
134 RIL_Token baseband_version;
136 RIL_Token registration_state;
137 RIL_Token gprs_registration_state;
141 void ril_tokens_check(void);
154 SIM_NETWORK_PERSO = 6,
155 SIM_NETWORK_SUBSET_PERSO = 7,
156 SIM_CORPORATE_PERSO = 8,
157 SIM_SERVICE_PROVIDER_PERSO = 9,
162 POWER_MODE_NORMAL = 2,
163 POWER_MODE_SIM_INIT_COMPLETE = 4,
167 RIL_RadioState radio_state;
168 RIL_CardState card_state;
169 SIM_Status sim_status;
170 Modem_PowerMode power_mode;
172 struct ril_tokens tokens;
174 struct ipc_net_regist netinfo;
175 struct ipc_net_regist gprs_netinfo;
176 struct ipc_net_current_plmn plmndata;
178 struct ipc_gprs_pdp_context gprs_context;
180 unsigned char ussd_state;
183 void ril_globals_init(void);
184 void ril_state_lpm(void);
185 int ril_modem_check(void);
188 * Clients dispatch functions
191 void ipc_fmt_dispatch(struct ipc_message_info *info);
192 void ipc_rfs_dispatch(struct ipc_message_info *info);
193 void srs_dispatch(struct srs_message *message);
197 struct ipc_gen_phone_res_expect {
199 unsigned short command;
200 void (*func)(struct ipc_message_info *info);
205 void ipc_gen_phone_res_expects_init(void);
206 void ipc_gen_phone_res_expect_to_func(unsigned char aseq, unsigned short command,
207 void (*func)(struct ipc_message_info *info));
208 void ipc_gen_phone_res_expect_to_complete(unsigned char aseq, unsigned short command);
209 void ipc_gen_phone_res_expect_to_abort(unsigned char aseq, unsigned short command);
210 void ipc_gen_phone_res(struct ipc_message_info *info);
213 void ipc_pwr_phone_pwr_up(void);
214 void ipc_pwr_phone_state(struct ipc_message_info *info);
215 void ril_request_radio_power(RIL_Token t, void *data, size_t datalen);
218 void ipc_disp_icon_info(struct ipc_message_info *info);
219 void ipc_disp_rssi_info(struct ipc_message_info *info);
222 void ril_request_get_imei(RIL_Token t);
223 void ril_request_get_imeisv(RIL_Token t);
224 void ipc_misc_me_sn(struct ipc_message_info *info);
225 void ril_request_baseband_version(RIL_Token t);
226 void ipc_misc_me_version(struct ipc_message_info *info);
227 void ril_request_get_imsi(RIL_Token t);
228 void ipc_misc_me_imsi(struct ipc_message_info *info);
229 void ipc_misc_time_info(struct ipc_message_info *info);
232 void respondSatProactiveCmd(struct ipc_message_info *request);
233 void requestSatSendTerminalResponse(RIL_Token t, void *data, size_t datalen);
234 void requestSatSendEnvelopeCommand(RIL_Token t, void *data, size_t datalen);
235 void respondSatEnvelopeCmd(struct ipc_message_info *request);
239 void ril_request_send_ussd(RIL_Token t, void *data, size_t datalen);
240 void ril_request_cancel_ussd(RIL_Token t, void *data, size_t datalen);
241 void ipc_ss_ussd(struct ipc_message_info *info);
244 void ipc_sec_pin_status(struct ipc_message_info *info);
245 void ril_request_sim_status(RIL_Token t);
246 void ril_request_sim_io(RIL_Token t, void *data, size_t datalen);
247 void ipc_sec_rsim_access(struct ipc_message_info *info);
248 void ril_request_enter_sim_pin(RIL_Token t, void *data, size_t datalen);
249 void ipc_sec_pin_status_complete(struct ipc_message_info *info);
250 void ipc_sec_lock_info(struct ipc_message_info *info);
251 void ril_request_query_facility_lock(RIL_Token t, void *data, size_t datalen);
252 void ipc_sec_phone_lock(struct ipc_message_info *info);
253 void ril_request_set_facility_lock(RIL_Token t, void *data, size_t datalen);
256 void ril_plmn_split(char *plmn_data, char **plmn, unsigned int *mcc, unsigned int *mnc);
257 void ril_plmn_string(char *plmn_data, char *response[3]);
258 unsigned char ril_plmn_act_get(char *plmn_data);
259 void ril_request_operator(RIL_Token t);
260 void ipc_net_current_plmn(struct ipc_message_info *message);
261 void ril_request_registration_state(RIL_Token t);
262 void ril_request_gprs_registration_state(RIL_Token t);
263 void ipc_net_regist(struct ipc_message_info *message);
264 void ril_request_query_available_networks(RIL_Token t);
265 void ipc_net_plmn_list(struct ipc_message_info *info);
266 void ril_request_get_preferred_network_type(RIL_Token t);
267 void ril_request_set_preferred_network_type(RIL_Token t, void *data, size_t datalen);
268 void ipc_net_mode_sel(struct ipc_message_info *info);
269 void ril_request_query_network_selection_mode(RIL_Token t);
270 void ipc_net_plmn_sel(struct ipc_message_info *info);
271 void ril_request_set_network_selection_automatic(RIL_Token t);
272 void ril_request_set_network_selection_manual(RIL_Token t, void *data, size_t datalen);
275 struct ril_request_sms {
284 void ril_request_sms_init(void);
285 void ril_request_sms_del(int id);
286 void ril_request_sms_clear(int id);
287 int ril_request_sms_add(unsigned char aseq,
288 char *pdu, int pdu_len,
289 char *smsc, int smsc_len);
290 int ril_request_sms_get_id(unsigned char aseq);
291 int ril_request_sms_get_next(void);
292 int ril_request_sms_lock_acquire(void);
293 void ril_request_sms_lock_release(void);
295 void ril_request_send_sms(RIL_Token t, void *data, size_t datalen);
296 void ril_request_send_sms_expect_more(RIL_Token t, void *data, size_t datalen);
297 int ril_request_send_sms_next(void);
298 void ril_request_send_sms_complete(RIL_Token t, char *pdu, char *smsc);
299 void ipc_sms_send_msg_complete(struct ipc_message_info *info);
300 void ipc_sms_svc_center_addr(struct ipc_message_info *info);
301 void ipc_sms_send_msg(struct ipc_message_info *info);
303 void ipc_sms_tpid_queue_init(void);
304 void ipc_sms_tpid_queue_del(int id);
305 int ipc_sms_tpid_queue_add(unsigned char sms_tpid);
306 int ipc_sms_tpid_queue_get_next(void);
308 void ipc_sms_incoming_msg(struct ipc_message_info *info);
309 void ril_request_sms_acknowledge(RIL_Token t, void *data, size_t datalen);
310 void ipc_sms_deliver_report(struct ipc_message_info *info);
312 void ipc_sms_device_ready(struct ipc_message_info *info);
315 void ipc_call_incoming(struct ipc_message_info *info);
316 void ipc_call_status(struct ipc_message_info *info);
317 void ril_request_dial(RIL_Token t, void *data, size_t datalen);
318 void ril_request_get_current_calls(RIL_Token t);
319 void ipc_call_list(struct ipc_message_info *info);
320 void ril_request_hangup(RIL_Token t);
321 void ril_request_answer(RIL_Token t);
322 void ril_request_dtmf(RIL_Token t, void *data, int length);
323 void ipc_call_burst_dtmf(struct ipc_message_info *info);
324 void ril_request_dtmf_start(RIL_Token t, void *data, int length);
325 void ril_request_dtmf_stop(RIL_Token t);
329 void ril_request_set_mute(RIL_Token t, void *data, size_t datalen);
330 void srs_snd_set_call_clock_sync(struct srs_message *message);
331 void srs_snd_set_call_volume(struct srs_message *message);
332 void srs_snd_set_call_audio_path(struct srs_message *message);
336 void ril_request_setup_data_call(RIL_Token t, void *data, int length);
337 void ril_request_deactivate_data_call(RIL_Token t, void *data, int length);
338 void ipc_gprs_ip_configuration(struct ipc_message_info *info);
342 void ipc_rfs_nv_read_item(struct ipc_message_info *info);
343 void ipc_rfs_nv_write_item(struct ipc_message_info *info);