This commit was manufactured by cvs2svn to create tag
[gnokii.git] / common / gsm-api.c
index 229232d..3c090a0 100644 (file)
@@ -18,8 +18,6 @@
 
 */
 
-#include "config.h"
-
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
@@ -32,7 +30,7 @@
 
 #include "gsm-api.h"
 
-#ifndef UCLINUX
+#include "newmodules/n3110.h"
 #include "newmodules/n6110.h"
 #include "newmodules/n7110.h"
 #include "newmodules/newat.h"
   #include "newmodules/sniff/sniff.h"
 #endif
 #include "protocol/fbusirda.h"
-#endif /* UCLINUX */
 #include "protocol/fbus.h"
-#ifndef UCLINUX
+#include "protocol/fbus3110.h"
 #include "protocol/mbus.h"
 #include "protocol/at.h"
-#endif /* UCLINUX */
 #include "files/cfgreader.h"
 
 #ifndef WIN32
@@ -94,7 +90,6 @@ unsigned char      Current_IMEI[GSM_MAX_IMEI_LENGTH];
 unsigned char      Current_Revision[GSM_MAX_REVISION_LENGTH];
 unsigned char      Current_Model[GSM_MAX_MODEL_LENGTH];
 
-#ifndef UCLINUX
 GSM_SMSMessage     *CurrentSMSMessage;
 GSM_Error          CurrentSMSMessageError;
 int                CurrentSMSPointer;
@@ -106,12 +101,10 @@ int                CurrentSMSFoldersCount;
 GSM_OneSMSFolder   CurrentSMSFolder;
 GSM_Error          CurrentSMSFolderError;
 int                CurrentSMSFolderID;
-#endif /* UCLINUX */
 
 GSM_MemoryStatus   *CurrentMemoryStatus;
 GSM_Error          CurrentMemoryStatusError;
 
-#ifndef UCLINUX
 GSM_NetworkInfo    *CurrentNetworkInfo;
 GSM_Error          CurrentNetworkInfoError;
 
@@ -128,8 +121,6 @@ GSM_SecurityCode   *CurrentSecurityCode;
 GSM_DateTime       *CurrentDateTime;
 GSM_Error          CurrentDateTimeError;
 
-GSM_Error          CurrentResetPhoneSettingsError;
-
 GSM_DateTime       *CurrentAlarm;
 GSM_Error          CurrentAlarmError;
 
@@ -142,20 +133,17 @@ GSM_Error          CurrentCalendarNotesInfoError;
 GSM_Error          CurrentSetDateTimeError;
 GSM_Error          CurrentSetAlarmError;
 
-int                *CurrentFirstCalendarFreePos;
-GSM_Error          CurrentFirstCalendarFreePosError;
-#endif /* UCLINUX */
-
 GSM_Error          CurrentEnableExtendedCommandsError;
 
 int                CurrentRFLevel,
                    CurrentBatteryLevel,
                    CurrentPowerSource;
 
-#ifndef UCLINUX
 int                CurrentDisplayStatus;
 GSM_Error          CurrentDisplayStatusError;
 
+GSM_Error          CurrentResetPhoneSettingsError;
+
 char               *CurrentNetmonitor;
 GSM_Error          CurrentNetmonitorError;
 
@@ -178,21 +166,17 @@ int                CurrentPressKeyEvent;
 GSM_Error          CurrentPressKeyError;
 
 GSM_Error          CurrentPlayToneError=GE_UNKNOWN;
-#endif /* UCLINUX */
 
 GSM_Error          CurrentDialVoiceError;
 
-#ifndef UCLINUX
 GSM_Error          CurrentGetOperatorNameError;
 GSM_Network        *CurrentGetOperatorNameNetwork;
 GSM_Error          CurrentSetOperatorNameError;
-#endif /* UCLINUX */
 
 GSM_Error          CurrentGetIMEIError;
 
 GSM_Error          CurrentGetHWError;
 
-#ifndef UCLINUX
 unsigned char      CurrentPPS[4];
 GSM_Error          CurrentProductProfileSettingsError;
 
@@ -202,11 +186,9 @@ GSM_Error          CurrentBinRingtoneError;
 GSM_BinRingtone    *CurrentGetBinRingtone=NULL;
 
 GSM_Error          CurrentRingtoneError;
-#endif /* UCLINUX */
 
 GSM_Error          CurrentMagicError;
 
-#ifndef UCLINUX
 GSM_Error          CurrentSimlockInfoError;
 GSM_AllSimlocks    *CurrentSimLock;
 
@@ -221,7 +203,6 @@ GSM_Error          CurrentCallDivertError;
 GSM_CallDivert    *CurrentCallDivert;
 
 char              *CurrentManufacturer;
-#endif /* UCLINUX */
 
 /* This is the connection type used in gnokii. */
 GSM_ConnectionType CurrentConnectionType;
@@ -241,13 +222,8 @@ bool CurrentLinkOK;
 
 bool CurrentRequestTerminate;
 
-#ifndef UCLINUX
 bool CurrentDisableKeepAlive;
-#endif /* UCLINUX */
 
