diff src/g23m-gprs/gmm/gmm_rdyf.c @ 1:d393cd9bb723

src/g23m-*: initial import from Magnetite
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 15 Jul 2018 04:40:46 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/g23m-gprs/gmm/gmm_rdyf.c	Sun Jul 15 04:40:46 2018 +0000
@@ -0,0 +1,164 @@
+/* 
++----------------------------------------------------------------------------- 
+|  Project :  GPRS (8441)
+|  Modul   :  gmm_rdyf.c
++----------------------------------------------------------------------------- 
+|  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 modul is part of the entity GMM and implements all 
+|             procedures and functions as described in the 
+|             SDL-documentation (RDY-statemachine)
++----------------------------------------------------------------------------- 
+*/ 
+
+#ifndef GMM_RDYF_C
+#define GMM_RDYF_C
+#endif
+
+#define ENTITY_GMM
+
+/*==== INCLUDES =============================================================*/
+#include <stdio.h>      /* to get Sprintf */
+#include "typedefs.h"   /* to get Condat data types */
+#include "vsi.h"        /* to get a lot of macros */
+#include "macdef.h"
+#include "gsm.h"        /* to get a lot of macros */
+#include "ccdapi.h"     /* to get CCD API */
+#include "cnf_gmm.h"    /* to get cnf-definitions */
+#include "mon_gmm.h"    /* to get mon-definitions */
+#include "prim.h"       /* to get the definitions of used SAP and directions */
+#include "gmm.h"        /* to get the global entity definitions */
+
+/*==== CONST ================================================================*/
+
+/*==== LOCAL VARS ===========================================================*/
+
+/*==== PRIVATE FUNCTIONS ====================================================*/
+
+/*==== PUBLIC FUNCTIONS =====================================================*/
+
+/*
++------------------------------------------------------------------------------
+| Function    : rdy_cgrlc_ready_timer_config_req
++------------------------------------------------------------------------------
+| Description : this procedure sends ready_timer value to CGRLC
+|
+| Parameters  : ready_timer value
+|
++------------------------------------------------------------------------------
+*/
+GLOBAL void rdy_cgrlc_ready_timer_config_req (ULONG timer)
+{
+  GMM_TRACE_FUNCTION( "rdy_cgrlc_ready_timer_config_req" );
+
+  TRACE_1_OUT_PARA ("ready_timer value: %x", timer);
+
+  {
+    PALLOC ( cgrlc_ready_timer_config_req, CGRLC_READY_TIMER_CONFIG_REQ);
+    cgrlc_ready_timer_config_req->t3314_val = timer;
+    PSEND ( hCommGRLC, cgrlc_ready_timer_config_req );
+  }
+
+} /* rdy_cgrlc_ready_timer_config_req */
+
+
+
+/*
++------------------------------------------------------------------------------
+| Function    : rdy_init
++------------------------------------------------------------------------------
+| Description : The function rdy_init() .... 
+|
+| Parameters  : void
+|
++------------------------------------------------------------------------------
+*/
+GLOBAL void rdy_init ( void )
+{ 
+  USHORT timer;
+  TRACE_FUNCTION( "rdy_init" );
+
+  /*
+   * Initialise service RDY with state RDY_READY.
+   *
+   * default the init state has to be IDLE, but i think we do not need IDLE state
+   */
+  INIT_STATE (RDY, RDY_STANDBY);
+
+  /* 
+   * Initialise the timers T3312 and T3314 with default values
+   */
+  gmm_data->rdy.t3312_val = T3312_VALUE;
+  gmm_data->rdy.t3314_val = T3314_VALUE;
+  gmm_data->rdy.t3312_deactivated = FALSE;
+  gmm_data->rdy.attempting_to_update = FALSE;
+  for (timer=0;timer<TIMER_MAX;timer++)
+  {
+    gmm_data->rdy.timer_value[timer] = 0;
+  }
+  vsi_t_stop  ( GMM_handle, rdy_T3312);
+  rdy_cgrlc_ready_timer_config_req (gmm_data->rdy.t3314_val);
+  return;
+} /* rdy_init() */
+
+/*
++------------------------------------------------------------------------------
+| Function    : rdy_get_timer
++------------------------------------------------------------------------------
+| Description : this procedure sets the ready or rau timer value received
+|               from the network
+|
+| Parameters  : timer     - the AIR message timer 
+| returns:      timer_val - the timer_value in ms
+|
++------------------------------------------------------------------------------
+*/
+GLOBAL ULONG rdy_get_timer ( T_rau_timer * timer ) 
+{
+  GMM_TRACE_FUNCTION ("rdy_get_timer()");
+
+  switch ( timer->timer_unit )
+  {
+    case TIMER_2_SEC: 
+      GMM_RETURN_ (timer->timer_value * 2 * SEC);
+    case TIMER_1_MIN:
+      GMM_RETURN_ (timer->timer_value * 60 * SEC);
+    case TIMER_1_DH:
+      GMM_RETURN_ (timer->timer_value * 6 * 60 * SEC);
+    default:
+      GMM_RETURN_ (timer->timer_value * 60 * SEC);
+  }
+} /* rdy_get_timer */
+
+/*
++------------------------------------------------------------------------------
+| Function    : rdy_start_t3312
++------------------------------------------------------------------------------
+| Description : this procedure starts the timer t3312 if it is not deactivated
+|
+| Parameters  : void
+|
++------------------------------------------------------------------------------
+*/
+GLOBAL void rdy_start_t3312 ( void ) 
+{
+  GMM_TRACE_FUNCTION ("rdy_start_t3312()");
+
+  if( !gmm_data->rdy.t3312_deactivated
+  &&  !gmm_data->rdy.attempting_to_update)
+  {
+    TRACE_1_INFO ("Periodic RAU will be started in %d minutes",
+        (int)(gmm_data->rdy.t3312_val/(60000.0)));
+    vsi_t_start ( GMM_handle ,  rdy_T3312, gmm_data->rdy.t3312_val );
+  }
+  GMM_RETURN;
+} /* rdy_get_timer */