http://marcin-wiacek.fkn.pl/english/zips/mygnokii.tar.gz
[gnokii.git] / common / newmodules / n6110.c
index d067fed..59fe5a9 100644 (file)
@@ -685,8 +685,8 @@ void N6110_ReplyCallDivert(u16 MessageLength, u8 *MessageBuffer, u8 MessageType)
 
   case 0x02:
 
-#ifdef DEBUG
-    fprintf(stdout, _("Message: Call divert status received\n"));
+#ifdef DEBUG\r
+    fprintf(stdout, _("Message: Call divert status received\n"));\r
     fprintf(stdout, _("   Divert type: "));
     switch (MessageBuffer[6]) {
       case 0x43: fprintf(stdout, _("when busy"));break;
@@ -716,34 +716,35 @@ void N6110_ReplyCallDivert(u16 MessageLength, u8 *MessageBuffer, u8 MessageType)
       fprintf(stdout, _("   Status     : deactivated\n"));     
     }
 #endif /* DEBUG */
-    switch (MessageBuffer[6]) {
-      case 0x43: CurrentCallDivert->DType=GSM_CDV_Busy;break;
-      case 0x3d: CurrentCallDivert->DType=GSM_CDV_NoAnswer;break;
-      case 0x3e: CurrentCallDivert->DType=GSM_CDV_OutOfReach;break;
-      case 0x15: CurrentCallDivert->DType=GSM_CDV_AllTypes;break; //?
-      case 0x02: CurrentCallDivert->DType=GSM_CDV_AllTypes;break; //?
-    }
 
-    if (MessageBuffer[6]==0x02) //?
-      CurrentCallDivert->CType=GSM_CDV_AllCalls;
-    else {
-      switch (MessageBuffer[8]) {
-        case 0x0b: CurrentCallDivert->CType=GSM_CDV_VoiceCalls;break;
-        case 0x0d: CurrentCallDivert->CType=GSM_CDV_FaxCalls;  break;
-        case 0x19: CurrentCallDivert->CType=GSM_CDV_DataCalls; break;
+    if (CurrentCallDivert!=NULL) { 
+      switch (MessageBuffer[6]) {
+        case 0x43: CurrentCallDivert->DType=GSM_CDV_Busy;break;
+        case 0x3d: CurrentCallDivert->DType=GSM_CDV_NoAnswer;break;
+        case 0x3e: CurrentCallDivert->DType=GSM_CDV_OutOfReach;break;
+        case 0x15: CurrentCallDivert->DType=GSM_CDV_AllTypes;break; //?
+        case 0x02: CurrentCallDivert->DType=GSM_CDV_AllTypes;break; //?
       }
-    }
 
-    if (MessageBuffer[10]==0x01) {
-      CurrentCallDivert->Enabled=true;
-      CurrentCallDivert->Timeout=MessageBuffer[45];
-      strcpy(CurrentCallDivert->Number,GSM_UnpackSemiOctetNumber(MessageBuffer+12,true));
-    } else {
-      CurrentCallDivert->Enabled=false;
-    }
+      if (MessageBuffer[6]==0x02) //?
+        CurrentCallDivert->CType=GSM_CDV_AllCalls;
+      else {
+        switch (MessageBuffer[8]) {
+          case 0x0b: CurrentCallDivert->CType=GSM_CDV_VoiceCalls;break;
+          case 0x0d: CurrentCallDivert->CType=GSM_CDV_FaxCalls;  break;
+          case 0x19: CurrentCallDivert->CType=GSM_CDV_DataCalls; break;
+        }
+      }
 
-    CurrentCallDivertError=GE_NONE;\r
+      if (MessageBuffer[10]==0x01) {
+        CurrentCallDivert->Enabled=true;
+        CurrentCallDivert->Timeout=MessageBuffer[45];
+        strcpy(CurrentCallDivert->Number,GSM_UnpackSemiOctetNumber(MessageBuffer+12,true));
+      } else {
+        CurrentCallDivert->Enabled=false;
+      }
+      CurrentCallDivertError=GE_NONE;\r
+    }
     break;
 
   case 0x03:\r
@@ -2468,7 +2469,9 @@ GSM_Error N6110_DialData(char *Number, char type, void (* callpassup)(char c))
                break;
        case 1:
                Protocol->SendMessage(sizeof(req3), 0x01, req3);
+               usleep(1000000);\r
                Protocol->SendMessage(sizeof(req4), 0x01, req4);
+               usleep(1000000);
                req_end = req_end1;
                size = sizeof(req_end1);
                break;
@@ -2488,8 +2491,13 @@ GSM_Error N6110_DialData(char *Number, char type, void (* callpassup)(char c))
 
        memcpy(req + 5 + strlen(Number), req_end, size);
 
-       Protocol->SendMessage(5 + size + strlen(Number), 0x01, req);
-       if (type != 1) Protocol->SendMessage(26, 0x01, req2);
+       Protocol->SendMessage(5 + size + strlen(Number), 0x01, req);\r
+        usleep(1000000);\r
+\r
+       if (type != 1) {\r
+          Protocol->SendMessage(26, 0x01, req2);
+         usleep(1000000);\r
+        }
 
        return (GE_NONE);
 }
