This commit was generated by cvs2svn to compensate for changes in r158,
[gnokii.git] / include / gsm-api.h
index fa655b4..fefca54 100644 (file)
 /*
 
 /*
 
+  $Id$
+
   G N O K I I
 
   A Linux/Unix toolset and driver for Nokia mobile phones.
 
   G N O K I I
 
   A Linux/Unix toolset and driver for Nokia mobile phones.
 
+  Copyright (C) 1999, 2000 Hugh Blemings & Pavel Janík ml.
+
   Released under the terms of the GNU GPL, see file COPYING for more details.
        
   Header file for the various functions, definitions etc. used to implement
   the handset interface.  See gsm-api.c for more details.
 
   Released under the terms of the GNU GPL, see file COPYING for more details.
        
   Header file for the various functions, definitions etc. used to implement
   the handset interface.  See gsm-api.c for more details.
 
-*/
-
-#ifndef __gsm_api_h
-#define __gsm_api_h
-#include "misc.h"
-#include "gsm-common.h"
-#include "data/rlp-common.h"
-#include "devices/device.h"
-#include "gsm-phonebook.h"
-#include "gsm-networks.h"
-#include "gsm-bitmaps.h"
-#include "gsm-datetime.h"
-#include "gsm-calendar.h"
-#include "gsm-sms.h"
-#include "gsm-ringtones.h"
-#include "gsm-wap.h"
-
-/* Undefined functions in fbus/mbus files */
-extern GSM_Error Unimplemented(void);
-#define UNIMPLEMENTED (void *) Unimplemented
-extern GSM_Error NotSupported(void);
-#define NOTSUPPORTED (void *) NotSupported
-
-/* Define the structure used to hold pointers to the various API functions.
-   This is in effect the master list of functions provided by the gnokii API.
-   Modules containing the model specific code each contain one of these
-   structures which is "filled in" with the corresponding function within the
-   model specific code.  If a function is not supported or not implemented, a
-   generic not implemented function is used to return a GE_NOTIMPLEMENTED
-   error code. */
-
-typedef struct {
-
-  /* FIXME: comment this. */
-
-  GSM_Error (*Initialise)( char *port_device, char *initlength,
-                           GSM_ConnectionType connection,
-                           void (*rlp_callback)(RLP_F96Frame *frame));
-
-  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);     
+  $Log$
+  Revision 1.1.1.6  2002/04/03 00:08:17  short
+  Found in "gnokii-working" directory, some November-patches version
 
 
-  void (*StateMachine)(unsigned char rx_byte);
+  Revision 1.14  2001/06/28 00:28:45  pkot
+  Small docs updates (Pawel Kot)
 
 
-} GSM_Protocol;
 
 
-/* This structure is provided to allow common information about the particular
-   model to be looked up in a model independant way. Some of the values here
-   define minimum and maximum levels for values retrieved by the various Get
-   functions for example battery level. They are not defined as constants to
-   allow model specific code to set them during initialisation */
-
-typedef struct {
-               
-  char *FBUSModels;     /* Models covered by this type, pipe '|' delimited. */  
-  char *MBUSModels;     /* Models covered by this type, pipe '|' delimited. */
-  char *InfraredModels; /* Models covered by this type, pipe '|' delimited. */  
-  char *DLR3Models;     /* Models covered by this type, pipe '|' delimited. */
-  char *ATModels;       /* Models covered by this type, pipe '|' delimited. */
-  char *IrdaModels;     /* Models covered by this type, pipe '|' delimited. */
-  char *TekramModels;   /* Models covered by this type, pipe '|' delimited. */  
-  char *FBUS3110Models; /* Models covered by this type, pipe '|' delimited. */  
-  
-/* Minimum and maximum levels for RF signal strength. Units are as per the
-   setting of RFLevelUnits.  The setting of RFLevelUnits indicates the 
-   default or "native" units used.  In the case of the 3110 and 6110 series
-   these are arbitrary, ranging from 0 to 4. */
-
-  float MaxRFLevel;
-  float MinRFLevel;
-  GSM_RFUnits RFLevelUnits;
-
-/* Minimum and maximum levels for battery level. Again, units are as per the
-   setting of GSM_BatteryLevelUnits.  The value that BatteryLevelUnits is set
-   to indicates the "native" or default value that the phone supports.  In the
-   case of the 3110 and 6110 series these are arbitrary, ranging from 0 to 4. */
-
-  float MaxBatteryLevel;
-  float MinBatteryLevel;
-  GSM_BatteryUnits BatteryLevelUnits;
-
-/* Information about date, time and alarm support. In case of alarm
-   information we provide value for the number of alarms supported. */
+*/
 
 
-  GSM_DateTimeSupport DateTimeSupport;
-  GSM_DateTimeSupport AlarmSupport;
-  int MaximumAlarms;
-} GSM_Information;
+#ifndef __gsm_api_h
+#define __gsm_api_h
 
 
-void NULL_Terminate(void);
-void NULL_KeepAlive();
-bool NULL_WritePhone (u16 length, u8 *buffer);
-void NULL_TX_DisplayMessage(u16 MessageLength, u8 *MessageBuffer);
+/* If gsm-common.h isn't included at this point, little in this file will make
+   sense so we include it here if required. */
 
 
-GSM_Error NULL_WaitUntil (int time, GSM_Error *value);
-GSM_Error NULL_SendMessageSequence (int time, GSM_Error *value,
-               u16 message_length, u8 message_type, u8 *buffer);
+#ifndef __gsm_common_h
+  #include "gsm-common.h"
+#endif
 
 
-GSM_ConnectionType GetConnectionTypeFromString(char *Connection);
+/* Ditto rlp_common.h... */
+#ifndef __data_rlp_common_h
+  #include "data/rlp-common.h"
+#endif
 
 
-bool GetMemoryTypeString(char *memorytext, GSM_MemoryType *type);
-bool GetMemoryTypeID(char *memorytext, GSM_MemoryType *type);
+#include "gsm-statemachine.h"
 
 /* Define these as externs so that app code can pick them up. */
 
 extern bool *GSM_LinkOK;
 extern GSM_Information *GSM_Info;
 extern GSM_Functions *GSM;
 
 /* Define these as externs so that app code can pick them up. */
 
 extern bool *GSM_LinkOK;
 extern GSM_Information *GSM_Info;
 extern GSM_Functions *GSM;
