http://marcin-wiacek.fkn.pl/english/zips/mygnokii.tar.gz
[gnokii.git] / common / gsm-api.c
index 99b73d7..5a91da9 100644 (file)
@@ -327,6 +327,7 @@ GSM_Error GSM_Initialise(char *model, char *device, char *initlength, GSM_Connec
 
   CurrentRLP_RXCallback = rlp_callback;
   CurrentCallPassup=NULL;
+  CurrentCallDivert=NULL;
   CurrentPhonebookEntry=NULL;
   CurrentNetworkInfo = NULL;
   CurrentGetBitmap=NULL;
@@ -337,6 +338,7 @@ GSM_Error GSM_Initialise(char *model, char *device, char *initlength, GSM_Connec
   CurrentRequestTerminate=false;
   CurrentDisableKeepAlive=false;
   CurrentCalendarNotesInfo.HowMany=2000;
+  CurrentSMSMessage=NULL;
   CurrentMagicError = GE_BUSY;  
   
   if (!strcmp(model,"auto")) {
@@ -408,39 +410,14 @@ GSM_Error GSM_Initialise(char *model, char *device, char *initlength, GSM_Connec
     usleep(50);
         
   } else {
-#ifdef DEBUG
-    if (CheckModel (Nsniff_Information, model, connection)) {
-      /* Set pointers to relevant addresses */
-      GSM = &Nsniff_Functions;
-      GSM_Info = &Nsniff_Information;
-      GSM_LinkOK = &CurrentLinkOK;
-      found_match=true;
-    }
-#endif
-
-    if (CheckModel (N6110_Information, model, connection)) {
-      /* Set pointers to relevant addresses */
+    if (!strcmp(model,"modelauto")) {
+      /* For now */
       GSM = &N6110_Functions;
       GSM_Info = &N6110_Information;
       GSM_LinkOK = &CurrentLinkOK;
-      found_match=true;
-    }
-    if (CheckModel (N7110_Information, model, connection)) {
-      /* Set pointers to relevant addresses */
-      GSM = &N7110_Functions;
-      GSM_Info = &N7110_Information;
-      GSM_LinkOK = &CurrentLinkOK;
-      found_match=true;
-    }
-    if (CheckModel (Nat_Information, model, connection)) {
-      /* Set pointers to relevant addresses */
-      GSM = &Nat_Functions;
-      GSM_Info = &Nat_Information;
-      GSM_LinkOK = &CurrentLinkOK;
-      found_match=true;
-    }
-
-    if (found_match) {
+#ifdef DEBUG
+      fprintf(stdout,_("Trying to find connected model...\n"));
+#endif
       switch (connection) {
         case GCT_FBUS    : Protocol = &FBUS_Functions;    break;
         case GCT_Infrared: Protocol = &FBUS_Functions;    break;
@@ -451,8 +428,66 @@ GSM_Error GSM_Initialise(char *model, char *device, char *initlength, GSM_Connec
         case GCT_AT      : Protocol = &AT_Functions;      break;
         case GCT_Default : Protocol = NULL;               break;
       }
-    } else
-      return GE_NOTSUPPORTED;
+      CurrentConnectionType=connection;    
+      connection2=connection;
+      if (TryNewNokia(model,device,initlength,CurrentConnectionType,rlp_callback)==GE_NONE)
+      {
+        found_match=true;
+      } else {
+        GSM->Terminate();      
+      }
+
+      if (!found_match) return GE_NOTSUPPORTED;
+
+      usleep(50);
+
+    } else {
+#ifdef DEBUG
+      if (CheckModel (Nsniff_Information, model, connection)) {
+        /* Set pointers to relevant addresses */
+        GSM = &Nsniff_Functions;
+        GSM_Info = &Nsniff_Information;
+        GSM_LinkOK = &CurrentLinkOK;
+        found_match=true;
+      }
+#endif
+
+      if (CheckModel (N6110_Information, model, connection)) {
+        /* Set pointers to relevant addresses */
+        GSM = &N6110_Functions;
+        GSM_Info = &N6110_Information;
+        GSM_LinkOK = &CurrentLinkOK;
+        found_match=true;
+      }
+      if (CheckModel (N7110_Information, model, connection)) {
+        /* Set pointers to relevant addresses */
+        GSM = &N7110_Functions;
+        GSM_Info = &N7110_Information;
+        GSM_LinkOK = &CurrentLinkOK;
+        found_match=true;
+      }
+      if (CheckModel (Nat_Information, model, connection)) {
+        /* Set pointers to relevant addresses */
+        GSM = &Nat_Functions;
+        GSM_Info = &Nat_Information;
+        GSM_LinkOK = &CurrentLinkOK;
+        found_match=true;
+      }
+
+      if (found_match) {
+        switch (connection) {
+          case GCT_FBUS    : Protocol = &FBUS_Functions;    break;
+          case GCT_Infrared: Protocol = &FBUS_Functions;    break;
+          case GCT_Tekram  : Protocol = &FBUS_Functions;    break;
+          case GCT_DLR3    : Protocol = &FBUS_Functions;    break;
+          case GCT_MBUS    : Protocol = &MBUS_Functions;    break;
+          case GCT_Irda    : Protocol = &FBUSIRDA_Functions;break;
+          case GCT_AT      : Protocol = &AT_Functions;      break;
+          case GCT_Default : Protocol = NULL;               break;
+        }
+      } else
+        return GE_NOTSUPPORTED;
+    }
   }
 
     
@@ -668,30 +703,30 @@ char *GetMygnokiiVersion() {
 1.Name,2.CodeName,3.Calendar,4.Netmonitor,5.Caller groups,6.Phonebook,
 7.Authentication 8.Datacalls 9.KeysPressing 10.SMSC Default Recipient
 11.SpeedDials 12.ScreenSavers 13.DTMF 14.SMS 15.NoPowerFrame 16.StartUpLogo
-17.Profiles 18.Ringtones 19.WAP
+17.Profiles 18.Ringtones 19.WAP 20.RIngtonesNumber
 */
 
 static OnePhoneModel allmodels[] = {
 
-/*1,    2,       3,      4,       5,        6       7      8        9      10        11      12       13     14      15        16       17       18        19 */
-{"3210","NSE-8",{      0,F_NETMON,        0,      0,     0,       0,     0,F_SMSCDEF,F_SPEED,       0,     0,F_SMS  ,F_NOPOWER,F_STANIM,F_PROF51,F_RINGBIN,    0}},
-{"3210","NSE-9",{      0,F_NETMON,        0,      0,     0,       0,     0,F_SMSCDEF,F_SPEED,       0,     0,F_SMS  ,F_NOPOWER,F_STANIM,F_PROF51,F_RINGBIN,    0}},
-{"3310","NHM-5",{F_CAL33,F_NETMON,        0,F_PBK33,     0,       0,     0,F_SMSCDEF,F_SPEED,F_SCRSAV,     0,F_SMS  ,F_NOPOWER,F_STANIM,F_PROF33,F_RING_SM,    0}},
-{"3330","NHM-6",{F_CAL33,F_NETMON,        0,F_PBK33,     0,       0,F_KEYB,F_SMSCDEF,F_SPEED,F_SCRSAV,     0,F_SMS  ,        0,F_STANIM,F_PROF33,F_RING_SM,F_WAP}},
-{"5110","NSE-1",{      0,F_NETMON,        0,      0,F_AUTH,F_DATA61,F_KEYB,F_SMSCDEF,F_SPEED,       0,F_DTMF,F_SMS  ,        0,       0,F_PROF51,        0,    0}},
-{"5130","NSK-1",{      0,F_NETMON,        0,      0,F_AUTH,F_DATA61,F_KEYB,F_SMSCDEF,F_SPEED,       0,F_DTMF,F_SMS  ,        0,       0,F_PROF51,        0,    0}},
-{"5190","NSB-1",{      0,F_NETMON,        0,      0,F_AUTH,F_DATA61,F_KEYB,F_SMSCDEF,F_SPEED,       0,F_DTMF,F_SMS  ,        0,       0,F_PROF51,        0,    0}},
-{"6110","NSE-3",{F_CAL61,F_NETMON,F_CALER61,      0,F_AUTH,F_DATA61,F_KEYB,F_SMSCDEF,F_SPEED,       0,F_DTMF,F_SMS  ,        0,F_STA   ,F_PROF61,F_RINGBIN,    0}},
-{"6130","NSK-3",{F_CAL61,F_NETMON,F_CALER61,      0,F_AUTH,F_DATA61,F_KEYB,F_SMSCDEF,F_SPEED,       0,F_DTMF,F_SMS  ,        0,F_STA   ,F_PROF61,F_RINGBIN,    0}},
-{"6150","NSM-1",{F_CAL61,F_NETMON,F_CALER61,      0,F_AUTH,F_DATA61,F_KEYB,F_SMSCDEF,F_SPEED,       0,F_DTMF,F_SMS  ,        0,F_STA   ,F_PROF61,F_RINGBIN,    0}},
-{"6190","NSB-3",{F_CAL61,F_NETMON,F_CALER61,      0,F_AUTH,F_DATA61,F_KEYB,F_SMSCDEF,F_SPEED,       0,F_DTMF,F_SMS  ,        0,F_STA   ,F_PROF61,F_RINGBIN,    0}},
-{"6210","NPE-3",{F_CAL71,F_NETMON,F_CALER61,F_PBK71,     0,F_DATA71,     0,F_SMSCDEF,F_SPEED,       0,     0,F_SMS71,        0,F_STA62 ,F_PROF61,F_RINGBIN,F_WAP}},
-{"6250","NHM-3",{F_CAL71,F_NETMON,F_CALER61,F_PBK71,     0,F_DATA71,     0,F_SMSCDEF,F_SPEED,       0,     0,F_SMS71,        0,F_STA62 ,F_PROF61,F_RINGBIN,F_WAP}},    
-{"7110","NSE-5",{F_CAL71,F_NETMON,F_CALER61,F_PBK71,     0,F_DATA71,     0,F_SMSCDEF,F_SPEED,       0,     0,F_SMS71,        0,F_STA71 ,F_PROF61,F_RINGBIN,F_WAP}},
-{"8210","NSM-3",{      0,F_NETMON,F_CALER61,      0,     0,F_DATA61,F_KEYB,F_SMSCDEF,F_SPEED,       0,F_DTMF,F_SMS  ,        0,F_STA   ,F_PROF61,F_RINGBIN,    0}},
-{"8850","NSM-2",{      0,F_NETMON,F_CALER61,      0,     0,F_DATA61,F_KEYB,F_SMSCDEF,F_SPEED,       0,F_DTMF,F_SMS  ,        0,F_STA   ,F_PROF61,F_RINGBIN,    0}},
-{"9210","RAE-3",{      0,F_NETMON,F_CALER61,      0,     0,F_DATA61,F_KEYB,F_SMSCDEF,F_SPEED,       0,F_DTMF,F_SMS  ,        0,F_STA   ,F_PROF61,F_RINGBIN,    0}},//quesses only !
-{""    ,""     ,{      0,       0,        0,      0,     0,       0,     0,        0,      0,       0,     0,      0,        0,       0,       0,        0,    0}}
+/*1,    2,       3,      4,       5,        6          7      8        9      10        11      12       13     14      15        16       17       18        19    20 */
+{"3210","NSE-8",{      0,F_NETMON,        0,         0,     0,       0,     0,F_SMSCDEF,F_SPEED,       0,     0,F_SMS  ,F_NOPOWER,F_STANIM,F_PROF51,F_RINGBIN,    0, 2}},
+{"3210","NSE-9",{      0,F_NETMON,        0,         0,     0,       0,     0,F_SMSCDEF,F_SPEED,       0,     0,F_SMS  ,F_NOPOWER,F_STANIM,F_PROF51,F_RINGBIN,    0, 2}},
+{"3310","NHM-5",{F_CAL33,F_NETMON,        0,F_PBK33SIM,     0,       0,     0,F_SMSCDEF,F_SPEED,F_SCRSAV,     0,F_SMS  ,F_NOPOWER,F_STANIM,F_PROF33,F_RING_SM,    0, 7}},
+{"3330","NHM-6",{F_CAL33,F_NETMON,        0,F_PBK33INT,     0,       0,F_KEYB,F_SMSCDEF,F_SPEED,F_SCRSAV,     0,F_SMS  ,        0,F_STANIM,F_PROF33,F_RING_SM,F_WAP, 7}},
+{"5110","NSE-1",{      0,F_NETMON,        0,         0,F_AUTH,F_DATA61,F_KEYB,F_SMSCDEF,F_SPEED,       0,F_DTMF,F_SMS  ,        0,       0,F_PROF51,        0,    0, 0}},
+{"5130","NSK-1",{      0,F_NETMON,        0,         0,F_AUTH,F_DATA61,F_KEYB,F_SMSCDEF,F_SPEED,       0,F_DTMF,F_SMS  ,        0,       0,F_PROF51,        0,    0, 0}},
+{"5190","NSB-1",{      0,F_NETMON,        0,         0,F_AUTH,F_DATA61,F_KEYB,F_SMSCDEF,F_SPEED,       0,F_DTMF,F_SMS  ,        0,       0,F_PROF51,        0,    0, 0}},
+{"6110","NSE-3",{F_CAL61,F_NETMON,F_CALER61,F_PBK61INT,F_AUTH,F_DATA61,F_KEYB,F_SMSCDEF,F_SPEED,       0,F_DTMF,F_SMS  ,        0,F_STA   ,F_PROF61,F_RINGBIN,    0, 1}},
+{"6130","NSK-3",{F_CAL61,F_NETMON,F_CALER61,F_PBK61INT,F_AUTH,F_DATA61,F_KEYB,F_SMSCDEF,F_SPEED,       0,F_DTMF,F_SMS  ,        0,F_STA   ,F_PROF61,F_RINGBIN,    0, 1}},
+{"6150","NSM-1",{F_CAL61,F_NETMON,F_CALER61,F_PBK61INT,F_AUTH,F_DATA61,F_KEYB,F_SMSCDEF,F_SPEED,       0,F_DTMF,F_SMS  ,        0,F_STA   ,F_PROF61,F_RINGBIN,    0, 1}},
+{"6190","NSB-3",{F_CAL61,F_NETMON,F_CALER61,F_PBK61INT,F_AUTH,F_DATA61,F_KEYB,F_SMSCDEF,F_SPEED,       0,F_DTMF,F_SMS  ,        0,F_STA   ,F_PROF61,F_RINGBIN,    0, 1}},
+{"6210","NPE-3",{F_CAL71,F_NETMON,F_CALER61,F_PBK71INT,     0,F_DATA71,     0,F_SMSCDEF,F_SPEED,       0,     0,F_SMS71,        0,F_STA62 ,F_PROF61,F_RINGBIN,F_WAP, 5}},
+{"6250","NHM-3",{F_CAL71,F_NETMON,F_CALER61,F_PBK71INT,     0,F_DATA71,     0,F_SMSCDEF,F_SPEED,       0,     0,F_SMS71,        0,F_STA62 ,F_PROF61,F_RINGBIN,F_WAP, 5}},      
+{"7110","NSE-5",{F_CAL71,F_NETMON,F_CALER61,F_PBK71INT,     0,F_DATA71,     0,F_SMSCDEF,F_SPEED,       0,     0,F_SMS71,        0,F_STA71 ,F_PROF61,F_RINGBIN,F_WAP, 5}},
+{"8210","NSM-3",{      0,F_NETMON,F_CALER61,F_PBK61INT,     0,F_DATA61,F_KEYB,F_SMSCDEF,F_SPEED,       0,F_DTMF,F_SMS  ,        0,F_STA   ,F_PROF61,F_RINGBIN,    0, 1}},
+{"8850","NSM-2",{      0,F_NETMON,F_CALER61,F_PBK61INT,     0,F_DATA61,F_KEYB,F_SMSCDEF,F_SPEED,       0,F_DTMF,F_SMS  ,        0,F_STA   ,F_PROF61,F_RINGBIN,    0, 1}},
+{"9210","RAE-3",{      0,F_NETMON,F_CALER61,         0,     0,F_DATA61,F_KEYB,F_SMSCDEF,F_SPEED,       0,F_DTMF,F_SMS  ,        0,F_STA   ,F_PROF61,F_RINGBIN,    0, 0}},//quesses only !
+{""    ,""     ,{      0,       0,        0,         0,     0,       0,     0,        0,      0,       0,     0,      0,        0,       0,       0,        0,    0, 0}}
 };
 
 OnePhoneModel *GetPhoneModelData (const char *num)