@@ -3136,7 +3144,8 @@ void N6110_ReplyGetMemoryLocation(u16 MessageLength, u8 *MessageBuffer, u8 Messa
     while (N6110_GetModel(model)  != GE_NONE)\r
       sleep(1);\r
         \r
-    if (GetModelFeature (FN_PHONEBOOK)==F_PBK33) {//pbk with Unicode\r
+    if (GetModelFeature (FN_PHONEBOOK)==F_PBK33SIM ||\r
+        GetModelFeature (FN_PHONEBOOK)==F_PBK33INT) {//pbk with Unicode\r
       DecodeUnicode (CurrentPhonebookEntry->Name, MessageBuffer+6, count/2);\r
       CurrentPhonebookEntry->Name[count/2] = 0x00;\r
     } else {\r
@@ -3148,7 +3157,8 @@ void N6110_ReplyGetMemoryLocation(u16 MessageLength, u8 *MessageBuffer, u8 Messa
 \r
     for (tmp=0; tmp <count; tmp++)\r
     {\r
-      if (GetModelFeature (FN_PHONEBOOK)==F_PBK33) {//pbk with Unicode\r
+      if (GetModelFeature (FN_PHONEBOOK)==F_PBK33INT ||\r
+          GetModelFeature (FN_PHONEBOOK)==F_PBK33SIM) {//pbk with Unicode\r
         /* We check only 1'st, 3'rd, ... char */\r
         if (tmp%2!=0 && MessageBuffer[6+tmp]==1) CurrentPhonebookEntry->Name[tmp/2]='~'; //enables/disables blinking\r
         if (tmp%2!=0 && MessageBuffer[6+tmp]==0) CurrentPhonebookEntry->Name[tmp/2]='`'; //hides rest ot contents\r
@@ -3305,7 +3315,8 @@ GSM_Error N6110_WritePhonebookLocation(GSM_PhonebookEntry *entry)
 \r
   current=7;\r
 \r
-  if (GetModelFeature (FN_PHONEBOOK)==F_PBK33) {\r
+  if (GetModelFeature (FN_PHONEBOOK)==F_PBK33INT ||\r
+      GetModelFeature (FN_PHONEBOOK)==F_PBK33SIM) {\r
 \r
      req[6] = strlen(entry->Name)*2;\r
 \r
@@ -4789,7 +4800,7 @@ void N6110_Dispatch0x03Message(u16 MessageLength, u8 *MessageBuffer, u8 MessageT
        CurrentGetBitmap->width=MessageBuffer[count++];\r
         CurrentGetBitmap->height=MessageBuffer[count++];\r
        count++;\r
-       tmp=CurrentGetBitmap->height*CurrentGetBitmap->width/8;\r
+       tmp=GSM_GetBitmapSize(CurrentGetBitmap);\r
        if (CurrentGetBitmap->size>tmp) CurrentGetBitmap->size=tmp;\r
        memcpy(CurrentGetBitmap->bitmap,MessageBuffer+count,CurrentGetBitmap->size);\r
        CurrentGetBitmapError=GE_NONE;\r
@@ -4873,10 +4884,11 @@ void N6110_Dispatch0x05Message(u16 MessageLength, u8 *MessageBuffer, u8 MessageT
           if (CurrentGetBitmap->type==GSM_StartupLogo) {\r
             CurrentGetBitmap->height=MessageBuffer[count++];\r
            CurrentGetBitmap->width=MessageBuffer[count++];\r
-           CurrentGetBitmap->size=CurrentGetBitmap->height*CurrentGetBitmap->width/8;\r
+           CurrentGetBitmap->size=GSM_GetBitmapSize(CurrentGetBitmap);\r
            length=CurrentGetBitmap->size;\r
            memcpy(CurrentGetBitmap->bitmap,MessageBuffer+count,length);\r
           } else {\r
+            //bitmap size\r
            length=MessageBuffer[count++];\r
            length=length*MessageBuffer[count++]/8;\r
          }\r
@@ -4991,7 +5003,7 @@ void N6110_Dispatch0x05Message(u16 MessageLength, u8 *MessageBuffer, u8 MessageT
       CurrentGetBitmap->width=MessageBuffer[count++];\r
       CurrentGetBitmap->height=MessageBuffer[count++];\r
       count++;\r
-      tmp=CurrentGetBitmap->height*CurrentGetBitmap->width/8;\r
+      tmp=GSM_GetBitmapSize(CurrentGetBitmap);\r
       if (CurrentGetBitmap->size>tmp) CurrentGetBitmap->size=tmp;\r
       memcpy(CurrentGetBitmap->bitmap,MessageBuffer+count,CurrentGetBitmap->size);\r
       CurrentGetBitmapError=GE_NONE;\r
@@ -5235,7 +5247,7 @@ void N6110_Dispatch0x47Message(u16 MessageLength, u8 *MessageBuffer, u8 MessageT
 \r
     CurrentGetBitmap->width=MessageBuffer[count+1];\r
     CurrentGetBitmap->height=MessageBuffer[count+2]; \r
-    CurrentGetBitmap->size=CurrentGetBitmap->height*CurrentGetBitmap->width/8;\r
+    CurrentGetBitmap->size=GSM_GetBitmapSize(CurrentGetBitmap);\r
       \r
     memcpy(CurrentGetBitmap->bitmap,MessageBuffer+count+4,CurrentGetBitmap->size);\r
       \r