view src/g23m-aci/aci/cmh_gmmr.c @ 657:b36733f14177

aci3 for MMI != 0: same R2D check as in aci2
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 08 May 2020 00:58:42 +0000
parents 53929b40109c
children
line wrap: on
line source

/* 
+----------------------------------------------------------------------------- 
|  Project :  
|  Modul   :  
+----------------------------------------------------------------------------- 
|  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 which are responsible
|             for the responses of the protocol stack adapter for 
|             GPRS mobility management ( GMM ).
+----------------------------------------------------------------------------- 
*/ 

#if defined (GPRS) && defined (DTI) 

#ifndef CMH_GMMR_C
#define CMH_GMMR_C
#endif

#include "aci_all.h"
/*==== INCLUDES ===================================================*/
#include "dti.h"      /* functionality of the dti library */
#include "aci_cmh.h"
#include "ati_cmd.h"
#include "aci_cmd.h"

#include "dti_conn_mng.h"

#include "aci.h"
#include "gaci.h"
#include "gaci_cmh.h"
#include "psa.h"
#include "psa_mm.h"
#include "psa_gmm.h"
#include "psa_sim.h"

#include "cmh.h"
#include "cmh_mm.h"
#include "cmh_gmm.h"
#include "cmh_sim.h"

#if defined (FF_WAP) OR defined (FF_SAT_E)
#include "wap_aci.h"
#include "psa_sm.h"
#endif /* WAP */

#if defined (SIM_TOOLKIT) AND defined (FF_SAT_E)
#include "psa_cc.h"
#include "psa_sat.h"
#include "cmh_sat.h"
#endif  /* SIM_TOOLKIT AND FF_SAT_E */

#ifdef FF_GPF_TCPIP
#include "dcm_utils.h"
#include "dcm_state.h"
#include "dcm_env.h"
#endif

#include "dcm_f.h"
#include "cmh_sm.h"
/*==== CONSTANTS ==================================================*/


/*==== TYPES ======================================================*/


/*==== EXPORT =====================================================*/

/*==== VARIABLES ==================================================*/


/*==== FUNCTIONS ==================================================*/

