-rw-r--r-- | gammu/emb/common/gsmstate.h | 1562 |
1 files changed, 1562 insertions, 0 deletions
diff --git a/gammu/emb/common/gsmstate.h b/gammu/emb/common/gsmstate.h new file mode 100644 index 0000000..cb17623 --- a/dev/null +++ b/gammu/emb/common/gsmstate.h | |||
@@ -0,0 +1,1562 @@ | |||
1 | /* (c) 2002-2004 by Marcin Wiacek & Michal Cihar */ | ||
2 | |||
3 | #ifndef __gsm_state_h | ||
4 | #define __gsm_state_h | ||
5 | |||
6 | #include <time.h> | ||
7 | |||
8 | #include "config.h" | ||
9 | #include "misc/cfg.h" | ||
10 | |||
11 | #ifdef GSM_ENABLE_NOKIA3320 | ||
12 | # include "phone/nokia/dct4/n3320.h" | ||
13 | #endif | ||
14 | #ifdef GSM_ENABLE_NOKIA3650 | ||
15 | # include "phone/nokia/dct4/n3650.h" | ||
16 | #endif | ||
17 | #ifdef GSM_ENABLE_NOKIA6110 | ||
18 | # include "phone/nokia/dct3/n6110.h" | ||
19 | #endif | ||
20 | #ifdef GSM_ENABLE_NOKIA6510 | ||
21 | # include "phone/nokia/dct4/n6510.h" | ||
22 | #endif | ||
23 | #ifdef GSM_ENABLE_NOKIA7110 | ||
24 | # include "phone/nokia/dct3/n7110.h" | ||
25 | #endif | ||
26 | #ifdef GSM_ENABLE_NOKIA9210 | ||
27 | # include "phone/nokia/dct3/n9210.h" | ||
28 | #endif | ||
29 | #ifdef GSM_ENABLE_ATGEN | ||
30 | # include "phone/at/atgen.h" | ||
31 | #endif | ||
32 | #ifdef GSM_ENABLE_ALCATEL | ||
33 | # include "phone/alcatel/alcatel.h" | ||
34 | #endif | ||
35 | #ifdef GSM_ENABLE_OBEXGEN | ||
36 | # include "phone/obex/obexgen.h" | ||
37 | #endif | ||
38 | #ifdef GSM_ENABLE_MROUTERGEN | ||
39 | # include "phone/symbian/mroutgen.h" | ||
40 | #endif | ||
41 | |||
42 | #ifndef GSM_USED_MBUS2 | ||
43 | # undef GSM_ENABLE_MBUS2 | ||
44 | #endif | ||
45 | #ifndef GSM_USED_FBUS2 | ||
46 | # undef GSM_ENABLE_FBUS2 | ||
47 | #endif | ||
48 | #ifndef GSM_USED_FBUS2DLR3 | ||
49 | # undef GSM_ENABLE_FBUS2DLR3 | ||
50 | #endif | ||
51 | #ifndef GSM_USED_FBUS2DKU5 | ||
52 | # undef GSM_ENABLE_FBUS2DKU5 | ||
53 | #endif | ||
54 | #ifndef GSM_USED_FBUS2PL2303 | ||
55 | # undef GSM_ENABLE_FBUS2PL2303 | ||
56 | #endif | ||
57 | #ifndef GSM_USED_FBUS2BLUE | ||
58 | # undef GSM_ENABLE_FBUS2BLUE | ||
59 | #endif | ||
60 | #ifndef GSM_USED_FBUS2IRDA | ||
61 | # undef GSM_ENABLE_FBUS2IRDA | ||
62 | #endif | ||
63 | #ifndef GSM_USED_PHONETBLUE | ||
64 | # undef GSM_ENABLE_PHONETBLUE | ||
65 | #endif | ||
66 | #ifndef GSM_USED_AT | ||
67 | # undef GSM_ENABLE_AT | ||
68 | #endif | ||
69 | #ifndef GSM_USED_IRDAOBEX | ||
70 | # undef GSM_ENABLE_IRDAOBEX | ||
71 | #endif | ||
72 | #ifndef GSM_USED_BLUEOBEX | ||
73 | # undef GSM_ENABLE_BLUEOBEX | ||
74 | #endif | ||
75 | #ifndef GSM_USED_ALCABUS | ||
76 | # undef GSM_ENABLE_ALCABUS | ||
77 | #endif | ||
78 | #ifndef GSM_USED_IRDAPHONET | ||
79 | # undef GSM_ENABLE_IRDAPHONET | ||
80 | #endif | ||
81 | #ifndef GSM_USED_BLUEFBUS2 | ||
82 | # undef GSM_ENABLE_BLUEFBUS2 | ||
83 | #endif | ||
84 | #ifndef GSM_USED_BLUEPHONET | ||
85 | # undef GSM_ENABLE_BLUEPHONET | ||
86 | #endif | ||
87 | #ifndef GSM_USED_BLUEAT | ||
88 | # undef GSM_ENABLE_BLUEAT | ||
89 | #endif | ||
90 | #ifndef GSM_USED_IRDAAT | ||
91 | # undef GSM_ENABLE_IRDAAT | ||
92 | #endif | ||
93 | #ifndef GSM_USED_MROUTERBLUE | ||
94 | # undef GSM_ENABLE_MROUTERBLUE | ||
95 | #endif | ||
96 | |||
97 | #if defined(GSM_ENABLE_NOKIA3320) || defined(GSM_ENABLE_NOKIA6110) || defined(GSM_ENABLE_NOKIA7110) || defined(GSM_ENABLE_NOKIA9210) | ||
98 | # define GSM_ENABLE_NOKIA_DCT3 | ||
99 | #endif | ||
100 | #if defined(GSM_ENABLE_NOKIA3650) || defined(GSM_ENABLE_NOKIA6510) | ||
101 | # define GSM_ENABLE_NOKIA_DCT4 | ||
102 | #endif | ||
103 | |||
104 | #include "protocol/protocol.h" | ||
105 | #if defined(GSM_ENABLE_FBUS2) || defined(GSM_ENABLE_FBUS2IRDA) || defined(GSM_ENABLE_FBUS2DLR3) || defined(GSM_ENABLE_FBUS2BLUE) || defined(GSM_ENABLE_BLUEFBUS2) || defined(GSM_ENABLE_FBUS2DKU5) || defined(GSM_ENABLE_FBUS2PL2303) | ||
106 | # include "protocol/nokia/fbus2.h" | ||
107 | #endif | ||
108 | #ifdef GSM_ENABLE_MBUS2 | ||
109 | # include "protocol/nokia/mbus2.h" | ||
110 | #endif | ||
111 | #if defined(GSM_ENABLE_PHONETBLUE) || defined(GSM_ENABLE_IRDAPHONET) || defined(GSM_ENABLE_BLUEPHONET) | ||
112 | # include "protocol/nokia/phonet.h" | ||
113 | #endif | ||
114 | #if defined(GSM_ENABLE_AT) || defined(GSM_ENABLE_BLUEAT) || defined(GSM_ENABLE_IRDAAT) | ||
115 | # include "protocol/at/at.h" | ||
116 | #endif | ||
117 | #ifdef GSM_ENABLE_ALCABUS | ||
118 | # include "protocol/alcatel/alcabus.h" | ||
119 | #endif | ||
120 | #if defined(GSM_ENABLE_IRDAOBEX) || defined(GSM_ENABLE_BLUEOBEX) | ||
121 | # include "protocol/obex/obex.h" | ||
122 | #endif | ||
123 | #if defined(GSM_ENABLE_MROUTERBLUE) | ||
124 | # include "protocol/symbian/mrouter.h" | ||
125 | #endif | ||
126 | |||
127 | #define GSM_ENABLE_SERIALDEVICE | ||
128 | #ifndef GSM_USED_SERIALDEVICE | ||
129 | # undef GSM_ENABLE_SERIALDEVICE | ||
130 | #endif | ||
131 | #define GSM_ENABLE_IRDADEVICE | ||
132 | #ifndef GSM_USED_IRDADEVICE | ||
133 | # undef GSM_ENABLE_IRDADEVICE | ||
134 | #endif | ||
135 | #define GSM_ENABLE_BLUETOOTHDEVICE | ||
136 | #ifndef GSM_USED_BLUETOOTHDEVICE | ||
137 | # undef GSM_ENABLE_BLUETOOTHDEVICE | ||
138 | #endif | ||
139 | |||
140 | #ifdef DJGPP | ||
141 | # undef GSM_ENABLE_IRDADEVICE | ||
142 | # undef GSM_ENABLE_IRDAPHONET | ||
143 | # undef GSM_ENABLE_IRDAOBEX | ||
144 | # undef GSM_ENABLE_IRDAAT | ||
145 | # undef GSM_ENABLE_FBUS2IRDA | ||
146 | |||
147 | # undef GSM_ENABLE_BLUETOOTHDEVICE | ||
148 | # undef GSM_ENABLE_BLUEPHONET | ||
149 | # undef GSM_ENABLE_BLUEOBEX | ||
150 | # undef GSM_ENABLE_BLUEAT | ||
151 | # undef GSM_ENABLE_BLUEFBUS2 | ||
152 | # undef GSM_ENABLE_PHONETBLUE | ||
153 | # undef GSM_ENABLE_FBUS2BLUE | ||
154 | # undef GSM_ENABLE_MROUTERBLUE | ||
155 | #endif | ||
156 | |||
157 | #ifndef WIN32 | ||
158 | # ifdef ENABLE_LGPL | ||
159 | # undef GSM_ENABLE_IRDADEVICE | ||
160 | # undef GSM_ENABLE_IRDAPHONET | ||
161 | # undef GSM_ENABLE_IRDAOBEX | ||
162 | # undef GSM_ENABLE_IRDAAT | ||
163 | # undef GSM_ENABLE_FBUS2IRDA | ||
164 | |||
165 | # undef GSM_ENABLE_BLUETOOTHDEVICE | ||
166 | # undef GSM_ENABLE_BLUEPHONET | ||
167 | # undef GSM_ENABLE_BLUEOBEX | ||
168 | # undef GSM_ENABLE_BLUEAT | ||
169 | # undef GSM_ENABLE_BLUEFBUS2 | ||
170 | # undef GSM_ENABLE_PHONETBLUE | ||
171 | # undef GSM_ENABLE_FBUS2BLUE | ||
172 | # undef GSM_ENABLE_MROUTERBLUE | ||
173 | # endif | ||
174 | #endif | ||
175 | |||
176 | #ifdef GSM_ENABLE_SERIALDEVICE | ||
177 | # include "device/serial/ser_w32.h" | ||
178 | # include "device/serial/ser_unx.h" | ||
179 | # include "device/serial/ser_djg.h" | ||
180 | #endif | ||
181 | #ifdef GSM_ENABLE_IRDADEVICE | ||
182 | # include "device/irda/irda.h" | ||
183 | #endif | ||
184 | #ifdef GSM_ENABLE_BLUETOOTHDEVICE | ||
185 | # include "device/bluetoth/bluetoth.h" | ||
186 | #endif | ||
187 | |||
188 | #include "service/gsmpbk.h" | ||
189 | #include "service/gsmnet.h" | ||
190 | #include "service/gsmring.h" | ||
191 | #include "service/gsmcal.h" | ||
192 | #include "service/gsmdata.h" | ||
193 | #include "service/gsmlogo.h" | ||
194 | #include "service/gsmmisc.h" | ||
195 | #include "service/gsmprof.h" | ||
196 | #include "service/gsmcall.h" | ||
197 | #include "service/sms/gsmsms.h" | ||
198 | #include "service/sms/gsmems.h" | ||
199 | #include "service/sms/gsmmulti.h" | ||
200 | #include "service/backup/gsmback.h" | ||
201 | |||
202 | typedef struct _GSM_StateMachine GSM_StateMachine; | ||
203 | typedef struct _GSM_User GSM_User; | ||
204 | typedef struct _OnePhoneModel OnePhoneModel; | ||
205 | |||
206 | /* ------------------------- Device layer ---------------------------------- */ | ||
207 | |||
208 | /** | ||
209 | * Device functions, each device has to provide these. | ||
210 | */ | ||
211 | typedef struct { | ||
212 | /** | ||
213 | * Opens device. | ||
214 | */ | ||
215 | GSM_Error (*OpenDevice) (GSM_StateMachine *s); | ||
216 | /** | ||
217 | * Closes device. | ||
218 | */ | ||
219 | GSM_Error (*CloseDevice) (GSM_StateMachine *s); | ||
220 | /** | ||
221 | * Sets parity for device. | ||
222 | */ | ||
223 | GSM_Error (*DeviceSetParity) (GSM_StateMachine *s, bool parity); | ||
224 | /** | ||
225 | * Sets dtr (data to read) and rts (ready to send) flags. | ||
226 | */ | ||
227 | GSM_Error (*DeviceSetDtrRts) (GSM_StateMachine *s, bool dtr, bool rts); | ||
228 | /** | ||
229 | * Sets device speed. | ||
230 | */ | ||
231 | GSM_Error (*DeviceSetSpeed) (GSM_StateMachine *s, int speed); | ||
232 | /** | ||
233 | * Attempts to read nbytes from device. | ||
234 | */ | ||
235 | int (*ReadDevice) (GSM_StateMachine *s, void *buf, size_t nbytes); | ||
236 | /** | ||
237 | * Attempts to read nbytes from device. | ||
238 | */ | ||
239 | int (*WriteDevice) (GSM_StateMachine *s, void *buf, size_t nbytes); | ||
240 | } GSM_Device_Functions; | ||
241 | |||
242 | #ifdef GSM_ENABLE_SERIALDEVICE | ||
243 | extern GSM_Device_Functions SerialDevice; | ||
244 | #endif | ||
245 | #ifdef GSM_ENABLE_IRDADEVICE | ||
246 | extern GSM_Device_Functions IrdaDevice; | ||
247 | #endif | ||
248 | #ifdef GSM_ENABLE_BLUETOOTHDEVICE | ||
249 | extern GSM_Device_Functions BlueToothDevice; | ||
250 | #endif | ||
251 | |||
252 | /** | ||
253 | * Structure containing device specific data and pointer to device functions - | ||
254 | * @ref GSM_Device_Functions. The data are in a union, so you can use only | ||
255 | * one device at one time. | ||
256 | */ | ||
257 | typedef struct { | ||
258 | union { | ||
259 | char fake; | ||
260 | #ifdef GSM_ENABLE_SERIALDEVICE | ||
261 | GSM_Device_SerialData Serial; | ||
262 | #endif | ||
263 | #ifdef GSM_ENABLE_IRDADEVICE | ||
264 | GSM_Device_IrdaData Irda; | ||
265 | #endif | ||
266 | #ifdef GSM_ENABLE_BLUETOOTHDEVICE | ||
267 | GSM_Device_BlueToothDataBlueTooth; | ||
268 | #endif | ||
269 | } Data; | ||
270 | GSM_Device_Functions *Functions; | ||
271 | } GSM_Device; | ||
272 | |||
273 | /* ---------------------- Protocol layer ----------------------------------- */ | ||
274 | |||
275 | /** | ||
276 | * Protocol functions, each protocol has to implement these. | ||
277 | */ | ||
278 | typedef struct { | ||
279 | /** | ||
280 | * Writes message to device. | ||
281 | */ | ||
282 | GSM_Error (*WriteMessage) (GSM_StateMachine *s, unsigned char *buffer, | ||
283 | int length, unsigned char type); | ||
284 | /** | ||
285 | * This one is called when character is received from device. | ||
286 | */ | ||
287 | GSM_Error (*StateMachine) (GSM_StateMachine *s, unsigned char rx_char); | ||
288 | /** | ||
289 | * Protocol initialisation. | ||
290 | */ | ||
291 | GSM_Error (*Initialise) (GSM_StateMachine *s); | ||
292 | /** | ||
293 | * Protocol termination. | ||
294 | */ | ||
295 | GSM_Error (*Terminate) (GSM_StateMachine *s); | ||
296 | } GSM_Protocol_Functions; | ||
297 | |||
298 | #ifdef GSM_ENABLE_MBUS2 | ||
299 | extern GSM_Protocol_Functions MBUS2Protocol; | ||
300 | #endif | ||
301 | #if defined(GSM_ENABLE_FBUS2) || defined(GSM_ENABLE_FBUS2IRDA) || defined(GSM_ENABLE_FBUS2DLR3) || defined(GSM_ENABLE_FBUS2DKU5) || defined(GSM_ENABLE_FBUS2BLUE) || defined(GSM_ENABLE_BLUEFBUS2) || defined(GSM_ENABLE_FBUS2PL2303) | ||
302 | extern GSM_Protocol_Functions FBUS2Protocol; | ||
303 | #endif | ||
304 | #if defined(GSM_ENABLE_PHONETBLUE) || defined(GSM_ENABLE_IRDAPHONET) || defined(GSM_ENABLE_BLUEPHONET) | ||
305 | extern GSM_Protocol_Functions PHONETProtocol; | ||
306 | #endif | ||
307 | #if defined(GSM_ENABLE_AT) || defined(GSM_ENABLE_BLUEAT) || defined(GSM_ENABLE_IRDAAT) | ||
308 | extern GSM_Protocol_Functions ATProtocol; | ||
309 | #endif | ||
310 | #ifdef GSM_ENABLE_ALCABUS | ||
311 | extern GSM_Protocol_Functions ALCABUSProtocol; | ||
312 | #endif | ||
313 | #if defined(GSM_ENABLE_IRDAOBEX) || defined(GSM_ENABLE_BLUEOBEX) | ||
314 | extern GSM_Protocol_Functions OBEXProtocol; | ||
315 | #endif | ||
316 | #if defined(GSM_ENABLE_MROUTERBLUE) | ||
317 | extern GSM_Protocol_Functions MROUTERProtocol; | ||
318 | #endif | ||
319 | |||
320 | /** | ||
321 | * Structure containing protocol specific data and pointer to protocol | ||
322 | * functions - @ref GSM_Protocol_Functions. The data are in a structure, so | ||
323 | * you may use more protocols at once and switch between them. | ||
324 | */ | ||
325 | typedef struct { | ||
326 | struct { | ||
327 | char fake; | ||
328 | #ifdef GSM_ENABLE_MBUS2 | ||
329 | GSM_Protocol_MBUS2Data MBUS2; | ||
330 | #endif | ||
331 | #if defined(GSM_ENABLE_FBUS2) || defined(GSM_ENABLE_FBUS2IRDA) || defined(GSM_ENABLE_FBUS2DLR3) || defined(GSM_ENABLE_FBUS2DKU5) || defined(GSM_ENABLE_FBUS2PL2303) || defined(GSM_ENABLE_FBUS2BLUE) || defined(GSM_ENABLE_BLUEFBUS2) | ||
332 | GSM_Protocol_FBUS2Data FBUS2; | ||
333 | #endif | ||
334 | #if defined(GSM_ENABLE_PHONETBLUE) || defined(GSM_ENABLE_IRDAPHONET) || defined(GSM_ENABLE_BLUEPHONET) | ||
335 | GSM_Protocol_PHONETData PHONET; | ||
336 | #endif | ||
337 | #if defined(GSM_ENABLE_AT) || defined(GSM_ENABLE_BLUEAT) || defined(GSM_ENABLE_IRDAAT) | ||
338 | GSM_Protocol_ATData AT; | ||
339 | #endif | ||
340 | #ifdef GSM_ENABLE_ALCABUS | ||
341 | GSM_Protocol_ALCABUSDataALCABUS; | ||
342 | #endif | ||
343 | #if defined(GSM_ENABLE_IRDAOBEX) || defined(GSM_ENABLE_BLUEOBEX) | ||
344 | GSM_Protocol_OBEXData OBEX; | ||
345 | #endif | ||
346 | #if defined(GSM_ENABLE_MROUTERBLUE) | ||
347 | GSM_Protocol_MROUTERDataMROUTER; | ||
348 | #endif | ||
349 | } Data; | ||
350 | GSM_Protocol_Functions *Functions; | ||
351 | } GSM_Protocol; | ||
352 | |||
353 | /* -------------------------- Phone layer ---------------------------------- */ | ||
354 | |||
355 | /** | ||
356 | * Phone requests identificators, these are used for internally identifying | ||
357 | * which operation is being performed. | ||
358 | */ | ||
359 | typedef enum { | ||
360 | ID_None=1, | ||
361 | ID_GetModel, | ||
362 | ID_GetFirmware, | ||
363 | ID_EnableSecurity, | ||
364 | ID_GetIMEI, | ||
365 | ID_GetDateTime, | ||
366 | ID_GetAlarm, | ||
367 | ID_GetMemory, | ||
368 | ID_GetMemoryStatus, | ||
369 | ID_GetSMSC, | ||
370 | ID_GetSMSMessage, | ||
371 | ID_EnableEcho, | ||
372 | ID_EnableErrorInfo, | ||
373 | ID_SetOBEX, | ||
374 | ID_GetSignalQuality, | ||
375 | ID_GetBatteryCharge, | ||
376 | ID_GetSMSFolders, | ||
377 | ID_GetSMSFolderStatus, | ||
378 | ID_GetSMSStatus, | ||
379 | ID_AddSMSFolder, | ||
380 | ID_GetNetworkInfo, | ||
381 | ID_GetRingtone, | ||
382 | ID_DialVoice, | ||
383 | ID_GetCalendarNotesInfo, | ||
384 | ID_GetCalendarNote, | ||
385 | ID_GetSecurityCode, | ||
386 | ID_GetWAPBookmark, | ||
387 | ID_GetBitmap, | ||
388 | ID_SaveSMSMessage, | ||
389 | ID_CancelCall, | ||
390 | ID_SetDateTime, | ||
391 | ID_SetAlarm, | ||
392 | ID_DisableConnectFunc, | ||
393 | ID_EnableConnectFunc, | ||
394 | ID_AnswerCall, | ||
395 | ID_SetBitmap, | ||
396 | ID_SetRingtone, | ||
397 | ID_DeleteSMSMessage, | ||
398 | ID_DeleteCalendarNote, | ||
399 | ID_SetPath, | ||
400 | ID_SetSMSC, | ||
401 | ID_SetProfile, | ||
402 | ID_SetMemory, | ||
403 | ID_DeleteMemory, | ||
404 | ID_SetCalendarNote, | ||
405 | ID_SetIncomingSMS, | ||
406 | ID_SetIncomingCB, | ||
407 | ID_GetCalendarNotePos, | ||
408 | ID_Initialise, | ||
409 | ID_GetConnectSet, | ||
410 | ID_SetWAPBookmark, | ||
411 | ID_GetLocale, | ||
412 | ID_SetLocale, | ||
413 | ID_GetCalendarSettings, | ||
414 | ID_SetCalendarSettings, | ||
415 | ID_GetGPRSPoint, | ||
416 | ID_SetGPRSPoint, | ||
417 | ID_EnableGPRSPoint, | ||
418 | ID_DeleteWAPBookmark, | ||
419 | ID_Netmonitor, | ||
420 | ID_HoldCall, | ||
421 | ID_UnholdCall, | ||
422 | ID_ConferenceCall, | ||
423 | ID_SplitCall, | ||
424 | ID_TransferCall, | ||
425 | ID_SwitchCall, | ||
426 | ID_GetManufactureMonth, | ||
427 | ID_GetProductCode, | ||
428 | ID_GetOriginalIMEI, | ||
429 | ID_GetHardware, | ||
430 | ID_GetPPM, | ||
431 | ID_GetSMSMode, | ||
432 | ID_GetSMSMemories, | ||
433 | ID_GetManufacturer, | ||
434 | ID_SetMemoryType, | ||
435 | ID_SetMemoryCharset, | ||
436 | ID_GetMMSSettings, | ||
437 | ID_SetSMSParameters, | ||
438 | ID_GetFMStation, | ||
439 | ID_SetFMStation, | ||
440 | ID_GetLanguage, | ||
441 | ID_Reset, | ||
442 | ID_GetToDo, | ||
443 | ID_PressKey, | ||
444 | ID_DeleteAllToDo, | ||
445 | ID_SetLight, | ||
446 | ID_Divert, | ||
447 | ID_SetToDo, | ||
448 | ID_PlayTone, | ||
449 | ID_GetChatSettings, | ||
450 | ID_GetSyncMLSettings, | ||
451 | ID_GetSyncMLName, | ||
452 | ID_GetSecurityStatus, | ||
453 | ID_EnterSecurityCode, | ||
454 | ID_GetProfile, | ||
455 | ID_GetRingtonesInfo, | ||
456 | ID_MakeAuthentication, | ||
457 | ID_GetSpeedDial, | ||
458 | ID_ResetPhoneSettings, | ||
459 | ID_SendDTMF, | ||
460 | ID_GetDisplayStatus, | ||
461 | ID_SetAutoNetworkLogin, | ||
462 | ID_SetConnectSet, | ||
463 | ID_SetMMSSettings, | ||
464 | ID_GetSIMIMSI, | ||
465 | ID_GetFileInfo, | ||
466 | ID_FileSystemStatus, | ||
467 | ID_GetFile, | ||
468 | ID_AddFile, | ||
469 | ID_AddFolder, | ||
470 | ID_DeleteFile, | ||
471 | #ifdef GSM_ENABLE_ALCATEL | ||
472 | /* AT mode */ | ||
473 | ID_SetFlowControl, | ||
474 | ID_AlcatelConnect, | ||
475 | ID_AlcatelProtocol, | ||
476 | |||
477 | /* Binary mode */ | ||
478 | ID_AlcatelAttach, | ||
479 | ID_AlcatelDetach, | ||
480 | ID_AlcatelCommit, | ||
481 | ID_AlcatelCommit2, | ||
482 | ID_AlcatelEnd, | ||
483 | ID_AlcatelClose, | ||
484 | ID_AlcatelStart, | ||
485 | ID_AlcatelSelect1, | ||
486 | ID_AlcatelSelect2, | ||
487 | ID_AlcatelSelect3, | ||
488 | ID_AlcatelBegin1, | ||
489 | ID_AlcatelBegin2, | ||
490 | ID_AlcatelGetIds1, | ||
491 | ID_AlcatelGetIds2, | ||
492 | ID_AlcatelGetCategories1, | ||
493 | ID_AlcatelGetCategories2, | ||
494 | ID_AlcatelGetCategoryText1, | ||
495 | ID_AlcatelGetCategoryText2, | ||
496 | ID_AlcatelAddCategoryText1, | ||
497 | ID_AlcatelAddCategoryText2, | ||
498 | ID_AlcatelGetFields1, | ||
499 | ID_AlcatelGetFields2, | ||
500 | ID_AlcatelGetFieldValue1, | ||
501 | ID_AlcatelGetFieldValue2, | ||
502 | ID_AlcatelDeleteItem1, | ||
503 | ID_AlcatelDeleteItem2, | ||
504 | ID_AlcatelDeleteField, | ||
505 | ID_AlcatelCreateField, | ||
506 | ID_AlcatelUpdateField, | ||
507 | #endif | ||
508 | ID_IncomingFrame, | ||
509 | |||
510 | ID_User1, | ||
511 | ID_User2, | ||
512 | ID_User3, | ||
513 | ID_User4, | ||
514 | ID_User5, | ||
515 | ID_User6, | ||
516 | ID_User7, | ||
517 | ID_User8, | ||
518 | ID_User9, | ||
519 | ID_User10, | ||
520 | |||
521 | ID_EachFrame | ||
522 | } GSM_Phone_RequestID; | ||
523 | |||
524 | /** | ||
525 | * Phone related data are stored here. | ||
526 | */ | ||
527 | typedef struct { | ||
528 | /** | ||
529 | * Phone IMEI (or serial number). | ||
530 | */ | ||
531 | char IMEI[MAX_IMEI_LENGTH]; | ||
532 | /** | ||
533 | * Phone manufacturer as reported by phone. | ||
534 | */ | ||
535 | char Manufacturer[MAX_MANUFACTURER_LENGTH]; | ||
536 | /** | ||
537 | * Phone model as reported by phone. | ||
538 | */ | ||
539 | char Model[MAX_MODEL_LENGTH]; | ||
540 | /** | ||
541 | * Model information, pointer to static @ref allmodels array. | ||
542 | */ | ||
543 | OnePhoneModel *ModelInfo; | ||
544 | /** | ||
545 | * Phone version as reported by phone. It doesn't have to be numerical | ||
546 | * at all. | ||
547 | */ | ||
548 | char Version[MAX_VERSION_LENGTH]; | ||
549 | /** | ||
550 | * Phone version date, might be empty for some models. | ||
551 | */ | ||
552 | char VerDate[MAX_VERSION_DATE_LENGTH]; | ||
553 | /** | ||
554 | * Phone version as number, if applicable. | ||
555 | */ | ||
556 | double VerNum; | ||
557 | /** | ||
558 | * Cache for hardware version used by some modules. | ||
559 | */ | ||
560 | char HardwareCache[50]; | ||
561 | /** | ||
562 | * Cache for product code version used by some modules. | ||
563 | */ | ||
564 | char ProductCodeCache[50]; | ||
565 | |||
566 | /** | ||
567 | * Counter used for disabling startup info on phone, see | ||
568 | * @ref GSM_Phone_Functions::ShowStartInfo . After this is 0, the startup info is hidden. | ||
569 | */ | ||
570 | int StartInfoCounter; | ||
571 | |||
572 | /** | ||
573 | * Pointer to structure used internally by phone drivers. | ||
574 | */ | ||
575 | GSM_GPRSAccessPoint*GPRSPoint; | ||
576 | /** | ||
577 | * Pointer to structure used internally by phone drivers. | ||
578 | */ | ||
579 | GSM_SpeedDial *SpeedDial; | ||
580 | /** | ||
581 | * Pointer to structure used internally by phone drivers. | ||
582 | */ | ||
583 | GSM_DateTime *DateTime; | ||
584 | /** | ||
585 | * Pointer to structure used internally by phone drivers. | ||
586 | */ | ||
587 | GSM_Alarm *Alarm; | ||
588 | /** | ||
589 | * Pointer to structure used internally by phone drivers. | ||
590 | */ | ||
591 | GSM_MemoryEntry *Memory; | ||
592 | /** | ||
593 | * Pointer to structure used internally by phone drivers. | ||
594 | */ | ||
595 | GSM_MemoryStatus*MemoryStatus; | ||
596 | /** | ||
597 | * Pointer to structure used internally by phone drivers. | ||
598 | */ | ||
599 | GSM_SMSC *SMSC; | ||
600 | /** | ||
601 | * Pointer to structure used internally by phone drivers. | ||
602 | */ | ||
603 | GSM_MultiSMSMessage*GetSMSMessage; | ||
604 | /** | ||
605 | * Pointer to structure used internally by phone drivers. | ||
606 | */ | ||
607 | GSM_SMSMessage *SaveSMSMessage; | ||
608 | /** | ||
609 | * Pointer to structure used internally by phone drivers. | ||
610 | */ | ||
611 | GSM_SMSMemoryStatus*SMSStatus; | ||
612 | /** | ||
613 | * Pointer to structure used internally by phone drivers. | ||
614 | */ | ||
615 | GSM_SMSFolders *SMSFolders; | ||
616 | /** | ||
617 | * Used internally by phone drivers. | ||
618 | */ | ||
619 | int *VoiceRecord; | ||
620 | /** | ||
621 | * Used internally by phone drivers. | ||
622 | */ | ||
623 | int CallID; | ||
624 | /** | ||
625 | * Pointer to structure used internally by phone drivers. | ||
626 | */ | ||
627 | GSM_SignalQuality*SignalQuality; | ||
628 | /** | ||
629 | * Pointer to structure used internally by phone drivers. | ||
630 | */ | ||
631 | GSM_BatteryCharge*BatteryCharge; | ||
632 | /** | ||
633 | * Pointer to structure used internally by phone drivers. | ||
634 | */ | ||
635 | GSM_NetworkInfo *NetworkInfo; | ||
636 | /** | ||
637 | * Pointer to structure used internally by phone drivers. | ||
638 | */ | ||
639 | GSM_Ringtone *Ringtone; | ||
640 | /** | ||
641 | * Pointer to structure used internally by phone drivers. | ||
642 | */ | ||
643 | GSM_CalendarEntry*Cal; | ||
644 | /** | ||
645 | * Used internally by phone drivers. | ||
646 | */ | ||
647 | unsigned char *SecurityCode; | ||
648 | /** | ||
649 | * Pointer to structure used internally by phone drivers. | ||
650 | */ | ||
651 | GSM_WAPBookmark *WAPBookmark; | ||
652 | /** | ||
653 | * Pointer to structure used internally by phone drivers. | ||
654 | */ | ||
655 | GSM_MultiWAPSettings*WAPSettings; | ||
656 | /** | ||
657 | * Pointer to structure used internally by phone drivers. | ||
658 | */ | ||
659 | GSM_Bitmap *Bitmap; | ||
660 | /** | ||
661 | * Used internally by phone drivers. | ||
662 | */ | ||
663 | unsigned char *Netmonitor; | ||
664 | /** | ||
665 | * Pointer to structure used internally by phone drivers. | ||
666 | */ | ||
667 | GSM_MultiCallDivert*Divert; | ||
668 | /** | ||
669 | * Pointer to structure used internally by phone drivers. | ||
670 | */ | ||
671 | GSM_ToDoEntry *ToDo; | ||
672 | /** | ||
673 | * Used internally by phone drivers. | ||
674 | */ | ||
675 | bool PressKey; | ||
676 | /** | ||
677 | * Pointer to structure used internally by phone drivers. | ||
678 | */ | ||
679 | GSM_SecurityCodeType*SecurityStatus; | ||
680 | /** | ||
681 | * Pointer to structure used internally by phone drivers. | ||
682 | */ | ||
683 | GSM_Profile *Profile; | ||
684 | /** | ||
685 | * Pointer to structure used internally by phone drivers. | ||
686 | */ | ||
687 | GSM_AllRingtonesInfo*RingtonesInfo; | ||
688 | /** | ||
689 | * Pointer to structure used internally by phone drivers. | ||
690 | */ | ||
691 | GSM_DisplayFeatures*DisplayFeatures; | ||
692 | /** | ||
693 | * Pointer to structure used internally by phone drivers. | ||
694 | */ | ||
695 | GSM_FMStation *FMStation; | ||
696 | /** | ||
697 | * Pointer to structure used internally by phone drivers. | ||
698 | */ | ||
699 | GSM_Locale *Locale; | ||
700 | /** | ||
701 | * Pointer to structure used internally by phone drivers. | ||
702 | */ | ||
703 | GSM_CalendarSettings*CalendarSettings; | ||
704 | /** | ||
705 | * Used internally by phone drivers. | ||
706 | */ | ||
707 | unsigned char *PhoneString; | ||
708 | /** | ||
709 | * Used internally by phone drivers. | ||
710 | */ | ||
711 | int StartPhoneString; | ||
712 | /** | ||
713 | * Pointer to structure used internally by phone drivers. | ||
714 | */ | ||
715 | GSM_File *FileInfo; | ||
716 | /** | ||
717 | * Pointer to structure used internally by phone drivers. | ||
718 | */ | ||
719 | GSM_File *File; | ||
720 | /** | ||
721 | * Pointer to structure used internally by phone drivers. | ||
722 | */ | ||
723 | GSM_FileSystemStatus*FileSystemStatus; | ||
724 | GSM_ChatSettings*ChatSettings; | ||
725 | GSM_SyncMLSettings*SyncMLSettings; | ||
726 | |||
727 | /** | ||
728 | * Should phone notify about incoming calls? | ||
729 | */ | ||
730 | bool EnableIncomingCall; | ||
731 | /** | ||
732 | * Should phone notify about incoming SMSes? | ||
733 | */ | ||
734 | bool EnableIncomingSMS; | ||
735 | /** | ||
736 | * Should phone notify about incoming CBs? | ||
737 | */ | ||
738 | bool EnableIncomingCB; | ||
739 | /** | ||
740 | * Should phone notify about incoming USSDs? | ||
741 | */ | ||
742 | bool EnableIncomingUSSD; | ||
743 | |||
744 | /** | ||
745 | * Last message received from phone. | ||
746 | */ | ||
747 | GSM_Protocol_Message*RequestMsg; | ||
748 | /** | ||
749 | * Last message sent by Gammu. | ||
750 | */ | ||
751 | GSM_Protocol_Message*SentMsg; | ||
752 | /** | ||
753 | * What operation is being performed now, see @ref GSM_Phone_RequestID | ||
754 | * for possible values. | ||
755 | */ | ||
756 | GSM_Phone_RequestIDRequestID; | ||
757 | /** | ||
758 | * Error returned by function in phone module. | ||
759 | */ | ||
760 | GSM_Error DispatchError; | ||
761 | |||
762 | /** | ||
763 | * Structure with private phone modules data. | ||
764 | */ | ||
765 | struct { | ||
766 | int fake; | ||
767 | #ifdef GSM_ENABLE_NOKIA3320 | ||
768 | GSM_Phone_N3320Data N3320; | ||
769 | #endif | ||
770 | #ifdef GSM_ENABLE_NOKIA3650 | ||
771 | GSM_Phone_N3650Data N3650; | ||
772 | #endif | ||
773 | #ifdef GSM_ENABLE_NOKIA6110 | ||
774 | GSM_Phone_N6110Data N6110; | ||
775 | #endif | ||
776 | #ifdef GSM_ENABLE_NOKIA6510 | ||
777 | GSM_Phone_N6510Data N6510; | ||
778 | #endif | ||
779 | #ifdef GSM_ENABLE_NOKIA7110 | ||
780 | GSM_Phone_N7110Data N7110; | ||
781 | #endif | ||
782 | #ifdef GSM_ENABLE_ATGEN | ||
783 | GSM_Phone_ATGENData ATGEN; | ||
784 | #endif | ||
785 | #ifdef GSM_ENABLE_ALCATEL | ||
786 | GSM_Phone_ALCATELData ALCATEL; | ||
787 | #endif | ||
788 | #ifdef GSM_ENABLE_OBEXGEN | ||
789 | GSM_Phone_OBEXGENData OBEXGEN; | ||
790 | #endif | ||
791 | #ifdef GSM_ENABLE_MROUTERGEN | ||
792 | GSM_Phone_MROUTERGENData MROUTERGEN; | ||
793 | #endif | ||
794 | } Priv; | ||
795 | } GSM_Phone_Data; | ||
796 | |||
797 | /** | ||
798 | * Structure for defining reply functions. | ||
799 | * | ||
800 | * Function is called when requestID matches current operation or is | ||
801 | * ID_IncomingFrame and msgtype matches start message and (if msgtype is just | ||
802 | * one character) subtypechar is zero or subtypechar-th character of message | ||
803 | * matches subtype. | ||
804 | * | ||
805 | * Should be used in array with last element containing ID_None as requestID. | ||
806 | */ | ||
807 | typedef struct { | ||
808 | /** | ||
809 | * Pointer to function that should be executed. | ||
810 | */ | ||
811 | GSM_Error (*Function)(GSM_Protocol_Message msg, GSM_StateMachine *s); | ||
812 | /** | ||
813 | * Message type, if it is longer than 1 character, it disables subtype | ||
814 | * checking. | ||
815 | */ | ||
816 | unsigned char *msgtype; | ||
817 | /** | ||
818 | * Which character of message should be checked as subtype. Zero to | ||
819 | * disable subtype checking. | ||
820 | */ | ||
821 | int subtypechar; | ||
822 | /** | ||
823 | * Subtype to be checked. | ||
824 | */ | ||
825 | unsigned char subtype; | ||
826 | /** | ||
827 | * Phone request when this can be called, use ID_IncomingFrame when | ||
828 | * you want to use this in any state. | ||
829 | */ | ||
830 | GSM_Phone_RequestIDrequestID; | ||
831 | } GSM_Reply_Function; | ||
832 | |||
833 | /** | ||
834 | * Structure defining phone functions. | ||
835 | */ | ||
836 | typedef struct { | ||
837 | /** | ||
838 | * Names of supported models separated by |. Must contain at least one | ||
839 | * name. | ||
840 | */ | ||
841 | char *models; | ||
842 | /** | ||
843 | * Array of reply functions for the phone, see | ||
844 | * @ref GSM_Reply_Function for details about it. | ||
845 | */ | ||
846 | GSM_Reply_Function *ReplyFunctions; | ||
847 | /** | ||
848 | * Initializes phone. | ||
849 | */ | ||
850 | GSM_Error (*Initialise) (GSM_StateMachine *s); | ||
851 | /** | ||
852 | * Terminates phone communication. | ||
853 | */ | ||
854 | GSM_Error (*Terminate) (GSM_StateMachine *s); | ||
855 | /** | ||
856 | * Dispatches messages from phone, at the end it should call | ||
857 | * @ref GSM_DispatchMessage. | ||
858 | */ | ||
859 | GSM_Error (*DispatchMessage) (GSM_StateMachine *s); | ||
860 | /** | ||
861 | * Enables showing information on phone display. | ||
862 | */ | ||
863 | GSM_Error (*ShowStartInfo) (GSM_StateMachine *s, bool enable); | ||
864 | /** | ||
865 | * Reads manufacturer from phone. | ||
866 | */ | ||
867 | GSM_Error (*GetManufacturer) (GSM_StateMachine *s); | ||
868 | /** | ||
869 | * Reads model from phone. | ||
870 | */ | ||
871 | GSM_Error (*GetModel) (GSM_StateMachine *s); | ||
872 | /** | ||
873 | * Reads firmware information from phone. | ||
874 | */ | ||
875 | GSM_Error (*GetFirmware)(GSM_StateMachine *s); | ||
876 | /** | ||
877 | * Reads IMEI/serial number from phone. | ||
878 | */ | ||
879 | GSM_Error (*GetIMEI) (GSM_StateMachine *s); | ||
880 | /** | ||
881 | * Gets date and time from phone. | ||
882 | */ | ||
883 | GSM_Error (*GetOriginalIMEI) (GSM_StateMachine *s, char *value); | ||
884 | /** | ||
885 | * Gets month when device was manufactured. | ||
886 | */ | ||
887 | GSM_Error (*GetManufactureMonth)(GSM_StateMachine *s, char *value); | ||
888 | /** | ||
889 | * Gets product code of device. | ||
890 | */ | ||
891 | GSM_Error (*GetProductCode) (GSM_StateMachine *s, char *value); | ||
892 | /** | ||
893 | * Gets hardware information about device. | ||
894 | */ | ||
895 | GSM_Error (*GetHardware)(GSM_StateMachine *s, char *value); | ||
896 | /** | ||
897 | * Gets PPM (Post Programmable Memory) info from phone | ||
898 | * (in other words for Nokia get, which language pack is in phone) | ||
899 | */ | ||
900 | GSM_Error (*GetPPM) (GSM_StateMachine *s, char *value); | ||
901 | /** | ||
902 | * Gets SIM IMSI from phone. | ||
903 | */ | ||
904 | GSM_Error (*GetSIMIMSI) (GSM_StateMachine *s, char *IMSI); | ||
905 | /** | ||
906 | * Reads date and time from phone. | ||
907 | */ | ||
908 | GSM_Error (*GetDateTime)(GSM_StateMachine *s, GSM_DateTime *date_time); | ||
909 | /** | ||
910 | * Sets date and time in phone. | ||
911 | */ | ||
912 | GSM_Error (*SetDateTime)(GSM_StateMachine *s, GSM_DateTime *date_time); | ||
913 | /** | ||
914 | * Reads alarm set in phone. | ||
915 | */ | ||
916 | GSM_Error (*GetAlarm) (GSM_StateMachine *s, GSM_Alarm*alarm); | ||
917 | /** | ||
918 | * Sets alarm in phone. | ||
919 | */ | ||
920 | GSM_Error (*SetAlarm) (GSM_StateMachine *s, GSM_Alarm *alarm); | ||
921 | /** | ||
922 | * Gets locale from phone. | ||
923 | */ | ||
924 | GSM_Error (*GetLocale) (GSM_StateMachine *s, GSM_Locale *locale); | ||
925 | /** | ||
926 | * Sets locale of phone. | ||
927 | */ | ||
928 | GSM_Error (*SetLocale) (GSM_StateMachine *s, GSM_Locale *locale); | ||
929 | /** | ||
930 | * Emulates key press or key release. | ||
931 | */ | ||
932 | GSM_Error (*PressKey) (GSM_StateMachine *s, GSM_KeyCode Key, bool Press); | ||
933 | /** | ||
934 | * Performs phone reset. | ||
935 | */ | ||
936 | GSM_Error (*Reset) (GSM_StateMachine *s, bool hard); | ||
937 | /** | ||
938 | * Resets phone settings. | ||
939 | */ | ||
940 | GSM_Error (*ResetPhoneSettings) (GSM_StateMachine *s, GSM_ResetSettingsType Type); | ||
941 | /** | ||
942 | * Enters security code (PIN, PUK,...) . | ||
943 | */ | ||
944 | GSM_Error (*EnterSecurityCode) (GSM_StateMachine *s, GSM_SecurityCode Code); | ||
945 | /** | ||
946 | * Queries whether some security code needs to be entered./ | ||
947 | */ | ||
948 | GSM_Error (*GetSecurityStatus) (GSM_StateMachine *s, GSM_SecurityCodeType *Status); | ||
949 | /** | ||
950 | * Acquired display status. | ||
951 | */ | ||
952 | GSM_Error (*GetDisplayStatus) (GSM_StateMachine *s, GSM_DisplayFeatures *features); | ||
953 | /** | ||
954 | * Enables network auto login. | ||
955 | */ | ||
956 | GSM_Error (*SetAutoNetworkLogin)(GSM_StateMachine *s); | ||
957 | /** | ||
958 | * Gets information about batery charge and phone charging state. | ||
959 | */ | ||
960 | GSM_Error (*GetBatteryCharge) (GSM_StateMachine *s, GSM_BatteryCharge *bat); | ||
961 | /** | ||
962 | * Reads signal quality (strength and error rate). | ||
963 | */ | ||
964 | GSM_Error (*GetSignalQuality) (GSM_StateMachine *s, GSM_SignalQuality *sig); | ||
965 | /** | ||
966 | * Gets network information. | ||
967 | */ | ||
968 | GSM_Error (*GetNetworkInfo) (GSM_StateMachine *s, GSM_NetworkInfo *netinfo); | ||
969 | /** | ||
970 | * Reads category from phone. | ||
971 | */ | ||
972 | GSM_Error (*GetCategory)(GSM_StateMachine *s, GSM_Category *Category); | ||
973 | /** | ||
974 | * Adds category to phone. | ||
975 | */ | ||
976 | GSM_Error (*AddCategory)(GSM_StateMachine *s, GSM_Category *Category); | ||
977 | /** | ||
978 | * Reads category status (number of used entries) from phone. | ||
979 | */ | ||
980 | GSM_Error (*GetCategoryStatus) (GSM_StateMachine *s, GSM_CategoryStatus *Status); | ||
981 | /** | ||
982 | * Gets memory (phonebooks or calls) status (eg. number of used and | ||
983 | * free entries). | ||
984 | */ | ||
985 | GSM_Error (*GetMemoryStatus) (GSM_StateMachine *s, GSM_MemoryStatus *status); | ||
986 | /** | ||
987 | * Reads entry from memory (phonebooks or calls). Which entry should | ||
988 | * be read is defined in entry. | ||
989 | */ | ||
990 | GSM_Error (*GetMemory) (GSM_StateMachine *s, GSM_MemoryEntry *entry); | ||
991 | /** | ||
992 | * Reads entry from memory (phonebooks or calls). Which entry should | ||
993 | * be read is defined in entry. This can be easily used for reading all entries. | ||
994 | */ | ||
995 | GSM_Error (*GetNextMemory) (GSM_StateMachine *s, GSM_MemoryEntry *entry, bool start); | ||
996 | /** | ||
997 | * Sets memory (phonebooks or calls) entry. | ||
998 | */ | ||
999 | GSM_Error (*SetMemory) (GSM_StateMachine *s, GSM_MemoryEntry *entry); | ||
1000 | /** | ||
1001 | * Deletes memory (phonebooks or calls) entry. | ||
1002 | */ | ||
1003 | GSM_Error (*AddMemory) (GSM_StateMachine *s, GSM_MemoryEntry *entry); | ||
1004 | /** | ||
1005 | * Deletes memory (phonebooks or calls) entry. | ||
1006 | */ | ||
1007 | GSM_Error (*DeleteMemory) (GSM_StateMachine *s, GSM_MemoryEntry *entry); | ||
1008 | /** | ||
1009 | * Deletes all memory (phonebooks or calls) entries of specified type. | ||
1010 | */ | ||
1011 | GSM_Error (*DeleteAllMemory) (GSM_StateMachine *s, GSM_MemoryType MemoryType); | ||
1012 | /** | ||
1013 | * Gets speed dial. | ||
1014 | */ | ||
1015 | GSM_Error (*GetSpeedDial) (GSM_StateMachine *s, GSM_SpeedDial *Speed); | ||
1016 | /** | ||
1017 | * Sets speed dial. | ||
1018 | */ | ||
1019 | GSM_Error (*SetSpeedDial) (GSM_StateMachine *s, GSM_SpeedDial *Speed); | ||
1020 | /** | ||
1021 | * Gets SMS Service Center number and SMS settings. | ||
1022 | */ | ||
1023 | GSM_Error (*GetSMSC) (GSM_StateMachine *s, GSM_SMSC *smsc); | ||
1024 | /** | ||
1025 | * Sets SMS Service Center number and SMS settings. | ||
1026 | */ | ||
1027 | GSM_Error (*SetSMSC) (GSM_StateMachine *s, GSM_SMSC *smsc); | ||
1028 | /** | ||
1029 | * Gets information about SMS memory (read/unread/size of memory for | ||
1030 | * both SIM and phone). | ||
1031 | */ | ||
1032 | GSM_Error (*GetSMSStatus) (GSM_StateMachine *s, GSM_SMSMemoryStatus *status); | ||
1033 | /** | ||
1034 | * Reads SMS message. | ||
1035 | */ | ||
1036 | GSM_Error (*GetSMS) (GSM_StateMachine *s, GSM_MultiSMSMessage *sms); | ||
1037 | /** | ||
1038 | * Reads next (or first if start set) SMS message. This might be | ||
1039 | * faster for some phones than using @ref GetSMS for each message. | ||
1040 | */ | ||
1041 | GSM_Error (*GetNextSMS) (GSM_StateMachine *s, GSM_MultiSMSMessage *sms, bool start); | ||
1042 | /** | ||
1043 | * Sets SMS. | ||
1044 | */ | ||
1045 | GSM_Error (*SetSMS) (GSM_StateMachine *s, GSM_SMSMessage *sms); | ||
1046 | /** | ||
1047 | * Adds SMS to specified folder. | ||
1048 | */ | ||
1049 | GSM_Error (*AddSMS) (GSM_StateMachine *s, GSM_SMSMessage *sms); | ||
1050 | /** | ||
1051 | * Deletes SMS. | ||
1052 | */ | ||
1053 | GSM_Error (*DeleteSMS) (GSM_StateMachine *s, GSM_SMSMessage *sms); | ||
1054 | /** | ||
1055 | * Sends SMS. | ||
1056 | */ | ||
1057 | GSM_Error (*SendSMS) (GSM_StateMachine *s, GSM_SMSMessage *sms); | ||
1058 | /** | ||
1059 | * Sends SMS already saved in phone. | ||
1060 | */ | ||
1061 | GSM_Error (*SendSavedSMS)(GSM_StateMachine *s, int Folder, int Location); | ||
1062 | /** | ||
1063 | * Enable/disable notification on incoming SMS. | ||
1064 | */ | ||
1065 | GSM_Error (*SetIncomingSMS) (GSM_StateMachine *s, bool enable); | ||
1066 | /** | ||
1067 | * Gets network information from phone. | ||
1068 | */ | ||
1069 | GSM_Error (*SetIncomingCB) (GSM_StateMachine *s, bool enable); | ||
1070 | /** | ||
1071 | * Returns SMS folders information. | ||
1072 | */ | ||
1073 | GSM_Error (*GetSMSFolders) (GSM_StateMachine *s, GSM_SMSFolders *folders); | ||
1074 | /** | ||
1075 | * Creates SMS folder. | ||
1076 | */ | ||
1077 | GSM_Error (*AddSMSFolder) (GSM_StateMachine *s, unsigned char *name); | ||
1078 | /** | ||
1079 | * Deletes SMS folder. | ||
1080 | */ | ||
1081 | GSM_Error (*DeleteSMSFolder) (GSM_StateMachine *s, int ID); | ||
1082 | /** | ||
1083 | * Dials number and starts voice call. | ||
1084 | */ | ||
1085 | GSM_Error (*DialVoice) (GSM_StateMachine *s, char *Number, GSM_CallShowNumber ShowNumber); | ||
1086 | /** | ||
1087 | * Accept current incoming call. | ||
1088 | */ | ||
1089 | GSM_Error (*AnswerCall) (GSM_StateMachine *s, int ID, bool all); | ||
1090 | /** | ||
1091 | * Deny current incoming call. | ||
1092 | */ | ||
1093 | GSM_Error (*CancelCall) (GSM_StateMachine *s, int ID, bool all); | ||
1094 | /** | ||
1095 | * Holds call. | ||
1096 | */ | ||
1097 | GSM_Error (*HoldCall) (GSM_StateMachine *s, int ID); | ||
1098 | /** | ||
1099 | * Unholds call. | ||
1100 | */ | ||
1101 | GSM_Error (*UnholdCall) (GSM_StateMachine *s, int ID); | ||
1102 | /** | ||
1103 | * Initiates conference call. | ||
1104 | */ | ||
1105 | GSM_Error (*ConferenceCall) (GSM_StateMachine *s, int ID); | ||
1106 | /** | ||
1107 | * Splits call. | ||
1108 | */ | ||
1109 | GSM_Error (*SplitCall) (GSM_StateMachine *s, int ID); | ||
1110 | /** | ||
1111 | * Transfers call. | ||
1112 | */ | ||
1113 | GSM_Error (*TransferCall) (GSM_StateMachine *s, int ID, bool next); | ||
1114 | /** | ||
1115 | * Switches call. | ||
1116 | */ | ||
1117 | GSM_Error (*SwitchCall) (GSM_StateMachine *s, int ID, bool next); | ||
1118 | /** | ||
1119 | * Gets call diverts. | ||
1120 | */ | ||
1121 | GSM_Error (*GetCallDivert) (GSM_StateMachine *s, GSM_MultiCallDivert *divert); | ||
1122 | /** | ||
1123 | * Sets call diverts. | ||
1124 | */ | ||
1125 | GSM_Error (*SetCallDivert) (GSM_StateMachine *s, GSM_MultiCallDivert *divert); | ||
1126 | /** | ||
1127 | * Cancels all diverts. | ||
1128 | */ | ||
1129 | GSM_Error (*CancelAllDiverts) (GSM_StateMachine *s); | ||
1130 | /** | ||
1131 | * Activates/deactivates noticing about incoming calls. | ||
1132 | */ | ||
1133 | GSM_Error (*SetIncomingCall) (GSM_StateMachine *s, bool enable); | ||
1134 | /** | ||
1135 | * Activates/deactivates noticing about incoming USSDs (UnStructured Supplementary Services). | ||
1136 | */ | ||
1137 | GSM_Error (*SetIncomingUSSD) (GSM_StateMachine *s, bool enable); | ||
1138 | /** | ||
1139 | * Sends DTMF (Dual Tone Multi Frequency) tone. | ||
1140 | */ | ||
1141 | GSM_Error (*SendDTMF) (GSM_StateMachine *s, char *sequence); | ||
1142 | /** | ||
1143 | * Gets ringtone from phone. | ||
1144 | */ | ||
1145 | GSM_Error (*GetRingtone)(GSM_StateMachine *s, GSM_Ringtone *Ringtone, bool PhoneRingtone); | ||
1146 | /** | ||
1147 | * Sets ringtone in phone. | ||
1148 | */ | ||
1149 | GSM_Error (*SetRingtone)(GSM_StateMachine *s, GSM_Ringtone *Ringtone, int *maxlength); | ||
1150 | /** | ||
1151 | * Acquires ringtone informaiton. | ||
1152 | */ | ||
1153 | GSM_Error (*GetRingtonesInfo) (GSM_StateMachine *s, GSM_AllRingtonesInfo *Info); | ||
1154 | /** | ||
1155 | * Deletes user defined ringtones from phone. | ||
1156 | */ | ||
1157 | GSM_Error (*DeleteUserRingtones)(GSM_StateMachine *s); | ||
1158 | /** | ||
1159 | * Plays tone. | ||
1160 | */ | ||
1161 | GSM_Error (*PlayTone) (GSM_StateMachine *s, int Herz, unsigned char Volume, bool start); | ||
1162 | /** | ||
1163 | * Reads WAP bookmark. | ||
1164 | */ | ||
1165 | GSM_Error (*GetWAPBookmark) (GSM_StateMachine *s, GSM_WAPBookmark *bookmark); | ||
1166 | /** | ||
1167 | * Sets WAP bookmark. | ||
1168 | */ | ||
1169 | GSM_Error (*SetWAPBookmark) (GSM_StateMachine *s, GSM_WAPBookmark *bookmark); | ||
1170 | /** | ||
1171 | * Deletes WAP bookmark. | ||
1172 | */ | ||
1173 | GSM_Error (*DeleteWAPBookmark) (GSM_StateMachine *s, GSM_WAPBookmark *bookmark); | ||
1174 | /** | ||
1175 | * Acquires WAP settings. | ||
1176 | */ | ||
1177 | GSM_Error (*GetWAPSettings) (GSM_StateMachine *s, GSM_MultiWAPSettings *settings); | ||
1178 | /** | ||
1179 | * Changes WAP settings. | ||
1180 | */ | ||
1181 | GSM_Error (*SetWAPSettings) (GSM_StateMachine *s, GSM_MultiWAPSettings *settings); | ||
1182 | /** | ||
1183 | * Acquires MMS settings. | ||
1184 | */ | ||
1185 | GSM_Error (*GetMMSSettings) (GSM_StateMachine *s, GSM_MultiWAPSettings *settings); | ||
1186 | /** | ||
1187 | * Changes MMS settings. | ||
1188 | */ | ||
1189 | GSM_Error (*SetMMSSettings) (GSM_StateMachine *s, GSM_MultiWAPSettings *settings); | ||
1190 | /** | ||
1191 | * Acquires SyncML settings. | ||
1192 | */ | ||
1193 | GSM_Error (*GetSyncMLSettings) (GSM_StateMachine *s, GSM_SyncMLSettings *settings); | ||
1194 | /** | ||
1195 | * Changes SyncML settings. | ||
1196 | */ | ||
1197 | GSM_Error (*SetSyncMLSettings) (GSM_StateMachine *s, GSM_SyncMLSettings *settings); | ||
1198 | /** | ||
1199 | * Acquires chat/presence settings. | ||
1200 | */ | ||
1201 | GSM_Error (*GetChatSettings) (GSM_StateMachine *s, GSM_ChatSettings *settings); | ||
1202 | /** | ||
1203 | * Changes chat/presence settings. | ||
1204 | */ | ||
1205 | GSM_Error (*SetChatSettings) (GSM_StateMachine *s, GSM_ChatSettings *settings); | ||
1206 | /** | ||
1207 | * Gets bitmap. | ||
1208 | */ | ||
1209 | GSM_Error (*GetBitmap) (GSM_StateMachine *s, GSM_Bitmap *Bitmap); | ||
1210 | /** | ||
1211 | * Sets bitmap. | ||
1212 | */ | ||
1213 | GSM_Error (*SetBitmap) (GSM_StateMachine *s, GSM_Bitmap *Bitmap); | ||
1214 | /** | ||
1215 | * Gets status of ToDos (count of used entries). | ||
1216 | */ | ||
1217 | GSM_Error (*GetToDoStatus) (GSM_StateMachine *s, GSM_ToDoStatus *status); | ||
1218 | /** | ||
1219 | * Reads ToDo from phone. | ||
1220 | */ | ||
1221 | GSM_Error (*GetToDo) (GSM_StateMachine *s, GSM_ToDoEntry *ToDo); | ||
1222 | /** | ||
1223 | * Reads ToDo from phone. | ||
1224 | */ | ||
1225 | GSM_Error (*GetNextToDo)(GSM_StateMachine *s, GSM_ToDoEntry *ToDo, bool start); | ||
1226 | /** | ||
1227 | * Sets ToDo in phone. | ||
1228 | */ | ||
1229 | GSM_Error (*SetToDo) (GSM_StateMachine *s, GSM_ToDoEntry *ToDo); | ||
1230 | /** | ||
1231 | * Adds ToDo in phone. | ||
1232 | */ | ||
1233 | GSM_Error (*AddToDo) (GSM_StateMachine *s, GSM_ToDoEntry *ToDo); | ||
1234 | /** | ||
1235 | * Deletes ToDo entry in phone. | ||
1236 | */ | ||
1237 | GSM_Error (*DeleteToDo) (GSM_StateMachine *s, GSM_ToDoEntry *ToDo); | ||
1238 | /** | ||
1239 | * Deletes all todo entries in phone. | ||
1240 | */ | ||
1241 | GSM_Error (*DeleteAllToDo) (GSM_StateMachine *s); | ||
1242 | /** | ||
1243 | * Retrieves calendar status (number of used entries). | ||
1244 | */ | ||
1245 | GSM_Error (*GetCalendarStatus) (GSM_StateMachine *s, GSM_CalendarStatus *Status); | ||
1246 | /** | ||
1247 | * Retrieves calendar entry. | ||
1248 | */ | ||
1249 | GSM_Error (*GetCalendar)(GSM_StateMachine *s, GSM_CalendarEntry *Note); | ||
1250 | /** | ||
1251 | * Retrieves calendar entry. This is useful for continuous reading of all | ||
1252 | * calendar entries. | ||
1253 | */ | ||
1254 | GSM_Error (*GetNextCalendar) (GSM_StateMachine *s, GSM_CalendarEntry *Note, bool start); | ||
1255 | /** | ||
1256 | * Sets calendar entry | ||
1257 | */ | ||
1258 | GSM_Error (*SetCalendar)(GSM_StateMachine *s, GSM_CalendarEntry *Note); | ||
1259 | /** | ||
1260 | * Adds calendar entry. | ||
1261 | */ | ||
1262 | GSM_Error (*AddCalendar)(GSM_StateMachine *s, GSM_CalendarEntry *Note); | ||
1263 | /** | ||
1264 | * Deletes calendar entry. | ||
1265 | */ | ||
1266 | GSM_Error (*DeleteCalendar) (GSM_StateMachine *s, GSM_CalendarEntry *Note); | ||
1267 | /** | ||
1268 | * Deletes all calendar entries. | ||
1269 | */ | ||
1270 | GSM_Error (*DeleteAllCalendar) (GSM_StateMachine *s); | ||
1271 | /** | ||
1272 | * Reads calendar settings. | ||
1273 | */ | ||
1274 | GSM_Error (*GetCalendarSettings)(GSM_StateMachine *s, GSM_CalendarSettings *settings); | ||
1275 | /** | ||
1276 | * Sets calendar settings. | ||
1277 | */ | ||
1278 | GSM_Error (*SetCalendarSettings)(GSM_StateMachine *s, GSM_CalendarSettings *settings); | ||
1279 | /** | ||
1280 | * Gets note. | ||
1281 | */ | ||
1282 | GSM_Error (*GetNote) (GSM_StateMachine *s, GSM_NoteEntry *Note, bool refresh); | ||
1283 | /** | ||
1284 | * Reads profile. | ||
1285 | */ | ||
1286 | GSM_Error (*GetProfile) (GSM_StateMachine *s, GSM_Profile *Profile); | ||
1287 | /** | ||
1288 | * Updates profile. | ||
1289 | */ | ||
1290 | GSM_Error (*SetProfile) (GSM_StateMachine *s, GSM_Profile *Profile); | ||
1291 | /** | ||
1292 | * Reads FM station. | ||
1293 | */ | ||
1294 | GSM_Error (*GetFMStation) (GSM_StateMachine *s, GSM_FMStation *FMStation); | ||
1295 | /** | ||
1296 | * Sets FM station. | ||
1297 | */ | ||
1298 | GSM_Error (*SetFMStation) (GSM_StateMachine *s, GSM_FMStation *FMStation); | ||
1299 | /** | ||
1300 | * Clears defined FM stations. | ||
1301 | */ | ||
1302 | GSM_Error (*ClearFMStations) (GSM_StateMachine *s); | ||
1303 | /** | ||
1304 | * Gets next filename from filesystem. | ||
1305 | */ | ||
1306 | GSM_Error (*GetNextFileFolder) (GSM_StateMachine *s, GSM_File *File, bool start); | ||
1307 | /** | ||
1308 | * Gets file part from filesystem. | ||
1309 | */ | ||
1310 | GSM_Error (*GetFilePart)(GSM_StateMachine *s, GSM_File *File); | ||
1311 | /** | ||
1312 | * Adds file part to filesystem. | ||
1313 | */ | ||
1314 | GSM_Error (*AddFilePart)(GSM_StateMachine *s, GSM_File *File, int *Pos); | ||
1315 | /** | ||
1316 | * Acquires filesystem status. | ||
1317 | */ | ||
1318 | GSM_Error (*GetFileSystemStatus)(GSM_StateMachine *s, GSM_FileSystemStatus *Status); | ||
1319 | /** | ||
1320 | * Deletes file from filessytem. | ||
1321 | */ | ||
1322 | GSM_Error (*DeleteFile) (GSM_StateMachine *s, unsigned char *ID); | ||
1323 | /** | ||
1324 | * Adds folder to filesystem. | ||
1325 | */ | ||
1326 | GSM_Error (*AddFolder) (GSM_StateMachine *s, GSM_File *File); | ||
1327 | /** | ||
1328 | * Gets GPRS access point. | ||
1329 | */ | ||
1330 | GSM_Error (*GetGPRSAccessPoint) (GSM_StateMachine *s, GSM_GPRSAccessPoint *point); | ||
1331 | /** | ||
1332 | * Sets GPRS access point. | ||
1333 | */ | ||
1334 | GSM_Error (*SetGPRSAccessPoint) (GSM_StateMachine *s, GSM_GPRSAccessPoint *point); | ||
1335 | } GSM_Phone_Functions; | ||
1336 | |||
1337 | extern GSM_Phone_Functions NAUTOPhone; | ||
1338 | #ifdef GSM_ENABLE_NOKIA3320 | ||
1339 | extern GSM_Phone_Functions N3320Phone; | ||
1340 | #endif | ||
1341 | #ifdef GSM_ENABLE_NOKIA3650 | ||
1342 | extern GSM_Phone_Functions N3650Phone; | ||
1343 | #endif | ||
1344 | #ifdef GSM_ENABLE_NOKIA6110 | ||
1345 | extern GSM_Phone_Functions N6110Phone; | ||
1346 | #endif | ||
1347 | #ifdef GSM_ENABLE_NOKIA6510 | ||
1348 | extern GSM_Phone_Functions N6510Phone; | ||
1349 | #endif | ||
1350 | #ifdef GSM_ENABLE_NOKIA7110 | ||
1351 | extern GSM_Phone_Functions N7110Phone; | ||
1352 | #endif | ||
1353 | #ifdef GSM_ENABLE_NOKIA9210 | ||
1354 | extern GSM_Phone_Functions N9210Phone; | ||
1355 | #endif | ||
1356 | #ifdef GSM_ENABLE_ATGEN | ||
1357 | extern GSM_Phone_Functions ATGENPhone; | ||
1358 | #endif | ||
1359 | #ifdef GSM_ENABLE_ALCATEL | ||
1360 | extern GSM_Phone_Functions ALCATELPhone; | ||
1361 | #endif | ||
1362 | #ifdef GSM_ENABLE_OBEXGEN | ||
1363 | extern GSM_Phone_Functions OBEXGENPhone; | ||
1364 | #endif | ||
1365 | #ifdef GSM_ENABLE_MROUTERGEN | ||
1366 | extern GSM_Phone_Functions MROUTERGENPhone; | ||
1367 | #endif | ||
1368 | |||
1369 | typedef struct { | ||
1370 | GSM_Phone_Data Data; | ||
1371 | GSM_Phone_Functions*Functions; | ||
1372 | } GSM_Phone; | ||
1373 | |||
1374 | /* --------------------------- User layer ---------------------------------- */ | ||
1375 | |||
1376 | struct _GSM_User { | ||
1377 | GSM_Reply_Function *UserReplyFunctions; | ||
1378 | |||
1379 | void (*IncomingCall) (char *Device, GSM_Call call); | ||
1380 | void (*IncomingSMS)(char *Device, GSM_SMSMessage sms); | ||
1381 | void (*IncomingCB) (char *Device, GSM_CBMessage cb); | ||
1382 | void (*IncomingUSSD) (char *Device, char *Text); | ||
1383 | void (*SendSMSStatus) (char *Device, int status, int MessageReference); | ||
1384 | }; | ||
1385 | |||
1386 | /* --------------------------- Statemachine layer -------------------------- */ | ||
1387 | |||
1388 | typedef enum { | ||
1389 | GCT_MBUS2=1, | ||
1390 | GCT_FBUS2, | ||
1391 | GCT_FBUS2DLR3, | ||
1392 | GCT_FBUS2DKU5, | ||
1393 | GCT_FBUS2PL2303, | ||
1394 | GCT_FBUS2BLUE, | ||
1395 | GCT_FBUS2IRDA, | ||
1396 | GCT_PHONETBLUE, | ||
1397 | GCT_AT, | ||
1398 | GCT_MROUTERBLUE, | ||
1399 | |||
1400 | GCT_IRDAOBEX, | ||
1401 | GCT_IRDAAT, | ||
1402 | GCT_IRDAPHONET, | ||
1403 | GCT_BLUEFBUS2, | ||
1404 | GCT_BLUEAT, | ||
1405 | GCT_BLUEPHONET, | ||
1406 | GCT_BLUEOBEX | ||
1407 | } GSM_ConnectionType; | ||
1408 | |||
1409 | typedef struct { | ||
1410 | /* Config file (or Registry or...) variables */ | ||
1411 | char Model[50]; /* Model from config file */ | ||
1412 | char DebugLevel[50]; /* Debug level */ | ||
1413 | char *Device; /* Device name from config file */ | ||
1414 | char *Connection; /* Connection type as string */ | ||
1415 | char *SyncTime; /* Synchronize time on startup? */ | ||
1416 | char *LockDevice; /* Lock device ? (Unix) */ | ||
1417 | char *DebugFile; /* Name of debug file */ | ||
1418 | char *Localize; /* Name of localisation file */ | ||
1419 | char *StartInfo; /* Display something during start ? */ | ||
1420 | bool UseGlobalDebugFile;/* Should we use global debug file?*/ | ||
1421 | bool DefaultModel; | ||
1422 | bool DefaultDebugLevel; | ||
1423 | bool DefaultDevice; | ||
1424 | bool DefaultConnection; | ||
1425 | bool DefaultSyncTime; | ||
1426 | bool DefaultLockDevice; | ||
1427 | bool DefaultDebugFile; | ||
1428 | bool DefaultLocalize; | ||
1429 | bool DefaultStartInfo; | ||
1430 | } GSM_Config; | ||
1431 | |||
1432 | #define MAX_CONFIG_NUM 5 | ||
1433 | |||
1434 | struct _GSM_StateMachine { | ||
1435 | GSM_ConnectionType ConnectionType; /* Type of connection as int */ | ||
1436 | char *LockFile; /* Lock file name for Unix */ | ||
1437 | Debug_Info di; /* Debug information */ | ||
1438 | bool opened; /* Is connection opened ? */ | ||
1439 | GSM_Config Config[MAX_CONFIG_NUM + 1]; | ||
1440 | GSM_Config *CurrentConfig; /* Config file (or Registry or...) variables */ | ||
1441 | int ConfigNum; | ||
1442 | INI_Section *msg; /* Localisation strings structure */ | ||
1443 | int ReplyNum; /* How many times make sth. */ | ||
1444 | int Speed; /* For some protocols used speed */ | ||
1445 | |||
1446 | GSM_Device Device; | ||
1447 | GSM_Protocol Protocol; | ||
1448 | GSM_Phone Phone; | ||
1449 | GSM_User User; | ||
1450 | }; | ||
1451 | |||
1452 | /* ------------------------ Other general definitions ---------------------- */ | ||
1453 | |||
1454 | GSM_Error GSM_RegisterAllPhoneModules(GSM_StateMachine *s); | ||
1455 | |||
1456 | GSM_Error GSM_InitConnection (GSM_StateMachine *s, int ReplyNum); | ||
1457 | GSM_Error GSM_TerminateConnection(GSM_StateMachine *s); | ||
1458 | |||
1459 | int GSM_ReadDevice (GSM_StateMachine *s, bool wait); | ||
1460 | |||
1461 | GSM_Error GSM_WaitForOnce (GSM_StateMachine *s, unsigned char *buffer, | ||
1462 | int length, unsigned char type, int time); | ||
1463 | |||
1464 | GSM_Error GSM_WaitFor (GSM_StateMachine *s, unsigned char *buffer, | ||
1465 | int length, unsigned char type, int time, | ||
1466 | GSM_Phone_RequestID request); | ||
1467 | |||
1468 | GSM_Error GSM_DispatchMessage (GSM_StateMachine *s); | ||
1469 | |||
1470 | INI_Section *GSM_FindGammuRC(void); | ||
1471 | |||
1472 | bool GSM_ReadConfig (INI_Section *cfg_info, GSM_Config *cfg, int num); | ||
1473 | |||
1474 | void GSM_DumpMessageLevel2 (GSM_StateMachine *s, unsigned char *message, int messagesize, int type); | ||
1475 | void GSM_DumpMessageLevel3 (GSM_StateMachine *s, unsigned char *message, int messagesize, int type); | ||
1476 | |||
1477 | /* ---------------------- Phone features ----------------------------------- */ | ||
1478 | |||
1479 | typedef enum { | ||
1480 | /* n6110.c */ | ||
1481 | F_CAL33 = 1, /* Calendar,3310 style - 10 reminders, Unicode, 3 coding types*/ | ||
1482 | F_CAL52, /* Calendar,5210 style - full Unicode, etc. */ | ||
1483 | F_CAL82, /* Calendar,8250 style - "normal", but with Unicode */ | ||
1484 | F_RING_SM, /* Ringtones returned in SM format - 33xx */ | ||
1485 | F_NORING, /* No ringtones */ | ||
1486 | F_NOPBKUNICODE, /* No phonebook in Unicode */ | ||
1487 | F_NOWAP, /* No WAP */ | ||
1488 | F_NOCALLER, /* No caller groups */ | ||
1489 | F_NOPICTURE, /* No Picture Images */ | ||
1490 | F_NOPICTUREUNI, /* No Picture Images text in Unicode */ | ||
1491 | F_NOSTARTUP, /* No startup logo */ | ||
1492 | F_NOCALENDAR, /* No calendar */ | ||
1493 | F_NOSTARTANI, /* Startup logo is not animated */ | ||
1494 | F_POWER_BATT, /* Network and battery level get from netmonitor */ | ||
1495 | F_PROFILES33, /* Phone profiles in 3310 style */ | ||
1496 | F_PROFILES51, /* Phone profiles in 5110 style */ | ||
1497 | F_MAGICBYTES, /* Phone can make authentication with magic bytes */ | ||
1498 | F_NODTMF, /* Phone can't send DTMF */ | ||
1499 | F_DISPSTATUS, /* Phone return display status */ | ||
1500 | F_NOCALLINFO, | ||
1501 | |||
1502 | /* n3320.c */ | ||
1503 | F_DAYMONTH, /* Day and month reversed in pbk, when compare to GSM models*/ | ||
1504 | |||
1505 | /* n6510.c */ | ||
1506 | F_PBK35, /* Phonebook in 3510 style with ringtones ID */ | ||
1507 | F_PBKIMG, /* Phonebook in 7250 style with picture ID */ | ||
1508 | F_PBKTONEGAL,/* Phonebook with selecting ringtones from gallery */ | ||
1509 | F_PBKSMSLIST, /* Phonebook with SMS list */ | ||
1510 | F_PBKUSER, /* Phonebook with user ID */ | ||
1511 | F_RADIO, /* Phone with FM radio */ | ||
1512 | F_TODO63, /* ToDo in 6310 style - 0x55 msg type */ | ||
1513 | F_TODO66, /* ToDo in 6610 style - like calendar, with date and other*/ | ||
1514 | F_NOMIDI, /* No ringtones in MIDI */ | ||
1515 | F_BLUETOOTH, /* Bluetooth support */ | ||
1516 | F_NOFILESYSTEM, /* No images, ringtones, java saved in special filesystem*/ | ||
1517 | F_NOMMS, /* No MMS sets in phone */ | ||
1518 | F_NOGPRSPOINT, /* GPRS point are not useable */ | ||
1519 | F_CAL35, /* Calendar,3510 style - Reminder,Call,Birthday */ | ||
1520 | F_CAL65, /* Calendar,6510 style - CBMM, method 3 */ | ||
1521 | F_WAPMMSPROXY, /* WAP & MMS settings contains first & second proxy */ | ||
1522 | |||
1523 | /* n6510.c && n7110.c */ | ||
1524 | F_VOICETAGS, /* Voice tags available */ | ||
1525 | F_CAL62, /* Calendar,6210 style - Call,Birthday,Memo,Meeting */ | ||
1526 | |||
1527 | /* AT modules */ | ||
1528 | F_SMSONLYSENT, /* Phone supports only sent/unsent messages */ | ||
1529 | F_BROKENCPBS, /* CPBS on some memories can hang phone */ | ||
1530 | F_M20SMS, /* Siemens M20 like SMS handling */ | ||
1531 | F_SLOWWRITE, /* Use slower writing which some phone need */ | ||
1532 | F_SMSME900, /* SMS in ME start from location 900 - case of Sagem */ | ||
1533 | F_ALCATEL /* Phone supports Alcatel protocol */ | ||
1534 | } Feature; | ||
1535 | |||
1536 | /* For models table */ | ||
1537 | struct _OnePhoneModel { | ||
1538 | char *model; | ||
1539 | char *number; | ||
1540 | char *irdamodel; | ||
1541 | Feature features[12]; | ||
1542 | }; | ||
1543 | |||
1544 | bool IsPhoneFeatureAvailable(OnePhoneModel *model, Feature feature); | ||
1545 | OnePhoneModel *GetModelData (char *model, char *number, char *irdamodel); | ||
1546 | |||
1547 | #ifdef __GNUC__ | ||
1548 | __attribute__((format(printf, 2, 3))) | ||
1549 | #endif | ||
1550 | int smprintf(GSM_StateMachine *s, const char *format, ...); | ||
1551 | |||
1552 | void GSM_OSErrorInfo(GSM_StateMachine *s, char *description); | ||
1553 | |||
1554 | #ifdef GSM_ENABLE_BACKUP | ||
1555 | void GSM_GetPhoneFeaturesForBackup(GSM_StateMachine *s, GSM_Backup_Info *info); | ||
1556 | #endif | ||
1557 | |||
1558 | #endif | ||
1559 | |||
1560 | /* How should editor hadle tabs in this file? Add editor commands here. | ||
1561 | * vim: noexpandtab sw=8 ts=8 sts=8: | ||
1562 | */ | ||