Gammu internals  1.38.0
gsmphones.c
Go to the documentation of this file.
1 
6 /* (c) 2002-2005 by Marcin Wiacek and Michal Cihar */
7 /* Phones ID (c) partially by Walek */
8 
9 #include <gammu-config.h>
10 #include <gammu-info.h>
11 
12 #include "gsmphones.h"
13 #include "gsmstate.h"
14 
15 #include "debug.h"
16 
17 #include <string.h>
18 #include <stdlib.h>
19 
20 #include <ctype.h>
21 
22 #include "../helper/string.h"
23 
24 #define MAX_FEATURE_NAME_LEN 20
25 
26 typedef struct {
27  char name[MAX_FEATURE_NAME_LEN + 1];
30 
32  {"CAL33", F_CAL33},
33  {"CAL52", F_CAL52},
34  {"CAL82", F_CAL82},
35  {"RING_SM", F_RING_SM},
36  {"NORING", F_NORING},
37  {"NOPBKUNICODE", F_NOPBKUNICODE},
38  {"NOWAP", F_NOWAP},
39  {"NOCALLER", F_NOCALLER},
40  {"NOPICTURE", F_NOPICTURE},
41  {"NOPICTUREUNI", F_NOPICTUREUNI},
42  {"NOSTARTUP", F_NOSTARTUP},
43  {"NOCALENDAR", F_NOCALENDAR},
44  {"NOSTARTANI", F_NOSTARTANI},
45  {"POWER_BATT", F_POWER_BATT},
46  {"PROFILES33", F_PROFILES33},
47  {"PROFILES51", F_PROFILES51},
48  {"MAGICBYTES", F_MAGICBYTES},
49  {"NODTMF", F_NODTMF},
50  {"DISPSTATUS", F_DISPSTATUS},
51  {"NOCALLINFO", F_NOCALLINFO},
52  {"DAYMONTH", F_DAYMONTH},
53  {"PBK35", F_PBK35},
54  {"PBKIMG", F_PBKIMG},
55  {"PBKTONEGAL", F_PBKTONEGAL},
56  {"PBKSMSLIST", F_PBKSMSLIST},
57  {"PBKUSER", F_PBKUSER},
58  {"6230iCALLER", F_6230iCALLER},
59  {"RADIO", F_RADIO},
60  {"TODO63", F_TODO63},
61  {"TODO66", F_TODO66},
62  {"NOMIDI", F_NOMIDI},
63  {"BLUETOOTH", F_BLUETOOTH},
64  {"NOFILESYSTEM", F_NOFILESYSTEM},
65  {"NOMMS", F_NOMMS},
66  {"NOGPRSPOINT", F_NOGPRSPOINT},
67  {"CAL35", F_CAL35},
68  {"CAL65", F_CAL65},
69  {"WAPMMSPROXY", F_WAPMMSPROXY},
70  {"CHAT", F_CHAT},
71  {"SYNCML", F_SYNCML},
72  {"FILES2", F_FILES2},
73  {"NOFILE1", F_NOFILE1},
74  {"6230iWAP", F_6230iWAP},
75  {"PROFILES", F_PROFILES},
76  {"SERIES40_30", F_SERIES40_30},
77  {"SMS_FILES", F_SMS_FILES},
78  {"3220_MMS", F_3220_MMS},
79  {"VOICETAGS", F_VOICETAGS},
80  {"CAL62", F_CAL62},
81  {"NOTES", F_NOTES},
82  {"SMSONLYSENT", F_SMSONLYSENT},
83  {"BROKENCPBS", F_BROKENCPBS},
84  {"M20SMS", F_M20SMS},
85  {"SLOWWRITE", F_SLOWWRITE},
86  {"SMSME900", F_SMSME900},
87  {"ALCATEL", F_ALCATEL},
88  {"OBEX", F_OBEX},
89  {"IRMC_LEVEL_2", F_IRMC_LEVEL_2},
90  {"MODE22", F_MODE22},
91  {"SMS_LOCATION_0", F_SMS_LOCATION_0},
92  {"NO_UCS2", F_NO_UCS2},
93  {"FORCE_UTF8", F_FORCE_UTF8},
94  {"SMS_SM", F_SMS_SM},
95  {"SMS_ME", F_SMS_ME},
96  {"XLNK", F_XLNK},
97  {"SUBMIT_SIM_ONLY", F_SUBMIT_SIM_ONLY},
98  {"PBK_UNICODE", F_PBK_UNICODE},
99  {"SQWE", F_SQWE},
100  {"NO_ATOBEX", F_NO_ATOBEX},
101  {"LENGTH_BYTES", F_LENGTH_BYTES},
102  {"BROKEN_CMGL", F_BROKEN_CMGL},
103  {"EXTRA_PBK_FIELD", F_EXTRA_PBK_FIELD},
104  {"CKPD_NO_UNICODE", F_CKPD_NO_UNICODE},
105  {"LAST_VALUE", F_LAST_VALUE},
106  {"CPROT", F_CPROT},
107  {"PBKFAVORITEMESSAGE", F_PBKFAVORITEMESSAGE},
108  {"PBKNOPOSTAL", F_PBKNOPOSTAL},
109  {"PBK_ENCODENUMBER", F_PBK_ENCODENUMBER},
110  {"NO_CLIP", F_NO_CLIP},
111  {"ENCODED_USSD", F_ENCODED_USSD},
112  {"USE_SMSTEXTMODE", F_USE_SMSTEXTMODE},
113  {"CPIN_NO_OK", F_CPIN_NO_OK},
114  {"FOUR_DIGIT_YEAR", F_FOUR_DIGIT_YEAR},
115  {"SMS_NO_ME", F_SMS_NO_ME},
116  {"SMS_NO_SM", F_SMS_NO_SM},
117  {"SIEMENS_PBK", F_SIEMENS_PBK},
118  {"NO_ATSYNCML", F_NO_ATSYNCML},
119  {"MOBEX", F_MOBEX},
120  {"TSSPCSW", F_TSSPCSW},
121  {"DISABLE_GETNEXT", F_DISABLE_GETNEXT},
122  {"DISABLE_GETNEXTSMS", F_DISABLE_GETNEXTSMS},
123  {"DISABLE_CMGL", F_DISABLE_CMGL},
124  {"NO_UTF8", F_NO_UTF8},
125  {"SAMSUNG_UTF8", F_SAMSUNG_UTF8},
126  {"SMS_UTF8_ENCODED", F_SMS_UTF8_ENCODED},
127  {"NO_STOP_CUSD", F_NO_STOP_CUSD},
128  {"READ_SMSTEXTMODE", F_READ_SMSTEXTMODE},
129  {"RESET_AFTER_TIMEOUT", F_RESET_AFTER_TIMEOUT},
130  {"HUAWEI_INIT", F_HUAWEI_INIT},
131  {"ZTE_INIT", F_ZTE_INIT},
132  {"", 0},
133 };
134 
135 const char *GSM_FeatureToString(GSM_Feature feature)
136 {
137  GSM_FeatureName *current;
138  for (current = AllFeatureNames; current->feature != 0; current++) {
139  if (current->feature == feature)
140  return current->name;
141  }
142  return NULL;
143 }
144 
145 GSM_Feature GSM_FeatureFromString(const char * feature)
146 {
147  GSM_FeatureName *current;
148  for (current = AllFeatureNames; current->feature != 0; current++) {
149  if (strcasecmp(current->name, feature) == 0)
150  return current->feature;
151  }
152  return 0;
153 }
154 
155 GSM_Error GSM_SetFeatureString(GSM_Feature *list, const char *string)
156 {
157  char *buffer, *pos, *end, *tmp;
158  int out = 0;
159  GSM_Error error = ERR_UNKNOWN;
160 
161  /* Working copy */
162  buffer = strdup(string);
163  if (buffer == NULL)
164  return ERR_MOREMEMORY;
165 
166  pos = buffer;
167  while (strlen(pos) > 0) {
168  end = strchr(pos, ',');
169  if (end != NULL) {
170  *end = 0;
171  }
172 
173  while (isspace(*pos))
174  pos++;
175 
176  while ((tmp = strchr(pos, ' ')) != NULL)
177  *tmp = 0;
178 
179  list[out] = GSM_FeatureFromString(pos);
180  if (list[out] == 0) {
181  smfprintf(NULL, "Bad feature string: %s\n", pos);
182  error = ERR_BADFEATURE;
183  break;
184  }
185  out++;
186  if (out >= GSM_MAX_PHONE_FEATURES) {
187  smfprintf(NULL, "Too many features: %s\n", pos);
188  error = ERR_MOREMEMORY;
189  break;
190  }
191  if (end != NULL) {
192  pos = end + 1;
193  } else {
194  /* We're done */
195  error = ERR_NONE;
196  break;
197  }
198  }
199  free(buffer);
200  buffer=NULL;
201  return error;
202 }
203 
208 #ifdef GSM_ENABLE_NOKIA650
209  {"0650" ,"THF-12","", {0}},
210 #endif
211 #ifdef GSM_ENABLE_NOKIA6110
212  {"2100" ,"NAM-2" ,"", {F_NOWAP,F_NOCALLER,F_RING_SM,F_CAL33,F_POWER_BATT,F_PROFILES33,F_NOCALLINFO,F_NODTMF,0}},/* guess */
219  {"3410" ,"NHM-2" ,"", {F_RING_SM,F_CAL33,F_PROFILES33,F_NOCALLINFO,F_NODTMF,0}},
220  {"3610" ,"NAM-1" ,"", {F_NOCALLER,F_RING_SM,F_CAL33,F_POWER_BATT,F_PROFILES33,F_NOCALLINFO,F_NODTMF,0}},/* guess */
221  {"5510" ,"NPM-5" ,"", {F_NOCALLER,F_PROFILES33,F_NOPICTUREUNI,F_RING_SM,0}},
230 #endif
231 #if defined(GSM_ENABLE_NOKIA6110) || defined(GSM_ENABLE_ATGEN)
232  {"5210" ,"NSM-5" ,"Nokia 5210", {F_CAL52,F_NOSTARTANI,F_NOPICTUREUNI,F_NODTMF,0}},
233  {"8210" ,"NSM-3" ,"Nokia 8210", {F_NOWAP,F_NOSTARTANI,F_NOPBKUNICODE,F_NOPICTUREUNI,0}},
234  {"8250" ,"NSM-3D","Nokia 8250", {F_NOWAP,F_NOSTARTANI,F_CAL82,F_NOPICTUREUNI,0}},
235  {"8290" ,"NSB-7" ,"Nokia 8290", {F_NOWAP,F_NOSTARTANI,F_NOPBKUNICODE,F_NOPICTUREUNI,0}},
236  {"8850" ,"NSM-2" ,"Nokia 8850", {0}},
237  {"8855" ,"NSM-4" ,"Nokia 8855", {0}},
238  {"8890" ,"NSB-6" ,"Nokia 8890", {0}},
239 #endif
240 #if defined(GSM_ENABLE_NOKIA7110) || defined(GSM_ENABLE_ATGEN)
241  {"6210" ,"NPE-3" ,"Nokia 6210", {F_VOICETAGS,F_CAL62,0}},
242  {"6250" ,"NHM-3" ,"Nokia 6250", {F_VOICETAGS,F_CAL62,0}},
243  {"7110" ,"NSE-5" ,"Nokia 7110", {F_CAL62,0}},
244  {"7190" ,"NSB-5" ,"Nokia 7190", {F_CAL62,0}},
245 #endif
246 #ifdef GSM_ENABLE_NOKIA6510
247  {"1100" ,"RH-18" ,"", {0}},
248  {"1100a","RH-38" ,"", {0}},
249  {"1100b","RH-36" ,"", {0}},
250  {"2650", "RH-53" ,"", {F_PBKTONEGAL,F_PBKSMSLIST,0}},/* fixme */
251  {"3100" ,"RH-19" ,"", {F_PBKTONEGAL,F_PBKSMSLIST,0}},/* fixme */
252  {"3100b","RH-50" ,"", {F_PBKTONEGAL,F_PBKSMSLIST,0}},/* fixme */
253  {"3105" ,"RH-48" ,"Nokia 3105", {F_PBKTONEGAL,F_PBKSMSLIST,F_VOICETAGS,0}},/* fixme */
254  {"3108", "RH-6", "Nokia 3108", {0}}, /* does it have irda ? */
255  {"3200", "RH-30" ,"Nokia 3200", {F_PBKTONEGAL,0}},/* fixme */
256  {"3200a","RH-31" ,"Nokia 3200", {F_PBKTONEGAL,0}},/* fixme */
257  {"3205", "RM-11" ,"Nokia 3205", {F_CAL62,F_PBK35,F_NOGPRSPOINT,F_VOICETAGS,F_PROFILES,F_RADIO,F_PBKSMSLIST,F_PBKTONEGAL,0}},/* fixme */
258  {"3300" ,"NEM-1" ,"Nokia 3300", {F_PBKTONEGAL,0}},/* fixme */
259  {"3300" ,"NEM-2" ,"Nokia 3300", {F_PBKTONEGAL,0}},/* fixme */
260  {"3510" ,"NHM-8" ,"", {F_CAL35,F_PBK35,F_NOGPRSPOINT,F_VOICETAGS,0}},
261  {"3510i","RH-9" ,"", {F_CAL35,F_PBK35,F_NOGPRSPOINT,F_VOICETAGS,F_PROFILES,0}},
262  {"3530" ,"RH-9" ,"", {F_CAL35,F_PBK35,F_NOGPRSPOINT,F_VOICETAGS,0}},
263  {"3589i","RH-44" ,"", {F_VOICETAGS,0}},
264  {"3590" ,"NPM-8" ,"", {0}},/* irda? */
265  {"3595" ,"NPM-10" ,"", {0}},/* irda? */
266 #endif
267 #if defined(GSM_ENABLE_NOKIA6510) || defined(GSM_ENABLE_ATGEN)
268  {"1110i","RM-93" ,"Nokia 1110i",{F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* guess */
269  {"1112", "RH-93" ,"Nokia 1112", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* guess */
270  {"1200", "RH-99" ,"Nokia 1200", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* guess */
271  {"1208", "RH-105","Nokia 1208", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* guess */
272  {"1209", "RH-105","Nokia 1209", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* guess */
273  {"2125i","RH-71" ,"Nokia 2125i",{F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* guess */
274  {"1600", "RH-64" ,"Nokia 1600",{F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* guess */
275  {"1650", "RM-305","Nokia 1650",{F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_PBKNOPOSTAL,0}},/* guess */
276  {"1680", "RM-394","Nokia 1680",{F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_PBKNOPOSTAL,0}},/* guess */
277  {"1681c","RH-118","Nokia 1681c",{F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_PBKNOPOSTAL,0}},/* guess */
278  {"2323c","RH-543","Nokia 2323c",{F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* guess */
279  {"2330c","RH-512","Nokia 2330c",{F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* guess */
280  {"2330c","RM-512","Nokia 2330c",{F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_PBKNOPOSTAL,F_6230iCALLER,0}},/* guess */
281  {"2600", "RM-340","Nokia 2600",{F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_PBKNOPOSTAL,F_6230iCALLER,0}},/* guess */
282  {"2610", "RH-86", "Nokia 2610",{F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* guess */
283  {"2610", "RH-87" ,"Nokia 2610",{F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* guess */
285  {"2630b","RM-299","Nokia 2630b",{F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_PBKFAVORITEMESSAGE,F_6230iCALLER,0}},/* guess */
286  {"2660", "RM-292","Nokia 2660", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* guess */
287  {"2680", "RM-392","Nokia 2680", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* guess */
288  {"2690", "RM-635","Nokia 2690", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* guess */
289  {"2700", "RM-561","Nokia 2700",{F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* guess */
290  {"2720a", "RM-520","Nokia 2720a",{F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* guess */
291  {"2730c", "RM-578","Nokia 2730c",{F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* guess */
292  {"2760", "RM-258","Nokia 2760",{F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* guess */
293  {"2760h", "RM-391","Nokia 2760h",{F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* guess */
294  {"3109c","RM-274","Nokia 3109c",{F_SERIES40_30,F_FILES2,F_TODO66,F_PBKUSER,F_PBKTONEGAL,F_NOTES,F_SMS_FILES,F_CHAT,F_SYNCML,F_6230iCALLER,0}},/* guess */
295  {"3110c","RM-237","Nokia 3110c",{F_SERIES40_30,F_PBKTONEGAL,F_TODO66,F_PBKSMSLIST,F_PBKUSER,F_NOTES,F_CHAT,F_SYNCML,F_FILES2,F_SMS_FILES,0}},/* guess */
296  {"3120c","RM-364","Nokia 3120c",{F_SERIES40_30,F_PBKTONEGAL,F_TODO66,F_PBKSMSLIST,F_PBKUSER,F_NOTES,F_CHAT,F_SYNCML,F_FILES2,F_SMS_FILES,0}},/* guess */
299  {"3500" ,"RM-272","Nokia 3500", {F_SERIES40_30,F_PBKTONEGAL,F_TODO66,F_PBKSMSLIST,F_PBKUSER,F_NOTES,F_CHAT,F_SYNCML,F_FILES2,0}},/* guess */
300  {"3500" ,"RM-273","Nokia 3500", {F_SERIES40_30,F_PBKTONEGAL,F_TODO66,F_PBKSMSLIST,F_PBKUSER,F_NOTES,F_CHAT,F_SYNCML,F_FILES2,0}},/* guess */
301  {"3600s" ,"RM-352","Nokia 3600s", {F_SERIES40_30,F_PBKTONEGAL,F_TODO66,F_PBKSMSLIST,F_PBKUSER,F_NOTES,F_CHAT,F_SYNCML,F_FILES2,0}},/* guess */
303  {"3720c","RM-518","Nokia 3720c",{F_SERIES40_30,F_PBKTONEGAL,F_TODO66,F_PBKSMSLIST,F_PBKUSER,F_NOTES,F_CHAT,F_SYNCML,F_FILES2,F_6230iCALLER,0}},/* guess */
304  {"3710f","RM-509","Nokia 3710 Fold",{F_SERIES40_30,F_PBKTONEGAL,F_TODO66,F_PBKSMSLIST,F_PBKUSER,F_NOTES,F_CHAT,F_SYNCML,F_FILES2,F_6230iCALLER,0}},/* guess */
305  {"5000", "RM-362","Nokia 5000", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* guess */
306  {"5000d-2b", "RM-363","Nokia 5000d-2b", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* guess */
307  {"5100" ,"NPM-6" ,"Nokia 5100", {F_PBKTONEGAL,F_TODO66,F_RADIO,0}},
308  {"5130" ,"RM-495","Nokia 5130", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* guess */
309  {"5100" ,"NPM-6U","Nokia 5100", {F_PBKTONEGAL,F_TODO66,F_RADIO,0}},
310  {"5100" ,"NPM-6X","Nokia 5100", {F_PBKTONEGAL,F_TODO66,F_RADIO,0}},
311  {"5140" ,"NPL-4" ,"Nokia 5140", {F_PBKTONEGAL,F_TODO66,F_RADIO,F_PBKUSER,F_WAPMMSPROXY,F_CHAT, F_SYNCML,0}},
312  {"5140" ,"NPL-5" ,"Nokia 5140", {F_PBKTONEGAL,F_TODO66,F_RADIO,F_PBKUSER,F_WAPMMSPROXY,F_CHAT, F_SYNCML,0}},
313  {"5140i","RM-104","Nokia 5140i",{F_PBKTONEGAL,F_TODO66,F_RADIO,F_PBKUSER,F_WAPMMSPROXY,F_CHAT, F_SYNCML,0}},
314  {"5200" ,"RM-174","Nokia 5200", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},
315  {"5220" ,"RM-411","Nokia 5220", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},
316  {"5300" ,"RM-146","Nokia 5300", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},
317  {"5310" ,"RM-303","Nokia 5310", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* guess */
318  {"5310b","RM-304","Nokia 5310b", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* guess */
319  {"5610" ,"RM-242","Nokia 5610", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* guess */
320  {"6020" ,"RM-30" ,"Nokia 6020", {F_VOICETAGS, F_FILES2, F_CHAT, F_WAPMMSPROXY, F_TODO66, F_PBKTONEGAL, F_NOTES,0}},/* guess */
321  {"6020b","RM-31" ,"Nokia 6020b", {F_VOICETAGS, F_FILES2, F_CHAT, F_WAPMMSPROXY, F_TODO66, F_PBKTONEGAL, F_NOTES,0}},/* guess */
323  {"6030" ,"RM-74" ,"Nokia 6030", {F_VOICETAGS, F_FILES2, F_CHAT, F_WAPMMSPROXY, F_TODO66, F_PBKTONEGAL, F_NOTES, F_NOFILE1, F_RADIO,0}},/* guess */
324  {"6030b","RM-75" ,"Nokia 6030b",{F_VOICETAGS, F_FILES2, F_CHAT, F_WAPMMSPROXY, F_TODO66, F_PBKTONEGAL, F_NOTES, F_NOFILE1,0}},/* guess */
325  {"6030" ,"RM-225","Nokia 6030", {F_VOICETAGS, F_FILES2, F_CHAT, F_WAPMMSPROXY, F_TODO66, F_PBKTONEGAL, F_NOTES, F_NOFILE1,0}},/* guess */
326  {"6060", "RH-97" ,"Nokia 6060",{F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* guess */
329  {"6085" ,"RM-198","Nokia 6085", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* fixme */
330  {"6086" ,"RM-260","Nokia 6086", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* fixme */
331  {"6086" ,"RM-188","Nokia 6086", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* fixme */
332  {"6100" ,"NPL-2" ,"Nokia 6100", {F_PBKTONEGAL,F_TODO66,0}},
333  {"6101" ,"RM-76" ,"Nokia 6101", {F_PBKTONEGAL,F_TODO66,0}},
335  {"6103" ,"RM-161","Nokia 6103", {F_PBKTONEGAL,F_TODO66,F_RADIO,F_NOFILE1,0}},/* fixme */
336  {"6102i","RM-162","Nokia 6102i",{F_PBKTONEGAL,F_TODO66,F_RADIO,F_NOFILE1,0}},/* fixme */
337  {"6111" ,"RM-82" ,"Nokia 6111", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},
338  {"6111" ,"RM-92" ,"Nokia 6111", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},
339  {"6125" ,"RM-178","Nokia 6125", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* fixme */
340  {"6126" ,"RM-124","Nokia 6126", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* fixme */
341  {"6131" ,"RM-115","Nokia 6131", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* fixme */
342  {"6131 NFC" ,"RM-216","Nokia 6131 NFC", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* fixme */
343  {"6133" ,"RM-126","Nokia 6133", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* fixme */
344  {"6151" ,"RM-200","Nokia 6151", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* fixme */
347  {"6200" ,"NPL-3" ,"Nokia 6200", {F_PBKTONEGAL,0}},
349  {"6220c","RM-328","Nokia 6220c",{F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* fixme */
354  {"6233" ,"RM-145","Nokia 6233", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* fixme */
355  {"6234" ,"RM-123","Nokia 6234", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* fixme */
356  {"6270" ,"RM-56","Nokia 6270", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* fixme */
357  {"6275i","RM-154","Nokia 6275i", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* fixme */
358  {"6280" ,"RM-78","Nokia 6280", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* fixme */
359  {"6300" ,"RM-217" ,"Nokia 6300", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},
360  {"6303c","RM-443" ,"Nokia 6303c", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},
361  {"6303i","RM-638" ,"Nokia 6303i", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},
362  {"6310" ,"NPE-4" ,"Nokia 6310", {F_TODO63,F_CAL65,F_NOMIDI,F_NOMMS,F_VOICETAGS,0}},
363  {"6310i","NPL-1" ,"Nokia 6310i",{F_TODO63,F_CAL65,F_NOMIDI,F_BLUETOOTH,F_NOMMS,F_VOICETAGS,F_PROFILES,0}},
364  {"6340i","RH-13" ,"Nokia 6340i",{F_TODO63,F_CAL65,F_NOMIDI,F_BLUETOOTH,F_NOMMS,F_VOICETAGS,F_PROFILES,0}},
365  {"6350", "RM-455","Nokia 6350", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* fixme */
366  {"6385" ,"NHP-2AX","Nokia 6385",{F_TODO63,F_CAL65,F_NOMIDI,F_NOMMS,F_VOICETAGS,0}},
367  {"6500s","RM-240","Nokia 6500s", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* fixme */
368  {"6500c","RM-265","Nokia 6500c", {F_SERIES40_30,F_FILES2,F_TODO66,F_NOTES,F_SMS_FILES,0}},
369  {"6510" ,"NPM-9" ,"Nokia 6510", {F_TODO63,F_CAL65,F_NOMIDI,F_RADIO,F_NOFILESYSTEM,F_NOMMS,F_VOICETAGS,0}},
370  {"6610" ,"NHL-4U","Nokia 6610", {F_PBKTONEGAL,F_TODO66,F_RADIO,0}},
371  {"6610i","RM-37" ,"Nokia 6610i",{F_PBKTONEGAL,F_TODO66,F_RADIO,F_SYNCML,0}},
372  {"6600", "RM-325","Nokia 6600", {F_SERIES40_30,F_FILES2,F_TODO66,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},
373  {"6600s","RM-570","Nokia 6600s",{F_SERIES40_30,F_FILES2,F_TODO66,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},
374  {"6600s","RM-414","Nokia 6600s",{F_SERIES40_30,F_FILES2,F_TODO66,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},
375  {"6750-1b","RM-381","Nokia 3750-1b", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* fixme */
376  {"6700c","RM-470","Nokia 6700c",{F_SERIES40_30,F_FILES2,F_TODO66,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},
377  {"6800" ,"NSB-9" ,"Nokia 6800", {F_PBKTONEGAL,F_TODO66,F_RADIO,F_PBKSMSLIST,0}},
378  {"6800" ,"NHL-6" ,"Nokia 6800", {F_PBKTONEGAL,F_TODO66,F_RADIO,F_PBKSMSLIST,0}},
379  {"6810" ,"RM-2" ,"Nokia 6810", {F_PBKTONEGAL,F_TODO66,F_RADIO,F_PBKSMSLIST,F_NOTES,F_CHAT,F_SYNCML,0}},/* guess */
380  {"6820" ,"NHL-9" ,"Nokia 6820", {F_PBKTONEGAL,F_TODO66,F_PBKSMSLIST,F_NOTES,F_CHAT,F_SYNCML,0}},/* guess */
383  {"7200" ,"RH-23" ,"Nokia 7200", {F_PBKTONEGAL,F_TODO66,F_RADIO,F_PBKSMSLIST,F_PBKUSER,0}},/* guess */
384  {"7210" ,"NHL-4" ,"Nokia 7210", {F_PBKTONEGAL,F_TODO66,F_RADIO,0}},
385  {"7210s","RM-436","Nokia 7210s",{F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* fixme */
386  {"7230","RM-604" ,"Nokia 7230", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},
387  {"7250" ,"NHL-4J","Nokia 7250", {F_PBKTONEGAL,F_TODO66,F_RADIO,F_PBKIMG,F_SYNCML,0}},
388  {"7250i","NHL-4JX","Nokia 7250i",{F_PBKTONEGAL,F_TODO66,F_RADIO,F_PBKIMG,F_SYNCML,0}},
392  {"7310c", "RM-379","Nokia 7310c",{F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* guess */
394  {"7370" ,"RM-70" ,"Nokia 7370", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* fixme */
395  {"7373" ,"RM-209","Nokia 7373", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* fixme */
396  {"7500" ,"RM-249","Nokia 7500", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,0}},/* fixme */
397  {"7600", "NMM-3", "Nokia 7600", {F_TODO66,0}},
398  {"7900" ,"RM-264","Nokia 7900", {F_SERIES40_30,F_FILES2,F_TODO66,F_NOTES,F_SMS_FILES,0}},
399  {"8310" ,"NHM-7" ,"Nokia 8310", {F_CAL62,F_NOMIDI,F_RADIO,F_NOFILESYSTEM,F_NOMMS,F_VOICETAGS,0}},
400  {"8390" ,"NSB-8" ,"Nokia 8390", {F_CAL62,F_NOMIDI,F_RADIO,F_NOFILESYSTEM,F_NOMMS,F_VOICETAGS,0}},
401  {"8800" ,"RM-13" ,"Nokia 8800", {F_PBKTONEGAL,F_TODO66,F_RADIO,F_PBKSMSLIST,F_PBKUSER,F_NOTES,F_CHAT,F_SYNCML,F_FILES2,0}},
402  {"8910" ,"NHM-4" ,"Nokia 8910", {F_CAL62,F_NOMIDI,F_NOFILESYSTEM,F_NOMMS,0}},
403  {"8910i","NHM-4" ,"Nokia 8910i",{F_CAL62,F_NOMIDI,F_NOFILESYSTEM,F_NOMMS,0}},
404  {"C2-01","RM-721","Nokia C2-01", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* fixme */
405  {"306","RM-767","Nokia Asha 306", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* fixme */
406  {"112","RM-837","Nokia 112", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* fixme */
407  {"C3" ,"RM-614","Nokia C3", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* fixme */
408  {"X2-00","RM-618","Nokia X2-00", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* guess */
409  {"X3" ,"RM-540","Nokia X3", {F_SERIES40_30,F_FILES2,F_TODO66,F_RADIO,F_NOTES,F_SMS_FILES,F_6230iCALLER,0}},/* fixme */
410 #endif
411 #ifdef GSM_ENABLE_NOKIA3320
412  {"3320" ,"NPC-1" ,"Nokia 3320", {F_CAL62,F_DAYMONTH,0}},/* fixme */
413 #endif
414 #if defined(GSM_ENABLE_NOKIA3650) || defined(GSM_ENABLE_ATGEN)
415  {"3650" ,"NHL-8" ,"Nokia 3650", {0}},
416  {"NGAGE","NEM-4" ,"", {F_RADIO,0}},
417 #endif
418 #if defined(GSM_ENABLE_NOKIA9210) || defined(GSM_ENABLE_ATGEN)
419  {"9210" ,"RAE-3" ,"", {0}},
420  {"9210i","RAE-5" ,"", {0}},
421 #endif
422 #if defined(GSM_ENABLE_S90) || defined(GSM_ENABLE_ATGEN)
423  {"E52", "RM-469", "Nokia E52", {0}},
424 #endif
425 #ifdef GSM_ENABLE_ATGEN
426  /* Generic AT */
427  {"at" , "at", "", {0}},
428 
429  /* Nokia AT only */
430  {"7650", "NHL-2", "Nokia 7650", {0}},
431  {"9300", "Nokia 9300", "Nokia 9300", {0}},
432  {"N70", "Nokia E70", "Nokia E70", {0}},
433  {"E61", "Nokia E61", "Nokia E61", {0}},
434  {"N950", "Nokia N950", "Nokia N950", {0}},
435  {"N9", "Nokia N9", "Nokia N9", {0}},
436 
437  /* Siemens */
438  {"M20" , "M20", "", {F_M20SMS,F_SLOWWRITE,0}},
439  {"MC35" , "MC35", "", {0}},
440  {"MC35i" , "MC35i", "", {0}},
441  {"MC55" , "MC55", "", {0}},
442  {"TC35" , "TC35", "", {0}},
443  {"S25", "S25", "SIEMENS S25", {0}},
444  {"C35i" , "C35i", "", {0}},
445  {"S35i" , "S35i", "", {0}},
446  {"M35i" , "M35i", "", {0}},
447  {"S40" , "Siemens S40", "", {0}},
448  {"C45" , "C45", "", {0}},
449  {"S45" , "S45", "", {0}},
450  {"S45i" , "S45i", "", {0}},
451  {"ME45" , "ME45", "SIEMENS ME45", {0}},
452  {"SL45" , "SL45", "", {0}},
453  {"SL45i" , "SL45i", "", {0}},
454  {"M50" , "M50", "", {0}},
455  {"S45" , "6618" , "", {0}},
456  {"ME45" , "3618" , "", {0}},
457  {"S55" , "S55" , "", {0}},
458  {"S65" , "S65" , "SIEMENS S65", {F_SIEMENS_PBK, 0}},
459  {"C72" , "C72" , "SIEMENS C72", {F_SIEMENS_PBK, 0}},
460  {"S68", "S68", "", {F_OBEX,F_SQWE, 0}},
461  {"MC75" , "MC75", "", {F_NO_ATOBEX, 0}},
462  {"AX75", "AX75", "SIEMENS AX75", {F_SIEMENS_PBK, 0}},
463 
464  /* Samsung */
465  {"E250", "SAMSUNG SGH-E250" , "", {F_FORCE_UTF8, F_SMS_SM, F_SMS_ME, 0}},
466  {"E700" , "SGH-E700" , "", {0}},
467  {"P900" , "SGH-P900" , "", {F_BROKEN_CMGL, 0}},
468  {"S100" , "SGH-S100" , "", {0}},
469  {"S200" , "SGH-S200" , "", {0}},
470  {"S300" , "SGH-S300" , "", {0}},
471  {"S500" , "SGH-S500" , "", {0}},
472  {"T100" , "SGH-T100" , "", {0}},
473  {"V200" , "SGH-V200" , "", {0}},
474  {"X461", "SGH-X461" , "", {0}},
475  {"D357", "SGH-D357" , "", {F_EXTRA_PBK_FIELD, 0}},
476  {"J750", "SGH-J750" , "", {F_NO_ATOBEX, 0}},
477  {"J700", "SGH-J700" , "", {F_NO_ATOBEX, 0}},
478  {"J700", "SAMSUNG SGH-J700" , "", {F_NO_ATOBEX, F_DISABLE_CMGL, 0}},
479  {"D980", "SAMSUNG SGH-D980" , "", {F_NO_ATOBEX, 0}},
483 
484  /* Philips */
485  {"Xenium 9@9d", "Xenium 9@9d", "", {F_OBEX, 0}},
486 
487  /* Ericsson/Sony Ericsson */
488  {"T28s", "1101101-BVT28s","", {F_OBEX, 0}},
489  {"R320s" , "1101201-BV R320s","", {F_OBEX, 0}},
490  {"R380s", "7100101-BVR380s" ,"", {F_OBEX, 0}},
491  {"R520m", "1130101-BVR520m" ,"", {F_OBEX, 0}},
492  {"T39m", "1130102-BVT39m" ,"", {F_OBEX, 0}},
493  {"T65", "1101901-BVT65" , "", {F_OBEX, 0}},
494  {"T68", "1130201-BVT68" , "", {F_OBEX, 0}},
495  {"T68i", "1130202-BVT68" , "", {F_OBEX, 0}},
496  {"R600", "102001-BVR600" , "", {F_OBEX, 0}},
497  {"T200", "1130501-BVT200" ,"", {F_OBEX, 0}},
498  {"T300", "1130601-BVT300" ,"T300", {F_OBEX, 0}},
499  {"T310", "1130602-BVT310" ,"", {F_OBEX, 0}},
500  {"P800", "7130501-BVP800" ,"", {F_OBEX, 0}},
501 
502  /* Ericsson/Sony Ericsson till 2003, not verified */
503  {"T106", "1022101-BV" ,"", {F_OBEX, 0}},
504  {"SH888", "1100801-BV" ,"", {F_OBEX, 0}},
505  {"R250s PRO", "1100802-BV" ,"", {F_OBEX, 0}},
506  {"A1018s", "1100901-BV" ,"", {F_OBEX, 0}},
507  {"A1018sc", "1100901-CN" ,"", {F_OBEX, 0}},
508  {"A1028s", "1100902-BV" ,"", {F_OBEX, 0}},
509  {"A1028sc", "1100902-CN" ,"", {F_OBEX, 0}},
510  {"T18s", "1101001-BV" ,"", {F_OBEX, 0}},
511  {"T18sc", "1101001-CN" ,"", {F_OBEX, 0}},
512  {"T10s", "1101002-BV" ,"", {F_OBEX, 0}},
513  {"T10sc", "1101002-CN" ,"", {F_OBEX, 0}},
514  {"T28s", "1101101-BC" ,"", {F_OBEX, 0}},
515  {"T28sc", "1101101-CN" ,"", {F_OBEX, 0}},
516  {"R310s", "1101102-BC" ,"", {F_OBEX, 0}},
517  {"R310sc", "1101102-CN" ,"", {F_OBEX, 0}},
518  {"R320s", "1101201-BV" ,"", {F_OBEX, 0}},
519  {"R320sc", "1101201-CN" ,"", {F_OBEX, 0}},
520  {"T20e", "1101401-BV" ,"", {F_OBEX, 0}},
521  {"T20ec", "1101401-CN" ,"", {F_OBEX, 0}},
522  {"A2618s", "1101501-BV" ,"", {F_OBEX, 0}},
523  {"A2618sc", "1101501-CN" ,"", {F_OBEX, 0}},
524  {"A2628s", "1101502-BV" ,"", {F_OBEX, 0}},
525  {"A2628sc", "1101502-CN" ,"", {F_OBEX, 0}},
526  {"T29s", "1101601-BV" ,"", {F_OBEX, 0}},
527  {"T29sc", "1101601-CN" ,"", {F_OBEX, 0}},
528  {"A3618s", "1101801-BV" ,"", {F_OBEX, 0}},
529  {"A3618sc", "1101801-CN" ,"", {F_OBEX, 0}},
530  {"T65", "1101901-BV" ,"", {F_OBEX, 0}},
531  {"T65", "1101901-CN" ,"", {F_OBEX, 0}},
532  {"R600", "1102001-BV" ,"", {F_OBEX, 0}},
533  {"R602", "1102001-CN" ,"", {F_OBEX, 0}},
534  {"T100", "1102101-BV" ,"", {F_OBEX, 0}},
535  {"T102", "1102101-BV" ,"", {F_OBEX, 0}},
536  {"T105", "1102101-BV" ,"", {F_OBEX, 0}},
537  {"T100", "1102101-CN" ,"", {F_OBEX, 0}},
538  {"T102", "1102101-CN" ,"", {F_OBEX, 0}},
539  {"T105", "1102101-CN" ,"", {F_OBEX, 0}},
540  {"R520m", "1130101-BV" ,"", {F_OBEX, 0}},
541  {"R520mc", "1130101-CN" ,"", {F_OBEX, 0}},
542  {"T39m", "1130102-BV" ,"", {F_OBEX, 0}},
543  {"T39mc", "1130102-CN" ,"", {F_OBEX, 0}},
544  {"T68", "1130201-BV" ,"", {F_OBEX, 0}},
545  {"T68", "1130201-CN" ,"", {F_OBEX, 0}},
546  {"T68i", "1130202-BV" ,"", {F_OBEX, 0}},
547  {"T68ie", "1130202-CN" ,"", {F_OBEX, 0}},
548  {"T66", "1130401-BV" ,"", {F_OBEX, 0}},
549  {"T66", "1130401-CN" ,"", {F_OBEX, 0}},
550  {"T600", "1130402-BV" ,"", {F_OBEX, 0}},
551  {"T602", "1130402-CN" ,"", {F_OBEX, 0}},
552  {"T200", "1130501-BV" ,"", {F_OBEX, 0}},
553  {"T202", "1130501-CN" ,"", {F_OBEX, 0}},
554  {"T300", "1130601-BV" ,"", {F_OBEX, 0}},
555  {"T302", "1130601-CN" ,"", {F_OBEX, 0}},
556  {"T310", "1130602-BV" ,"", {F_OBEX, 0}},
557  {"T312", "1130602-CN" ,"", {F_OBEX, 0}},
558  {"T28 WORLD", "1141101-BV" ,"", {F_OBEX, 0}},
559  {"R190", "1150101-BV" ,"", {F_OBEX, 0}},
560  {"R290", "1180101-BV" ,"", {F_OBEX, 0}},
561  {"T106", "1222101-BV" ,"", {F_OBEX, 0}},
562  {"T608", "1250101-BV" ,"", {F_OBEX, 0}},
563  {"T306", "1260101-BV" ,"", {F_OBEX, 0}},
564  {"T316", "1260102-BV" ,"", {F_OBEX, 0}},
565  {"T106 850", "1272101-BV" ,"", {F_OBEX, 0}},
566  {"GM12", "6050102-BV" ,"", {F_OBEX, 0}},
567  {"GM22", "6100201-BV" ,"", {F_OBEX, 0}},
568  {"GM25", "6100202-BV" ,"", {F_OBEX, 0}},
569  {"GM47", "6100501-BV" ,"", {F_OBEX, 0}},
570  {"GM27", "6100502-BV" ,"", {F_OBEX, 0}},
571  {"GM29", "6100503-BV" ,"", {F_OBEX, 0}},
572  {"GM41", "6100504-BV" ,"", {F_OBEX, 0}},
573  {"GR47", "6100511-BV" ,"", {F_OBEX, 0}},
574  {"GT47", "6100512-BV" ,"", {F_OBEX, 0}},
575  {"GC75", "6130201-BV" ,"", {F_OBEX, 0}},
576  {"GC25", "6150101-BV" ,"", {F_OBEX, 0}},
577  {"GM48", "6220501-BV" ,"", {F_OBEX, 0}},
578  {"GM28", "6220502-BV" ,"", {F_OBEX, 0}},
579  {"GR48", "6220511-BV" ,"", {F_OBEX, 0}},
580  {"GT48", "6220512-BV" ,"", {F_OBEX, 0}},
581  {"R380s", "7100101-BV" ,"", {F_OBEX, 0}},
582  {"R380sc", "7100101-CN" ,"", {F_OBEX, 0}},
583  {"P800", "7130501-BV" ,"", {F_OBEX, 0}},
584  {"P802", "7130501-CN" ,"", {F_OBEX, 0}},
585  {"R380s world", "7140101-BV" ,"", {F_OBEX, 0}},
586 
587  /* Sony-Ericsson since 2003, partly not verified */
588  {"T230", "AAA-1001012-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
589  {"T228", "AAA-1001012-CN" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
590  {"T290i", "AAA-1001013-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
591  {"T290c", "AAA-1001013-CN" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
592  {"J300i/J300c", "AAA-1001021-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
593  {"Z300i/Z300c", "AAA-1001031-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
594  {"J230i/J230c", "AAA-1002011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
595  {"J220i/J220c", "AAA-1002012-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
596  {"J100i/J100c", "AAA-1002021-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
597  {"J120i/J120c", "AAA-1002041-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
598  {"J110i/J110c", "AAA-1002042-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
599  {"K200i/K220c", "AAA-1002051-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
600  {"K220i/K220c", "AAA-1002052-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
601  {"K205i", "AAA-1002053-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
602  {"T250i/T250c", "AAA-1002061-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
603  {"K330", "AAA-1002062-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
604  {"T280i/T280c", "AAA-1002081-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
605  {"J132", "AAA-1002091-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
606  {"T226", "AAA-1041011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
607  {"T226s/T237m", "AAA-1041012-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
608  {"J300a", "AAA-1041021-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
609  {"Z300a", "AAA-1041031-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
610  {"J230a", "AAA-1042011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
611  {"J220a", "AAA-1042012-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
612  {"J100a", "AAA-1042021-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
613  {"T250a", "AAA-1042031-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
614  {"J110a", "AAA-1042041-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
615  {"K200a", "AAA-1042051-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
616  {"K205a", "AAA-1042052-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
617  {"T250a", "AAA-1042061-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
618  {"K330a", "AAA-1042062-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
619  {"T280a", "AAA-1042081-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
620  {"J132a", "AAA-1042092-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
621  {"T292a", "AAA-1061011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
622  {"T610", "AAB-1021011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
623  {"T618", "AAB-1021011-CN" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
624  {"T630", "AAB-1021012-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
625  {"T628", "AAB-1021012-CN" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
626  {"Z200", "AAB-1021021-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
627  {"Z208", "AAB-1021021-CN" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
628  {"Z600", "AAB-1021031-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
629  {"Z608", "AAB-1021031-CN" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
630  {"K700i", "AAB-1021041-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
631  {"K700c", "AAB-1021041-CN" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
632  {"F500i", "AAB-1021042-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
633  {"K506c", "AAB-1021042-CN" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
634  {"K500i", "AAB-1021043-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
635  {"K500c", "AAB-1021043-CN" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
636  {"K508i", "AAB-1021044-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
637  {"K508c", "AAB-1021044-CN" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
638  {"S700i", "AAB-1021051-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
639  {"S700c", "AAB-1021051-CN" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
640  {"J200i", "AAB-1021061-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
641  {"J200c", "AAB-1021061-CN" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
642  {"J210i", "AAB-1021062-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
643  {"J210c", "AAB-1021062-CN" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
644  {"K300i/K300c", "AAB-1021071-BV" ,"K300i", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
645  {"K750i/K750c", "AAB-1022011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, F_NO_CLIP, 0}},
646  {"D750i/K758c", "AAB-1022012-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, F_NO_CLIP, 0}},
647  {"W800i/W800c", "AAB-1022013-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, F_NO_CLIP, 0}},
648  {"W700i/W700c", "AAB-1022014-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, F_NO_CLIP, 0}},
649  {"Z550i/Z550c", "AAB-1022015-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, F_NO_CLIP, 0}},
650  {"Z558i/Z558c", "AAB-1022016-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, F_NO_CLIP, 0}},
651  {"W550i/W550c", "AAB-1022021-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
652  {"Z530i/Z530c", "AAB-1022031-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
653  {"K510i/K510c", "AAB-1022041-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
654  {"K310i/K310c", "AAB-1022042-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
655  {"K320i/K320c", "AAB-1022043-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
656  {"W200i/W200c", "AAB-1022044-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
657  {"Z310i/Z310c", "AAB-1022051-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
658  {"W830i/W830c", "AAB-1022061-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
659  {"W888c", "AAB-1022071-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
660  {"K818c", "AAB-1022081-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
661  {"Z320i", "AAB-1022091-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
662  {"Z250i/Z250c", "AAB-1022092-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
663  {"T658c", "AAB-1022101-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
664  {"W380i", "AAB-1022111-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
665  {"Z555i", "AAB-1022112-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
666  {"W350i/W350c", "AAB-1022121-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
667  {"K530c", "AAB-1022131-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
668  {"C902c", "AAB-1022141-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
669  {"R300", "AAB-1022151-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
670  {"R306/R306c", "AAB-1022161-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
671  {"T303", "AAB-1022171-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
672  {"T616", "AAB-1031011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
673  {"T637", "AAB-1031012-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
674  {"K300a", "AAB-1031021-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
675  {"K510a", "AAB-1032011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
676  {"K310a", "AAB-1032012-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
677  {"W200a", "AAB-1032013-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
678  {"Z310a", "AAB-1032021-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
679  {"Z320a", "AAB-1032041-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
680  {"Z250a", "AAB-1032042-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
681  {"W380a", "AAB-1032051-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
682  {"Z555a", "AAB-1032052-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
683  {"W350a", "AAB-1032061-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
684  {"R300a", "AAB-1032071-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
685  {"R306a", "AAB-1032081-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
686  {"T303a", "AAB-1032091-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
687  {"W205", "AAB-1880010-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
688  {"W205a", "AAB-1880011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
689  {"S312", "AAB-1880013-BV" ,"S312", {F_OBEX, F_IRMC_LEVEL_2, F_SUBMIT_SIM_ONLY, 0}},
690  {"W395/W395c", "AAB-1880014-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
691  {"W100i (Spiro)", "AAB-1880025-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
692  {"W100a (Spiro)", "AAB-1880026-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
693  {"W150i (Yendo)", "AAB-1880027-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
694  {"W150a (Yendo)", "AAB-1880028-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
695  {"Z520i/Z520c", "AAC-1052011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
696  {"Z520a", "AAC-1052012-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
697  {"Z525i", "AAC-1052013-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
698  {"Z525a", "AAC-1052014-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
699  {"K550i/K550c", "AAC-1052021-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
700  {"W610i/W610c", "AAC-1052022-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
701  {"K550im", "AAC-1052023-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
702  {"Z550a", "AAC-1052031-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
703  {"S500i/S500c", "AAC-1052041-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
704  {"W580i/W580c", "AAC-1052042-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
705  {"W908c", "AAC-1052051-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
706  {"K858c", "AAC-1052061-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
707  {"W302/W302c", "AAC-1052091-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
708  {"W760c", "AAC-1052101-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
709  {"S302", "AAC-1052121-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
710  {"C702a/C702c", "AAC-1052141-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
711  {"C905c", "AAC-1052151-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
712  {"F305/F305c", "AAC-1052161-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
713  {"G502c", "AAC-1052171-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
714  {"W595a/W595c", "AAC-1052191-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
715  {"Z1010", "AAD-3011011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
716  {"V800/V802SE/Z800i", "AAD-3021011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
717  {"K600i", "AAD-3021021-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
718  {"V600i", "AAD-3021022-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
719  {"K608i", "AAD-3021023-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
720  {"W900i", "AAD-3022011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
721  {"W850i", "AAD-3022021-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
722  {"K800i", "AAD-3022031-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
723  {"K610i", "AAD-3022041-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
724  {"K618i/V630i", "AAD-3022042-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
725  {"K610im", "AAD-3022043-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
726  {"Z610i", "AAD-3022044-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
727  {"W880i", "AAD-3022051-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
728  {"K810i", "AAD-3022061-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
729  {"W660i", "AAD-3022071-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
730  {"T650i", "AAD-3022081-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
731  {"K770i", "AAD-3022082-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
732  {"K530i", "AAD-3022091-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
733  {"K630i", "AAD-3022101-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
734  {"V640i", "AAD-3022102-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
735  {"G502", "AAD-3022121-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
736  {"W910i", "AAD-3052021-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
737  {"W890i", "AAD-3052041-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
738  {"T700", "AAD-3052042-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
739  {"Z770i/Ducati", "AAD-3052051-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
740  {"K660i", "AAD-3052071-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
741  {"C702", "AAD-3052081-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
742  {"W980", "AAD-3052091-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
743  {"C902", "AAD-3052101-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
744  {"W595", "AAD-3052111-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
745  {"W595s", "AAD-3052112-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
746  {"W902/W902 plus", "AAD-3052121-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
747  {"TM506", "AAD-3132011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
748  {"CS8", "AAD-3152021-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
749  {"K850i", "AAD-3252011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
750  {"K850a", "AAD-3252012-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
751  {"Z750i", "AAD-3252022-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
752  {"Z750a", "AAD-3252023-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
753  {"W760i", "AAD-3252041-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
754  {"Z780i", "AAD-3252051-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
755  {"C905a", "AAD-3252071-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
756  {"G705", "AAD-3352031-AV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
757  {"G705a", "AAD-3252081-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
758  {"C905", "AAD-3352021-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
759  {"G705/G705u", "AAD-3352031-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
760  {"FOMA SO905i (PTX-824)", "AAD-3624011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
761  {"FOMA SO905iCS (PTX-825)", "AAD-3624021-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
762  {"FOMA SO906i (PTX-826)", "AAD-3724011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
763  {"X1", "AAD-3880001-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
764  {"X1a", "AAD-3880002-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
765  {"FOMA SO706i (PTX-828)", "AAD-3880003-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
766  {"W705a", "AAD-3880005-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
767  {"W705/W705u", "AAD-3880006-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
768  {"C901a", "AAD-3880008-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
769  {"C510", "AAD-3880009-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
770  {"C510a", "AAD-3880010-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
771  {"C901", "AAD-3880015-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
772  {"W508", "AAD-3880016-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
773  {"W518a", "AAD-3880017-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
774  {"U1i (Satio)", "AAD-3880020-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
775  {"W995", "AAD-3880023-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
776  {"W508a", "AAD-3880024-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
777  {"W715", "AAD-3880025-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
778  {"C903", "AAD-3880026-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
779  {"C903a", "AAD-3880027-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
780  {"T707", "AAD-3880029-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
781  {"TM717", "AAD-3880030-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
782  {"T707a", "AAD-3880031-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
783  {"U10i (Aino)", "AAD-3880032-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
784  {"U10a (Aino)", "AAD-3880033-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
785  {"W995a", "AAD-3880035-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
786  {"U1a (Satio)", "AAD-3880037-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
787  {"T715", "AAD-3880039-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
788  {"T715a", "AAD-3880040-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
789  {"F100i (Jalou)", "AAD-3880041-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
790  {"X2i", "AAD-3880043-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
791  {"X2a", "AAD-3880044-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
792  {"U100i (Yari)", "AAD-3880046-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
793  {"U100a (Yari)", "AAD-3880047-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
794  {"X5", "AAD-3880049-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
795  {"J105i (Naite)", "AAD-3880052-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
796  {"J105a (Naite)", "AAD-3880053-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
797  {"X10i", "AAD-3880056-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
798  {"U5i (Vivaz)", "AAD-3880058-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
799  {"U5a (Vivaz)", "AAD-3880059-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
800  {"M1i (Aspen)", "AAD-3880061-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
801  {"M1a (Aspen)", "AAD-3880062-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
802  {"J20i (Hazel)", "AAD-3880063-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
803  {"J10i2 (Elm)", "AAD-3880065-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
804  {"J10", "AAD-3880067-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
805  {"E10a (X10 mini)", "AAD-3880068-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
806  {"E10i (X10 mini)", "AAD-3880069-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
807  {"U5at", "AAD-3880070-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
808  {"U20a (X10 mini pro)", "AAD-3880071-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
809  {"U20i (X10 mini pro)", "AAD-3880072-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
810  {"X10a/SO-01B", "AAD-3880074-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
811  {"U8a (Vivaz Pro)", "AAD-3880076-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
812  {"U8i (Vivaz Pro)", "AAD-3880077-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
813  {"J20", "AAD-3880080-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
814  {"W20i", "AAD-3880083-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
815  {"W20", "AAD-3880084-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
816  {"E15i (X8)", "AAD-3880091-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
817  {"E15a (X8)", "AAD-3880092-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
818  {"J108i (Cedar)", "AAD-3880095-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
819  {"J108a (Cedar)", "AAD-3880096-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
820  {"K790i/K790c", "AAF-1022011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
821  {"Z500a", "AAF-1031011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
822  {"S710a", "AAF-1031021-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
823  {"K790a", "AAF-1032011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
824  {"W712a", "AAF-1042011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
825  {"Z712a", "AAF-1042012-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
826  {"W600a/W600c/W600i", "AAF-1052021-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
827  {"W300i/W300c", "AAF-1052031-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
828  {"W710i/W710c", "AAF-1052041-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
829  {"Z710i/Z710c", "AAF-1052043-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
830  {"W810i/W810c", "AAF-1052051-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
831  {"Z502a", "AAF-1061011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
832  {"W62S (PTX-924)", "AAH-5025011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
833  {"W64S (PTX-930)", "AAH-5880001-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
834  {"SO001 (PTX-932)", "AAH-5880002-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
835  {"SOX01 (PTX-934)", "AAH-5880003-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
836  {"SO002 (PTX-934)", "AAH-5880005-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
837  {"SO003 (PTX-942)", "AAH-5880006-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
838  {"SO004 (PTX-943)", "AAH-5880007-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
839  {"SOY04 (PTX-94?)", "AAH-5880008-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
840  {"SO005 (PTX-945)", "AAH-5880009-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
841  {"SO006 (PTX-947)", "AAH-5880010-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
842  {"SOX02 (PTX-952)", "AAH-5880011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
843  {"SOY01 (PTX-931)", "AAJ-6880001-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
844  {"SOY02 (PTX-938)", "AAJ-6880002-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
845  {"SOY03 (PTX-941)", "AAJ-6880003-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
846  {"A8i", "AAK-7880001-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
847  {"GR64", "BAC-1051012-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
848  {"GS64", "BAC-1051022-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
849  {"GA64", "BAC-1051023-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
850  {"CM52", "BAE-4001011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
851  {"CM52", "BAE-4001012-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
852  {"GC82", "FAA-1041011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
853  {"P900", "FAB-1021011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
854  {"P908", "FAB-1021011-CN" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
855  {"P910i", "FAB-1021012-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
856  {"P910c", "FAB-1021012-CN" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
857  {"M608c", "FAB-1022011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
858  {"W958c", "FAB-1022012-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
859  {"P1c", "FAB-1022013-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
860  {"G700c", "FAB-1022015-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
861  {"P910a", "FAB-1031012-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
862  {"P990i", "FAD-3022011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
863  {"M600i", "FAD-3022012-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
864  {"W950i", "FAD-3022013-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
865  {"P1i", "FAD-3022015-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
866  {"W960i", "FAD-3022017-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
867  {"G700", "FAD-3022018-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
868  {"G900", "FAD-3022019-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
869  {"GC95", "FAD-3031011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
870  {"GC99", "FAD-3031012-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
871  {"PC300", "FAD-3231011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
872  {"EM400", "FAD-3232011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
873  {"EC400", "FAD-3232012-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
874  {"EC400g", "FAD-3232013-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
875  {"MD300", "FAD-3232021-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
876  {"MD400g", "FAD-3232022-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
877  {"MD400", "FAD-3232023-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
878  {"G700 Business Edition", "FAD-3880001-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
879  {"GC79", "FAE-1021011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, F_SMS_LOCATION_0, 0}},
880  {"GC85", "FAF-1021011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
881  {"GC83", "FAF-1031011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
882  {"VDC", "FAF-1031021-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
883  {"GC89", "FAF-1051011-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
884  {"GC86", "FAF-1051012-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
885  {"G702", "FAF-1052021-BV" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, 0}},
886 
887 
888  /* Some cards identify a bit different */
889  {"GC79", "FAE-1021011-BVGC79" ,"", {F_OBEX, F_SUBMIT_SIM_ONLY, F_SMS_LOCATION_0, 0}},
890 
891  /* Option devices */
892  {"GlobeTrotter HSDPA Modem", "GlobeTrotter HSDPA Modem" ,"", {F_SMS_LOCATION_0, 0}},
893  {"GlobeTrotter 3G+", "GlobeTrotter 3G+" ,"", {F_SMS_LOCATION_0, 0}},
894 
895  /* IrDA identifications for Sony-Ericsson */
896  /* At least my K750i reports itself as "Sony Ericss", so detect it for IrDA */
897  {"Generic SE", "Generic SE", "Sony Ericss", {F_OBEX, 0}},
898  {"K300 series", "K300 series", "K300 series", {F_OBEX, 0}},
899  {"K700 series", "K700 series", "K700 series", {F_OBEX, 0}},
900 
901  /* Mitsubishi */
902  {"M341i", "M7", "MT170", {F_OBEX, F_IRMC_LEVEL_2, 0}},
903 
904  /* Motorola */
905  {"W5", "W5", "", {F_OBEX, F_IRMC_LEVEL_2, F_MODE22, F_PBK_UNICODE, 0}},
906  {"V3", "V3 Razr", "", {F_OBEX, F_IRMC_LEVEL_2, F_MODE22, F_PBK_UNICODE, 0}},
907  {"V8", "V8", "", {F_PBK_UNICODE, 0}},
908  {"L6", "L6", "", {F_OBEX, F_IRMC_LEVEL_2, F_MODE22, F_PBK_UNICODE, 0}},
909  {"PEBL U6", "PEBL U6", "", {F_NO_ATOBEX, F_PBK_UNICODE, 0}},
910  {"Serias E", "Serias E", "", {F_OBEX, F_IRMC_LEVEL_2, F_MODE22, F_PBK_UNICODE, 0}},
911  {"E815m", "E815m", "", {F_OBEX, F_IRMC_LEVEL_2, F_MODE22, F_PBK_UNICODE, 0}},
912  {"V635", "V635", "", {F_OBEX, F_IRMC_LEVEL_2, F_MODE22, F_PBK_UNICODE, 0}},
913  {"L7", "L7", "", {F_NO_ATOBEX, F_CKPD_NO_UNICODE, F_USE_SMSTEXTMODE, 0}},
914  {"L7cm", "L7cm", "", {F_NO_ATOBEX, F_CKPD_NO_UNICODE, F_USE_SMSTEXTMODE, 0}},
915  {"K1", "K1", "", {F_NO_ATOBEX, F_PBK_UNICODE, F_USE_SMSTEXTMODE, 0}},
916  {"K1v", "K1v", "", {F_NO_ATOBEX, F_PBK_UNICODE, 0}},
917  {"Z6c", "Z6c", "", {F_NO_ATOBEX, F_PBK_UNICODE, 0}},
918  {"V180", "V180", "", {F_NO_ATOBEX, 0}},
919  {"E790", "E790", "", {F_NO_ATOBEX, 0}},
920  {"A1200e", "A1200e", "", {F_NO_ATOBEX, 0}},
921  {"RAZRV3x", "RAZRV3x", "", {F_OBEX, F_IRMC_LEVEL_2, F_MODE22, F_PBK_UNICODE, 0}},
922 
923  /* Sharp */
924  {"GX", "GX Series", "", {F_OBEX, F_XLNK, 0}},
925  {"903SH/703SH", "903SH_703SH", "", {F_OBEX, F_XLNK, 0}}, /* Guess */
926 
927  /* Other */
928  {"iPAQ" , "iPAQ" , "" , {0}},
929  {"A2D" , "A2D" , "" , {F_CPIN_NO_OK, 0}},
930  {"MULTIBAND 900E 1800", "MULTIBAND 900E 1800", "", {F_CPIN_NO_OK, 0}},
931  {"9210" , "RAE-3", "Nokia Communicator GSM900/1800",{0}},
932  {"MTK1" , "MTK1", "", {0}},
933  {"MTK2" , "MTK2", "", {0}},
934 
935  /* Sagem */
936  {"myV-65", "myV-65 GPRS", "", {F_SMSME900,0}},
937  {"myX-7", "myX-7 GPRS", "", {F_OBEX, F_CPROT, F_PBK_ENCODENUMBER, 0}}, /* Guessed */
938 
939  /* LG */
940  {"KG800", "KG800", "", {F_NO_UCS2, 0}},
941 
942  /* Huawei */
943  {"E17X", "E17X", "", {F_NO_UCS2, 0}},
944  {"E220", "E220", "", {0}},
972 
973  /* ZTE */
974  {"MF100", "MF100", "", {F_ZTE_INIT, 0}},
975  {"MF190", "MF190", "", {F_ZTE_INIT, 0}},
976 
977  /* Ubinetics */
978  {"GDC201", "GDC201", "", {F_SMS_NO_ME, 0}},
979 
980  /* Dell */
981  {"DW5560", "DW5560", "", {0}},
982 
983  /* Other */
984  {"SIMCOM_SIM300D","SIMCOM_SIM300D","", {F_ENCODED_USSD, 0}},
985  {"SIMCOM_SIM900","SIMCOM_SIM900","", {0}},
986 
987  /* Qualcomm */
988  {"HP un2420 Mobile Broadband Module", "un2420", "", {F_NO_STOP_CUSD, 0}},
989 
990 #endif
991 #if defined(GSM_ENABLE_ATGEN) || defined(GSM_ENABLE_ALCATEL)
992  /* Alcatel */
993  {"BE5", "ONE TOUCH 500","", {F_ALCATEL,F_SMSONLYSENT,F_BROKENCPBS,F_LENGTH_BYTES,0}},
994  {"BH4", "ONE TOUCH 535","ALCATEL OT535", {F_ALCATEL,F_SMSONLYSENT,F_LENGTH_BYTES,0}},
995  {"BF5", "ONE TOUCH 715","ALCATEL OT715", {F_ALCATEL,F_SMSONLYSENT,F_BROKENCPBS,F_LENGTH_BYTES,0}},
996  {"OT - C55x", "OT - C55x","ALCATEL OT55x", {F_ALCATEL,0}},
997  {"OT-C825/C825A", "OT-C825/C825A","", {F_ALCATEL,0}},
998 #endif
999  {"unknown", "" ,"", {0}}
1000 };
1001 
1002 GSM_PhoneModel *GetModelData(GSM_StateMachine *s, const char *model, const char *number, const char *irdamodel)
1003 {
1004  int i, j;
1005 
1006  /* Find model record if we have one */
1007  for (i = 0; strcmp(allmodels[i].number, "") != 0; i++) {
1008  if (model !=NULL && strcmp (model, allmodels[i].model) == 0)
1009  break;
1010  if (number !=NULL && strcmp (number, allmodels[i].number) == 0)
1011  break;
1012  if (irdamodel !=NULL && strcmp (irdamodel, allmodels[i].irdamodel) == 0)
1013  break;
1014  }
1015 
1016  /* Force user configured features */
1017  if (s != NULL && s->CurrentConfig != NULL && s->CurrentConfig->PhoneFeatures[0] != 0) {
1018  for (j = 0; j <= GSM_MAX_PHONE_FEATURES && s->CurrentConfig->PhoneFeatures[j] != 0; j++) {
1019  allmodels[i].features[j] = s->CurrentConfig->PhoneFeatures[j];
1020  }
1021  }
1022 
1023  return (&allmodels[i]);
1024 }
1025 
1027 {
1028  int i;
1029 
1030  for (i = 0; model->features[i] != 0; i++) {
1031  if (model->features[i] == feature) {
1032  return TRUE;
1033  }
1034  }
1035 
1036  return FALSE;
1037 }
1038 
1040 {
1041  int i = 0;
1042 
1043  for (i = 0; model->features[i] != 0; i++) {
1044  if (model->features[i] == feature) {
1045  return TRUE;
1046  }
1047  }
1048 
1049  if (i == GSM_MAX_PHONE_FEATURES) return FALSE;
1050  model->features[i++] = feature;
1051  model->features[i] = 0;
1052  return TRUE;
1053 }
1054 
1055 /* How should editor hadle tabs in this file? Add editor commands here.
1056  * vim: noexpandtab sw=8 ts=8 sts=8:
1057  */
GSM_Config * CurrentConfig
Definition: gsmstate.h:1415
GSM_Feature feature
Definition: gsmphones.c:28
GSM_PhoneModel allmodels[]
Definition: gsmphones.c:207
const char * GSM_FeatureToString(GSM_Feature feature)
Definition: gsmphones.c:135
GSM_Error
Definition: gammu-error.h:23
int gboolean
Definition: gammu-types.h:23
GSM_Feature PhoneFeatures[GSM_MAX_PHONE_FEATURES+1]
GSM_Feature GSM_FeatureFromString(const char *feature)
Definition: gsmphones.c:145
GSM_PhoneModel * GetModelData(GSM_StateMachine *s, const char *model, const char *number, const char *irdamodel)
Definition: gsmphones.c:1002
#define FALSE
Definition: gammu-types.h:25
gboolean GSM_AddPhoneFeature(GSM_PhoneModel *model, GSM_Feature feature)
Definition: gsmphones.c:1039
#define GSM_MAX_PHONE_FEATURES
Definition: gammu-limits.h:302
GSM_Feature features[GSM_MAX_PHONE_FEATURES+1]
Definition: gammu-info.h:776
GSM_Error GSM_SetFeatureString(GSM_Feature *list, const char *string)
Definition: gsmphones.c:155
gboolean GSM_IsPhoneFeatureAvailable(GSM_PhoneModel *model, GSM_Feature feature)
Definition: gsmphones.c:1026
char name[MAX_FEATURE_NAME_LEN+1]
Definition: gsmphones.c:27
int smfprintf(GSM_Debug_Info *d, const char *format,...)
Definition: debug.c:240
#define TRUE
Definition: gammu-types.h:28
GSM_FeatureName AllFeatureNames[]
Definition: gsmphones.c:31
GSM_Feature
Definition: gammu-info.h:313
#define MAX_FEATURE_NAME_LEN
Definition: gsmphones.c:24