diff src/g23m-fad/rlp/rlp_snds.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-fad/rlp/rlp_snds.c	Fri Oct 16 06:25:50 2020 +0000
@@ -0,0 +1,742 @@
+/* 
++----------------------------------------------------------------------------- 
+|  Project :  CSD (8411)
+|  Modul   :  Rlp_snds.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 defines the functions for processing
+|             of incomming signals for the component
+|             Radio Link Protocol of the base station
++----------------------------------------------------------------------------- 
+*/ 
+
+#ifndef RLP_SNDS_C
+#define RLP_SNDS_C
+#endif
+
+#define ENTITY_RLP
+
+/*==== INCLUDES ===================================================*/
+
+#include <string.h>
+#include "typedefs.h"
+#include "vsi.h"
+#include "macdef.h"
+#include "custom.h"
+#include "gsm.h"
+#include "cus_rlp.h"
+#include "prim.h"
+#include "tok.h"
+#include "rlp.h"
+
+/*==== CONST =======================================================*/
+
+/*==== TYPES =======================================================*/
+
+/*==== VAR EXPORT ==================================================*/
+
+/*==== VAR LOCAL ===================================================*/
+
+/*==== FUNCTIONS ===================================================*/
+
+/*
++------------------------------------------------------------------------------
+|  Function    : sig_ker_snd_sabm_req
++------------------------------------------------------------------------------
+|  Description : Process signal SIG_SABM_REQ received from process kernel.
+|
+|  Parameters  : -
+|                 
+|
+|  Return      : -
++------------------------------------------------------------------------------
+*/
+
+
+GLOBAL void sig_ker_snd_sabm_req
+            (
+              void
+            )
+{
+  TRACE_FUNCTION ("sig_ker_snd_sabm_req()");
+
+  switch (GET_STATE (SND))
+  {
+    case SPDU_WAIT_EVENT:
+      /*
+       * processing for state SPDU_WAIT_EVENT
+       */
+      TRACE_EVENT ("Snd SABM");
+      snd_send_u_frame (UF_SABM, 1, 1, NULL);
+      break; 
+  }
+}
+
+/*
++------------------------------------------------------------------------------
+|  Function    : sig_ker_snd_disc_req
++------------------------------------------------------------------------------
+|  Description : Process signal SIG_DISC_REQ received from process kernel.
+|
+|  Parameters  : pFBit -
+|                 
+|
+|  Return      : -
++------------------------------------------------------------------------------
+*/
+
+
+GLOBAL void sig_ker_snd_disc_req
+            (
+              T_BIT pFBit
+            )
+{
+  TRACE_FUNCTION ("sig_ker_snd_disc_req()");
+
+  switch (GET_STATE (SND))
+  {
+    case SPDU_WAIT_EVENT:
+      /*
+       * processing for state SPDU_WAIT_EVENT
+       */
+      if (pFBit)
+      {
+        TRACE_EVENT ("Snd DISC (P/F=1)");
+      }
+      else
+      {
+        TRACE_EVENT ("Snd DISC (P/F=0)");
+      }
+      snd_send_u_frame (UF_DISC, pFBit, 1, NULL);
+      break; 
+  }
+}
+
+/*
++------------------------------------------------------------------------------
+|  Function    : sig_ker_snd_ua_req
++------------------------------------------------------------------------------
+|  Description : Process signal SIG_UA_REQ received from process kernel.
+|
+|  Parameters  : pFBit -
+|                 
+|
+|  Return      : -
++------------------------------------------------------------------------------
+*/
+
+
+GLOBAL void sig_ker_snd_ua_req
+            (
+              T_BIT pFBit
+            )
+{
+  TRACE_FUNCTION ("sig_ker_snd_ua_req()");
+
+  switch (GET_STATE (SND))
+  {
+    case SPDU_WAIT_EVENT:
+      /*
+       * processing for state SPDU_WAIT_EVENT
+       */
+      if (pFBit)
+      {
+        TRACE_EVENT ("Snd UA (P/F=1)");
+      }
+      else
+      {
+        TRACE_EVENT ("Snd UA (P/F=0)");
+      }
+      snd_send_u_frame (UF_UA, pFBit, 0, NULL);
+      break; 
+  }
+}
+
+/*
++------------------------------------------------------------------------------
+|  Function    : sig_ker_snd_dm_req
++------------------------------------------------------------------------------
+|  Description : Process signal SIG_DM_REQ received from process kernel.
+|
+|  Parameters  : pFBit -
+|                 
+|
+|  Return      : -
++------------------------------------------------------------------------------
+*/
+
+
+GLOBAL void sig_ker_snd_dm_req
+            (
+              T_BIT pFBit
+            )
+{
+  TRACE_FUNCTION ("sig_ker_snd_dm_req()");
+
+  switch (GET_STATE (SND))
+  {
+    case SPDU_WAIT_EVENT:
+      /*
+       * processing for state SPDU_WAIT_EVENT
+       */
+      if (pFBit)
+      {
+        TRACE_EVENT ("Snd DM (P/F=1)");
+      }
+      else
+      {
+        TRACE_EVENT ("Snd DM (P/F=0)");
+      }
+      snd_send_u_frame (UF_DM, pFBit, 0, NULL);
+      break; 
+  }
+}
+
+/*
++------------------------------------------------------------------------------
+|  Function    : sig_ker_snd_rr_req
++------------------------------------------------------------------------------
+|  Description :  Process signal SIG_RR_REQ received from process kernel.
+|
+|  Parameters  : cBit  -
+|                pFBit -
+|                nr    -
+|                dtx   -
+|                 
+|
+|  Return      : -
++------------------------------------------------------------------------------
+*/
+
+#ifdef ENABLE_DTX
+GLOBAL void sig_ker_snd_rr_req(T_BIT cBit, T_BIT pFBit, T_FRAME_NUM nr, T_BIT dtx)
+#else
+GLOBAL void sig_ker_snd_rr_req(T_BIT cBit, T_BIT pFBit, T_FRAME_NUM nr)
+#endif
+{
+  TRACE_FUNCTION ("sig_ker_snd_rr_req()");
+
+  switch (GET_STATE (SND))
+  {
+    case SPDU_WAIT_EVENT:
+      /*
+       * processing for state SPDU_WAIT_EVENT
+       */
+#ifdef ENABLE_DTX
+      if (dtx EQ 0)
+#endif
+        snd_send_s_frame (SF_RR, nr, pFBit, cBit, NULL);
+      break; 
+  }
+}
+
+/*
++------------------------------------------------------------------------------
+|  Function    : sig_ker_snd_rnr_req
++------------------------------------------------------------------------------
+|  Description : Process signal SIG_RNR_REQ received from process kernel.
+|
+|  Parameters  : cBit   -
+|                pFBit  -
+|                nr     -
+|                dtx    -
+|                 
+|
+|  Return      : -
++------------------------------------------------------------------------------
+*/
+
+
+GLOBAL void sig_ker_snd_rnr_req
+            (
+              T_BIT       cBit,
+              T_BIT       pFBit,
+              T_FRAME_NUM nr,
+              T_BIT       dtx
+            )
+{
+  TRACE_FUNCTION ("sig_ker_snd_rnr_req()");
+
+  switch (GET_STATE (SND))
+  {
+    case SPDU_WAIT_EVENT:
+      /*
+       * processing for state SPDU_WAIT_EVENT
+       */
+#ifdef ENABLE_DTX
+      if (dtx EQ 0) 
+#endif
+        snd_send_s_frame (SF_RNR, nr, pFBit, cBit, NULL);
+      break; 
+  }
+}
+
+/*
++------------------------------------------------------------------------------
+|  Function    : sig_ker_snd_rej_req
++------------------------------------------------------------------------------
+|  Description : Process signal SIG_REJ_REQ received from process kernel.
+|
+|  Parameters  : cBit  -
+|                pFBit -
+|                nr    -
+|                 
+|
+|  Return      : -
++------------------------------------------------------------------------------
+*/
+
+
+GLOBAL void sig_ker_snd_rej_req
+            (
+              T_BIT       cBit,
+              T_BIT       pFBit,
+              T_FRAME_NUM nr
+            )
+{
+  TRACE_FUNCTION ("sig_ker_snd_rej_req()");
+
+  switch (GET_STATE (SND))
+  {
+    case SPDU_WAIT_EVENT:
+      /*
+       * processing for state SPDU_WAIT_EVENT
+       */
+      snd_send_s_frame (SF_REJ, nr, pFBit, cBit, NULL);
+      break; 
+  }
+}
+
+/*
++------------------------------------------------------------------------------
+|  Function    : sig_ker_snd_srej_req
++------------------------------------------------------------------------------
+|  Description : Process signal SIG_SREJ_REQ received from process kernel.
+|
+|  Parameters  : cBit  -
+|                pFBit -
+|                nr    -
+|
+|  Return      : -
++------------------------------------------------------------------------------
+*/
+
+
+GLOBAL void sig_ker_snd_srej_req
+            (
+              T_BIT       cBit,
+              T_BIT       pFBit,
+              T_FRAME_NUM nr
+            )
+{
+  TRACE_FUNCTION ("sig_ker_snd_srej_req()");
+
+  switch (GET_STATE (SND))
+  {
+    case SPDU_WAIT_EVENT:
+      /*
+       * processing for state SPDU_WAIT_EVENT
+       */
+      snd_send_s_frame (SF_SREJ, nr, pFBit, cBit, NULL);
+      break; 
+  }
+}
+
+/*
++------------------------------------------------------------------------------
+|  Function    : sig_ker_snd_rr_i_req
++------------------------------------------------------------------------------
+|  Description : Process signal SIG_RR_I_REQ received from process kernel.
+|
+|  Parameters  : 
+|                 
+|
+|  Return      : 
++------------------------------------------------------------------------------
+*/
+
+
+GLOBAL void sig_ker_snd_rr_i_req
+            (
+              T_BIT              cBit,
+              T_BIT              pFBit,
+              T_FRAME_NUM        nr,
+              T_FRAME_NUM        ns,
+              T_FRAME_DESC      *dataDesc
+            )
+{
+  TRACE_FUNCTION ("sig_ker_snd_rr_i_req()");
+
+  switch (GET_STATE (SND))
+  {
+    case SPDU_WAIT_EVENT:
+      /*
+       * processing for state SPDU_WAIT_EVENT
+       */
+      snd_send_si_frame (SF_RR, nr, pFBit, ns, cBit, dataDesc);
+      break; 
+  }
+}
+
+/*
++------------------------------------------------------------------------------
+|  Function    : sig_ker_snd_rnr_i_req
++------------------------------------------------------------------------------
+|  Description : Process signal SIG_RNR_I_REQ received from process kernel.
+|
+|  Parameters  : cBit
+|                pFBit
+|                nr
+|                ns
+|                dataDesc 
+|
+|  Return      : -
++------------------------------------------------------------------------------
+*/
+
+
+GLOBAL void sig_ker_snd_rnr_i_req
+            (
+              T_BIT              cBit,
+              T_BIT              pFBit,
+              T_FRAME_NUM        nr,
+              T_FRAME_NUM        ns,
+              T_FRAME_DESC      *dataDesc
+            )
+{
+  TRACE_FUNCTION ("sig_ker_snd_rnr_i_req()");
+
+  switch (GET_STATE (SND))
+  {
+    case SPDU_WAIT_EVENT:
+      /*
+       * processing for state SPDU_WAIT_EVENT
+       */
+      snd_send_si_frame (SF_RNR, nr, pFBit, ns, cBit, dataDesc);
+      break; 
+  }
+}
+
+/*
++------------------------------------------------------------------------------
+|  Function    : sig_ker_snd_rej_i_req
++------------------------------------------------------------------------------
+|  Description : Process signal SIG_REJ_I_REQ received from process kernel.
+|
+|  Parameters  : cBit     -
+|                pFBit    -
+|                nr       -
+|                ns       -
+|                dataDesc -  
+|
+|  Return      : -
++------------------------------------------------------------------------------
+*/
+
+
+GLOBAL void sig_ker_snd_rej_i_req
+            (
+              T_BIT              cBit,
+              T_BIT              pFBit,
+              T_FRAME_NUM        nr,
+              T_FRAME_NUM        ns,
+              T_FRAME_DESC      *dataDesc
+            )
+{
+  TRACE_FUNCTION ("sig_ker_snd_rej_i_req()");
+
+  switch (GET_STATE (SND))
+  {
+    case SPDU_WAIT_EVENT:
+      /*
+       * processing for state SPDU_WAIT_EVENT
+       */
+      snd_send_si_frame (SF_REJ, nr, pFBit, ns, cBit, dataDesc);
+      break; 
+  }
+}
+
+/*
++------------------------------------------------------------------------------
+|  Function    : sig_ker_snd_srej_i_req
++------------------------------------------------------------------------------
+|  Description : Process signal SIG_SREJ_I_REQ received from process kernel.
+|
+|  Parameters  : cBit     -
+|                pFBit    -
+|                nr       -
+|                ns       -
+|                dataDesc -
+|                 
+|
+|  Return      : -
++------------------------------------------------------------------------------
+*/
+
+
+GLOBAL void sig_ker_snd_srej_i_req
+            (
+              T_BIT              cBit,
+              T_BIT              pFBit,
+              T_FRAME_NUM        nr,
+              T_FRAME_NUM        ns,
+              T_FRAME_DESC      *dataDesc
+            )
+{
+  TRACE_FUNCTION ("sig_ker_snd_srej_i_req()");
+
+  switch (GET_STATE (SND))
+  {
+    case SPDU_WAIT_EVENT:
+      /*
+       * processing for state SPDU_WAIT_EVENT
+       */
+      snd_send_si_frame (SF_SREJ, nr, pFBit, ns, cBit, dataDesc);
+      break; 
+  }
+}
+
+/*
++------------------------------------------------------------------------------
+|  Function    : sig_ker_snd_ui_req
++------------------------------------------------------------------------------
+|  Description : Process signal SIG_UI_REQ received from process kernel.
+|
+|  Parameters  : cBit      -
+|                pFBit     -
+|                dataDesc  -
+|
+|  Return      : -
++------------------------------------------------------------------------------
+*/
+
+
+GLOBAL void sig_ker_snd_ui_req
+            (
+              T_BIT              cBit,
+              T_BIT              pFBit,
+              T_FRAME_DESC      *dataDesc
+            )
+{
+  TRACE_FUNCTION ("sig_ker_snd_ui_req()");
+
+  switch (GET_STATE (SND))
+  {
+    case SPDU_WAIT_EVENT:
+      /*
+       * processing for state SPDU_WAIT_EVENT
+       */
+      TRACE_EVENT ("Snd UI");
+      snd_send_u_frame (UF_UI, pFBit, cBit, dataDesc);
+      break; 
+  }
+}
+
+/*
++------------------------------------------------------------------------------
+|  Function    : sig_ker_snd_xid_req
++------------------------------------------------------------------------------
+|  Description : Process signal SIG_SABM_REQ received from process kernel.
+|
+|  Parameters  : cBit
+|                pFBit
+|                dataDesc
+|                 
+|
+|  Return      : -
++------------------------------------------------------------------------------
+*/
+
+
+GLOBAL void sig_ker_snd_xid_req
+            (
+              T_BIT              cBit,
+              T_BIT              pFBit,
+              T_FRAME_DESC      *dataDesc
+            )
+{
+  TRACE_FUNCTION ("sig_ker_snd_xid_req()");
+
+  switch (GET_STATE (SND))
+  {
+    case SPDU_WAIT_EVENT:
+      /*
+       * processing for state SPDU_WAIT_EVENT
+       */
+      if (pFBit)
+      {
+        if (cBit)
+        {
+          TRACE_EVENT ("Snd XID C (P/F=1)");
+        }
+        else
+        {
+          TRACE_EVENT ("Snd XID R (P/F=1)");
+        }
+      }
+      else
+      {
+        if (cBit)
+        {
+          TRACE_EVENT ("Snd XID C (P/F=0)");
+        }
+        else
+        {
+          TRACE_EVENT ("Snd XID R (P/F=0)");
+        }
+      }
+
+      snd_send_u_frame (UF_XID, pFBit, cBit, dataDesc);
+      break; 
+  }
+}
+
+/*
++------------------------------------------------------------------------------
+|  Function    : sig_ker_snd_test_req
++------------------------------------------------------------------------------
+|  Description : Process signal SIG_TEST_REQ received from process kernel.
+|
+|  Parameters  : cBit     - 
+|                pFBit    -
+|                dataDesc -
+|                 
+|
+|  Return      : -
++------------------------------------------------------------------------------
+*/
+
+
+GLOBAL void sig_ker_snd_test_req
+            (
+              T_BIT              cBit,
+              T_BIT              pFBit,
+              T_FRAME_DESC      *dataDesc
+            )
+{
+  TRACE_FUNCTION ("sig_ker_snd_test_req()");
+
+  switch (GET_STATE (SND))
+  {
+    case SPDU_WAIT_EVENT:
+      /*
+       * processing for state SPDU_WAIT_EVENT
+       */
+      TRACE_EVENT ("Snd TEST");
+      snd_send_u_frame (UF_TEST, pFBit, cBit, dataDesc);
+      break; 
+  }
+}
+
+/*
++------------------------------------------------------------------------------
+|  Function    : sig_ker_snd_remap_req
++------------------------------------------------------------------------------
+|  Description : Process signal SIG_REMAP_REQ received from process kernel.
+|
+|  Parameters  : dataDesc -
+|                 
+|
+|  Return      : -
++------------------------------------------------------------------------------
+*/
+
+
+GLOBAL void sig_ker_snd_remap_req
+            (
+              T_FRAME_DESC      *dataDesc
+            )
+{
+  TRACE_FUNCTION ("sig_ker_snd_remap_req()");
+
+  switch (GET_STATE (SND))
+  {
+    case SPDU_WAIT_EVENT:
+      /*
+       * processing for state SPDU_WAIT_EVENT
+       */
+      TRACE_EVENT ("Snd REMAP");
+      snd_send_u_frame (UF_REMAP, 0, 1, dataDesc);
+      break; 
+  }
+}
+
+/*
++------------------------------------------------------------------------------
+|  Function    : sig_ker_snd_null_req
++------------------------------------------------------------------------------
+|  Description : Process signal SIG_NULL_REQ received from process kernel.
+|
+|  Parameters  : -
+|                 
+|
+|  Return      : -
++------------------------------------------------------------------------------
+*/
+
+
+GLOBAL void sig_ker_snd_null_req(void)
+{
+  TRACE_FUNCTION ("sig_ker_snd_null_req()");
+
+  if (GET_STATE (SND) EQ SPDU_WAIT_EVENT)
+  {
+    snd_send_u_frame (UF_NULL, 0, 1, NULL);
+  }
+}
+
+/*
++------------------------------------------------------------------------------
+|  Function    : sig_ker_snd_set_frame_size_req
++------------------------------------------------------------------------------
+|  Description : Process signal SIG_SET_FRAME_SIZE_REQ received from process kernel.
+|
+|  Parameters  : frameSize -
+|                 
+|
+|  Return      : -
++------------------------------------------------------------------------------
+*/
+
+
+GLOBAL void sig_ker_snd_set_frame_size_req
+            (
+              USHORT frameSize
+            )
+{
+  USHORT i;
+  /*
+  TRACE_FUNCTION ("sig_ker_snd_set_frame_size_req()");
+  */
+
+  switch (GET_STATE (SND))
+  {
+    case SPDU_WAIT_EVENT:
+      /*
+       * initialize the header only frame descriptor
+       */
+      rlp_data->snd.HO_FrameDesc.Adr[0] = rlp_data->snd.HO_Frame;
+      rlp_data->snd.HO_FrameDesc.Len[0] = frameSize;
+      rlp_data->snd.HO_FrameDesc.Adr[1] = NULL;
+      rlp_data->snd.HO_FrameDesc.Len[1] = 0;
+  
+      for (i=2; i<frameSize; i++)
+      {
+        rlp_data->snd.HO_Frame[i] = 0x41 + (UBYTE)i;
+      }
+
+      rlp_data->snd.FrameSize = frameSize;
+      break; 
+  }
+}
+