/*
+-------------------------------------------------------------------+
| PROJECT : GPRS (8441)      MODULE  : CMH_GMMR                     |
|                            ROUTINE : cmhGMM_Attached              |
+-------------------------------------------------------------------+

  PURPOSE : ME is attached

*/
GLOBAL void cmhGMM_Attached ( UBYTE attach_type, T_plmn *plmn, UBYTE search_running )
{
  T_CGEREP_EVENT_REP_PARAM  event;
  SHORT i;
  
  TRACE_FUNCTION ("cmhGMM_Attached()");

 /*
  *   set GPRS attach state
  */
  gmmShrdPrm.current_attach_type = attach_type;  
  
  switch ( attach_type )
  {
    case GMMREG_AT_GPRS:
    case GMMREG_AT_COMB:
      cmhGMM_Set_state(AS_ATTACHED);
      break;
    case GMMREG_AT_IMSI:
      cmhGMM_Set_state(AS_DETACHED);
      break;
  }

  if (search_running EQ GMMREG_SEARCH_NOT_RUNNING)
  {
    gmmShrdPrm.mobile_class = gmmShrdPrm.requested_mobile_class;
    gaciMobileClass.current = gaciMobileClass.requested;

    if(AT_CMD_CGCLASS EQ gmmEntStat.curCmd)
    {
    /*
     *  brz: 22.10.02
     *  special behaviour for NMO III
     *
     *  In the case of NMO III a COMB reject can not be succesful.
     *
     *  case BG requested: attach type GPRS is also OK
     *  case BC requested: attach type IMSI is also OK
     */
      if( GMMREG_CLASS_BG EQ gmmShrdPrm.mobile_class AND GMMREG_AT_GPRS EQ attach_type  OR
          GMMREG_CLASS_BC EQ gmmShrdPrm.mobile_class AND GMMREG_AT_IMSI EQ attach_type     )
      {
       /*
        *   GPRS event reporting>
        */
        event.mobile_class = (T_CGCLASS_CLASS)gmmShrdPrm.mobile_class;
        for( i = 0 ; i < CMD_SRC_MAX; i++ )
        {
          R_AT( RAT_CGEREP, (T_ACI_CMD_SRC)i ) ( CGEREP_EVENT_ME_CLASS, &event ); 
          R_AT( RAT_P_CGEV, (T_ACI_CMD_SRC)i ) ( CGEREP_EVENT_ME_CLASS, &event );
        }
        R_AT( RAT_OK, gmmEntStat.entOwn ) ( gmmEntStat.curCmd );

        /* log result */
        cmh_logRslt ( gmmEntStat.entOwn, RAT_OK, gmmEntStat.curCmd, 
                               -1, BS_SPEED_NotPresent,CME_ERR_NotPresent );

        gmmEntStat.curCmd = AT_CMD_NONE;
        return;
      }
    }
  }
    
  if ( attach_type EQ GMMREG_AT_IMSI AND 
       gmmShrdPrm.requested_mobile_class NEQ GMMREG_CLASS_CC)
  {
  /*
   *  brz: 03.05.02
   *  patch for wrong behaviour of GMM: sending attach_cnf->IMSI instead of attach_rej->GPRS
   */
    if (search_running EQ GMMREG_SEARCH_NOT_RUNNING)
    {
      cmhGMM_NoAttach(GMMREG_DT_GPRS ,GMMCS_NO_SERVICE , GMMREG_SEARCH_NOT_RUNNING);
    }

    return;
  }
  else  /* end of +CGATT or +CGCLASS */
  {
   /*
   *  Inform CMH SM about new attach state.
    */

    cmhSM_GprsAttached( GPRS_ATTACH );
    
    
    switch ( gmmEntStat.curCmd )
    {
      case AT_CMD_CGCLASS:
       /*
        *   GPRS event reporting
        */
        event.mobile_class = (T_CGCLASS_CLASS)gmmShrdPrm.requested_mobile_class;
        for( i = 0 ; i < CMD_SRC_MAX; i++ )
        {
          R_AT( RAT_CGEREP, (T_ACI_CMD_SRC)i ) ( CGEREP_EVENT_ME_CLASS, &event ); 
          R_AT( RAT_P_CGEV, (T_ACI_CMD_SRC)i ) ( CGEREP_EVENT_ME_CLASS, &event );
        }
        /*lint -fallthrough */
      case AT_CMD_CGATT:
        R_AT( RAT_OK, gmmEntStat.entOwn ) ( gmmEntStat.curCmd );

        /* log result */
        cmh_logRslt ( gmmEntStat.entOwn, RAT_OK, gmmEntStat.curCmd, -1,
                               BS_SPEED_NotPresent,CME_ERR_NotPresent );

#ifdef FF_GPF_TCPIP
        if(is_gpf_tcpip_call())
        {
          T_DCM_STATUS_IND_MSG msg;
          msg.hdr.msg_id = DCM_NEXT_CMD_READY_MSG;
          dcm_send_message(msg, DCM_SUB_WAIT_CGATT_CNF);
        }
#endif /* FF_GPF_TCPIP */
        break;
    }

    gmmEntStat.curCmd = AT_CMD_NONE;
  }
}


