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