diff gsm-fw/g23m-aci/aci/psa_mmf.c @ 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 d3538ac6e321
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsm-fw/g23m-aci/aci/psa_mmf.c	Sun Oct 12 01:45:14 2014 +0000
@@ -0,0 +1,229 @@
+/* 
++----------------------------------------------------------------------------- 
+|  Project :  GSM-PS (6147)
+|  Modul   :  PSA_MM
++----------------------------------------------------------------------------- 
+|  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_MMF_C
+#define PSA_MMF_C
+#endif
+
+#include "aci_all.h"
+
+#undef TRACING
+
+/*==== INCLUDES ===================================================*/
+#include "aci_cmh.h"
+#include "ati_cmd.h"
+#include "aci_cmd.h"
+#include "aci.h"
+#include "psa.h"
+#include "psa_mm.h"
+#include "psa_util.h"
+/*==== CONSTANTS ==================================================*/
+
+#define ITM_WDT         (14)    /* item width in chars */
+#define HDR_WDT         (10)    /* header width in chars */
+
+/*==== TYPES ======================================================*/
+
+
+/*==== EXPORT =====================================================*/
+
+
+/*==== VARIABLES ==================================================*/
+
+/*==== FUNCTIONS ==================================================*/
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)         MODULE  : PSA_MMF                 |
+|                                 ROUTINE : psaMM_ClrPLMNLst        |  
++-------------------------------------------------------------------+
+
+  PURPOSE : clears all entries for the PLMN list
+*/
+
+GLOBAL void psaMM_ClrPLMNLst ( void )
+{
+  int lstIdx;
+  
+  for( lstIdx = 0; lstIdx < MAX_PLMN_ID; lstIdx++ )
+  {
+    mmShrdPrm.PLMNLst[lstIdx].v_plmn = INVLD_PLMN;
+    mmShrdPrm.FRBLst[lstIdx]         = NOT_PRESENT_8BIT;
+  }
+}
+
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)         MODULE  : PSA_MMF                 |
+|                                 ROUTINE : psaMM_CpyPLMNLst        |
++-------------------------------------------------------------------+
+
+  PURPOSE : copies all used entries of a PLMN list into shared
+            parameter area.
+*/
+
+GLOBAL void psaMM_CpyPLMNLst ( T_plmn * pPLMNLst, UBYTE * pFRBLst, USHORT * pLACLst)
+{
+  int lstIdx;
+
+  psaMM_ClrPLMNLst ();
+
+  for( lstIdx = 0; lstIdx < MAX_PLMN_ID; lstIdx++ )
+  {
+    if( pPLMNLst -> v_plmn EQ INVLD_PLMN ) 
+      break;
+    mmShrdPrm.PLMNLst[lstIdx] = *pPLMNLst++;
+    mmShrdPrm.FRBLst[lstIdx] = *pFRBLst++;
+    mmShrdPrm.LACLst[lstIdx] = *pLACLst++;
+  }
+}
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)         MODULE  : PSA_MM                  |
+|                                 ROUTINE : psaMM_Init              |
++-------------------------------------------------------------------+
+
+  PURPOSE : initialize the protocol stack adapter for MM.
+
+*/
+
+GLOBAL void psaMM_Init ( void )
+{
+
+/*
+ *-------------------------------------------------------------------
+ * set default parms
+ *-------------------------------------------------------------------
+ */  
+  mmShrdPrm.regStat             = NO_VLD_RS;
+  mmShrdPrm.regMode             = DEF_REG_MODE;
+  mmShrdPrm.regModeBeforeAbort  = DEF_REG_MODE;
+  mmShrdPrm.regModeAutoBack     = FALSE;
+  mmShrdPrm.srchRslt            = 0xFF;
+  mmShrdPrm.deregCs             = 0xFF;
+  mmShrdPrm.usedPLMN.v_plmn     = INVLD_PLMN;
+  mmShrdPrm.PLMNLst[0].v_plmn   = INVLD_PLMN;
+  mmShrdPrm.owner               = (T_OWN)CMD_SRC_NONE;
+  mmShrdPrm.creg_status         = CREG_STAT_NoSearch;
+  mmShrdPrm.tz                  = INVLD_TZ;
+  mmShrdPrm.PNNLst.plmn.v_plmn  = INVLD_PLMN;
+  mmShrdPrm.PNNLst.pnn_rec_num  = 0;
+  mmShrdPrm.PNNLst.next         = NULL;
+  mmShrdPrm.COPSmode            = COPS_MOD_Auto;
+  mmShrdPrm.COPSmodeBeforeAbort = COPS_MOD_Auto;
+  mmShrdPrm.ActingHPLMN.v_plmn  = INVLD_PLMN;
+  mmShrdPrm.pnn_read_cnt        = 0;
+
+  /* temporary, because of the changes in psaSAT_BuildEnvCC(),
+     this is necessary to pass the ACISAT test cases */
+#ifdef _SIMULATION_
+  mmShrdPrm.lac               = 0x0100;
+  mmShrdPrm.cid               = 0x0100;
+  mmShrdPrm.usedPLMN.mcc[0]   = 0x02;
+  mmShrdPrm.usedPLMN.mcc[1]   = 0x06;
+  mmShrdPrm.usedPLMN.mcc[2]   = 0x02;
+  mmShrdPrm.usedPLMN.mnc[0]   = 0x00;
+  mmShrdPrm.usedPLMN.mnc[1]   = 0x01;
+  mmShrdPrm.usedPLMN.mnc[2]   = 0x0F;
+#endif
+
+  mmShrdPrm.slctPLMN.v_plmn = INVLD_PLMN;
+  
+  psaMM_ClrPLMNLst();
+}
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)         MODULE  : PSA_MMF                 |
+|                                 ROUTINE : psaMM_shrPrmDump        |
++-------------------------------------------------------------------+
+
+  PURPOSE : this function dumps the shared parameter to the debug
+            output.
+*/
+
+#ifdef TRACING
+GLOBAL void psaMM_shrPrmDump ( void )
+{
+  char  lnBuf [80];             /* holds buffer for output line */ 
+  char  mccBuf[SIZE_MCC + 1];   /* MCC converted to printable C-string */
+  char  mncBuf[SIZE_MNC + 1];   /* MNC converted to printable C-string */
+  SHORT chrNr;                  /* holds number of processed chars */
+  SHORT cnt;                    /* holds a counter */
+
+  /* --- PLMN list ------------------------------------------------*/
+  for( cnt = 0; cnt<MAX_PLMN_ID AND 
+                mmShrdPrm.PLMNLst[cnt].v_plmn NEQ INVLD_PLMN; cnt++ )
+  {
+    chrNr  = sprintf( lnBuf, "%*.*s[%2d]", HDR_WDT, HDR_WDT, " PLMN list",cnt );
+    utl_BCD2String (mccBuf, mmShrdPrm.PLMNLst[cnt].mcc, SIZE_MCC);
+    utl_BCD2String (mncBuf, mmShrdPrm.PLMNLst[cnt].mnc, SIZE_MNC);
+    chrNr += sprintf( lnBuf+chrNr, "%*s %*s", 
+                      ITM_WDT/2, ITM_WDT/2, mccBuf, mncBuf);
+    TRACE_EVENT( lnBuf );
+  }
+
+  /* --- used PLMN ------------------------------------------------*/
+  chrNr  = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, " used PLMN" );
+  if( mmShrdPrm.usedPLMN.v_plmn EQ VLD_PLMN )
+  {
+    utl_BCD2String (mccBuf, mmShrdPrm.usedPLMN.mcc, SIZE_MCC);
+    utl_BCD2String (mncBuf, mmShrdPrm.usedPLMN.mnc, SIZE_MNC);
+    chrNr += sprintf( lnBuf+chrNr, "%*s %*s", 
+                      ITM_WDT/2, ITM_WDT/2, mccBuf, mncBuf);
+  }
+  else
+  {
+    chrNr += sprintf( lnBuf+chrNr, "%*s", ITM_WDT, "none" );
+  }
+  TRACE_EVENT( lnBuf );
+
+  /* --- registration mode ----------------------------------------*/
+  chrNr  = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, "rgstr mode" );
+  chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT, 
+                                         mmShrdPrm.setPrm[0].regMode );
+  TRACE_EVENT( lnBuf );
+
+  /* --- registration status --------------------------------------*/
+  chrNr  = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, "rgstr stat" );
+  chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT,
+                                         mmShrdPrm.regStat );
+  TRACE_EVENT( lnBuf );
+
+  /* --- search result --------------------------------------------*/
+  chrNr  = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, " srch rslt" );
+  chrNr += sprintf( lnBuf+chrNr, "%*hd", ITM_WDT,
+                                         mmShrdPrm.srchRslt );
+  TRACE_EVENT( lnBuf );
+
+  /* --- de-registration cause ------------------------------------*/
+  chrNr  = sprintf( lnBuf, "%*.*s", HDR_WDT, HDR_WDT, "dereg caus" );
+  chrNr += sprintf( lnBuf+chrNr, "%*X", ITM_WDT,
+                                        mmShrdPrm.deregCs );
+  TRACE_EVENT( lnBuf );
+}
+#endif  /* of #ifdef TRACING */
+
+/*==== EOF ========================================================*/
+