A Linux/Unix toolset and driver for Nokia mobile phones.
Copyright (C) 2000 Hugh Blemings & Pavel Janík ml.
- Copyright (C) 2000 Chris Kemp
- Copyright (C) 2001 Markus Plail, Pawe³ Kot
+ Copytight (C) 2000 Chris Kemp
Released under the terms of the GNU GPL, see file COPYING for more details.
The various routines are called P7110_(whatever).
+ $Log$
+ Revision 1.1.1.5 2002/04/03 00:08:10 short
+ Found in "gnokii-working" directory, some November-patches version
+
+ Revision 1.15 2001/11/08 16:47:48 pkot
+ Start fiddling with 7110 and SMS
+
+ Revision 1.14 2001/09/09 21:45:49 machek
+ Cleanups from Ladislav Michl <ladis@psi.cz>:
+
+ *) do *not* internationalize debug messages
+
+ *) some whitespace fixes, do not use //
+
+ *) break is unneccessary after return
+
+ Revision 1.13 2001/08/16 23:59:32 pkot
+ Fixed (hopefully) timezone mismash (Sheldon Hearn)
+
+ Revision 1.12 2001/08/09 12:34:34 pkot
+ 3330 and 6250 support - I have no idea if it does work (mygnokii)
+
+ Revision 1.11 2001/07/05 10:54:53 pkot
+ Solaris 2.7 fixes - should be harmless for other OSes (Michael Wiedmann)
+
+ Revision 1.10 2001/06/27 23:52:49 pkot
+ 7110/6210 updates (Marian Jancar)
+
+ Revision 1.9 2001/06/10 23:49:49 pkot
+ Small fixes to hide compilation warnings and allow gnokii.c to compile
+
+ Revision 1.8 2001/05/24 20:47:30 chris
+ More updating of 7110 code and some of xgnokii_lowlevel changed over.
+
+ Revision 1.7 2001/05/07 16:24:04 pkot
+ DLR-3P temporary fix. How should I do it better?
+
+ Revision 1.6 2001/03/23 13:40:24 chris
+ Pavel's patch and a few fixes.
+
+ Revision 1.5 2001/03/22 16:17:06 chris
+ Tidy-ups and fixed gnokii/Makefile and gnokii/ChangeLog which I somehow corrupted.
+
+ Revision 1.4 2001/03/21 23:36:06 chris
+ Added the statemachine
+ This will break gnokii --identify and --monitor except for 6210/7110
+
+ Revision 1.3 2001/03/13 01:24:03 pkot
+ Code cleanup - no warnings during compilation
+
+ Revision 1.2 2001/03/13 01:23:18 pkot
+ Windows updates (Manfred Jonsson)
+
+ Revision 1.1 2001/02/21 19:57:07 chris
+ More fiddling with the directory layout
+
+ Revision 1.1 2001/02/16 14:29:53 chris
+ Restructure of common/. Fixed a problem in fbus-phonet.c
+ Lots of dprintfs for Marcin
+ Any size xpm can now be loaded (eg for 7110 startup logos)
+ nk7110 code detects 7110/6210 and alters startup logo size to suit
+ Moved Marcin's extended phonebook code into gnokii.c
+
+ Revision 1.7 2001/02/06 21:15:35 chris
+ Preliminary irda support for 7110 etc. Not well tested!
+
+ Revision 1.6 2001/02/03 23:56:15 chris
+ Start of work on irda support (now we just need fbus-irda.c!)
+ Proper unicode support in 7110 code (from pkot)
+
+ Revision 1.5 2001/02/01 15:17:31 pkot
+ Fixed --identify and added Manfred's manufacturer patch
+
+ Revision 1.4 2001/01/29 17:14:42 chris
+ dprintf now in misc.h (and fiddling with 7110 code)
+
+ Revision 1.3 2001/01/23 15:32:41 chris
+ Pavel's 'break' and 'static' corrections.
+ Work on logos for 7110.
+
+ Revision 1.2 2001/01/17 02:54:54 chris
+ More 7110 work. Use with care! (eg it is not possible to delete phonebook entries)
+ I can now edit my phonebook in xgnokii but it is 'work in progress'.
+
+ Revision 1.1 2001/01/14 22:46:59 chris
+ Preliminary 7110 support (dlr9 only) and the beginnings of a new structure
+
+
*/
#include <string.h>
/* Some globals */
-static const SMSMessage_Layout nk7110_deliver = {
- true,
- 0, 21, 0, 0, 7, 0, 0, -1, 24, 23, 0, 21,
- 9, true, 25, true, 37, -1,
- 5, 4,
- 44, true
-};
-
-static const SMSMessage_Layout nk7110_submit = {
- true,
- -1, 18, 18, 18, -1, 19, 20, -1, 22, 21, 18, 18,
- 6, true, 23, true, -1, -1,
- -1, -1,
- 42, true
-};
-
-static const SMSMessage_Layout nk7110_delivery_report = {
- true,
- 0, 0, 0, 0, 7, 0, 0, 0, 23, 22, -1, 21,
- 9, true, 24, true, 36, 43,
- 5, 4,
- 23, true
-};
-
-static const SMSMessage_Layout nk7110_picture = {
- true,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 9, true, 22, true, 34, -1,
- 0, 0,
- 47, true
-};
-
-static SMSMessage_PhoneLayout nk7110_layout;
-
static GSM_IncomingFunctionType P7110_IncomingFunctions[] = {
{ P7110_MSG_FOLDER, P7110_IncomingFolder },
{ P7110_MSG_SMS, P7110_IncomingSMS },
PGEN_IncomingDefault,
/* Mobile phone information */
{
- "7110|6210|6250", /* Supported models */
+ "7110|6210|6250", /* Supported models */
7, /* Max RF Level */
0, /* Min RF Level */
GRF_Percentage, /* RF level units */
0, /* Min Battery Level */
GBU_Percentage, /* Battery level units */
GDT_DateTime, /* Have date/time support */
- GDT_TimeOnly, /* Alarm supports time only */
+ GDT_TimeOnly, /* Alarm supports time only */
1, /* Alarms available - FIXME */
- 60, 96, /* Startup logo size - 7110 is fixed at init */
+ 60, 96, /* Startup logo size - 7110 is fixed at init*/
21, 78, /* Op logo size */
14, 72 /* Caller logo size */
},
return P7110_GetCalendarNote(data, state);
case GOP_GetSMS:
return P7110_GetSMS(data, state);
- case GOP_SendSMS:
- return P7110_SendSMS(data, state);
-/* I'm not sure yet if folder functions will be shared or local
+/* I'm not suer yet if folder functions will be shared or local
case GOP_GetSMSFolders:
return P7110_GetSMSFolders(data, state);
case GOP_GetSMSFolderStatus:
/* Copy in the phone info */
memcpy(&(state->Phone), &phone_nokia_7110, sizeof(GSM_Phone));
- /* SMS Layout */
- nk7110_layout.Type = 8; /* Locate the Type of the mesage field */
- nk7110_layout.Deliver = nk7110_deliver;
- nk7110_layout.Submit = nk7110_submit;
- nk7110_layout.DeliveryReport = nk7110_delivery_report;
- nk7110_layout.Picture = nk7110_picture;
- layout = nk7110_layout;
-
- dprintf("Connecting\n");
while (!connected) {
switch (state->Link.ConnectionType) {
- case GCT_DAU9P:
- if (try == 0) try = 1;
case GCT_Serial:
if (try > 1) return GE_NOTSUPPORTED;
- err = FBUS_Initialise(&(state->Link), state, 1 - try);
+ err = FBUS_Initialise(&(state->Link), state);
break;
case GCT_Infrared:
case GCT_Irda:
}
if (err != GE_NONE) {
- dprintf("Error in link initialisation: %d\n", err);
+ dprintf("Error in link initialisation\n");
try++;
continue;
}
*(data->BatteryLevel) = message[5];
dprintf("Battery level %f\n",*(data->BatteryLevel));
}
+ return GE_NONE;
break;
default:
dprintf("Unknown subtype of type 0x17 (%d)\n", message[3]);
return GE_UNKNOWN;
+ break;
}
- return GE_NONE;
}
static GSM_Error P7110_GetRFLevel(GSM_Data *data, GSM_Statemachine *state)
}
blockstart += blockstart[1];
}
+ return GE_NONE;
break;
case 0x82:
if (data->RFLevel) {
*(data->RFLevel) = message[4];
dprintf("RF level %f\n",*(data->RFLevel));
}
+ return GE_NONE;
break;
case 0xa4:
dprintf("Op Logo Set OK\n");
- break;
+ return GE_NONE;
default:
dprintf("Unknown subtype of type 0x0a (%d)\n", message[3]);
return GE_UNKNOWN;
+ break;
}
- return GE_NONE;
}
static GSM_Error P7110_GetMemoryStatus(GSM_Data *data, GSM_Statemachine *state)
data->MemoryStatus->Used = (message[16] << 8) + message[17];
data->MemoryStatus->Free = ((message[14] << 8) + message[15]) - data->MemoryStatus->Used;
dprintf("Memory status - location = %d\n", (message[8] << 8) + message[9]);
+ return GE_NONE;
} else {
dprintf("Unknown error getting mem status\n");
return GE_NOTIMPLEMENTED;
+
}
}
+ return GE_NONE;
break;
case 0x08: /* Read Memory response */
if (data->PhonebookEntry) {
}
blockstart += blockstart[3];
}
+ return GE_NONE;
break;
case 0x0c:
switch (message[6]) {
- case 0x3d: return GE_PHBOOKWRITEFAILED;
- case 0x3e: return GE_PHBOOKWRITEFAILED;
- default: return GE_NONE;
+ case 0x3d: return GE_PHBOOKWRITEFAILED; break;
+ case 0x3e: return GE_PHBOOKWRITEFAILED; break;
+ default: return GE_NONE; break;
}
break;
default:
dprintf("Unknown subtype of type 0x03 (%d)\n", message[3]);
return GE_UNKNOWN;
+ break;
}
- return GE_NONE;
}
/* Just as an example.... */
unsigned char req2[] = {FBUS_FRAME_HEADER, 0x03, 0x01, 0x32};
dprintf("Identifying...\n");
- PNOK_GetManufacturer(data->Manufacturer);
if (SM_SendMessage(state, 4, 0x1b, req) != GE_NONE) return GE_NOTREADY;
if (SM_SendMessage(state, 6, 0x1b, req2) != GE_NONE) return GE_NOTREADY;
SM_WaitFor(state, data, 0x1b);
snprintf(data->Imei, GSM_MAX_IMEI_LENGTH, "%s", message + 4);
dprintf("Received imei %s\n",data->Imei);
}
+ return GE_NONE;
break;
case 04:
if (data->Model) {
snprintf(data->Revision, GSM_MAX_REVISION_LENGTH, "%s", message + 7);
dprintf("Received revision %s\n",data->Revision);
}
+ return GE_NONE;
break;
default:
dprintf("Unknown subtype of type 0x1b (%d)\n", message[3]);
return GE_UNKNOWN;
+ break;
}
- return GE_NONE;
}
/* handle messages of type 0x14 (SMS Handling, Folders, Logos.. */
static GSM_Error P7110_IncomingFolder(int messagetype, unsigned char *message, int length, GSM_Data *data)
{
- int i, j;
- int nextfolder = 0x10;
- bool found;
-
+#if 0
+ int off, offset;
+ int wc,i,j,tmp=0;
switch (message[3]) {
/* getfolders */
case 0x7B:
i = 5;
- memset(data->SMSFolderList, 0, sizeof(SMS_FolderList));
- dprintf("Message: %d SMS Folders received:\n", message[4]);
-
- strcpy(data->SMSFolderList->Folder[1].Name, " ");
- data->SMSFolderList->number = message[4];
+ data->SMSFolders->number = message[4];
+ dprintf("Message: %d SMS Folders received:\n", data->SMSFolders->number);
for (j = 0; j < message[4]; j++) {
- int len;
- strcpy(data->SMSFolderList->Folder[j].Name, " ");
- data->SMSFolderList->FolderID[j] = message[i];
- dprintf("Folder Index: %d", data->SMSFolderList->FolderID[j]);
- i += 2;
+ strcpy(data->SMSFolders->Folder[j].Name, " ");
+ data->SMSFolders->FoldersID[j] = message[i];
+ dprintf("Folder Index: %d", data->SMSFolders->FoldersID[j]);
+ i = i + 2;
dprintf(" Folder name: ");
- len = 0;
- /* search for next folder's index number, i.e. length of folder name */
- while (message[i+1] != nextfolder && i < length) {
- i += 2;
- len++;
- }
- /* see nk7110.txt */
- nextfolder += 0x08;
- if (nextfolder == 0x28) nextfolder++;
- i -= 2 * len +1;
- DecodeUnicode(data->SMSFolderList->Folder[j].Name, message + i, len);
- dprintf("%s\n", data->SMSFolderList->Folder[j].Name);
- i += 2 * len + 2;
+ tmp = 0;
+ while ((message[i] != 0x00) & (message[i+1] == 0x00)) {
+ wc = message[i] | (message[i+1] << 8);
+ data->SMSFolders->Folder[j].Name[tmp] = DecodeWithUnicodeAlphabet(wc);
+ dprintf("%c", data->SMSFolders->Folder[j].Name[tmp]);
+ tmp++;
+ i = i + 2;
+ }
+ dprintf("\n");
+ tmp = 0;
+ i = i + 1;
}
break;
/* getfolderstatus */
case 0x6C:
- memset(data->SMSFolder, 0, sizeof(SMS_Folder));
dprintf("Message: SMS Folder status received: \n" );
- data->SMSFolder->FolderID = data->SMSMessage->MemoryType;
- data->SMSFolder->number = (message[5] * 256) + message[5];
- dprintf("Message: Number of Entries: %i\n" , data->SMSFolder->number);
+ data->OneSMSFolder->number = (message[5] * 256) + message[5];
+ dprintf("Message: Number of Entries: %i\n" , data->OneSMSFolder->number);
dprintf("Message: IDs of Entries : ");
- for (i = 0; i < message[4] * 256 + message[5]; i++) {
- data->SMSFolder->locations[i] = message[6+(i*2)] * 256 + message[(i*2)+7];
- dprintf("%d, ", data->SMSFolder->locations[i]);
+ for (i=0;i<message[4]*256+message[5];i++) {
+ data->OneSMSFolder->locations[i]=message[6+(i*2)]*256+message[(i*2)+7];
+ dprintf("%d, ", data->OneSMSFolder->locations[i]);
}
dprintf("\n");
break;
/* getsms */
case 0x08:
- for (i = 0; i < length; i ++)
+ for (i = 0; i < length-2; i ++)
if (isprint(message[i]))
dprintf("[%02x%c]", message[i], message[i]);
else
dprintf("[%02x ]", message[i]);
dprintf("\n");
- memset(data->SMSMessage, 0, sizeof(GSM_SMSMessage));
-
- /* Number of SMS in folder */
- data->SMSMessage->Number = message[7];
-
- /* MessageType/FolderID */
- data->SMSMessage->MemoryType = message[5];
+ dprintf("Message: Getting SMS %i " , data->SMSMessage->Location);
+ dprintf("in Folder %i\n", data->SMSMessage->Destination);
+ if (message[5] != data->SMSMessage->Destination) {
+ dprintf("Invalid SMS location (Folder)\n");
+ return GE_INVALIDSMSLOCATION;
+ }
+ if ((message[6] * 256 + message[7]) != data->SMSMessage->Location) {
+ dprintf("Invalid SMS location (ID)\n");
+ return GE_INVALIDSMSLOCATION;
+ }
- /* Short Message status */
- data->SMSMessage->Status = message[4];
- dprintf("\tStatus: ");
- switch (data->SMSMessage->Status) {
- case SMS_Read:
- dprintf("READ\n");
- break;
- case SMS_Unread:
- dprintf("UNREAD\n");
- break;
- case SMS_Sent:
- dprintf("SENT\n");
- break;
- case SMS_Unsent:
- dprintf("UNSENT\n");
- break;
- default:
- dprintf("UNKNOWN\n");
- break;
- }
- /* See if message# is given back by phone. If not and status is unread */
- /* we want it, if status is not unread it's a "random" message given back */
- /* by the phone because we want a message of which the # doesn't exist */
- found = false;
- for (i = 0; i < data->SMSFolder->number; i++) {
- if (data->SMSMessage->Number == data->SMSFolder->locations[i])
- found = true;
- }
- if (found==false && data->SMSMessage->Status != SMS_Unread) return GE_INVALIDSMSLOCATION;
+ /* Status see nk7110.txt */
+ data->SMSMessage->Status = message[4];
- DecodePDUSMS(message, data->SMSMessage, length);
+ if (message[8]==0x01) data->SMSMessage->Type = SMS_Deliver_Report;
+ offset=4;
+ if (data->SMSMessage->Status == SMS_MO_SENT) offset=5;
+ off = 0;
+ if (message[9+12] & 0x40) { /* UDH header available */
+ off = (message[9+31+offset] + 1); /* Length of UDH header */
+
+ dprintf(" UDH header available (length %i)\n",off);
+ }
+
+ DecodeSMSHeader(message, length, data->SMSMessage, 9, offset);
+ DecodeTextSMS(message, length, data->SMSMessage, 9, offset, off);
+
break;
-
- /* get list of SMS pictures */
- case 0x97:
- dprintf("Getting list of SMS pictures...\n");
- for (i = 0; i < length; i ++)
- if (isprint(message[i]))
- dprintf("[%02x%c]", message[i], message[i]);
- else
- dprintf("[%02x ]", message[i]);
- dprintf("\n");
- break;
+
default:
- for (i = 0; i < length; i ++)
+ for (i = 0; i < length-2; i ++)
if (isprint(message[i]))
dprintf("[%02x%c]", message[i], message[i]);
else
dprintf("[%02x ]", message[i]);
dprintf("\n");
dprintf("Message: Unknown message of type 14 : %d length: %d\n", message[3], length);
- return GE_UNKNOWN;
+ break;
}
+#endif
return GE_NONE;
}
static GSM_Error P7110_GetSMS(GSM_Data *data, GSM_Statemachine *state)
{
- unsigned char req_folders[] = {FBUS_FRAME_HEADER, 0x7a, 0x00, 0x00};
- unsigned char req_status[] = {FBUS_FRAME_HEADER, 0x6b,
- 0x08, // Folder ID
- 0x0f, 0x01};
- unsigned char req_sms[] = {FBUS_FRAME_HEADER, 0x07,
+ unsigned char req[] = {FBUS_FRAME_HEADER, 0x07,
0x08, // FolderID
0x00,
0x01, // Location
0x01, 0x65, 0x01};
- unsigned char req_list[] = {FBUS_FRAME_HEADER, 0x96,
- 0x09, /* location */
- 0x0f, 0x07};
- GSM_Error error;
-
- /* just testiung picture listing */
- req_list[4] = data->SMSMessage->MemoryType;
- if (SM_SendMessage(state, 7, 0x14, req_list) != GE_NONE) return GE_NOTREADY;
- error = SM_Block(state, data, 0x14);
-
- /* see if the message we want is from the last read folder, i.e. */
- /* we don't have to get folder status again */
- if (data->SMSMessage->MemoryType != data->SMSFolder->FolderID) {
-
- dprintf("Getting list of SMS folders...\n");
- if (SM_SendMessage(state, 6, 0x14, req_folders) != GE_NONE) return GE_NOTREADY;
- error = SM_Block(state, data, 0x14);
-
- if (data->SMSMessage->MemoryType > data->SMSFolderList->FolderID[data->SMSFolderList->number-1])
- return GE_INVALIDMEMORYTYPE;
- data->SMSFolder->FolderID = data->SMSMessage->MemoryType;
- req_status[4] = data->SMSMessage->MemoryType;
-
- dprintf("Getting entries for SMS folder %i...\n", data->SMSMessage->MemoryType);
- if (SM_SendMessage(state, 7, 0x14, req_status) != GE_NONE) return GE_NOTREADY;
- error = SM_Block(state, data, 0x14);
- }
-
+
dprintf("Getting SMS...\n");
- req_sms[4] = data->SMSMessage->MemoryType;
- req_sms[6] = data->SMSMessage->Number;
- if (SM_SendMessage(state, 10, 0x14, req_sms) != GE_NONE) return GE_NOTREADY;
+ req[4] = data->SMSMessage->MemoryType;
+ req[6] = data->SMSMessage->Location;
+ if (SM_SendMessage(state, 10, 0x14, req) != GE_NONE) return GE_NOTREADY;
return SM_Block(state, data, 0x14);
}
-static GSM_Error P7110_GetPicture(GSM_Data *data, GSM_Statemachine *state)
-{
- unsigned char req_list[] = {FBUS_FRAME_HEADER, 0x96,
- 0x09, /* location */
- 0x0f, 0x07};
- if (SM_SendMessage(state, 7, 0x14, req_list) != GE_NONE) return GE_NOTREADY;
- return SM_Block(state, data, 0x14);
-}
-#if 0
static GSM_Error P7110_GetSMSFolders(GSM_Data *data, GSM_Statemachine *state)
{
unsigned char req[] = {FBUS_FRAME_HEADER, 0x7A, 0x00, 0x00};
static GSM_Error P7110_GetSMSFolderStatus(GSM_Data *data, GSM_Statemachine *state)
{
+#if 0
unsigned char req[] = {FBUS_FRAME_HEADER, 0x6B,
0x08, // Folder ID
0x0F, 0x01};
- req[4] = data->SMSFolder->FolderID;
+ req[4] = data->OneSMSFolder->FolderID;
dprintf("Getting SMS Folder Status...\n");
if (SM_SendMessage(state, 7, 0x14, req) != GE_NONE) return GE_NOTREADY;
return SM_Block(state, data, 0x14);
-}
#endif
-
-static GSM_Error P7110_SendSMS(GSM_Data *data, GSM_Statemachine *state)
-{
- GSM_Error e;
- unsigned char req[256] = {FBUS_FRAME_HEADER, 0x01, 0x02, 0x00};
- int length, i;
-
- if (data->SMSMessage->MessageCenter.No) {
- data->MessageCenter = &data->SMSMessage->MessageCenter;
- P7110_GetSMSCenter(data, state);
- }
-
- length = EncodePDUSMS(data->SMSMessage, req);
- if (!length) return GE_SMSWRONGFORMAT;
- dprintf("Sending SMS...(%d)\n", length);
- for (i = 0; i < length; i++) {
- dprintf("%02x ", req[i]);
- }
- dprintf("\n");
- if (SM_SendMessage(state, length, 0x02, req) != GE_NONE) return GE_NOTREADY;
- while (1) {
- e = SM_Block(state, data, 0x02);
- if (e == GE_SMSSENDOK || e == GE_SMSSENDFAILED) break;
- }
- return e;
+ return GE_NONE;
}
static GSM_Error P7110_IncomingSMS(int messagetype, unsigned char *message, int length, GSM_Data *data)
{
GSM_Error e = GE_NONE;
int digits, bytes;
-
- if (!data) return GE_INTERNALERROR;
+
+ if (!data || !data->MessageCenter) return GE_INTERNALERROR;
switch (message[3]) {
case P7110_SUBSMS_SMSC_RCVD:
- dprintf("SMSC Received\n");
/* FIXME: Implement all these in gsm-sms.c */
data->MessageCenter->No = message[4];
data->MessageCenter->Format = message[6];
data->MessageCenter->Validity = message[8]; /* due to changes in format */
+
digits = message[9];
bytes = message[21] - 1;
sprintf(data->MessageCenter->Name, "%s", message + 33);
- strcpy(data->MessageCenter->Recipient, GetBCDNumber(message+9));
- strcpy(data->MessageCenter->Number, GetBCDNumber(message+21));
- data->MessageCenter->Type = message[22];
-
if (strlen(data->MessageCenter->Recipient) == 0) {
sprintf(data->MessageCenter->Recipient, "(none)");
}
}
break;
-
case P7110_SUBSMS_SMS_SENT:
- dprintf("SMS sent\n");
- e = GE_SMSSENDOK;
- break;
-
case P7110_SUBSMS_SEND_FAIL:
- dprintf("SMS sending failed\n");
- e = GE_SMSSENDFAILED;
- break;
-
case P7110_SUBSMS_SMS_RCVD:
case P7110_SUBSMS_CELLBRD_OK:
case P7110_SUBSMS_CELLBRD_FAIL:
dprintf("Subtype 0x%02x of type 0x%02x (SMS handling) not implemented\n", message[3], P7110_MSG_SMS);
e = GE_NOTIMPLEMENTED;
break;
-
default:
dprintf("Unknown subtype of type 0x%02x (SMS handling): 0x%02x\n", P7110_MSG_SMS, message[3]);
e = GE_UNKNOWN;
static GSM_Error P7110_GetSMSCenter(GSM_Data *data, GSM_Statemachine *state)
{
GSM_Error error;
- unsigned char req[] = {FBUS_FRAME_HEADER, P7110_SUBSMS_GET_SMSC, 0x64, 0x00};
+ unsigned char req[2000] = {FBUS_FRAME_HEADER, P7110_SUBSMS_GET_SMSC, 0x64, 0x00};
req[5] = data->MessageCenter->No;
static GSM_Error P7110_GetClock(char req_type, GSM_Data *data, GSM_Statemachine *state)
{
GSM_Error error;
- unsigned char req[] = {FBUS_FRAME_HEADER, req_type};
+ unsigned char req[2000] = {FBUS_FRAME_HEADER, req_type};
if (SM_SendMessage(state, 4, P7110_MSG_CLOCK, req) != GE_NONE) return GE_NOTREADY;
error = SM_Block(state, data, P7110_MSG_CLOCK);
static GSM_Error P7110_GetCalendarNote(GSM_Data *data, GSM_Statemachine *state)
{
GSM_Error error = GE_NOTREADY;
- unsigned char req[] = {FBUS_FRAME_HEADER, P7110_SUBCAL_GET_NOTE, 0x00, 0x00};
- unsigned char date[] = {FBUS_FRAME_HEADER, P7110_SUBCLO_GET_DATE};
+ unsigned char req[2000] = {FBUS_FRAME_HEADER, P7110_SUBCAL_GET_NOTE, 0x00, 0x00};
+ unsigned char date[2000] = {FBUS_FRAME_HEADER, P7110_SUBCLO_GET_DATE};
GSM_Data tmpdata;
GSM_DateTime tmptime;