FreeCalypso > hg > fc-magnetite
comparison src/aci2/aci/conc_sms.h @ 3:93999a60b835
src/aci2, src/condat2: import of g23m/condat source pieces from TCS211
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 26 Sep 2016 00:29:36 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
2:c41a534f33c6 | 3:93999a60b835 |
---|---|
1 /* | |
2 +----------------------------------------------------------------------------- | |
3 | Project : $Workfile:: | |
4 | Modul : CONC_SMS | |
5 +----------------------------------------------------------------------------- | |
6 | Copyright 2002 Texas Instruments Berlin, AG | |
7 | All rights reserved. | |
8 | | |
9 | This file is confidential and a trade secret of Texas | |
10 | Instruments Berlin, AG | |
11 | The receipt of or possession of this file does not convey | |
12 | any rights to reproduce or disclose its contents or to | |
13 | manufacture, use, or sell anything it may describe, in | |
14 | whole, or in part, without the specific written consent of | |
15 | Texas Instruments Berlin, AG. | |
16 +----------------------------------------------------------------------------- | |
17 | Purpose : SMS Concatenation Handler | |
18 +----------------------------------------------------------------------------- | |
19 */ | |
20 | |
21 | |
22 | |
23 #ifndef CONC_SMS_H | |
24 #define CONC_SMS_H | |
25 | |
26 /* for target tests of Conc. SMS define _CONC_TESTING_ */ | |
27 /*#ifndef _CONC_TESTING_ | |
28 #define _CONC_TESTING_ | |
29 #endif*/ | |
30 | |
31 | |
32 /*==== CONSTANTS ==================================================*/ | |
33 | |
34 #define SMS_IEI_CONC_8BIT 0x00 | |
35 #define SMS_IEI_CONC_16BIT 0x08 | |
36 | |
37 | |
38 #define L_UNCOMP_8BIT_DATA 140 | |
39 #define L_UNCOMP_7BIT_DATA 160 | |
40 #define L_UNCOMP_8BIT_DATA_CONC 134 | |
41 #define L_UNCOMP_7BIT_DATA_CONC 153 | |
42 | |
43 /* only for test purposes */ | |
44 #define L_UNCOMP_8BIT_DATA_TST 14 | |
45 #define L_UNCOMP_7BIT_DATA_TST 16 | |
46 #define L_UNCOMP_8BIT_DATA_CONC_TST 13 | |
47 #define L_UNCOMP_7BIT_DATA_CONC_TST 15 | |
48 | |
49 #define COMMAND_TYPE_DELETE 0x02 | |
50 | |
51 #define CONC_MAX_SEGS 10 /* maximum number of segment in one conc. SMS */ | |
52 | |
53 /* max number of conc. SMs in segment buffer and assembly buffer */ | |
54 #define MAX_BUF_ELEMS 5 | |
55 | |
56 /* max number of conc. SMs in concatenation buf */ | |
57 #define MAX_CONC_BUF_ELEMS 5 | |
58 | |
59 | |
60 #define CONC_UDH_LEN 6 | |
61 | |
62 /*==== TYPES ======================================================*/ | |
63 | |
64 #define SET_CONC \ | |
65 {concShrdPrm.isConcatenated = TRUE;} | |
66 | |
67 #define UNSET_CONC \ | |
68 {concShrdPrm.isConcatenated = FALSE;} | |
69 | |
70 #define ISSET_CONC \ | |
71 (concShrdPrm.isConcatenated EQ TRUE) | |
72 | |
73 | |
74 #ifdef _CONC_TESTING_ | |
75 #define SET_OWNBUF_CONC \ | |
76 if (concShrdPrm.isConcatenated) ownBuf = CMD_SRC_LCL; | |
77 #else | |
78 #define SET_OWNBUF_CONC | |
79 #endif | |
80 | |
81 | |
82 typedef enum /* for init functions */ | |
83 { | |
84 CONC_ERROR = -1, /* concatenation error */ | |
85 CONC_NOT_NEEDED, /* no concatenation needed */ | |
86 CONC_NEEDED /* concatenation needed */ | |
87 } T_CONC_INIT_RETURN; | |
88 | |
89 | |
90 typedef enum /* for collect function */ | |
91 { | |
92 CONC_ERR_UNKN, /* concatenation error unknown */ | |
93 CONC_ERR_BUF_FULL, /* buffer full */ | |
94 CONC_CONTINUED, /* concatenation continued */ | |
95 CONC_COMPLETED /* concatenation completed */ | |
96 } T_CONC_ASSEMBLY_RETURN; | |
97 | |
98 | |
99 typedef enum | |
100 { | |
101 UNKNOWN = -1, | |
102 NORMAL, | |
103 CONCATE, | |
104 VOICEMAIL | |
105 } T_SMS_TYPE; | |
106 | |
107 | |
108 typedef struct /* data buffer for Assembly of Concat. SMS */ | |
109 { | |
110 UBYTE in_use; | |
111 USHORT ref_num; | |
112 CHAR address[MAX_SMS_ADDR_DIG+1]; | |
113 UBYTE next_exp_num; | |
114 UBYTE segs_left; | |
115 UBYTE seg_count; | |
116 T_SM_DATA_EXT data; | |
117 } | |
118 T_SM_ASSEMBLY; | |
119 | |
120 typedef struct /* segment buffer for Concat. SMS */ | |
121 { | |
122 UBYTE in_use; | |
123 USHORT ref_num; | |
124 CHAR address[MAX_SMS_ADDR_DIG+1]; | |
125 T_ACI_LIST *list; | |
126 } | |
127 T_SEG_BUF; | |
128 | |
129 typedef struct /* one segment buffer element for Concat. SMS */ | |
130 { | |
131 UBYTE seq_num; | |
132 UBYTE rec_num; | |
133 UBYTE status; /* in CMH format */ | |
134 T_SM_DATA_EXT data; | |
135 } | |
136 T_SEG_BUF_ELEM; | |
137 | |
138 typedef struct /* concatenated buffer for Concat. SMS */ | |
139 { | |
140 UBYTE in_use; | |
141 USHORT ref_num; | |
142 CHAR address[MAX_SMS_ADDR_DIG+1]; | |
143 UBYTE max_num; | |
144 T_ACI_LIST *list; | |
145 } | |
146 T_CONC_BUF; | |
147 | |
148 typedef struct /* one concatenated buffer element for Concat. SMS */ | |
149 { | |
150 UBYTE seq_num; | |
151 UBYTE rec_num; | |
152 UBYTE status; /* in CMH format */ | |
153 } | |
154 T_CONC_BUF_ELEM; | |
155 | |
156 | |
157 typedef struct | |
158 { | |
159 CHAR da[MAX_SMS_ADDR_DIG+1]; | |
160 CHAR *p_da; | |
161 T_ACI_TOA toda; | |
162 T_ACI_TOA *p_toda; | |
163 T_ACI_LIST *currConcBufListElem; /* current element in concatenated buffer */ | |
164 UBYTE skipStoSent; | |
165 } T_CONC_CMSS; | |
166 | |
167 typedef struct | |
168 { | |
169 CHAR da[MAX_SMS_ADDR_DIG+1]; | |
170 CHAR *p_da; | |
171 T_ACI_TOA toda; | |
172 T_ACI_TOA *p_toda; | |
173 T_SM_DATA_EXT data; | |
174 USHORT offset; /* byte offset in a conc. SM */ | |
175 CHAR sca[MAX_SMS_ADDR_DIG+1]; | |
176 CHAR *p_sca; | |
177 T_ACI_TOA tosca; | |
178 T_ACI_TOA *p_tosca; | |
179 SHORT isReply; | |
180 USHORT sent_bytes; | |
181 } T_CONC_CMGS; | |
182 | |
183 typedef struct | |
184 { | |
185 UBYTE command_count; | |
186 UBYTE fo; | |
187 UBYTE ct; | |
188 UBYTE pid; | |
189 CHAR da[MAX_SMS_ADDR_DIG+1]; | |
190 CHAR *p_da; | |
191 T_ACI_TOA toda; | |
192 T_ACI_TOA *p_toda; | |
193 T_SM_DATA_EXT data; /* user data */ | |
194 } T_CONC_CMGC; | |
195 | |
196 typedef struct | |
197 { | |
198 UBYTE rdMode; | |
199 T_ACI_LIST *currConcBufListElem; /* current element in concatenated buffer */ | |
200 } T_CONC_CMGR; | |
201 | |
202 typedef struct | |
203 { | |
204 CHAR da[MAX_SMS_ADDR_DIG+1]; | |
205 CHAR *p_da; | |
206 T_ACI_TOA toda; | |
207 T_ACI_TOA *p_toda; | |
208 UBYTE stat; | |
209 UBYTE msg_ref; | |
210 T_SM_DATA_EXT data; /* user data */ | |
211 USHORT offset; /* byte offset in a conc. SM */ | |
212 CHAR sca[MAX_SMS_ADDR_DIG+1]; | |
213 CHAR *p_sca; | |
214 T_ACI_TOA tosca; | |
215 T_ACI_TOA *p_tosca; | |
216 SHORT isReply; | |
217 USHORT sent_bytes; | |
218 } T_CONC_CMGW; | |
219 | |
220 typedef struct | |
221 { | |
222 USHORT ref_num; /* ref. number of the current conc. buffer */ | |
223 CHAR *address; | |
224 UBYTE error_count; | |
225 T_ACI_LIST *currConcBufListElem; /* current element in concatenated buffer */ | |
226 } T_CONC_CMGD; | |
227 | |
228 | |
229 | |
230 | |
231 | |
232 typedef struct /* Shared Parameter for Concat. SMS */ | |
233 { | |
234 UBYTE max_sms_len; /* max. length of one SM segment */ | |
235 UBYTE srcId; /* current source ID */ | |
236 UBYTE first_mr; /* message ref. of the first sent segment */ | |
237 UBYTE sentSegs; /* number of successfully sent segments,for "+CMGC"*/ | |
238 UBYTE isConcatenated; | |
239 UBYTE concTesting; | |
240 UBYTE l_uncomp8bit_data; | |
241 UBYTE l_uncomp7bit_data; | |
242 UBYTE l_uncomp8bit_data_conc; | |
243 UBYTE l_uncomp7bit_data_conc; | |
244 | |
245 struct | |
246 { | |
247 UBYTE ref_num; /* conc. SM reference number */ | |
248 UBYTE max_num; /* max. number of SMs in one conc. message */ | |
249 UBYTE seq_num; /* sequence number of the current SM */ | |
250 } udh; | |
251 | |
252 struct | |
253 { | |
254 USHORT RefNum; | |
255 UBYTE MaxNum; | |
256 UBYTE SeqNum[CONC_MAX_SEGS]; | |
257 UBYTE RecNum[CONC_MAX_SEGS]; | |
258 BOOL Conc_Full; | |
259 UBYTE Numsegs; | |
260 } full; | |
261 | |
262 union | |
263 { | |
264 T_CONC_CMSS concCMSS; | |
265 T_CONC_CMGS concCMGS; | |
266 T_CONC_CMGC concCMGC; | |
267 T_CONC_CMGR concCMGR; | |
268 T_CONC_CMGW concCMGW; | |
269 T_CONC_CMGD concCMGD; | |
270 } specPrm; | |
271 } | |
272 T_CONC_SHRD_PRM; | |
273 | |
274 | |
275 | |
276 /****************************** FUNCTIONS ********************************/ | |
277 | |
278 | |
279 /* Init Functions */ | |
280 | |
281 EXTERN T_CONC_INIT_RETURN concSMS_initSendFromMem ( T_ACI_CMD_SRC srcId, | |
282 UBYTE *index, | |
283 CHAR* da, | |
284 T_ACI_TOA* toda ); | |
285 | |
286 EXTERN T_CONC_INIT_RETURN concSMS_initReadFromMem ( T_ACI_CMD_SRC srcId, | |
287 UBYTE index, | |
288 T_ACI_SMS_READ rdMode ); | |
289 | |
290 EXTERN T_CONC_INIT_RETURN concSMS_initDeleteFromMem ( T_ACI_CMD_SRC srcId, | |
291 UBYTE index ); | |
292 | |
293 EXTERN T_CONC_INIT_RETURN concSMS_initSend ( T_ACI_SM_DATA* tar_data, | |
294 T_ACI_UDH_DATA* udh, | |
295 T_ACI_CMD_SRC srcId, | |
296 CHAR* da, | |
297 T_ACI_TOA* toda, | |
298 T_SM_DATA_EXT* src_data, | |
299 CHAR* sca, | |
300 T_ACI_TOA* tosca, | |
301 SHORT isReply, | |
302 UBYTE alphabet ); | |
303 | |
304 EXTERN T_CONC_INIT_RETURN concSMS_initStoreInMem ( T_ACI_SM_DATA* tar_data, | |
305 T_ACI_UDH_DATA* udh, | |
306 T_ACI_CMD_SRC srcId, | |
307 SHORT index, | |
308 CHAR* address, | |
309 T_ACI_TOA* toa, | |
310 T_ACI_SMS_STAT stat, | |
311 UBYTE msg_ref, | |
312 T_SM_DATA_EXT* src_data, | |
313 CHAR* sca, | |
314 T_ACI_TOA* tosca, | |
315 SHORT isReply, | |
316 UBYTE alphabet ); | |
317 | |
318 EXTERN T_CONC_INIT_RETURN concSMS_initCommand ( T_ACI_CMD_SRC srcId, | |
319 SHORT fo, | |
320 SHORT ct, | |
321 SHORT pid, | |
322 SHORT mn, | |
323 CHAR* da, | |
324 T_ACI_TOA* toda, | |
325 T_ACI_CMD_DATA* data ); | |
326 | |
327 | |
328 | |
329 /* Callback Functions */ | |
330 | |
331 EXTERN void rConcSMS_PlusCMSS (UBYTE mr, UBYTE numSeg); | |
332 | |
333 EXTERN void rConcSMS_PlusCMGS (UBYTE mr, UBYTE numSeg); | |
334 | |
335 EXTERN void rConcSMS_PlusCMGR (T_ACI_CMGL_SM* sm, | |
336 T_ACI_CMGR_CBM* cbm); | |
337 | |
338 EXTERN void rConcSMS_PlusCMGW (UBYTE index, UBYTE numSeg); | |
339 | |
340 EXTERN void rConcSMS_PlusCMGD (); | |
341 | |
342 EXTERN void rConcSMS_PlusCMGC (UBYTE mr); | |
343 | |
344 EXTERN void rConcSMS_PercentCMGMDU (void); | |
345 | |
346 /* Error Callback Functions */ | |
347 | |
348 EXTERN void rConcSMS_PlusCMS_CMSS (T_ACI_AT_CMD cmdId, T_ACI_CMS_ERR err, | |
349 T_EXT_CMS_ERROR *conc_error); | |
350 | |
351 EXTERN void rConcSMS_PlusCMS_CMGS (T_ACI_AT_CMD cmdId, T_ACI_CMS_ERR err, | |
352 T_EXT_CMS_ERROR *conc_error); | |
353 | |
354 EXTERN void rConcSMS_PlusCMS_CMGW (T_ACI_AT_CMD cmdId, T_ACI_CMS_ERR err, | |
355 T_EXT_CMS_ERROR *conc_error); | |
356 | |
357 EXTERN void rConcSMS_PlusCMS_CMGD (T_ACI_AT_CMD cmdId, T_ACI_CMS_ERR err, | |
358 T_EXT_CMS_ERROR *conc_error); | |
359 | |
360 | |
361 | |
362 EXTERN void concSMS_Init(); | |
363 | |
364 EXTERN void concSMS_clearIncompleteMsg(); | |
365 | |
366 EXTERN void concSMS_delAllIncompleteMsg(); | |
367 | |
368 EXTERN void concSMS_AddtoconcBuff(); | |
369 | |
370 EXTERN T_SMS_TYPE SMS_getSMSType ( T_ACI_UDH_DATA* udh ); | |
371 | |
372 EXTERN UBYTE concSMS_GetFirstIndex ( USHORT msg_ref, CHAR* address ); | |
373 | |
374 EXTERN USHORT concSMS_GetMsgRef ( T_ACI_CMGL_SM *sm ); | |
375 | |
376 EXTERN T_CONC_ASSEMBLY_RETURN concSMS_Collect ( T_SM_DATA_EXT *data_conc, | |
377 T_ACI_CMGL_SM *sm, | |
378 UBYTE isStored ); | |
379 | |
380 EXTERN void rConcSMS_PercentCMGR (T_ACI_CMGL_SM* sm, | |
381 T_ACI_CMGR_CBM* cbm); | |
382 | |
383 | |
384 | |
385 | |
386 #ifdef CONC_SMS_C | |
387 | |
388 GLOBAL T_CONC_SHRD_PRM concShrdPrm; | |
389 #else | |
390 | |
391 EXTERN T_CONC_SHRD_PRM concShrdPrm; | |
392 #endif /* CONC_SMS_C */ | |
393 | |
394 EXTERN void concSMS_DeleteConcList(); | |
395 | |
396 #endif |