/*
+-------------------------------------------------------------------+
| PROJECT : GPRS (8441)      MODULE  : CMH_GMMR                     |
|                            ROUTINE : cmhGMM_NoAttach              |
+-------------------------------------------------------------------+

  PURPOSE : the attach fail

*/
GLOBAL void cmhGMM_NoAttach ( UBYTE detach_type, USHORT cause, UBYTE search_running )
{
  T_ACI_CME_ERR cme_err;          /* error number */
  
  TRACE_FUNCTION ("cmhGMM_NoAttach()");

 /*
  *   map error cause
  */
  switch(cause)
  {
    case GMMCS_ILLEGAL_MS:
    case MMCS_ILLEGAL_MS:
      cme_err = CME_ERR_GPRSBadMs;
      break;
    case GMMCS_ILLEGAL_ME:
    case MMCS_ILLEGAL_ME:
      cme_err = CME_ERR_GPRSBadMe;
      break;
    case GMMCS_GPRS_NOT_ALLOWED:
    /* No corrosponding MM cause */
      cme_err = CME_ERR_GPRSNoService;
      break;
    case GMMCS_PLMN_NOT_ALLOWED:
    case MMCS_PLMN_NOT_ALLOWED:
      cme_err = CME_ERR_GPRSBadPlmn;
      break;
    case GMMCS_LA_NOT_ALLOWED:
    case MMCS_LA_NOT_ALLOWED:
      cme_err = CME_ERR_GPRSBadLoc;
      break;
    case GMMCS_ROAMING_NOT_ALLOWED:
    case MMCS_ROAMING_NOT_ALLOWED:
      cme_err = CME_ERR_GPRSNoRoam;
      break;
    case GMMCS_IMPLICIT_DETACHED:
    /* No corrosponding MM cause */
      cme_err = CME_ERR_GPRSUnspec;
      break;
    case GMMCS_IMSI_UNKNOWN:
    case MMCS_IMSI_IN_HLR:
    case MMCS_IMEI_NOT_ACCEPTED:
    /* No corrosponding GMM cause */
    case GMMCS_NO_MS_ID:
    /* No corrosponding MM cause */
      cme_err = CME_ERR_SimFail;
      break;
    case GMMCS_GSM_GPRS_NOT_ALLOWED:
    /* No corrosponding MM cause */
    case GMMCS_NET_FAIL:
    case MMCS_NETWORK_FAILURE:
    case GMMCS_MSC_TEMP_NOT_REACHABLE:
    /* No corrosponding MM cause */
    case GMMCS_CONGESTION:
    case MMCS_CONGESTION:
      cme_err = CME_ERR_NoServ;
      break;
    /* case GMMCS_CELL_SELECTION_FAILED: */
    /* No corrosponding MM cause */
    /* case GMMCS_NO_SERVICE: */
    /* No corrosponding MM cause */
    /* case GMMCS_LIMITED_SERVICE: */
    /* No corrosponding MM cause */
/*  case GMMCS_SEMANTIC_INCORRECT:
    case MMCS_INCORRECT_MESSAGE:
    case GMMCS_INVALID_M_INFO:
    case MMCS_INVALID_MAND_MESSAGE:
    case GMMCS_TYPE_INVALID:
    case MMCS_MESSAGE_TYPE_NOT_IMPLEM:
    case GMMCS_TYPE_INCOMPATIBLE:
    case MMCS_MESSAGE_TYPE_INCOMPAT:
    case GMMCS_IE_INVALID:
    case MMCS_IE_NOT_IMPLEM:
    case GMMCS_COND_IE_ERROR:
    case MMCS_CONDITIONAL_IE:
    case GMMCS_MESSAGE_INVALID:
    case MMCS_MESSAGE_INCOMPAT:
    case GMMCS_INT_PROTOCOL_ERROR: */
    /* No corrosponding MM cause */
    default:
      cme_err = CME_ERR_Unknown;
  }
        
  if ( search_running EQ GMMREG_SEARCH_NOT_RUNNING ) 
  {
   /*
    *  Inform CMH SM about new attach state 
    */
    cmhSM_GprsAttached( GPRS_DETACH );

    switch ( gmmEntStat.curCmd )
    {
      case AT_CMD_CGCLASS:
      case AT_CMD_CGATT:
          R_AT( RAT_CME, gmmEntStat.entOwn ) ( gmmEntStat.curCmd, cme_err );

          /* log result */
          cmh_logRslt ( gmmEntStat.entOwn, RAT_CME, gmmEntStat.curCmd, -1, 
                                 BS_SPEED_NotPresent, cme_err );
          break;
    }

    gmmEntStat.curCmd = AT_CMD_NONE;
  }

 /*
  *   set GPRS attach state
  */
  switch ( detach_type )
  {
    case GMMREG_DT_LIMITED_SERVICE:
    case GMMREG_DT_SIM_REMOVED:
      cmhGMM_Set_state(AS_DETACHED);
      break;
    case GMMREG_DT_DISABLE_GPRS:
      cmhGMM_Set_state(AS_SUSPENTED);
      break;
    case GMMREG_DT_POWER_OFF:
      break;
    case GMMREG_DT_GPRS:
    case GMMREG_DT_COMB:
      cmhGMM_Set_state(AS_DETACHED);
      break;
    case GMMREG_DT_IMSI:
      break;
  }

  switch ( detach_type )
  {
    case GMMREG_DT_GPRS:
      gmmShrdPrm.current_attach_type = GMMREG_AT_IMSI;
      break;
    case GMMREG_DT_IMSI:
      gmmShrdPrm.current_attach_type = GMMREG_AT_GPRS;
      break;
    case GMMREG_DT_COMB:
    case GMMREG_DT_POWER_OFF:
    case GMMREG_DT_LIMITED_SERVICE:
    case GMMREG_DT_SIM_REMOVED:
      gmmShrdPrm.current_attach_type = ATTACH_TYPE_DETACHED;
      break;
  }
}

