+ void (*DispatchMessage) (u16 MessageLength, u8 *MessageBuffer, u8 MessageType);
+
+ void (*Terminate)(void);
+
+ void (*KeepAlive)(void);
+
+ GSM_Error (*GetMemoryLocation)( GSM_PhonebookEntry *entry );
+
+ GSM_Error (*WritePhonebookLocation)( GSM_PhonebookEntry *entry );
+
+ GSM_Error (*GetSpeedDial)( GSM_SpeedDial *entry);
+
+ GSM_Error (*SetSpeedDial)( GSM_SpeedDial *entry);
+
+ GSM_Error (*GetMemoryStatus)( GSM_MemoryStatus *Status);
+
+ GSM_Error (*GetSMSStatus)( GSM_SMSStatus *Status);
+
+ GSM_Error (*GetSMSCenter)( GSM_MessageCenter *MessageCenter );
+
+ GSM_Error (*SetSMSCenter)( GSM_MessageCenter *MessageCenter );
+
+ GSM_Error (*GetSMSMessage)( GSM_SMSMessage *Message );
+
+ GSM_Error (*DeleteSMSMessage)( GSM_SMSMessage *Message );
+
+ GSM_Error (*SendSMSMessage)( GSM_SMSMessage *Message);
+
+ GSM_Error (*SaveSMSMessage)( GSM_SMSMessage *Message);
+
+ /* If units is set to a valid GSM_RFUnits value, the code
+ will return level in these units if it is able. Otherwise
+ value will be returned as GRF_Arbitary. If phone doesn't
+ support GetRFLevel, function returns GE_NOTSUPPORTED */
+ GSM_Error (*GetRFLevel)( GSM_RFUnits *units, float *level );
+
+ /* Works the same as GetRFLevel, except returns battery
+ level if known. */
+ GSM_Error (*GetBatteryLevel)( GSM_BatteryUnits *units, float *level );
+
+ GSM_Error (*GetPowerSource)( GSM_PowerSource *source);
+
+ GSM_Error (*GetDisplayStatus)( int *Status);
+
+ GSM_Error (*EnterSecurityCode)( GSM_SecurityCode Code);
+
+ GSM_Error (*GetSecurityCodeStatus)( int *Status );
+
+ GSM_Error (*GetSecurityCode)( GSM_SecurityCode *Code);
+
+ GSM_Error (*GetIMEI)( char *imei );
+
+ GSM_Error (*GetRevision)( char *revision );
+
+ GSM_Error (*GetModel)( char *model );
+
+ GSM_Error (*GetDateTime)( GSM_DateTime *date_time);
+
+ GSM_Error (*SetDateTime)( GSM_DateTime *date_time);
+
+ GSM_Error (*GetAlarm)( int alarm_number, GSM_DateTime *date_time );
+
+ GSM_Error (*SetAlarm)( int alarm_number, GSM_DateTime *date_time );
+
+ GSM_Error (*DialVoice)( char *Number);
+
+ GSM_Error (*DialData)( char *Number, char type, void (* callpassup)(char c));
+
+ GSM_Error (*GetIncomingCallNr)( char *Number );
+
+ GSM_Error (*GetNetworkInfo) ( GSM_NetworkInfo *NetworkInfo );
+
+ GSM_Error (*GetCalendarNote) ( GSM_CalendarNote *CalendarNote);
+
+ GSM_Error (*WriteCalendarNote) ( GSM_CalendarNote *CalendarNote);
+
+ GSM_Error (*DeleteCalendarNote) ( GSM_CalendarNote *CalendarNote);
+
+ GSM_Error (*NetMonitor) ( unsigned char mode, char *Screen );
+
+ GSM_Error (*SendDTMF) ( char *String );
+
+ GSM_Error (*GetBitmap) ( GSM_Bitmap *Bitmap );
+
+ GSM_Error (*SetBitmap) ( GSM_Bitmap *Bitmap );
+
+ GSM_Error (*SetRingtone) ( GSM_Ringtone *ringtone , int *maxlength);
+
+ GSM_Error (*SetBinRingtone) ( GSM_BinRingtone *ringtone);
+
+ GSM_Error (*GetBinRingtone) ( GSM_BinRingtone *ringtone);
+
+ GSM_Error (*Reset) ( unsigned char type );
+
+ GSM_Error (*GetProfile) ( GSM_Profile *Profile );
+
+ GSM_Error (*SetProfile) ( GSM_Profile *Profile );
+
+ bool (*SendRLPFrame) ( RLP_F96Frame *frame, bool out_dtx );
+
+ GSM_Error (*CancelCall) ();
+
+ GSM_Error (*PressKey) (int key, int event);
+
+ GSM_Error (*EnableDisplayOutput) ();
+
+ GSM_Error (*DisableDisplayOutput) ();
+
+ GSM_Error (*EnableCellBroadcast) ();
+
+ GSM_Error (*DisableCellBroadcast) ();
+
+ GSM_Error (*ReadCellBroadcast) ( GSM_CBMessage *Message );
+
+ GSM_Error (*PlayTone) (int Herz, u8 Volume);
+
+ GSM_Error (*GetProductProfileSetting) ( GSM_PPS *PPS);
+
+ GSM_Error (*SetProductProfileSetting) ( GSM_PPS *PPS);
+
+ GSM_Error (*GetOperatorName) ( GSM_Network *operator);
+
+ GSM_Error (*SetOperatorName) ( GSM_Network *operator);
+
+ GSM_Error (*GetVoiceMailbox) ( GSM_PhonebookEntry *entry);
+
+ GSM_Error (*PhoneTests) ();
+
+ GSM_Error (*SimlockInfo) ( GSM_AllSimlocks *siml);
+
+ GSM_Error (*GetCalendarNotesInfo) (GSM_NotesInfo *NotesInfo);
+
+ GSM_Error (*GetSMSFolders) ( GSM_SMSFolders *folders);
+
+ GSM_Error (*ResetPhoneSettings) ();
+
+ GSM_Error (*GetWAPBookmark) ( GSM_WAPBookmark *bookmark);
+
+ GSM_Error (*SetWAPBookmark) ( GSM_WAPBookmark *bookmark);
+
+ GSM_Error (*GetWAPSettings) ( GSM_WAPSettings *settings);
+
+ GSM_Error (*CallDivert) ( GSM_CallDivert *cd );
+
+ GSM_Error (*AnswerCall) (char s);
+
+ GSM_Error (*GetManufacturer)( char *manufacturer );
+
+} GSM_Functions;
+
+typedef struct {
+
+ /* FIXME: comment this. */
+
+ GSM_Error (*Initialise)( char *port_device, char *initlength,
+ GSM_ConnectionType connection,
+ void (*rlp_callback)(RLP_F96Frame *frame));
+
+ int (*SendMessage) (u16 message_length, u8 message_type, u8 *buffer);
+
+ int (*SendFrame) (u16 message_length, u8 message_type, u8 *buffer);
+
+ int (*WritePhone) (u16 length, u8 *buffer);
+
+ void (*Terminate)(void);
+
+ void (*StateMachine)(unsigned char rx_byte);
+
+} GSM_Protocol;