summaryrefslogtreecommitdiffabout
path: root/gammu/emb/common/gsmstate.h
Side-by-side diff
Diffstat (limited to 'gammu/emb/common/gsmstate.h') (more/less context) (ignore whitespace changes)
-rw-r--r--gammu/emb/common/gsmstate.h31
1 files changed, 24 insertions, 7 deletions
diff --git a/gammu/emb/common/gsmstate.h b/gammu/emb/common/gsmstate.h
index cb17623..2b4806c 100644
--- a/gammu/emb/common/gsmstate.h
+++ b/gammu/emb/common/gsmstate.h
@@ -1,1562 +1,1579 @@
/* (c) 2002-2004 by Marcin Wiacek & Michal Cihar */
#ifndef __gsm_state_h
#define __gsm_state_h
#include <time.h>
#include "config.h"
#include "misc/cfg.h"
+typedef struct _GSM_StateMachine GSM_StateMachine;
+typedef struct _GSM_User GSM_User;
+typedef struct _OnePhoneModel OnePhoneModel;
+typedef struct _GSM_Reply_Function GSM_Reply_Function;
+
#ifdef GSM_ENABLE_NOKIA3320
# include "phone/nokia/dct4/n3320.h"
#endif
#ifdef GSM_ENABLE_NOKIA3650
# include "phone/nokia/dct4/n3650.h"
#endif
+#ifdef GSM_ENABLE_NOKIA650
+# include "phone/nokia/dct3/n0650.h"
+#endif
#ifdef GSM_ENABLE_NOKIA6110
# include "phone/nokia/dct3/n6110.h"
#endif
#ifdef GSM_ENABLE_NOKIA6510
# include "phone/nokia/dct4/n6510.h"
#endif
#ifdef GSM_ENABLE_NOKIA7110
# include "phone/nokia/dct3/n7110.h"
#endif
#ifdef GSM_ENABLE_NOKIA9210
# include "phone/nokia/dct3/n9210.h"
#endif
#ifdef GSM_ENABLE_ATGEN
# include "phone/at/atgen.h"
#endif
#ifdef GSM_ENABLE_ALCATEL
# include "phone/alcatel/alcatel.h"
#endif
#ifdef GSM_ENABLE_OBEXGEN
# include "phone/obex/obexgen.h"
#endif
#ifdef GSM_ENABLE_MROUTERGEN
# include "phone/symbian/mroutgen.h"
#endif
#ifndef GSM_USED_MBUS2
# undef GSM_ENABLE_MBUS2
#endif
#ifndef GSM_USED_FBUS2
# undef GSM_ENABLE_FBUS2
#endif
#ifndef GSM_USED_FBUS2DLR3
# undef GSM_ENABLE_FBUS2DLR3
#endif
#ifndef GSM_USED_FBUS2DKU5
# undef GSM_ENABLE_FBUS2DKU5
#endif
#ifndef GSM_USED_FBUS2PL2303
# undef GSM_ENABLE_FBUS2PL2303
#endif
#ifndef GSM_USED_FBUS2BLUE
# undef GSM_ENABLE_FBUS2BLUE
#endif
#ifndef GSM_USED_FBUS2IRDA
# undef GSM_ENABLE_FBUS2IRDA
#endif
#ifndef GSM_USED_PHONETBLUE
# undef GSM_ENABLE_PHONETBLUE
#endif
#ifndef GSM_USED_AT
# undef GSM_ENABLE_AT
#endif
#ifndef GSM_USED_IRDAOBEX
# undef GSM_ENABLE_IRDAOBEX
#endif
#ifndef GSM_USED_BLUEOBEX
# undef GSM_ENABLE_BLUEOBEX
#endif
#ifndef GSM_USED_ALCABUS
# undef GSM_ENABLE_ALCABUS
#endif
#ifndef GSM_USED_IRDAPHONET
# undef GSM_ENABLE_IRDAPHONET
#endif
#ifndef GSM_USED_BLUEFBUS2
# undef GSM_ENABLE_BLUEFBUS2
#endif
#ifndef GSM_USED_BLUEPHONET
# undef GSM_ENABLE_BLUEPHONET
#endif
#ifndef GSM_USED_BLUEAT
# undef GSM_ENABLE_BLUEAT
#endif
#ifndef GSM_USED_IRDAAT
# undef GSM_ENABLE_IRDAAT
#endif
#ifndef GSM_USED_MROUTERBLUE
# undef GSM_ENABLE_MROUTERBLUE
#endif
-#if defined(GSM_ENABLE_NOKIA3320) || defined(GSM_ENABLE_NOKIA6110) || defined(GSM_ENABLE_NOKIA7110) || defined(GSM_ENABLE_NOKIA9210)
+#if defined(GSM_ENABLE_NOKIA3320) || defined(GSM_ENABLE_NOKIA650) || defined(GSM_ENABLE_NOKIA6110) || defined(GSM_ENABLE_NOKIA7110) || defined(GSM_ENABLE_NOKIA9210)
# define GSM_ENABLE_NOKIA_DCT3
#endif
#if defined(GSM_ENABLE_NOKIA3650) || defined(GSM_ENABLE_NOKIA6510)
# define GSM_ENABLE_NOKIA_DCT4
#endif
#include "protocol/protocol.h"
#if defined(GSM_ENABLE_FBUS2) || defined(GSM_ENABLE_FBUS2IRDA) || defined(GSM_ENABLE_FBUS2DLR3) || defined(GSM_ENABLE_FBUS2BLUE) || defined(GSM_ENABLE_BLUEFBUS2) || defined(GSM_ENABLE_FBUS2DKU5) || defined(GSM_ENABLE_FBUS2PL2303)
# include "protocol/nokia/fbus2.h"
#endif
#ifdef GSM_ENABLE_MBUS2
# include "protocol/nokia/mbus2.h"
#endif
#if defined(GSM_ENABLE_PHONETBLUE) || defined(GSM_ENABLE_IRDAPHONET) || defined(GSM_ENABLE_BLUEPHONET)
# include "protocol/nokia/phonet.h"
#endif
#if defined(GSM_ENABLE_AT) || defined(GSM_ENABLE_BLUEAT) || defined(GSM_ENABLE_IRDAAT)
# include "protocol/at/at.h"
#endif
#ifdef GSM_ENABLE_ALCABUS
# include "protocol/alcatel/alcabus.h"
#endif
#if defined(GSM_ENABLE_IRDAOBEX) || defined(GSM_ENABLE_BLUEOBEX)
# include "protocol/obex/obex.h"
#endif
#if defined(GSM_ENABLE_MROUTERBLUE)
# include "protocol/symbian/mrouter.h"
#endif
#define GSM_ENABLE_SERIALDEVICE
#ifndef GSM_USED_SERIALDEVICE
# undef GSM_ENABLE_SERIALDEVICE
#endif
#define GSM_ENABLE_IRDADEVICE
#ifndef GSM_USED_IRDADEVICE
# undef GSM_ENABLE_IRDADEVICE
#endif
#define GSM_ENABLE_BLUETOOTHDEVICE
#ifndef GSM_USED_BLUETOOTHDEVICE
# undef GSM_ENABLE_BLUETOOTHDEVICE
#endif
#ifdef DJGPP
# undef GSM_ENABLE_IRDADEVICE
# undef GSM_ENABLE_IRDAPHONET
# undef GSM_ENABLE_IRDAOBEX
# undef GSM_ENABLE_IRDAAT
# undef GSM_ENABLE_FBUS2IRDA
# undef GSM_ENABLE_BLUETOOTHDEVICE
# undef GSM_ENABLE_BLUEPHONET
# undef GSM_ENABLE_BLUEOBEX
# undef GSM_ENABLE_BLUEAT
# undef GSM_ENABLE_BLUEFBUS2
# undef GSM_ENABLE_PHONETBLUE
# undef GSM_ENABLE_FBUS2BLUE
# undef GSM_ENABLE_MROUTERBLUE
#endif
#ifndef WIN32
# ifdef ENABLE_LGPL
# undef GSM_ENABLE_IRDADEVICE
# undef GSM_ENABLE_IRDAPHONET
# undef GSM_ENABLE_IRDAOBEX
# undef GSM_ENABLE_IRDAAT
# undef GSM_ENABLE_FBUS2IRDA
# undef GSM_ENABLE_BLUETOOTHDEVICE
# undef GSM_ENABLE_BLUEPHONET
# undef GSM_ENABLE_BLUEOBEX
# undef GSM_ENABLE_BLUEAT
# undef GSM_ENABLE_BLUEFBUS2
# undef GSM_ENABLE_PHONETBLUE
# undef GSM_ENABLE_FBUS2BLUE
# undef GSM_ENABLE_MROUTERBLUE
# endif
#endif
#ifdef GSM_ENABLE_SERIALDEVICE
# include "device/serial/ser_w32.h"
# include "device/serial/ser_unx.h"
# include "device/serial/ser_djg.h"
#endif
#ifdef GSM_ENABLE_IRDADEVICE
# include "device/irda/irda.h"
#endif
#ifdef GSM_ENABLE_BLUETOOTHDEVICE
# include "device/bluetoth/bluetoth.h"
#endif
#include "service/gsmpbk.h"
#include "service/gsmnet.h"
#include "service/gsmring.h"
#include "service/gsmcal.h"
#include "service/gsmdata.h"
#include "service/gsmlogo.h"
#include "service/gsmmisc.h"
#include "service/gsmprof.h"
#include "service/gsmcall.h"
#include "service/sms/gsmsms.h"
#include "service/sms/gsmems.h"
#include "service/sms/gsmmulti.h"
#include "service/backup/gsmback.h"
-typedef struct _GSM_StateMachine GSM_StateMachine;
-typedef struct _GSM_User GSM_User;
-typedef struct _OnePhoneModel OnePhoneModel;
/* ------------------------- Device layer ---------------------------------- */
/**
* Device functions, each device has to provide these.
*/
typedef struct {
/**
* Opens device.
*/
GSM_Error (*OpenDevice) (GSM_StateMachine *s);
/**
* Closes device.
*/
GSM_Error (*CloseDevice) (GSM_StateMachine *s);
/**
* Sets parity for device.
*/
GSM_Error (*DeviceSetParity) (GSM_StateMachine *s, bool parity);
/**
* Sets dtr (data to read) and rts (ready to send) flags.
*/
GSM_Error (*DeviceSetDtrRts) (GSM_StateMachine *s, bool dtr, bool rts);
/**
* Sets device speed.
*/
GSM_Error (*DeviceSetSpeed) (GSM_StateMachine *s, int speed);
/**
* Attempts to read nbytes from device.
*/
int (*ReadDevice) (GSM_StateMachine *s, void *buf, size_t nbytes);
/**
* Attempts to read nbytes from device.
*/
int (*WriteDevice) (GSM_StateMachine *s, void *buf, size_t nbytes);
} GSM_Device_Functions;
#ifdef GSM_ENABLE_SERIALDEVICE
extern GSM_Device_Functions SerialDevice;
#endif
#ifdef GSM_ENABLE_IRDADEVICE
extern GSM_Device_Functions IrdaDevice;
#endif
#ifdef GSM_ENABLE_BLUETOOTHDEVICE
extern GSM_Device_Functions BlueToothDevice;
#endif
/**
* Structure containing device specific data and pointer to device functions -
* @ref GSM_Device_Functions. The data are in a union, so you can use only
* one device at one time.
*/
typedef struct {
union {
char fake;
#ifdef GSM_ENABLE_SERIALDEVICE
GSM_Device_SerialData Serial;
#endif
#ifdef GSM_ENABLE_IRDADEVICE
GSM_Device_IrdaData Irda;
#endif
#ifdef GSM_ENABLE_BLUETOOTHDEVICE
GSM_Device_BlueToothData BlueTooth;
#endif
} Data;
GSM_Device_Functions *Functions;
} GSM_Device;
/* ---------------------- Protocol layer ----------------------------------- */
/**
* Protocol functions, each protocol has to implement these.
*/
typedef struct {
/**
* Writes message to device.
*/
GSM_Error (*WriteMessage) (GSM_StateMachine *s, unsigned char *buffer,
int length, unsigned char type);
/**
* This one is called when character is received from device.
*/
GSM_Error (*StateMachine) (GSM_StateMachine *s, unsigned char rx_char);
/**
* Protocol initialisation.
*/
GSM_Error (*Initialise) (GSM_StateMachine *s);
/**
* Protocol termination.
*/
GSM_Error (*Terminate) (GSM_StateMachine *s);
} GSM_Protocol_Functions;
#ifdef GSM_ENABLE_MBUS2
extern GSM_Protocol_Functions MBUS2Protocol;
#endif
#if defined(GSM_ENABLE_FBUS2) || defined(GSM_ENABLE_FBUS2IRDA) || defined(GSM_ENABLE_FBUS2DLR3) || defined(GSM_ENABLE_FBUS2DKU5) || defined(GSM_ENABLE_FBUS2BLUE) || defined(GSM_ENABLE_BLUEFBUS2) || defined(GSM_ENABLE_FBUS2PL2303)
extern GSM_Protocol_Functions FBUS2Protocol;
#endif
#if defined(GSM_ENABLE_PHONETBLUE) || defined(GSM_ENABLE_IRDAPHONET) || defined(GSM_ENABLE_BLUEPHONET)
extern GSM_Protocol_Functions PHONETProtocol;
#endif
#if defined(GSM_ENABLE_AT) || defined(GSM_ENABLE_BLUEAT) || defined(GSM_ENABLE_IRDAAT)
extern GSM_Protocol_Functions ATProtocol;
#endif
#ifdef GSM_ENABLE_ALCABUS
extern GSM_Protocol_Functions ALCABUSProtocol;
#endif
#if defined(GSM_ENABLE_IRDAOBEX) || defined(GSM_ENABLE_BLUEOBEX)
extern GSM_Protocol_Functions OBEXProtocol;
#endif
#if defined(GSM_ENABLE_MROUTERBLUE)
extern GSM_Protocol_Functions MROUTERProtocol;
#endif
/**
* Structure containing protocol specific data and pointer to protocol
* functions - @ref GSM_Protocol_Functions. The data are in a structure, so
* you may use more protocols at once and switch between them.
*/
typedef struct {
struct {
char fake;
#ifdef GSM_ENABLE_MBUS2
GSM_Protocol_MBUS2Data MBUS2;
#endif
#if defined(GSM_ENABLE_FBUS2) || defined(GSM_ENABLE_FBUS2IRDA) || defined(GSM_ENABLE_FBUS2DLR3) || defined(GSM_ENABLE_FBUS2DKU5) || defined(GSM_ENABLE_FBUS2PL2303) || defined(GSM_ENABLE_FBUS2BLUE) || defined(GSM_ENABLE_BLUEFBUS2)
GSM_Protocol_FBUS2Data FBUS2;
#endif
#if defined(GSM_ENABLE_PHONETBLUE) || defined(GSM_ENABLE_IRDAPHONET) || defined(GSM_ENABLE_BLUEPHONET)
GSM_Protocol_PHONETData PHONET;
#endif
#if defined(GSM_ENABLE_AT) || defined(GSM_ENABLE_BLUEAT) || defined(GSM_ENABLE_IRDAAT)
GSM_Protocol_ATData AT;
#endif
#ifdef GSM_ENABLE_ALCABUS
GSM_Protocol_ALCABUSData ALCABUS;
#endif
#if defined(GSM_ENABLE_IRDAOBEX) || defined(GSM_ENABLE_BLUEOBEX)
GSM_Protocol_OBEXData OBEX;
#endif
#if defined(GSM_ENABLE_MROUTERBLUE)
GSM_Protocol_MROUTERData MROUTER;
#endif
} Data;
GSM_Protocol_Functions *Functions;
} GSM_Protocol;
/* -------------------------- Phone layer ---------------------------------- */
/**
* Phone requests identificators, these are used for internally identifying
* which operation is being performed.
*/
typedef enum {
ID_None=1,
ID_GetModel,
ID_GetFirmware,
ID_EnableSecurity,
ID_GetIMEI,
ID_GetDateTime,
ID_GetAlarm,
ID_GetMemory,
ID_GetMemoryStatus,
ID_GetSMSC,
ID_GetSMSMessage,
ID_EnableEcho,
ID_EnableErrorInfo,
ID_SetOBEX,
+ ID_SetUSSD,
+ ID_GetNote,
ID_GetSignalQuality,
ID_GetBatteryCharge,
ID_GetSMSFolders,
ID_GetSMSFolderStatus,
ID_GetSMSStatus,
ID_AddSMSFolder,
ID_GetNetworkInfo,
ID_GetRingtone,
ID_DialVoice,
ID_GetCalendarNotesInfo,
ID_GetCalendarNote,
ID_GetSecurityCode,
ID_GetWAPBookmark,
ID_GetBitmap,
ID_SaveSMSMessage,
ID_CancelCall,
ID_SetDateTime,
ID_SetAlarm,
ID_DisableConnectFunc,
ID_EnableConnectFunc,
ID_AnswerCall,
ID_SetBitmap,
ID_SetRingtone,
ID_DeleteSMSMessage,
ID_DeleteCalendarNote,
ID_SetPath,
ID_SetSMSC,
ID_SetProfile,
ID_SetMemory,
ID_DeleteMemory,
ID_SetCalendarNote,
ID_SetIncomingSMS,
ID_SetIncomingCB,
ID_GetCalendarNotePos,
ID_Initialise,
ID_GetConnectSet,
ID_SetWAPBookmark,
ID_GetLocale,
ID_SetLocale,
ID_GetCalendarSettings,
ID_SetCalendarSettings,
ID_GetGPRSPoint,
ID_SetGPRSPoint,
ID_EnableGPRSPoint,
ID_DeleteWAPBookmark,
ID_Netmonitor,
ID_HoldCall,
ID_UnholdCall,
ID_ConferenceCall,
ID_SplitCall,
ID_TransferCall,
ID_SwitchCall,
ID_GetManufactureMonth,
ID_GetProductCode,
ID_GetOriginalIMEI,
ID_GetHardware,
ID_GetPPM,
ID_GetSMSMode,
ID_GetSMSMemories,
ID_GetManufacturer,
ID_SetMemoryType,
ID_SetMemoryCharset,
ID_GetMMSSettings,
ID_SetSMSParameters,
ID_GetFMStation,
ID_SetFMStation,
ID_GetLanguage,
+ ID_SetFastSMSSending,
ID_Reset,
ID_GetToDo,
ID_PressKey,
ID_DeleteAllToDo,
ID_SetLight,
ID_Divert,
ID_SetToDo,
ID_PlayTone,
ID_GetChatSettings,
ID_GetSyncMLSettings,
ID_GetSyncMLName,
ID_GetSecurityStatus,
ID_EnterSecurityCode,
ID_GetProfile,
ID_GetRingtonesInfo,
ID_MakeAuthentication,
ID_GetSpeedDial,
ID_ResetPhoneSettings,
ID_SendDTMF,
ID_GetDisplayStatus,
ID_SetAutoNetworkLogin,
ID_SetConnectSet,
ID_SetMMSSettings,
ID_GetSIMIMSI,
ID_GetFileInfo,
ID_FileSystemStatus,
ID_GetFile,
ID_AddFile,
ID_AddFolder,
ID_DeleteFile,
#ifdef GSM_ENABLE_ALCATEL
/* AT mode */
ID_SetFlowControl,
ID_AlcatelConnect,
ID_AlcatelProtocol,
/* Binary mode */
ID_AlcatelAttach,
ID_AlcatelDetach,
ID_AlcatelCommit,
ID_AlcatelCommit2,
ID_AlcatelEnd,
ID_AlcatelClose,
ID_AlcatelStart,
ID_AlcatelSelect1,
ID_AlcatelSelect2,
ID_AlcatelSelect3,
ID_AlcatelBegin1,
ID_AlcatelBegin2,
ID_AlcatelGetIds1,
ID_AlcatelGetIds2,
ID_AlcatelGetCategories1,
ID_AlcatelGetCategories2,
ID_AlcatelGetCategoryText1,
ID_AlcatelGetCategoryText2,
ID_AlcatelAddCategoryText1,
ID_AlcatelAddCategoryText2,
ID_AlcatelGetFields1,
ID_AlcatelGetFields2,
ID_AlcatelGetFieldValue1,
ID_AlcatelGetFieldValue2,
ID_AlcatelDeleteItem1,
ID_AlcatelDeleteItem2,
ID_AlcatelDeleteField,
ID_AlcatelCreateField,
ID_AlcatelUpdateField,
#endif
ID_IncomingFrame,
ID_User1,
ID_User2,
ID_User3,
ID_User4,
ID_User5,
ID_User6,
ID_User7,
ID_User8,
ID_User9,
ID_User10,
ID_EachFrame
} GSM_Phone_RequestID;
/**
* Phone related data are stored here.
*/
typedef struct {
/**
* Phone IMEI (or serial number).
*/
char IMEI[MAX_IMEI_LENGTH];
/**
* Phone manufacturer as reported by phone.
*/
char Manufacturer[MAX_MANUFACTURER_LENGTH];
/**
* Phone model as reported by phone.
*/
char Model[MAX_MODEL_LENGTH];
/**
* Model information, pointer to static @ref allmodels array.
*/
OnePhoneModel *ModelInfo;
/**
* Phone version as reported by phone. It doesn't have to be numerical
* at all.
*/
char Version[MAX_VERSION_LENGTH];
/**
* Phone version date, might be empty for some models.
*/
char VerDate[MAX_VERSION_DATE_LENGTH];
/**
* Phone version as number, if applicable.
*/
double VerNum;
/**
* Cache for hardware version used by some modules.
*/
char HardwareCache[50];
/**
* Cache for product code version used by some modules.
*/
char ProductCodeCache[50];
/**
* Counter used for disabling startup info on phone, see
* @ref GSM_Phone_Functions::ShowStartInfo . After this is 0, the startup info is hidden.
*/
int StartInfoCounter;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_GPRSAccessPoint *GPRSPoint;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_SpeedDial *SpeedDial;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_DateTime *DateTime;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_Alarm *Alarm;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_MemoryEntry *Memory;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_MemoryStatus *MemoryStatus;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_SMSC *SMSC;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_MultiSMSMessage *GetSMSMessage;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_SMSMessage *SaveSMSMessage;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_SMSMemoryStatus *SMSStatus;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_SMSFolders *SMSFolders;
/**
* Used internally by phone drivers.
*/
int *VoiceRecord;
/**
* Used internally by phone drivers.
*/
int CallID;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_SignalQuality *SignalQuality;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_BatteryCharge *BatteryCharge;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_NetworkInfo *NetworkInfo;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_Ringtone *Ringtone;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_CalendarEntry *Cal;
/**
* Used internally by phone drivers.
*/
unsigned char *SecurityCode;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_WAPBookmark *WAPBookmark;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_MultiWAPSettings *WAPSettings;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_Bitmap *Bitmap;
/**
* Used internally by phone drivers.
*/
unsigned char *Netmonitor;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_MultiCallDivert *Divert;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_ToDoEntry *ToDo;
+ GSM_NoteEntry *Note;
/**
* Used internally by phone drivers.
*/
bool PressKey;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_SecurityCodeType *SecurityStatus;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_Profile *Profile;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_AllRingtonesInfo *RingtonesInfo;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_DisplayFeatures *DisplayFeatures;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_FMStation *FMStation;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_Locale *Locale;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_CalendarSettings *CalendarSettings;
/**
* Used internally by phone drivers.
*/
unsigned char *PhoneString;
/**
* Used internally by phone drivers.
*/
int StartPhoneString;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_File *FileInfo;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_File *File;
/**
* Pointer to structure used internally by phone drivers.
*/
GSM_FileSystemStatus *FileSystemStatus;
GSM_ChatSettings *ChatSettings;
GSM_SyncMLSettings *SyncMLSettings;
/**
* Should phone notify about incoming calls?
*/
bool EnableIncomingCall;
/**
* Should phone notify about incoming SMSes?
*/
bool EnableIncomingSMS;
/**
* Should phone notify about incoming CBs?
*/
bool EnableIncomingCB;
/**
* Should phone notify about incoming USSDs?
*/
bool EnableIncomingUSSD;
/**
* Last message received from phone.
*/
GSM_Protocol_Message *RequestMsg;
/**
* Last message sent by Gammu.
*/
GSM_Protocol_Message *SentMsg;
/**
* What operation is being performed now, see @ref GSM_Phone_RequestID
* for possible values.
*/
GSM_Phone_RequestID RequestID;
/**
* Error returned by function in phone module.
*/
GSM_Error DispatchError;
/**
* Structure with private phone modules data.
*/
struct {
int fake;
#ifdef GSM_ENABLE_NOKIA3320
GSM_Phone_N3320Data N3320;
#endif
#ifdef GSM_ENABLE_NOKIA3650
GSM_Phone_N3650Data N3650;
#endif
+#ifdef GSM_ENABLE_NOKIA650
+ GSM_Phone_N650Data N650;
+#endif
#ifdef GSM_ENABLE_NOKIA6110
GSM_Phone_N6110Data N6110;
#endif
#ifdef GSM_ENABLE_NOKIA6510
GSM_Phone_N6510Data N6510;
#endif
#ifdef GSM_ENABLE_NOKIA7110
GSM_Phone_N7110Data N7110;
#endif
#ifdef GSM_ENABLE_ATGEN
GSM_Phone_ATGENData ATGEN;
#endif
#ifdef GSM_ENABLE_ALCATEL
GSM_Phone_ALCATELData ALCATEL;
#endif
#ifdef GSM_ENABLE_OBEXGEN
GSM_Phone_OBEXGENData OBEXGEN;
#endif
#ifdef GSM_ENABLE_MROUTERGEN
GSM_Phone_MROUTERGENData MROUTERGEN;
#endif
} Priv;
} GSM_Phone_Data;
/**
* Structure for defining reply functions.
*
* Function is called when requestID matches current operation or is
* ID_IncomingFrame and msgtype matches start message and (if msgtype is just
* one character) subtypechar is zero or subtypechar-th character of message
* matches subtype.
*
* Should be used in array with last element containing ID_None as requestID.
*/
-typedef struct {
+struct _GSM_Reply_Function {
/**
* Pointer to function that should be executed.
*/
GSM_Error (*Function) (GSM_Protocol_Message msg, GSM_StateMachine *s);
/**
* Message type, if it is longer than 1 character, it disables subtype
* checking.
*/
unsigned char *msgtype;
/**
* Which character of message should be checked as subtype. Zero to
* disable subtype checking.
*/
int subtypechar;
/**
* Subtype to be checked.
*/
unsigned char subtype;
/**
* Phone request when this can be called, use ID_IncomingFrame when
* you want to use this in any state.
*/
GSM_Phone_RequestID requestID;
-} GSM_Reply_Function;
+};
/**
* Structure defining phone functions.
*/
typedef struct {
/**
* Names of supported models separated by |. Must contain at least one
* name.
*/
char *models;
/**
* Array of reply functions for the phone, see
* @ref GSM_Reply_Function for details about it.
*/
GSM_Reply_Function *ReplyFunctions;
/**
* Initializes phone.
*/
GSM_Error (*Initialise) (GSM_StateMachine *s);
/**
* Terminates phone communication.
*/
GSM_Error (*Terminate) (GSM_StateMachine *s);
/**
* Dispatches messages from phone, at the end it should call
* @ref GSM_DispatchMessage.
*/
GSM_Error (*DispatchMessage) (GSM_StateMachine *s);
/**
* Enables showing information on phone display.
*/
GSM_Error (*ShowStartInfo) (GSM_StateMachine *s, bool enable);
/**
* Reads manufacturer from phone.
*/
GSM_Error (*GetManufacturer) (GSM_StateMachine *s);
/**
* Reads model from phone.
*/
GSM_Error (*GetModel) (GSM_StateMachine *s);
/**
* Reads firmware information from phone.
*/
GSM_Error (*GetFirmware) (GSM_StateMachine *s);
/**
* Reads IMEI/serial number from phone.
*/
GSM_Error (*GetIMEI) (GSM_StateMachine *s);
/**
* Gets date and time from phone.
*/
GSM_Error (*GetOriginalIMEI) (GSM_StateMachine *s, char *value);
/**
* Gets month when device was manufactured.
*/
GSM_Error (*GetManufactureMonth)(GSM_StateMachine *s, char *value);
/**
* Gets product code of device.
*/
GSM_Error (*GetProductCode) (GSM_StateMachine *s, char *value);
/**
* Gets hardware information about device.
*/
GSM_Error (*GetHardware) (GSM_StateMachine *s, char *value);
/**
* Gets PPM (Post Programmable Memory) info from phone
* (in other words for Nokia get, which language pack is in phone)
*/
GSM_Error (*GetPPM) (GSM_StateMachine *s, char *value);
/**
* Gets SIM IMSI from phone.
*/
GSM_Error (*GetSIMIMSI) (GSM_StateMachine *s, char *IMSI);
/**
* Reads date and time from phone.
*/
GSM_Error (*GetDateTime) (GSM_StateMachine *s, GSM_DateTime *date_time);
/**
* Sets date and time in phone.
*/
GSM_Error (*SetDateTime) (GSM_StateMachine *s, GSM_DateTime *date_time);
/**
* Reads alarm set in phone.
*/
GSM_Error (*GetAlarm) (GSM_StateMachine *s, GSM_Alarm *alarm);
/**
* Sets alarm in phone.
*/
GSM_Error (*SetAlarm) (GSM_StateMachine *s, GSM_Alarm *alarm);
/**
* Gets locale from phone.
*/
GSM_Error (*GetLocale) (GSM_StateMachine *s, GSM_Locale *locale);
/**
* Sets locale of phone.
*/
GSM_Error (*SetLocale) (GSM_StateMachine *s, GSM_Locale *locale);
/**
* Emulates key press or key release.
*/
GSM_Error (*PressKey) (GSM_StateMachine *s, GSM_KeyCode Key, bool Press);
/**
* Performs phone reset.
*/
GSM_Error (*Reset) (GSM_StateMachine *s, bool hard);
/**
* Resets phone settings.
*/
GSM_Error (*ResetPhoneSettings) (GSM_StateMachine *s, GSM_ResetSettingsType Type);
/**
* Enters security code (PIN, PUK,...) .
*/
GSM_Error (*EnterSecurityCode) (GSM_StateMachine *s, GSM_SecurityCode Code);
/**
* Queries whether some security code needs to be entered./
*/
GSM_Error (*GetSecurityStatus) (GSM_StateMachine *s, GSM_SecurityCodeType *Status);
/**
* Acquired display status.
*/
GSM_Error (*GetDisplayStatus) (GSM_StateMachine *s, GSM_DisplayFeatures *features);
/**
* Enables network auto login.
*/
GSM_Error (*SetAutoNetworkLogin)(GSM_StateMachine *s);
/**
* Gets information about batery charge and phone charging state.
*/
GSM_Error (*GetBatteryCharge) (GSM_StateMachine *s, GSM_BatteryCharge *bat);
/**
* Reads signal quality (strength and error rate).
*/
GSM_Error (*GetSignalQuality) (GSM_StateMachine *s, GSM_SignalQuality *sig);
/**
* Gets network information.
*/
GSM_Error (*GetNetworkInfo) (GSM_StateMachine *s, GSM_NetworkInfo *netinfo);
/**
* Reads category from phone.
*/
GSM_Error (*GetCategory) (GSM_StateMachine *s, GSM_Category *Category);
/**
* Adds category to phone.
*/
GSM_Error (*AddCategory) (GSM_StateMachine *s, GSM_Category *Category);
/**
* Reads category status (number of used entries) from phone.
*/
GSM_Error (*GetCategoryStatus) (GSM_StateMachine *s, GSM_CategoryStatus *Status);
/**
* Gets memory (phonebooks or calls) status (eg. number of used and
* free entries).
*/
GSM_Error (*GetMemoryStatus) (GSM_StateMachine *s, GSM_MemoryStatus *status);
/**
* Reads entry from memory (phonebooks or calls). Which entry should
* be read is defined in entry.
*/
GSM_Error (*GetMemory) (GSM_StateMachine *s, GSM_MemoryEntry *entry);
/**
* Reads entry from memory (phonebooks or calls). Which entry should
* be read is defined in entry. This can be easily used for reading all entries.
*/
GSM_Error (*GetNextMemory) (GSM_StateMachine *s, GSM_MemoryEntry *entry, bool start);
/**
* Sets memory (phonebooks or calls) entry.
*/
GSM_Error (*SetMemory) (GSM_StateMachine *s, GSM_MemoryEntry *entry);
/**
* Deletes memory (phonebooks or calls) entry.
*/
GSM_Error (*AddMemory) (GSM_StateMachine *s, GSM_MemoryEntry *entry);
/**
* Deletes memory (phonebooks or calls) entry.
*/
GSM_Error (*DeleteMemory) (GSM_StateMachine *s, GSM_MemoryEntry *entry);
/**
* Deletes all memory (phonebooks or calls) entries of specified type.
*/
GSM_Error (*DeleteAllMemory) (GSM_StateMachine *s, GSM_MemoryType MemoryType);
/**
* Gets speed dial.
*/
GSM_Error (*GetSpeedDial) (GSM_StateMachine *s, GSM_SpeedDial *Speed);
/**
* Sets speed dial.
*/
GSM_Error (*SetSpeedDial) (GSM_StateMachine *s, GSM_SpeedDial *Speed);
/**
* Gets SMS Service Center number and SMS settings.
*/
GSM_Error (*GetSMSC) (GSM_StateMachine *s, GSM_SMSC *smsc);
/**
* Sets SMS Service Center number and SMS settings.
*/
GSM_Error (*SetSMSC) (GSM_StateMachine *s, GSM_SMSC *smsc);
/**
* Gets information about SMS memory (read/unread/size of memory for
* both SIM and phone).
*/
GSM_Error (*GetSMSStatus) (GSM_StateMachine *s, GSM_SMSMemoryStatus *status);
/**
* Reads SMS message.
*/
GSM_Error (*GetSMS) (GSM_StateMachine *s, GSM_MultiSMSMessage *sms);
/**
* Reads next (or first if start set) SMS message. This might be
* faster for some phones than using @ref GetSMS for each message.
*/
GSM_Error (*GetNextSMS) (GSM_StateMachine *s, GSM_MultiSMSMessage *sms, bool start);
/**
* Sets SMS.
*/
GSM_Error (*SetSMS) (GSM_StateMachine *s, GSM_SMSMessage *sms);
/**
* Adds SMS to specified folder.
*/
GSM_Error (*AddSMS) (GSM_StateMachine *s, GSM_SMSMessage *sms);
/**
* Deletes SMS.
*/
GSM_Error (*DeleteSMS) (GSM_StateMachine *s, GSM_SMSMessage *sms);
/**
* Sends SMS.
*/
GSM_Error (*SendSMS) (GSM_StateMachine *s, GSM_SMSMessage *sms);
/**
* Sends SMS already saved in phone.
*/
GSM_Error (*SendSavedSMS) (GSM_StateMachine *s, int Folder, int Location);
+ GSM_Error (*SetFastSMSSending) (GSM_StateMachine *s, bool enable);
/**
* Enable/disable notification on incoming SMS.
*/
GSM_Error (*SetIncomingSMS) (GSM_StateMachine *s, bool enable);
/**
* Gets network information from phone.
*/
GSM_Error (*SetIncomingCB) (GSM_StateMachine *s, bool enable);
/**
* Returns SMS folders information.
*/
GSM_Error (*GetSMSFolders) (GSM_StateMachine *s, GSM_SMSFolders *folders);
/**
* Creates SMS folder.
*/
GSM_Error (*AddSMSFolder) (GSM_StateMachine *s, unsigned char *name);
/**
* Deletes SMS folder.
*/
GSM_Error (*DeleteSMSFolder) (GSM_StateMachine *s, int ID);
/**
* Dials number and starts voice call.
*/
GSM_Error (*DialVoice) (GSM_StateMachine *s, char *Number, GSM_CallShowNumber ShowNumber);
/**
* Accept current incoming call.
*/
GSM_Error (*AnswerCall) (GSM_StateMachine *s, int ID, bool all);
/**
* Deny current incoming call.
*/
GSM_Error (*CancelCall) (GSM_StateMachine *s, int ID, bool all);
/**
* Holds call.
*/
GSM_Error (*HoldCall) (GSM_StateMachine *s, int ID);
/**
* Unholds call.
*/
GSM_Error (*UnholdCall) (GSM_StateMachine *s, int ID);
/**
* Initiates conference call.
*/
GSM_Error (*ConferenceCall) (GSM_StateMachine *s, int ID);
/**
* Splits call.
*/
GSM_Error (*SplitCall) (GSM_StateMachine *s, int ID);
/**
* Transfers call.
*/
GSM_Error (*TransferCall) (GSM_StateMachine *s, int ID, bool next);
/**
* Switches call.
*/
GSM_Error (*SwitchCall) (GSM_StateMachine *s, int ID, bool next);
/**
* Gets call diverts.
*/
GSM_Error (*GetCallDivert) (GSM_StateMachine *s, GSM_MultiCallDivert *divert);
/**
* Sets call diverts.
*/
GSM_Error (*SetCallDivert) (GSM_StateMachine *s, GSM_MultiCallDivert *divert);
/**
* Cancels all diverts.
*/
GSM_Error (*CancelAllDiverts) (GSM_StateMachine *s);
/**
* Activates/deactivates noticing about incoming calls.
*/
GSM_Error (*SetIncomingCall) (GSM_StateMachine *s, bool enable);
/**
* Activates/deactivates noticing about incoming USSDs (UnStructured Supplementary Services).
*/
GSM_Error (*SetIncomingUSSD) (GSM_StateMachine *s, bool enable);
/**
* Sends DTMF (Dual Tone Multi Frequency) tone.
*/
GSM_Error (*SendDTMF) (GSM_StateMachine *s, char *sequence);
/**
* Gets ringtone from phone.
*/
GSM_Error (*GetRingtone) (GSM_StateMachine *s, GSM_Ringtone *Ringtone, bool PhoneRingtone);
/**
* Sets ringtone in phone.
*/
GSM_Error (*SetRingtone) (GSM_StateMachine *s, GSM_Ringtone *Ringtone, int *maxlength);
/**
* Acquires ringtone informaiton.
*/
GSM_Error (*GetRingtonesInfo) (GSM_StateMachine *s, GSM_AllRingtonesInfo *Info);
/**
* Deletes user defined ringtones from phone.
*/
GSM_Error (*DeleteUserRingtones)(GSM_StateMachine *s);
/**
* Plays tone.
*/
GSM_Error (*PlayTone) (GSM_StateMachine *s, int Herz, unsigned char Volume, bool start);
/**
* Reads WAP bookmark.
*/
GSM_Error (*GetWAPBookmark) (GSM_StateMachine *s, GSM_WAPBookmark *bookmark);
/**
* Sets WAP bookmark.
*/
GSM_Error (*SetWAPBookmark) (GSM_StateMachine *s, GSM_WAPBookmark *bookmark);
/**
* Deletes WAP bookmark.
*/
GSM_Error (*DeleteWAPBookmark) (GSM_StateMachine *s, GSM_WAPBookmark *bookmark);
/**
* Acquires WAP settings.
*/
GSM_Error (*GetWAPSettings) (GSM_StateMachine *s, GSM_MultiWAPSettings *settings);
/**
* Changes WAP settings.
*/
GSM_Error (*SetWAPSettings) (GSM_StateMachine *s, GSM_MultiWAPSettings *settings);
/**
* Acquires MMS settings.
*/
GSM_Error (*GetMMSSettings) (GSM_StateMachine *s, GSM_MultiWAPSettings *settings);
/**
* Changes MMS settings.
*/
GSM_Error (*SetMMSSettings) (GSM_StateMachine *s, GSM_MultiWAPSettings *settings);
/**
* Acquires SyncML settings.
*/
GSM_Error (*GetSyncMLSettings) (GSM_StateMachine *s, GSM_SyncMLSettings *settings);
/**
* Changes SyncML settings.
*/
GSM_Error (*SetSyncMLSettings) (GSM_StateMachine *s, GSM_SyncMLSettings *settings);
/**
* Acquires chat/presence settings.
*/
GSM_Error (*GetChatSettings) (GSM_StateMachine *s, GSM_ChatSettings *settings);
/**
* Changes chat/presence settings.
*/
GSM_Error (*SetChatSettings) (GSM_StateMachine *s, GSM_ChatSettings *settings);
/**
* Gets bitmap.
*/
GSM_Error (*GetBitmap) (GSM_StateMachine *s, GSM_Bitmap *Bitmap);
/**
* Sets bitmap.
*/
GSM_Error (*SetBitmap) (GSM_StateMachine *s, GSM_Bitmap *Bitmap);
/**
* Gets status of ToDos (count of used entries).
*/
GSM_Error (*GetToDoStatus) (GSM_StateMachine *s, GSM_ToDoStatus *status);
/**
* Reads ToDo from phone.
*/
GSM_Error (*GetToDo) (GSM_StateMachine *s, GSM_ToDoEntry *ToDo);
/**
* Reads ToDo from phone.
*/
GSM_Error (*GetNextToDo) (GSM_StateMachine *s, GSM_ToDoEntry *ToDo, bool start);
/**
* Sets ToDo in phone.
*/
GSM_Error (*SetToDo) (GSM_StateMachine *s, GSM_ToDoEntry *ToDo);
/**
* Adds ToDo in phone.
*/
GSM_Error (*AddToDo) (GSM_StateMachine *s, GSM_ToDoEntry *ToDo);
/**
* Deletes ToDo entry in phone.
*/
GSM_Error (*DeleteToDo) (GSM_StateMachine *s, GSM_ToDoEntry *ToDo);
/**
* Deletes all todo entries in phone.
*/
GSM_Error (*DeleteAllToDo) (GSM_StateMachine *s);
/**
* Retrieves calendar status (number of used entries).
*/
GSM_Error (*GetCalendarStatus) (GSM_StateMachine *s, GSM_CalendarStatus *Status);
/**
* Retrieves calendar entry.
*/
GSM_Error (*GetCalendar) (GSM_StateMachine *s, GSM_CalendarEntry *Note);
/**
* Retrieves calendar entry. This is useful for continuous reading of all
* calendar entries.
*/
GSM_Error (*GetNextCalendar) (GSM_StateMachine *s, GSM_CalendarEntry *Note, bool start);
/**
* Sets calendar entry
*/
GSM_Error (*SetCalendar) (GSM_StateMachine *s, GSM_CalendarEntry *Note);
/**
* Adds calendar entry.
*/
GSM_Error (*AddCalendar) (GSM_StateMachine *s, GSM_CalendarEntry *Note);
/**
* Deletes calendar entry.
*/
GSM_Error (*DeleteCalendar) (GSM_StateMachine *s, GSM_CalendarEntry *Note);
/**
* Deletes all calendar entries.
*/
GSM_Error (*DeleteAllCalendar) (GSM_StateMachine *s);
/**
* Reads calendar settings.
*/
GSM_Error (*GetCalendarSettings)(GSM_StateMachine *s, GSM_CalendarSettings *settings);
/**
* Sets calendar settings.
*/
GSM_Error (*SetCalendarSettings)(GSM_StateMachine *s, GSM_CalendarSettings *settings);
/**
* Gets note.
*/
- GSM_Error (*GetNote) (GSM_StateMachine *s, GSM_NoteEntry *Note, bool refresh);
+ GSM_Error (*GetNextNote) (GSM_StateMachine *s, GSM_NoteEntry *Note, bool refresh);
/**
* Reads profile.
*/
GSM_Error (*GetProfile) (GSM_StateMachine *s, GSM_Profile *Profile);
/**
* Updates profile.
*/
GSM_Error (*SetProfile) (GSM_StateMachine *s, GSM_Profile *Profile);
/**
* Reads FM station.
*/
GSM_Error (*GetFMStation) (GSM_StateMachine *s, GSM_FMStation *FMStation);
/**
* Sets FM station.
*/
GSM_Error (*SetFMStation) (GSM_StateMachine *s, GSM_FMStation *FMStation);
/**
* Clears defined FM stations.
*/
GSM_Error (*ClearFMStations) (GSM_StateMachine *s);
/**
* Gets next filename from filesystem.
*/
GSM_Error (*GetNextFileFolder) (GSM_StateMachine *s, GSM_File *File, bool start);
/**
* Gets file part from filesystem.
*/
GSM_Error (*GetFilePart) (GSM_StateMachine *s, GSM_File *File);
/**
* Adds file part to filesystem.
*/
GSM_Error (*AddFilePart) (GSM_StateMachine *s, GSM_File *File, int *Pos);
/**
* Acquires filesystem status.
*/
GSM_Error (*GetFileSystemStatus)(GSM_StateMachine *s, GSM_FileSystemStatus *Status);
/**
* Deletes file from filessytem.
*/
GSM_Error (*DeleteFile) (GSM_StateMachine *s, unsigned char *ID);
/**
* Adds folder to filesystem.
*/
GSM_Error (*AddFolder) (GSM_StateMachine *s, GSM_File *File);
/**
* Gets GPRS access point.
*/
GSM_Error (*GetGPRSAccessPoint) (GSM_StateMachine *s, GSM_GPRSAccessPoint *point);
/**
* Sets GPRS access point.
*/
GSM_Error (*SetGPRSAccessPoint) (GSM_StateMachine *s, GSM_GPRSAccessPoint *point);
} GSM_Phone_Functions;
extern GSM_Phone_Functions NAUTOPhone;
#ifdef GSM_ENABLE_NOKIA3320
extern GSM_Phone_Functions N3320Phone;
#endif
#ifdef GSM_ENABLE_NOKIA3650
extern GSM_Phone_Functions N3650Phone;
#endif
#ifdef GSM_ENABLE_NOKIA6110
extern GSM_Phone_Functions N6110Phone;
#endif
+#ifdef GSM_ENABLE_NOKIA650
+ extern GSM_Phone_Functions N650Phone;
+#endif
#ifdef GSM_ENABLE_NOKIA6510
extern GSM_Phone_Functions N6510Phone;
#endif
#ifdef GSM_ENABLE_NOKIA7110
extern GSM_Phone_Functions N7110Phone;
#endif
#ifdef GSM_ENABLE_NOKIA9210
extern GSM_Phone_Functions N9210Phone;
#endif
#ifdef GSM_ENABLE_ATGEN
extern GSM_Phone_Functions ATGENPhone;
#endif
#ifdef GSM_ENABLE_ALCATEL
extern GSM_Phone_Functions ALCATELPhone;
#endif
#ifdef GSM_ENABLE_OBEXGEN
extern GSM_Phone_Functions OBEXGENPhone;
#endif
#ifdef GSM_ENABLE_MROUTERGEN
extern GSM_Phone_Functions MROUTERGENPhone;
#endif
typedef struct {
GSM_Phone_Data Data;
GSM_Phone_Functions *Functions;
} GSM_Phone;
/* --------------------------- User layer ---------------------------------- */
struct _GSM_User {
GSM_Reply_Function *UserReplyFunctions;
void (*IncomingCall) (char *Device, GSM_Call call);
void (*IncomingSMS) (char *Device, GSM_SMSMessage sms);
void (*IncomingCB) (char *Device, GSM_CBMessage cb);
void (*IncomingUSSD) (char *Device, char *Text);
void (*SendSMSStatus) (char *Device, int status, int MessageReference);
};
/* --------------------------- Statemachine layer -------------------------- */
typedef enum {
GCT_MBUS2=1,
GCT_FBUS2,
GCT_FBUS2DLR3,
GCT_FBUS2DKU5,
GCT_FBUS2PL2303,
GCT_FBUS2BLUE,
GCT_FBUS2IRDA,
GCT_PHONETBLUE,
GCT_AT,
GCT_MROUTERBLUE,
GCT_IRDAOBEX,
GCT_IRDAAT,
GCT_IRDAPHONET,
GCT_BLUEFBUS2,
GCT_BLUEAT,
GCT_BLUEPHONET,
GCT_BLUEOBEX
} GSM_ConnectionType;
typedef struct {
/* Config file (or Registry or...) variables */
char Model[50]; /* Model from config file */
char DebugLevel[50]; /* Debug level */
char *Device; /* Device name from config file */
char *Connection; /* Connection type as string */
char *SyncTime; /* Synchronize time on startup? */
char *LockDevice; /* Lock device ? (Unix) */
char *DebugFile; /* Name of debug file */
char *Localize; /* Name of localisation file */
char *StartInfo; /* Display something during start ? */
bool UseGlobalDebugFile;/* Should we use global debug file? */
bool DefaultModel;
bool DefaultDebugLevel;
bool DefaultDevice;
bool DefaultConnection;
bool DefaultSyncTime;
bool DefaultLockDevice;
bool DefaultDebugFile;
bool DefaultLocalize;
bool DefaultStartInfo;
} GSM_Config;
#define MAX_CONFIG_NUM 5
struct _GSM_StateMachine {
GSM_ConnectionType ConnectionType; /* Type of connection as int */
char *LockFile; /* Lock file name for Unix */
Debug_Info di; /* Debug information */
bool opened; /* Is connection opened ? */
GSM_Config Config[MAX_CONFIG_NUM + 1];
GSM_Config *CurrentConfig; /* Config file (or Registry or...) variables */
int ConfigNum;
INI_Section *msg; /* Localisation strings structure */
int ReplyNum; /* How many times make sth. */
int Speed; /* For some protocols used speed */
GSM_Device Device;
GSM_Protocol Protocol;
GSM_Phone Phone;
GSM_User User;
};
/* ------------------------ Other general definitions ---------------------- */
GSM_Error GSM_RegisterAllPhoneModules (GSM_StateMachine *s);
GSM_Error GSM_InitConnection (GSM_StateMachine *s, int ReplyNum);
GSM_Error GSM_TerminateConnection (GSM_StateMachine *s);
int GSM_ReadDevice (GSM_StateMachine *s, bool wait);
GSM_Error GSM_WaitForOnce (GSM_StateMachine *s, unsigned char *buffer,
int length, unsigned char type, int time);
GSM_Error GSM_WaitFor (GSM_StateMachine *s, unsigned char *buffer,
int length, unsigned char type, int time,
GSM_Phone_RequestID request);
GSM_Error GSM_DispatchMessage (GSM_StateMachine *s);
INI_Section *GSM_FindGammuRC(void);
bool GSM_ReadConfig (INI_Section *cfg_info, GSM_Config *cfg, int num);
void GSM_DumpMessageLevel2 (GSM_StateMachine *s, unsigned char *message, int messagesize, int type);
void GSM_DumpMessageLevel3 (GSM_StateMachine *s, unsigned char *message, int messagesize, int type);
/* ---------------------- Phone features ----------------------------------- */
typedef enum {
/* n6110.c */
F_CAL33 = 1, /* Calendar,3310 style - 10 reminders, Unicode, 3 coding types */
F_CAL52, /* Calendar,5210 style - full Unicode, etc. */
F_CAL82, /* Calendar,8250 style - "normal", but with Unicode */
F_RING_SM, /* Ringtones returned in SM format - 33xx */
F_NORING, /* No ringtones */
F_NOPBKUNICODE, /* No phonebook in Unicode */
F_NOWAP, /* No WAP */
F_NOCALLER, /* No caller groups */
F_NOPICTURE, /* No Picture Images */
F_NOPICTUREUNI, /* No Picture Images text in Unicode */
F_NOSTARTUP, /* No startup logo */
F_NOCALENDAR, /* No calendar */
F_NOSTARTANI, /* Startup logo is not animated */
F_POWER_BATT, /* Network and battery level get from netmonitor */
F_PROFILES33, /* Phone profiles in 3310 style */
F_PROFILES51, /* Phone profiles in 5110 style */
F_MAGICBYTES, /* Phone can make authentication with magic bytes */
F_NODTMF, /* Phone can't send DTMF */
F_DISPSTATUS, /* Phone return display status */
F_NOCALLINFO,
/* n3320.c */
F_DAYMONTH, /* Day and month reversed in pbk, when compare to GSM models */
/* n6510.c */
F_PBK35, /* Phonebook in 3510 style with ringtones ID */
F_PBKIMG, /* Phonebook in 7250 style with picture ID */
F_PBKTONEGAL, /* Phonebook with selecting ringtones from gallery */
F_PBKSMSLIST, /* Phonebook with SMS list */
F_PBKUSER, /* Phonebook with user ID */
F_RADIO, /* Phone with FM radio */
F_TODO63, /* ToDo in 6310 style - 0x55 msg type */
F_TODO66, /* ToDo in 6610 style - like calendar, with date and other */
F_NOMIDI, /* No ringtones in MIDI */
F_BLUETOOTH, /* Bluetooth support */
F_NOFILESYSTEM, /* No images, ringtones, java saved in special filesystem */
F_NOMMS, /* No MMS sets in phone */
F_NOGPRSPOINT, /* GPRS point are not useable */
F_CAL35, /* Calendar,3510 style - Reminder,Call,Birthday */
F_CAL65, /* Calendar,6510 style - CBMM, method 3 */
F_WAPMMSPROXY, /* WAP & MMS settings contains first & second proxy */
/* n6510.c && n7110.c */
F_VOICETAGS, /* Voice tags available */
F_CAL62, /* Calendar,6210 style - Call,Birthday,Memo,Meeting */
+ F_NOTES,
/* AT modules */
F_SMSONLYSENT, /* Phone supports only sent/unsent messages */
F_BROKENCPBS, /* CPBS on some memories can hang phone */
F_M20SMS, /* Siemens M20 like SMS handling */
F_SLOWWRITE, /* Use slower writing which some phone need */
F_SMSME900, /* SMS in ME start from location 900 - case of Sagem */
F_ALCATEL /* Phone supports Alcatel protocol */
} Feature;
/* For models table */
struct _OnePhoneModel {
char *model;
char *number;
char *irdamodel;
Feature features[12];
};
bool IsPhoneFeatureAvailable (OnePhoneModel *model, Feature feature);
OnePhoneModel *GetModelData (char *model, char *number, char *irdamodel);
#ifdef __GNUC__
__attribute__((format(printf, 2, 3)))
#endif
int smprintf(GSM_StateMachine *s, const char *format, ...);
void GSM_OSErrorInfo(GSM_StateMachine *s, char *description);
#ifdef GSM_ENABLE_BACKUP
void GSM_GetPhoneFeaturesForBackup(GSM_StateMachine *s, GSM_Backup_Info *info);
#endif
#endif
/* How should editor hadle tabs in this file? Add editor commands here.
* vim: noexpandtab sw=8 ts=8 sts=8:
*/