diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/g23m/condat/ms/src/aci/psa_smsp.c	Mon Jun 01 03:24:05 2015 +0000
@@ -0,0 +1,505 @@
+/* 
++----------------------------------------------------------------------------- 
+|  Project :  GSM-PS (6147)
+|  Modul   :  PSA_SMSP
++----------------------------------------------------------------------------- 
+|  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 processing functions for the
+|             primitives send to the protocol stack adapter by 
+|             short message service. 
++----------------------------------------------------------------------------- 
+*/ 
+
+#ifndef PSA_SMSP_C
+#define PSA_SMSP_C
+#endif
+
+#include "aci_all.h"
+
+/*==== 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 "psa.h"
+#include "psa_sms.h"
+#include "cmh.h"
+#include "cmh_sms.h"
+#include "aoc.h"
+#ifdef SIM_PERS
+#include "cl_imei.h"
+#include "aci_ext_pers.h"
+#include "aci_slock.h"
+#endif
+
+#ifdef GPRS
+#include "dti.h"
+#include "dti_conn_mng.h"
+#include "dti_cntrl_mng.h"
+#include "gaci.h"
+#include "gaci_cmh.h"
+#include "psa_sm.h"
+
+#include "cmh_sm.h"
+#endif  /* GPRS */
+/*==== CONSTANTS ==================================================*/
+
+
+/*==== TYPES ======================================================*/
+
+
+/*==== EXPORT =====================================================*/
+
+
+/*==== VARIABLES ==================================================*/
+#ifndef PIN_LEN
+#define PIN_LEN (8)
+#endif
+#ifdef SIM_PERS_OTA
+#define CTRL_KEY_LEN PIN_LEN+1
+#define SMS_DATA_IDX 41
+#define IMEI_MISMATCH "0xFFFFFFFF"
+#endif
+
+/*==== FUNCTIONS ==================================================*/
+
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)         MODULE  : PSA_SMSP                |
+|                                 ROUTINE : psa_mnsms_message_ind   |
++-------------------------------------------------------------------+
+
+  PURPOSE : processes the MNSMS_MESSAGE_IND primitive send by SMS.
+            this indicates an incoming SMS.
+
+*/
+
+GLOBAL const void psa_mnsms_message_ind 
+                               ( T_MNSMS_MESSAGE_IND *mnsms_message_ind )
+{
+  /* (was psa_mnsms_alert_ind) */
+  TRACE_FUNCTION ("psa_mnsms_message_ind()");
+
+
+  if (smsShrdPrm.smsStat EQ SMS_STATE_INITIALISING)
+  {
+    TRACE_FUNCTION ("SMS_STATE_INITIALISING");
+    cmhSMS_SMSInitState(mnsms_message_ind);
+  }
+  else
+  {
+    if (mnsms_message_ind->rec_num EQ SMS_RECORD_NOT_EXIST)
+    {
+#ifdef FF_CPHS      
+      if ( !cmhSMS_voice_mail_ind( &(mnsms_message_ind->sms_sdu)) )
+#endif /* FF_CPHS */      
+      cmhSMS_SMSDeliver (mnsms_message_ind);
+    }
+    else
+    {
+      /*
+       *  Incoming SMS may modify the Advice of Charge Parameters
+       *  
+       *  Read them again
+       */
+      aoc_sms ();
+
+#ifdef FF_CPHS      
+      cmhSMS_voice_mail_ind( &(mnsms_message_ind->sms_sdu));
+#endif /* FF_CPHS */    
+      cmhSMS_SMSMemory (mnsms_message_ind);
+    }
+  }
+
+  /*
+   *-------------------------------------------------------------------
+   * free the primitive buffer
+   *-------------------------------------------------------------------
+   */  
+  PFREE (mnsms_message_ind);
+}
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)         MODULE  : PSA_SMSP                |
+|                                 ROUTINE : psa_mnsms_report_ind    |
++-------------------------------------------------------------------+
+
+  PURPOSE : processes the MNSMS_REPORT_IND primitive send by SMS.
+            this indicates the state of the SMS Entity.
+
+*/
+
+GLOBAL const void psa_mnsms_report_ind 
+                             ( T_MNSMS_REPORT_IND *mnsms_report_ind )
+{
+
+  TRACE_FUNCTION ("psa_mnsms_report_ind()");
+
+  cmhSMS_Result(mnsms_report_ind);
+
+  /*
+   *-------------------------------------------------------------------
+   * free the primitive buffer
+   *-------------------------------------------------------------------
+   */  
+  PFREE (mnsms_report_ind);
+
+}
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)         MODULE  : PSA_SMSP                |
+|                                 ROUTINE : psa_mnsms_status_ind    |
++-------------------------------------------------------------------+
+
+  PURPOSE : processes the MNSMS_STATUS_IND primitive send by SMS.
+            this indicates an incoming SMS status message.
+
+*/
+
+GLOBAL const void psa_mnsms_status_ind ( T_MNSMS_STATUS_IND *mnsms_status_ind )
+{
+  TRACE_FUNCTION ("psa_mnsms_status_ind()");
+
+  cmhSMS_SMSStatRpt (mnsms_status_ind);
+  
+  /*
+   *-------------------------------------------------------------------
+   * free the primitive buffer
+   *-------------------------------------------------------------------
+   */  
+  PFREE (mnsms_status_ind);
+}
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)         MODULE  : PSA_SMSP                |
+|                                 ROUTINE : psa_mnsms_delete_cnf    |
++-------------------------------------------------------------------+
+
+  PURPOSE : processes the MNSMS_DELETE_CNF primitive send by SMS.
+
+*/
+
+GLOBAL const void psa_mnsms_delete_cnf ( T_MNSMS_DELETE_CNF *mnsms_delete_cnf )
+{
+  TRACE_FUNCTION ("psa_mnsms_delete_cnf()");
+
+  cmhSMS_SMSDelCnf (mnsms_delete_cnf);
+  
+  /*
+   *-------------------------------------------------------------------
+   * free the primitive buffer
+   *-------------------------------------------------------------------
+   */  
+  PFREE (mnsms_delete_cnf);
+}
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)         MODULE  : PSA_SMSP                |
+|                                 ROUTINE : psa_mnsms_read_cnf    |
++-------------------------------------------------------------------+
+
+  PURPOSE : processes the MNSMS_READ_CNF primitive send by SMS.
+
+*/
+
+GLOBAL const void psa_mnsms_read_cnf ( T_MNSMS_READ_CNF *mnsms_read_cnf )
+{
+  TRACE_FUNCTION ("psa_mnsms_read_cnf()");
+
+  cmhSMS_SMRead (mnsms_read_cnf);
+  
+  /*
+   *-------------------------------------------------------------------
+   * free the primitive buffer
+   *-------------------------------------------------------------------
+   */  
+  PFREE (mnsms_read_cnf);
+}
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)         MODULE  : PSA_SMSP                |
+|                                 ROUTINE : psa_mnsms_store_cnf    |
++-------------------------------------------------------------------+
+
+  PURPOSE : processes the MNSMS_STORE_CNF primitive send by SMS.
+
+*/
+
+GLOBAL const void psa_mnsms_store_cnf ( T_MNSMS_STORE_CNF *mnsms_store_cnf )
+{
+  TRACE_FUNCTION ("psa_mnsms_store_cnf()");
+
+  cmhSMS_SMSStoCnf(mnsms_store_cnf);
+  
+  /*
+   *-------------------------------------------------------------------
+   * free the primitive buffer
+   *-------------------------------------------------------------------
+   */  
+  PFREE (mnsms_store_cnf);
+}
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)         MODULE  : PSA_SMSP                |
+|                                 ROUTINE : psa_mnsms_submit_cnf    |
++-------------------------------------------------------------------+
+
+  PURPOSE : processes the MNSMS_SUBMIT_CNF primitive send by SMS.
+
+*/
+
+GLOBAL const void psa_mnsms_submit_cnf ( T_MNSMS_SUBMIT_CNF *mnsms_submit_cnf )
+{
+  TRACE_FUNCTION ("psa_mnsms_submit_cnf()");
+
+  cmhSMS_SMSSbmCnf(mnsms_submit_cnf);
+
+  /*
+   *-------------------------------------------------------------------
+   * free the primitive buffer
+   *-------------------------------------------------------------------
+   */  
+  PFREE (mnsms_submit_cnf);
+}
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)         MODULE  : PSA_SMSP                |
+|                                 ROUTINE : psa_mnsms_command_cnf   |
++-------------------------------------------------------------------+
+
+  PURPOSE : processes the MNSMS_COMMAND_CNF primitive send by SMS.
+
+*/
+
+GLOBAL const void psa_mnsms_command_cnf ( T_MNSMS_COMMAND_CNF *mnsms_command_cnf )
+{
+  TRACE_FUNCTION ("psa_mnsms_command_cnf()");
+
+  cmhSMS_SMSCmdCnf(mnsms_command_cnf);
+  
+  /*
+   *-------------------------------------------------------------------
+   * free the primitive buffer
+   *-------------------------------------------------------------------
+   */  
+  PFREE (mnsms_command_cnf);
+}
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)         MODULE  : PSA_SMSP                |
+|                                 ROUTINE : psa_mnsms_error_ind     |
++-------------------------------------------------------------------+
+
+  PURPOSE : processes the MNSMS_ERROR_IND primitive send by SMS.
+
+*/
+
+GLOBAL const void psa_mnsms_error_ind ( T_MNSMS_ERROR_IND *mnsms_error_ind )
+{
+  TRACE_FUNCTION ("psa_mnsms_error_ind()");
+
+  cmhSMS_SMSErrorInd(mnsms_error_ind);
+  
+  /*
+   *-------------------------------------------------------------------
+   * free the primitive buffer
+   *-------------------------------------------------------------------
+   */  
+  PFREE (mnsms_error_ind);
+}
+
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)         MODULE  : PSA_SMSP                |
+|                                 ROUTINE : psa_mnsms_resume_cnf    |
++-------------------------------------------------------------------+
+
+  PURPOSE : processes the MNSMS_RESUME_CNF primitive send by SMS.
+            This confirms that the receiving of has been SMS is 
+            activated.
+
+*/
+
+GLOBAL const void psa_mnsms_resume_cnf ( T_MNSMS_RESUME_CNF *mnsms_resume_cnf )
+{
+  TRACE_FUNCTION ("psa_mnsms_resume_cnf()");
+
+  /* inform command handler */ 
+  cmhSMS_SMSResumeCnf(mnsms_resume_cnf);
+  
+  /*
+   *-------------------------------------------------------------------
+   * free the primitive buffer
+   *-------------------------------------------------------------------
+   */  
+  PFREE(mnsms_resume_cnf);  
+}
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)         MODULE  : PSA_SMSP                |
+|                                 ROUTINE : psa_mnsms_query_cnf      |
++-------------------------------------------------------------------+
+
+  PURPOSE : processes the MNSMS_TEST_CNF primitive send by SMS.
+            This confirms that the receiving of has been SMS is 
+            activated.
+
+*/
+
+GLOBAL const void psa_mnsms_query_cnf ( T_MNSMS_QUERY_CNF *mnsms_query_cnf)
+{
+  TRACE_FUNCTION ("psa_mnsms_query_cnf()");
+
+  /* inform command handler */ 
+  cmhSMS_SMSQueryCnf( mnsms_query_cnf );
+  
+  /*
+   *-------------------------------------------------------------------
+   * free the primitive buffer
+   *-------------------------------------------------------------------
+   */  
+  PFREE(mnsms_query_cnf);  
+}
+
+
+#if defined (GPRS) AND defined (DTI)
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)         MODULE  : PSA_SMSP                |
+|                                 ROUTINE : psa_mnsms_info_cnf      |
++-------------------------------------------------------------------+
+
+  PURPOSE : processes the MNSMS_MO_SERV_CNF primitive send by SMS.
+            this confirms the requested SMS message service.
+
+*/
+
+GLOBAL const void psa_mnsms_mo_serv_cnf 
+                            ( T_MNSMS_MO_SERV_CNF *mnsms_mo_serv_cnf )
+{
+
+  TRACE_FUNCTION ("psa_mnsms_mo_serv_cnf()");
+
+  /*
+   *-------------------------------------------------------------------
+   * update sms parameters and notify ACI
+   *-------------------------------------------------------------------
+   */ 
+
+  cmhSM_sms_service_changed( mnsms_mo_serv_cnf->mo_sms_serv );
+
+/*
+ *-------------------------------------------------------------------
+ * free the primitive buffer
+ *-------------------------------------------------------------------
+ */  
+  PFREE (mnsms_mo_serv_cnf);
+
+}
+#endif  /* GPRS */
+
+
+#ifdef SIM_PERS_OTA
+
+/*
++------------------------------------------------------------------------------
+|  Function    : psa_mnsms_OTA_decode_ind
++------------------------------------------------------------------------------
+|  Description : processes the MNSMS_OTA_DECODE_IND primitive
+|
+|  Parameters  : mnsms_ota_decode_ind            - primitive
+|                
+|  Return      : void
+|
++------------------------------------------------------------------------------
+*/
+
+GLOBAL const void psa_mnsms_OTA_decode_ind ( T_MNSMS_OTA_DECODE_IND *mnsms_ota_decode_ind )
+{
+  UBYTE lcktype;
+  UBYTE ctrl_key[CTRL_KEY_LEN];
+  UBYTE *imei;
+  UBYTE imeiBufPtr[CL_IMEI_ISDID_SIZE];
+  UBYTE ret_status = 0;
+  UINT i = 0,ctr;
+
+  TRACE_FUNCTION ("psa_mnsms_OTA_decode_ind()"); 
+  
+  imei = &mnsms_ota_decode_ind->tp_ud.data[73];
+
+  /*As the IMEI is 15 digits long (see TS 23.003 [3]), 
+  the sixteenth digit present here is ignored by the ME 
+  during the de-personalization procedure and should be set to zero.*/
+
+  *(imei+15) = 0;
+  cl_get_imeisv(CL_IMEI_ISDID_SIZE,  imeiBufPtr, CL_IMEI_GET_SECURE_IMEI);
+
+  while (*imei EQ imeiBufPtr[i] && i NEQ CL_IMEI_ISDID_SIZE )
+  {
+    imei++;
+    i++;
+  }
+  if (i NEQ CL_IMEI_ISDID_SIZE)
+    ret_status = 0xff;  //If IMEI mismatch occurs then status of all categories is set to IMEI Mismatch
+
+  /*Extract the values from the SMS user data*/
+
+  memset(ctrl_key,0,CTRL_KEY_LEN);
+  
+  for(lcktype=SIMLOCK_NETWORK,ctr=SMS_DATA_IDX; lcktype<=SIMLOCK_CORPORATE;lcktype++,ctr+=PIN_LEN)
+  {
+    strncpy ( (char *) ctrl_key, (char*) mnsms_ota_decode_ind->tp_ud.data[ctr], PIN_LEN);
+    ctrl_key[PIN_LEN] = '\0';
+    if (memcmp ((char *)ctrl_key,IMEI_MISMATCH,PIN_LEN))
+      ret_status |= aci_ext_personalisation_get_status(lcktype);
+    else    
+    {
+      if( aci_slock_unlock(lcktype, (char *) ctrl_key) EQ SIMLOCK_FAIL)
+        ret_status |= aci_ext_personalisation_get_status(lcktype);
+    }
+    if(lcktype NEQ SIMLOCK_CORPORATE)
+      ret_status  <<= 2;
+  }
+
+  imei = &mnsms_ota_decode_ind->tp_ud.data[ctr];
+  {
+    PALLOC (mnsms_OTA_decode_res, MNSMS_OTA_DECODE_RES);
+    mnsms_OTA_decode_res->ota_status = ret_status;
+    for (i=0;i<CL_IMEI_ISDID_SIZE;i++)
+    {
+      mnsms_OTA_decode_res->imei[i] = *imei;
+      imei++;
+    }
+    PSEND (hCommSMS, mnsms_OTA_decode_res);
+  }
+  PFREE (mnsms_ota_decode_ind);
+}
+#endif //SIM_PERS_OTA
+/*==== EOF =========================================================*/
\ No newline at end of file