/*
+-------------------------------------------------------------------+
| PROJECT : GPRS (8441)      MODULE  : CMH_GMMR                     |
|                            ROUTINE : cmhGMM_Detached              |
+-------------------------------------------------------------------+

  PURPOSE : ME is detached

*/
GLOBAL void cmhGMM_Detached ( UBYTE detach_type )
{
  SHORT i;

  TRACE_FUNCTION ("cmhGMM_Detached()");

/*
 *-------------------------------------------------------------------
 * check for command context
 *-------------------------------------------------------------------
 */
  switch ( detach_type )
  {
    case GMMREG_DT_GPRS:
    case GMMREG_DT_COMB:
      for( i = 0 ; i < CMD_SRC_MAX; i++ )
      {
        R_AT( RAT_CGEREP, (T_ACI_CMD_SRC)i ) ( CGEREP_EVENT_ME_DETACH, NULL ); 
        R_AT( RAT_P_CGEV, (T_ACI_CMD_SRC)i ) ( CGEREP_EVENT_ME_DETACH, NULL );
      }
      
      cmhGMM_Set_state(AS_DETACHED);
      break;
    case GMMREG_DT_POWER_OFF:
      for( i = 0 ; i < CMD_SRC_MAX; i++ )
      {
        R_AT( RAT_CGEREP, (T_ACI_CMD_SRC)i ) ( CGEREP_EVENT_ME_DETACH, NULL ); 
        R_AT( RAT_P_CGEV, (T_ACI_CMD_SRC)i ) ( CGEREP_EVENT_ME_DETACH, NULL );
      }
      
      cmhGMM_Set_state(AS_MOBILE_OFF);
      break;
    case GMMREG_DT_LIMITED_SERVICE:
      cmhGMM_Set_state(AS_DETACHED);
      break;
    case GMMREG_DT_SIM_REMOVED:
      cmhGMM_Set_state(AS_DETACHED);
      break;
    case GMMREG_DT_IMSI:
      cmhGMM_Set_state(AS_ATTACHED);
      break;
    case GMMREG_DT_DISABLE_GPRS:
      cmhGMM_Set_state(AS_SUSPENTED);
      break;
    default:
      break;
  }

  switch ( detach_type )
  {
    case GMMREG_DT_IMSI:
      gmmShrdPrm.current_attach_type = GMMREG_AT_GPRS;
      break;
    case GMMREG_DT_GPRS:
      gmmShrdPrm.current_attach_type = GMMREG_AT_IMSI;
      break;
    case GMMREG_DT_COMB:
    case GMMREG_DT_LIMITED_SERVICE:
    case GMMREG_DT_SIM_REMOVED:
    case GMMREG_DT_POWER_OFF:
      gmmShrdPrm.current_attach_type = ATTACH_TYPE_DETACHED;
      break;
  }

 /*
  *  Inform CMH SM about new attach state 
  */
  cmhSM_GprsAttached( GPRS_DETACH );


  switch( gmmEntStat.curCmd )
  {
    case( AT_CMD_CGCLASS ):
    case( AT_CMD_CGATT ):
      
      R_AT( RAT_OK, gmmEntStat.entOwn ) ( gmmEntStat.curCmd );

      /* log result */
      cmh_logRslt ( gmmEntStat.entOwn, RAT_OK, gmmEntStat.curCmd, 
                             -1, BS_SPEED_NotPresent,CME_ERR_NotPresent );
      break;
  }
  gmmEntStat.curCmd = AT_CMD_NONE;

}

