1 /*
2
3 G N O K I I
4
5 A Linux/Unix toolset and driver for the mobile phones.
6
7 This file is part of gnokii.
8
9 Gnokii is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
13
14 Gnokii is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with gnokii; if not, write to the Free Software
21 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22
23 Copyright (C) 1999-2000 Hugh Blemings & Pavel Janik ml.
24 Copyright (C) 2001-2004 Pawel Kot
25 Copyright (C) 2001 Chris Kemp, Pavel Machek
26 Copyright (C) 2002-2004 BORBELY Zoltan
27
28 */
29
30 #include "config.h"
31
32 #include <string.h>
33 #include "compat.h"
34 #include "gnokii.h"
35
unimplemented(void)36 gn_error unimplemented(void)
37 {
38 return GN_ERR_NOTIMPLEMENTED;
39 }
40
gn_str2memory_type(const char * s)41 GNOKII_API gn_memory_type gn_str2memory_type(const char *s)
42 {
43 if (!s)
44 return GN_MT_XX;
45 #define X(a) if (!strcmp(s, #a)) return GN_MT_##a;
46 X(ME);
47 X(SM);
48 X(FD);
49 X(ON);
50 X(EN);
51 X(DC);
52 X(RC);
53 X(MC);
54 X(LD);
55 X(BD);
56 X(SD);
57 X(MT);
58 X(TA);
59 X(CB);
60 X(IN);
61 X(OU);
62 X(AR);
63 X(TE);
64 X(SR);
65 X(DR);
66 X(OUS);
67 X(F1);
68 X(F2);
69 X(F3);
70 X(F4);
71 X(F5);
72 X(F6);
73 X(F7);
74 X(F8);
75 X(F9);
76 X(F10);
77 X(F11);
78 X(F12);
79 X(F13);
80 X(F14);
81 X(F15);
82 X(F16);
83 X(F17);
84 X(F18);
85 X(F19);
86 X(F20);
87 X(BM);
88 return GN_MT_XX;
89 #undef X
90 }
91
92 /* Set of handy functions to print out localized name of the enum value */
93
gn_memory_type2str(gn_memory_type mt)94 GNOKII_API const char *gn_memory_type2str(gn_memory_type mt)
95 {
96 #define X(a) case GN_MT_##a: return #a;
97 switch (mt) {
98 X(ME);
99 X(SM);
100 X(FD);
101 X(ON);
102 X(EN);
103 X(DC);
104 X(RC);
105 X(MC);
106 X(LD);
107 X(BD);
108 X(SD);
109 X(MT);
110 X(TA);
111 X(CB);
112 X(IN);
113 X(OU);
114 X(AR);
115 X(TE);
116 X(SR);
117 X(DR);
118 X(OUS);
119 X(F1);
120 X(F2);
121 X(F3);
122 X(F4);
123 X(F5);
124 X(F6);
125 X(F7);
126 X(F8);
127 X(F9);
128 X(F10);
129 X(F11);
130 X(F12);
131 X(F13);
132 X(F14);
133 X(F15);
134 X(F16);
135 X(F17);
136 X(F18);
137 X(F19);
138 X(F20);
139 X(BM);
140 default: return NULL;
141 }
142 #undef X
143 }
144
gn_memory_type_print(gn_memory_type mt)145 GNOKII_API const char *gn_memory_type_print(gn_memory_type mt)
146 {
147 switch (mt) {
148 case GN_MT_ME: return _("Internal memory");
149 case GN_MT_SM: return _("SIM card");
150 case GN_MT_FD: return _("Fixed dial numbers");
151 case GN_MT_ON: return _("Own numbers");
152 case GN_MT_EN: return _("Emergency numbers");
153 case GN_MT_DC: return _("Dialled numbers");
154 case GN_MT_RC: return _("Received numbers");
155 case GN_MT_MC: return _("Missed numbers");
156 case GN_MT_LD: return _("Last dialled");
157 case GN_MT_BD: return _("Barred dialling numbers");
158 case GN_MT_SD: return _("Service dialling numbers");
159 case GN_MT_MT: return _("Combined ME and SIM phonebook");
160 case GN_MT_TA: return _("Computer memory");
161 case GN_MT_CB: return _("Currently selected memory");
162 case GN_MT_IN: return _("SMS Inbox");
163 case GN_MT_OU: return _("SMS Outbox, sent items");
164 case GN_MT_AR: return _("SMS Archive");
165 case GN_MT_TE: return _("SMS Templates");
166 case GN_MT_SR: return _("SMS Status Reports");
167 case GN_MT_DR: return _("SMS Drafts");
168 case GN_MT_OUS: return _("SMS Outbox, items to be sent");
169 case GN_MT_F1: return _("SMS Folder 1");
170 case GN_MT_F2: return _("SMS Folder 2");
171 case GN_MT_F3: return _("SMS Folder 3");
172 case GN_MT_F4: return _("SMS Folder 4");
173 case GN_MT_F5: return _("SMS Folder 5");
174 case GN_MT_F6: return _("SMS Folder 6");
175 case GN_MT_F7: return _("SMS Folder 7");
176 case GN_MT_F8: return _("SMS Folder 8");
177 case GN_MT_F9: return _("SMS Folder 9");
178 case GN_MT_F10: return _("SMS Folder 10");
179 case GN_MT_F11: return _("SMS Folder 11");
180 case GN_MT_F12: return _("SMS Folder 12");
181 case GN_MT_F13: return _("SMS Folder 13");
182 case GN_MT_F14: return _("SMS Folder 14");
183 case GN_MT_F15: return _("SMS Folder 15");
184 case GN_MT_F16: return _("SMS Folder 16");
185 case GN_MT_F17: return _("SMS Folder 17");
186 case GN_MT_F18: return _("SMS Folder 18");
187 case GN_MT_F19: return _("SMS Folder 19");
188 case GN_MT_F20: return _("SMS Folder 20");
189 case GN_MT_BM: return _("Cell Broadcast");
190 default: return _("Unknown");
191 }
192 }
193
gn_connection_type2str(gn_connection_type t)194 GNOKII_API const char *gn_connection_type2str(gn_connection_type t)
195 {
196 switch (t) {
197 case GN_CT_NONE: return _("None");
198 case GN_CT_Serial: return _("Serial");
199 case GN_CT_DAU9P: return _("Serial DAU9P");
200 case GN_CT_DLR3P: return _("Serial DLR3P");
201 case GN_CT_Infrared: return _("Infrared (old Nokias)");
202 case GN_CT_Irda: return _("IrDA");
203 case GN_CT_Bluetooth: return _("Bluetooth");
204 case GN_CT_Tekram: return _("Tekram Ir-Dongle");
205 case GN_CT_TCP: return _("TCP");
206 case GN_CT_M2BUS: return _("M2BUS");
207 case GN_CT_DKU2: return _("DKU2 (kernel support)");
208 case GN_CT_DKU2LIBUSB: return _("DKU2 (libusb support)");
209 case GN_CT_PCSC: return _("Smart Card reader (libpcsclite support)");
210 case GN_CT_SOCKETPHONET: return _("Linux Phonet (kernel support)");
211 default: return _("Unknown");
212 }
213 }
214
gn_power_source2str(gn_power_source s)215 GNOKII_API const char *gn_power_source2str(gn_power_source s)
216 {
217 switch (s) {
218 case GN_PS_ACDC: return _("AC-DC");
219 case GN_PS_BATTERY: return _("Battery");
220 case GN_PS_NOBATTERY: return _("No battery");
221 case GN_PS_FAULT: return _("Power fault");
222 default: return _("Unknown");
223 }
224 }
225
gn_security_code_type2str(gn_security_code_type t)226 GNOKII_API const char *gn_security_code_type2str(gn_security_code_type t)
227 {
228 switch (t) {
229 case GN_SCT_SecurityCode: return _("Security code");
230 case GN_SCT_Pin: return _("PIN");
231 case GN_SCT_Pin2: return _("PIN2");
232 case GN_SCT_Puk: return _("PUK");
233 case GN_SCT_Puk2: return _("PUK2");
234 case GN_SCT_None: return _("None");
235 default: return _("Unknown");
236 }
237 }
238
239 /* Phonebook */
240
gn_phonebook_number_type2str(gn_phonebook_number_type t)241 GNOKII_API const char *gn_phonebook_number_type2str(gn_phonebook_number_type t)
242 {
243 switch (t) {
244 case GN_PHONEBOOK_NUMBER_None: return _("General number");
245 case GN_PHONEBOOK_NUMBER_Common: return _("General number");
246 case GN_PHONEBOOK_NUMBER_Home: return _("Home number");
247 case GN_PHONEBOOK_NUMBER_Mobile: return _("Mobile number");
248 case GN_PHONEBOOK_NUMBER_Fax: return _("Fax number");
249 case GN_PHONEBOOK_NUMBER_Work: return _("Work number");
250 case GN_PHONEBOOK_NUMBER_General: return _("General number");
251 default: return _("Unknown number");
252 }
253 }
254
gn_phonebook_entry_type2str(gn_phonebook_entry_type t)255 GNOKII_API const char *gn_phonebook_entry_type2str(gn_phonebook_entry_type t)
256 {
257 switch (t) {
258 case GN_PHONEBOOK_ENTRY_Name: return _("Name");
259 case GN_PHONEBOOK_ENTRY_Email: return _("Email");
260 case GN_PHONEBOOK_ENTRY_Postal: return _("Postal address");
261 case GN_PHONEBOOK_ENTRY_Note: return _("Note");
262 case GN_PHONEBOOK_ENTRY_Number: return _("Number");
263 case GN_PHONEBOOK_ENTRY_Ringtone: return _("Ringtone");
264 case GN_PHONEBOOK_ENTRY_Date: return _("Date");
265 case GN_PHONEBOOK_ENTRY_Pointer: return _("Pointer");
266 case GN_PHONEBOOK_ENTRY_Logo: return _("Logo");
267 case GN_PHONEBOOK_ENTRY_LogoSwitch: return _("Logo switch");
268 case GN_PHONEBOOK_ENTRY_Group: return _("Group");
269 case GN_PHONEBOOK_ENTRY_URL: return _("URL");
270 case GN_PHONEBOOK_ENTRY_Location: return _("Location");
271 case GN_PHONEBOOK_ENTRY_Image: return _("Image");
272 case GN_PHONEBOOK_ENTRY_RingtoneAdv: return _("Ringtone");
273 case GN_PHONEBOOK_ENTRY_UserID: return _("User ID");
274 case GN_PHONEBOOK_ENTRY_PTTAddress: return _("Push-To-Talk address");
275 case GN_PHONEBOOK_ENTRY_FirstName: return _("First name");
276 case GN_PHONEBOOK_ENTRY_LastName: return _("Last name");
277 case GN_PHONEBOOK_ENTRY_PostalAddress: return _("Postal address");
278 case GN_PHONEBOOK_ENTRY_ExtendedAddress: return _("Extended address");
279 case GN_PHONEBOOK_ENTRY_Street: return _("Street");
280 case GN_PHONEBOOK_ENTRY_City: return _("City");
281 case GN_PHONEBOOK_ENTRY_StateProvince: return _("State or province");
282 case GN_PHONEBOOK_ENTRY_ZipCode: return _("Zip code");
283 case GN_PHONEBOOK_ENTRY_Country: return _("Country");
284 case GN_PHONEBOOK_ENTRY_FormalName: return _("Formal name");
285 case GN_PHONEBOOK_ENTRY_JobTitle: return _("Job title");
286 case GN_PHONEBOOK_ENTRY_Company: return _("Company");
287 case GN_PHONEBOOK_ENTRY_Nickname: return _("Nickname");
288 case GN_PHONEBOOK_ENTRY_Birthday: return _("Birthday");
289 case GN_PHONEBOOK_ENTRY_ExtGroup: return _("Caller group id");
290 default: return _("Unknown");
291 }
292 }
293
gn_subentrytype2string(gn_phonebook_entry_type entry_type,gn_phonebook_number_type number_type)294 GNOKII_API const char *gn_subentrytype2string(gn_phonebook_entry_type entry_type, gn_phonebook_number_type number_type)
295 {
296 switch (entry_type) {
297 case GN_PHONEBOOK_ENTRY_Name:
298 case GN_PHONEBOOK_ENTRY_Email:
299 case GN_PHONEBOOK_ENTRY_Postal:
300 case GN_PHONEBOOK_ENTRY_Note:
301 case GN_PHONEBOOK_ENTRY_Ringtone:
302 case GN_PHONEBOOK_ENTRY_Date:
303 case GN_PHONEBOOK_ENTRY_Pointer:
304 case GN_PHONEBOOK_ENTRY_Logo:
305 case GN_PHONEBOOK_ENTRY_LogoSwitch:
306 case GN_PHONEBOOK_ENTRY_Group:
307 case GN_PHONEBOOK_ENTRY_URL:
308 case GN_PHONEBOOK_ENTRY_Location:
309 case GN_PHONEBOOK_ENTRY_Image:
310 case GN_PHONEBOOK_ENTRY_RingtoneAdv:
311 case GN_PHONEBOOK_ENTRY_UserID:
312 case GN_PHONEBOOK_ENTRY_PTTAddress:
313 case GN_PHONEBOOK_ENTRY_FirstName:
314 case GN_PHONEBOOK_ENTRY_LastName:
315 case GN_PHONEBOOK_ENTRY_PostalAddress:
316 case GN_PHONEBOOK_ENTRY_ExtendedAddress:
317 case GN_PHONEBOOK_ENTRY_Street:
318 case GN_PHONEBOOK_ENTRY_City:
319 case GN_PHONEBOOK_ENTRY_StateProvince:
320 case GN_PHONEBOOK_ENTRY_ZipCode:
321 case GN_PHONEBOOK_ENTRY_Country:
322 case GN_PHONEBOOK_ENTRY_FormalName:
323 case GN_PHONEBOOK_ENTRY_JobTitle:
324 case GN_PHONEBOOK_ENTRY_Company:
325 case GN_PHONEBOOK_ENTRY_Nickname:
326 case GN_PHONEBOOK_ENTRY_Birthday:
327 case GN_PHONEBOOK_ENTRY_ExtGroup:
328 return gn_phonebook_entry_type2str(entry_type);
329 case GN_PHONEBOOK_ENTRY_Number:
330 switch (number_type) {
331 case GN_PHONEBOOK_NUMBER_Home:
332 case GN_PHONEBOOK_NUMBER_Mobile:
333 case GN_PHONEBOOK_NUMBER_Fax:
334 case GN_PHONEBOOK_NUMBER_Work:
335 case GN_PHONEBOOK_NUMBER_None:
336 case GN_PHONEBOOK_NUMBER_Common:
337 case GN_PHONEBOOK_NUMBER_General:
338 return gn_phonebook_number_type2str(number_type);
339 default:
340 return _("Unknown number");
341 }
342 default:
343 return _("Unknown");
344 }
345 }
346
gn_phonebook_group_type2str(gn_phonebook_group_type t)347 GNOKII_API const char *gn_phonebook_group_type2str(gn_phonebook_group_type t)
348 {
349 switch (t) {
350 case GN_PHONEBOOK_GROUP_Family: return _("Family");
351 case GN_PHONEBOOK_GROUP_Vips: return _("VIPs");
352 case GN_PHONEBOOK_GROUP_Friends:return _("Friends");
353 case GN_PHONEBOOK_GROUP_Work: return _("Work");
354 case GN_PHONEBOOK_GROUP_Others: return _("Others");
355 case GN_PHONEBOOK_GROUP_None: return _("None");
356 default: return _("Unknown");
357 }
358 }
359
360 /* SMS */
361
gn_sms_udh_type2str(gn_sms_udh_type t)362 GNOKII_API const char *gn_sms_udh_type2str(gn_sms_udh_type t)
363 {
364 switch (t) {
365 case GN_SMS_UDH_None: return _("Text");
366 case GN_SMS_UDH_ConcatenatedMessages: return _("Linked");
367 case GN_SMS_UDH_Ringtone: return _("Ringtone");
368 case GN_SMS_UDH_OpLogo: return _("GSM Operator Logo");
369 case GN_SMS_UDH_CallerIDLogo: return _("Logo");
370 case GN_SMS_UDH_MultipartMessage: return _("Multipart Message");
371 case GN_SMS_UDH_WAPvCard: return _("WAP vCard");
372 case GN_SMS_UDH_WAPvCalendar: return _("WAP vCalendar");
373 case GN_SMS_UDH_WAPvCardSecure: return _("WAP vCardSecure");
374 case GN_SMS_UDH_WAPvCalendarSecure: return _("WAP vCalendarSecure");
375 case GN_SMS_UDH_VoiceMessage: return _("Voice Message");
376 case GN_SMS_UDH_FaxMessage: return _("Fax Message");
377 case GN_SMS_UDH_EmailMessage: return _("Email Message");
378 case GN_SMS_UDH_WAPPush: return _("WAP Push");
379 case GN_SMS_UDH_OtherMessage: return _("Other Message");
380 case GN_SMS_UDH_Unknown: return _("Unknown");
381 default: return _("Unknown");
382 }
383 }
384
gn_sms_message_type2str(gn_sms_message_type t)385 GNOKII_API const char *gn_sms_message_type2str(gn_sms_message_type t)
386 {
387 switch (t) {
388 case GN_SMS_MT_Deliver: return _("Inbox Message");
389 case GN_SMS_MT_DeliveryReport: return _("Delivery Report");
390 case GN_SMS_MT_Submit: return _("MO Message");
391 case GN_SMS_MT_SubmitReport: return _("Submit Report");
392 case GN_SMS_MT_Command: return _("Command");
393 case GN_SMS_MT_StatusReport: return _("Status Report");
394 case GN_SMS_MT_Picture: return _("Picture Message");
395 case GN_SMS_MT_TextTemplate: return _("Template");
396 case GN_SMS_MT_PictureTemplate: return _("Picture Message Template");
397 case GN_SMS_MT_SubmitSent: return _("MO Message");
398 default: return _("Unknown");
399 }
400 }
401
gn_sms_message_status2str(gn_sms_message_status t)402 GNOKII_API const char *gn_sms_message_status2str(gn_sms_message_status t)
403 {
404 switch (t) {
405 case GN_SMS_Read: return _("Read");
406 case GN_SMS_Unread: return _("Unread");
407 case GN_SMS_Sent: return _("Sent");
408 case GN_SMS_Unsent: return _("Unsent");
409 default: return _("Unknown");
410 }
411 }
412
gn_sms_message_format2str(gn_sms_message_format t)413 GNOKII_API const char *gn_sms_message_format2str(gn_sms_message_format t)
414 {
415 switch (t) {
416 case GN_SMS_MF_Text: return _("Text");
417 case GN_SMS_MF_Fax: return _("Fax");
418 case GN_SMS_MF_Voice: return _("VoiceMail");
419 case GN_SMS_MF_ERMES: return _("ERMES");
420 case GN_SMS_MF_Paging: return _("Paging");
421 case GN_SMS_MF_UCI: return _("Email message in 8110i");
422 case GN_SMS_MF_Email: return _("Email");
423 case GN_SMS_MF_X400: return _("X.400");
424 default: return _("Unknown");
425 }
426 }
427
gn_sms_vp_time2str(gn_sms_vp_time t)428 GNOKII_API const char *gn_sms_vp_time2str(gn_sms_vp_time t)
429 {
430 switch (t) {
431 case GN_SMS_VP_1H: return _("1 hour");
432 case GN_SMS_VP_6H: return _("6 hours");
433 case GN_SMS_VP_24H: return _("24 hours");
434 case GN_SMS_VP_72H: return _("72 hours");
435 case GN_SMS_VP_1W: return _("1 week");
436 case GN_SMS_VP_Max: return _("Maximum time");
437 default: return _("Unknown");
438 }
439 }
440
441 /* Calendar and ToDo */
442
gn_calnote_type2str(gn_calnote_type t)443 GNOKII_API const char *gn_calnote_type2str(gn_calnote_type t)
444 {
445 switch (t) {
446 case GN_CALNOTE_MEETING: return _("Meeting");
447 case GN_CALNOTE_CALL: return _("Call");
448 case GN_CALNOTE_BIRTHDAY: return _("Birthday");
449 case GN_CALNOTE_REMINDER: return _("Reminder");
450 case GN_CALNOTE_MEMO: return _("Memo");
451 default: return _("Unknown");
452 }
453 }
454
gn_calnote_recurrence2str(gn_calnote_recurrence r)455 GNOKII_API const char *gn_calnote_recurrence2str(gn_calnote_recurrence r)
456 {
457 switch (r) {
458 case GN_CALNOTE_NEVER: return _("Never");
459 case GN_CALNOTE_DAILY: return _("Daily");
460 case GN_CALNOTE_WEEKLY: return _("Weekly");
461 case GN_CALNOTE_2WEEKLY:return _("Every 2 weeks");
462 case GN_CALNOTE_MONTHLY:return _("Monthly");
463 case GN_CALNOTE_YEARLY: return _("Yearly");
464 default: return _("Unknown");
465 }
466 }
467
gn_todo_priority2str(gn_todo_priority p)468 GNOKII_API const char *gn_todo_priority2str(gn_todo_priority p)
469 {
470 switch (p) {
471 case GN_TODO_LOW: return _("Low");
472 case GN_TODO_MEDIUM: return _("Medium");
473 case GN_TODO_HIGH: return _("High");
474 default: return _("Unknown");
475 }
476 }
477
478 /* WAP */
479
gn_wap_session2str(gn_wap_session p)480 GNOKII_API const char *gn_wap_session2str(gn_wap_session p)
481 {
482 switch (p) {
483 case GN_WAP_SESSION_TEMPORARY: return _("Temporary");
484 case GN_WAP_SESSION_PERMANENT: return _("Permanent");
485 default: return _("Unknown");
486 }
487 }
488
gn_wap_authentication2str(gn_wap_authentication p)489 GNOKII_API const char *gn_wap_authentication2str(gn_wap_authentication p)
490 {
491 switch (p) {
492 case GN_WAP_AUTH_NORMAL: return _("Normal");
493 case GN_WAP_AUTH_SECURE: return _("Secure");
494 default: return _("Unknown");
495 }
496 }
497
gn_wap_bearer2str(gn_wap_bearer p)498 GNOKII_API const char *gn_wap_bearer2str(gn_wap_bearer p)
499 {
500 switch (p) {
501 case GN_WAP_BEARER_GSMDATA: return _("GSM data");
502 case GN_WAP_BEARER_GPRS: return _("GPRS");
503 case GN_WAP_BEARER_SMS: return _("SMS");
504 case GN_WAP_BEARER_USSD: return _("USSD");
505 default: return _("Unknown");
506 }
507 }
508
gn_wap_call_type2str(gn_wap_call_type p)509 GNOKII_API const char *gn_wap_call_type2str(gn_wap_call_type p)
510 {
511 switch (p) {
512 case GN_WAP_CALL_ANALOGUE: return _("Analogue");
513 case GN_WAP_CALL_ISDN: return _("ISDN");
514 default: return _("Unknown");
515 }
516 }
517
gn_wap_call_speed2str(gn_wap_call_speed p)518 GNOKII_API const char *gn_wap_call_speed2str(gn_wap_call_speed p)
519 {
520 switch (p) {
521 case GN_WAP_CALL_AUTOMATIC: return _("Automatic");
522 case GN_WAP_CALL_9600: return _("9600");
523 case GN_WAP_CALL_14400: return _("14400");
524 default: return _("Unknown");
525 }
526 }
527
gn_wap_login2str(gn_wap_login p)528 GNOKII_API const char *gn_wap_login2str(gn_wap_login p)
529 {
530 switch (p) {
531 case GN_WAP_LOGIN_MANUAL: return _("Manual");
532 case GN_WAP_LOGIN_AUTOLOG: return _("Automatic");
533 default: return _("Unknown");
534 }
535 }
536
gn_wap_gprs2str(gn_wap_gprs p)537 GNOKII_API const char *gn_wap_gprs2str(gn_wap_gprs p)
538 {
539 switch (p) {
540 case GN_WAP_GPRS_ALWAYS: return _("Always");
541 case GN_WAP_GPRS_WHENNEEDED: return _("When needed");
542 default: return _("Unknown");
543 }
544 }
545
546 /* Profiles */
547
gn_profile_message_type2str(gn_profile_message_type p)548 GNOKII_API const char *gn_profile_message_type2str(gn_profile_message_type p)
549 {
550 switch (p) {
551 case GN_PROFILE_MESSAGE_NoTone: return _("No tone");
552 case GN_PROFILE_MESSAGE_Standard: return _("Standard");
553 case GN_PROFILE_MESSAGE_Special: return _("Special");
554 case GN_PROFILE_MESSAGE_BeepOnce: return _("Beep once");
555 case GN_PROFILE_MESSAGE_Ascending: return _("Ascending");
556 default: return _("Unknown");
557 }
558 }
559
gn_profile_warning_type2str(gn_profile_warning_type p)560 GNOKII_API const char *gn_profile_warning_type2str(gn_profile_warning_type p)
561 {
562 switch (p) {
563 case GN_PROFILE_WARNING_Off: return _("Off");
564 case GN_PROFILE_WARNING_On: return _("On");
565 default: return _("Unknown");
566 }
567 }
568
gn_profile_vibration_type2str(gn_profile_vibration_type p)569 GNOKII_API const char *gn_profile_vibration_type2str(gn_profile_vibration_type p)
570 {
571 switch (p) {
572 case GN_PROFILE_VIBRATION_Off: return _("Off");
573 case GN_PROFILE_VIBRATION_On: return _("On");
574 default: return _("Unknown");
575 }
576 }
577
gn_profile_callalert_type2str(gn_profile_callalert_type p)578 GNOKII_API const char *gn_profile_callalert_type2str(gn_profile_callalert_type p)
579 {
580 switch (p) {
581 case GN_PROFILE_CALLALERT_Ringing: return _("Ringing");
582 case GN_PROFILE_CALLALERT_BeepOnce: return _("Beep once");
583 case GN_PROFILE_CALLALERT_Off: return _("Off");
584 case GN_PROFILE_CALLALERT_RingOnce: return _("Ring once");
585 case GN_PROFILE_CALLALERT_Ascending: return _("Ascending");
586 case GN_PROFILE_CALLALERT_CallerGroups: return _("Caller groups");
587 default: return _("Unknown");
588 }
589 }
590
gn_profile_keyvol_type2str(gn_profile_keyvol_type p)591 GNOKII_API const char *gn_profile_keyvol_type2str(gn_profile_keyvol_type p)
592 {
593 switch (p) {
594 case GN_PROFILE_KEYVOL_Off: return _("Off");
595 case GN_PROFILE_KEYVOL_Level1: return _("Level 1");
596 case GN_PROFILE_KEYVOL_Level2: return _("Level 2");
597 case GN_PROFILE_KEYVOL_Level3: return _("Level 3");
598 default: return _("Unknown");
599 }
600 }
601
gn_profile_volume_type2str(gn_profile_volume_type p)602 GNOKII_API const char *gn_profile_volume_type2str(gn_profile_volume_type p)
603 {
604 switch (p) {
605 case GN_PROFILE_VOLUME_Level1: return _("Level 1");
606 case GN_PROFILE_VOLUME_Level2: return _("Level 2");
607 case GN_PROFILE_VOLUME_Level3: return _("Level 3");
608 case GN_PROFILE_VOLUME_Level4: return _("Level 4");
609 case GN_PROFILE_VOLUME_Level5: return _("Level 5");
610 default: return _("Unknown");
611 }
612 }
613
614 /* Call divert */
615
gn_call_divert_type2str(gn_call_divert_type p)616 GNOKII_API const char *gn_call_divert_type2str(gn_call_divert_type p)
617 {
618 switch (p) {
619 case GN_CDV_Busy: return _("Busy");
620 case GN_CDV_NoAnswer: return _("No answer");
621 case GN_CDV_OutOfReach: return _("Out of reach");
622 case GN_CDV_NotAvailable: return _("Not available");
623 case GN_CDV_AllTypes: return _("All");
624 default: return _("Unknown");
625 }
626 }
627
gn_call_divert_call_type2str(gn_call_divert_call_type p)628 GNOKII_API const char *gn_call_divert_call_type2str(gn_call_divert_call_type p)
629 {
630 switch (p) {
631 case GN_CDV_VoiceCalls: return _("Voice");
632 case GN_CDV_FaxCalls: return _("Fax");
633 case GN_CDV_DataCalls: return _("Data");
634 case GN_CDV_AllCalls: return _("All");
635 default: return _("Unknown");
636 }
637 }
638
gn_call_divert_operation2str(gn_call_divert_operation p)639 GNOKII_API const char *gn_call_divert_operation2str(gn_call_divert_operation p)
640 {
641 switch (p) {
642 case GN_CDV_Disable: return _("Disable");
643 case GN_CDV_Enable: return _("Enable");
644 case GN_CDV_Query: return _("Query");
645 case GN_CDV_Register: return _("Register");
646 case GN_CDV_Erasure: return _("Erasure");
647 default: return _("Unknown");
648 }
649 }
650
651
652 /**
653 * gn_number_sanitize - Remove all white charactes from the string
654 * @number: input/output number string
655 * @maxlen: maximal number length
656 *
657 * Use this function to sanitize GSM phone number format. It changes
658 * number argument.
659 */
gn_number_sanitize(char * number,int maxlen)660 GNOKII_API void gn_number_sanitize(char *number, int maxlen)
661 {
662 char *iter, *e;
663
664 iter = e = number;
665 while (*iter && *e && (e - number < maxlen)) {
666 *iter = *e;
667 if (isspace(*iter)) {
668 while (*e && isspace(*e) && (e - number < maxlen)) {
669 e++;
670 }
671 }
672 *iter = *e;
673 iter++;
674 e++;
675 }
676 *iter = 0;
677 }
678
679 /**
680 * gn_phonebook_entry_sanitize - Remove all white charactes from the string
681 * @entry: phonebook entry to sanitize
682 *
683 * Use this function before any attempt to write an entry to the phone.
684 */
gn_phonebook_entry_sanitize(gn_phonebook_entry * entry)685 GNOKII_API void gn_phonebook_entry_sanitize(gn_phonebook_entry *entry)
686 {
687 int i;
688
689 gn_number_sanitize(entry->number, GN_PHONEBOOK_NUMBER_MAX_LENGTH + 1);
690 for (i = 0; i < entry->subentries_count; i++) {
691 if (entry->subentries[i].entry_type == GN_PHONEBOOK_ENTRY_Number)
692 gn_number_sanitize(entry->subentries[i].data.number, GN_PHONEBOOK_NUMBER_MAX_LENGTH + 1);
693 }
694 }
695
696 /*
697 * This very small function is just to make it easier to clear
698 * the data struct every time one is created
699 */
gn_data_clear(gn_data * data)700 GNOKII_API void gn_data_clear(gn_data *data)
701 {
702 memset(data, 0, sizeof(gn_data));
703 }
704