diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/aci2/aci/psa_smsf.c	Mon Sep 26 00:29:36 2016 +0000
@@ -0,0 +1,420 @@
+/* 
++----------------------------------------------------------------------------- 
+|  Project :  GSM-PS (6147)
+|  Modul   :  PSA_SMSF
++----------------------------------------------------------------------------- 
+|  Copyright 2002 Texas Instruments Berlin, AG 
+|                 All rights reserved. 
+| 
+|                 This file is confidential and a trade secret of Texas 
+|                 Instruments Berlin, AG 
+|                 The receipt of or possession of this file does not convey 
+|                 any rights to reproduce or disclose its contents or to 
+|                 manufacture, use, or sell anything it may describe, in 
+|                 whole, or in part, without the specific written consent of 
+|                 Texas Instruments Berlin, AG. 
++----------------------------------------------------------------------------- 
+|  Purpose :  This module defines the functions for the protocol
+|             stack adapter for the registration part of mobility
+|             management. 
++----------------------------------------------------------------------------- 
+*/ 
+
+#ifndef PSA_SMSF_C
+#define PSA_SMSF_C
+#endif
+
+#include "aci_all.h"
+
+#undef TRACING
+
+/*==== INCLUDES ===================================================*/
+#include "aci_cmh.h"
+#include "ati_cmd.h"
+#include "aci_cmd.h"
+
+#ifdef FAX_AND_DATA
+#include "aci_fd.h"
+#endif    /* of #ifdef FAX_AND_DATA */
+
+#include "aci.h"
+#include "aci_lst.h"
+#include "aci_mem.h"
+#include "psa.h"
+#ifdef SIM_TOOLKIT
+#include "psa_cc.h"
+#include "psa_sat.h"
+#endif
+#include "psa_sms.h"
+#include "psa_util.h"
+#include "cmh.h"
+#include "cmh_sms.h"
+#include "psa_sim.h"
+
+#if (defined (MFW) AND !defined (FF_MMI_RIV)) OR defined (_CONC_TESTING_)
+#include "conc_sms.h"
+#endif
+
+/*==== CONSTANTS ==================================================*/
+#define ITM_WDT         (14)    /* item width in chars */
+#define HDR_WDT         (10)    /* header width in chars */
+
+/*==== TYPES ======================================================*/
+
+/*==== EXPORT =====================================================*/
+
+/*==== VARIABLES ==================================================*/
+GLOBAL T_ACI_LIST *set_prm_list = NULL;
+
+/*==== FUNCTIONS ==================================================*/
+
+#ifdef SIM_TOOLKIT
+EXTERN BOOL cmhSMS_FileUpdate (int, T_SIM_FILE_UPDATE_IND *);
+#endif
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)         MODULE  : PSA_SMSF                |
+|                                 ROUTINE : psaSMS_Init             |
++-------------------------------------------------------------------+
+
+  PURPOSE : initialize the protocol stack adapter for SMS.
+
+*/
+
+/* MACRO: initializer for set parameter */
+#define INIT_SET_PARM( dest, def )\
+    {smsShrdPrm.pSetPrm[0]->dest = def;}
+
+
+
+
+
+GLOBAL void psaSMS_InitParams ( void )
+{
+  INIT_SET_PARM( sca.ton,     SMS_TON_UNKNOWN                     );
+  INIT_SET_PARM( sca.npi,     SMS_NPI_UNKNOWN                     );
+  INIT_SET_PARM( sca.c_num,   0                                   );
+  INIT_SET_PARM( vpRel,       TP_VP_RELATIVE_DEFAULT              );
+  INIT_SET_PARM( pid,         SMS_PID_DEFAULT                     );
+  INIT_SET_PARM( dcs,         SMS_DCS_GRP_DEF                     );
+  INIT_SET_PARM( msgType,     (TP_MTI_SMS_SUBMIT + TP_VPF_RELATIVE));
+
+  smsShrdPrm.cbmPrm.cbmFoundIds          = 0;
+  memset(smsShrdPrm.cbmPrm.msgId, DEF_MID_RANGE, sizeof(smsShrdPrm.cbmPrm.msgId));
+}
+GLOBAL void psaSMS_Init ( void )
+{
+  int LpCnt;            /* holds loop counter for macro */
+  T_SMS_SET_PRM * elem;
+
+/*
+ *-------------------------------------------------------------------
+ * set default parms
+ *-------------------------------------------------------------------
+ */
+  smsShrdPrm.smsStat      =  SMS_STATE_NOT_AVAILABLE;
+  smsShrdPrm.accessEnabled = FALSE;
+  smsShrdPrm.aci_sms_parameter.simTotal = 0;
+  smsShrdPrm.aci_sms_parameter.simUsed  = 0;
+  smsShrdPrm.aci_sms_parameter.meTotal  = 0;
+  smsShrdPrm.aci_sms_parameter.meUsed   = 0;
+  smsShrdPrm.owner        = OWN_NONE;
+  smsShrdPrm.cbmPrm.cbchOwner    = OWN_NONE;
+  smsShrdPrm.rslt         = 0x200/*CS_OK*/;
+
+  smsShrdPrm.aci_sms_parameter.snd_msg_ref  = 0;
+
+  smsShrdPrm.aci_sms_parameter.smsParamRecLen = 0;
+  smsShrdPrm.aci_sms_parameter.smsParamMaxRec = 0;
+  smsShrdPrm.mtHndl               = MT0;
+  smsShrdPrm.srHndl               = DS0;
+  smsShrdPrm.cbmPrm.cbmHndl              = BM0;
+  smsShrdPrm.cbmPrm.cbmMode              = CBCH_ACCEPT;
+  smsShrdPrm.cbmPrm.cbmFoundIds          = 0;
+  smsShrdPrm.cbmPrm.cbmSIMmaxId          = 0;
+  smsShrdPrm.cbmPrm.cbmSIMmaxIdRge       = 0;
+
+  smsShrdPrm.tpdu.tp_submit              = NULL;
+  smsShrdPrm.tpdu.tp_deliver             = NULL;
+  smsShrdPrm.tpdu.tp_command             = NULL;
+
+#ifdef FF_HOMEZONE
+  smsShrdPrm.cbmPrm.hzMode    = CBHZ_MOD_NotActive;
+  smsShrdPrm.cbmPrm.hzDcs     = CS_GsmDef;
+  smsShrdPrm.cbmPrm.hzTimeout = CBHZ_DEF_TIMEOUT;
+#endif /* FF_HOMEZONE */
+
+  smsShrdPrm.mem1                        = MEM_SM;
+  smsShrdPrm.mem2                        = MEM_SM;
+  smsShrdPrm.mem3                        = MEM_SM;
+  smsShrdPrm.status                      = CMGD_DEL_INDEX;
+  smsShrdPrm.cnma_ack_expected           = FALSE;
+  smsShrdPrm.uiInternalSmsStorage        = CMD_SRC_NONE;
+  smsShrdPrm.smsSrcId                    = CMD_SRC_NONE;
+
+  smsShrdPrm.CSMSservice                 = CSMS_SERV_GsmPh2;
+  smsShrdPrm.CSMSmt                      = CSMS_SUPP_Enable;
+  smsShrdPrm.CSMSmo                      = CSMS_SUPP_Enable;
+  smsShrdPrm.CSMSbm                      = CSMS_SUPP_Enable;
+
+  smsShrdPrm.CNMImt                      = CNMI_MT_NoSmsDeliverInd;
+  smsShrdPrm.CNMIbm                      = CNMI_BM_NoCbmInd;
+  smsShrdPrm.CNMIds                      = CNMI_DS_NoSmsStatRpt;
+
+
+  smsShrdPrm.prmRdSeq                    = SMS_READ_SIM_CMPL;
+  smsShrdPrm.pDecMsg                     = NULL;
+  
+  smsShrdPrm.rplyCB.cmss                 = NULL;
+  smsShrdPrm.errorCB                     = NULL;
+
+  smsShrdPrm.CMMSmode                    = CMMS_MODE_DEF;
+
+#ifdef FF_MMI_RIV
+  smsShrdPrm.perccmgf_smbs_mode = PERC_SMBS_MOD_DISABLE;
+#endif /* #ifdef FF_MMI_RIV */
+
+  if (set_prm_list EQ NULL)
+  {
+    set_prm_list = new_list();
+    ACI_MALLOC(elem, sizeof(T_SMS_SET_PRM));
+    memset(elem, 0, sizeof(T_SMS_SET_PRM));
+    insert_list(set_prm_list, elem);
+    
+    /* all set prm pointer should point to this element */
+    for( LpCnt = 0; LpCnt < OWN_MAX; LpCnt++ )
+    {
+      smsShrdPrm.pSetPrm[LpCnt] = elem;
+    }
+  }
+
+#ifndef SMS_PDU_SUPPORT
+  INIT_SET_PARM( CMGFmode,     CMGF_MOD_Txt                       );
+#else
+  INIT_SET_PARM( CMGFmode,     CMGF_MOD_Pdu                       );
+#endif
+
+  INIT_SET_PARM( prflId,      1                                   );
+  INIT_SET_PARM( isCopy,      FALSE                               );
+  INIT_SET_PARM( numOfRefs,   OWN_MAX                             );
+  INIT_SET_PARM( sca.ton,     SMS_TON_UNKNOWN                     );
+  INIT_SET_PARM( sca.npi,     SMS_NPI_UNKNOWN                     );
+  INIT_SET_PARM( sca.c_num,   0                                   );
+  INIT_SET_PARM( vpRel,       TP_VP_RELATIVE_DEFAULT              );
+  INIT_SET_PARM( pid,         SMS_PID_DEFAULT                     );
+  INIT_SET_PARM( dcs,         SMS_DCS_GRP_DEF                     );
+  INIT_SET_PARM( msgType,     (TP_MTI_SMS_SUBMIT + TP_VPF_RELATIVE));
+
+  memset(smsShrdPrm.cbmPrm.msgId, DEF_MID_RANGE, sizeof(smsShrdPrm.cbmPrm.msgId));
+  memset(smsShrdPrm.cbmPrm.dcsId, DEF_DCS_RANGE, sizeof(smsShrdPrm.cbmPrm.dcsId));
+
+  smsShrdPrm.pSetPrm[0]->vpAbs.year  [0] = 7;
+  smsShrdPrm.pSetPrm[0]->vpAbs.year  [1] = 0;
+  smsShrdPrm.pSetPrm[0]->vpAbs.month [0] = 0;
+  smsShrdPrm.pSetPrm[0]->vpAbs.month [1] = 1;
+  smsShrdPrm.pSetPrm[0]->vpAbs.day   [0] = 0;
+  smsShrdPrm.pSetPrm[0]->vpAbs.day   [1] = 1;
+  smsShrdPrm.pSetPrm[0]->vpAbs.hour  [0] = 0;
+  smsShrdPrm.pSetPrm[0]->vpAbs.hour  [1] = 0;
+  smsShrdPrm.pSetPrm[0]->vpAbs.minute[0] = 0;
+  smsShrdPrm.pSetPrm[0]->vpAbs.minute[1] = 0;
+  smsShrdPrm.pSetPrm[0]->vpAbs.second[0] = 0;
+  smsShrdPrm.pSetPrm[0]->vpAbs.second[1] = 0;
+  smsShrdPrm.pSetPrm[0]->vpAbs.tz_lsb    = 0;
+  smsShrdPrm.pSetPrm[0]->vpAbs.tz_sign   = 0;
+  smsShrdPrm.pSetPrm[0]->vpAbs.tz_msb    = 0;
+
+  memset(&smsShrdPrm.pSetPrm[0]->vpEnh, 0, sizeof(smsShrdPrm.pSetPrm[0]->vpEnh));
+  smsShrdPrm.pSetPrm[0]->vpEnh.tvpf        = SMS_TVPF_RELATIVE;
+  smsShrdPrm.pSetPrm[0]->vpEnh.v_tp_vp_rel = 1;
+  smsShrdPrm.pSetPrm[0]->vpEnh.tp_vp_rel   = TP_VP_RELATIVE_DEFAULT;
+
+#ifdef SIM_TOOLKIT
+  simShrdPrm.fuRef = -1;
+  if (!psaSAT_FURegister (cmhSMS_FileUpdate))
+  {
+    TRACE_EVENT ("FAILED to register the handler cmhSMS_FileUpdate() for FU");
+  }
+#endif
+
+#if (defined (MFW) AND !defined (FF_MMI_RIV)) OR defined (_CONC_TESTING_)
+  concSMS_Init();
+#endif
+}
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)         MODULE  : PSA_SMSF                |
+|                                 ROUTINE : psaSMS_shrPrmDump       |
++-------------------------------------------------------------------+
+
+  PURPOSE : this function dumps the shared parameter to the debug
+            output.
+*/
+
+GLOBAL void psaSMS_shrPrmDump ( void )
+{
+#ifdef TRACING
+
+  char  lnBuf [80];             /* holds buffer for output line */ 
+  SHORT chrNr;                  /* holds number of processed chars */
+
+  /* --- SIM total -----------------------------------------------*/
+  chrNr  = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, " SIM total" );
+  chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT, 
+                                         smsShrdPrm.aci_sms_parameter.simTotal );
+  TRACE_EVENT( lnBuf );
+
+  /* --- SIM used ------------------------------------------------*/
+  chrNr  = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, "  SIM used" );
+  chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT, 
+                                         smsShrdPrm.aci_sms_parameter.simUsed );
+  TRACE_EVENT( lnBuf );
+
+  /* --- ME total ------------------------------------------------*/
+  chrNr  = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, "  ME total" );
+  chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT, 
+                                         smsShrdPrm.aci_sms_parameter.meTotal );
+  TRACE_EVENT( lnBuf );
+
+  /* --- ME used -------------------------------------------------*/
+  chrNr  = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, "   ME used" );
+  chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT, 
+                                         smsShrdPrm.aci_sms_parameter.meUsed );
+  TRACE_EVENT( lnBuf );
+
+  /* --- SMS status ----------------------------------------------*/
+  chrNr  = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, "SMS status" );
+  chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT, 
+                                         smsShrdPrm.smsStat );
+  TRACE_EVENT( lnBuf );
+
+#endif  /* of #ifdef TRACING */
+}
+
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)         MODULE  : PSA_SMSF                |
+|                                 ROUTINE : psaSMS_printSetPrm      |
++-------------------------------------------------------------------+
+
+  PURPOSE : 
+*/
+
+GLOBAL void psaSMS_printSetPrm ( T_SMS_SET_PRM * pSMSSetPrm )
+{
+#ifdef TRACING
+
+  UBYTE        prflId;
+  UBYTE        isCopy;
+  UBYTE        numOfRefs;
+
+  SHORT        fo;
+  SHORT        vprel;
+  T_ACI_VP_ABS vpabs;
+  T_ACI_VP_ENH vpenh;
+  SHORT        pid;
+  SHORT        dcs;
+  char         vpenh_str[15];
+
+  char          vpabs_str[25] = {'\0'};
+
+  CHAR *buf;
+
+  /*
+   *-----------------------------------------------------------------
+   * fill in parameters
+   *-----------------------------------------------------------------
+   */  
+
+  isCopy = pSMSSetPrm -> isCopy; 
+  prflId = pSMSSetPrm -> prflId;
+  numOfRefs = pSMSSetPrm -> numOfRefs;
+
+  fo    = pSMSSetPrm -> msgType;
+  vprel = pSMSSetPrm -> vpRel;
+  
+  cmhSMS_setVpabsCmh ( &vpabs, &pSMSSetPrm -> vpAbs );
+  cmhSMS_setVpenhCmh ( &vpenh, &pSMSSetPrm -> vpEnh );
+  
+  pid   = pSMSSetPrm -> pid;
+  dcs   = pSMSSetPrm -> dcs;
+
+
+  MALLOC(buf,MAX_CMD_LEN);
+  if ((fo & TP_VPF_MASK) EQ TP_VPF_ABSOLUTE)   /*Bits 4,3 -> 11*/
+  {
+    sprintf(vpabs_str,"\"%d%d/%d%d/%d%d,%d%d:%d%d:%d%d%+03d\"",
+            vpabs.year  [0], vpabs.year  [1],
+            vpabs.month [0], vpabs.month [1],
+            vpabs.day   [0], vpabs.day   [1],
+            vpabs.hour  [0], vpabs.hour  [1],
+            vpabs.minute[0], vpabs.minute[1],
+            vpabs.second[0], vpabs.second[1],
+            vpabs.timezone);
+    sprintf(buf,"isCopy:%d,prflId:%d,numOfRefs:%d,fo:%d,vpabs:%s,pid:%d,dcs:%d",
+            isCopy,prflId,numOfRefs,fo,vpabs_str,pid,dcs);
+  }
+  else if ((fo & TP_VPF_MASK) EQ TP_VPF_ENHANCED)
+  {
+
+    aci_encodeVpenh ( vpenh_str, &vpenh );
+
+    sprintf(buf,"isCopy:%d,prflId:%d,numOfRefs:%d,fo:%d,vpenh:\"%s\",pid:%d,dcs:%d",
+            isCopy,prflId,numOfRefs,fo,vpenh_str,pid,dcs);
+  }
+  else if ((fo & TP_VPF_MASK) EQ TP_VPF_RELATIVE) /*Bits 4,3 -> 10*/
+  {
+    sprintf(buf,"isCopy:%d,prflId:%d,numOfRefs:%d,fo:%d,vprel:%d,pid:%d,dcs:%d",
+            isCopy,prflId,numOfRefs,fo,vprel,pid,dcs);
+  }
+  else
+  {
+    sprintf(buf,"isCopy:%d,prflId:%d,numOfRefs:%d,fo:%d,,pid:%d,dcs:%d",
+            isCopy,prflId,numOfRefs,fo,pid,dcs);
+  }
+    
+  TRACE_EVENT( buf );
+  MFREE( buf );
+
+#endif  /* of #ifdef TRACING */
+}
+
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)         MODULE  : PSA_SMSF                |
+|                                 ROUTINE : psaSMS_printSetPrmList  |
++-------------------------------------------------------------------+
+
+  PURPOSE : 
+*/
+
+GLOBAL void psaSMS_printSetPrmList ( T_ACI_CMD_SRC srcId )
+{
+#ifdef TRACING
+
+  T_ACI_LIST    *current;
+  UBYTE index=0;
+  char tmp[25];
+
+  current = set_prm_list;
+
+  while (current)
+  {
+    sprintf(tmp, "SET PRM List Element %d:", index++);
+    TRACE_EVENT(tmp);
+    psaSMS_printSetPrm(current->msg);
+    current = current->next;
+  }
+
+  TRACE_EVENT("CURRENT SET PRM:");
+  psaSMS_printSetPrm(smsShrdPrm.pSetPrm[srcId]);
+
+#endif  /* of #ifdef TRACING */
+}
+
+/*==== EOF ========================================================*/
+