FreeCalypso > hg > fc-magnetite
comparison src/aci2/aci/psa_smsf.c @ 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 : GSM-PS (6147) | |
| 4 | Modul : PSA_SMSF | |
| 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 functions for the protocol | |
| 18 | stack adapter for the registration part of mobility | |
| 19 | management. | |
| 20 +----------------------------------------------------------------------------- | |
| 21 */ | |
| 22 | |
| 23 #ifndef PSA_SMSF_C | |
| 24 #define PSA_SMSF_C | |
| 25 #endif | |
| 26 | |
| 27 #include "aci_all.h" | |
| 28 | |
| 29 #undef TRACING | |
| 30 | |
| 31 /*==== INCLUDES ===================================================*/ | |
| 32 #include "aci_cmh.h" | |
| 33 #include "ati_cmd.h" | |
| 34 #include "aci_cmd.h" | |
| 35 | |
| 36 #ifdef FAX_AND_DATA | |
| 37 #include "aci_fd.h" | |
| 38 #endif /* of #ifdef FAX_AND_DATA */ | |
| 39 | |
| 40 #include "aci.h" | |
| 41 #include "aci_lst.h" | |
| 42 #include "aci_mem.h" | |
| 43 #include "psa.h" | |
| 44 #ifdef SIM_TOOLKIT | |
| 45 #include "psa_cc.h" | |
| 46 #include "psa_sat.h" | |
| 47 #endif | |
| 48 #include "psa_sms.h" | |
| 49 #include "psa_util.h" | |
| 50 #include "cmh.h" | |
| 51 #include "cmh_sms.h" | |
| 52 #include "psa_sim.h" | |
| 53 | |
| 54 #if (defined (MFW) AND !defined (FF_MMI_RIV)) OR defined (_CONC_TESTING_) | |
| 55 #include "conc_sms.h" | |
| 56 #endif | |
| 57 | |
| 58 /*==== CONSTANTS ==================================================*/ | |
| 59 #define ITM_WDT (14) /* item width in chars */ | |
| 60 #define HDR_WDT (10) /* header width in chars */ | |
| 61 | |
| 62 /*==== TYPES ======================================================*/ | |
| 63 | |
| 64 /*==== EXPORT =====================================================*/ | |
| 65 | |
| 66 /*==== VARIABLES ==================================================*/ | |
| 67 GLOBAL T_ACI_LIST *set_prm_list = NULL; | |
| 68 | |
| 69 /*==== FUNCTIONS ==================================================*/ | |
| 70 | |
| 71 #ifdef SIM_TOOLKIT | |
| 72 EXTERN BOOL cmhSMS_FileUpdate (int, T_SIM_FILE_UPDATE_IND *); | |
| 73 #endif | |
| 74 | |
| 75 /* | |
| 76 +-------------------------------------------------------------------+ | |
| 77 | PROJECT : GSM-PS (6147) MODULE : PSA_SMSF | | |
| 78 | ROUTINE : psaSMS_Init | | |
| 79 +-------------------------------------------------------------------+ | |
| 80 | |
| 81 PURPOSE : initialize the protocol stack adapter for SMS. | |
| 82 | |
| 83 */ | |
| 84 | |
| 85 /* MACRO: initializer for set parameter */ | |
| 86 #define INIT_SET_PARM( dest, def )\ | |
| 87 {smsShrdPrm.pSetPrm[0]->dest = def;} | |
| 88 | |
| 89 | |
| 90 | |
| 91 | |
| 92 | |
| 93 GLOBAL void psaSMS_InitParams ( void ) | |
| 94 { | |
| 95 INIT_SET_PARM( sca.ton, SMS_TON_UNKNOWN ); | |
| 96 INIT_SET_PARM( sca.npi, SMS_NPI_UNKNOWN ); | |
| 97 INIT_SET_PARM( sca.c_num, 0 ); | |
| 98 INIT_SET_PARM( vpRel, TP_VP_RELATIVE_DEFAULT ); | |
| 99 INIT_SET_PARM( pid, SMS_PID_DEFAULT ); | |
| 100 INIT_SET_PARM( dcs, SMS_DCS_GRP_DEF ); | |
| 101 INIT_SET_PARM( msgType, (TP_MTI_SMS_SUBMIT + TP_VPF_RELATIVE)); | |
| 102 | |
| 103 smsShrdPrm.cbmPrm.cbmFoundIds = 0; | |
| 104 memset(smsShrdPrm.cbmPrm.msgId, DEF_MID_RANGE, sizeof(smsShrdPrm.cbmPrm.msgId)); | |
| 105 } | |
| 106 GLOBAL void psaSMS_Init ( void ) | |
| 107 { | |
| 108 int LpCnt; /* holds loop counter for macro */ | |
| 109 T_SMS_SET_PRM * elem; | |
| 110 | |
| 111 /* | |
| 112 *------------------------------------------------------------------- | |
| 113 * set default parms | |
| 114 *------------------------------------------------------------------- | |
| 115 */ | |
| 116 smsShrdPrm.smsStat = SMS_STATE_NOT_AVAILABLE; | |
| 117 smsShrdPrm.accessEnabled = FALSE; | |
| 118 smsShrdPrm.aci_sms_parameter.simTotal = 0; | |
| 119 smsShrdPrm.aci_sms_parameter.simUsed = 0; | |
| 120 smsShrdPrm.aci_sms_parameter.meTotal = 0; | |
| 121 smsShrdPrm.aci_sms_parameter.meUsed = 0; | |
| 122 smsShrdPrm.owner = OWN_NONE; | |
| 123 smsShrdPrm.cbmPrm.cbchOwner = OWN_NONE; | |
| 124 smsShrdPrm.rslt = 0x200/*CS_OK*/; | |
| 125 | |
| 126 smsShrdPrm.aci_sms_parameter.snd_msg_ref = 0; | |
| 127 | |
| 128 smsShrdPrm.aci_sms_parameter.smsParamRecLen = 0; | |
| 129 smsShrdPrm.aci_sms_parameter.smsParamMaxRec = 0; | |
| 130 smsShrdPrm.mtHndl = MT0; | |
| 131 smsShrdPrm.srHndl = DS0; | |
| 132 smsShrdPrm.cbmPrm.cbmHndl = BM0; | |
| 133 smsShrdPrm.cbmPrm.cbmMode = CBCH_ACCEPT; | |
| 134 smsShrdPrm.cbmPrm.cbmFoundIds = 0; | |
| 135 smsShrdPrm.cbmPrm.cbmSIMmaxId = 0; | |
| 136 smsShrdPrm.cbmPrm.cbmSIMmaxIdRge = 0; | |
| 137 | |
| 138 smsShrdPrm.tpdu.tp_submit = NULL; | |
| 139 smsShrdPrm.tpdu.tp_deliver = NULL; | |
| 140 smsShrdPrm.tpdu.tp_command = NULL; | |
| 141 | |
| 142 #ifdef FF_HOMEZONE | |
| 143 smsShrdPrm.cbmPrm.hzMode = CBHZ_MOD_NotActive; | |
| 144 smsShrdPrm.cbmPrm.hzDcs = CS_GsmDef; | |
| 145 smsShrdPrm.cbmPrm.hzTimeout = CBHZ_DEF_TIMEOUT; | |
| 146 #endif /* FF_HOMEZONE */ | |
| 147 | |
| 148 smsShrdPrm.mem1 = MEM_SM; | |
| 149 smsShrdPrm.mem2 = MEM_SM; | |
| 150 smsShrdPrm.mem3 = MEM_SM; | |
| 151 smsShrdPrm.status = CMGD_DEL_INDEX; | |
| 152 smsShrdPrm.cnma_ack_expected = FALSE; | |
| 153 smsShrdPrm.uiInternalSmsStorage = CMD_SRC_NONE; | |
| 154 smsShrdPrm.smsSrcId = CMD_SRC_NONE; | |
| 155 | |
| 156 smsShrdPrm.CSMSservice = CSMS_SERV_GsmPh2; | |
| 157 smsShrdPrm.CSMSmt = CSMS_SUPP_Enable; | |
| 158 smsShrdPrm.CSMSmo = CSMS_SUPP_Enable; | |
| 159 smsShrdPrm.CSMSbm = CSMS_SUPP_Enable; | |
| 160 | |
| 161 smsShrdPrm.CNMImt = CNMI_MT_NoSmsDeliverInd; | |
| 162 smsShrdPrm.CNMIbm = CNMI_BM_NoCbmInd; | |
| 163 smsShrdPrm.CNMIds = CNMI_DS_NoSmsStatRpt; | |
| 164 | |
| 165 | |
| 166 smsShrdPrm.prmRdSeq = SMS_READ_SIM_CMPL; | |
| 167 smsShrdPrm.pDecMsg = NULL; | |
| 168 | |
| 169 smsShrdPrm.rplyCB.cmss = NULL; | |
| 170 smsShrdPrm.errorCB = NULL; | |
| 171 | |
| 172 smsShrdPrm.CMMSmode = CMMS_MODE_DEF; | |
| 173 | |
| 174 #ifdef FF_MMI_RIV | |
| 175 smsShrdPrm.perccmgf_smbs_mode = PERC_SMBS_MOD_DISABLE; | |
| 176 #endif /* #ifdef FF_MMI_RIV */ | |
| 177 | |
| 178 if (set_prm_list EQ NULL) | |
| 179 { | |
| 180 set_prm_list = new_list(); | |
| 181 ACI_MALLOC(elem, sizeof(T_SMS_SET_PRM)); | |
| 182 memset(elem, 0, sizeof(T_SMS_SET_PRM)); | |
| 183 insert_list(set_prm_list, elem); | |
| 184 | |
| 185 /* all set prm pointer should point to this element */ | |
| 186 for( LpCnt = 0; LpCnt < OWN_MAX; LpCnt++ ) | |
| 187 { | |
| 188 smsShrdPrm.pSetPrm[LpCnt] = elem; | |
| 189 } | |
| 190 } | |
| 191 | |
| 192 #ifndef SMS_PDU_SUPPORT | |
| 193 INIT_SET_PARM( CMGFmode, CMGF_MOD_Txt ); | |
| 194 #else | |
| 195 INIT_SET_PARM( CMGFmode, CMGF_MOD_Pdu ); | |
| 196 #endif | |
| 197 | |
| 198 INIT_SET_PARM( prflId, 1 ); | |
| 199 INIT_SET_PARM( isCopy, FALSE ); | |
| 200 INIT_SET_PARM( numOfRefs, OWN_MAX ); | |
| 201 INIT_SET_PARM( sca.ton, SMS_TON_UNKNOWN ); | |
| 202 INIT_SET_PARM( sca.npi, SMS_NPI_UNKNOWN ); | |
| 203 INIT_SET_PARM( sca.c_num, 0 ); | |
| 204 INIT_SET_PARM( vpRel, TP_VP_RELATIVE_DEFAULT ); | |
| 205 INIT_SET_PARM( pid, SMS_PID_DEFAULT ); | |
| 206 INIT_SET_PARM( dcs, SMS_DCS_GRP_DEF ); | |
| 207 INIT_SET_PARM( msgType, (TP_MTI_SMS_SUBMIT + TP_VPF_RELATIVE)); | |
| 208 | |
| 209 memset(smsShrdPrm.cbmPrm.msgId, DEF_MID_RANGE, sizeof(smsShrdPrm.cbmPrm.msgId)); | |
| 210 memset(smsShrdPrm.cbmPrm.dcsId, DEF_DCS_RANGE, sizeof(smsShrdPrm.cbmPrm.dcsId)); | |
| 211 | |
| 212 smsShrdPrm.pSetPrm[0]->vpAbs.year [0] = 7; | |
| 213 smsShrdPrm.pSetPrm[0]->vpAbs.year [1] = 0; | |
| 214 smsShrdPrm.pSetPrm[0]->vpAbs.month [0] = 0; | |
| 215 smsShrdPrm.pSetPrm[0]->vpAbs.month [1] = 1; | |
| 216 smsShrdPrm.pSetPrm[0]->vpAbs.day [0] = 0; | |
| 217 smsShrdPrm.pSetPrm[0]->vpAbs.day [1] = 1; | |
| 218 smsShrdPrm.pSetPrm[0]->vpAbs.hour [0] = 0; | |
| 219 smsShrdPrm.pSetPrm[0]->vpAbs.hour [1] = 0; | |
| 220 smsShrdPrm.pSetPrm[0]->vpAbs.minute[0] = 0; | |
| 221 smsShrdPrm.pSetPrm[0]->vpAbs.minute[1] = 0; | |
| 222 smsShrdPrm.pSetPrm[0]->vpAbs.second[0] = 0; | |
| 223 smsShrdPrm.pSetPrm[0]->vpAbs.second[1] = 0; | |
| 224 smsShrdPrm.pSetPrm[0]->vpAbs.tz_lsb = 0; | |
| 225 smsShrdPrm.pSetPrm[0]->vpAbs.tz_sign = 0; | |
| 226 smsShrdPrm.pSetPrm[0]->vpAbs.tz_msb = 0; | |
| 227 | |
| 228 memset(&smsShrdPrm.pSetPrm[0]->vpEnh, 0, sizeof(smsShrdPrm.pSetPrm[0]->vpEnh)); | |
| 229 smsShrdPrm.pSetPrm[0]->vpEnh.tvpf = SMS_TVPF_RELATIVE; | |
| 230 smsShrdPrm.pSetPrm[0]->vpEnh.v_tp_vp_rel = 1; | |
| 231 smsShrdPrm.pSetPrm[0]->vpEnh.tp_vp_rel = TP_VP_RELATIVE_DEFAULT; | |
| 232 | |
| 233 #ifdef SIM_TOOLKIT | |
| 234 simShrdPrm.fuRef = -1; | |
| 235 if (!psaSAT_FURegister (cmhSMS_FileUpdate)) | |
| 236 { | |
| 237 TRACE_EVENT ("FAILED to register the handler cmhSMS_FileUpdate() for FU"); | |
| 238 } | |
| 239 #endif | |
| 240 | |
| 241 #if (defined (MFW) AND !defined (FF_MMI_RIV)) OR defined (_CONC_TESTING_) | |
| 242 concSMS_Init(); | |
| 243 #endif | |
| 244 } | |
| 245 | |
| 246 /* | |
| 247 +-------------------------------------------------------------------+ | |
| 248 | PROJECT : GSM-PS (6147) MODULE : PSA_SMSF | | |
| 249 | ROUTINE : psaSMS_shrPrmDump | | |
| 250 +-------------------------------------------------------------------+ | |
| 251 | |
| 252 PURPOSE : this function dumps the shared parameter to the debug | |
| 253 output. | |
| 254 */ | |
| 255 | |
| 256 GLOBAL void psaSMS_shrPrmDump ( void ) | |
| 257 { | |
| 258 #ifdef TRACING | |
| 259 | |
| 260 char lnBuf [80]; /* holds buffer for output line */ | |
| 261 SHORT chrNr; /* holds number of processed chars */ | |
| 262 | |
| 263 /* --- SIM total -----------------------------------------------*/ | |
| 264 chrNr = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, " SIM total" ); | |
| 265 chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT, | |
| 266 smsShrdPrm.aci_sms_parameter.simTotal ); | |
| 267 TRACE_EVENT( lnBuf ); | |
| 268 | |
| 269 /* --- SIM used ------------------------------------------------*/ | |
| 270 chrNr = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, " SIM used" ); | |
| 271 chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT, | |
| 272 smsShrdPrm.aci_sms_parameter.simUsed ); | |
| 273 TRACE_EVENT( lnBuf ); | |
| 274 | |
| 275 /* --- ME total ------------------------------------------------*/ | |
| 276 chrNr = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, " ME total" ); | |
| 277 chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT, | |
| 278 smsShrdPrm.aci_sms_parameter.meTotal ); | |
| 279 TRACE_EVENT( lnBuf ); | |
| 280 | |
| 281 /* --- ME used -------------------------------------------------*/ | |
| 282 chrNr = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, " ME used" ); | |
| 283 chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT, | |
| 284 smsShrdPrm.aci_sms_parameter.meUsed ); | |
| 285 TRACE_EVENT( lnBuf ); | |
| 286 | |
| 287 /* --- SMS status ----------------------------------------------*/ | |
| 288 chrNr = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, "SMS status" ); | |
| 289 chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT, | |
| 290 smsShrdPrm.smsStat ); | |
| 291 TRACE_EVENT( lnBuf ); | |
| 292 | |
| 293 #endif /* of #ifdef TRACING */ | |
| 294 } | |
| 295 | |
| 296 | |
| 297 /* | |
| 298 +-------------------------------------------------------------------+ | |
| 299 | PROJECT : GSM-PS (6147) MODULE : PSA_SMSF | | |
| 300 | ROUTINE : psaSMS_printSetPrm | | |
| 301 +-------------------------------------------------------------------+ | |
| 302 | |
| 303 PURPOSE : | |
| 304 */ | |
| 305 | |
| 306 GLOBAL void psaSMS_printSetPrm ( T_SMS_SET_PRM * pSMSSetPrm ) | |
| 307 { | |
| 308 #ifdef TRACING | |
| 309 | |
| 310 UBYTE prflId; | |
| 311 UBYTE isCopy; | |
| 312 UBYTE numOfRefs; | |
| 313 | |
| 314 SHORT fo; | |
| 315 SHORT vprel; | |
| 316 T_ACI_VP_ABS vpabs; | |
| 317 T_ACI_VP_ENH vpenh; | |
| 318 SHORT pid; | |
| 319 SHORT dcs; | |
| 320 char vpenh_str[15]; | |
| 321 | |
| 322 char vpabs_str[25] = {'\0'}; | |
| 323 | |
| 324 CHAR *buf; | |
| 325 | |
| 326 /* | |
| 327 *----------------------------------------------------------------- | |
| 328 * fill in parameters | |
| 329 *----------------------------------------------------------------- | |
| 330 */ | |
| 331 | |
| 332 isCopy = pSMSSetPrm -> isCopy; | |
| 333 prflId = pSMSSetPrm -> prflId; | |
| 334 numOfRefs = pSMSSetPrm -> numOfRefs; | |
| 335 | |
| 336 fo = pSMSSetPrm -> msgType; | |
| 337 vprel = pSMSSetPrm -> vpRel; | |
| 338 | |
| 339 cmhSMS_setVpabsCmh ( &vpabs, &pSMSSetPrm -> vpAbs ); | |
| 340 cmhSMS_setVpenhCmh ( &vpenh, &pSMSSetPrm -> vpEnh ); | |
| 341 | |
| 342 pid = pSMSSetPrm -> pid; | |
| 343 dcs = pSMSSetPrm -> dcs; | |
| 344 | |
| 345 | |
| 346 MALLOC(buf,MAX_CMD_LEN); | |
| 347 if ((fo & TP_VPF_MASK) EQ TP_VPF_ABSOLUTE) /*Bits 4,3 -> 11*/ | |
| 348 { | |
| 349 sprintf(vpabs_str,"\"%d%d/%d%d/%d%d,%d%d:%d%d:%d%d%+03d\"", | |
| 350 vpabs.year [0], vpabs.year [1], | |
| 351 vpabs.month [0], vpabs.month [1], | |
| 352 vpabs.day [0], vpabs.day [1], | |
| 353 vpabs.hour [0], vpabs.hour [1], | |
| 354 vpabs.minute[0], vpabs.minute[1], | |
| 355 vpabs.second[0], vpabs.second[1], | |
| 356 vpabs.timezone); | |
| 357 sprintf(buf,"isCopy:%d,prflId:%d,numOfRefs:%d,fo:%d,vpabs:%s,pid:%d,dcs:%d", | |
| 358 isCopy,prflId,numOfRefs,fo,vpabs_str,pid,dcs); | |
| 359 } | |
| 360 else if ((fo & TP_VPF_MASK) EQ TP_VPF_ENHANCED) | |
| 361 { | |
| 362 | |
| 363 aci_encodeVpenh ( vpenh_str, &vpenh ); | |
| 364 | |
| 365 sprintf(buf,"isCopy:%d,prflId:%d,numOfRefs:%d,fo:%d,vpenh:\"%s\",pid:%d,dcs:%d", | |
| 366 isCopy,prflId,numOfRefs,fo,vpenh_str,pid,dcs); | |
| 367 } | |
| 368 else if ((fo & TP_VPF_MASK) EQ TP_VPF_RELATIVE) /*Bits 4,3 -> 10*/ | |
| 369 { | |
| 370 sprintf(buf,"isCopy:%d,prflId:%d,numOfRefs:%d,fo:%d,vprel:%d,pid:%d,dcs:%d", | |
| 371 isCopy,prflId,numOfRefs,fo,vprel,pid,dcs); | |
| 372 } | |
| 373 else | |
| 374 { | |
| 375 sprintf(buf,"isCopy:%d,prflId:%d,numOfRefs:%d,fo:%d,,pid:%d,dcs:%d", | |
| 376 isCopy,prflId,numOfRefs,fo,pid,dcs); | |
| 377 } | |
| 378 | |
| 379 TRACE_EVENT( buf ); | |
| 380 MFREE( buf ); | |
| 381 | |
| 382 #endif /* of #ifdef TRACING */ | |
| 383 } | |
| 384 | |
| 385 | |
| 386 /* | |
| 387 +-------------------------------------------------------------------+ | |
| 388 | PROJECT : GSM-PS (6147) MODULE : PSA_SMSF | | |
| 389 | ROUTINE : psaSMS_printSetPrmList | | |
| 390 +-------------------------------------------------------------------+ | |
| 391 | |
| 392 PURPOSE : | |
| 393 */ | |
| 394 | |
| 395 GLOBAL void psaSMS_printSetPrmList ( T_ACI_CMD_SRC srcId ) | |
| 396 { | |
| 397 #ifdef TRACING | |
| 398 | |
| 399 T_ACI_LIST *current; | |
| 400 UBYTE index=0; | |
| 401 char tmp[25]; | |
| 402 | |
| 403 current = set_prm_list; | |
| 404 | |
| 405 while (current) | |
| 406 { | |
| 407 sprintf(tmp, "SET PRM List Element %d:", index++); | |
| 408 TRACE_EVENT(tmp); | |
| 409 psaSMS_printSetPrm(current->msg); | |
| 410 current = current->next; | |
| 411 } | |
| 412 | |
| 413 TRACE_EVENT("CURRENT SET PRM:"); | |
| 414 psaSMS_printSetPrm(smsShrdPrm.pSetPrm[srcId]); | |
| 415 | |
| 416 #endif /* of #ifdef TRACING */ | |
| 417 } | |
| 418 | |
| 419 /*==== EOF ========================================================*/ | |
| 420 |
