First version, development moved to 5110-connected machine
[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 #endif /* UCLINUX */
113 static int savephonebookentry(int argc, char *argv[]);
114 #ifndef UCLINUX
115 int sendphonebookentry(int argc, char *argv[]);
116 #endif /* UCLINUX */
117
118 typedef enum {
119   OPT_HELP,
120   OPT_VERSION,
121   OPT_MONITOR,
122   OPT_ENTERSECURITYCODE,
123   OPT_GETSECURITYCODESTATUS,
124   OPT_GETSECURITYCODE,
125   OPT_SETDATETIME,
126   OPT_GETDATETIME,
127   OPT_SETALARM,
128   OPT_GETALARM,
129   OPT_DIALVOICE,
130   OPT_CANCELCALL,
131   OPT_GETCALENDARNOTE,
132   OPT_WRITECALENDARNOTE,
133   OPT_DELCALENDARNOTE,
134   OPT_GETDISPLAYSTATUS,
135   OPT_GETMEMORY,
136   OPT_WRITEPHONEBOOK,
137   OPT_GETSPEEDDIAL,
138   OPT_SETSPEEDDIAL,
139   OPT_GETSMS,
140   OPT_DELETESMS,
141   OPT_SENDSMS,
142   OPT_SAVESMS,
143   OPT_GETSMSC,
144   OPT_RENAMESMSC,
145   OPT_PMON,
146   OPT_NETMONITOR,
147   OPT_NM_COLLECT,
148   OPT_NETMONITORDATA,
149   OPT_IDENTIFY,
150   OPT_SENDDTMF,
151   OPT_RESET,
152   OPT_SETLOGO,
153   OPT_GETLOGO,
154   OPT_SENDLOGO,
155   OPT_SAVELOGO,
156   OPT_BITMAPCONVERT,
157   OPT_SENDRINGTONE,
158   OPT_SAVERINGTONE,
159   OPT_SETRINGTONE,
160   OPT_PLAYRINGTONE,
161   OPT_RINGTONECONVERT,
162   OPT_COMPOSER,
163   OPT_ALLRINGTONES,
164   OPT_GETRINGTONE,
165   OPT_SNIFFER,
166   OPT_GETPROFILE,
167   OPT_SETPROFILE,
168   OPT_DISPLAYOUTPUT,
169   OPT_PRESSKEYSEQUENCE,
170   OPT_RESTORESETTINGS,
171   OPT_BACKUPSETTINGS,
172   OPT_GETPHONEPROFILE,
173   OPT_SETPHONEPROFILE,
174   OPT_GETOPERATORNAME,
175   OPT_SETOPERATORNAME,
176   OPT_GETVOICEMAILBOX,
177   OPT_PHONETESTS,
178   OPT_FOOGLE,
179   OPT_SIMLOCKINFO,
180   OPT_SETSIMLOCK,
181   OPT_GETEEPROM=128,
182   OPT_GETSMSFOLDERS=129,
183   OPT_RESETPHONESETTINGS=130,
184   OPT_SENDPROFILE=131,
185   OPT_SHOWBITMAP=132,
186   OPT_BINRINGTONECONVERT=133,
187   OPT_GETWAPBOOKMARK=134,
188   OPT_SAVEWAPBOOKMARK=135,
189   OPT_SENDWAPBOOKMARK=136,
190   OPT_GETWAPSETTINGS=137,
191   OPT_SAVEWAPSETTINGS=138,
192   OPT_SAVECALENDARNOTE=139,
193   OPT_SENDCALENDARNOTE=140,
194   OPT_SAVEPHONEBOOKENTRY=141,
195   OPT_SENDPHONEBOOKENTRY=142,
196   OPT_DECODEFILE=143,
197   OPT_RECEIVESMS=144,
198   OPT_GETSMSSTATUS=145,
199   OPT_DIVERT=146,
200   OPT_SENDWAPSETTINGS=147,
201   OPT_SETWAPBOOKMARK=148,
202   OPT_GNOKIID=149,
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 );