diff src/g23m-gprs/grr/grr_csp.c @ 1:fa8dc04885d8

src/g23m-*: import from Magnetite
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 16 Oct 2020 06:25:50 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/g23m-gprs/grr/grr_csp.c	Fri Oct 16 06:25:50 2020 +0000
@@ -0,0 +1,151 @@
+/* 
++----------------------------------------------------------------------------- 
+|  Project :  GPRS (8441)
+|  Modul   :  GRR
++----------------------------------------------------------------------------- 
+|  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 implements primitive handler functions for service
+|             CS of entity GRR.
++----------------------------------------------------------------------------- 
+*/ 
+         
+#ifndef GRR_CSP_C
+#define GRR_CSP_C
+#endif
+
+#define ENTITY_GRR
+
+/*==== INCLUDES =============================================================*/
+
+#include "typedefs.h"   /* to get Condat data types */
+
+#include "vsi.h"        /* to get a lot of macros */
+#include "macdef.h"
+#include "gprs.h"
+#include "gsm.h"        /* to get a lot of macros */
+#include "ccdapi.h"     /* to get CCD API */
+#include "cnf_grr.h"    /* to get cnf-definitions */
+#include "mon_grr.h"    /* to get mon-definitions */
+#include "prim.h"       /* to get the definitions of used SAP and directions */
+#include "message.h"
+#include "grr.h"        /* to get the global entity definitions */
+#include "grr_f.h"
+#include "grr_csf.h"
+
+/*==== CONST ================================================================*/
+
+/*==== LOCAL VARS ===========================================================*/
+
+/*==== PUBLIC FUNCTIONS =====================================================*/
+/*
++------------------------------------------------------------------------------
+| Function    : cs_t3158
++------------------------------------------------------------------------------
+| Description : Handles the timeout of timer T3158
+|
+| Parameters  : void
+|
++------------------------------------------------------------------------------
+*/
+GLOBAL void cs_t3158 ( void )
+{ 
+#if defined (REL99) AND defined (TI_PS_FF_EMR)
+  BOOL is_enh_meas = cs_is_enh_meas_reporting();
+#endif
+
+  TRACE_FUNCTION( "cs_t3158" );
+
+  TRACE_EVENT( "T3158 timeout" );
+
+  cs_store_rxlev_values( );
+  cs_reset_all_rxlev_results( );
+
+  switch( GET_STATE( CS ) )
+  {
+    case CS_IDLE:
+  
+      switch( GET_STATE( CS_MEAS ) )
+      {
+        case CS_MEAS_NULL:
+          if( grr_is_pbcch_present( ) EQ FALSE )
+          {
+            cs_send_meas_rep_req( NC_REPORT_MEAS );
+
+            SET_STATE( CS_MEAS, CS_MEAS_REP_REQ ); 
+          }
+          else
+          {
+            SET_STATE( CS_MEAS, CS_MEAS_PMR_SENDING );
+
+            
+#if defined (REL99) AND defined (TI_PS_FF_EMR)
+          if( ((is_enh_meas EQ TRUE) AND (cs_send_enh_meas_rpt() EQ FALSE))
+              OR
+              ((is_enh_meas EQ FALSE) AND (cs_send_meas_rpt(TRUE) EQ FALSE)) )
+#else
+          if( cs_send_meas_rpt( TRUE ) EQ FALSE )
+#endif
+
+            {
+              /*
+               * The additional state check is necessary because signals might
+               * be send during the processing of the function cs_send_meas_rpt.
+               */
+              if( GET_STATE( CS_MEAS ) EQ CS_MEAS_PMR_SENDING )
+              {
+                SET_STATE( CS_MEAS, CS_MEAS_NULL );
+              }
+            }
+          }
+          break;
+
+        default:
+          break;
+      }
+ 
+      cs_process_t3158( );
+      break;
+
+    case CS_CR_NETWORK:
+    default:
+      /*
+       * RR performs an IA reject procedure resulting in a cell re-selection 
+       * when timer T3158 expires. Timeout of T3158 resulted in a "T3158 timeout
+       * unexpected", this should be avoided.
+       */
+      cs_process_t3158( );
+      break;
+  }
+} /* cs_t3158() */
+
+/*
++------------------------------------------------------------------------------
+| Function    : cs_t_reselect
++------------------------------------------------------------------------------
+| Description : Handles the timeout of timer T_RESELECT
+|
+| Parameters  : void
+|
++------------------------------------------------------------------------------
+*/
+GLOBAL void cs_t_reselect ( void )
+{ 
+  TRACE_FUNCTION( "cs_t_reselect" );
+
+  if( grr_t_status( T3174 ) > 0 )
+  {
+    TRACE_EVENT( "t_reslect expired when t3174 is running" );
+    return;
+  }
+  cs_cr_decision( CRDM_T_RESELECT );
+} /* cs_t_reselect() */