-#ifdef UCLINUX
-static
-#endif /* UCLINUX */
 bool CheckModel (GSM_Information InfoToCheck, char *model, GSM_ConnectionType connection) {
 
   bool found_match=false;
@@ -255,7 +231,6 @@ bool CheckModel (GSM_Information InfoToCheck, char *model, GSM_ConnectionType co
   if (strstr(InfoToCheck.FBUSModels, model) != NULL) {
     if (connection==GCT_FBUS) found_match=true;
   }
-#ifndef UCLINUX
   if (strstr(InfoToCheck.MBUSModels, model) != NULL) {
     if (connection==GCT_MBUS) found_match=true;
   }
@@ -274,13 +249,13 @@ bool CheckModel (GSM_Information InfoToCheck, char *model, GSM_ConnectionType co
   if (strstr(InfoToCheck.TekramModels, model) != NULL) {
     if (connection==GCT_Tekram) found_match=true;
   }
-#endif /* UCLINUX */
+  if (strstr(InfoToCheck.FBUS3110Models, model) != NULL) {
+    if (connection==GCT_FBUS3110) found_match=true;
+  }
 
   return found_match;
 }
  
-#ifndef UCLINUX
-
 GSM_Error TryNewNokia(char *model, char *device, char *initlength, GSM_ConnectionType connection, void (*rlp_callback)(RLP_F96Frame *frame)) {
   int InitLength;
   int count;
@@ -328,8 +303,8 @@ GSM_Error TryNewNokia(char *model, char *device, char *initlength, GSM_Connectio
   while (N6110_GetModel(phonemodel) != GE_NONE)
     sleep(1);
 
-#ifndef UCLINUX
-  if (!strcmp(phonemodel,"NPE-3") || !strcmp(phonemodel,"NSE-5"))
+  if (!strcmp(phonemodel,"NPE-3") || !strcmp(phonemodel,"NSE-5") || 
+      !strcmp(phonemodel,"NHM-3"))
   {
     GSM->Terminate();      
     
@@ -339,14 +314,9 @@ GSM_Error TryNewNokia(char *model, char *device, char *initlength, GSM_Connectio
     GSM_LinkOK = &CurrentLinkOK;
     return GE_NONE;
   }
-#endif /* UCLINUX */
 
   return GE_NONE;
 }
-#endif /* UCLINUX */
-
-extern GSM_Information N6110_Information;
-extern GSM_Functions   N6110_Functions;
 
 GSM_Error GSM_Initialise(char *model, char *device, char *initlength, GSM_ConnectionType connection, void (*rlp_callback)(RLP_F96Frame *frame), char* SynchronizeTime)
 {
@@ -354,34 +324,29 @@ GSM_Error GSM_Initialise(char *model, char *device, char *initlength, GSM_Connec
   
   GSM_ConnectionType connection2;
 
-#ifndef UCLINUX
   struct tm *now;
   time_t nowh;
   GSM_DateTime Date;
-#endif /* UCLINUX */
   GSM_Error error;
   
   connection2=connection;
 
   CurrentRLP_RXCallback = rlp_callback;
   CurrentCallPassup=NULL;
+  CurrentCallDivert=NULL;
   CurrentPhonebookEntry=NULL;
-#ifndef UCLINUX
   CurrentNetworkInfo = NULL;
   CurrentGetBitmap=NULL;
   CurrentPlayToneError=GE_UNKNOWN;
   strcpy(CurrentIncomingCall," ");
   CurrentGetBinRingtone=NULL;
   CurrentNetworkInfo=NULL;
-#endif /* UCLINUX */
   CurrentRequestTerminate=false;
-#ifndef UCLINUX
   CurrentDisableKeepAlive=false;
   CurrentCalendarNotesInfo.HowMany=2000;
-#endif /* UCLINUX */
+  CurrentSMSMessage=NULL;
   CurrentMagicError = GE_BUSY;  
   
-#ifndef UCLINUX
   if (!strcmp(model,"auto")) {
 
     /* For now */
@@ -438,13 +403,10 @@ GSM_Error GSM_Initialise(char *model, char *device, char *initlength, GSM_Connec
       Protocol = &MBUS_Functions;
       CurrentConnectionType=GCT_MBUS;    
       connection2=GCT_MBUS;
-#ifndef UCLINUX
       if (TryNewNokia(model,device,initlength,CurrentConnectionType,rlp_callback)==GE_NONE)
       {
         found_match=true;
-      } else
-#endif /* UCLINUX */
-                               {
+      } else {
         GSM->Terminate();      
       }
     }
@@ -453,67 +415,98 @@ GSM_Error GSM_Initialise(char *model, char *device, char *initlength, GSM_Connec
 
     usleep(50);
         
-  } else
-#endif /* UCLINUX */
-               {
-#ifndef UCLINUX
-#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
-#endif /* UCLINUX */
-
-    if (CheckModel (N6110_Information, model, connection)) {
-      /* Set pointers to relevant addresses */
+  } else {
+    if (!strcmp(model,"modelauto")) {
+      /* For now */
       GSM = &N6110_Functions;
       GSM_Info = &N6110_Information;
       GSM_LinkOK = &CurrentLinkOK;
-      found_match=true;
-    }
-#ifndef UCLINUX
-    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;
-    }
-#endif /* UCLINUX */
-
-    if (found_match) {
+#ifdef DEBUG
+      fprintf(stdout,_("Trying to find connected model...\n"));
+#endif
       switch (connection) {
         case GCT_FBUS    : Protocol = &FBUS_Functions;    break;
-#ifndef UCLINUX
         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;
-#endif /* UCLINUX */
+        case GCT_FBUS3110: Protocol = &FBUS3110_Functions;break;
+      }
+      CurrentConnectionType=connection;    
+      connection2=connection;
+      if (TryNewNokia(model,device,initlength,CurrentConnectionType,rlp_callback)==GE_NONE)
+      {
+        found_match=true;
+      } else {
+        GSM->Terminate();      
       }
-    } else
-      return GE_NOTSUPPORTED;
+
+      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 (N3110_Information, model, connection)) {
+        /* Set pointers to relevant addresses */
+        GSM = &N3110_Functions;
+        GSM_Info = &N3110_Information;
+        GSM_LinkOK = &CurrentLinkOK;
+        found_match=true;
+      }
+      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_FBUS3110: Protocol = &FBUS3110_Functions;break;
+        }
+      } else
+        return GE_NOTSUPPORTED;
+    }
   }
 
     
   /* Now call model specific initialisation code. */
   error=(GSM->Initialise(device, initlength, connection2, rlp_callback));
 
-#ifndef UCLINUX
   /* RTH: FIXME: second try for Irda (6210 only?)*/
   if ( error!=GE_NONE && connection == GCT_Irda)
   {
@@ -523,9 +516,7 @@ GSM_Error GSM_Initialise(char *model, char *device, char *initlength, GSM_Connec
    device_close();
    error=(GSM->Initialise(device, initlength, connection2, rlp_callback));
   }
-#endif /* UCLINUX */
 
-#ifndef UCLINUX
   if (error==GE_NONE && !strcmp(SynchronizeTime,"yes"))
   {
     nowh=time(NULL);
@@ -556,13 +547,10 @@ GSM_Error GSM_Initialise(char *model, char *device, char *initlength, GSM_Connec
     /* FIXME: Error checking should be here. */
     GSM->SetDateTime(&Date);
   }
-#endif /* UCLINUX */
 
   return error;
 }
 
-#ifndef UCLINUX
-
 GSM_Error Unimplemented(void)
 {
        return GE_NOTIMPLEMENTED;
@@ -573,8 +561,6 @@ GSM_Error NotSupported(void)
        return GE_NOTSUPPORTED;
 }
 
-#endif /* UCLINUX */
-
 /* Applications should call N6110_Terminate to shut down the N6110 thread and
    close the serial port. */
 void NULL_Terminate(void)
@@ -640,14 +626,13 @@ GSM_ConnectionType GetConnectionTypeFromString(char *Connection) {
 
   GSM_ConnectionType connection=GCT_FBUS;
 
-#ifndef UCLINUX
   if (!strcmp(Connection, "irda"))     connection=GCT_Irda;
   if (!strcmp(Connection, "infrared")) connection=GCT_Infrared;
   if (!strcmp(Connection, "mbus"))     connection=GCT_MBUS;
   if (!strcmp(Connection, "dlr3"))     connection=GCT_DLR3;
+  if (!strcmp(Connection, "fbus3110")) connection=GCT_FBUS3110;
   if (!strcmp(Connection, "at"))       connection=GCT_AT;
   if (!strcmp(Connection, "tekram210"))connection=GCT_Tekram;
-#endif /* UCLINUX */
   
   return connection;
 }
@@ -661,7 +646,7 @@ bool GetMemoryTypeString(char *memorytext, GSM_MemoryType *type)
     char *name;
   } GSM_MTStrings;
 
-static  GSM_MTStrings mystring[] = {
+  GSM_MTStrings mystring[] = {
     {GMT_ME,"ME"},
     {GMT_SM,"SM"},
     {GMT_FD,"FD"},
@@ -694,7 +679,7 @@ bool GetMemoryTypeID(char *memorytext, GSM_MemoryType *type)
     char *name;
   } GSM_MTStrings;
 
-static  GSM_MTStrings mystring[] = {
+  GSM_MTStrings mystring[] = {
     {GMT_ME,"ME"},
     {GMT_SM,"SM"},
     {GMT_FD,"FD"},
@@ -732,33 +717,33 @@ 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}}
 };
 
-static OnePhoneModel *GetPhoneModelData (const char *num)
+OnePhoneModel *GetPhoneModelData (const char *num)
 {
        register int i = 0;
 
@@ -790,7 +775,6 @@ int GetModelFeature (featnum_index num)
   return (GetPhoneModelData(model)->features[num]);
 }
 
-#ifndef UCLINUX
 int LogAvailable=-1; //-1 not checked earlier, 0 not, 1 yes
 char *logfilename;
 
@@ -855,4 +839,3 @@ bool AppendLogText(u8 *buffer,bool format)
 {
   return AppendLog(buffer,strlen(buffer),format);
 }
-#endif /* UCLINUX */