-extern GSM_Protocol *Protocol;
-
-GSM_PhonebookEntry *CurrentPhonebookEntry;
-GSM_Error          CurrentPhonebookError;
-
-GSM_SpeedDial      *CurrentSpeedDialEntry;
-GSM_Error          CurrentSpeedDialError;
-
-unsigned char      Current_IMEI[GSM_MAX_IMEI_LENGTH];
-unsigned char      Current_Revision[GSM_MAX_REVISION_LENGTH];
-unsigned char      Current_Model[GSM_MAX_MODEL_LENGTH];
-
-GSM_SMSMessage     *CurrentSMSMessage;
-GSM_Error          CurrentSMSMessageError;
-int                CurrentSMSPointer;
-
-GSM_SMSFolders      *CurrentSMSFolders;
-GSM_Error          CurrentSMSFoldersError;
-int                CurrentSMSFoldersCount;
-
-GSM_OneSMSFolder   CurrentSMSFolder;
-GSM_Error          CurrentSMSFolderError;
-int                CurrentSMSFolderID;
-
-GSM_MemoryStatus   *CurrentMemoryStatus;
-GSM_Error          CurrentMemoryStatusError;
-
-GSM_NetworkInfo    *CurrentNetworkInfo;
-GSM_Error          CurrentNetworkInfoError;
-
-GSM_SMSStatus      *CurrentSMSStatus;
-GSM_Error          CurrentSMSStatusError;
-
-GSM_MessageCenter  *CurrentMessageCenter;
-GSM_Error          CurrentMessageCenterError;
-
-int                *CurrentSecurityCodeStatus;
-GSM_Error          CurrentSecurityCodeError;
-GSM_SecurityCode   *CurrentSecurityCode;
-
-GSM_DateTime       *CurrentDateTime;
-GSM_Error          CurrentDateTimeError;
-
-GSM_Error          CurrentResetPhoneSettingsError;
-
-GSM_DateTime       *CurrentAlarm;
-GSM_Error          CurrentAlarmError;
-
-GSM_CalendarNote   *CurrentCalendarNote;
-GSM_Error          CurrentCalendarNoteError;
-
-GSM_NotesInfo      CurrentCalendarNotesInfo,*CurrentCalendarNotesInfo2;
-GSM_Error          CurrentCalendarNotesInfoError;
-
-int                *CurrentFirstCalendarFreePos;
-GSM_Error          CurrentFirstCalendarFreePosError;
-
-GSM_Error          CurrentSetDateTimeError;
-GSM_Error          CurrentSetAlarmError;
-
-GSM_Error          CurrentEnableExtendedCommandsError;
-
-int                CurrentRFLevel,
-                   CurrentBatteryLevel,
-                   CurrentPowerSource;
-
-int                CurrentDisplayStatus;
-GSM_Error          CurrentDisplayStatusError;
-
-char               *CurrentNetmonitor;
-GSM_Error          CurrentNetmonitorError;
-
-GSM_Bitmap         *CurrentGetBitmap;
-GSM_Error          CurrentGetBitmapError;
-
-GSM_Error          CurrentSetBitmapError;
-
-GSM_Error          CurrentSendDTMFError;
-
-GSM_Profile        *CurrentProfile;
-GSM_Error          CurrentProfileError;
-
-GSM_Error          CurrentDisplayOutputError;
-
-GSM_CBMessage      *CurrentCBMessage;
-GSM_Error          CurrentCBError;
-
-int                CurrentPressKeyEvent;
-GSM_Error          CurrentPressKeyError;
-
-GSM_Error          CurrentPlayToneError;
-
-GSM_Error          CurrentDialVoiceError;
-
-GSM_Error          CurrentGetOperatorNameError;
-GSM_Network        *CurrentGetOperatorNameNetwork;
-GSM_Error          CurrentSetOperatorNameError;
 
 
-GSM_Error          CurrentGetIMEIError;
-
-GSM_Error          CurrentGetHWError;
-
-unsigned char      CurrentPPS[4];
-GSM_Error          CurrentProductProfileSettingsError;
-
-char               CurrentIncomingCall[20];
-
-GSM_Error          CurrentBinRingtoneError;
-GSM_BinRingtone    *CurrentGetBinRingtone;
-
-GSM_Error          CurrentRingtoneError; 
-
-GSM_Error          CurrentMagicError;
-
-GSM_Error          CurrentSimlockInfoError;
-GSM_AllSimlocks    *CurrentSimLock;
-
-GSM_Error          CurrentGetWAPBookmarkError;
-GSM_Error          CurrentSetWAPBookmarkError;
-GSM_WAPBookmark    *WAPBookmark;
-
-GSM_Error          CurrentGetWAPSettingsError;
-GSM_WAPSettings    *WAPSettings;
-
-GSM_Error          CurrentCallDivertError;
-GSM_CallDivert    *CurrentCallDivert;
-
-char              *CurrentManufacturer;
-
-/* This is the connection type used in gnokii. */
-GSM_ConnectionType CurrentConnectionType;
-
-/* Pointer to a callback function used to return changes to a calls status */
-/* This saves unreliable polling */
-void (*CurrentCallPassup)(char c);
-
-/* Pointer to callback function in user code to be called when RLP frames
-   are received. */
-void (*CurrentRLP_RXCallback)(RLP_F96Frame *frame);
-
-/* Used to disconnect the call */
-u8 CurrentCallSequenceNumber;
-
-bool CurrentLinkOK;
-
-bool CurrentRequestTerminate;
-
-bool CurrentDisableKeepAlive;
+/* Ugly compatibility cludge: */
+extern GSM_Error compat_Phone_Functions(GSM_Operation op, GSM_Data *data, GSM_Statemachine *state);
 
 /* Prototype for the functions actually provided by gsm-api.c. */
 
 
 /* Prototype for the functions actually provided by gsm-api.c. */
 
