1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
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:
*/
|