FreeCalypso > hg > freecalypso-sw
comparison gsm-fw/g23m-aci/aci/conc_sms.h @ 775:eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Sun, 12 Oct 2014 01:45:14 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
774:40a721fd9854 | 775:eedbf248bac0 |
---|---|
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 30 | |
58 | |
59 | |
60 #define CONC_UDH_LEN 6 | |
61 | |
62 #define MAX_SEG_TOTAL 120 | |
63 | |
64 /* detection modes for SMS_getSMSType */ | |
65 #define MODE1 1 | |
66 #define MODE2 2 | |
67 #define MODE3 3 | |
68 | |
69 | |
70 /*==== TYPES ======================================================*/ | |
71 | |
72 #define SET_CONC \ | |
73 {concShrdPrm.isConcatenated = TRUE;} | |
74 | |
75 #define UNSET_CONC \ | |
76 {concShrdPrm.isConcatenated = FALSE;} | |
77 | |
78 #define ISSET_CONC \ | |
79 (concShrdPrm.isConcatenated EQ TRUE) | |
80 | |
81 | |
82 #ifdef _CONC_TESTING_ | |
83 #define SET_OWNBUF_CONC \ | |
84 if (concShrdPrm.isConcatenated) ownBuf = CMD_SRC_LCL; | |
85 #else | |
86 #define SET_OWNBUF_CONC | |
87 #endif | |
88 | |
89 | |
90 typedef enum /* for init functions */ | |
91 { | |
92 CONC_ERROR = -1, /* concatenation error */ | |
93 CONC_NOT_NEEDED, /* no concatenation needed */ | |
94 CONC_NEEDED /* concatenation needed */ | |
95 } T_CONC_INIT_RETURN; | |
96 | |
97 | |
98 typedef enum /* for collect function */ | |
99 { | |
100 CONC_ERR_UNKN, /* concatenation error unknown */ | |
101 CONC_ERR_BUF_FULL, /* buffer full */ | |
102 CONC_CONTINUED, /* concatenation continued */ | |
103 CONC_COMPLETED /* concatenation completed */ | |
104 } T_CONC_ASSEMBLY_RETURN; | |
105 | |
106 | |
107 typedef enum | |
108 { | |
109 UNKNOWN = -1, | |
110 NORMAL, | |
111 CONCATE, | |
112 VOICEMAIL, | |
113 NORMAL_IND_CSMS | |
114 } T_SMS_TYPE; | |
115 | |
116 | |
117 typedef struct /* data buffer for Assembly of Concat. SMS */ | |
118 { | |
119 UBYTE in_use; | |
120 USHORT ref_num; | |
121 CHAR address[MAX_SMS_ADDR_DIG+1]; | |
122 UBYTE next_exp_num; | |
123 UBYTE segs_left; | |
124 UBYTE seg_count; | |
125 T_SM_DATA_EXT data; | |
126 } | |
127 T_SM_ASSEMBLY; | |
128 | |
129 typedef struct /* segment buffer for Concat. SMS */ | |
130 { | |
131 UBYTE in_use; | |
132 USHORT ref_num; | |
133 CHAR address[MAX_SMS_ADDR_DIG+1]; | |
134 T_ACI_LIST *list; | |
135 } | |
136 T_SEG_BUF; | |
137 | |
138 typedef struct /* one segment buffer element for Concat. SMS */ | |
139 { | |
140 UBYTE seq_num; | |
141 UBYTE rec_num; | |
142 UBYTE status; /* in CMH format */ | |
143 T_SM_DATA_EXT data; | |
144 } | |
145 T_SEG_BUF_ELEM; | |
146 | |
147 typedef struct /* concatenated buffer for Concat. SMS */ | |
148 { | |
149 UBYTE in_use; | |
150 USHORT ref_num; | |
151 CHAR address[MAX_SMS_ADDR_DIG+1]; | |
152 UBYTE max_num; | |
153 T_ACI_LIST *list; | |
154 } | |
155 T_CONC_BUF; | |
156 | |
157 typedef struct /* one concatenated buffer element for Concat. SMS */ | |
158 { | |
159 UBYTE seq_num; | |
160 UBYTE rec_num; | |
161 UBYTE status; /* in CMH format */ | |
162 UBYTE mem; | |
163 } | |
164 T_CONC_BUF_ELEM; | |
165 | |
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_ACI_LIST *currConcBufListElem; /* current element in concatenated buffer */ | |
174 UBYTE skipStoSent; | |
175 } T_CONC_CMSS; | |
176 | |
177 typedef struct | |
178 { | |
179 CHAR da[MAX_SMS_ADDR_DIG+1]; | |
180 CHAR *p_da; | |
181 T_ACI_TOA toda; | |
182 T_ACI_TOA *p_toda; | |
183 T_SM_DATA_EXT data; | |
184 USHORT offset; /* byte offset in a conc. SM */ | |
185 CHAR sca[MAX_SMS_ADDR_DIG+1]; | |
186 CHAR *p_sca; | |
187 T_ACI_TOA tosca; | |
188 T_ACI_TOA *p_tosca; | |
189 SHORT isReply; | |
190 USHORT sent_bytes; | |
191 } T_CONC_CMGS; | |
192 | |
193 typedef struct | |
194 { | |
195 UBYTE command_count; | |
196 UBYTE fo; | |
197 UBYTE ct; | |
198 UBYTE pid; | |
199 CHAR da[MAX_SMS_ADDR_DIG+1]; | |
200 CHAR *p_da; | |
201 T_ACI_TOA toda; | |
202 T_ACI_TOA *p_toda; | |
203 T_SM_DATA_EXT data; /* user data */ | |
204 } T_CONC_CMGC; | |
205 | |
206 typedef struct | |
207 { | |
208 UBYTE rdMode; | |
209 T_ACI_LIST *currConcBufListElem; /* current element in concatenated buffer */ | |
210 } T_CONC_CMGR; | |
211 | |
212 typedef struct | |
213 { | |
214 CHAR da[MAX_SMS_ADDR_DIG+1]; | |
215 CHAR *p_da; | |
216 T_ACI_TOA toda; | |
217 T_ACI_TOA *p_toda; | |
218 UBYTE stat; | |
219 UBYTE msg_ref; | |
220 T_SM_DATA_EXT data; /* user data */ | |
221 USHORT offset; /* byte offset in a conc. SM */ | |
222 CHAR sca[MAX_SMS_ADDR_DIG+1]; | |
223 CHAR *p_sca; | |
224 T_ACI_TOA tosca; | |
225 T_ACI_TOA *p_tosca; | |
226 SHORT isReply; | |
227 USHORT sent_bytes; | |
228 } T_CONC_CMGW; | |
229 | |
230 typedef struct | |
231 { | |
232 USHORT ref_num; /* ref. number of the current conc. buffer */ | |
233 CHAR *address; | |
234 UBYTE error_count; | |
235 T_ACI_LIST *currConcBufListElem; /* current element in concatenated buffer */ | |
236 } T_CONC_CMGD; | |
237 | |
238 | |
239 | |
240 | |
241 | |
242 typedef struct /* Shared Parameter for Concat. SMS */ | |
243 { | |
244 UBYTE max_sms_len; /* max. length of one SM segment */ | |
245 UBYTE srcId; /* current source ID */ | |
246 UBYTE first_mr; /* message ref. of the first sent segment */ | |
247 UBYTE sentSegs; /* number of successfully sent segments,for "+CMGC"*/ | |
248 UBYTE isConcatenated; | |
249 UBYTE concTesting; | |
250 UBYTE l_uncomp8bit_data; | |
251 UBYTE l_uncomp7bit_data; | |
252 UBYTE l_uncomp8bit_data_conc; | |
253 UBYTE l_uncomp7bit_data_conc; | |
254 UBYTE mem_store; | |
255 UBYTE elem_count; /* total number of CSMS segments */ | |
256 | |
257 struct | |
258 { | |
259 UBYTE ref_num; /* conc. SM reference number */ | |
260 UBYTE max_num; /* max. number of SMs in one conc. message */ | |
261 UBYTE seq_num; /* sequence number of the current SM */ | |
262 } udh; | |
263 | |
264 struct | |
265 { | |
266 USHORT RefNum; | |
267 UBYTE MaxNum; | |
268 UBYTE SeqNum[CONC_MAX_SEGS]; | |
269 UBYTE RecNum[CONC_MAX_SEGS]; | |
270 UBYTE MemType[CONC_MAX_SEGS]; | |
271 BOOL Conc_Full; | |
272 UBYTE Numsegs; | |
273 } full; | |
274 | |
275 union | |
276 { | |
277 T_CONC_CMSS concCMSS; | |
278 T_CONC_CMGS concCMGS; | |
279 T_CONC_CMGC concCMGC; | |
280 T_CONC_CMGR concCMGR; | |
281 T_CONC_CMGW concCMGW; | |
282 T_CONC_CMGD concCMGD; | |
283 } specPrm; | |
284 } | |
285 T_CONC_SHRD_PRM; | |
286 | |
287 | |
288 #ifdef TI_PS_FF_CONC_SMS | |
289 /****************************** FUNCTIONS ********************************/ | |
290 | |
291 | |
292 /* Init Functions */ | |
293 | |
294 EXTERN T_CONC_INIT_RETURN concSMS_initSendFromMem ( T_ACI_CMD_SRC srcId, | |
295 UBYTE *index, | |
296 CHAR* da, | |
297 T_ACI_TOA* toda ); | |
298 | |
299 EXTERN T_CONC_INIT_RETURN concSMS_initReadFromMem ( T_ACI_CMD_SRC srcId, | |
300 UBYTE index, | |
301 T_ACI_SMS_READ rdMode ); | |
302 | |
303 EXTERN T_CONC_INIT_RETURN concSMS_initDeleteFromMem ( T_ACI_CMD_SRC srcId, | |
304 UBYTE index ); | |
305 | |
306 EXTERN T_CONC_INIT_RETURN concSMS_initSend ( T_ACI_SM_DATA* tar_data, | |
307 T_ACI_UDH_DATA* udh, | |
308 T_ACI_CMD_SRC srcId, | |
309 CHAR* da, | |
310 T_ACI_TOA* toda, | |
311 T_SM_DATA_EXT* src_data, | |
312 CHAR* sca, | |
313 T_ACI_TOA* tosca, | |
314 SHORT isReply, | |
315 UBYTE alphabet ); | |
316 | |
317 EXTERN T_CONC_INIT_RETURN concSMS_initStoreInMem ( T_ACI_SM_DATA* tar_data, | |
318 T_ACI_UDH_DATA* udh, | |
319 T_ACI_CMD_SRC srcId, | |
320 SHORT index, | |
321 CHAR* address, | |
322 T_ACI_TOA* toa, | |
323 T_ACI_SMS_STAT stat, | |
324 UBYTE msg_ref, | |
325 T_SM_DATA_EXT* src_data, | |
326 CHAR* sca, | |
327 T_ACI_TOA* tosca, | |
328 SHORT isReply, | |
329 UBYTE alphabet ); | |
330 | |
331 EXTERN T_CONC_INIT_RETURN concSMS_initCommand ( T_ACI_CMD_SRC srcId, | |
332 SHORT fo, | |
333 SHORT ct, | |
334 SHORT pid, | |
335 SHORT mn, | |
336 CHAR* da, | |
337 T_ACI_TOA* toda, | |
338 T_ACI_CMD_DATA* data ); | |
339 | |
340 | |
341 | |
342 /* Callback Functions */ | |
343 | |
344 EXTERN void rConcSMS_PlusCMSS (UBYTE mr, UBYTE numSeg); | |
345 | |
346 EXTERN void rConcSMS_PlusCMGS (UBYTE mr, UBYTE numSeg); | |
347 | |
348 EXTERN void rConcSMS_PlusCMGR (T_ACI_CMGL_SM* sm, | |
349 T_ACI_CMGR_CBM* cbm); | |
350 | |
351 EXTERN void rConcSMS_PlusCMGW (UBYTE index, UBYTE numSeg, UBYTE mem); | |
352 | |
353 EXTERN void rConcSMS_PlusCMGD (); | |
354 | |
355 EXTERN void rConcSMS_PlusCMGC (UBYTE mr); | |
356 | |
357 EXTERN void rConcSMS_PercentCMGMDU (void); | |
358 | |
359 /* Error Callback Functions */ | |
360 | |
361 EXTERN void rConcSMS_PlusCMS_CMSS (T_ACI_AT_CMD cmdId, T_ACI_CMS_ERR err, | |
362 T_EXT_CMS_ERROR *conc_error); | |
363 | |
364 EXTERN void rConcSMS_PlusCMS_CMGS (T_ACI_AT_CMD cmdId, T_ACI_CMS_ERR err, | |
365 T_EXT_CMS_ERROR *conc_error); | |
366 | |
367 EXTERN void rConcSMS_PlusCMS_CMGW (T_ACI_AT_CMD cmdId, T_ACI_CMS_ERR err, | |
368 T_EXT_CMS_ERROR *conc_error); | |
369 | |
370 EXTERN void rConcSMS_PlusCMS_CMGD (T_ACI_AT_CMD cmdId, T_ACI_CMS_ERR err, | |
371 T_EXT_CMS_ERROR *conc_error); | |
372 #endif /* TI_PS_FF_CONC_SMS */ | |
373 | |
374 | |
375 EXTERN void concSMS_Init(); | |
376 | |
377 EXTERN void concSMS_clearIncompleteMsg(); | |
378 | |
379 EXTERN void concSMS_delAllIncompleteMsg(); | |
380 | |
381 EXTERN void concSMS_AddtoconcBuff(); | |
382 | |
383 EXTERN T_SMS_TYPE SMS_getSMSType ( T_ACI_UDH_DATA* udh, char *address, UBYTE detMode); | |
384 | |
385 EXTERN UBYTE concSMS_GetFirstIndex ( USHORT msg_ref, CHAR* address ); | |
386 | |
387 /* provide mem_type as well */ | |
388 EXTERN T_CONC_BUF_ELEM *concSMS_GetFirstIndex_ext ( USHORT msg_ref, CHAR* address ); | |
389 | |
390 EXTERN USHORT concSMS_GetMsgRef ( T_ACI_CMGL_SM *sm ); | |
391 | |
392 EXTERN T_CONC_ASSEMBLY_RETURN concSMS_Collect ( T_SM_DATA_EXT *data_conc, | |
393 T_ACI_CMGL_SM *sm, | |
394 UBYTE isStored, | |
395 T_ACI_SMS_STOR mem ); | |
396 | |
397 #ifdef TI_PS_FF_CONC_SMS | |
398 EXTERN void rConcSMS_PercentCMGR (T_ACI_CMGL_SM* sm, | |
399 T_ACI_CMGR_CBM* cbm); | |
400 #endif /* TI_PS_FF_CONC_SMS */ | |
401 | |
402 | |
403 | |
404 #ifdef CONC_SMS_C | |
405 | |
406 GLOBAL T_CONC_SHRD_PRM concShrdPrm; | |
407 #else | |
408 | |
409 EXTERN T_CONC_SHRD_PRM concShrdPrm; | |
410 #endif /* CONC_SMS_C */ | |
411 | |
412 EXTERN void concSMS_DeleteConcList(); | |
413 EXTERN BOOL concSMS_concBufferAvail(); | |
414 | |
415 #endif |