/*
+-------------------------------------------------------------------+
| PROJECT : GPRS (8441)      MODULE  : CMH_GMMR                     |
|                            ROUTINE : cmhGMM_NetDetach             |
+-------------------------------------------------------------------+

  PURPOSE : ME is detached by the network

*/
GLOBAL void cmhGMM_NetDetach ( UBYTE detach_type, USHORT cause, UBYTE search_running )
{
  UBYTE cme_err;          /* error number */
  SHORT i;


  TRACE_FUNCTION ("cmhGMM_NetDetach()");

  switch (detach_type)
  {
    case GMMREG_DT_GPRS:
    case GMMREG_DT_COMB:
      for( i = 0 ; i < CMD_SRC_MAX; i++ )
      {
        R_AT( RAT_CGEREP, (T_ACI_CMD_SRC)i ) ( CGEREP_EVENT_NW_DETACH, NULL ); 
        R_AT( RAT_P_CGEV, (T_ACI_CMD_SRC)i ) ( CGEREP_EVENT_NW_DETACH, NULL );
      }
    /*lint -fallthrough */
    case GMMREG_DT_SIM_REMOVED:
    case GMMREG_DT_LIMITED_SERVICE:
      cmhGMM_Set_state(AS_DETACHED);
      break;
    case GMMREG_DT_IMSI:
      cmhGMM_Set_state(AS_ATTACHED);
      break;
    case GMMREG_DT_DISABLE_GPRS:
      cmhGMM_Set_state(AS_SUSPENTED);
      break;
    case GMMREG_DT_POWER_OFF:
    default:
      break;
  }

  switch (detach_type)
  {
    case GMMREG_DT_GPRS:
      gmmShrdPrm.current_attach_type = GMMREG_AT_IMSI;
      break;
    case GMMREG_DT_IMSI:
      gmmShrdPrm.current_attach_type = GMMREG_AT_GPRS;
      break;
    case GMMREG_DT_COMB:
    case GMMREG_DT_SIM_REMOVED:
    case GMMREG_DT_LIMITED_SERVICE:
    case GMMREG_DT_POWER_OFF:
      gmmShrdPrm.current_attach_type = ATTACH_TYPE_DETACHED;
      break;
  }

  if( search_running EQ GMMREG_SEARCH_NOT_RUNNING)
  {
    if (work_cids[cid_pointer] NEQ PDP_CONTEXT_CID_INVALID)
    {
      /*
       * Inform CMH SM about the new attach state.
       */
      cmhSM_GprsAttached( GPRS_DETACH );
    }
    else
    {
      /*
       * map error cause
       */
      switch(cause)
      {
        case GMMCS_ILLEGAL_MS:
        case MMCS_ILLEGAL_MS:
          cme_err = CME_ERR_GPRSBadMs;
          break;
        case GMMCS_ILLEGAL_ME:
        case MMCS_ILLEGAL_ME:
          cme_err = CME_ERR_GPRSBadMe;
          break;
        case GMMCS_GPRS_NOT_ALLOWED:
        /* No corrosponding MM cause */
          cme_err = CME_ERR_GPRSNoService;
          break;
        case GMMCS_PLMN_NOT_ALLOWED:
        case MMCS_PLMN_NOT_ALLOWED:
          cme_err = CME_ERR_GPRSBadPlmn;
          break;
        case GMMCS_LA_NOT_ALLOWED:
        case MMCS_LA_NOT_ALLOWED:
          cme_err = CME_ERR_GPRSBadLoc;
          break;
        case GMMCS_ROAMING_NOT_ALLOWED:
        case MMCS_ROAMING_NOT_ALLOWED:
          cme_err = CME_ERR_GPRSNoRoam;
          break;
        case GMMCS_IMPLICIT_DETACHED:
        /* No corrosponding MM cause */
          cme_err = CME_ERR_GPRSUnspec;
          break;
        case GMMCS_IMSI_UNKNOWN:
        case MMCS_IMSI_IN_HLR:
        case MMCS_IMEI_NOT_ACCEPTED:
        /* No corrosponding GMM cause */
        case GMMCS_NO_MS_ID:
        /* No corrosponding MM cause */
          cme_err = CME_ERR_SimFail;
          break;
        case GMMCS_GSM_GPRS_NOT_ALLOWED:
        /* No corrosponding MM cause */
        case GMMCS_NET_FAIL:
        case MMCS_NETWORK_FAILURE:
        case GMMCS_MSC_TEMP_NOT_REACHABLE:
        /* No corrosponding MM cause */
        case GMMCS_CONGESTION:
        case MMCS_CONGESTION:
          cme_err = CME_ERR_NoServ;
          break;
        default:
          cme_err = CME_ERR_Unknown;
      }

      /* If we get detach indication with search_running as false, then we should 
         send error response to user. This is in the normal attach / cgclass case
       */

      switch ( gmmEntStat.curCmd )
      {
        case AT_CMD_CGCLASS:
        case AT_CMD_CGATT:
          R_AT( RAT_CME, gmmEntStat.entOwn ) ( gmmEntStat.curCmd, cme_err );

          /* log result */
          cmh_logRslt (gmmEntStat.entOwn, RAT_CME, gmmEntStat.curCmd,(SHORT)-1, (T_ACI_BS_SPEED)-1, (T_ACI_CME_ERR)cme_err );
          break;
      }
      gmmEntStat.curCmd = AT_CMD_NONE;
    }
  }

}
/*
+-------------------------------------------------------------------+
| PROJECT : GPRS (8441)      MODULE  : CMH_GMMR                     |
|                            ROUTINE : cmhGMM_Plmn                  |
+-------------------------------------------------------------------+

  PURPOSE : reseive a PLMN list

*/
GLOBAL SHORT cmhGMM_Plmn ( void )
{
  TRACE_FUNCTION ("cmhGMM_Plmn()");


  return GMMH_CMD_OK;
}

