X-Git-Url: https://git.jankratochvil.net/?p=gnokii.git;a=blobdiff_plain;f=include%2Ffbus-3810.h;fp=include%2Ffbus-3810.h;h=0e07f58dd190af9e389e12a07a3dbfe97ae9d044;hp=0000000000000000000000000000000000000000;hb=49dd905279a8e62936e3713510ab0fd738e20ecb;hpb=2f2703c9133032c12671ca5c77ae626b8fb178d4 diff --git a/include/fbus-3810.h b/include/fbus-3810.h new file mode 100644 index 0000000..0e07f58 --- /dev/null +++ b/include/fbus-3810.h @@ -0,0 +1,205 @@ +/* + + $Id$ + + 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 3810 code. + + $Log$ + Revision 1.1.1.1 2002/04/03 00:08:17 short + Found in "gnokii-working" directory, some November-patches version + + Revision 1.51 2001/06/28 00:40:57 pkot + 8bit SMS handling in 3810 series - old structure yet (Tamas Bondar) + + Revision 1.50 2001/06/28 00:28:45 pkot + Small docs updates (Pawel Kot) + + +*/ + +#ifndef __fbus_3810_h +#define __fbus_3810_h + +#ifndef __gsm_common_h +#include "gsm-common.h" /* Needed for GSM_Error etc. */ +#endif + + /* Global variables */ +extern bool FB38_LinkOK; +extern GSM_Functions FB38_Functions; +extern GSM_Information FB38_Information; +extern void (*FB38_RLP_RXCallback)(RLP_F96Frame *frame); + + /* Prototypes for the functions designed to be used externally. */ +GSM_Error FB38_Initialise(char *port_device, char *initlength, + GSM_ConnectionType connection, + void (*rlp_callback)(RLP_F96Frame *frame)); + +bool FB38_OpenSerial(void); +void FB38_Terminate(void); + +int FB38_GetMemoryType(GSM_MemoryType memory_type); + +GSM_Error FB38_GetMemoryLocation(GSM_PhonebookEntry *entry); + +GSM_Error FB38_WritePhonebookLocation(GSM_PhonebookEntry *entry); + +GSM_Error FB38_GetSpeedDial(GSM_SpeedDial *entry); + +GSM_Error FB38_SetSpeedDial(GSM_SpeedDial *entry); + +GSM_Error FB38_GetMemoryStatus(GSM_MemoryStatus *Status); + +GSM_Error FB38_GetSMSStatus(GSM_SMSStatus *Status); +GSM_Error FB38_GetSMSCenter(GSM_MessageCenter *MessageCenter); +GSM_Error FB38_GetSMSMessage(GSM_SMSMessage *message); + +GSM_Error FB38_GetSMSCenter(GSM_MessageCenter *MessageCenter); +GSM_Error FB38_SetSMSCenter(GSM_MessageCenter *MessageCenter); + +GSM_Error FB38_DeleteSMSMessage(GSM_SMSMessage *message); + +GSM_Error FB38_CancelCall(void); + +GSM_Error FB38_SendSMSMessage(GSM_SMSMessage *SMS); + +GSM_Error FB38_GetRFLevel(GSM_RFUnits *units, float *level); + +GSM_Error FB38_GetBatteryLevel(GSM_BatteryUnits *units, float *level); + +bool FB38_SendRLPFrame(RLP_F96Frame *frame, bool out_dtx); + + /* These aren't presently implemented. */ +GSM_Error FB38_SaveSMSMessage(GSM_SMSMessage *SMS); +GSM_Error FB38_GetPowerSource(GSM_PowerSource *source); +GSM_Error FB38_GetDisplayStatus(int *Status); +GSM_Error FB38_EnterSecurityCode(GSM_SecurityCode SecurityCode); +GSM_Error FB38_GetSecurityCodeStatus(int *Status); +GSM_Error FB38_GetIMEI(char *imei); +GSM_Error FB38_GetRevision(char *revision); +GSM_Error FB38_GetModel(char *model); +GSM_Error FB38_GetDateTime(GSM_DateTime *date_time); +GSM_Error FB38_SetDateTime(GSM_DateTime *date_time); +GSM_Error FB38_GetAlarm(int alarm_number, GSM_DateTime *date_time); +GSM_Error FB38_SetAlarm(int alarm_number, GSM_DateTime *date_time); +GSM_Error FB38_DialVoice(char *Number); +GSM_Error FB38_DialData(char *Number, char type,void (* callpassup)(char c)); +GSM_Error FB38_GetIncomingCallNr(char *Number); +GSM_Error FB38_GetNetworkInfo(GSM_NetworkInfo *NetworkInfo); +GSM_Error FB38_GetCalendarNote(GSM_CalendarNote *CalendarNote); +GSM_Error FB38_WriteCalendarNote(GSM_CalendarNote *CalendarNote); +GSM_Error FB38_DeleteCalendarNote(GSM_CalendarNote *CalendarNote); +GSM_Error FB38_Netmonitor(unsigned char mode, char *Screen); +GSM_Error FB38_SendDTMF(char *String); +GSM_Error FB38_GetBitmap(GSM_Bitmap *Bitmap); +GSM_Error FB38_SetBitmap(GSM_Bitmap *Bitmap); +GSM_Error FB38_SetRingTone (GSM_Ringtone *ringtone); +GSM_Error FB38_Reset(unsigned char type); +GSM_Error FB38_GetProfile(GSM_Profile *Profile); +GSM_Error FB38_SetProfile(GSM_Profile *Profile); + +GSM_Error FB38_EnableDisplayOutput(); +GSM_Error FB38_DisableDisplayOutput(); + +GSM_Error FB38_EnableCellBroadcast (); +GSM_Error FB38_DisableCellBroadcast(void); +GSM_Error FB38_ReadCellBroadcast (GSM_CBMessage *Message); + + /* All defines and prototypes from here down are specific to + this model and so are #ifdef out if __fbus_3810_c isn't + defined. */ +#ifdef __fbus_3810_c + + /* These set length limits for the handset. This is SIM dependant + and ultimately will be set automatically once we know how + to get that information from phone. INT values are + selected when the memory type specified is '1' + this corresponds to internal memory on an 8110 */ +#define FB38_DEFAULT_SIM_PHONEBOOK_NAME_LENGTH (10) +#define FB38_DEFAULT_SIM_PHONEBOOK_NUMBER_LENGTH (30) + +#define FB38_DEFAULT_INT_PHONEBOOK_NAME_LENGTH (20) +#define FB38_DEFAULT_INT_PHONEBOOK_NUMBER_LENGTH (30) + + /* Number of times to try resending SMS (empirical) */ +#define FB38_SMS_SEND_RETRY_COUNT (4) + + /* Miscellaneous values. */ +#define FB38_MAX_RECEIVE_LENGTH (512) +#define FB38_MAX_TRANSMIT_LENGTH (256) +#define FB38_BAUDRATE (B115200) + + /* Limits for IMEI, Revision and Model string storage. */ +#define FB38_MAX_IMEI_LENGTH (20) +#define FB38_MAX_REVISION_LENGTH (10) +#define FB38_MAX_MODEL_LENGTH (8) + + /* Limits for sizing of array in FB38_PhonebookEntry */ +#define FB38_MAX_PHONEBOOK_NAME_LENGTH (30) +#define FB38_MAX_PHONEBOOK_NUMBER_LENGTH (30) + + /* Limits to do with SMS messages. */ +#define FB38_MAX_SMS_CENTER_LENGTH (30) +#define FB38_MAX_SENDER_LENGTH (30) +#define FB38_MAX_SMS_LENGTH (160) + + /* States for receive code. */ +enum FB38_RX_States {FB38_RX_Sync, + FB38_RX_GetLength, + FB38_RX_GetMessage, + FB38_RX_Off}; + + /* Prototypes for internal functions. */ +void FB38_SigHandler(int status); +void FB38_ThreadLoop(void); + +void FB38_RX_StateMachine(char rx_byte); +enum FB38_RX_States FB38_RX_DispatchMessage(void); +enum FB38_RX_States FB38_RX_HandleRLPMessage(void); +void FB38_RX_DisplayMessage(void); +void FB38_RX_Handle0x0b_IncomingCall(void); +void FB38_RX_Handle0x4b_Status(void); +void FB38_RX_Handle0x10_EndOfOutgoingCall(void); +void FB38_RX_Handle0x11_EndOfIncomingCall(void); +void FB38_RX_Handle0x12_EndOfOutgoingCall(void); +void FB38_RX_Handle0x27_SMSMessageText(void); +void FB38_RX_Handle0x30_IncomingSMSNotification(void); +void FB38_RX_Handle0x32_SMSDelivered(void); +void FB38_RX_Handle0x0d_IncomingCallAnswered(void); +void FB38_RX_Handle0x0e_CallEstablished(void); +void FB38_RX_Handle0x2c_SMSHeader(void); +void FB38_RX_Handle0x41_SMSMessageCenterData(void); +void FB38_RX_Handle0x46_MemoryLocationData(void); +void FB38_RX_Handle0x4d_IMEIRevisionModelData(void); + +void FB38_TX_UpdateSequenceNumber(void); +int FB38_TX_SendStandardAcknowledge(u8 message_type); +GSM_Error FB38_TX_SendDialCommand(u8 call_type, char *Number); +bool FB38_TX_SendRLPFrame(RLP_F96Frame *frame, bool out_dtx); + +int FB38_TX_SendMessage(u8 message_length, u8 message_type, u8 sequence_byte, u8 *buffer); +void FB38_TX_Send0x0f_HangupMessage(void); +void FB38_TX_Send0x25_RequestSMSMemoryLocation(u8 memory_type, u8 location); +void FB38_TX_Send0x26_DeleteSMSMemoryLocation(u8 memory_type, u8 location); + +void FB38_TX_Send0x23_SendSMSHeader(char *message_center, char *destination, u8 fo, u8 dcs, u8 total_length); +void FB38_TX_Send0x27_SendSMSMessageText(u8 block_number, u8 block_length, char *text); +void FB38_TX_Send0x3fMessage(void); +void FB38_TX_Send0x4aMessage(void); +int FB38_TX_Send0x42_WriteMemoryLocation(u8 memory_area, u8 location, char *label, char *number); +void FB38_TX_Send0x43_RequestMemoryLocation(u8 memory_area, u8 location); +void FB38_TX_Send0x4c_RequestIMEIRevisionModelData(void); +void FB38_TX_Send0x15Message(u8 sequence_number); +void FB38_TX_SendExploreMessage(u8 message); + +#endif /* __fbus_3810_c */ + +#endif /* __fbus_3810_h */