Fix TC-2372 Dialer crashes when BT phone is offline
[profile/ivi/lemolo.git] / utils / ofono.h
1 #ifndef _EFL_OFONO_H__
2 #define _EFL_OFONO_H__
3
4 typedef enum
5 {
6         OFONO_API_SIM =         (1 <<  0),
7         OFONO_API_NETREG =      (1 <<  1),
8         OFONO_API_VOICE =       (1 <<  2),
9         OFONO_API_MSG =         (1 <<  3),
10         OFONO_API_MSG_WAITING = (1 <<  4),
11         OFONO_API_SMART_MSG =   (1 <<  5),
12         OFONO_API_STK =         (1 <<  6),
13         OFONO_API_CALL_FW =     (1 <<  7),
14         OFONO_API_CALL_VOL =    (1 <<  8),
15         OFONO_API_CALL_METER =  (1 <<  9),
16         OFONO_API_CALL_SET =    (1 << 10),
17         OFONO_API_CALL_BAR =    (1 << 11),
18         OFONO_API_SUPPL_SERV =  (1 << 12),
19         OFONO_API_TXT_TEL =     (1 << 13),
20         OFONO_API_CELL_BROAD =  (1 << 14),
21         OFONO_API_CONNMAN =     (1 << 15),
22         OFONO_API_PUSH_NOTIF =  (1 << 16),
23         OFONO_API_PHONEBOOK =   (1 << 17),
24         OFONO_API_ASN =         (1 << 18)
25 } OFono_API;
26
27 typedef enum
28 {
29         OFONO_ERROR_NONE = 0,
30         OFONO_ERROR_FAILED,
31         OFONO_ERROR_DOES_NOT_EXIST,
32         OFONO_ERROR_IN_PROGRESS,
33         OFONO_ERROR_IN_USE,
34         OFONO_ERROR_INVALID_ARGS,
35         OFONO_ERROR_INVALID_FORMAT,
36         OFONO_ERROR_ACCESS_DENIED,
37         OFONO_ERROR_ATTACH_IN_PROGRESS,
38         OFONO_ERROR_INCORRECT_PASSWORD,
39         OFONO_ERROR_NOT_ACTIVE,
40         OFONO_ERROR_NOT_ALLOWED,
41         OFONO_ERROR_NOT_ATTACHED,
42         OFONO_ERROR_NOT_AVAILABLE,
43         OFONO_ERROR_NOT_FOUND,
44         OFONO_ERROR_NOT_IMPLEMENTED,
45         OFONO_ERROR_NOT_RECOGNIZED,
46         OFONO_ERROR_NOT_REGISTERED,
47         OFONO_ERROR_NOT_SUPPORTED,
48         OFONO_ERROR_SIM_NOT_READY,
49         OFONO_ERROR_STK,
50         OFONO_ERROR_TIMEDOUT,
51         OFONO_ERROR_OFFLINE
52 } OFono_Error;
53
54 typedef enum
55 {
56         OFONO_CALL_STATE_DISCONNECTED = 0,
57         OFONO_CALL_STATE_ACTIVE,
58         OFONO_CALL_STATE_HELD,
59         OFONO_CALL_STATE_DIALING,
60         OFONO_CALL_STATE_ALERTING,
61         OFONO_CALL_STATE_INCOMING,
62         OFONO_CALL_STATE_WAITING
63 } OFono_Call_State;
64
65 typedef enum
66 {
67         OFONO_SENT_SMS_STATE_PENDING = 0,
68         OFONO_SENT_SMS_STATE_FAILED,
69         OFONO_SENT_SMS_STATE_SENT
70 } OFono_Sent_SMS_State;
71
72 typedef enum
73 {
74         OFONO_USSD_STATE_IDLE = 0,
75         OFONO_USSD_STATE_ACTIVE,
76         OFONO_USSD_STATE_USER_RESPONSE
77 } OFono_USSD_State;
78
79 typedef struct _OFono_Call OFono_Call;
80 typedef struct _OFono_Sent_SMS OFono_Sent_SMS;
81 typedef struct _OFono_Pending OFono_Pending;
82
83 typedef struct _OFono_Callback_List_USSD_Notify_Node OFono_Callback_List_USSD_Notify_Node;
84
85 typedef struct _OFono_Callback_List_Modem_Node OFono_Callback_List_Modem_Node;
86 typedef struct _OFono_Callback_List_Call_Node OFono_Callback_List_Call_Node;
87 typedef struct _OFono_Callback_List_Call_Disconnected_Node OFono_Callback_List_Call_Disconnected_Node;
88
89 typedef struct _OFono_Callback_List_Sent_SMS_Node OFono_Callback_List_Sent_SMS_Node;
90 typedef struct _OFono_Callback_List_Incoming_SMS_Node OFono_Callback_List_Incoming_SMS_Node;
91
92 typedef void (*OFono_Simple_Cb)(void *data, OFono_Error error);
93 typedef void (*OFono_String_Cb)(void *data, OFono_Error error, const char *str);
94 typedef void (*OFono_Call_Cb)(void *data, OFono_Error error, OFono_Call *call);
95
96 typedef void (*OFono_Sent_SMS_Cb)(void *data, OFono_Error error, OFono_Sent_SMS *sms);
97 typedef void (*OFono_Incoming_SMS_Cb)(void *data, unsigned int sms_class, time_t timestamp, const char *sender, const char *message);
98
99 /* Voice Call: */
100 OFono_Pending *ofono_call_hangup(OFono_Call *c, OFono_Simple_Cb cb,
101                                         const void *data);
102 OFono_Pending *ofono_call_answer(OFono_Call *c, OFono_Simple_Cb cb,
103                                         const void *data);
104
105 OFono_Call_State ofono_call_state_get(const OFono_Call *c);
106 const char *ofono_call_name_get(const OFono_Call *c);
107 const char *ofono_call_line_id_get(const OFono_Call *c);
108 Eina_Bool ofono_call_multiparty_get(const OFono_Call *c);
109 double ofono_call_start_time_get(const OFono_Call *c);
110 time_t ofono_call_full_start_time_get(const OFono_Call *c);
111
112 #define ofono_call_state_valid_check(c) \
113         (ofono_call_state_get(c) != OFONO_CALL_STATE_DISCONNECTED)
114
115 OFono_Callback_List_Call_Node *ofono_call_added_cb_add(
116         void (*cb)(void *data,OFono_Call *call), const void *data);
117
118 OFono_Callback_List_Call_Node *ofono_call_removed_cb_add(
119         void (*cb)(void *data, OFono_Call *call), const void *data);
120
121 OFono_Callback_List_Call_Node *ofono_call_changed_cb_add(
122         void (*cb)(void *data, OFono_Call *call), const void *data);
123
124 OFono_Callback_List_Call_Disconnected_Node *ofono_call_disconnected_cb_add(
125         void (*cb)(void *data, OFono_Call *call, const char *reason),
126         const void *data);
127
128 OFono_Callback_List_USSD_Notify_Node *ofono_ussd_notify_cb_add(
129         void (*cb)(void *data, Eina_Bool needs_reply, const char *msg),
130         const void *data);
131
132 OFono_Pending *ofono_tones_send(const char *tones, OFono_Simple_Cb cb,
133                                 const void *data);
134
135 void ofono_call_changed_cb_del(OFono_Callback_List_Call_Node *callback_node);
136 void ofono_call_disconnected_cb_del(OFono_Callback_List_Call_Disconnected_Node *callback_node);
137 void ofono_ussd_notify_cb_del(OFono_Callback_List_USSD_Notify_Node *callback_node);
138
139
140 void ofono_call_added_cb_del(OFono_Callback_List_Call_Node *callback_node);
141 void ofono_call_removed_cb_del(OFono_Callback_List_Call_Node *callback_node);
142
143 OFono_Pending *ofono_multiparty_create(OFono_Simple_Cb cb, const void *data);
144 OFono_Pending *ofono_multiparty_hangup(OFono_Simple_Cb cb, const void *data);
145 OFono_Pending *ofono_private_chat(OFono_Call *c, OFono_Simple_Cb cb,
146                                         const void *data);
147
148 /* Modem: */
149 const char *ofono_modem_serial_get(void);
150
151 OFono_Pending *ofono_modem_change_pin(const char *what, const char *old, const char *new,
152                                 OFono_Simple_Cb cb, const void *data);
153 OFono_Pending *ofono_modem_reset_pin(const char *what, const char *puk, const char *new,
154                                 OFono_Simple_Cb cb, const void *data);
155
156 OFono_Pending *ofono_dial(const char *number, const char *hide_callerid,
157                                 OFono_Call_Cb cb, const void *data);
158
159 OFono_Pending *ofono_transfer(OFono_Simple_Cb cb, const void *data);
160 OFono_Pending *ofono_swap_calls(OFono_Simple_Cb cb, const void *data);
161 OFono_Pending *ofono_release_and_answer(OFono_Simple_Cb cb, const void *data);
162 OFono_Pending *ofono_release_and_swap(OFono_Simple_Cb cb, const void *data);
163 OFono_Pending *ofono_hold_and_answer(OFono_Simple_Cb cb, const void *data);
164 OFono_Pending *ofono_hangup_all(OFono_Simple_Cb cb, const void *data);
165
166 OFono_Pending *ofono_powered_set(Eina_Bool powered, OFono_Simple_Cb cb, const void *data);
167 Eina_Bool ofono_powered_get(void);
168
169 /* Call Volume: */
170
171 OFono_Pending *ofono_mute_set(Eina_Bool mute, OFono_Simple_Cb cb, const void *data);
172 Eina_Bool ofono_mute_get(void);
173
174 OFono_Pending *ofono_volume_speaker_set(unsigned char volume, OFono_Simple_Cb cb, const void *data);
175 unsigned char ofono_volume_speaker_get(void);
176
177
178 OFono_Pending *ofono_volume_microphone_set(unsigned char volume, OFono_Simple_Cb cb, const void *data);
179 unsigned char ofono_volume_microphone_get(void);
180
181 /* Voicemail (Message Waiting) */
182 Eina_Bool ofono_voicemail_waiting_get(void);
183 unsigned char ofono_voicemail_count_get(void);
184 const char *ofono_voicemail_number_get(void);
185
186 /* Supplementary Services */
187 OFono_Pending *ofono_ss_initiate(const char *command, OFono_String_Cb cb, const void *data);
188
189 OFono_Pending *ofono_ussd_respond(const char *string, OFono_String_Cb cb, const void *data);
190 OFono_Pending *ofono_ussd_cancel(OFono_Simple_Cb cb, const void *data);
191 OFono_USSD_State ofono_ussd_state_get(void);
192
193 /* SMS (Message) */
194 const char *ofono_service_center_address_get(void);
195 Eina_Bool ofono_use_delivery_reports_get(void);
196 const char *ofono_message_bearer_get(void);
197 const char *ofono_message_alphabet_get(void);
198
199 OFono_Pending *ofono_sms_send(const char *number, const char *message,
200                                 OFono_Sent_SMS_Cb cb, const void *data);
201
202 OFono_Sent_SMS_State ofono_sent_sms_state_get(const OFono_Sent_SMS *sms);
203 const char *ofono_sent_sms_destination_get(const OFono_Sent_SMS *sms);
204 const char *ofono_sent_sms_message_get(const OFono_Sent_SMS *sms);
205 time_t ofono_sent_sms_timestamp_get(const OFono_Sent_SMS *sms);
206
207 OFono_Pending *ofono_sent_sms_cancel(OFono_Sent_SMS *sms, OFono_Simple_Cb cb, const void *data);
208
209 OFono_Callback_List_Sent_SMS_Node *ofono_sent_sms_changed_cb_add(OFono_Sent_SMS_Cb cb,
210                                                                         const void *data);
211 void ofono_sent_sms_changed_cb_del(OFono_Callback_List_Sent_SMS_Node *node);
212
213 OFono_Callback_List_Incoming_SMS_Node *ofono_incoming_sms_cb_add(OFono_Incoming_SMS_Cb cb,
214                                                                                 const void *data);
215 void ofono_incoming_sms_cb_del(OFono_Callback_List_Incoming_SMS_Node *node);
216
217 /* Setup: */
218 void ofono_modem_api_list(FILE *fp, const char *prefix, const char *suffix);
219 void ofono_modem_api_require(const char *spec);
220 void ofono_modem_type_list(FILE *fp, const char *prefix, const char *suffix);
221 void ofono_modem_type_require(const char *spec);
222 void ofono_modem_path_wanted_set(const char *path);
223
224 unsigned int ofono_modem_api_get(void);
225
226 OFono_Callback_List_Modem_Node *ofono_modem_conected_cb_add(void (*cb)(void *data),
227                                                         const void *data);
228
229 OFono_Callback_List_Modem_Node *ofono_modem_disconnected_cb_add(
230         void (*cb)(void *data), const void *data);
231
232 OFono_Callback_List_Modem_Node *ofono_modem_changed_cb_add(void (*cb)(void *data),
233                                                         const void *data);
234
235 void ofono_modem_changed_cb_del(OFono_Callback_List_Modem_Node *callback_node);
236 void ofono_modem_disconnected_cb_del(OFono_Callback_List_Modem_Node *callback_node);
237 void ofono_modem_connected_cb_del(OFono_Callback_List_Modem_Node *callback_node);
238
239 void ofono_pending_cancel(OFono_Pending *pending);
240
241 const char *ofono_error_message_get(OFono_Error e);
242
243 Eina_Bool ofono_init(void);
244 void ofono_shutdown(void);
245
246 Eina_Bool ofono_voice_is_online(void);
247
248 #endif