1 // This is header file for gnokiiapi.dll
\r
2 // Latest version: http://marcin-wiacek.topnet.pl
\r
8 uses Classes,Forms,SysUtils;
\r
46 GSM_StartupLogo=1; //size 84*48
\r
47 GSM_OperatorLogo=2; //size 72*14
\r
48 GSM_CallerLogo=3; //size 72*14
\r
49 GSM_PictureImage=4; //size 72*28
\r
50 GSM_7110OperatorLogo=5; //size 78*21
\r
51 GSM_7110StartupLogo=6; //size 96*65
\r
52 GSM_6210StartupLogo=7; //size 96*60
\r
53 GSM_WelcomeNoteText=8;
\r
54 GSM_DealerNoteText=9;
\r
77 GSMV_24_Hours = 167;
\r
78 GSMV_72_Hours = 169;
\r
80 GSMV_Max_Time = 255;
\r
85 GSM_Coding_Unicode = 1;
\r
86 GSM_Coding_Default = 2;
\r
88 GSCT_SecurityCode = 1;
\r
99 F_CAL61=0;//Calendar in 6110 style - 4 types,...
\r
100 F_CAL33=1;//Calendar in 3310 style - 10 reminders, Unicode, 3 coding types
\r
101 F_CAL71=2;//Calendar in 7110 style - 4 types, recurrance, etc.
\r
103 F_SMS =7; //SMS with Inbox, Outbox
\r
104 F_SMS71=8; //SMS with SMS folders like in 7110
\r
105 F_PROF61=22;//Profiles numbered like in N6110
\r
106 F_PROF51=23;//Profiles numbered like in N5110
\r
107 F_PROF33=24;//Profiles numbered like in N3310.Unicode names
\r
113 PROFILE_MESSAGE_NOTONE=0;
\r
114 PROFILE_MESSAGE_STANDARD=1;
\r
115 PROFILE_MESSAGE_SPECIAL=2;
\r
116 PROFILE_MESSAGE_BEEPONCE=3;
\r
117 PROFILE_MESSAGE_ASCENDING=4;
\r
119 PROFILE_WARNING_OFF=255;
\r
120 PROFILE_WARNING_ON =4;
\r
122 PROFILE_CALLALERT_RINGING=1;
\r
123 PROFILE_CALLALERT_BEEPONCE=2;
\r
124 PROFILE_CALLALERT_OFF=4;
\r
125 PROFILE_CALLALERT_RINGONCE=5;
\r
126 PROFILE_CALLALERT_ASCENDING=6;
\r
127 PROFILE_CALLALERT_CALLERGROUPS=7;
\r
129 PROFILE_KEYPAD_OFF=255;
\r
130 PROFILE_KEYPAD_LEVEL1=0;
\r
131 PROFILE_KEYPAD_LEVEL2=1;
\r
132 PROFILE_KEYPAD_LEVEL3=2;
\r
134 PROFILE_VOLUME_LEVEL1=6;
\r
135 PROFILE_VOLUME_LEVEL2=7;
\r
136 PROFILE_VOLUME_LEVEL3=8;
\r
137 PROFILE_VOLUME_LEVEL4=9;
\r
138 PROFILE_VOLUME_LEVEL5=10;
\r
140 PROFILE_CALLERGROUPS_ALL=255;
\r
141 PROFILE_CALLERGROUPS_FAMILY=1;
\r
142 PROFILE_CALLERGROUPS_VIP=2;
\r
143 PROFILE_CALLERGROUPS_FRIENDS=4;
\r
144 PROFILE_CALLERGROUPS_COLLEAGUES=8;
\r
145 PROFILE_CALLERGROUPS_OTHERS=16;
\r
147 PROFILE_VIBRATION_OFF=0;
\r
148 PROFILE_VIBRATION_ON=1;
\r
149 PROFILE_VIBRATION_FIRST=2;
\r
152 GSM_NetworkInfo= record
\r
153 NetworkCode: array[1..10] of char; // GSM network code
\r
154 CellID: array[1..10] of char; // CellID
\r
155 LAC: array[1..10] of char; // LAC
\r
157 PGSM_NetworkInfo=^GSM_NetworkInfo;
\r
159 GSM_DateTime=record
\r
169 PGSM_DateTime=^GSM_DateTime;
\r
171 GSM_SubPhonebookEntry= record
\r
173 NumberType:integer;
\r
174 Number:array[1..61] of char;
\r
176 BlockNumber:integer;
\r
179 GSM_PhonebookEntry= record
\r
181 Name:array[1..51] of char;
\r
182 Number:array[1..49] of char;
\r
183 MemoryType:integer;
\r
186 SubEntries:array[1..8] of GSM_SubPhonebookEntry;
\r
187 SubEntriesCount:integer;
\r
189 PGSM_PhonebookEntry=^GSM_PhonebookEntry;
\r
191 GSM_MemoryStatus=record
\r
192 MemoryType:integer;
\r
196 PGSM_memoryStatus=^GSM_MemoryStatus;
\r
198 GSM_RingtoneNote=record
\r
205 GSM_Ringtone=record
\r
206 name:array[1..20] of char;
\r
209 notes:array[1..256] of GSM_RingtoneNote;
\r
210 allnotesscale:integer;
\r
213 PGSM_Ringtone=^GSM_Ringtone;
\r
215 GSM_BinRingtone=record
\r
216 name:array[1..20] of char;
\r
217 frame:array[1..1000] of char;
\r
221 PGSM_BinRingtone=^GSM_BinRingtone;
\r
228 netcode:array[1..7] of char;
\r
229 text:array[1..256] of char;
\r
230 bitmap:array[1..864] of char;
\r
234 Sender:array[1..41] of char;
\r
236 PGSM_Bitmap=^GSM_Bitmap;
\r
238 GSM_SpeedDial=record
\r
240 MemoryType:integer;
\r
243 PGSM_SpeedDial=^GSM_SpeedDial;
\r
245 GSM_CalendarNote=record
\r
249 Alarm:GSM_DateTime;
\r
250 Text:array[1..59] of char;
\r
251 Phone:array[1..37] of char;
\r
253 Recurrance:integer;
\r
254 YearOfBirth:integer;
\r
256 ReadNotesInfo:integer;
\r
258 PGSM_CalendarNote=^GSM_CalendarNote;
\r
260 GSM_MessageCenter=record
\r
262 Name:array[1..20] of char;
\r
265 Number:array[1..40] of char;
\r
266 DefaultRecipient:array[1..40] of char;
\r
268 PGSM_MessageCenter=^GSM_MessageCenter;
\r
272 Name:array[1..40] of char;
\r
273 DefaultName:integer;
\r
274 KeypadTone:integer;
\r
279 MessageTone:integer;
\r
280 WarningTone:integer;
\r
282 CallerGroups:integer;
\r
283 ScreenSaver:integer;
\r
284 AutomaticAnswer:integer;
\r
286 PGSM_Profile=^GSM_Profile;
\r
288 GSM_OneSimlock=record
\r
289 data:array[1..11] of char;
\r
295 GSM_AllSimlocks=record
\r
296 simlocks:array[1..4] of GSM_OneSimlock;
\r
298 PGSM_AllSimlocks=^GSM_AllSimlocks;
\r
300 GSM_OneSMSFolder=record
\r
301 Name:array[1..15] of char;
\r
302 locations:array[1..160] of byte;
\r
306 GSM_SMSFolders=record
\r
307 Folder: array[1..24] of GSM_OneSMSFolder;
\r
308 FoldersID: array[1..24] of byte;
\r
311 PGSM_SMSFolders=^GSM_SMSFolders;
\r
313 GSM_SMSMessage=record
\r
316 SMSCTime:GSM_DateTime;
\r
320 UDH:array[1..140] of char;
\r
321 MessageText:array[1..161] of char;
\r
322 MessageCenter:GSM_MessageCenter;
\r
323 Sender:array[1..41] of char;
\r
324 Destination:array[1..41] of char;
\r
325 MessageNumber:integer;
\r
326 MemoryType:integer;
\r
330 Compression:integer;
\r
332 ReplyViaSameSMSC:integer;
\r
335 Name:array[1..26] of char;
\r
337 PGSM_SMSMessage=^GSM_SMSMessage;
\r
339 GSM_MultiSMSMessage=record
\r
341 SMS:array[1..6] of GSM_SMSMessage;
\r
343 PGSM_MultiSMSMessage=^GSM_MultiSMSMessage;
\r
345 GSM_SMS2Foldertable=record
\r
351 GSM_SMSStatus=record
\r
354 foldertable:array[1..255] of GSM_SMS2FolderTable;
\r
356 PGSM_SMSStatus=^GSM_SMSStatus;
\r
358 GSM_SecurityCode=record
\r
360 Code:array[1..10] of char;
\r
362 PGSM_SecurityCode=^GSM_SecurityCode;
\r
364 GSM_WAPBookmark=record
\r
365 adress:array[1..256] of char;
\r
366 title:array[1..51] of char;
\r
369 PGSM_WAPBookmark=^GSM_WAPBookmark;
\r
371 GSM_WAPSettings=record
\r
373 homepage:array[1..101] of char;
\r
374 title:array[1..21] of char;
\r
376 issecurity:integer;
\r
377 iscontinuous:integer;
\r
380 ipaddress:array[1..21] of char;
\r
381 dialup:array[1..21] of char;
\r
382 user:array[1..51] of char;
\r
383 password:array[1..51] of char;
\r
384 isspeed14400:integer;
\r
385 isISDNcall:integer;
\r
386 isnormalauthentication:integer;
\r
389 server:array[1..22] of char;
\r
391 //for sms or ussd bearer
\r
392 service:array[1..21] of char;
\r
396 code:array[1..11] of char;
\r
398 PGSM_WAPSettings=^GSM_WAPSettings;
\r
401 WAPSETTINGS_BEARER_SMS=0;
\r
402 WAPSETTINGS_BEARER_DATA=1;
\r
403 WAPSETTINGS_BEARER_USSD=2;
\r
406 GSM_CDV_Busy = 1; // Divert when busy
\r
407 GSM_CDV_NoAnswer = 2; // Divert when not answered
\r
408 GSM_CDV_OutOfReach = 3; // Divert when phone off or no coverage
\r
409 GSM_CDV_AllTypes = 4; // Divert all calls without ringing
\r
411 GSM_CDV_VoiceCalls = 1;
\r
412 GSM_CDV_FaxCalls = 2;
\r
413 GSM_CDV_DataCalls = 3;
\r
414 GSM_CDV_AllCalls = 4;
\r
416 GSM_CDV_Disable = 0;
\r
417 GSM_CDV_Enable = 1;
\r
418 GSM_CDV_Query = 2; // Is concrete divert enabled ?
\r
419 GSM_CDV_Register = 3; // Sets divert
\r
420 GSM_CDV_Erasure = 4; // Erase concrete divert
\r
423 GSM_CallDivert=record
\r
427 Number:array[1..41] of char;
\r
431 PGSM_CallDivert=^GSM_CallDivert;
\r
434 GSMPhoneConnected: boolean=false;
\r
435 GSMNetworkInfo: GSM_NetworkInfo;
\r
437 GSMPort: array[1..256] of Char;
\r
438 GSMModel: array[1..256] of Char;
\r
439 GSMInitLength: Array[1..256] of char;
\r
440 GSMSynchronizeTime: array[1..256] of char;
\r
441 GSMConnection: integer=GCT_FBUS;
\r
444 TSparkyThread = class(TThread)
\r
446 procedure Execute; override;
\r
450 SparkyThread: TSparkyThread;
\r
452 function GSM_Initialize(Port:Pchar;Model:Pchar;connectiontype:integer): integer; stdcall; external 'gnokiiapi.dll' name 'myinitialize';
\r
453 function GSM_Terminate(): integer; stdcall; external 'gnokiiapi.dll' name 'myterminate';
\r
455 function GSM_GetNetworkInfo(NetworkInfo:PGSM_NetworkInfo): integer; stdcall; external 'gnokiiapi.dll' name 'mygetnetworkinfo';
\r
456 function GSM_GetNetworkName(NetworkName:Pchar;NetworkCode:Pchar): integer; stdcall; external 'gnokiiapi.dll' name 'mygetnetworkname';
\r
457 function GSM_GetNetworkCode(NetworkName:Pchar;NetworkCode:Pchar): integer; stdcall; external 'gnokiiapi.dll' name 'mygetnetworkcode';
\r
458 function GSM_GetNetworkData(number:integer; NetworkName:Pchar;NetworkCode:Pchar): integer; stdcall; external 'gnokiiapi.dll' name 'mygetnetworkdata';
\r
460 function GSM_Netmonitor(mode:integer;Screen:Pchar): integer; stdcall; external 'gnokiiapi.dll' name 'mynetmonitor';
\r
462 function GSM_GetMemoryLocation(entry:PGSM_Phonebookentry): integer; stdcall; external 'gnokiiapi.dll' name 'mygetmemorylocation';
\r
463 function GSM_WritePhonebookLocation(entry:PGSM_Phonebookentry): integer; stdcall; external 'gnokiiapi.dll' name 'mywritephonebooklocation';
\r
464 function GSM_GetMemoryStatus(status:PGSM_MemoryStatus): integer; stdcall; external 'gnokiiapi.dll' name 'mygetmemorystatus';
\r
466 function GSM_ReadRingtoneFile(filename:Pchar;ringtone:PGSM_Ringtone): integer; stdcall; external 'gnokiiapi.dll' name 'myreadringtonefile';
\r
467 function GSM_SetRingtone(ringtone:PGSM_Ringtone;notes:Pinteger): integer; stdcall; external 'gnokiiapi.dll' name 'mysetringtone';
\r
468 function GSM_ReadBinRingtoneFile(filename:Pchar;ringtone:PGSM_BinRingtone): integer; stdcall; external 'gnokiiapi.dll' name 'myreadbinringtonefile';
\r
469 function GSM_SetBinRingtone(ringtone:PGSM_BinRingtone): integer; stdcall; external 'gnokiiapi.dll' name 'mysetbinringtone';
\r
470 function GSM_PlayRingtone(ringtone:PGSM_Ringtone): integer; stdcall; external 'gnokiiapi.dll' name 'myplayringtone';
\r
471 function GSM_PlayNote(note:GSM_RingtoneNote): integer; stdcall; external 'gnokiiapi.dll' name 'myplaynote';
\r
472 function GSM_PlayTone(herz:integer;volume:byte): integer; stdcall; external 'gnokiiapi.dll' name 'myplaytone';
\r
473 function GSM_GetTempo(beats:integer): integer; stdcall; external 'gnokiiapi.dll' name 'mygettempo';
\r
475 function GSM_ReadBitmapFile(filename:Pchar;bitmap:PGSM_Bitmap): integer; stdcall; external 'gnokiiapi.dll' name 'myreadbitmapfile';
\r
476 function GSM_SaveBitmapFile(filename:Pchar;bitmap:PGSM_Bitmap): integer; stdcall; external 'gnokiiapi.dll' name 'mysavebitmapfile';
\r
477 function GSM_IsPointBitmap(bitmap:PGSM_Bitmap;x:integer;y:integer): integer; stdcall; external 'gnokiiapi.dll' name 'myispointbitmap';
\r
478 function GSM_SetPointBitmap(bitmap:PGSM_Bitmap;x:integer;y:integer): integer; stdcall; external 'gnokiiapi.dll' name 'mysetpointbitmap';
\r
479 function GSM_ClearPointBitmap(bitmap:PGSM_Bitmap;x:integer;y:integer): integer; stdcall; external 'gnokiiapi.dll' name 'myclearpointbitmap';
\r
480 function GSM_ClearBitmap(bitmap:PGSM_Bitmap): integer; stdcall; external 'gnokiiapi.dll' name 'myclearbitmap';
\r
481 function GSM_GetBitmap(bitmap:PGSM_Bitmap): integer; stdcall; external 'gnokiiapi.dll' name 'mygetbitmap';
\r
482 function GSM_SetBitmap(bitmap:PGSM_Bitmap): integer; stdcall; external 'gnokiiapi.dll' name 'mysetbitmap';
\r
483 function GSM_ResizeBitmap(bitmap:PGSM_Bitmap;bitmaptype:integer): integer; stdcall; external 'gnokiiapi.dll' name 'myresizebitmap';
\r
485 function GSM_GetImei(IMEI:Pchar): integer; stdcall; external 'gnokiiapi.dll' name 'mygetimei';
\r
486 function GSM_GetRevision(revision:Pchar): integer; stdcall; external 'gnokiiapi.dll' name 'mygetrevision';
\r
487 function GSM_GetModel(model:Pchar): integer; stdcall; external 'gnokiiapi.dll' name 'mygetmodel';
\r
488 function GSM_GetModelNumber(model:Pchar;model2:Pchar): integer; stdcall; external 'gnokiiapi.dll' name 'mygetmodelnumber';
\r
490 function GSM_GetDLLVersion(version:Pchar): integer; stdcall; external 'gnokiiapi.dll' name 'mygetdllversion';
\r
492 function GSM_GetSpeedDial(entry:PGSM_SpeedDial): integer; stdcall; external 'gnokiiapi.dll' name 'mygetspeeddial';
\r
494 function GSM_Reset(mode:byte): integer; stdcall; external 'gnokiiapi.dll' name 'myreset';
\r
496 function GSM_GetCalendarNote(entry:PGSM_CalendarNote): integer; stdcall; external 'gnokiiapi.dll' name 'mygetcalendarnote';
\r
497 function GSM_WriteCalendarNote(entry:PGSM_CalendarNote): integer; stdcall; external 'gnokiiapi.dll' name 'mywritecalendarnote';
\r
498 function GSM_DeleteCalendarNote(entry:PGSM_CalendarNote): integer; stdcall; external 'gnokiiapi.dll' name 'mydeletecalendarnote';
\r
500 function GSM_GetAlarm(alarmnumber:integer;alarm:PGSM_DateTime): integer; stdcall; external 'gnokiiapi.dll' name 'mygetalarm';
\r
502 function GSM_GetSMSCenter(center:PGSM_MessageCenter): integer; stdcall; external 'gnokiiapi.dll' name 'mygetsmscenter';
\r
503 function GSM_SetSMSCenter(center:PGSM_MessageCenter): integer; stdcall; external 'gnokiiapi.dll' name 'mysetsmscenter';
\r
505 function GSM_GetProfile(profile:PGSM_Profile): integer; stdcall; external 'gnokiiapi.dll' name 'mygetprofile';
\r
507 function GSM_GetSimlock(simlock:PGSM_AllSimlocks): integer; stdcall; external 'gnokiiapi.dll' name 'mygetsimlock';
\r
509 function GSM_GetSMSFolders(folders:PGSM_SMSFolders): integer; stdcall; external 'gnokiiapi.dll' name 'mygetsmsfolders';
\r
510 function GSM_GetSMSMessage(sms:PGSM_SMSMessage): integer; stdcall; external 'gnokiiapi.dll' name 'mygetsmsmessage';
\r
511 function GSM_SaveSMSMessage(sms:PGSM_SMSMessage): integer; stdcall; external 'gnokiiapi.dll' name 'mysavesmsmessage';
\r
512 function GSM_SendSMSMessage(sms:PGSM_SMSMessage): integer; stdcall; external 'gnokiiapi.dll' name 'mysendsmsmessage';
\r
513 function GSM_DeleteSMSMessage(sms:PGSM_SMSMessage): integer; stdcall; external 'gnokiiapi.dll' name 'mydeletesmsmessage';
\r
514 function GSM_GetSMSStatus(folders:PGSM_SMSStatus): integer; stdcall; external 'gnokiiapi.dll' name 'mygetsmsstatus';
\r
515 function GSM_MakeMultiPartSMS2(SMS:PGSM_MultiSMSMessage;MessageBuffer:PByte;MessageLength:Integer;UDHType:integer;Coding:integer): integer; stdcall; external 'gnokiiapi.dll' name 'mymakemultipartsms2';
\r
517 function GSM_SaveRingtoneToSMS(SMS:PGSM_MultiSMSMessage;ringtone:PGSM_Ringtone;profilestyle:integer): integer; stdcall; external 'gnokiiapi.dll' name 'mysaveringtonetosms';
\r
518 function GSM_SaveCalendarNoteToSMS(SMS:PGSM_MultiSMSMessage;note:PGSM_CalendarNote): integer; stdcall; external 'gnokiiapi.dll' name 'mysavecalendarnotetosms';
\r
519 function GSM_SaveBitmapToSMS(SMS:PGSM_MultiSMSMessage;bitmap:PGSM_Bitmap;ScreenSaver:integer;Unicode:integer): integer; stdcall; external 'gnokiiapi.dll' name 'mysavebitmaptosms';
\r
520 function GSM_SavePhonebookEntryToSMS(SMS:PGSM_MultiSMSMessage;entry:PGSM_PhonebookEntry;version:integer): integer; stdcall; external 'gnokiiapi.dll' name 'mysavephonebookentrytosms';
\r
521 function GSM_SaveWAPBookmarkToSMS(SMS:PGSM_MultiSMSMessage;bookmark:PGSM_WAPBookmark): integer; stdcall; external 'gnokiiapi.dll' name 'mysavewapbookmarktosms';
\r
522 function GSM_SaveWAPSettingsToSMS(SMS:PGSM_MultiSMSMessage;settings:PGSM_WAPSettings): integer; stdcall; external 'gnokiiapi.dll' name 'mysavewapsettingstosms';
\r
524 function GSM_ReadConfig(model:Pchar;port:Pchar;initlength:Pchar;connection:Pinteger;synchronizetime:Pchar): integer; stdcall; external 'gnokiiapi.dll' name 'myreadconfig';
\r
526 function GSM_SetLocale(locale:pchar): integer; stdcall; external 'gnokiiapi.dll' name 'mysetlocale';
\r
528 function GSM_GetSecurityCode(code:PGSM_SecurityCode): integer; stdcall; external 'gnokiiapi.dll' name 'mygetsecuritycode';
\r
530 function GSM_GetModelFeature(featurenumber:integer): integer; stdcall; external 'gnokiiapi.dll' name 'mygetmodelfeature';
\r
532 function GSM_GetWAPBookmark(bookmark:PGSM_WAPBookmark): integer; stdcall; external 'gnokiiapi.dll' name 'mygetwapbookmark';
\r
533 function GSM_SetWAPBookmark(bookmark:PGSM_WAPBookmark): integer; stdcall; external 'gnokiiapi.dll' name 'mysetwapbookmark';
\r
535 function GSM_GetWAPSettings(settings:PGSM_WAPSettings): integer; stdcall; external 'gnokiiapi.dll' name 'mygetwapsettings';
\r
537 function GSM_CallDivertOperation(divert:PGSM_CallDivert): integer; stdcall; external 'gnokiiapi.dll' name 'mycalldivert';
\r
541 procedure TSparkyThread.Execute;
\r
543 while not Terminated do
\r
545 if GSMPhoneConnected then
\r
547 if GSM_GetNetworkInfo(@GSMNetworkInfo)<>0 then
\r
549 GSMPhoneConnected:=false;
\r
552 if not SparkyThread.Suspended then SparkyThread.Suspend;
\r
556 if GSM_Initialize(@GSMPort,@GSMModel,GSMConnection)=0 then
\r
558 GSMPhoneConnected:=true;
\r
563 GSMPhoneConnected:=false;
\r
567 GSM_ReadConfig(@GSMmodel,@GSMport,@GSMinitlength,@GSMconnection,@GSMsynchronizetime);
\r
568 GSM_SetLocale('.1250');
\r
569 GSMPhoneConnected:=false;
\r
570 SparkyThread:=TSparkyThread.Create(True);
\r
571 SparkyThread.Priority:=tpIdle;
\r
572 // SparkyThread.Priority:=tpLowest;
\r
573 SparkyThread.Resume;
\r