diff gsm-fw/g23m-aci/uart/uart_rts.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 f54080301c98
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsm-fw/g23m-aci/uart/uart_rts.c	Sun Oct 12 01:45:14 2014 +0000
@@ -0,0 +1,338 @@
+/*
++-----------------------------------------------------------------------------
+|  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 modul is part of the entity UART and implements all
+|             functions to handle the incoming process internal signals as
+|             described in the SDL-documentation (RT-statemachine)
++-----------------------------------------------------------------------------
+*/
+
+#ifndef UART_RTS_C
+#define UART_RTS_C
+#endif /* !UART_RTS_C */
+
+#define ENTITY_UART
+
+/*==== INCLUDES =============================================================*/
+
+#ifdef _SIMULATION_
+#include <stdio.h>
+#endif
+
+#ifdef WIN32
+#include "nucleus.h"
+#endif /* WIN32 */
+#include "typedefs.h"   /* to get Condat data types */
+#include "vsi.h"        /* to get a lot of macros */
+#include "macdef.h"     /* to get a lot of macros */
+#include "custom.h"
+#include "gsm.h"        /* to get a lot of macros */
+#include "cnf_uart.h"   /* to get cnf-definitions */
+#include "mon_uart.h"   /* to get mon-definitions */
+#include "prim.h"       /* to get the definitions of used SAP and directions */
+#ifdef DTILIB
+#include "dti.h"        /* to get dti lib */
+#endif /* DTILIB */
+#include "pei.h"        /* to get PEI interface */
+#ifdef FF_MULTI_PORT
+#include "gsi.h"        /* to get definitions of serial driver */
+#else /* FF_MULTI_PORT */
+#ifdef _TARGET_
+#include "uart/serialswitch.h"
+#include "uart/traceswitch.h"
+#else /* _TARGET_ */
+#include "serial_dat.h" /* to get definitions of serial driver */
+#endif /* _TARGET_ */
+#endif /* FF_MULTI_PORT */
+#include "uart.h"       /* to get the global entity definitions */
+
+/*==== CONST ================================================================*/
+
+/*==== LOCAL VARS ===========================================================*/
+
+/*==== PRIVATE FUNCTIONS ====================================================*/
+
+/*==== PUBLIC FUNCTIONS =====================================================*/
+
+
+
+/*
++------------------------------------------------------------------------------
+| Function    : sig_ker_rt_parameters_req
++------------------------------------------------------------------------------
+| Description : Handles the internal signal SIG_KER_RT_PARAMETERS_REQ
+|               This signal sets new start values for the three multiplexer
+|               timers:
+|               T1 - acknowledgement timer (in units of 10 ms)
+|               T2 - response timer for multiplexer control channel
+|                    (in units of 10 ms)
+|               T3 - wake-up response timer (in seconds)
+|
+| Parameters  : t1 - new start value of timer T1
+|               t2 - new start value of timer T2
+|               t3 - new start value of timer T3
+|
++------------------------------------------------------------------------------
+*/
+GLOBAL void sig_ker_rt_parameters_req (UBYTE t1, UBYTE t2, UBYTE t3)
+{
+  TRACE_ISIG( "sig_ker_rt_parameters_req" );
+
+  /*
+   * set set new start values of timers
+   */
+  uart_data->rt.t1 = (T_TIME)t1 * 10;
+  uart_data->rt.t2 = (T_TIME)t2 * 10;
+  uart_data->rt.t3 = (T_TIME)t3 * 1000;
+} /* sig_ker_rt_parameters_req() */
+
+
+
+/*
++------------------------------------------------------------------------------
+| Function    : sig_ker_rt_start_t1_req
++------------------------------------------------------------------------------
+| Description : Handles the internal signal SIG_KER_RT_START_T1_REQ
+|               which is used to (re-)start the timer t1
+|
+| Parameters  : none
+|
++------------------------------------------------------------------------------
+*/
+GLOBAL void sig_ker_rt_start_t1_req ()
+{
+  TRACE_ISIG( "sig_ker_rt_start_t1_req" );
+
+  if(TIMER_START(UART_handle, uart_data->timer_t1_index, uart_data->rt.t1 ) NEQ VSI_OK)
+  {
+    TRACE_ERROR_P1("VSI entity: Can't start timer t1, uart_rts.c(%d)", __LINE__);
+  }
+
+  uart_data->rt.state_t1 = UART_RT_STARTED;
+
+} /* sig_ker_rt_start_t1_req() */
+
+
+
+/*
++------------------------------------------------------------------------------
+| Function    : sig_ker_rt_start_t2_req
++------------------------------------------------------------------------------
+| Description : Handles the internal signal SIG_KER_RT_START_T2_REQ
+|               which is used to (re-)start the timer t2
+|
+| Parameters  : none
+|
++------------------------------------------------------------------------------
+*/
+GLOBAL void sig_ker_rt_start_t2_req ()
+{
+  TRACE_ISIG( "sig_ker_rt_start_t2_req" );
+
+
+  if(TIMER_START(UART_handle, uart_data->timer_t2_index, uart_data->rt.t2 ) NEQ VSI_OK)
+  {
+    TRACE_ERROR_P1("VSI entity: Can't start timer t2, uart_rts.c(%d)", __LINE__);
+  }
+
+  uart_data->rt.state_t2 = UART_RT_STARTED;
+
+} /* sig_ker_rt_start_t2_req() */
+
+
+
+/*
++------------------------------------------------------------------------------
+| Function    : sig_ker_rt_start_t3_req
++------------------------------------------------------------------------------
+| Description : Handles the internal signal SIG_KER_RT_START_T3_REQ
+|               which is used to (re-)start the timer t3
+|
+| Parameters  : none
+|
++------------------------------------------------------------------------------
+*/
+GLOBAL void sig_ker_rt_start_t3_req ()
+{
+  TRACE_ISIG( "sig_ker_rt_start_t3_req" );
+
+
+  if(TIMER_START(UART_handle, uart_data->timer_t3_index, uart_data->rt.t3 ) NEQ VSI_OK)
+  {
+    TRACE_ERROR_P1("VSI entity: Can't start timer t3, uart_rts.c(%d)", __LINE__);
+  }
+
+  uart_data->rt.state_t3 = UART_RT_STARTED;
+
+} /* sig_ker_rt_start_t3_req() */
+
+
+/*
++------------------------------------------------------------------------------
+| Function    : sig_dtx_rt_start_tesd_req
++------------------------------------------------------------------------------
+| Description : Handles the internal signal SIG_DTX_RT_START_TESD_REQ
+|               which is used to start the timer tesd
+|
+| Parameters  : tesd_value  - startvalue of TESD
+|
++------------------------------------------------------------------------------
+*/
+GLOBAL void sig_dtx_rt_start_tesd_req (T_TIME tesd_value)
+{
+  TRACE_ISIG( "sig_dtx_rt_start_tesd_req" );
+  /*
+   * store lowest value
+   */
+  if (tesd_value < uart_data->rt.tesd)
+  {
+#ifdef _SIMULATION_
+    TRACE_EVENT_P1("ESD: New start value uart_data->rt.tesd: %d", tesd_value);
+#endif /* _SIMULATION_ */
+    uart_data->rt.tesd = tesd_value;
+  }
+  /*
+   * 1. This is the "first" call to sig_dtx_rt_start_tesd_req:
+   *    state is UART_RT_STOPPED
+   * 2. Called from sig_ker_dtx_timeout_tesd_req:
+   *    state is still UART_RT_STARTED (is reset to UART_RT_STOPPED when none
+   *    of the DLCs wants to restart TESD)
+   */
+  if (uart_data->rt.state_tesd EQ UART_RT_STOPPED)
+  {
+#ifdef _SIMULATION_
+    TRACE_EVENT_P1("ESD: Start timer TESD( %d )", uart_data->rt.tesd);
+#endif /* _SIMULATION_ */
+
+    if(TIMER_START (UART_handle, uart_data->timer_tesd_index, uart_data->rt.tesd ) NEQ VSI_OK)
+    {
+      TRACE_ERROR_P1("VSI entity: Can't start timer, uart_rts.c(%d)", __LINE__);
+    }
+    uart_data->rt.state_tesd = UART_RT_STARTED;
+  }
+#ifdef _SIMULATION_
+  else
+  {
+    TRACE_EVENT("ESD: Timer TESD will be started later !");
+  }
+#endif /* _SIMULATION_ */
+} /* sig_dtx_rt_start_tesd_req() */
+
+
+/*
++------------------------------------------------------------------------------
+| Function    : sig_ker_rt_stop_t1_req
++------------------------------------------------------------------------------
+| Description : Handles the internal signal SIG_KER_RT_STOP_T1_REQ
+|
+| Parameters  : none
+|
++------------------------------------------------------------------------------
+*/
+GLOBAL void sig_ker_rt_stop_t1_req ()
+{
+  TRACE_ISIG( "sig_ker_rt_stop_t1_req" );
+
+  if( uart_data->rt.state_t1 EQ UART_RT_STARTED )
+  {
+    if(TIMER_STOP(UART_handle, uart_data->timer_t1_index ) NEQ VSI_OK)
+    {
+      TRACE_ERROR_P1("VSI entity: Can't stop timer t1, uartrts.c(%d)", __LINE__);
+    }
+  }
+
+  uart_data->rt.state_t1 = UART_RT_STOPPED;
+} /* sig_ker_rt_stop_t1_req() */
+
+
+
+/*
++------------------------------------------------------------------------------
+| Function    : sig_ker_rt_stop_t2_req
++------------------------------------------------------------------------------
+| Description : Handles the internal signal SIG_KER_RT_STOP_T2_REQ
+|
+| Parameters  : none
+|
++------------------------------------------------------------------------------
+*/
+GLOBAL void sig_ker_rt_stop_t2_req ()
+{
+  TRACE_ISIG( "sig_ker_rt_stop_t2_req" );
+
+  if( uart_data->rt.state_t2 EQ UART_RT_STARTED )
+  {
+    if(TIMER_STOP(UART_handle, uart_data->timer_t2_index ) NEQ VSI_OK)
+    {
+      TRACE_ERROR_P1("VSI entity: Can't stop timer t2, uart_rts.c(%d)",__LINE__);
+    }
+  }
+
+  uart_data->rt.state_t2 = UART_RT_STOPPED;
+} /* sig_ker_rt_stop_t2_req() */
+
+
+
+/*
++------------------------------------------------------------------------------
+| Function    : sig_ker_rt_stop_t3_req
++------------------------------------------------------------------------------
+| Description : Handles the internal signal SIG_KER_RT_STOP_T3_REQ
+|
+| Parameters  : none
+|
++------------------------------------------------------------------------------
+*/
+GLOBAL void sig_ker_rt_stop_t3_req ()
+{
+  TRACE_ISIG( "sig_ker_rt_stop_t3_req" );
+
+  if( uart_data->rt.state_t3 EQ UART_RT_STARTED )
+  {
+    if(TIMER_STOP(UART_handle, uart_data->timer_t3_index ) NEQ VSI_OK)
+    {
+      TRACE_ERROR_P1("VSI entity: Can't stop timer t3, uart_rts.c(%d)", __LINE__);
+    }
+  }
+
+  uart_data->rt.state_t3 = UART_RT_STOPPED;
+} /* sig_ker_rt_stop_t3_req() */
+
+
+/*
++------------------------------------------------------------------------------
+| Function    : sig_dtx_rt_stop_tesd_req
++------------------------------------------------------------------------------
+| Description : Handles the internal signal SIG_DTX_RT_STOP_TESD_REQ
+|
+| Parameters  : none
+|
++------------------------------------------------------------------------------
+*/
+GLOBAL void sig_dtx_rt_stop_tesd_req ()
+{
+  TRACE_ISIG( "sig_dtx_rt_stop_tesd_req" );
+
+  if( uart_data->rt.state_tesd EQ UART_RT_STARTED )
+  {
+    if(TIMER_STOP(UART_handle, uart_data->timer_tesd_index ) NEQ VSI_OK)
+    {
+      TRACE_ERROR_P1("VSI entity: Can't stop timer, uart_rts.c(%d)", __LINE__);
+    }
+}
+
+  uart_data->rt.state_tesd = UART_RT_STOPPED;
+} /* sig_dtx_rt_stop_tesd_req() */