comparison g23m/condat/ms/src/aci/psa_smsp.c @ 0:509db1a7b7b8

initial import: leo2moko-r1
author Space Falcon <falcon@ivan.Harhan.ORG>
date Mon, 01 Jun 2015 03:24:05 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:509db1a7b7b8
1 /*
2 +-----------------------------------------------------------------------------
3 | Project : GSM-PS (6147)
4 | Modul : PSA_SMSP
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 : This module defines the processing functions for the
18 | primitives send to the protocol stack adapter by
19 | short message service.
20 +-----------------------------------------------------------------------------
21 */
22
23 #ifndef PSA_SMSP_C
24 #define PSA_SMSP_C
25 #endif
26
27 #include "aci_all.h"
28
29 /*==== INCLUDES ===================================================*/
30 #include "aci_cmh.h"
31 #include "ati_cmd.h"
32 #include "aci_cmd.h"
33
34
35 #ifdef FAX_AND_DATA
36 #include "aci_fd.h"
37 #endif /* of #ifdef FAX_AND_DATA */
38
39 #include "aci.h"
40 #include "psa.h"
41 #include "psa_sms.h"
42 #include "cmh.h"
43 #include "cmh_sms.h"
44 #include "aoc.h"
45 #ifdef SIM_PERS
46 #include "cl_imei.h"
47 #include "aci_ext_pers.h"
48 #include "aci_slock.h"
49 #endif
50
51 #ifdef GPRS
52 #include "dti.h"
53 #include "dti_conn_mng.h"
54 #include "dti_cntrl_mng.h"
55 #include "gaci.h"
56 #include "gaci_cmh.h"
57 #include "psa_sm.h"
58
59 #include "cmh_sm.h"
60 #endif /* GPRS */
61 /*==== CONSTANTS ==================================================*/
62
63
64 /*==== TYPES ======================================================*/
65
66
67 /*==== EXPORT =====================================================*/
68
69
70 /*==== VARIABLES ==================================================*/
71 #ifndef PIN_LEN
72 #define PIN_LEN (8)
73 #endif
74 #ifdef SIM_PERS_OTA
75 #define CTRL_KEY_LEN PIN_LEN+1
76 #define SMS_DATA_IDX 41
77 #define IMEI_MISMATCH "0xFFFFFFFF"
78 #endif
79
80 /*==== FUNCTIONS ==================================================*/
81
82
83 /*
84 +-------------------------------------------------------------------+
85 | PROJECT : GSM-PS (6147) MODULE : PSA_SMSP |
86 | ROUTINE : psa_mnsms_message_ind |
87 +-------------------------------------------------------------------+
88
89 PURPOSE : processes the MNSMS_MESSAGE_IND primitive send by SMS.
90 this indicates an incoming SMS.
91
92 */
93
94 GLOBAL const void psa_mnsms_message_ind
95 ( T_MNSMS_MESSAGE_IND *mnsms_message_ind )
96 {
97 /* (was psa_mnsms_alert_ind) */
98 TRACE_FUNCTION ("psa_mnsms_message_ind()");
99
100
101 if (smsShrdPrm.smsStat EQ SMS_STATE_INITIALISING)
102 {
103 TRACE_FUNCTION ("SMS_STATE_INITIALISING");
104 cmhSMS_SMSInitState(mnsms_message_ind);
105 }
106 else
107 {
108 if (mnsms_message_ind->rec_num EQ SMS_RECORD_NOT_EXIST)
109 {
110 #ifdef FF_CPHS
111 if ( !cmhSMS_voice_mail_ind( &(mnsms_message_ind->sms_sdu)) )
112 #endif /* FF_CPHS */
113 cmhSMS_SMSDeliver (mnsms_message_ind);
114 }
115 else
116 {
117 /*
118 * Incoming SMS may modify the Advice of Charge Parameters
119 *
120 * Read them again
121 */
122 aoc_sms ();
123
124 #ifdef FF_CPHS
125 cmhSMS_voice_mail_ind( &(mnsms_message_ind->sms_sdu));
126 #endif /* FF_CPHS */
127 cmhSMS_SMSMemory (mnsms_message_ind);
128 }
129 }
130
131 /*
132 *-------------------------------------------------------------------
133 * free the primitive buffer
134 *-------------------------------------------------------------------
135 */
136 PFREE (mnsms_message_ind);
137 }
138
139 /*
140 +-------------------------------------------------------------------+
141 | PROJECT : GSM-PS (6147) MODULE : PSA_SMSP |
142 | ROUTINE : psa_mnsms_report_ind |
143 +-------------------------------------------------------------------+
144
145 PURPOSE : processes the MNSMS_REPORT_IND primitive send by SMS.
146 this indicates the state of the SMS Entity.
147
148 */
149
150 GLOBAL const void psa_mnsms_report_ind
151 ( T_MNSMS_REPORT_IND *mnsms_report_ind )
152 {
153
154 TRACE_FUNCTION ("psa_mnsms_report_ind()");
155
156 cmhSMS_Result(mnsms_report_ind);
157
158 /*
159 *-------------------------------------------------------------------
160 * free the primitive buffer
161 *-------------------------------------------------------------------
162 */
163 PFREE (mnsms_report_ind);
164
165 }
166
167 /*
168 +-------------------------------------------------------------------+
169 | PROJECT : GSM-PS (6147) MODULE : PSA_SMSP |
170 | ROUTINE : psa_mnsms_status_ind |
171 +-------------------------------------------------------------------+
172
173 PURPOSE : processes the MNSMS_STATUS_IND primitive send by SMS.
174 this indicates an incoming SMS status message.
175
176 */
177
178 GLOBAL const void psa_mnsms_status_ind ( T_MNSMS_STATUS_IND *mnsms_status_ind )
179 {
180 TRACE_FUNCTION ("psa_mnsms_status_ind()");
181
182 cmhSMS_SMSStatRpt (mnsms_status_ind);
183
184 /*
185 *-------------------------------------------------------------------
186 * free the primitive buffer
187 *-------------------------------------------------------------------
188 */
189 PFREE (mnsms_status_ind);
190 }
191
192 /*
193 +-------------------------------------------------------------------+
194 | PROJECT : GSM-PS (6147) MODULE : PSA_SMSP |
195 | ROUTINE : psa_mnsms_delete_cnf |
196 +-------------------------------------------------------------------+
197
198 PURPOSE : processes the MNSMS_DELETE_CNF primitive send by SMS.
199
200 */
201
202 GLOBAL const void psa_mnsms_delete_cnf ( T_MNSMS_DELETE_CNF *mnsms_delete_cnf )
203 {
204 TRACE_FUNCTION ("psa_mnsms_delete_cnf()");
205
206 cmhSMS_SMSDelCnf (mnsms_delete_cnf);
207
208 /*
209 *-------------------------------------------------------------------
210 * free the primitive buffer
211 *-------------------------------------------------------------------
212 */
213 PFREE (mnsms_delete_cnf);
214 }
215
216 /*
217 +-------------------------------------------------------------------+
218 | PROJECT : GSM-PS (6147) MODULE : PSA_SMSP |
219 | ROUTINE : psa_mnsms_read_cnf |
220 +-------------------------------------------------------------------+
221
222 PURPOSE : processes the MNSMS_READ_CNF primitive send by SMS.
223
224 */
225
226 GLOBAL const void psa_mnsms_read_cnf ( T_MNSMS_READ_CNF *mnsms_read_cnf )
227 {
228 TRACE_FUNCTION ("psa_mnsms_read_cnf()");
229
230 cmhSMS_SMRead (mnsms_read_cnf);
231
232 /*
233 *-------------------------------------------------------------------
234 * free the primitive buffer
235 *-------------------------------------------------------------------
236 */
237 PFREE (mnsms_read_cnf);
238 }
239
240 /*
241 +-------------------------------------------------------------------+
242 | PROJECT : GSM-PS (6147) MODULE : PSA_SMSP |
243 | ROUTINE : psa_mnsms_store_cnf |
244 +-------------------------------------------------------------------+
245
246 PURPOSE : processes the MNSMS_STORE_CNF primitive send by SMS.
247
248 */
249
250 GLOBAL const void psa_mnsms_store_cnf ( T_MNSMS_STORE_CNF *mnsms_store_cnf )
251 {
252 TRACE_FUNCTION ("psa_mnsms_store_cnf()");
253
254 cmhSMS_SMSStoCnf(mnsms_store_cnf);
255
256 /*
257 *-------------------------------------------------------------------
258 * free the primitive buffer
259 *-------------------------------------------------------------------
260 */
261 PFREE (mnsms_store_cnf);
262 }
263
264 /*
265 +-------------------------------------------------------------------+
266 | PROJECT : GSM-PS (6147) MODULE : PSA_SMSP |
267 | ROUTINE : psa_mnsms_submit_cnf |
268 +-------------------------------------------------------------------+
269
270 PURPOSE : processes the MNSMS_SUBMIT_CNF primitive send by SMS.
271
272 */
273
274 GLOBAL const void psa_mnsms_submit_cnf ( T_MNSMS_SUBMIT_CNF *mnsms_submit_cnf )
275 {
276 TRACE_FUNCTION ("psa_mnsms_submit_cnf()");
277
278 cmhSMS_SMSSbmCnf(mnsms_submit_cnf);
279
280 /*
281 *-------------------------------------------------------------------
282 * free the primitive buffer
283 *-------------------------------------------------------------------
284 */
285 PFREE (mnsms_submit_cnf);
286 }
287
288 /*
289 +-------------------------------------------------------------------+
290 | PROJECT : GSM-PS (6147) MODULE : PSA_SMSP |
291 | ROUTINE : psa_mnsms_command_cnf |
292 +-------------------------------------------------------------------+
293
294 PURPOSE : processes the MNSMS_COMMAND_CNF primitive send by SMS.
295
296 */
297
298 GLOBAL const void psa_mnsms_command_cnf ( T_MNSMS_COMMAND_CNF *mnsms_command_cnf )
299 {
300 TRACE_FUNCTION ("psa_mnsms_command_cnf()");
301
302 cmhSMS_SMSCmdCnf(mnsms_command_cnf);
303
304 /*
305 *-------------------------------------------------------------------
306 * free the primitive buffer
307 *-------------------------------------------------------------------
308 */
309 PFREE (mnsms_command_cnf);
310 }
311
312 /*
313 +-------------------------------------------------------------------+
314 | PROJECT : GSM-PS (6147) MODULE : PSA_SMSP |
315 | ROUTINE : psa_mnsms_error_ind |
316 +-------------------------------------------------------------------+
317
318 PURPOSE : processes the MNSMS_ERROR_IND primitive send by SMS.
319
320 */
321
322 GLOBAL const void psa_mnsms_error_ind ( T_MNSMS_ERROR_IND *mnsms_error_ind )
323 {
324 TRACE_FUNCTION ("psa_mnsms_error_ind()");
325
326 cmhSMS_SMSErrorInd(mnsms_error_ind);
327
328 /*
329 *-------------------------------------------------------------------
330 * free the primitive buffer
331 *-------------------------------------------------------------------
332 */
333 PFREE (mnsms_error_ind);
334 }
335
336
337 /*
338 +-------------------------------------------------------------------+
339 | PROJECT : GSM-PS (6147) MODULE : PSA_SMSP |
340 | ROUTINE : psa_mnsms_resume_cnf |
341 +-------------------------------------------------------------------+
342
343 PURPOSE : processes the MNSMS_RESUME_CNF primitive send by SMS.
344 This confirms that the receiving of has been SMS is
345 activated.
346
347 */
348
349 GLOBAL const void psa_mnsms_resume_cnf ( T_MNSMS_RESUME_CNF *mnsms_resume_cnf )
350 {
351 TRACE_FUNCTION ("psa_mnsms_resume_cnf()");
352
353 /* inform command handler */
354 cmhSMS_SMSResumeCnf(mnsms_resume_cnf);
355
356 /*
357 *-------------------------------------------------------------------
358 * free the primitive buffer
359 *-------------------------------------------------------------------
360 */
361 PFREE(mnsms_resume_cnf);
362 }
363
364 /*
365 +-------------------------------------------------------------------+
366 | PROJECT : GSM-PS (6147) MODULE : PSA_SMSP |
367 | ROUTINE : psa_mnsms_query_cnf |
368 +-------------------------------------------------------------------+
369
370 PURPOSE : processes the MNSMS_TEST_CNF primitive send by SMS.
371 This confirms that the receiving of has been SMS is
372 activated.
373
374 */
375
376 GLOBAL const void psa_mnsms_query_cnf ( T_MNSMS_QUERY_CNF *mnsms_query_cnf)
377 {
378 TRACE_FUNCTION ("psa_mnsms_query_cnf()");
379
380 /* inform command handler */
381 cmhSMS_SMSQueryCnf( mnsms_query_cnf );
382
383 /*
384 *-------------------------------------------------------------------
385 * free the primitive buffer
386 *-------------------------------------------------------------------
387 */
388 PFREE(mnsms_query_cnf);
389 }
390
391
392 #if defined (GPRS) AND defined (DTI)
393 /*
394 +-------------------------------------------------------------------+
395 | PROJECT : GSM-PS (6147) MODULE : PSA_SMSP |
396 | ROUTINE : psa_mnsms_info_cnf |
397 +-------------------------------------------------------------------+
398
399 PURPOSE : processes the MNSMS_MO_SERV_CNF primitive send by SMS.
400 this confirms the requested SMS message service.
401
402 */
403
404 GLOBAL const void psa_mnsms_mo_serv_cnf
405 ( T_MNSMS_MO_SERV_CNF *mnsms_mo_serv_cnf )
406 {
407
408 TRACE_FUNCTION ("psa_mnsms_mo_serv_cnf()");
409
410 /*
411 *-------------------------------------------------------------------
412 * update sms parameters and notify ACI
413 *-------------------------------------------------------------------
414 */
415
416 cmhSM_sms_service_changed( mnsms_mo_serv_cnf->mo_sms_serv );
417
418 /*
419 *-------------------------------------------------------------------
420 * free the primitive buffer
421 *-------------------------------------------------------------------
422 */
423 PFREE (mnsms_mo_serv_cnf);
424
425 }
426 #endif /* GPRS */
427
428
429 #ifdef SIM_PERS_OTA
430
431 /*
432 +------------------------------------------------------------------------------
433 | Function : psa_mnsms_OTA_decode_ind
434 +------------------------------------------------------------------------------
435 | Description : processes the MNSMS_OTA_DECODE_IND primitive
436 |
437 | Parameters : mnsms_ota_decode_ind - primitive
438 |
439 | Return : void
440 |
441 +------------------------------------------------------------------------------
442 */
443
444 GLOBAL const void psa_mnsms_OTA_decode_ind ( T_MNSMS_OTA_DECODE_IND *mnsms_ota_decode_ind )
445 {
446 UBYTE lcktype;
447 UBYTE ctrl_key[CTRL_KEY_LEN];
448 UBYTE *imei;
449 UBYTE imeiBufPtr[CL_IMEI_ISDID_SIZE];
450 UBYTE ret_status = 0;
451 UINT i = 0,ctr;
452
453 TRACE_FUNCTION ("psa_mnsms_OTA_decode_ind()");
454
455 imei = &mnsms_ota_decode_ind->tp_ud.data[73];
456
457 /*As the IMEI is 15 digits long (see TS 23.003 [3]),
458 the sixteenth digit present here is ignored by the ME
459 during the de-personalization procedure and should be set to zero.*/
460
461 *(imei+15) = 0;
462 cl_get_imeisv(CL_IMEI_ISDID_SIZE, imeiBufPtr, CL_IMEI_GET_SECURE_IMEI);
463
464 while (*imei EQ imeiBufPtr[i] && i NEQ CL_IMEI_ISDID_SIZE )
465 {
466 imei++;
467 i++;
468 }
469 if (i NEQ CL_IMEI_ISDID_SIZE)
470 ret_status = 0xff; //If IMEI mismatch occurs then status of all categories is set to IMEI Mismatch
471
472 /*Extract the values from the SMS user data*/
473
474 memset(ctrl_key,0,CTRL_KEY_LEN);
475
476 for(lcktype=SIMLOCK_NETWORK,ctr=SMS_DATA_IDX; lcktype<=SIMLOCK_CORPORATE;lcktype++,ctr+=PIN_LEN)
477 {
478 strncpy ( (char *) ctrl_key, (char*) mnsms_ota_decode_ind->tp_ud.data[ctr], PIN_LEN);
479 ctrl_key[PIN_LEN] = '\0';
480 if (memcmp ((char *)ctrl_key,IMEI_MISMATCH,PIN_LEN))
481 ret_status |= aci_ext_personalisation_get_status(lcktype);
482 else
483 {
484 if( aci_slock_unlock(lcktype, (char *) ctrl_key) EQ SIMLOCK_FAIL)
485 ret_status |= aci_ext_personalisation_get_status(lcktype);
486 }
487 if(lcktype NEQ SIMLOCK_CORPORATE)
488 ret_status <<= 2;
489 }
490
491 imei = &mnsms_ota_decode_ind->tp_ud.data[ctr];
492 {
493 PALLOC (mnsms_OTA_decode_res, MNSMS_OTA_DECODE_RES);
494 mnsms_OTA_decode_res->ota_status = ret_status;
495 for (i=0;i<CL_IMEI_ISDID_SIZE;i++)
496 {
497 mnsms_OTA_decode_res->imei[i] = *imei;
498 imei++;
499 }
500 PSEND (hCommSMS, mnsms_OTA_decode_res);
501 }
502 PFREE (mnsms_ota_decode_ind);
503 }
504 #endif //SIM_PERS_OTA
505 /*==== EOF =========================================================*/