From 88b0d33b8b0b1f6ae320cfc863ca6a47fa8fec22 Mon Sep 17 00:00:00 2001 From: zautrix Date: Sat, 07 Aug 2004 17:24:40 +0000 Subject: Initial revision --- (limited to 'gammu/emb/common/service/sms/gsmmulti.h') diff --git a/gammu/emb/common/service/sms/gsmmulti.h b/gammu/emb/common/service/sms/gsmmulti.h new file mode 100644 index 0000000..c672261 --- a/dev/null +++ b/gammu/emb/common/service/sms/gsmmulti.h @@ -0,0 +1,271 @@ +/* (c) 2002-2004 by Marcin Wiacek */ + +#ifndef __gsm_multi_h +#define __gsm_multi_h + +#include "../../gsmcomon.h" +#include "../gsmlogo.h" +#include "../gsmcal.h" +#include "../gsmpbk.h" +#include "../gsmdata.h" +#include "../gsmring.h" +#include "gsmsms.h" + +/* ---------------------- multi SMS --------------------------------------- */ + +/* Identifiers for Smart Messaging 3.0 multipart SMS */ + +#define SM30_ISOTEXT 0 /* ISO 8859-1 text */ +#define SM30_UNICODETEXT 1 +#define SM30_OTA 2 +#define SM30_RINGTONE 3 +#define SM30_PROFILENAME 4 +/* ... */ +#define SM30_SCREENSAVER 6 + +/* Identifiers for Alcatel Terminal Data Download */ +#define ALCATELTDD_PICTURE 4 +#define ALCATELTDD_ANIMATION 5 +#define ALCATELTDD_SMSTEMPLATE 6 + +void GSM_SMSCounter(int MessageLength, + unsigned char *MessageBuffer, + GSM_UDH UDHType, + GSM_Coding_Type Coding, + int *SMSNum, + int *CharsLeft); + +#define MAX_MULTI_SMS 10 + +/** + * Multiple SMS messages, used for Smart Messaging 3.0/EMS. + */ +typedef struct { + /** + * Sender or recipient number. + */ + unsigned char Number; + /** + * Array of SMSes. + */ + GSM_SMSMessage SMS[MAX_MULTI_SMS]; +} GSM_MultiSMSMessage; + +GSM_Error GSM_AddSMS_Text_UDH(GSM_MultiSMSMessage *SMS, + GSM_Coding_Type Coding, + char *Buffer, + int BufferLen, + bool UDH, + int *UsedText, + int *CopiedText, + int *CopiedSMSText); + +void GSM_MakeMultiPartSMS(GSM_MultiSMSMessage *SMS, + unsigned char *MessageBuffer, + int MessageLength, + GSM_UDH UDHType, + GSM_Coding_Type Coding, + int Class, + unsigned char RejectDuplicates); + +void GSM_Find_Free_Used_SMS2(GSM_Coding_Type Coding,GSM_SMSMessage SMS, int *UsedText, int *FreeText, int *FreeBytes); + +unsigned char GSM_MakeSMSIDFromTime(void); + +/** + * ID during packing SMS for Smart Messaging 3.0, EMS and other + */ +typedef enum { + /** + * 1 text SMS. + */ + SMS_Text = 1, + /** + * Contacenated SMS, when longer than 1 SMS. + */ + SMS_ConcatenatedTextLong, + /** + * Contacenated SMS, auto Default/Unicode coding. + */ + SMS_ConcatenatedAutoTextLong, + SMS_ConcatenatedTextLong16bit, + SMS_ConcatenatedAutoTextLong16bit, + /** + * Nokia profile = Name, Ringtone, ScreenSaver + */ + SMS_NokiaProfileLong, + /** + * Nokia Picture Image + (text) + */ + SMS_NokiaPictureImageLong, + /** + * Nokia screen saver + (text) + */ + SMS_NokiaScreenSaverLong, + /** + * Nokia ringtone - old SM2.0 format, 1 SMS + */ + SMS_NokiaRingtone, + /** + * Nokia ringtone contacenated, when very long + */ + SMS_NokiaRingtoneLong, + /** + * Nokia 72x14 operator logo, 1 SMS + */ + SMS_NokiaOperatorLogo, + /** + * Nokia 72x14 op logo or 78x21 in 2 SMS + */ + SMS_NokiaOperatorLogoLong, + /** + * Nokia 72x14 caller logo, 1 SMS + */ + SMS_NokiaCallerLogo, + /** + * Nokia WAP bookmark in 1 or 2 SMS + */ + SMS_NokiaWAPBookmarkLong, + /** + * Nokia WAP settings in 2 SMS + */ + SMS_NokiaWAPSettingsLong, + /** + * Nokia MMS settings in 2 SMS + */ + SMS_NokiaMMSSettingsLong, + /** + * Nokia VCARD 1.0 - only name and default number + */ + SMS_NokiaVCARD10Long, + /** + * Nokia VCARD 2.1 - all numbers + text + */ + SMS_NokiaVCARD21Long, + /** + * Nokia VCALENDAR 1.0 - can be in few sms + */ + SMS_NokiaVCALENDAR10Long, + SMS_NokiaVTODOLong, + SMS_VCARD10Long, + SMS_VCARD21Long, + SMS_DisableVoice, + SMS_DisableFax, + SMS_DisableEmail, + SMS_EnableVoice, + SMS_EnableFax, + SMS_EnableEmail, + SMS_VoidSMS, + /** + * IMelody 1.0 + */ + SMS_EMSSound10, + /** + * IMelody 1.2 + */ + SMS_EMSSound12, + /** + * IMelody without header - SonyEricsson extension + */ + SMS_EMSSonyEricssonSound, + /** + * IMelody 1.0 with UPI. + */ + SMS_EMSSound10Long, + /*** + * IMelody 1.2 with UPI. + */ + SMS_EMSSound12Long, + /** + * IMelody without header with UPI. + */ + SMS_EMSSonyEricssonSoundLong, + SMS_EMSPredefinedSound, + SMS_EMSPredefinedAnimation, + SMS_EMSAnimation, + /** + * Fixed bitmap of size 16x16 or 32x32. + */ + SMS_EMSFixedBitmap, + SMS_EMSVariableBitmap, + SMS_EMSVariableBitmapLong, + SMS_MMSIndicatorLong, + /** + * Variable bitmap with black and white colors + */ + SMS_AlcatelMonoBitmapLong, + /** + * Variable animation with black and white colors + */ + SMS_AlcatelMonoAnimationLong, + SMS_AlcatelSMSTemplateName +} EncodeMultiPartSMSID; + +typedef struct { + EncodeMultiPartSMSID ID; + + int Number; + GSM_Ringtone *Ringtone; + GSM_MultiBitmap *Bitmap; + GSM_WAPBookmark *Bookmark; + GSM_WAPSettings *Settings; + GSM_MMSIndicator *MMSIndicator; + GSM_MemoryEntry *Phonebook; + GSM_CalendarEntry *Calendar; + GSM_ToDoEntry *ToDo; + bool Protected; + + unsigned char *Buffer; + bool Left; + bool Right; + bool Center; + bool Large; + bool Small; + bool Bold; + bool Italic; + bool Underlined; + bool Strikethrough; + + /* Return values */ + int RingtoneNotes; +} MultiPartSMSEntry; + +typedef struct { + MultiPartSMSEntry Entries[MAX_MULTI_SMS]; + int EntriesNum; + bool UnicodeCoding; + int Class; + unsigned char ReplaceMessage; + bool Unknown; +} GSM_MultiPartSMSInfo; + +/** + * Encodes multi part SMS from "readable" format. + */ +GSM_Error GSM_EncodeMultiPartSMS (GSM_MultiPartSMSInfo *Info, GSM_MultiSMSMessage *SMS); + +/** + * Decodes multi part SMS to "readable" format. + */ +bool GSM_DecodeMultiPartSMS (GSM_MultiPartSMSInfo *Info, GSM_MultiSMSMessage *SMS, bool ems); + +/** + * Clears @ref GSM_MultiPartSMSInfo to default values. + */ +void GSM_ClearMultiPartSMSInfo (GSM_MultiPartSMSInfo *Info); + +/** + * Frees any allocated structures inside @ref GSM_MultiPartSMSInfo. + */ +void GSM_FreeMultiPartSMSInfo (GSM_MultiPartSMSInfo *Info); + +/** + * Links SMS messages according to IDs. + */ +GSM_Error GSM_LinkSMS(GSM_MultiSMSMessage **INPUT, GSM_MultiSMSMessage **OUTPUT, bool ems); + +#endif + +/* How should editor hadle tabs in this file? Add editor commands here. + * vim: noexpandtab sw=8 ts=8 sts=8: + */ -- cgit v0.9.0.2