18 #ifdef GSM_ENABLE_NOKIA6510 28 #include "../../../../misc/coding/coding.h" 29 #include "../../../../misc/locales.h" 30 #include "../../../../gsmcomon.h" 31 #include "../../../../service/gsmlogo.h" 32 #include "../../../../service/gsmnet.h" 33 #include "../../../../service/gsmring.h" 34 #include "../../../../service/sms/gsmmulti.h" 35 #include "../../nfunc.h" 36 #include "../../nfuncold.h" 37 #include "../../../pfunc.h" 38 #include "../dct4func.h" 76 smprintf(s,
"Phonebook entry received\n");
77 if (msg->
Buffer[6] == 0x0f)
97 0x00, 0x00, 0x00, 0x00,
110 smprintf(s,
"Getting phonebook entry\n");
114 smprintf(s,
"Retrying to get phonebook entry\n");
128 smprintf(s,
"Memory status received\n");
130 if (msg->
Buffer[14]==0x10) {
133 }
else if (msg->
Buffer[14]==0x02) {
151 0x55, 0x55, 0x55, 0x00};
157 smprintf(s,
"Getting memory status\n");
185 switch (msg->
Buffer[10]) {
196 for (i=0;i<msg->
Buffer[13];i++) {
197 switch (msg->
Buffer[current]) {
200 while (msg->
Buffer[j]!=0) {j++;}
210 switch (msg->
Buffer[current+2]) {
228 smprintf(s,
"Unknown SMSC number: %02x\n",msg->
Buffer[current+2]);
236 current = current + msg->
Buffer[current+1];
263 smprintf(s,
"Invalid SMSC location\n");
275 0x12, 0x55, 0x01, 0x0B, 0x34,
303 smprintf(s,
"Too long SMSC number in frame\n");
306 req[count+1] = req[count] - 1;
317 if (req[count]*2>12) {
318 smprintf(s,
"Too long SMSC number in frame\n");
321 req[count+1] = req[count] - 1;
342 int current = msg->
Buffer[7]+7, pos;
346 if (msg->
Buffer[3] == 0xf0) {
353 network_info = &network_info_local;
391 sprintf(network_info->
LAC,
"%02X%02X", msg->
Buffer[current+1], msg->
Buffer[current+2]);
393 sprintf(network_info->
CID,
"%02X%02X", msg->
Buffer[current+5], msg->
Buffer[current+6]);
405 smprintf(s,
"Getting network info\n");
411 int count = 0, pos1, pos2, pos3, pos4, pos5;
423 pos1 = count; count++;
427 Layout->
TPMR = count; count++;
429 Layout->
TPPID = count; count++;
432 Layout->
TPDCS = count; count++;
435 Layout->
TPPID = count; count++;
437 Layout->
TPDCS = count; count++;
438 Layout->
DateTime = count; count += 7;
458 pos4 = count; count++;
460 Layout->
Number = count; count+= 12;
469 pos5 = count; count++;
480 Layout->
TPVP = count; count++;
487 pos2 = count; count++;
488 pos3 = count; count++;
490 Layout->
TPUDL = count; count++;
492 Layout->
Text = count;
495 if (error !=
ERR_NONE)
return error;
497 req[pos1] = *length - 1;
498 req[pos2] = *length - Layout->
Text + 6;
499 req[pos3] = *length - Layout->
Text;
502 req[pos4] = req[Layout->
Number] + 4;
503 if (req[pos4] % 2) req[pos4]++;
508 if (req[pos4]>12 || req[pos5]>12) {
509 smprintf(s,
"Too long phone number in frame\n");
524 smprintf(s,
"SMS folders names received\n");
527 for (j=0;j<msg->
Buffer[5];j++) {
569 smprintf(s,
"HINT: Maybe phone needs F_SMS_FILES?\n");
603 return N6510_GetSMSFoldersS40_30(s,folders);
607 smprintf(s,
"Getting SMS folders\n");
616 smprintf(s,
"SMS folder status received\n");
634 0x0f, 0x55, 0x55, 0x55};
638 case 0x01: req[5] = 0x01;
break;
639 default : req[5] = folderid; req[4] = 0x02;
break;
643 case 0x01: req[5] = 0x02;
break;
644 case 0x02: req[5] = 0x03;
break;
645 default : req[5] = folderid - 1; req[4] = 0x02;
break;
649 smprintf(s,
"Getting SMS folder status\n");
660 *folderid = ifolderid + 0x01;
662 if (*folderid == 0x1B) (*folderid)=0x99;
666 if (*folderid == 0x1A) (*folderid)=0x99;
668 smprintf(s,
"SMS folder %i & location %i -> 6510 folder %i & location %i\n",
675 sms->
Location = (folderid - 0x01) * GSM_PHONE_MAXSMSINFOLDER + location;
676 smprintf(s,
"6510 folder %i & location %i -> SMS folder %i & location %i\n",
682 int i, current, blocks=0, SMSTemplateDateTime = 0;
715 current = blocks + 1;
716 for (i=0;i<buffer[blocks];i++) {
717 switch (buffer[current]) {
719 smprintf(s,
"SMSC timestamp (ignored)\n");
723 if (buffer[current + 2] > buffer[current + 3]) {
724 Layout.
TPUDL = current + 2;
726 Layout.
TPUDL = current + 3;
728 Layout.
Text = current + 4;
731 switch (buffer[current+2]) {
734 Layout.
Number = current + 4;
746 smprintf(s,
"Date and time of saving for SMS template\n");
747 SMSTemplateDateTime = current + 2;
750 smprintf(s,
"Unknown block %02x\n",buffer[current]);
752 current = current + buffer[current + 1];
755 if (SMSTemplateDateTime != 0) {
759 (*current2) = current;
766 size_t Width, Height;
767 unsigned char output[500];
773 smprintf(s,
"SMS Message received\n");
782 switch (msg->
Buffer[14]) {
791 if (error !=
ERR_NONE)
return error;
795 if (i>=msg->
Length)
break;
812 output[i++] = Height;
832 if (Data->
Bitmap != NULL) {
849 smprintf(s,
"SMS message info received\n");
860 unsigned char folderid,namebuffer[200];
861 unsigned int location;
863 unsigned char req[] = {
871 N6510_GetSMSLocation(s, &sms->
SMS[0], &folderid, &location);
875 case 0x01: req[5] = 0x01;
break;
876 default : req[5] = folderid; req[4] = 0x02;
break;
880 case 0x01: req[5] = 0x02;
break;
881 case 0x02: req[5] = 0x03;
break;
882 default : req[5] = folderid - 1; req[4] = 0x02;
break;
886 req[6]=location / 256;
887 req[7]=location % 256;
891 smprintf(s,
"Getting sms message info\n");
892 req[3] = 0x0e; req[8] = 0x55; req[9] = 0x55;
898 req[3] = 0x02; req[8] = 0x01; req[9] = 0x00;
904 for (i=0;i<sms->
Number;i++) {
905 N6510_SetSMSLocation(s, &sms->
SMS[i], folderid, location);
929 unsigned char folderid;
930 unsigned int location;
942 N6510_GetSMSLocation(s, &(sms->
SMS[0]), &folderid, &location);
943 error=N6510_GetSMSFolderStatus(s, folderid);
952 return N6510_PrivGetSMSMessageBitmap(s,sms,NULL);
958 unsigned char folderid;
959 unsigned int location;
966 findnextfolder =
TRUE;
970 N6510_GetSMSLocation(s, &(sms->
SMS[0]), &folderid, &location);
981 if (findnextfolder) {
988 error=N6510_GetSMSFolderStatus(s, folderid);
994 N6510_SetSMSLocation(s, &sms->
SMS[0], folderid, location);
996 return N6510_PrivGetSMSMessageBitmap(s, sms, bitmap);
1006 return N6510_GetNextSMSMessageBitmap(s, sms, start, NULL);
1014 switch (msg->
Buffer[4]) {
1016 smprintf(s,
"Welcome note text received\n");
1021 smprintf(s,
"Dealer note text received\n");
1026 smprintf(s,
"Startup logo received\n");
1032 switch (msg->
Buffer[4]) {
1053 error=N6510_GetNextSMSMessageBitmap(s, &sms,
TRUE, &bitmap);
1066 error=N6510_GetNextSMSMessageBitmap(s, &sms,
FALSE, &bitmap);
1081 switch (Bitmap->
Type) {
1086 smprintf(s,
"Getting startup logo\n");
1090 smprintf(s,
"Getting dealer note\n");
1093 smprintf(s,
"Getting welcome note\n");
1100 smprintf(s,
"Getting caller group logo method 2\n");
1101 return N6510_GetMemory(s,&pbk);
1108 smprintf(s,
"Getting caller group logo\n");
1109 error=N6510_GetMemory(s,&pbk);
1113 smprintf(s,
"Getting operator logo\n");
1116 return N6510_GetPictureImage(s, Bitmap, &Location);
1145 smprintf(s,
"Getting network level\n");
1151 smprintf(s,
"Incoming battery level received???: %i\n",
1163 smprintf(s,
"Battery level received: %i\n",
1175 smprintf(s,
"Getting battery level\n");
1190 smprintf(s,
"Operator logo received\n");
1192 smprintf(s,
"Packet too short to contain operator logo\n");
1205 if (msg->
Buffer[5] == 0x1) {
1206 switch (msg->
Buffer[6]) {
1208 switch (msg->
Buffer[10]) {
1210 smprintf(s,
"Still busy processing the last command\n");
1213 smprintf(s,
"Nothing to delete\n");
1216 smprintf(s,
"Entry is read only\n");
1224 smprintf(s,
"Phonebook entry deleted\n");
1231 0x04, 0x55, 0x00, 0x10, 0xFF, 0x02,
1233 0x00, 0x00, 0x00, 0x00,
1243 smprintf(s,
"Deleting phonebook entry\n");
1251 unsigned char req[5000] = {
1255 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1271 error = N6510_GetMemoryStatus(s, &status);
1272 if (error !=
ERR_NONE)
return error;
1282 error = N6510_GetMemory(s, &tmp);
1306 smprintf(s,
"Writing phonebook entry\n");
1313 return N6510_SetMemory(s, entry);
1318 smprintf(s,
"Operator logo set OK\n");
1326 size_t Width, Height;
1327 unsigned int count = 22;
1328 unsigned char req[500] = {
1332 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
1364 req[count - 1] = 0x01;
1388 memcpy(
string + 1, bitmap->
Text, i);
1424 size_t Width, Height, i, count;
1425 unsigned char folderid;
1426 unsigned int location;
1429 unsigned char reqStartup[1000] = {
1432 0x04, 0xC0, 0x02, 0x00,
1433 0x41, 0xC0, 0x03, 0x00,
1435 unsigned char reqColourWallPaper[200] = {
1437 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
1438 0x00, 0x00, 0x00, 0x01, 0x00,
1440 unsigned char reqColourStartup[200] = {
1442 unsigned char reqOp[1000] = {
1444 0x55, 0x00, 0x00, 0x55,
1449 unsigned char reqColourOp[200] = {
1451 0x07, 0x00, 0x00, 0x00, 0xE7, 0x00, 0x00, 0x00, 0xF9, 0x00,
1452 0x08, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x00,
1457 unsigned char reqPicture[2000] = {
1461 0x01, 0x01, 0xa0, 0x02, 0x01, 0x40, 0x00, 0x34,
1462 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1463 0x00, 0x00, 0x55, 0x55, 0x55, 0x03, 0x82, 0x10,
1464 0x01, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1465 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x10,
1466 0x02, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1467 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04,
1468 0x00, 0x00, 0xa1, 0x55, 0x01, 0x08, 0x00, 0x00,
1469 0x00, 0x01, 0x48, 0x1c, 0x00, 0xfc, 0x00};
1471 switch (Bitmap->
Type) {
1473 reqColourWallPaper[21] = Bitmap->
ID;
1474 smprintf(s,
"Setting colour wall paper\n");
1481 case 2: memset(reqStartup+5,0x00,15);
1486 smprintf(s,
"Setting startup logo\n");
1504 memset(reqOp + 19, 0, 281);
1518 smprintf(s,
"Setting operator logo\n");
1521 error=N6510_GetNetworkInfo(s,&NetInfo);
1522 if (error !=
ERR_NONE)
return error;
1524 smprintf(s,
"Clearing operator logo\n");
1531 reqColourOp[21] = Bitmap->
ID;
1533 smprintf(s,
"Setting colour operator logo\n");
1537 case 0: reqColourStartup[6] = 0x00;
1538 reqColourStartup[8] = 0x00;
1539 smprintf(s,
"Setting colour startup logo\n");
1541 case 1: reqColourStartup[8] = Bitmap->
ID;
1542 smprintf(s,
"Setting colour startup logo\n");
1547 return N6510_SetCallerLogo(s,Bitmap);
1549 error = N6510_GetPictureImage(s, Bitmap, &sms.
Location);
1552 N6510_GetSMSLocation(s, &sms, &folderid, &location);
1554 case 0x01: reqPicture[5] = 0x02;
break;
1555 case 0x02: reqPicture[5] = 0x03;
break;
1556 default : reqPicture[5] = folderid - 1; reqPicture[4] = 0x02;
break;
1558 reqPicture[6]=location / 256;
1559 reqPicture[7]=location;
1565 smprintf(s,
"Setting Picture Image\n");
1577 smprintf(s,
"Ringtone ID received\n");
1584 smprintf(s,
"Binary ringtone set\n");
1593 size_t size=200, current;
1594 unsigned char GetIDReq[] = {
1596 0x00, 0xFF, 0x06, 0xE1, 0x00,
1597 0xFF, 0x06, 0xE1, 0x01, 0x42};
1598 unsigned char SetPreviewReq[1000] = {
1600 0x01, 0x00, 0x0D, 0x00,
1601 0x00, 0x00, 0x00, 0x00, 0x00,
1603 unsigned char AddBinaryReq[33000] = {
1608 smprintf(s,
"Getting ringtone ID\n");
1610 if (error !=
ERR_NONE)
return error;
1613 SetPreviewReq[10] = size;
1628 AddBinaryReq[current++] = 0x00;
1631 smprintf(s,
"Adding binary ringtone\n");
1642 AddBinaryReq[current++] = 0x00;
1643 AddBinaryReq[current++] = 0x00;
1644 smprintf(s,
"Adding binary or MIDI ringtone\n");
1652 smprintf(s,
"Ringtones deleted\n");
1660 smprintf(s,
"Deleting all user ringtones\n");
1666 if (msg->
Buffer[3] == 0x33) {
1667 smprintf(s,
"Key auto released\n");
1668 }
else if (msg->
Buffer[3] == 0x12) {
1683 smprintf(s,
"Mapping for key code %d missing!\n", Key);
1738 unsigned char buff[2000];
1742 smprintf(s,
"Connection settings received OK\n");
1766 switch (msg->
Buffer[tmp]) {
1767 case 0x00:
smprintf(s,
"temporary\n");
break;
1768 case 0x01:
smprintf(s,
"continuous\n");
break;
1771 smprintf(s,
"Connection security: ");
1772 switch (msg->
Buffer[tmp+1]) {
1773 case 0x00:
smprintf(s,
"off\n");
break;
1774 case 0x01:
smprintf(s,
"on\n");
break;
1778 switch (msg->
Buffer[tmp+2]) {
1779 case 0x01:
smprintf(s,
"GSM data\n");
break;
1780 case 0x03:
smprintf(s,
"GPRS\n");
break;
1804 while ((msg->
Buffer[tmp] != 0x01) || (msg->
Buffer[tmp + 1] != 0x00)) tmp++;
1808 smprintf(s,
"Authentication type: ");
1809 switch (msg->
Buffer[tmp]) {
1810 case 0x00:
smprintf(s,
"normal\n");
break;
1811 case 0x01:
smprintf(s,
"secure\n");
break;
1812 default:
smprintf(s,
"unknown\n");
break;
1815 switch (msg->
Buffer[tmp+1]) {
1816 case 0x00:
smprintf(s,
"analogue\n");
break;
1817 case 0x01:
smprintf(s,
"ISDN\n");
break;
1818 default:
smprintf(s,
"unknown\n");
break;
1821 switch (msg->
Buffer[tmp+2]) {
1822 case 0x00:
smprintf(s,
"automatic\n");
break;
1823 case 0x01:
smprintf(s,
"9600\n");
break;
1824 case 0x02:
smprintf(s,
"14400\n");
break;
1825 default:
smprintf(s,
"unknown\n");
break;
1828 switch (msg->
Buffer[tmp+4]) {
1829 case 0x00:
smprintf(s,
"manual\n");
break;
1830 case 0x01:
smprintf(s,
"automatic\n");
break;
1831 default:
smprintf(s,
"unknown\n");
break;
1840 switch (msg->
Buffer[tmp+2]) {
1845 smprintf(s,
"Unknown speed settings: 0x%0x\n", msg->
Buffer[tmp+2]);
1874 while (msg->
Buffer[tmp] != 0x03) tmp++;
1878 smprintf(s,
"Authentication type: ");
1879 switch (msg->
Buffer[tmp]) {
1880 case 0x00:
smprintf(s,
"normal\n");
break;
1881 case 0x01:
smprintf(s,
"secure\n");
break;
1882 default:
smprintf(s,
"unknown\n");
break;
1885 switch (msg->
Buffer[tmp+1]) {
1886 case 0x00:
smprintf(s,
"ALWAYS online\n");
break;
1887 case 0x01:
smprintf(s,
"when needed\n");
break;
1888 default:
smprintf(s,
"unknown\n");
break;
1891 switch (msg->
Buffer[tmp+2]) {
1892 case 0x00:
smprintf(s,
"manual\n");
break;
1893 case 0x01:
smprintf(s,
"automatic\n");
break;
1894 default:
smprintf(s,
"unknown\n");
break;
1924 if (msg->
Buffer[tmp] == 0x00 && msg->
Buffer[tmp+1] == 0x00) tmp = tmp+2;
1927 buff[msg->
Buffer[tmp+4]] = 0x00;
1933 buff[msg->
Buffer[tmp+5]] = 0x00;
1938 tmp = tmp + msg->
Buffer[tmp+3] + 19;
1942 smprintf(s,
"Proxy data %i\n",i+1);
1944 buff[msg->
Buffer[tmp+2]*2] =0;
1945 buff[msg->
Buffer[tmp+2]*2+1]=0;
1949 tmp = tmp + msg->
Buffer[tmp];
1955 tmp = tmp + msg->
Buffer[tmp];
1967 smprintf(s,
"Connection settings receiving error, assuming empty\n");
1971 smprintf(s,
"Connection settings receiving error\n");
1972 switch (msg->
Buffer[4]) {
1974 smprintf(s,
"Security error. Inside phone settings menu\n");
1998 error = N6510_EnableConnectionFunctions(s, Type);
2006 smprintf(s,
"Getting MMS settings\n");
2010 smprintf(s,
"Getting WAP settings\n");
2014 smprintf(s,
"Getting SyncML settings\n");
2018 smprintf(s,
"Getting Chat settings\n");
2032 if (error !=
ERR_NONE)
return error;
2051 smprintf(s,
"SyncML settings received OK\n");
2070 smprintf(s,
"SyncML names received OK\n");
2087 0x00, 0x00, 0x00, 0x31, 0x00,
2089 0x00, 0x00, 0x02, 0x46, 0x00, 0x00};
2093 if (error !=
ERR_NONE)
return error;
2097 settings->
Name[0] = 0;
2098 settings->
Name[1] = 0;
2106 smprintf(s,
"Getting additional SyncML settings\n");
2126 smprintf(s,
"Chat settings received OK\n");
2142 smprintf(s,
"Empty chat settings received\n");
2157 if (error !=
ERR_NONE)
return error;
2163 smprintf(s,
"Getting additional Chat settings\n");
2169 switch (msg->
Buffer[3]) {
2171 smprintf(s,
"Connection settings cleaned\n");
2174 smprintf(s,
"Connection settings setting status\n");
2175 switch (msg->
Buffer[4]) {
2177 smprintf(s,
"Security error. Inside phone settings menu\n");
2200 int i, pad = 0, length, pos = 5, loc1=-1,loc2=-1,port;
2201 unsigned char *Proxy;
2209 error = N6510_EnableConnectionFunctions(s, Type);
2212 memset(req + pos, 0, 1000 - pos);
2216 for (i=0;i<settings->
Number;i++) {
2224 if (!(length % 2)) pad = 1;
2229 if (((length + pad) % 2)) pad = 2;
else pad = 0;
2240 }
else if (loc2 != -1) {
2243 if (!(length % 2)) pad = 1;
2248 if (((length + pad) % 2)) pad = 2;
else pad = 0;
2262 if (!(length % 2)) pad = 1;
2267 if (((length + pad) % 2)) pad = 2;
else pad = 0;
2295 memcpy(req + pos,
"\x01\x00", 2); pos += 2;
2303 length = 1 + 2 + 2 + 2;
2306 req[pos++] = length / 256;
2307 req[pos++] = length % 256;
2344 memcpy(req + pos,
"\x03\x00", 2); pos += 2;
2356 req[pos++] = length / 256;
2357 req[pos++] = length % 256;
2414 req[pos++] = 0x00; req[pos++] = 0x00;
2416 req[pos++] = 0x00; req[pos++] = 0x00;
2420 req[pos++] = 0x00; req[pos++] = 0x00;
2428 Proxy = settings->
Proxy;
2431 Proxy = settings->
Proxy2;
2433 req[pos++] = 0x08; req[pos++] = 0x00;
2443 req[pos++] = 12/256;
2444 req[pos++] = 12%256;
2447 if (Proxy != NULL) {
2452 req[pos++] = port/256;
2453 req[pos++] = port%256;
2470 req[pos++] = 0x09; req[pos++] = 0x00; req[pos++] = 0x00;
2471 req[pos++] = 0x0C; req[pos++] = 0x02; req[pos++] = 0x00;
2472 req[pos++] = 0x00; req[pos++] = 0x02; req[pos++] = 0x00;
2473 req[pos++] = 0x00; req[pos++] = 0x00; req[pos++] = 0x00;
2476 memcpy(req + pos,
"\x80\x00\x00\x0c", 4); pos += 4;
2480 smprintf(s,
"Making Connection settings read-write\n");
2482 if (error !=
ERR_NONE)
return error;
2486 smprintf(s,
"Setting MMS settings\n");
2489 smprintf(s,
"Setting Chat settings\n");
2492 smprintf(s,
"Setting WAP settings\n");
2495 smprintf(s,
"Setting SyncML settings\n");
2508 smprintf(s,
"Making Connection settings readonly\n");
2510 if (error !=
ERR_NONE)
return error;
2514 if (error !=
ERR_NONE)
return error;
2531 if (msg->
Buffer[7] == 0x00) {
2550 switch (msg->
Buffer[3]) {
2552 switch (msg->
Buffer[4]) {
2575 smprintf(s,
"Wait a moment. Phone is during power on and busy now\n");
2579 smprintf(s,
"Handling of this reply is not known, please help!\n");
2594 smprintf(s,
"Getting SMS status\n");
2596 if (error !=
ERR_NONE)
return error;
2601 error = N6510_GetSMSFolderStatus(s, 0x06);
2602 if (error !=
ERR_NONE)
return error;
2610 switch (msg->
Buffer[3]) {
2615 switch (msg->
Buffer[4]) {
2629 unsigned char folderid;
2630 unsigned int location;
2641 N6510_GetSMSLocation(s, sms, &folderid, &location);
2645 case 0x01: req[5] = 0x01;
break;
2646 default : req[5] = folderid; req[4] = 0x02;
break;
2650 case 0x01: req[5] = 0x02;
break;
2651 case 0x02: req[5] = 0x03;
break;
2652 default : req[5] = folderid - 1; req[4] = 0x02;
break;
2655 req[6]=location / 256;
2656 req[7]=location % 256;
2664 switch (msg->
Buffer[8]) {
2666 smprintf(s,
"SMS sent OK, TPMR for sent sms is %d\n",msg->
Buffer[10]);
2670 smprintf(s,
"SMS not sent OK, error code probably %i\n",msg->
Buffer[8]);
2681 unsigned char req [300] = {
2685 memset(req+9,0x00,
sizeof(req) - 9);
2686 error=N6510_EncodeSMSFrame(s, sms, req + 9, &Layout, &length);
2687 if (error !=
ERR_NONE)
return error;
2697 if (msg->
Buffer[3] == 0xf0) {
2701 smprintf(s,
"Security Code status received: ");
2702 switch (msg->
Buffer[4]) {
2722 smprintf(s,
"Getting security code status\n");
2728 switch (msg->
Buffer[3]) {
2733 switch (msg->
Buffer[4]) {
2741 smprintf(s,
"ERROR: unknown security code status %i\n",msg->
Buffer[4]);
2753 switch (Code->
Type) {
2754 case SEC_Pin : req[4] = 0x02;
break;
2755 case SEC_Puk : req[4] = 0x03;
break;
2759 len = strlen(Code->
Code);
2760 memcpy(req+5,Code->
Code,len);
2763 smprintf(s,
"Entering security code\n");
2769 unsigned char folder;
2772 switch (msg->
Buffer[3]) {
2774 switch (msg->
Buffer[4]) {
2779 smprintf(s,
"Incorrect location\n");
2782 smprintf(s,
"Memory full (for example no empty space in SIM)\n");
2788 smprintf(s,
"ERROR: unknown reply on saving message %i\n",msg->
Buffer[4]);
2797 folder = msg->
Buffer[8] + 1;
2799 if (msg->
Buffer[8] == 0x02 || msg->
Buffer[8] == 0x03) {
2800 if (msg->
Buffer[5] == 0x01) {
2801 folder = msg->
Buffer[8] - 1;
2820 unsigned int location;
2821 unsigned char folderid, folder;
2824 unsigned char req [300] = {
2830 unsigned char NameReq[200] = {
2840 N6510_GetSMSLocation(s, sms, &folderid, &location);
2844 case 0x02: req[4] = 0x02; req[5] = 0x02;
break;
2851 case 0x01: req[5] = 0x02;
break;
2852 case 0x02: req[5] = 0x03;
break;
2853 default : req[5] = folderid - 1; req[4] = 0x02;
break;
2856 req[6]=location / 256;
2857 req[7]=location % 256;
2876 if (folderid == 0x01 || folderid == 0x03) sms->
PDU =
SMS_Deliver;
2886 switch (sms->
State) {
2888 case SMS_Read : req[8] = 0x01;
break;
2893 switch (sms->
State) {
2895 case SMS_Read : req[8] = 0x05;
break;
2901 memset(req+9,0x00,
sizeof(req) - 9);
2902 error=N6510_EncodeSMSFrame(s, sms, req + 9, &Layout, &length);
2903 if (error !=
ERR_NONE)
return error;
2908 if (error !=
ERR_NONE)
return error;
2915 N6510_GetSMSLocation(s, sms, &folderid, &location);
2919 case 0x03: NameReq[4] = 0x02; NameReq[5] = 0x02;
break;
2920 case 0x02: NameReq[4] = 0x02; NameReq[5] = 0x03;
break;
2925 case 0x01: NameReq[5] = 0x02;
break;
2926 case 0x02: NameReq[5] = 0x03;
break;
2927 default : NameReq[5] = folderid - 1; NameReq[4] = 0x02;
break;
2930 NameReq[6]=location / 256;
2931 NameReq[7]=location % 256;
2935 NameReq[length++] = 0;
2936 NameReq[length++] = 0;
2944 unsigned int location;
2945 unsigned char folderid;
2947 N6510_GetSMSLocation(s, sms, &folderid, &location);
2949 return N6510_PrivSetSMSMessage(s, sms);
2954 unsigned int location;
2955 unsigned char folderid;
2957 N6510_GetSMSLocation(s, sms, &folderid, &location);
2959 N6510_SetSMSLocation(s, sms, folderid, location);
2960 return N6510_PrivSetSMSMessage(s, sms);
2965 smprintf(s,
"Date & time received\n");
2966 if (msg->
Buffer[4]==0x01) {
2979 smprintf(s,
"Getting date & time\n");
2992 0x01, 0x00, 0x01, 0x01, 0x0c, 0x01, 0x03,
3000 req[16] = date_time->
Second;
3001 smprintf(s,
"Setting date & time\n");
3007 if (msg->
Buffer[7] == 0x00) {
3018 unsigned char req[6] = {0x00, 0x05, 0x02, 0x01, 0x00, 0x02};
3024 smprintf(s,
"Getting manufacture month\n");
3044 smprintf(s,
"Alarm state received\n");
3045 if (msg->
Buffer[37] == 0x01) {
3046 smprintf(s,
" Not set in phone\n");
3064 smprintf(s,
"Getting alarm state\n");
3066 if (error !=
ERR_NONE)
return error;
3081 0x11, 0x00, 0x01, 0x01, 0x0c, 0x02,
3082 0x01, 0x00, 0x00, 0x00, 0x00,
3100 smprintf(s,
"Ringtones info received\n");
3128 smprintf(s,
"Getting binary ringtones ID\n");
3143 return N6510_PrivGetRingtonesInfo(s, Info,
TRUE);
3151 smprintf(s,
"Ringtone received\n");
3161 tmp = msg->
Buffer[7]*2+10;
3191 switch (Ringtone->
Format) {
3198 error=N6510_PrivGetRingtonesInfo(s, &Info, PhoneRingtone);
3199 if (error !=
ERR_NONE)
return error;
3203 smprintf(s,
"Getting binary ringtone\n");
3220 unsigned char reqStart[] = {
3221 0x00,0x06,0x01,0x00,0x07,0x00 };
3222 unsigned char reqPlay[] = {
3223 0x00,0x06,0x01,0x14,0x05,0x04,
3224 0x00,0x00,0x00,0x03,0x03,0x08,
3225 0x00,0x00,0x00,0x01,0x00,0x00,
3226 0x03,0x08,0x01,0x00,
3228 0x00,0x00,0x03,0x08,0x02,0x00,0x00,
3231 unsigned char reqOff[] = {
3232 0x00,0x06,0x01,0x14,0x05,0x05,
3233 0x00,0x00,0x00,0x01,0x03,0x08,
3234 0x05,0x00,0x00,0x08,0x00,0x00};
3241 smprintf(s,
"Enabling sound - part 1\n");
3244 smprintf(s,
"Enabling sound - part 2 (disabling sound command)\n");
3250 if (Herz!=255*255) {
3251 reqPlay[23] = Herz%256;
3252 reqPlay[22] = Herz/256;
3253 reqPlay[31] = Volume;
3260 smprintf(s,
"Playing silent sound\n");
3276 smprintf(s,
"Received phone info\n");
3278 while(pos < msg->Length) {
3279 if (msg->
Buffer[pos] == 0x55 && msg->
Buffer[pos+1] == 0x55) {
3281 if (msg->
Buffer[pos] != 0x55)
break;
3286 while(len < msg->Length) {
3287 if (msg->
Buffer[len] == 0x00 && msg->
Buffer[len+1] == 0x00)
break;
3290 while(len < msg->Length) {
3291 if (msg->
Buffer[len] != 0x00)
break;
3299 switch (msg->
Buffer[pos]) {
3305 while (msg->
Buffer[pos] != 0x00) pos++;
3338 smprintf(s,
"Getting speed dial\n");
3339 error=N6510_GetMemory(s,&pbk);
3342 smprintf(s,
"No speed dials set in phone\n");
3346 smprintf(s,
"Speed dial not assigned or error in firmware\n");
3357 unsigned char *blockstart;
3361 switch (msg->
Buffer[3]) {
3363 blockstart = msg->
Buffer + 7;
3364 for (i = 0; i < 11; i++) {
3365 smprintf(s,
"Profile feature %02x ",blockstart[1]);
3370 switch (blockstart[1]) {
3375 if (blockstart[7] == 0x00) {
3403 blockstart = blockstart + blockstart[0];
3433 for (i = 0; i < 0x0a; i++) {
3434 req[length++] = 0x04;
3437 req[length++] = 0x01;
3440 req[length++] = 0x04;
3442 req[length++] = 0x0c;
3443 req[length++] = 0x01;
3445 req[length++] = 0x04;
3455 if (error !=
ERR_NONE)
return error;
3457 smprintf(s,
"Checking, which profile is active\n");
3463 unsigned char *blockstart;
3466 smprintf(s,
"Response to profile writing received!\n");
3468 blockstart = msg->
Buffer + 6;
3469 for (i = 0; i < msg->
Buffer[5]; i++) {
3470 switch (blockstart[2]) {
3471 case 0x00:
smprintf(s,
"keypad tone level");
break;
3472 case 0x02:
smprintf(s,
"call alert");
break;
3473 case 0x03:
smprintf(s,
"ringtone");
break;
3474 case 0x04:
smprintf(s,
"ringtone volume");
break;
3475 case 0x05:
smprintf(s,
"SMS tone");
break;
3476 case 0x06:
smprintf(s,
"vibration");
break;
3477 case 0x07:
smprintf(s,
"warning tone level");
break;
3478 case 0x08:
smprintf(s,
"caller groups");
break;
3479 case 0x09:
smprintf(s,
"automatic answer");
break;
3480 case 0x0c:
smprintf(s,
"name");
break;
3482 smprintf(s,
"Unknown block type %02x", blockstart[2]);
3485 if (msg->
Buffer[4] == 0x00) {
3490 blockstart = blockstart + blockstart[1];
3497 int i, length = 7, blocks = 0;
3499 unsigned char ID,Value;
3525 req[length + 1] = ID;
3526 req[length + 2] = Profile->
Location;
3527 memcpy(req + length + 4,
"\x00\x00\x01", 3);
3528 req[length + 8] = 0x03;
3529 req[length + 3] = req[length + 7] = Value;
3541 switch (msg->
Buffer[3]) {
3543 smprintf(s,
"Ignoring cell broadcast ok event\n");
3546 smprintf(s,
"Ignoring cell broadcast fail event\n");
3549 smprintf(s,
"Ignoring cell broadcast read event\n");
3552 smprintf(s,
"Ignoring cell broadcast event 0x%02x\n", msg->
Buffer[3]);
3563 smprintf(s,
"SMS message received\n");
3564 N6510_DecodeSMSFrame(s, &sms, msg->
Buffer+10,&i);
3573 N6510_DecodeSMSFrame(s, &sms, msg->
Buffer+10,&i);
3582 unsigned int pos2 = 15;
3583 unsigned int pos = 4;
3585 0x00,0x02,0x07,0x04,
3598 req[pos++] = strlen(number);
3600 pos += strlen(number)*2;
3608 switch (ShowNumber) {
3619 smprintf(s,
"Making voice call\n");
3625 req2[11] = strlen(number)*2+6;
3626 req2[pos2++] = strlen(number);
3628 pos2 += strlen(number)*2;
3630 smprintf(s,
"Making voice call\n");
3638 smprintf(s,
"Probably phone says: I log into network\n");
3646 freq2 = (
unsigned int)(freq * 100);
3647 freq2 = freq2 - 0xffff;
3648 buff[0] = freq2 / 0x100;
3649 buff[1] = freq2 % 0x100;
3654 *freq = (double)(0xffff + buff[0] * 0x100 + buff[1])/1000.0;
3659 smprintf(s,
"getting FM status OK\n");
3679 switch (msg->
Buffer[3]) {
3681 smprintf(s,
"Received FM station\n");
3684 smprintf(s,
"FM station name too long (%d), truncating!\n", length);
3687 memcpy(name,msg->
Buffer+18,length*2);
3688 name[length*2] = 0x00;
3689 name[length*2+1] = 0x00;
3695 smprintf(s,
"Received FM station. Empty ?\n");
3698 smprintf(s,
"FM radio not supported\n");
3717 error = N6510_GetFMStatus(s);
3718 if (error !=
ERR_NONE)
return error;
3732 case 0x03:
smprintf(s,
"FM stations cleaned\n");
break;
3733 case 0x11:
smprintf(s,
"Setting FM station status OK\n");
break;
3734 case 0x12:
smprintf(s,
"Setting FM station OK\n");
break;
3746 smprintf(s,
"Cleaning FM Stations\n");
3752 unsigned int len, location;
3755 0x00,0x00,0x1c,0x00,0x14,0x00,0x00,
3756 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
3757 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
3758 0xff,0xff,0xff,0xff,0xff,0x01};
3774 error = N6510_GetFMStatus(s);
3775 if (error !=
ERR_NONE)
return error;
3777 memcpy(setstatus+14,s->
Phone.
Data.
Priv.N6510.FMStatus+14,20);
3778 setstatus [14+location] = location;
3782 if (error !=
ERR_NONE)
return error;
3789 req[7] = 0x0e + len * 2;
3807 unsigned char req[14] = {
3811 0x00, 0x00, 0x00, 0x01,
3812 0x05, 0x04, 0x02, 0x00};
3815 if (!enable) req[5] = 0x02;
3826 if (error !=
ERR_NONE)
return error;
3829 if (error !=
ERR_NONE)
return error;
3834 if (error !=
ERR_NONE)
return error;
3837 if (error !=
ERR_NONE)
return error;
3847 switch (msg->
Buffer[13]) {
3849 smprintf(s,
"Active GPRS point received\n");
3854 smprintf(s,
"Names for GPRS points received\n");
3859 smprintf(s,
"URL for GPRS points received\n");
3870 unsigned char URL[] = {
3872 0x00, 0x00, 0x00, 0x03, 0xF2, 0x00, 0x00};
3873 unsigned char Name[] = {
3875 0x01, 0x00, 0x00, 0x00, 0xD2, 0x00, 0x00};
3876 unsigned char Active[] = {
3878 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00};
3886 smprintf(s,
"Getting GPRS access point name\n");
3888 if (error !=
ERR_NONE)
return error;
3890 smprintf(s,
"Getting GPRS access point URL\n");
3892 if (error !=
ERR_NONE)
return error;
3894 smprintf(s,
"Getting number of active GPRS access point\n");
3896 if (error !=
ERR_NONE)
return error;
3904 switch (msg->
Buffer[13]) {
3919 unsigned char URL[] = {
3921 0x00, 0x00, 0x00, 0x03, 0xF2, 0x00, 0x00};
3922 unsigned char Name[] = {
3924 0x01, 0x00, 0x00, 0x00, 0xD2, 0x00, 0x00};
3925 unsigned char Active[] = {
3927 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00};
3935 smprintf(s,
"Getting GPRS access point name\n");
3937 if (error !=
ERR_NONE)
return error;
3943 smprintf(s,
"Setting GPRS access point name\n");
3945 if (error !=
ERR_NONE)
return error;
3947 smprintf(s,
"Getting GPRS access point URL\n");
3949 if (error !=
ERR_NONE)
return error;
3955 smprintf(s,
"Setting GPRS access point URL\n");
3957 if (error !=
ERR_NONE)
return error;
3960 smprintf(s,
"Getting number of active GPRS access point\n");
3962 if (error !=
ERR_NONE)
return error;
3968 smprintf(s,
"Setting number of active GPRS access point\n");
3970 if (error !=
ERR_NONE)
return error;
3980 switch (msg->
Buffer[3]) {
3982 smprintf(s,
"Date settings received\n");
3983 switch (msg->
Buffer[4]) {
4036 smprintf(s,
"Getting date format\n");
4067 smprintf(s,
"Adding SMS folder\n");
4074 int count=4, location;
4082 if (bookmark->
Location == 0) location = 0xffff;
4083 req[count++] = (location & 0xff00) >> 8;
4084 req[count++] = location & 0x00ff;
4089 req[count++] = 0x00;
4090 req[count++] = 0x00;
4091 req[count++] = 0x00;
4092 req[count++] = 0x00;
4094 smprintf(s,
"Setting WAP bookmark\n");
4137 smprintf(s,
"Received screenshot part, length %d\n", len);
4163 unsigned char bmp_header[] = {0x42, 0x4D,
4174 0x13,0x0b,0x00,0x00,
4175 0x13,0x0b,0x00,0x00,
4182 0x20, 0x6E, 0x69, 0x57,
4208 picture->
Buffer = malloc(
sizeof(bmp_header));
4209 if (picture->
Buffer == NULL) {
4212 memcpy(picture->
Buffer, bmp_header,
sizeof(bmp_header));
4213 picture->
Length =
sizeof(bmp_header);
4216 #define STORE_INT(data, pos) picture->Buffer[pos] = data & 0xff; picture->Buffer[pos + 1] = (data >> 8) & 0xff; picture->Buffer[pos + 2] = (data >> 16) & 0xff; picture->Buffer[pos + 3] = (data >> 24) & 0xff; 4257 {N6510_ReplyPressKey,
"\x01",0x03,0x33,
ID_PressKey },
4258 {N6510_ReplyPressKey,
"\x01",0x03,0x12,ID_PressKey },
4260 {N6510_ReplySendSMSMessage,
"\x02",0x03,0x03,ID_IncomingFrame },
4261 {N6510_ReplyIncomingSMS,
"\x02",0x03,0x04,ID_IncomingFrame },
4262 {N6510_ReplySetSMSC,
"\x02",0x03,0x13,
ID_SetSMSC },
4263 {N6510_ReplyGetSMSC,
"\x02",0x03,0x15,
ID_GetSMSC },
4264 {N6510_ReplyIncomingCB,
"\x02",0x03,0x21,ID_IncomingFrame },
4265 {N6510_ReplyIncomingCB,
"\x02",0x03,0x22,ID_IncomingFrame },
4266 {N6510_ReplyIncomingCB,
"\x02",0x03,0x23,ID_IncomingFrame },
4269 {N6510_ReplyGetMemory,
"\x03",0x03,0x08,
ID_GetMemory },
4272 {N6510_ReplyDeleteMemory,
"\x03",0x03,0x10,ID_SetMemory },
4276 {
NoneReply,
"\x06",0x03,0x06,ID_IncomingFrame },
4277 {
NoneReply,
"\x06",0x03,0x09,ID_IncomingFrame },
4280 {N6510_ReplyEnterSecurityCode,
"\x08",0x03,0x09,ID_EnterSecurityCode },
4282 {N6510_ReplyGetSecurityStatus,
"\x08",0x03,0xf0,ID_GetSecurityStatus },
4285 {N6510_ReplyGetNetworkInfo,
"\x0A",0x03,0xf0,ID_GetNetworkInfo },
4287 {N6510_ReplyGetOperatorLogo,
"\x0A",0x03,0x24,
ID_GetBitmap },
4288 {N6510_ReplyGetOperatorLogo,
"\x0A",0x03,0xf0,ID_GetBitmap },
4289 {N6510_ReplySetOperatorLogo,
"\x0A",0x03,0x26,ID_SetBitmap },
4291 {N6510_ReplyGetNetworkInfo,
"\x0A",0x03,0x01,ID_IncomingFrame },
4292 {N6510_ReplyLogIntoNetwork,
"\x0A",0x03,0x02,ID_IncomingFrame },
4293 {
NoneReply,
"\x0A",0x03,0x16,ID_IncomingFrame },
4294 {N6510_ReplyGetIncSignalQuality,
"\x0A",0x03,0x1E,ID_IncomingFrame },
4295 {
NoneReply,
"\x0A",0x03,0x20,ID_IncomingFrame },
4296 {N6510_ReplyGetNetworkInfo,
"\x0A",0x03,0xf0,ID_IncomingFrame },
4299 {
NoneReply,
"\x0B",0x03,0x15,ID_PlayTone },
4300 {
NoneReply,
"\x0B",0x03,0x16,ID_PlayTone },
4313 {N71_65_ReplyGetNextCalendar2,
"\x13",0x03,0x3F,ID_GetCalendarNote },
4323 {N6510_ReplyGetLocale,
"\x13",0x03,0x8A,
ID_GetLocale },
4333 {N6510_ReplySetPicture,
"\x14",0x03,0x01,ID_SetBitmap },
4336 {N6510_ReplyDeleteSMSMessage,
"\x14",0x03,0x06,ID_DeleteSMSMessage },
4339 {N6510_ReplyGetSMSMessage,
"\x14",0x03,0x0f,ID_GetSMSMessage },
4342 {N6510_ReplySaveSMSMessage,
"\x14",0x03,0x17,ID_SaveSMSMessage },
4343 {N6510_ReplyGetSMSStatus,
"\x14",0x03,0x1a,ID_GetSMSStatus },
4344 {N6510_ReplyGetSMSStatus,
"\x14",0x03,0xf0,ID_GetSMSStatus },
4348 {
NoneReply,
"\x15",0x03,0x68,ID_Reset },
4351 {N6510_IncomingBatteryCharge,
"\x17",0x03,0x2c,ID_IncomingFrame },
4355 {N6510_ReplySetAlarm,
"\x19",0x03,0x12,
ID_SetAlarm },
4356 {N6510_ReplyGetAlarm,
"\x19",0x03,0x1A,
ID_GetAlarm },
4357 {N6510_ReplyGetAlarm,
"\x19",0x03,0x20,ID_GetAlarm },
4361 {N6510_ReplyGetPPM,
"\x1B",0x03,0x08,
ID_GetPPM },
4369 {N6510_ReplySetBinRingtone,
"\x1f",0x03,0x0F,ID_SetRingtone },
4375 {N6510_ReplyGetProfile,
"\x39",0x03,0x06,ID_GetProfile },
4377 {N6510_ReplySetLight,
"\x3A",0x03,0x06,
ID_SetLight },
4380 {N6510_ReplyGetFMStatus,
"\x3E",0x03,0x0E,ID_GetFMStation },
4382 {N6510_ReplyGetFMStation,
"\x3E",0x03,0x16,ID_GetFMStation },
4383 {N6510_ReplyGetFMStation,
"\x3E",0x03,0xF0,ID_GetFMStation },
4390 {N6510_ReplyGetWAPBookmark,
"\x3f",0x03,0x08,ID_GetWAPBookmark },
4397 {N6510_ReplyGetConnectionSettings,
"\x3f",0x03,0x11,ID_GetConnectSet },
4398 {N6510_ReplyGetConnectionSettings,
"\x3f",0x03,0x16,ID_GetConnectSet },
4399 {N6510_ReplyGetConnectionSettings,
"\x3f",0x03,0x17,ID_GetConnectSet },
4400 {N6510_ReplySetConnectionSettings,
"\x3f",0x03,0x19,ID_SetConnectSet },
4401 {N6510_ReplySetConnectionSettings,
"\x3f",0x03,0x1A,ID_SetConnectSet },
4402 {N6510_ReplySetConnectionSettings,
"\x3f",0x03,0x28,ID_SetConnectSet },
4403 {N6510_ReplySetConnectionSettings,
"\x3f",0x03,0x2B,ID_SetConnectSet },
4405 {N6510_ReplyGetChatSettings,
"\x3f",0x03,0x3C,ID_GetChatSettings },
4406 {N6510_ReplyGetConnectionSettings,
"\x3f",0x03,0xf0,ID_GetConnectSet },
4410 {N6510_ReplyGetOriginalIMEI,
"\x42",0x07,0x01,ID_GetOriginalIMEI },
4411 {N6510_ReplyGetManufactureMonth,
"\x42",0x07,0x02,ID_GetManufactureMonth },
4413 {N6510_ReplySetOperatorLogo,
"\x43",0x03,0x08,ID_SetBitmap },
4418 {
NoneReply,
"\x43",0x03,0x08,ID_SetGPRSPoint },
4444 {
NoneReply,
"\x6D",0x03,0x59,ID_AddFile },
4457 {N6510_ReplyStartupNoteLogo,
"\x7A",0x04,0x01,ID_GetBitmap },
4458 {N6510_ReplyStartupNoteLogo,
"\x7A",0x04,0x01,ID_SetBitmap },
4459 {N6510_ReplyStartupNoteLogo,
"\x7A",0x04,0x0F,ID_GetBitmap },
4460 {N6510_ReplyStartupNoteLogo,
"\x7A",0x04,0x0F,ID_SetBitmap },
4461 {N6510_ReplyStartupNoteLogo,
"\x7A",0x04,0x10,ID_GetBitmap },
4462 {N6510_ReplyStartupNoteLogo,
"\x7A",0x04,0x10,ID_SetBitmap },
4463 {N6510_ReplyStartupNoteLogo,
"\x7A",0x04,0x25,ID_SetBitmap },
4470 {N6510_ReplyGetRingtoneID,
"\xDB",0x03,0x02,ID_SetRingtone },
4475 {NULL,
"\x00",0x00,0x00,
ID_None }
4479 "1100|1100a|1100b|1112|1200|1209|1600|1650|1680|2600|2610|2630|2650|2660|2680|2760|3100|3100b|3105|3108|3109c|3200|3200a|3205|3220|3300|3510|3510i|3530|3589i|3590|3595|5000|5100|5140|5140i|5200|5220|5300|5310|6020|6020b|6021|6030|6060|6070|6085|6086|6100|6101|6103|6111|6125|6131|6151|6170|6200|6220|6220c|6225|6230|6230i|6233|6234|6270|6275i|6280|6300|6303c|6310|6310i|6340i|6385|6500c|6500s|6510|6600|6610|6610i|6800|6810|6820|6822|7200|7210|7210s|7230|7250|7250i|7260|7270|7360|7370|7500|7600|7900|8310|8390|8800|8910|8910i",
4480 N6510ReplyFunctions,
4485 N6510_ShowStartInfo,
4490 N6510_GetOriginalIMEI,
4491 N6510_GetManufactureMonth,
4505 N6510_EnterSecurityCode,
4506 N6510_GetSecurityStatus,
4509 N6510_GetBatteryCharge,
4510 N6510_GetSignalQuality,
4511 N6510_GetNetworkInfo,
4515 N6510_GetMemoryStatus,
4527 N6510_GetSMSMessage,
4528 N6510_GetNextSMSMessage,
4531 N6510_DeleteSMSMessage,
4532 N6510_SendSMSMessage,
4537 N6510_GetSMSFolders,
4558 N6510_GetRingtonesInfo,
4559 N6510_DeleteUserRingtones,
4561 N6510_GetWAPBookmark,
4562 N6510_SetWAPBookmark,
4563 N6510_DeleteWAPBookmark,
4564 N6510_GetWAPSettings,
4565 N6510_SetWAPSettings,
4566 N6510_GetSyncMLSettings,
4568 N6510_GetChatSettings,
4570 N6510_GetMMSSettings,
4571 N6510_SetMMSSettings,
4603 N6510_ClearFMStations,
4615 N6510_GetGPRSAccessPoint,
4616 N6510_SetGPRSAccessPoint,
#define NOKIA_RELEASEPHONEKEY
GSM_Error N6510_GetNextNote(GSM_StateMachine *s, GSM_NoteEntry *Note, gboolean start)
GSM_SecurityCodeType * SecurityStatus
GSM_Error DCT3DCT4_ReplyGetActiveConnectSet(GSM_Protocol_Message *msg, GSM_StateMachine *s)
WAPSettings_Bearer ActiveBearer
GSM_Error N71_65_ReplyDelCalendar(GSM_Protocol_Message *msg, GSM_StateMachine *s)
char IPAddress[(20+1) *2]
unsigned char Name[(GSM_MAX_RINGTONE_NAME_LENGTH+1) *2]
GSM_Error N6510_ReplyDeleteFileFolder1(GSM_Protocol_Message *msg, GSM_StateMachine *s)
void GSM_SetDefaultReceivedSMSData(GSM_SMSMessage *SMS)
gboolean IsNormalAuthentication
GSM_Profile_Feat_ID FeatureID[15]
GSM_Error N6510_ReplyGetFileFolderInfo1(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_ChargeState ChargeState
GSM_Error N6510_ReplyGetCalendarInfo(GSM_Protocol_Message *msg, GSM_StateMachine *s)
const unsigned char * GSM_GetNetworkName(const char *NetworkCode)
GSM_Error DCT4_ReplySetPhoneMode(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_Error N6510_ReplyGetFileCRC12(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_Error N6510_ReplyGetToDoFirstLoc1(GSM_Protocol_Message *msg, GSM_StateMachine *s)
char * DecodeUnicodeString(const unsigned char *src)
int LastFreeMemoryLocation
void DumpMessage(GSM_Debug_Info *d, const unsigned char *message, const size_t messagesize)
size_t PHONE_GetBitmapSize(GSM_Phone_Bitmap_Types Type, size_t Width, size_t Height)
GSM_RingtoneFormat Format
GSM_Error DCT3DCT4_GetModel(GSM_StateMachine *s)
unsigned char Number[(GSM_MAX_NUMBER_LENGTH+1) *2]
void EncodeBCD(unsigned char *dest, const unsigned char *src, size_t len, gboolean fill)
void CopyUnicodeString(unsigned char *Dest, const unsigned char *Source)
void NOKIA_DecodeSMSState(GSM_StateMachine *s, unsigned char state, GSM_SMSMessage *sms)
GSM_BinaryPicture * Picture
GSM_WAPSettings Settings[4]
void DecodeDefault(unsigned char *dest, const unsigned char *src, size_t len, gboolean UseExtensions, unsigned char *ExtraAlphabet)
GSM_Error N6510_SetFileAttributes(GSM_StateMachine *s, GSM_File *File)
GSM_Error N6510_AddFilePart(GSM_StateMachine *s, GSM_File *File, size_t *Pos, int *Handle)
GSM_Error N6510_ReplyGetToDo2(GSM_Protocol_Message *msg, GSM_StateMachine *s)
void NOKIA_SortSMSFolderStatus(GSM_StateMachine *s, GSM_NOKIASMSFolder *Folder)
GSM_Error NOKIA_SetIncomingUSSD(GSM_StateMachine *s, gboolean enable)
GSM_Error N6510_ReplyGetCalendarSettings(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_MemoryType LastFreeMemoryType
GSM_Error N6510_AddCalendar(GSM_StateMachine *s, GSM_CalendarEntry *Note)
GSM_MemoryType MemoryType
GSM_Error N6510_ReplySetFileDate2(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_Error DCT3DCT4_GetWAPBookmarkPart(GSM_StateMachine *s, GSM_WAPBookmark *bookmark)
GSM_Error N6510_ReplyDeleteFolder2(GSM_Protocol_Message *msg, GSM_StateMachine *s)
int GSM_PackSemiOctetNumber(const unsigned char *Number, unsigned char *Output, gboolean semioctet)
char Code[GSM_SECURITY_CODE_LEN+1]
GSM_ConnectionType ConnectionType
#define GSM_PHONE_MAXSMSINFOLDER
GSM_Error N6510_ReplyGetFileSystemStatus1(GSM_Protocol_Message *msg, GSM_StateMachine *s)
#define N6110_FRAME_HEADER
unsigned char NetworkName[15 *2]
GSM_Error N6510_DeleteAllToDo1(GSM_StateMachine *s)
GSM_MemoryType NOKIA_GetMemoryType(GSM_StateMachine *s, GSM_MemoryType memory_type, unsigned char *ID)
GSM_SMSMemoryStatus * SMSStatus
GSM_Error N71_65_DelCalendar(GSM_StateMachine *s, GSM_CalendarEntry *Note)
GSM_MultiSMSMessage * GetSMSMessage
unsigned char Sender[2 *(GSM_MAX_NUMBER_LENGTH+1)]
GSM_Error N6510_ReplyGetFilePart12(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_Error N6510_ReplyAddFilePart1(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_Error N6510_GetToDoStatus(GSM_StateMachine *s, GSM_ToDoStatus *status)
void NOKIA_EncodeDateTime(GSM_StateMachine *s UNUSED, unsigned char *buffer, GSM_DateTime *datetime)
GSM_Error N6510_ReplyAddFileHeader1(GSM_Protocol_Message *msg, GSM_StateMachine *s)
N6510_Connection_Settings
GSM_Error DCT4_Reset(GSM_StateMachine *s, gboolean hard)
SendSMSStatusCallback SendSMSStatus
GSM_Error GSM_DispatchMessage(GSM_StateMachine *s)
GSM_Error N6510_AddToDo(GSM_StateMachine *s, GSM_ToDoEntry *ToDo)
GSM_Error GSM_DecodeSMSFrame(GSM_Debug_Info *di, GSM_SMSMessage *SMS, unsigned char *buffer, GSM_SMSMessageLayout Layout)
GSM_Error N6510_ReplyGetNoteInfo(GSM_Protocol_Message *msg, GSM_StateMachine *s)
void PHONE_EncodeBitmap(GSM_Phone_Bitmap_Types Type, char *buffer, GSM_Bitmap *Bitmap)
GSM_Error DCT3DCT4_ReplyEnableConnectFunc(GSM_Protocol_Message *msg, GSM_StateMachine *s)
void NOKIA_FindFeatureValue(GSM_StateMachine *s, GSM_Profile_PhoneTableValue ProfileTable[], unsigned char ID, unsigned char Value, GSM_Phone_Data *Data, gboolean CallerGroups)
GSM_BinaryPicture_Types Type
GSM_NetworkInfo * NetworkInfo
GSM_OneSMSFolder Folder[GSM_MAX_SMS_FOLDERS]
GSM_Error N6510_ReplyAddFolder2(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_Error NoneReply(GSM_Protocol_Message *msg UNUSED, GSM_StateMachine *s)
GSM_Error DCT3DCT4_ReplyDisableConnectFunc(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_Error N6510_ReplyGetFileFolderInfo2(GSM_Protocol_Message *msg, GSM_StateMachine *s)
void * SendSMSStatusUserData
void GSM_SetDefaultSMSData(GSM_SMSMessage *SMS)
GSM_Error N71_65_ReplyCallInfo(GSM_Protocol_Message *msg, GSM_StateMachine *s)
size_t UnicodeLength(const unsigned char *str)
GSM_Error DCT3DCT4_EnableWAPFunctions(GSM_StateMachine *s)
GSM_Error N6510_AddFolder(GSM_StateMachine *s, GSM_File *File)
GSM_DateFormat DateFormat
GSM_MultiWAPSettings Connection
GSM_Error N71_65_ReplyAddCalendar1(GSM_Protocol_Message *msg, GSM_StateMachine *s)
void PHONE_DecodeBitmap(GSM_Phone_Bitmap_Types Type, char *buffer, GSM_Bitmap *Bitmap)
void N6510_EncodeFMFrequency(double freq, unsigned char *buff)
GSM_Error N6510_ReplyOpenFile2(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_Error DCT4_GetHardware(GSM_StateMachine *s, char *value)
GSM_Error(* WriteMessage)(GSM_StateMachine *s, unsigned const char *buffer, int length, int type)
#define NOKIA_PRESSPHONEKEY
char PhonebookDataBase[(50+1) *2]
GSM_Error NOKIA_SetIncomingCall(GSM_StateMachine *s, gboolean enable)
GSM_Error N6510_ReplyDeleteAllToDo1(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_SMSFolders LastSMSFolders
GSM_Error DCT4_GetIMEI(GSM_StateMachine *s)
GSM_ChatSettings * ChatSettings
GSM_Profile_PhoneTableValue Profile71_65[]
GSM_Error N6510_GetNextCalendar(GSM_StateMachine *s, GSM_CalendarEntry *Note, gboolean start)
GSM_Error N6510_ReplyDeleteFile2(GSM_Protocol_Message *msg, GSM_StateMachine *s)
unsigned char GSM_EncodeNokiaRTTLRingtone(GSM_Ringtone *ringtone, unsigned char *package, size_t *maxlength)
GSM_PhoneModel * ModelInfo
WAPSettings_Bearer Bearer
GSM_Error N6510_GetMMSFolders(GSM_StateMachine *s, GSM_MMSFolders *folders)
unsigned char Text[(GSM_MAX_CALENDAR_TEXT_LENGTH+1) *2]
GSM_SignalQuality * SignalQuality
GSM_Error N6510_AddNote(GSM_StateMachine *s, GSM_NoteEntry *Not)
GSM_Error DCT4_ReplyGetIMEI(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_Error N6510_GetNextFileFolder(GSM_StateMachine *s, GSM_File *File, gboolean start)
char HomePage[(200+1) *2]
GSM_Error NOKIA_GetPhoneString(GSM_StateMachine *s, const unsigned char *msgframe, int msglen, unsigned char msgtype, char *retvalue, GSM_Phone_RequestID request, int startresponse)
GSM_Error DCT3DCT4_SetActiveConnectSet(GSM_StateMachine *s, GSM_MultiWAPSettings *settings)
GSM_Error DCT3DCT4_GetFirmware(GSM_StateMachine *s)
GSM_Error DCT3DCT4_ReplySetActiveConnectSet(GSM_Protocol_Message *msg, GSM_StateMachine *s)
void GSM_ClearBatteryCharge(GSM_BatteryCharge *bat)
GSM_Error N6510_ReplyAddFolder1(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_Error N6510_GetNextMMSFileInfo(GSM_StateMachine *s, unsigned char *FileID, int *MMSFolder, gboolean start)
unsigned char DefaultNumber[(GSM_MAX_NUMBER_LENGTH+1) *2]
GSM_Error(* GetNetworkInfo)(GSM_StateMachine *s, GSM_NetworkInfo *netinfo)
void NOKIA_DecodeNetworkCode(const unsigned char *buffer, char *output)
void GSM_MakeMultiPartSMS(GSM_Debug_Info *di, GSM_MultiSMSMessage *SMS, unsigned char *MessageBuffer, size_t MessageLength, GSM_UDH UDHType, GSM_Coding_Type Coding, int Class, unsigned char ReplaceMessage)
GSM_ValidityPeriodFormat Format
#define GSM_MAX_SMS_FOLDER_NAME_LEN
GSM_Error DCT3DCT4_SetCallDivert(GSM_StateMachine *s, GSM_CallDivert *divert)
void EncodeUnicode(unsigned char *dest, const char *src, size_t len)
unsigned char Name[(GSM_MAX_SMS_NAME_LENGTH+1) *2]
GSM_Error DCT3DCT4_CancelCall(GSM_StateMachine *s, int ID)
GSM_Error N6510_ReplyGetCalendarNotePos(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_Error DCT3DCT4_DeleteWAPBookmarkPart(GSM_StateMachine *s, GSM_WAPBookmark *bookmark)
GSM_Error N6510_GetFileSystemStatus(GSM_StateMachine *s, GSM_FileSystemStatus *status)
size_t N71_65_PackPBKBlock(GSM_StateMachine *s, int id, size_t size, int no, unsigned char *buf, unsigned char *block)
unsigned int Location[GSM_PHONE_MAXSMSINFOLDER+1]
struct GSM_Phone_Data::@2 Priv
GSM_Error N6510_GetFolderListing(GSM_StateMachine *s, GSM_File *File, gboolean start)
#define GSM_MAX_FM_STATION
GSM_Error N6510_ReplyGetNote(GSM_Protocol_Message *msg, GSM_StateMachine *s)
void NOKIA_GetUnicodeString(GSM_StateMachine *s, int *current, unsigned char *input, unsigned char *output, gboolean FullLength)
GSM_Error N71_65_ReplyGetNextCalendar1(GSM_Protocol_Message *msg, GSM_StateMachine *s)
gboolean NOKIA_FindPhoneFeatureValue(GSM_StateMachine *s, GSM_Profile_PhoneTableValue ProfileTable[], GSM_Profile_Feat_ID FeatureID, GSM_Profile_Feat_Value FeatureValue, unsigned char *PhoneID, unsigned char *PhoneValue)
GSM_Error N6510_DeleteFolder(GSM_StateMachine *s, unsigned char *ID)
GSM_FMStation * FMStation
GSM_NokiaBinaryRingtone NokiaBinary
GSM_Error DCT3DCT4_DisableConnectionFunctions(GSM_StateMachine *s)
GSM_MultiWAPSettings * WAPSettings
GSM_Error N6510_GetFilesystemSMSFolders(GSM_StateMachine *s, GSM_SMSFolders *folders)
void NOKIA_GetDefaultCallerGroupName(GSM_Bitmap *Bitmap)
unsigned char N71_65_MEMORY_TYPES[]
GSM_Error GSM_WaitFor(GSM_StateMachine *s, unsigned const char *buffer, size_t length, int type, int timeout, GSM_Phone_RequestID request)
unsigned char Frame[50000]
GSM_Error N6510_GetNextFilesystemSMS(GSM_StateMachine *s, GSM_MultiSMSMessage *sms, gboolean start)
int NOKIA_SetUnicodeString(GSM_StateMachine *s, unsigned char *dest, unsigned char *string, gboolean FullLength)
GSM_SyncMLSettings * SyncMLSettings
GSM_Error N6510_ReplyGetToDoFirstLoc2(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_Error N6510_ReplyAddCalendar3(GSM_Protocol_Message *msg, GSM_StateMachine *s)
char CalendarDataBase[(50+1) *2]
GSM_MultiWAPSettings Connection
GSM_Error N6510_ReplyGetToDoStatus1(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_RingtoneInfo * Ringtone
GSM_Phone_RequestID RequestID
unsigned char Name[(GSM_MAX_SMS_FOLDER_NAME_LEN+1) *2]
GSM_Error N71_65_DecodePhonebook(GSM_StateMachine *s, GSM_MemoryEntry *entry, GSM_Bitmap *bitmap, GSM_SpeedDial *speed, unsigned char *MessageBuffer, int MessageLength, gboolean DayMonthReverse)
GSM_Error DCT3DCT4_ReplyCallDivert(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_Error N6510_GetFilePart(GSM_StateMachine *s, GSM_File *File, int *Handle, size_t *Size)
GSM_Profile_Feat_Value FeatureValue[15]
GSM_SMSMessage SMS[GSM_MAX_MULTI_SMS]
GSM_Error N71_65_ReplyAddCalendar2(GSM_Protocol_Message *msg, GSM_StateMachine *s)
unsigned char Name[(GSM_MAX_GPRS_AP_NAME_LENGTH+1) *2]
#define N7110_FRAME_HEADER
GSM_Error DCT3DCT4_ReplyDelWAPBookmark(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_AllRingtonesInfo * RingtonesInfo
unsigned char URL[(GSM_MAX_GPRS_AP_URL_LENGTH+1) *2]
GSM_BatteryCharge * BatteryCharge
GSM_NetworkInfo_State State
GSM_NOKIASMSFolder LastSMSFolder
unsigned char Number[(GSM_MAX_NUMBER_LENGTH+1) *2]
GSM_Error DCT3DCT4_CancelAllDiverts(GSM_StateMachine *s)
void NOKIA_EncodeNetworkCode(unsigned char *buffer, const char *input)
GSM_Error DCT3DCT4_ReplySetWAPBookmark(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_Error DCT3DCT4_GetCallDivert(GSM_StateMachine *s, GSM_CallDivert *reqest, GSM_MultiCallDivert *response)
unsigned char Title[(50+1) *2]
GSM_Error DCT3DCT4_GetActiveConnectSet(GSM_StateMachine *s)
GSM_Error N6510_ReplyGetToDoStatus2(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_Error N6510_ReplyAddNote(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_Error GSM_UnpackSemiOctetNumber(GSM_Debug_Info *di, unsigned char *retval, const unsigned char *Number, size_t *pos, size_t bufferlength, gboolean semioctet)
GSM_Error N71_65_EnableFunctions(GSM_StateMachine *s, const char *buff, int len)
GSM_Error N6510_GetNoteStatus(GSM_StateMachine *s, GSM_ToDoStatus *status)
int GSM_UnpackEightBitsToSeven(size_t offset, size_t in_length, size_t out_length, const unsigned char *input, unsigned char *output)
GSM_Error DCT3DCT4_ReplyGetModelFirmware(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_MemoryType MemoryType
GSM_Error N71_65_ReplyUSSDInfo(GSM_Protocol_Message *msg, GSM_StateMachine *s)
void GSM_ClearBitmap(GSM_Bitmap *bmp)
GSM_SMSFolders * SMSFolders
GSM_Error N6510_ReplyGetNoteFirstLoc(GSM_Protocol_Message *msg, GSM_StateMachine *s)
#define GSM_MAX_FMSTATION_LENGTH
gboolean GSM_IsPhoneFeatureAvailable(GSM_PhoneModel *model, GSM_Feature feature)
GSM_Error N6510_DeleteToDo2(GSM_StateMachine *s, GSM_ToDoEntry *ToDo)
unsigned char Name[30 *2]
size_t N71_65_EncodePhonebookFrame(GSM_StateMachine *s, unsigned char *req, GSM_MemoryEntry *entry, size_t *block2, gboolean DCT4, gboolean VoiceTag)
GSM_Phone_Functions * Functions
GSM_Error NOKIA_ReplyGetPhoneString(GSM_Protocol_Message *msg, GSM_StateMachine *s)
void PHONE_GetBitmapWidthHeight(GSM_Phone_Bitmap_Types Type, size_t *width, size_t *height)
GSM_Error N6510_ReplyAddToDo2(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_Error DCT4_ReplyGetPhoneMode(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_Error N6510_GetCalendarStatus(GSM_StateMachine *s, GSM_CalendarStatus *Status)
void N6510_DecodeFMFrequency(double *freq, unsigned char *buff)
void * IncomingSMSUserData
GSM_Error N6510_ReplySetAttrib2(GSM_Protocol_Message *msg, GSM_StateMachine *s)
unsigned char Text[2 *(GSM_BITMAP_TEXT_LENGTH+1)]
GSM_Error N6510_ReplyAddToDo1(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_Error N71_65_ReplyGetMemoryError(unsigned char error, GSM_StateMachine *s)
GSM_Error N6510_DeleteFile(GSM_StateMachine *s, unsigned char *ID)
void PHONE_ClearBitmap(GSM_Phone_Bitmap_Types Type, char *buffer, size_t width, size_t height)
GSM_Protocol_Functions * Functions
GSM_GPRSAccessPoint * GPRSPoint
char HomePage[(100+1) *2]
GSM_Error NOKIA_GetManufacturer(GSM_StateMachine *s)
unsigned char Address[(255+1) *2]
GSM_Error N6510_ReplyGetCalendar3(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_MemoryStatus * MemoryStatus
GSM_SecurityCodeType Type
GSM_SMSMessage * SaveSMSMessage
void NOKIA_DecodeDateTime(GSM_StateMachine *s, unsigned char *buffer, GSM_DateTime *datetime, gboolean seconds, gboolean DayMonthReverse)
GSM_Error NOKIA_SetIncomingSMS(GSM_StateMachine *s, gboolean enable)
GSM_Error N6510_GetNextRootFolder(GSM_StateMachine *s, GSM_File *File)
GSM_Error N6510_DeleteNote(GSM_StateMachine *s, GSM_NoteEntry *Not)
char StationName[(GSM_MAX_FMSTATION_LENGTH+1) *2]
GSM_Error DCT3DCT4_ReplyGetWAPBookmark(GSM_Protocol_Message *msg, GSM_StateMachine *s, gboolean FullLength)
gboolean EnableIncomingSMS
GSM_Error PHONE_EncodeSMSFrame(GSM_StateMachine *s, GSM_SMSMessage *SMS, unsigned char *buffer, GSM_SMSMessageLayout Layout, int *length, gboolean clear)
GSM_Error N6510_GetCalendarSettings(GSM_StateMachine *s, GSM_CalendarSettings *settings)
GSM_Error N6510_GetNextToDo(GSM_StateMachine *s, GSM_ToDoEntry *ToDo, gboolean refresh)
GSM_Error DCT3DCT4_AnswerCall(GSM_StateMachine *s, int ID)
GSM_ValidityPeriod Relative
GSM_SpeedDial * SpeedDial
IncomingSMSCallback IncomingSMS
GSM_Error N71_65_ReplySendDTMF(GSM_Protocol_Message *msg, GSM_StateMachine *s)
unsigned char * PhoneString
GSM_Error N6510_ReplyGetToDo1(GSM_Protocol_Message *msg, GSM_StateMachine *s)
GSM_Error DCT4_GetProductCode(GSM_StateMachine *s, char *value)
GSM_Error DCT3DCT4_SendDTMF(GSM_StateMachine *s, char *sequence)
int smprintf(GSM_StateMachine *s, const char *format,...)
#define GSM_MAX_SMSC_NAME_LENGTH
GSM_Error N71_65_ReplyWritePhonebook(GSM_Protocol_Message *msg, GSM_StateMachine *s)
unsigned char Name[(GSM_MAX_SMSC_NAME_LENGTH+1) *2]