http://marcin-wiacek.fkn.pl/english/zips/mygnokii.tar.gz
[gnokii.git] / win32_makefile / gui_delphi / GnokiiAPI.pas
diff --git a/win32_makefile/gui_delphi/GnokiiAPI.pas b/win32_makefile/gui_delphi/GnokiiAPI.pas
new file mode 100644 (file)
index 0000000..02ac803
--- /dev/null
@@ -0,0 +1,574 @@
+// This is header file for gnokiiapi.dll\r
+// Latest version: http://marcin-wiacek.topnet.pl\r
+\r
+unit GnokiiAPI;\r
+\r
+interface\r
+\r
+uses Classes,Forms,SysUtils;\r
+\r
+const\r
+  GSM_General = 10;\r
+  GSM_Mobile  = 3;\r
+  GSM_Work    = 6;\r
+  GSM_Fax     = 4;\r
+  GSM_Home    = 2;\r
+\r
+  GSM_Date       = 19;\r
+  GSM_Number     = 11;\r
+  GSM_Note       = 10;\r
+  GSM_Postal     = 9;\r
+  GSM_Email      = 8;\r
+\r
+const\r
+  GMT_ME=0;\r
+  GMT_SM=1;\r
+  GMT_FD=2;\r
+  GMT_ON=3;\r
+  GMT_EN=4;\r
+  GMT_DC=5;\r
+  GMT_RC=6;\r
+  GMT_MC=7;\r
+  GMT_LD=8;\r
+  GMT_MT=9;\r
+  GMT_TA=10;\r
+  GMT_CB=11;\r
+  GMT_CG=12;\r
+\r
+  GCT_FBUS=0;\r
+  GCT_MBUS=3;\r
+\r
+  GSS_SENTREAD=1;\r
+  GSS_NOTSENTREAD=3;\r
+\r
+const\r
+  GSM_None=0;\r
+  GSM_StartupLogo=1;      //size 84*48\r
+  GSM_OperatorLogo=2;     //size 72*14\r
+  GSM_CallerLogo=3;       //size 72*14\r
+  GSM_PictureImage=4;     //size 72*28\r
+  GSM_7110OperatorLogo=5; //size 78*21\r
+  GSM_7110StartupLogo=6;  //size 96*65\r
+  GSM_6210StartupLogo=7;  //size 96*60\r
+  GSM_WelcomeNoteText=8;\r
+  GSM_DealerNoteText=9;\r
+\r
+const\r
+  GSM_SoftReset=3;\r
+\r
+const\r
+  GCN_REMINDER=1;\r
+  GCN_CALL=2;\r
+  GCN_MEETING=3;\r
+  GCN_BIRTHDAY=4;\r
+\r
+const\r
+  GSMF_Text   = 0;\r
+  GSMF_Fax    = 34;\r
+  GSMF_Voice  = 36;\r
+  GSMF_ERMES  = 37;\r
+  GSMF_Paging = 38;\r
+  GSMF_UCI    = 45;\r
+  GSMF_Email  = 50;\r
+  GSMF_X400   = 49;\r
+\r
+  GSMV_1_Hour   = 11;\r
+  GSMV_6_Hours  = 71;\r
+  GSMV_24_Hours = 167;\r
+  GSMV_72_Hours = 169;\r
+  GSMV_1_Week   = 173;\r
+  GSMV_Max_Time = 255;\r
+\r
+  GST_SMS=0;\r
+  GST_DR=1;\r
+\r
+  GSM_Coding_Unicode = 1;\r
+  GSM_Coding_Default = 2;\r
+\r
+  GSCT_SecurityCode = 1;\r
+\r
+  GSM_NoUDH=0;\r
+\r
+const\r
+  FN_CALENDAR=0;\r
+  FN_CALLERGROUPS=2;\r
+  FN_SMS=11;\r
+  FN_PROFILES=14;\r
+  FN_WAP=16;\r
+\r
+  F_CAL61=0;//Calendar in 6110 style - 4 types,...\r
+  F_CAL33=1;//Calendar in 3310 style - 10 reminders, Unicode, 3 coding types\r
+  F_CAL71=2;//Calendar in 7110 style - 4 types, recurrance, etc.\r
+\r
+  F_SMS  =7;  //SMS with Inbox, Outbox\r
+  F_SMS71=8;  //SMS with SMS folders like in 7110\r
+  F_PROF61=22;//Profiles numbered like in N6110\r
+  F_PROF51=23;//Profiles numbered like in N5110\r
+  F_PROF33=24;//Profiles numbered like in N3310.Unicode names\r
+\r
+const\r
+  GE_SMSTOOLONG=22;\r
+\r
+const\r
+  PROFILE_MESSAGE_NOTONE=0;\r
+  PROFILE_MESSAGE_STANDARD=1;\r
+  PROFILE_MESSAGE_SPECIAL=2;\r
+  PROFILE_MESSAGE_BEEPONCE=3;\r
+  PROFILE_MESSAGE_ASCENDING=4;\r
+\r
+  PROFILE_WARNING_OFF=255;\r
+  PROFILE_WARNING_ON =4;\r
+\r
+  PROFILE_CALLALERT_RINGING=1;\r
+  PROFILE_CALLALERT_BEEPONCE=2;\r
+  PROFILE_CALLALERT_OFF=4;\r
+  PROFILE_CALLALERT_RINGONCE=5;\r
+  PROFILE_CALLALERT_ASCENDING=6;\r
+  PROFILE_CALLALERT_CALLERGROUPS=7;\r
+\r
+  PROFILE_KEYPAD_OFF=255;\r
+  PROFILE_KEYPAD_LEVEL1=0;\r
+  PROFILE_KEYPAD_LEVEL2=1;\r
+  PROFILE_KEYPAD_LEVEL3=2;\r
+\r
+  PROFILE_VOLUME_LEVEL1=6;\r
+  PROFILE_VOLUME_LEVEL2=7;\r
+  PROFILE_VOLUME_LEVEL3=8;\r
+  PROFILE_VOLUME_LEVEL4=9;\r
+  PROFILE_VOLUME_LEVEL5=10;\r
+\r
+  PROFILE_CALLERGROUPS_ALL=255;\r
+  PROFILE_CALLERGROUPS_FAMILY=1;\r
+  PROFILE_CALLERGROUPS_VIP=2;\r
+  PROFILE_CALLERGROUPS_FRIENDS=4;\r
+  PROFILE_CALLERGROUPS_COLLEAGUES=8;\r
+  PROFILE_CALLERGROUPS_OTHERS=16;\r
+\r
+  PROFILE_VIBRATION_OFF=0;\r
+  PROFILE_VIBRATION_ON=1;\r
+  PROFILE_VIBRATION_FIRST=2;\r
+\r
+type\r
+  GSM_NetworkInfo= record\r
+      NetworkCode: array[1..10] of char; // GSM network code\r
+      CellID: array[1..10] of char;      // CellID\r
+      LAC: array[1..10] of char;         // LAC\r
+  end;\r
+  PGSM_NetworkInfo=^GSM_NetworkInfo;\r
+\r
+  GSM_DateTime=record\r
+    IsSet:integer;\r
+    Year:integer;\r
+    Month:integer;\r
+    Day:integer;\r
+    Hour:integer;\r
+    Minute:integer;\r
+    Second:integer;\r
+    Timezone:integer;\r
+  end;\r
+  PGSM_DateTime=^GSM_DateTime;\r
+\r
+  GSM_SubPhonebookEntry= record\r
+    EntryType:integer;\r
+    NumberType:integer;\r
+    Number:array[1..61] of char;\r
+    Date:GSM_DateTime;\r
+    BlockNumber:integer;\r
+  end;\r
+\r
+  GSM_PhonebookEntry= record\r
+    Empty:integer;\r
+    Name:array[1..51] of char;\r
+    Number:array[1..49] of char;\r
+    MemoryType:integer;\r
+    Group:integer;\r
+    Location:integer;\r
+    SubEntries:array[1..8] of GSM_SubPhonebookEntry;\r
+    SubEntriesCount:integer;\r
+  end;\r
+  PGSM_PhonebookEntry=^GSM_PhonebookEntry;\r
+\r
+  GSM_MemoryStatus=record\r
+    MemoryType:integer;\r
+    Used:integer;\r
+    Free:integer;\r
+  end;\r
+  PGSM_memoryStatus=^GSM_MemoryStatus;\r
+\r
+  GSM_RingtoneNote=record\r
+    duration:byte;\r
+    note:byte;\r
+    tempo:integer;\r
+    style:byte;\r
+  end;\r
+\r
+  GSM_Ringtone=record\r
+    name:array[1..20] of char;\r
+    Loop:byte;\r
+    NrNotes:byte;\r
+    notes:array[1..256] of GSM_RingtoneNote;\r
+    allnotesscale:integer;\r
+    location:integer;\r
+  end;\r
+  PGSM_Ringtone=^GSM_Ringtone;\r
+\r
+  GSM_BinRingtone=record\r
+    name:array[1..20] of char;\r
+    frame:array[1..1000] of char;\r
+    length:integer;\r
+    location:integer;\r
+  end;\r
+  PGSM_BinRingtone=^GSM_BinRingtone;\r
+\r
+  GSM_Bitmap=record\r
+    heigh:byte;\r
+    width:byte;\r
+    size:smallint;\r
+    type2:integer;\r
+    netcode:array[1..7] of char;\r
+    text:array[1..256] of char;\r
+    bitmap:array[1..864] of char;\r
+    number:byte;\r
+    ringtone:byte;\r
+    enabled:integer;\r
+    Sender:array[1..41] of char;\r
+  end;\r
+  PGSM_Bitmap=^GSM_Bitmap;\r
+\r
+  GSM_SpeedDial=record\r
+    Number:integer;\r
+    MemoryType:integer;\r
+    Location:integer;\r
+  end;\r
+  PGSM_SpeedDial=^GSM_SpeedDial;\r
+\r
+  GSM_CalendarNote=record\r
+    Location:integer;\r
+    Type2:integer;\r
+    Time:GSM_DateTime;\r
+    Alarm:GSM_DateTime;\r
+    Text:array[1..59] of char;\r
+    Phone:array[1..37] of char;\r
+\r
+    Recurrance:integer;\r
+    YearOfBirth:integer;\r
+    AlarmType:byte;\r
+    ReadNotesInfo:integer;\r
+  end;\r
+  PGSM_CalendarNote=^GSM_CalendarNote;\r
+\r
+  GSM_MessageCenter=record\r
+    No:integer;\r
+    Name:array[1..20] of char;\r
+    Format:integer;\r
+    Validity:integer;\r
+    Number:array[1..40] of char;\r
+    DefaultRecipient:array[1..40] of char;\r
+  end;\r
+  PGSM_MessageCenter=^GSM_MessageCenter;\r
+\r
+  GSM_Profile=record\r
+    Number:integer;\r
+    Name:array[1..40] of char;\r
+    DefaultName:integer;\r
+    KeypadTone:integer;\r
+    Lights:integer;\r
+    CallAlert:integer;\r
+    Ringtone:integer;\r
+    Volume:integer;\r
+    MessageTone:integer;\r
+    WarningTone:integer;\r
+    Vibration:integer;\r
+    CallerGroups:integer;\r
+    ScreenSaver:integer;\r
+    AutomaticAnswer:integer;\r
+  end;\r
+  PGSM_Profile=^GSM_Profile;\r
+\r
+  GSM_OneSimlock=record\r
+    data:array[1..11] of char;\r
+    enabled:integer;\r
+    counter:integer;\r
+    factory:integer;\r
+  end;\r
+\r
+  GSM_AllSimlocks=record\r
+    simlocks:array[1..4] of GSM_OneSimlock;\r
+  end;\r
+  PGSM_AllSimlocks=^GSM_AllSimlocks;\r
+\r
+  GSM_OneSMSFolder=record\r
+    Name:array[1..15] of char;\r
+    locations:array[1..160] of byte;\r
+    number:byte;\r
+  end;\r
+\r
+  GSM_SMSFolders=record\r
+    Folder: array[1..24] of GSM_OneSMSFolder;\r
+    FoldersID: array[1..24] of byte;\r
+    number:byte;\r
+  end;\r
+  PGSM_SMSFolders=^GSM_SMSFolders;\r
+\r
+  GSM_SMSMessage=record\r
+    Coding:integer;\r
+    Time:GSM_DateTime;\r
+    SMSCTime:GSM_DateTime;\r
+    Length:integer;\r
+    Validity:integer;\r
+    UDHType:integer;\r
+    UDH:array[1..140] of char;\r
+    MessageText:array[1..161] of char;\r
+    MessageCenter:GSM_MessageCenter;\r
+    Sender:array[1..41] of char;\r
+    Destination:array[1..41] of char;\r
+    MessageNumber:integer;\r
+    MemoryType:integer;\r
+    Type2:integer;\r
+    Status:integer;\r
+    Class2:integer;\r
+    Compression:integer;\r
+    Location:integer;\r
+    ReplyViaSameSMSC:integer;\r
+    folder:integer;\r
+    SMSData:integer;\r
+    Name:array[1..26] of char;\r
+  end;\r
+  PGSM_SMSMessage=^GSM_SMSMessage;\r
+\r
+  GSM_MultiSMSMessage=record\r
+    number:integer;\r
+    SMS:array[1..6] of GSM_SMSMessage;\r
+  end;\r
+  PGSM_MultiSMSMessage=^GSM_MultiSMSMessage;\r
+\r
+  GSM_SMS2Foldertable=record\r
+    smsnum:integer;\r
+    folder:shortint;\r
+    location:integer;\r
+  end;\r
+\r
+  GSM_SMSStatus=record\r
+    UnRead:integer;\r
+    Number:integer;\r
+    foldertable:array[1..255] of GSM_SMS2FolderTable;\r
+  end;\r
+  PGSM_SMSStatus=^GSM_SMSStatus;\r
+\r
+  GSM_SecurityCode=record\r
+    Type2:integer;\r
+    Code:array[1..10] of char;\r
+  end;\r
+  PGSM_SecurityCode=^GSM_SecurityCode;\r
+\r
+  GSM_WAPBookmark=record\r
+    adress:array[1..256] of char;\r
+    title:array[1..51] of char;\r
+    location:Word;\r
+  end;\r
+  PGSM_WAPBookmark=^GSM_WAPBookmark;\r
+\r
+  GSM_WAPSettings=record\r
+    location:byte;\r
+    homepage:array[1..101] of char;\r
+    title:array[1..21] of char;\r
+    bearer:integer;\r
+    issecurity:integer;\r
+    iscontinuous:integer;\r
+\r
+    //for data bearer\r
+    ipaddress:array[1..21] of char;\r
+    dialup:array[1..21] of char;\r
+    user:array[1..51] of char;\r
+    password:array[1..51] of char;\r
+    isspeed14400:integer;\r
+    isISDNcall:integer;\r
+    isnormalauthentication:integer;\r
+\r
+    //for sms bearer\r
+    server:array[1..22] of char;\r
+\r
+    //for sms or ussd bearer\r
+    service:array[1..21] of char;\r
+    isIP:integer;\r
+\r
+    //for ussd bearer\r
+    code:array[1..11] of char;\r
+  end;\r
+  PGSM_WAPSettings=^GSM_WAPSettings;\r
+\r
+const\r
+  WAPSETTINGS_BEARER_SMS=0;\r
+  WAPSETTINGS_BEARER_DATA=1;\r
+  WAPSETTINGS_BEARER_USSD=2;\r
+\r
+const\r
+  GSM_CDV_Busy       = 1; // Divert when busy\r
+  GSM_CDV_NoAnswer   = 2; // Divert when not answered\r
+  GSM_CDV_OutOfReach = 3; // Divert when phone off or no coverage\r
+  GSM_CDV_AllTypes   = 4; // Divert all calls without ringing\r
+\r
+  GSM_CDV_VoiceCalls = 1;\r
+  GSM_CDV_FaxCalls   = 2;\r
+  GSM_CDV_DataCalls  = 3;\r
+  GSM_CDV_AllCalls   = 4;\r
+\r
+  GSM_CDV_Disable  = 0;\r
+  GSM_CDV_Enable   = 1;\r
+  GSM_CDV_Query    = 2; // Is concrete divert enabled ?\r
+  GSM_CDV_Register = 3; // Sets divert\r
+  GSM_CDV_Erasure  = 4; // Erase concrete divert\r
+\r
+type\r
+  GSM_CallDivert=record\r
+    DType:integer;\r
+    CType:integer;\r
+    Operation:integer;\r
+    Number:array[1..41] of char;\r
+    timeout:longword;\r
+    enabled:integer;\r
+  end;\r
+  PGSM_CallDivert=^GSM_CallDivert;\r
+\r
+var\r
+  GSMPhoneConnected: boolean=false;\r
+  GSMNetworkInfo: GSM_NetworkInfo;\r
+\r
+  GSMPort: array[1..256] of Char;\r
+  GSMModel: array[1..256] of Char;\r
+  GSMInitLength: Array[1..256] of char;\r
+  GSMSynchronizeTime: array[1..256] of char;\r
+  GSMConnection: integer=GCT_FBUS;\r
+\r
+type\r
+  TSparkyThread = class(TThread)\r
+    public\r
+      procedure Execute; override;\r
+  end;\r
+\r
+var\r
+  SparkyThread: TSparkyThread;\r
+\r
+function GSM_Initialize(Port:Pchar;Model:Pchar;connectiontype:integer): integer; stdcall; external 'gnokiiapi.dll' name 'myinitialize';\r
+function GSM_Terminate(): integer; stdcall; external 'gnokiiapi.dll' name 'myterminate';\r
+\r
+function GSM_GetNetworkInfo(NetworkInfo:PGSM_NetworkInfo): integer; stdcall; external 'gnokiiapi.dll' name 'mygetnetworkinfo';\r
+function GSM_GetNetworkName(NetworkName:Pchar;NetworkCode:Pchar): integer; stdcall; external 'gnokiiapi.dll' name 'mygetnetworkname';\r
+function GSM_GetNetworkCode(NetworkName:Pchar;NetworkCode:Pchar): integer; stdcall; external 'gnokiiapi.dll' name 'mygetnetworkcode';\r
+function GSM_GetNetworkData(number:integer; NetworkName:Pchar;NetworkCode:Pchar): integer; stdcall; external 'gnokiiapi.dll' name 'mygetnetworkdata';\r
+\r
+function GSM_Netmonitor(mode:integer;Screen:Pchar): integer; stdcall; external 'gnokiiapi.dll' name 'mynetmonitor';\r
+\r
+function GSM_GetMemoryLocation(entry:PGSM_Phonebookentry): integer; stdcall; external 'gnokiiapi.dll' name 'mygetmemorylocation';\r
+function GSM_WritePhonebookLocation(entry:PGSM_Phonebookentry): integer; stdcall; external 'gnokiiapi.dll' name 'mywritephonebooklocation';\r
+function GSM_GetMemoryStatus(status:PGSM_MemoryStatus): integer; stdcall; external 'gnokiiapi.dll' name 'mygetmemorystatus';\r
+\r
+function GSM_ReadRingtoneFile(filename:Pchar;ringtone:PGSM_Ringtone): integer; stdcall; external 'gnokiiapi.dll' name 'myreadringtonefile';\r
+function GSM_SetRingtone(ringtone:PGSM_Ringtone;notes:Pinteger): integer; stdcall; external 'gnokiiapi.dll' name 'mysetringtone';\r
+function GSM_ReadBinRingtoneFile(filename:Pchar;ringtone:PGSM_BinRingtone): integer; stdcall; external 'gnokiiapi.dll' name 'myreadbinringtonefile';\r
+function GSM_SetBinRingtone(ringtone:PGSM_BinRingtone): integer; stdcall; external 'gnokiiapi.dll' name 'mysetbinringtone';\r
+function GSM_PlayRingtone(ringtone:PGSM_Ringtone): integer; stdcall; external 'gnokiiapi.dll' name 'myplayringtone';\r
+function GSM_PlayNote(note:GSM_RingtoneNote): integer; stdcall; external 'gnokiiapi.dll' name 'myplaynote';\r
+function GSM_PlayTone(herz:integer;volume:byte): integer; stdcall; external 'gnokiiapi.dll' name 'myplaytone';\r
+function GSM_GetTempo(beats:integer): integer; stdcall; external 'gnokiiapi.dll' name 'mygettempo';\r
+\r
+function GSM_ReadBitmapFile(filename:Pchar;bitmap:PGSM_Bitmap): integer; stdcall; external 'gnokiiapi.dll' name 'myreadbitmapfile';\r
+function GSM_SaveBitmapFile(filename:Pchar;bitmap:PGSM_Bitmap): integer; stdcall; external 'gnokiiapi.dll' name 'mysavebitmapfile';\r
+function GSM_IsPointBitmap(bitmap:PGSM_Bitmap;x:integer;y:integer): integer; stdcall; external 'gnokiiapi.dll' name 'myispointbitmap';\r
+function GSM_SetPointBitmap(bitmap:PGSM_Bitmap;x:integer;y:integer): integer; stdcall; external 'gnokiiapi.dll' name 'mysetpointbitmap';\r
+function GSM_ClearPointBitmap(bitmap:PGSM_Bitmap;x:integer;y:integer): integer; stdcall; external 'gnokiiapi.dll' name 'myclearpointbitmap';\r
+function GSM_ClearBitmap(bitmap:PGSM_Bitmap): integer; stdcall; external 'gnokiiapi.dll' name 'myclearbitmap';\r
+function GSM_GetBitmap(bitmap:PGSM_Bitmap): integer; stdcall; external 'gnokiiapi.dll' name 'mygetbitmap';\r
+function GSM_SetBitmap(bitmap:PGSM_Bitmap): integer; stdcall; external 'gnokiiapi.dll' name 'mysetbitmap';\r
+function GSM_ResizeBitmap(bitmap:PGSM_Bitmap;bitmaptype:integer): integer; stdcall; external 'gnokiiapi.dll' name 'myresizebitmap';\r
+\r
+function GSM_GetImei(IMEI:Pchar): integer; stdcall; external 'gnokiiapi.dll' name 'mygetimei';\r
+function GSM_GetRevision(revision:Pchar): integer; stdcall; external 'gnokiiapi.dll' name 'mygetrevision';\r
+function GSM_GetModel(model:Pchar): integer; stdcall; external 'gnokiiapi.dll' name 'mygetmodel';\r
+function GSM_GetModelNumber(model:Pchar;model2:Pchar): integer; stdcall; external 'gnokiiapi.dll' name 'mygetmodelnumber';\r
+\r
+function GSM_GetDLLVersion(version:Pchar): integer; stdcall; external 'gnokiiapi.dll' name 'mygetdllversion';\r
+\r
+function GSM_GetSpeedDial(entry:PGSM_SpeedDial): integer; stdcall; external 'gnokiiapi.dll' name 'mygetspeeddial';\r
+\r
+function GSM_Reset(mode:byte): integer; stdcall; external 'gnokiiapi.dll' name 'myreset';\r
+\r
+function GSM_GetCalendarNote(entry:PGSM_CalendarNote): integer; stdcall; external 'gnokiiapi.dll' name 'mygetcalendarnote';\r
+function GSM_WriteCalendarNote(entry:PGSM_CalendarNote): integer; stdcall; external 'gnokiiapi.dll' name 'mywritecalendarnote';\r
+function GSM_DeleteCalendarNote(entry:PGSM_CalendarNote): integer; stdcall; external 'gnokiiapi.dll' name 'mydeletecalendarnote';\r
+\r
+function GSM_GetAlarm(alarmnumber:integer;alarm:PGSM_DateTime): integer; stdcall; external 'gnokiiapi.dll' name 'mygetalarm';\r
+\r
+function GSM_GetSMSCenter(center:PGSM_MessageCenter): integer; stdcall; external 'gnokiiapi.dll' name 'mygetsmscenter';\r
+function GSM_SetSMSCenter(center:PGSM_MessageCenter): integer; stdcall; external 'gnokiiapi.dll' name 'mysetsmscenter';\r
+\r
+function GSM_GetProfile(profile:PGSM_Profile): integer; stdcall; external 'gnokiiapi.dll' name 'mygetprofile';\r
+\r
+function GSM_GetSimlock(simlock:PGSM_AllSimlocks): integer; stdcall; external 'gnokiiapi.dll' name 'mygetsimlock';\r
+\r
+function GSM_GetSMSFolders(folders:PGSM_SMSFolders): integer; stdcall; external 'gnokiiapi.dll' name 'mygetsmsfolders';\r
+function GSM_GetSMSMessage(sms:PGSM_SMSMessage): integer; stdcall; external 'gnokiiapi.dll' name 'mygetsmsmessage';\r
+function GSM_SaveSMSMessage(sms:PGSM_SMSMessage): integer; stdcall; external 'gnokiiapi.dll' name 'mysavesmsmessage';\r
+function GSM_SendSMSMessage(sms:PGSM_SMSMessage): integer; stdcall; external 'gnokiiapi.dll' name 'mysendsmsmessage';\r
+function GSM_DeleteSMSMessage(sms:PGSM_SMSMessage): integer; stdcall; external 'gnokiiapi.dll' name 'mydeletesmsmessage';\r
+function GSM_GetSMSStatus(folders:PGSM_SMSStatus): integer; stdcall; external 'gnokiiapi.dll' name 'mygetsmsstatus';\r
+function GSM_MakeMultiPartSMS2(SMS:PGSM_MultiSMSMessage;MessageBuffer:PByte;MessageLength:Integer;UDHType:integer;Coding:integer): integer; stdcall; external 'gnokiiapi.dll' name 'mymakemultipartsms2';\r
+\r
+function GSM_SaveRingtoneToSMS(SMS:PGSM_MultiSMSMessage;ringtone:PGSM_Ringtone;profilestyle:integer): integer; stdcall; external 'gnokiiapi.dll' name 'mysaveringtonetosms';\r
+function GSM_SaveCalendarNoteToSMS(SMS:PGSM_MultiSMSMessage;note:PGSM_CalendarNote): integer; stdcall; external 'gnokiiapi.dll' name 'mysavecalendarnotetosms';\r
+function GSM_SaveBitmapToSMS(SMS:PGSM_MultiSMSMessage;bitmap:PGSM_Bitmap;ScreenSaver:integer;Unicode:integer): integer; stdcall; external 'gnokiiapi.dll' name 'mysavebitmaptosms';\r
+function GSM_SavePhonebookEntryToSMS(SMS:PGSM_MultiSMSMessage;entry:PGSM_PhonebookEntry;version:integer): integer; stdcall; external 'gnokiiapi.dll' name 'mysavephonebookentrytosms';\r
+function GSM_SaveWAPBookmarkToSMS(SMS:PGSM_MultiSMSMessage;bookmark:PGSM_WAPBookmark): integer; stdcall; external 'gnokiiapi.dll' name 'mysavewapbookmarktosms';\r
+function GSM_SaveWAPSettingsToSMS(SMS:PGSM_MultiSMSMessage;settings:PGSM_WAPSettings): integer; stdcall; external 'gnokiiapi.dll' name 'mysavewapsettingstosms';\r
+\r
+function GSM_ReadConfig(model:Pchar;port:Pchar;initlength:Pchar;connection:Pinteger;synchronizetime:Pchar): integer; stdcall; external 'gnokiiapi.dll' name 'myreadconfig';\r
+\r
+function GSM_SetLocale(locale:pchar): integer; stdcall; external 'gnokiiapi.dll' name 'mysetlocale';\r
+\r
+function GSM_GetSecurityCode(code:PGSM_SecurityCode): integer; stdcall; external 'gnokiiapi.dll' name 'mygetsecuritycode';\r
+\r
+function GSM_GetModelFeature(featurenumber:integer): integer; stdcall; external 'gnokiiapi.dll' name 'mygetmodelfeature';\r
+\r
+function GSM_GetWAPBookmark(bookmark:PGSM_WAPBookmark): integer; stdcall; external 'gnokiiapi.dll' name 'mygetwapbookmark';\r
+function GSM_SetWAPBookmark(bookmark:PGSM_WAPBookmark): integer; stdcall; external 'gnokiiapi.dll' name 'mysetwapbookmark';\r
+\r
+function GSM_GetWAPSettings(settings:PGSM_WAPSettings): integer; stdcall; external 'gnokiiapi.dll' name 'mygetwapsettings';\r
+\r
+function GSM_CallDivertOperation(divert:PGSM_CallDivert): integer; stdcall; external 'gnokiiapi.dll' name 'mycalldivert';\r
+\r
+implementation\r
+\r
+procedure TSparkyThread.Execute;\r
+begin\r
+  while not Terminated do\r
+  begin\r
+    if GSMPhoneConnected then\r
+    begin\r
+      if GSM_GetNetworkInfo(@GSMNetworkInfo)<>0 then\r
+      begin\r
+        GSMPhoneConnected:=false;\r
+        GSM_Terminate();\r
+      end else begin\r
+        if not SparkyThread.Suspended then SparkyThread.Suspend;\r
+      end;\r
+    end else\r
+    begin\r
+      if GSM_Initialize(@GSMPort,@GSMModel,GSMConnection)=0 then\r
+      begin\r
+        GSMPhoneConnected:=true;\r
+      end else\r
+        GSM_Terminate();\r
+    end;\r
+  end;\r
+  GSMPhoneConnected:=false;\r
+end;\r
+\r
+begin\r
+  GSM_ReadConfig(@GSMmodel,@GSMport,@GSMinitlength,@GSMconnection,@GSMsynchronizetime);\r
+  GSM_SetLocale('.1250');\r
+  GSMPhoneConnected:=false;\r
+  SparkyThread:=TSparkyThread.Create(True);\r
+  SparkyThread.Priority:=tpIdle;\r
+//  SparkyThread.Priority:=tpLowest;\r
+  SparkyThread.Resume;\r
+end.\r