-GSM_Error GSM_Initialise(char *model, char *device, char *initlength, GSM_ConnectionType connection, void (*rlp_callback)(RLP_F96Frame *frame), char* SynchronizeTime);
-
-bool CheckModel (GSM_Information InfoToCheck, char *model, GSM_ConnectionType connection);
-
-char *GetMygnokiiVersion();
-
-typedef enum {
-  F_CAL61=1,/*Calendar in 6110 style - 4 types,...*/
-  F_CAL33,  /*Calendar in 3310 style - 10 reminders, Unicode, 3 coding types*/
-  F_CAL71,  /*Calendar in 7110 style - 4 types, recurrance, etc.*/
-
-  F_PBK33SIM,/*Phonebook in Unicode(3310 style).Name and number.No internal*/
-  F_PBK33INT,/*Phonebook in Unicode(3310 style).Name and number.Internal available*/
-  F_PBK71INT,/*Extended phonebook-multiple numbers,Unicode(7110 style).Internal available*/
-  F_PBK61INT,/*Name and number,no Unicode(6110 style).Internal available*/
-
-  F_DATA61, /*We can make data calls using gnokiid. Like in 6110*/
-  F_DATA71, /*Datacalls using AT commands*/
-
-  F_SMS,    /*SMS with Inbox, Outbox*/ /*10*/
-  F_SMS71,  /*SMS with SMS folders like in 7110*/ 
-
-  F_AUTH,   /*We can make authentication and have "Accessory connected" like in 6110*/
-  F_NETMON, /*Netmonitor available*/ 
-  F_CALER61,/*Caller groups in 6110 style - 5 groups with members*/
-  F_KEYB,   /*We can press keys*/
-  F_SMSCDEF,/*SMSC can have default recipient*/
-  F_SPEED,  /*We can handle speed dials*/
-  F_SCRSAV, /*We have screen savers*/
-  F_DTMF,   /*We can handle DTMF sequences*/
-  F_NOPOWER,/*We must get power/battery info from netmonitor*/ /*20*/
-
-  F_STANIM, /*Startup logo animated or static*/ 
-  F_STA   , /*Startup logo static*/
-  F_STA62 , /*Startup logo static size 6210*/ 
-  F_STA71 , /*Startup logo static size 7110*/
-
-  F_PROF61, /*Profiles numbered like in N6110*/
-  F_PROF51, /*Profiles numbered like in N5110*/
-  F_PROF33, /*Profiles numbered like in N3310.Unicode names*/
-
-  F_RING_SM,/*Binary ringtone in Smart Messaging*/
-  F_RINGBIN,/*Binary ringtone in binary format*/
-
-  F_WAP     /*WAP functions available*/ /*30*/
-} feat_index;
-
-typedef enum {
-  FN_CALENDAR=0,
-  FN_NETMONITOR,
-  FN_CALLERGROUPS,
-  FN_PHONEBOOK,
-  FN_AUTHENTICATION,
-  FN_DATACALLS,
-  FN_KEYPRESS,
-  FN_SMSCDEFAULT,
-  FN_SPEEDDIAL,
-  FN_SCREENSAVER,
-  FN_DTMF, /*10*/
-  FN_SMS,
-  FN_NOPOWERFRAME,
-  FN_STARTUP,
-  FN_PROFILES,
-  FN_RINGTONES,
-  FN_WAP,
-  FN_RINGNUMBER
-} featnum_index;
-
-/* For models table */
-typedef struct {
-  char *model;
-  char *number;
-  feat_index features[18];  
-} OnePhoneModel;
-
-extern char *GetModelName ();
-int GetModelFeature (featnum_index num);
-
-extern bool AppendLog(u8 *buffer, int length,bool format);
-extern bool AppendLogText(u8 *buffer,bool format);
-
-typedef struct {
-  int                SIMPhonebookUsed;
-  int                SIMPhonebookSize;
-  GSM_PhonebookEntry SIMPhonebook[250];
-
-  int                PhonePhonebookUsed;
-  int                PhonePhonebookSize;
-  GSM_PhonebookEntry PhonePhonebook[500];
-
-  bool               CallerAvailable;
-  GSM_Bitmap         CallerGroups[5];
-
-  bool               SpeedAvailable;
-  GSM_SpeedDial      SpeedDials[8];
-
-  bool               OperatorLogoAvailable;
-  GSM_Bitmap         OperatorLogo;
-
-  bool               StartupLogoAvailable;
-  GSM_Bitmap         StartupLogo;
+extern GSM_Error GSM_Initialise(char *model, char *device, char *initlength, GSM_ConnectionType connection, void (*rlp_handler)(RLP_F96Frame *frame), GSM_Statemachine *sm);
 
 
-  GSM_Bitmap         StartupText;
-} GSM_Backup;
+/* All the rest of the API functions are contained in the GSM_Function
+   structure which ultimately points into the model specific code. */
 
 #endif /* __gsm_api_h */
 
 #endif /* __gsm_api_h */