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