/*
+-------------------------------------------------------------------+
| PROJECT : GPRS (8441)      MODULE  : CMH_GMMR                     |
|                            ROUTINE : cmhGMM_Suspend               |
+-------------------------------------------------------------------+

  PURPOSE : full service or limited service is available

*/
GLOBAL SHORT cmhGMM_Suspend ( UBYTE cell_state )
{

  TRACE_FUNCTION ("cmhGMM_Suspend()");

  cmhGMM_Set_state( AS_SUSPENTED );

#if defined (SIM_TOOLKIT) AND defined (FF_SAT_E)

  cmhSAT_OpChnGPRSStat(SAT_GPRS_SUSPEND, SAT_GPRS_INV_CAUSE);

#endif  /* SIM_TOOLKIT AND FF_SAT_E */

  return GMMH_CMD_OK;
}

/*
+-------------------------------------------------------------------+
| PROJECT : GPRS (8441)      MODULE  : CMH_GMMR                     |
|                            ROUTINE : cmhGMM_Resume                |
+-------------------------------------------------------------------+

  PURPOSE : GPRS full service is now available

*/
GLOBAL SHORT cmhGMM_Resume ( void )
{

  TRACE_FUNCTION ("cmhGMM_Resume()");

  cmhGMM_Set_state( AS_ATTACHED );

#if defined (SIM_TOOLKIT) AND defined (FF_SAT_E)

  cmhSAT_OpChnGPRSStat(SAT_GPRS_RESUME, SAT_GPRS_INV_CAUSE);

#endif  /* SIM_TOOLKIT AND FF_SAT_E */

  return GMMH_CMD_OK;
}

/*
+-------------------------------------------------------------------+
| PROJECT : GPRS (8441)      MODULE  : CMH_GMMR                     |
|                            ROUTINE : cmhGMM_Info                  |
+-------------------------------------------------------------------+

  PURPOSE : reseive the information provided by the GMM INFORMATION message.

*/
GLOBAL SHORT cmhGMM_Info ( void )
{
  TRACE_FUNCTION ("cmhGMM_Info()");


  return GMMH_CMD_OK;
}



/*
+-------------------------------------------------------------------+
| PROJECT : GSM-PS (6147)    MODULE  : CMH_GMMR                      |
|                            ROUTINE : cmhGMM_CipheringInd           |
+-------------------------------------------------------------------+

  PURPOSE : ciphering indication received

*/

GLOBAL SHORT cmhGMM_CipheringInd ( UBYTE gsm_ciph, UBYTE gprs_ciph )
{
  SHORT idx;                  /* holds index counter */

  TRACE_FUNCTION ("cmhGMM_CipheringInd()");

  if (simShrdPrm.ciSIMEnabled NEQ TRUE)
  {
    return 1;
  }

  for (idx = 0; idx < CMD_SRC_MAX; idx++)
  {
     /*
     *-----------------------------------------------------------------
     * new message indication
     *-----------------------------------------------------------------
     */
     R_AT(RAT_P_CPRI,(T_ACI_CMD_SRC)idx)(gsm_ciph, gprs_ciph);
  }
  return 0;
}


#endif /* GPRS */
/*==== EOF ========================================================*/