http://marcin-wiacek.fkn.pl/english/zips/mygnokii.tar.gz
[gnokii.git] / common / newmodules / sniff / sniff.c
1 /*\r
2 \r
3   G N O K I I\r
4 \r
5   A Linux/Unix toolset and driver for Nokia mobile phones.\r
6 \r
7   Released under the terms of the GNU GPL, see file COPYING for more details.\r
8 \r
9   This file provides an API for accessing functions on the sniff and similar\r
10   phones.\r
11 \r
12 */\r
13 \r
14 /* "Turn on" prototypes in n-sniff.h */\r
15 \r
16 #define __n_sniff_c \r
17 \r
18 /* System header files */\r
19 #include <stdio.h>\r
20 #include <string.h>\r
21 #include <stdlib.h>\r
22  \r
23 #ifndef WIN32\r
24 \r
25   #include "devices/device.h"\r
26 \r
27 #endif\r
28 \r
29 /* Various header file */\r
30 #ifndef VC6\r
31   #include "config.h"\r
32 #endif\r
33 #include "misc.h"\r
34 #include "gsm-api.h"\r
35 #include "gsm-common.h"\r
36 #include "files/cfgreader.h"\r
37 #include "newmodules/sniff/sniff.h"\r
38 #include "newmodules/n6110.h"\r
39 #include "newmodules/n7110.h"\r
40 #include "gsm-networks.h"\r
41 \r
42 /* Global variables used by code in gsm-api.c to expose the functions\r
43    supported by this model of phone. */\r
44 \r
45 \r
46 static char *realmodel;       /* Model from .gnokiirc file. */
47 static char *Port;            /* Port from .gnokiirc file */
48 static char *Initlength;      /* Init length from .gnokiirc file */
49 static char *Connection;      /* Connection type from .gnokiirc file */
50 static char *SynchronizeTime; /* If we set date and time from computer to phone (from .gnokiirc file) */
51 static char *BinDir;                  /* Binaries directory from .gnokiirc file - not used here yet */
52 static GSM_ConnectionType connectiontype;
53
54 \r
55 \r
56 \r
57 \r
58 \r
59 \r
60 /* Here we initialise model specific functions. */\r
61 \r
62 GSM_Functions Nsniff_Functions = {\r
63   Nsniff_Initialise,\r
64   Nsniff_DispatchMessage,\r
65   NULL_Terminate,\r
66   NULL_KeepAlive,\r
67   NOTSUPPORTED,\r
68   NOTSUPPORTED,  \r
69   NOTSUPPORTED,\r
70   NOTSUPPORTED,\r
71   NOTSUPPORTED,\r
72   NOTSUPPORTED,\r
73   NOTSUPPORTED,\r
74   NOTSUPPORTED,\r
75   NOTSUPPORTED,\r
76   NOTSUPPORTED,\r
77   NOTSUPPORTED,\r
78   NOTSUPPORTED,\r
79   NOTSUPPORTED,\r
80   NOTSUPPORTED,\r
81   NOTSUPPORTED,\r
82   NOTSUPPORTED,\r
83   NOTSUPPORTED,\r
84   NOTSUPPORTED,\r
85   NOTSUPPORTED,\r
86   NOTSUPPORTED,\r
87   NOTSUPPORTED,\r
88   NOTSUPPORTED,\r
89   NOTSUPPORTED,\r
90   NOTSUPPORTED,\r
91   NOTSUPPORTED,\r
92   NOTSUPPORTED,\r
93   NOTSUPPORTED,\r
94   NOTSUPPORTED,\r
95   NOTSUPPORTED,\r
96   NOTSUPPORTED,\r
97   NOTSUPPORTED,\r
98   NOTSUPPORTED,\r
99   NOTSUPPORTED,\r
100   NOTSUPPORTED,\r
101   NOTSUPPORTED,\r
102   NOTSUPPORTED,\r
103   NOTSUPPORTED,\r
104   NOTSUPPORTED,\r
105   NOTSUPPORTED,\r
106   NOTSUPPORTED,\r
107   NOTSUPPORTED,\r
108   NOTSUPPORTED,\r
109   NOTSUPPORTED,\r
110   NOTSUPPORTED,\r
111   NOTSUPPORTED,\r
112   NOTSUPPORTED,\r
113   NOTSUPPORTED,\r
114   NOTSUPPORTED,\r
115   NOTSUPPORTED,\r
116   NOTSUPPORTED,\r
117   NOTSUPPORTED,\r
118   NOTSUPPORTED,\r
119   NOTSUPPORTED,\r
120   NOTSUPPORTED,\r
121   NOTSUPPORTED,\r
122   NOTSUPPORTED,\r
123   NOTSUPPORTED,\r  NOTSUPPORTED,
124   NOTSUPPORTED,
125   NOTSUPPORTED,
126   NOTSUPPORTED,
127   NOTSUPPORTED,
128   NOTSUPPORTED,
129   NOTSUPPORTED,
130   NOTSUPPORTED,
131   NOTSUPPORTED,
132   NOTSUPPORTED
133 };\r
134 \r
135
136
137 /* for all these Phones we support sniff */\r
138 \r
139 GSM_Information Nsniff_Information = {\r
140   "3210sniff|3310sniff|3330sniff|5110sniff|5130sniff|5190sniff|6110sniff|6130sniff|6150sniff|6190sniff|8210sniff|8850sniff|6210sniff|6250sniff|7110sniff",\r
141      /* Supported models in FBUS */\r
142   "3210sniff|3310sniff|3330sniff|5110sniff|5130sniff|5190sniff|6110sniff|6130sniff|6150sniff|6190sniff|8210sniff|8850sniff|6210sniff|6250sniff|7110sniff",\r
143      /* Supported models in MBUS */\r
144   "",\r
145      /* Supported models in FBUS over infrared */\r
146   "",\r
147      /* Supported models in FBUS over DLR3 */\r
148   "",
149   "6210decode|6250decode|7110decode", /* Supported models in FBUS over Irda sockets */
150   "",
151   "",
152   4,                     /* Max RF Level */\r
153   0,                     /* Min RF Level */\r
154   GRF_Arbitrary,         /* RF level units */\r
155   4,                     /* Max Battery Level */\r
156   0,                     /* Min Battery Level */\r
157   GBU_Arbitrary,         /* Battery level units */\r
158   GDT_None,              /* No date/time support */\r
159   GDT_None,              /* No alarm support */\r
160   0                      /* Max alarms = 0 */\r
161 };\r
162 \r
163 /* Initialise variables and state machine. */\r
164 GSM_Error Nsniff_Initialise(char *port_device, char *initlength,\r
165                           GSM_ConnectionType connection,\r
166                           void (*rlp_callback)(RLP_F96Frame *frame))\r
167 {\r
168 \r
169   GSM_PhonebookEntry phonebook;\r
170   GSM_SpeedDial speed;\r
171   GSM_SMSMessage sms;\r
172   GSM_MemoryStatus status;\r
173   GSM_NetworkInfo netinfo;\r
174   GSM_SMSStatus smsstatus;\r
175   GSM_SMSFolders folders;
176   GSM_MessageCenter smsc;\r
177   int secstatus;\r
178   GSM_SecurityCode seccode;\r
179   GSM_DateTime date;\r
180   GSM_DateTime alarm;\r
181   GSM_CalendarNote note;\r
182   char netmon;\r
183   GSM_Bitmap logo;\r
184   GSM_Profile profile;\r
185   GSM_CBMessage cb;\r
186   GSM_Network netname;\r
187   GSM_BinRingtone binring;
188   GSM_AllSimlocks siml;\r  \r  if (Protocol->Initialise(port_device,initlength,connection,rlp_callback)!=GE_NONE)\r
189   {\r
190     return GE_NOTSUPPORTED;\r
191   }\r
192 \r
193   CurrentLinkOK = true;                           \r
194 \r
195   CurrentPhonebookEntry=&phonebook;\r
196   CurrentSpeedDialEntry=&speed;\r
197   CurrentSMSMessage=&sms;\r
198   CurrentMemoryStatus=&status;\r
199   CurrentNetworkInfo=&netinfo;\r
200   CurrentSMSStatus=&smsstatus;\r
201   CurrentSMSFolders=&folders;
202   CurrentMessageCenter=&smsc;\r
203   CurrentSecurityCodeStatus=&secstatus;\r
204   CurrentSecurityCode=&seccode;\r
205   CurrentDateTime=&date;\r
206   CurrentAlarm=&alarm;\r
207   CurrentCalendarNote=&note;\r
208   CurrentNetmonitor=&netmon;\r
209   CurrentGetBitmap=&logo;\r
210   CurrentProfile=&profile;\r
211   CurrentCBMessage=&cb;\r
212   CurrentGetOperatorNameNetwork=&netname;\r
213   CurrentGetBinRingtone=&binring;
214   CurrentSimLock=&siml;\r  \r
215
216   /* Read config file, once again to get real model */
217     if (CFG_ReadConfig(&realmodel, &Port, &Initlength, &Connection, &BinDir, &SynchronizeTime,false) < 0) {
218         exit(-1);
219     }
220
221   connectiontype = GetConnectionTypeFromString(Connection);
222   return (GE_NONE);\r
223 }\r
224 \r
225
226 void Nsniff_DispatchMessage(u16 MessageLength, u8 *MessageBuffer, u8 MessageType)
227 {
228   
229 /* switch to real Model */
230   if (CheckModel (N6110_Information, realmodel, connectiontype)) 
231         N6110_DispatchMessage( MessageLength, MessageBuffer, MessageType);
232
233   if (CheckModel (N7110_Information, realmodel, connectiontype)) 
234         N7110_DispatchMessage( MessageLength, MessageBuffer, MessageType);
235 }