*/
-#include "config.h"
-
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#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
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;
GSM_OneSMSFolder CurrentSMSFolder;
GSM_Error CurrentSMSFolderError;
int CurrentSMSFolderID;
-#endif /* UCLINUX */
GSM_MemoryStatus *CurrentMemoryStatus;
GSM_Error CurrentMemoryStatusError;
-#ifndef UCLINUX
GSM_NetworkInfo *CurrentNetworkInfo;
GSM_Error CurrentNetworkInfoError;
GSM_DateTime *CurrentDateTime;
GSM_Error CurrentDateTimeError;
-GSM_Error CurrentResetPhoneSettingsError;
-
GSM_DateTime *CurrentAlarm;
GSM_Error CurrentAlarmError;
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;
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;
GSM_BinRingtone *CurrentGetBinRingtone=NULL;
GSM_Error CurrentRingtoneError;
-#endif /* UCLINUX */
GSM_Error CurrentMagicError;
-#ifndef UCLINUX
GSM_Error CurrentSimlockInfoError;
GSM_AllSimlocks *CurrentSimLock;
GSM_CallDivert *CurrentCallDivert;
char *CurrentManufacturer;
-#endif /* UCLINUX */
/* This is the connection type used in gnokii. */
GSM_ConnectionType CurrentConnectionType;
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;
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;
}
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;
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();
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)
{
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 */
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();
}
}
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)
{
device_close();
error=(GSM->Initialise(device, initlength, connection2, rlp_callback));
}
-#endif /* UCLINUX */
-#ifndef UCLINUX
if (error==GE_NONE && !strcmp(SynchronizeTime,"yes"))
{
nowh=time(NULL);
/* FIXME: Error checking should be here. */
GSM->SetDateTime(&Date);
}
-#endif /* UCLINUX */
return error;
}
-#ifndef UCLINUX
-
GSM_Error Unimplemented(void)
{
return GE_NOTIMPLEMENTED;
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)
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;
}
char *name;
} GSM_MTStrings;
-static GSM_MTStrings mystring[] = {
+ GSM_MTStrings mystring[] = {
{GMT_ME,"ME"},
{GMT_SM,"SM"},
{GMT_FD,"FD"},
char *name;
} GSM_MTStrings;
-static GSM_MTStrings mystring[] = {
+ GSM_MTStrings mystring[] = {
{GMT_ME,"ME"},
{GMT_SM,"SM"},
{GMT_FD,"FD"},
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;
return (GetPhoneModelData(model)->features[num]);
}
-#ifndef UCLINUX
int LogAvailable=-1; //-1 not checked earlier, 0 not, 1 yes
char *logfilename;
{
return AppendLog(buffer,strlen(buffer),format);
}
-#endif /* UCLINUX */