Branch update for mygnokii2002_03_17_19_29nl
[gnokii.git] / gnokii / gnokii.h
1 /*
2
3   G N O K I I
4
5   A Linux/Unix toolset and driver for Nokia mobile phones.
6
7   Released under the terms of the GNU GPL, see file COPYING for more details.
8
9   Header file for test utility.
10
11 */
12
13 /* Prototypes */
14
15 #ifndef UCLINUX
16
17 int monitormode(int argc, char *argv[]);
18
19 #ifdef SECURITY
20   int entersecuritycode(char *type);
21   int getsecuritycodestatus(void);
22   int getsecuritycode(char *type);
23 #endif
24
25 #ifdef DEBUG
26   int sniff(int nargc, char *nargv[]);
27   int decodefile(int nargc, char *nargv[]); 
28   int getbinringfromfile(int nargc, char *nargv[]); 
29 #endif
30
31 #endif /* UCLINUX */
32
33 static int getmemory(int argc, char *argv[]);
34 static int writephonebook(int argc, char *argv[]);
35 static int getspeeddial(char *number);
36 static int setspeeddial(char *argv[]);
37 #ifndef UCLINUX
38 int getsms(int argc, char *argv[]);
39 int renamesmsc(int argc, char *argv[]);
40 int deletesms(int argc, char *argv[]);
41 int sendsms(int argc, char *argv[]);
42 int savesms(int argc, char *argv[]);
43 int sendlogo(int argc, char *argv[]);
44 int savelogo(int argc, char *argv[]);
45 int sendringtone(int argc, char *argv[]);
46 int saveringtone(int argc, char *argv[]);
47 int getsmsc(char *mcn);
48 int setdatetime(int argc, char *argv[]);
49 int getdatetime(void);
50 int setalarm(char *argv[]);
51 int getalarm(void);
52 int dialvoice(char *number);
53 #endif /* UCLINUX */
54 static int cancelcall(void);
55 #ifndef UCLINUX
56 int getcalendarnote(int argc, char *argv[]);
57 int writecalendarnote(char *argv[]);
58 int deletecalendarnote(char *index);
59 int getdisplaystatus();
60 int netmonitor(char *_mode);
61 #endif /* UCLINUX */
62 static int identify(void);
63 #ifndef UCLINUX
64 int senddtmf(char *String);
65 int foogle(char *argv[]);
66 int pmon(void);
67 int setlogo(int argc, char *argv[]);
68 int getlogo(int argc, char *argv[]);
69 int binringtoneconvert(int argc, char *argv[]);
70 int setringtone(int argc, char *argv[]);
71 int getringtone(int argc, char *argv[]);
72 #endif /* UCLINUX */
73 static int reset(int argc, char *argv[]);
74 #ifndef UCLINUX
75 int getprofile(int argc, char *argv[]);
76 int setprofile(int argc, char *argv[]);
77 int allringtones();
78 int displayoutput();
79 int presskeysequence(char *argv[]);
80 int restoresettings(char *argv[]);
81 int backupsettings(char *argv[]);
82 int playringtone(int argc, char *argv[]);
83 int ringtoneconvert(int argc, char *argv[]);
84 int bitmapconvert(int argc, char *argv[]);
85 int composer(int argc, char *argv[]);
86 int getphoneprofile();
87 int setphoneprofile(int argc, char *argv[]);
88 int getoperatorname();
89 int setoperatorname(int argc, char *argv[]);
90 int getvoicemailbox();
91 int phonetests();
92 int simlockinfo();
93 int geteeprom ();
94 int setsimlock ();
95 int getsmsfolders ();
96 int resetphonesettings ();
97 int sendprofile(int argc, char *argv[]);
98 int showbitmap(int argc, char *argv[]);
99 int nm_collect(int argc, char *argv[]);
100 int netmonitordata(int argc, char *argv[]);
101 int getwapbookmark(int argc, char *argv[]);
102 int setwapbookmark(int argc, char *argv[]);
103 int savewapbookmark(int argc, char *argv[]);
104 int sendwapbookmark(int argc, char *argv[]);
105 int getwapsettings(int argc, char *argv[]);
106 int savewapsettings(int argc, char *argv[]);
107 int sendwapsettings(int argc, char *argv[]);
108 int savecalendarnote(int argc, char *argv[]);
109 int sendcalendarnote(int argc, char *argv[]);
110 int receivesms(int argc, char *argv[]);
111 int getsmsstatus(int argc, char *argv[]);
112 int divert(int argc, char *argv[]);
113 int savephonebookentry(int argc, char *argv[]);
114 int sendphonebookentry(int argc, char *argv[]);
115 #endif /* UCLINUX */
116
117 typedef enum {
118   OPT_HELP,
119   OPT_VERSION,
120   OPT_MONITOR,
121   OPT_ENTERSECURITYCODE,
122   OPT_GETSECURITYCODESTATUS,
123   OPT_GETSECURITYCODE,
124   OPT_SETDATETIME,
125   OPT_GETDATETIME,
126   OPT_SETALARM,
127   OPT_GETALARM,
128   OPT_DIALVOICE,
129   OPT_CANCELCALL,
130   OPT_GETCALENDARNOTE,
131   OPT_WRITECALENDARNOTE,
132   OPT_DELCALENDARNOTE,
133   OPT_GETDISPLAYSTATUS,
134   OPT_GETMEMORY,
135   OPT_WRITEPHONEBOOK,
136   OPT_GETSPEEDDIAL,
137   OPT_SETSPEEDDIAL,
138   OPT_GETSMS,
139   OPT_DELETESMS,
140   OPT_SENDSMS,
141   OPT_SAVESMS,
142   OPT_GETSMSC,
143   OPT_RENAMESMSC,
144   OPT_PMON,
145   OPT_NETMONITOR,
146   OPT_NM_COLLECT,
147   OPT_NETMONITORDATA,
148   OPT_IDENTIFY,
149   OPT_SENDDTMF,
150   OPT_RESET,
151   OPT_SETLOGO,
152   OPT_GETLOGO,
153   OPT_SENDLOGO,
154   OPT_SAVELOGO,
155   OPT_BITMAPCONVERT,
156   OPT_SENDRINGTONE,
157   OPT_SAVERINGTONE,
158   OPT_SETRINGTONE,
159   OPT_PLAYRINGTONE,
160   OPT_RINGTONECONVERT,
161   OPT_COMPOSER,
162   OPT_ALLRINGTONES,
163   OPT_GETRINGTONE,
164   OPT_SNIFFER,
165   OPT_GETPROFILE,
166   OPT_SETPROFILE,
167   OPT_DISPLAYOUTPUT,
168   OPT_PRESSKEYSEQUENCE,
169   OPT_RESTORESETTINGS,
170   OPT_BACKUPSETTINGS,
171   OPT_GETPHONEPROFILE,
172   OPT_SETPHONEPROFILE,
173   OPT_GETOPERATORNAME,
174   OPT_SETOPERATORNAME,
175   OPT_GETVOICEMAILBOX,
176   OPT_PHONETESTS,
177   OPT_FOOGLE,
178   OPT_SIMLOCKINFO,
179   OPT_SETSIMLOCK,
180   OPT_GETEEPROM=128,
181   OPT_GETSMSFOLDERS=129,
182   OPT_RESETPHONESETTINGS=130,
183   OPT_SENDPROFILE=131,
184   OPT_SHOWBITMAP=132,
185   OPT_BINRINGTONECONVERT=133,
186   OPT_GETWAPBOOKMARK=134,
187   OPT_SAVEWAPBOOKMARK=135,
188   OPT_SENDWAPBOOKMARK=136,
189   OPT_GETWAPSETTINGS=137,
190   OPT_SAVEWAPSETTINGS=138,
191   OPT_SAVECALENDARNOTE=139,
192   OPT_SENDCALENDARNOTE=140,
193   OPT_SAVEPHONEBOOKENTRY=141,
194   OPT_SENDPHONEBOOKENTRY=142,
195   OPT_DECODEFILE=143,
196   OPT_RECEIVESMS=144,
197   OPT_GETSMSSTATUS=145,
198   OPT_DIVERT=146,
199   OPT_SENDWAPSETTINGS=147,
200   OPT_SETWAPBOOKMARK=148,
201   OPT_GETBINRINGFROMFILE=149,
202   OPT_GNOKIID=150,
203 } opt_index;
204
205 struct gnokii_arg_len {
206   int gal_opt;
207   int gal_min;
208   int gal_max;
209   int gal_flags;
210 };
211
212 /* This is used for checking correct argument count. If it is used then if
213    the user specifies some argument, their count should be equivalent to the
214    count the programmer expects. */
215
216 #define GAL_XOR 0x01
217
218 /* for --presskeysequence */
219 struct keys_table_position {
220   char whatchar;
221   int whatcode;
222 };
223
224 #ifndef UCLINUX
225
226 /* for --presskeysequence */
227 static struct keys_table_position Keys[] = {
228 {'m',PHONEKEY_MENU},
229 {'M',PHONEKEY_MENU},
230 {'n',PHONEKEY_NAMES},
231 {'N',PHONEKEY_NAMES},
232 {'p',PHONEKEY_POWER},
233 {'P',PHONEKEY_POWER},
234 {'u',PHONEKEY_UP},
235 {'U',PHONEKEY_UP},
236 {'d',PHONEKEY_DOWN},
237 {'D',PHONEKEY_DOWN},
238 {'+',PHONEKEY_INCREASEVOLUME},
239 {'-',PHONEKEY_DECREASEVOLUME},
240 {'1',PHONEKEY_1},
241 {'2',PHONEKEY_2},
242 {'3',PHONEKEY_3},
243 {'4',PHONEKEY_4},
244 {'5',PHONEKEY_5},
245 {'6',PHONEKEY_6},
246 {'7',PHONEKEY_7},
247 {'8',PHONEKEY_8},
248 {'9',PHONEKEY_9},
249 {'*',PHONEKEY_ASTERISK},
250 {'0',PHONEKEY_0},
251 {'#',PHONEKEY_HASH},
252 {'g',PHONEKEY_GREEN},
253 {'G',PHONEKEY_GREEN},
254 {'r',PHONEKEY_RED},
255 {'R',PHONEKEY_RED},
256 {' ',0}
257 };
258
259 #endif /* UCLINUX */
260
261 /* for NETMONITOR */
262
263 //maximal number of screens for --nm_collect
264 #define MAX_NM_COLLECT 20
265
266 /* 255 used internally by functions */
267 #define NM_MAX_SCREEN 254
268
269 /* in 6150 v4.13 effectively used was 296 FIELDS + date + time ... */
270 #define NM_MAX_FIELDS 512       
271
272 typedef struct {
273         char *name;
274         int x;
275         int y;
276         int len;
277         char *mname;
278         int s_nr;
279         char type;
280         char value[NM_MAX_SCREEN_WIDTH];
281         void *next;
282 } PARAM_INFO_MON;
283
284 // info for make ouput, filled in by parse_process()
285 typedef struct {
286         int req_header;
287         unsigned long req_wait;
288         int req_n;
289         char req_fs[11];
290         char req_ls[11];
291         PARAM_INFO_MON *data[NM_MAX_FIELDS];
292         char out_f[NM_MAX_FIELDS];
293         unsigned char req_screen[NM_MAX_SCREEN];
294 } OUT_INFO_MON;
295
296 static int semicolon_pipe_substitution( GSM_PhonebookEntry *pentry, unsigned int direction );
297 static int str_substch( char *str, const char toric, const char sost );