summaryrefslogtreecommitdiffabout
path: root/gammu/emb/common/phone/nokia/dct4/n3320.c
Unidiff
Diffstat (limited to 'gammu/emb/common/phone/nokia/dct4/n3320.c') (more/less context) (ignore whitespace changes)
-rw-r--r--gammu/emb/common/phone/nokia/dct4/n3320.c271
1 files changed, 271 insertions, 0 deletions
diff --git a/gammu/emb/common/phone/nokia/dct4/n3320.c b/gammu/emb/common/phone/nokia/dct4/n3320.c
new file mode 100644
index 0000000..51e6f18
--- a/dev/null
+++ b/gammu/emb/common/phone/nokia/dct4/n3320.c
@@ -0,0 +1,271 @@
1/* (c) 2004 by Marcin Wiacek */
2
3#include "../../../gsmstate.h"
4
5#ifdef GSM_ENABLE_NOKIA3320
6
7#include <string.h>
8#include <time.h>
9
10#include "../../../gsmcomon.h"
11#include "../../../misc/coding/coding.h"
12#include "../../../service/gsmlogo.h"
13#include "../nfunc.h"
14#include "../nfuncold.h"
15#include "../../pfunc.h"
16#include "n3320.h"
17
18static GSM_Error N3320_ReplyGetMemory(GSM_Protocol_Message msg, GSM_StateMachine *s)
19{
20 smprintf(s, "Phonebook entry received\n");
21 switch (msg.Buffer[6]) {
22 case 0x0f:
23 return N71_65_ReplyGetMemoryError(msg.Buffer[10], s);
24 default:
25 return N71_65_DecodePhonebook(s, s->Phone.Data.Memory, s->Phone.Data.Bitmap, s->Phone.Data.SpeedDial, msg.Buffer+22, msg.Length-22,true);
26 }
27 return ERR_UNKNOWN;
28}
29
30static GSM_Error N3320_GetMemory (GSM_StateMachine *s, GSM_MemoryEntry *entry)
31{
32 unsigned char req[] = {N6110_FRAME_HEADER, 0x07, 0x01, 0x01, 0x00, 0x01,
33 0xfe, 0x10, /* memory type */
34 0x00, 0x00, 0x00, 0x00,
35 0x00, 0x01, /* location */
36 0x00, 0x00, 0x01};
37
38 req[9] = NOKIA_GetMemoryType(s, entry->MemoryType,N71_65_MEMORY_TYPES);
39 if (entry->MemoryType == MEM_SM) return ERR_NOTSUPPORTED;
40 if (req[9]==0xff) return ERR_NOTSUPPORTED;
41
42 if (entry->Location==0x00) return ERR_INVALIDLOCATION;
43
44 req[14] = entry->Location / 256;
45 req[15] = entry->Location % 256;
46
47 s->Phone.Data.Memory=entry;
48 smprintf(s, "Getting phonebook entry\n");
49 return GSM_WaitFor (s, req, 19, 0x03, 4, ID_GetMemory);
50}
51
52static GSM_Error N3320_ReplyGetMemoryStatus(GSM_Protocol_Message msg, GSM_StateMachine *s)
53{
54 GSM_Phone_Data *Data = &s->Phone.Data;
55
56 smprintf(s, "Memory status received\n");
57 /* Quess ;-)) */
58 if (msg.Buffer[14]==0x10) {
59 Data->MemoryStatus->MemoryFree = msg.Buffer[18]*256 + msg.Buffer[19];
60 } else {
61 Data->MemoryStatus->MemoryFree = msg.Buffer[17];
62 }
63 smprintf(s, "Size : %i\n",Data->MemoryStatus->MemoryFree);
64 Data->MemoryStatus->MemoryUsed = msg.Buffer[20]*256 + msg.Buffer[21];
65 smprintf(s, "Used : %i\n",Data->MemoryStatus->MemoryUsed);
66 Data->MemoryStatus->MemoryFree -= Data->MemoryStatus->MemoryUsed;
67 smprintf(s, "Free : %i\n",Data->MemoryStatus->MemoryFree);
68 return ERR_NONE;
69}
70
71static GSM_Error N3320_GetMemoryStatus(GSM_StateMachine *s, GSM_MemoryStatus *Status)
72{
73 unsigned char req[] = {N6110_FRAME_HEADER, 0x03, 0x02,
74 0x00, /* memory type */
75 0x55, 0x55, 0x55, 0x00};
76
77 req[5] = NOKIA_GetMemoryType(s, Status->MemoryType,N71_65_MEMORY_TYPES);
78 if (Status->MemoryType == MEM_SM) return ERR_NOTSUPPORTED;
79 if (req[5]==0xff) return ERR_NOTSUPPORTED;
80
81 s->Phone.Data.MemoryStatus=Status;
82 smprintf(s, "Getting memory status\n");
83 return GSM_WaitFor (s, req, 10, 0x03, 4, ID_GetMemoryStatus);
84}
85
86static GSM_Error N3320_ReplyGetDateTime(GSM_Protocol_Message msg, GSM_StateMachine *s)
87{
88 smprintf(s, "Date & time received\n");
89 if (msg.Buffer[4]==0x01) {
90 NOKIA_DecodeDateTime(s, msg.Buffer+10, s->Phone.Data.DateTime);
91 return ERR_NONE;
92 }
93 smprintf(s, "Not set in phone\n");
94 return ERR_EMPTY;
95}
96
97static GSM_Error N3320_GetDateTime(GSM_StateMachine *s, GSM_DateTime *date_time)
98{
99 unsigned char req[] = {N6110_FRAME_HEADER, 0x0A, 0x00, 0x00};
100
101 s->Phone.Data.DateTime=date_time;
102 smprintf(s, "Getting date & time\n");
103 return GSM_WaitFor (s, req, 6, 0x19, 4, ID_GetDateTime);
104}
105
106static GSM_Error N3320_GetNextCalendar(GSM_StateMachine *s, GSM_CalendarEntry *Note, bool start)
107{
108 return N71_65_GetNextCalendar1(s,Note,start,&s->Phone.Data.Priv.N3320.LastCalendar,&s->Phone.Data.Priv.N3320.LastCalendarYear,&s->Phone.Data.Priv.N3320.LastCalendarPos);
109}
110
111static GSM_Error N3320_GetCalendarStatus(GSM_StateMachine *s, GSM_CalendarStatus *Status)
112{
113 GSM_Error error;
114
115 /* Method 1 */
116 error=N71_65_GetCalendarInfo1(s, &s->Phone.Data.Priv.N3320.LastCalendar);
117 if (error!=ERR_NONE) return error;
118 Status->Used = s->Phone.Data.Priv.N3320.LastCalendar.Number;
119 return ERR_NONE;
120}
121
122static GSM_Error N3320_ReplyGetCalendarInfo(GSM_Protocol_Message msg, GSM_StateMachine *s)
123{
124 return N71_65_ReplyGetCalendarInfo1(msg, s, &s->Phone.Data.Priv.N3320.LastCalendar);
125}
126
127static GSM_Reply_Function N3320ReplyFunctions[] = {
128 {N3320_ReplyGetMemoryStatus, "\x03",0x03,0x04,ID_GetMemoryStatus },
129 {N3320_ReplyGetMemory, "\x03",0x03,0x08,ID_GetMemory },
130
131 {N71_65_ReplyGetNextCalendar1, "\x13",0x03,0x1A,ID_GetCalendarNote },/*method 1*/
132 {N3320_ReplyGetCalendarInfo, "\x13",0x03,0x3B,ID_GetCalendarNotesInfo},/*method 1*/
133
134 {N3320_ReplyGetDateTime, "\x19",0x03,0x0B,ID_GetDateTime },
135
136 {DCT3DCT4_ReplyGetModelFirmware, "\xD2",0x02,0x00,ID_GetModel },
137 {DCT3DCT4_ReplyGetModelFirmware, "\xD2",0x02,0x00,ID_GetFirmware },
138
139 {NULL, "\x00",0x00,0x00,ID_None }
140};
141
142GSM_Phone_Functions N3320Phone = {
143 "3320",
144 N3320ReplyFunctions,
145 NONEFUNCTION, /* Initialise */
146 NONEFUNCTION, /* Terminate */
147 GSM_DispatchMessage,
148 NOTSUPPORTED, /* ShowStartInfo */
149 NOKIA_GetManufacturer,
150 DCT3DCT4_GetModel,
151 DCT3DCT4_GetFirmware,
152 NOTSUPPORTED, /* GetIMEI */
153 NOTSUPPORTED, /* GetOriginalIMEI */
154 NOTSUPPORTED, /* GetManufactureMonth*/
155 NOTSUPPORTED, /* GetProductCode */
156 NOTSUPPORTED, /* GetHardware */
157 NOTSUPPORTED, /* GetPPM */
158 NOTSUPPORTED, /* GetSIMIMSI */
159 N3320_GetDateTime,
160 NOTSUPPORTED, /* SetDateTime */
161 NOTSUPPORTED, /* GetAlarm */
162 NOTSUPPORTED, /* SetAlarm */
163 NOTSUPPORTED, /* GetLocale */
164 NOTSUPPORTED, /* SetLocale */
165 NOTSUPPORTED, /* PressKey */
166 NOTSUPPORTED, /* Reset */
167 NOTSUPPORTED, /* ResetPhoneSettings*/
168 NOTSUPPORTED, /* EnterSecurityCode*/
169 NOTSUPPORTED, /* GetSecurityStatus*/
170 NOTSUPPORTED, /* GetDisplayStatus*/
171 NOTSUPPORTED, /* SetAutoNetworkLogin*/
172 NOTSUPPORTED, /* GetBatteryCharge*/
173 NOTSUPPORTED, /* GetSignalQuality*/
174 NOTSUPPORTED, /* GetNetworkInfo */
175 NOTSUPPORTED, /* GetCategory */
176 NOTSUPPORTED, /* AddCategory */
177 NOTSUPPORTED, /* GetCategoryStatus */
178 N3320_GetMemoryStatus,
179 N3320_GetMemory,
180 NOTSUPPORTED, /* GetNextMemory */
181 NOTSUPPORTED, /* SetMemory */
182 NOTSUPPORTED, /* AddMemory */
183 NOTSUPPORTED, /* DeleteMemory */
184 NOTIMPLEMENTED, /* DeleteAllMemory */
185 NOTSUPPORTED, /* GetSpeedDial */
186 NOTSUPPORTED, /* SetSpeedDial */
187 NOTSUPPORTED, /* GetSMSC */
188 NOTSUPPORTED, /* SetSMSC */
189 NOTSUPPORTED, /* GetSMSStatus */
190 NOTSUPPORTED, /* GetSMS */
191 NOTSUPPORTED, /* GetNextSMS */
192 NOTSUPPORTED, /* SetSMS */
193 NOTSUPPORTED, /* AddSMS */
194 NOTSUPPORTED, /* DeleteSMS */
195 NOTSUPPORTED, /* SendSMS */
196 NOTSUPPORTED, /* SendSavedSMS */
197 NOTSUPPORTED, /* SetIncomingSMS */
198 NOTSUPPORTED, /* SetIncomingCB */
199 NOTSUPPORTED, /* GetSMSFolders */
200 NOTSUPPORTED, /* AddSMSFolder */
201 NOTSUPPORTED, /* DeleteSMSFolder */
202 NOTIMPLEMENTED, /* DialVoice */
203 NOTIMPLEMENTED, /* AnswerCall */
204 NOTIMPLEMENTED, /* CancelCall */
205 NOTIMPLEMENTED, /* HoldCall */
206 NOTIMPLEMENTED, /* UnholdCall */
207 NOTIMPLEMENTED, /* ConferenceCall */
208 NOTIMPLEMENTED, /* SplitCall */
209 NOTIMPLEMENTED, /* TransferCall */
210 NOTIMPLEMENTED, /* SwitchCall */
211 NOTSUPPORTED, /* GetCallDivert */
212 NOTSUPPORTED, /* SetCallDivert */
213 NOTSUPPORTED, /* CancelAllDiverts*/
214 NOTIMPLEMENTED, /* SetIncomingCall */
215 NOTIMPLEMENTED, /* SetIncomingUSSD */
216 NOTSUPPORTED, /* SendDTMF */
217 NOTSUPPORTED, /* GetRingtone */
218 NOTSUPPORTED, /* SetRingtone */
219 NOTSUPPORTED, /* GetRingtonesInfo*/
220 NOTIMPLEMENTED, /* DeleteUserRingtones*/
221 NOTSUPPORTED, /* PlayTone */
222 NOTSUPPORTED, /* GetWAPBookmark */
223 NOTSUPPORTED, /* SetWAPBookmark */
224 NOTSUPPORTED, /* DeleteWAPBookmark */
225 NOTSUPPORTED, /* GetWAPSettings */
226 NOTSUPPORTED, /* SetWAPSettings */
227 NOTSUPPORTED, /* GetMMSSettings */
228 NOTSUPPORTED, /* SetMMSSettings */
229 NOTSUPPORTED, /* GetSyncMLSettings*/
230 NOTSUPPORTED, /* SetSyncMLSettings*/
231 NOTSUPPORTED, /* GetChatSettings */
232 NOTSUPPORTED, /* SetChatSettings */
233 NOTSUPPORTED, /* GetBitmap */
234 NOTSUPPORTED, /* SetBitmap */
235 NOTSUPPORTED, /* GetToDoStatus */
236 NOTSUPPORTED, /* GetToDo */
237 NOTSUPPORTED, /* GetNextToDo */
238 NOTSUPPORTED, /* SetToDo */
239 NOTSUPPORTED, /* AddToDo */
240 NOTSUPPORTED, /* DeleteToDo */
241 NOTSUPPORTED, /* DeleteAllToDo */
242 N3320_GetCalendarStatus,
243 NOTIMPLEMENTED, /* GetCalendar */
244 N3320_GetNextCalendar,
245 NOTIMPLEMENTED, /* SetCalendar */
246 NOTSUPPORTED, /* AddCalendar */
247 NOTSUPPORTED, /* DeleteCalendar */
248 NOTIMPLEMENTED, /* DeleteAllCalendar*/
249 NOTSUPPORTED, /* GetCalendarSettings*/
250 NOTSUPPORTED, /* SetCalendarSettings*/
251 NOTSUPPORTED, /* GetNote */
252 NOTSUPPORTED, /* GetProfile */
253 NOTSUPPORTED, /* SetProfile */
254 NOTSUPPORTED, /* GetFMStation */
255 NOTSUPPORTED, /* SetFMStation */
256 NOTSUPPORTED, /* ClearFMStations */
257 NOTSUPPORTED, /* GetNextFileFolder*/
258 NOTSUPPORTED, /* GetFilePart */
259 NOTIMPLEMENTED, /* AddFilePart */
260 NOTSUPPORTED, /* GetFileSystemStatus*/
261 NOTIMPLEMENTED, /* DeleteFile */
262 NOTIMPLEMENTED, /* AddFolder */
263 NOTSUPPORTED, /* GetGPRSAccessPoint*/
264 NOTSUPPORTED /* SetGPRSAccessPoint*/
265};
266
267#endif
268
269/* How should editor hadle tabs in this file? Add editor commands here.
270 * vim: noexpandtab sw=8 ts=8 sts=8:
271 */