diff g23m-aci/aci/psa_l2rs.c @ 0:75a11d740a02

initial import of gsm-fw from freecalypso-sw rev 1033:5ab737ac3ad7
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 09 Jun 2016 00:02:41 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/g23m-aci/aci/psa_l2rs.c	Thu Jun 09 00:02:41 2016 +0000
@@ -0,0 +1,465 @@
+/*
++-----------------------------------------------------------------------------
+|  Project :  GSM-PS (6147)
+|  Modul   :  PSA_L2RS
++-----------------------------------------------------------------------------
+|  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 signalling functions of the
+|             protocol stack adapter for layer 2 relay.
++-----------------------------------------------------------------------------
+*/
+
+#ifdef DTI
+
+#ifndef PSA_L2RS_C
+#define PSA_L2RS_C
+#endif
+
+#include "aci_all.h"
+
+/*==== INCLUDES ===================================================*/
+#include "dti.h"
+#include "dti_conn_mng.h"
+#include "dti_cntrl_mng.h"
+
+#include "aci_cmh.h"
+#include "ati_cmd.h"
+#include "aci_cmd.h"
+#include "aci.h"
+
+#include "psa.h"
+#include "psa_l2r.h"
+#include "cmh.h"
+#include "aci_fd.h"
+#include "cmh_ra.h"
+#include "cmh_l2r.h"
+#include "psa_uart.h"
+
+#if defined (FF_WAP) || defined (FF_GPF_TCPIP) || defined (FF_SAT_E)
+#include "wap_aci.h"
+#include "psa_ppp_w.h"
+#endif /* defined (FF_WAP) || defined (FF_GPF_TCPIP) */
+#include "aci_lst.h"
+
+#include "aci_lst.h"
+
+#ifdef FF_PSI
+#include "psa_psi.h"
+#include "cmh_psi.h"
+#include "ati_src_psi.h"
+#endif /*FF_PSI*/
+#include "psa_util.h"
+
+/*==== CONSTANTS ==================================================*/
+
+
+/*==== TYPES ======================================================*/
+
+
+/*==== EXPORT =====================================================*/
+
+
+/*==== VARIABLES ==================================================*/
+
+
+/*==== FUNCTIONS ==================================================*/
+
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)    MODULE  : PSA_L2R                      |
+|                            ROUTINE : psaL2R_Activate              |
++-------------------------------------------------------------------+
+
+  PURPOSE : Activate L2R.
+
+*/
+
+GLOBAL SHORT psaL2R_Activate(UBYTE owner)
+{
+#define X l2rShrdPrm.set_prm[owner]
+
+  TRACE_FUNCTION ("psaL2R_Activate()");
+
+  /* owner belongs to PSA and not to CMH */
+  l2rShrdPrm.owner = owner;
+
+  switch (l2rShrdPrm.state)
+  {
+    case L2R_DEACTIVATED:
+    {
+      PALLOC (l2r_activate_req, L2R_ACTIVATE_REQ);
+
+      l2r_activate_req->k_ms_iwf        = X.k_ms_iwf;
+      l2r_activate_req->k_iwf_ms        = X.k_iwf_ms;
+      l2r_activate_req->t1              = X.t1;
+      l2r_activate_req->t2              = L2R_T2_DEF;
+      l2r_activate_req->n2              = X.n2;
+      l2r_activate_req->pt              = L2R_PT_DEF;
+      l2r_activate_req->p0              = X.p0;
+      l2r_activate_req->p1              = X.p1;
+      l2r_activate_req->p2              = X.p2;
+      l2r_activate_req->uil2p           = X.uil2p;
+      l2r_activate_req->bytes_per_prim  = L2R_BYTES_PER_PRIM_DEF;
+      l2r_activate_req->buffer_size     = L2R_BUFFER_SIZE_DEF;
+      l2r_activate_req->rate            = X.rate;
+
+      l2rShrdPrm.set_prm[l2rShrdPrm.owner].reset = 0;
+
+      memcpy (&X, &l2rShrdPrm.set_prm_use, sizeof (T_L2R_SET_PRM));
+
+      l2rShrdPrm.state = L2R_ACTIVATE;
+
+      PSENDX (L2R, l2r_activate_req);
+
+      break;
+    }
+
+    default:
+    {
+      cmhL2R_Failure();
+
+      return -1;
+    }
+  }
+
+  return 0;
+
+#undef X
+}
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)    MODULE  : PSA_L2R                      |
+|                            ROUTINE : psaL2R_Deactivate            |
++-------------------------------------------------------------------+
+
+  PURPOSE : Deactivate L2R.
+
+*/
+
+GLOBAL SHORT psaL2R_Deactivate(void)
+{
+  TRACE_FUNCTION ("psaL2R_Deactivate()");
+
+  switch (l2rShrdPrm.state)
+  {
+    case L2R_ENABLED:
+    {
+      T_DTI_CONN_LINK_ID link_id = dti_cntrl_get_link_id( DTI_ENTITY_L2R, DTI_INSTANCE_NOTPRESENT, DTI_SUB_NO_NOTPRESENT );
+      PALLOC (l2r_dti_req, L2R_DTI_REQ);
+
+      l2r_dti_req->dti_conn = L2R_DISCONNECT_DTI;
+      l2rShrdPrm.uart_conn = L2R_DISCONNECT_DTI;
+      l2r_dti_req->link_id = link_id;
+      l2rShrdPrm.state = L2R_DETACH;
+
+      PSENDX (L2R, l2r_dti_req);
+      break;
+    }
+
+    case L2R_CONNECTED:
+    case L2R_ENABLE:
+    case L2R_ACTIVATE:
+    case L2R_CONNECT:
+    {
+      PALLOC (l2r_deactivate_req, L2R_DEACTIVATE_REQ);
+
+      l2rShrdPrm.state = L2R_DEACTIVATE;
+
+      PSENDX (L2R, l2r_deactivate_req);
+      break;
+    }
+
+/* Changed for OMAPS00049111 */
+#if defined (FF_SAT_E) || defined (_SIMULATION_)
+    case L2R_DEACTIVATED:
+      return -1;
+#endif /* FF_SAT_E */
+  }
+
+  return 0;
+}
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)    MODULE  : PSA_L2R                      |
+|                            ROUTINE : psaL2R_Enable                |
++-------------------------------------------------------------------+
+
+  PURPOSE : Enable L2R.
+
+*/
+
+GLOBAL SHORT psaL2R_Enable( T_DTI_CONN_LINK_ID  link_id, UBYTE peer )
+{
+  UBYTE dti_id = EXTRACT_DTI_ID( link_id );
+
+  TRACE_EVENT ("psaL2R_Enable()");
+
+  switch (l2rShrdPrm.state)
+  {
+    case L2R_CONNECTED:
+    {
+      PALLOC (l2r_dti_req, L2R_DTI_REQ);
+
+      l2r_dti_req->dti_conn = L2R_CONNECT_DTI;
+      l2rShrdPrm.uart_conn  = L2R_CONNECT_DTI;
+      l2r_dti_req->link_id  = link_id;
+
+      l2rShrdPrm.state = L2R_ENABLE;
+
+#if defined (FF_WAP) || defined (FF_GPF_TCPIP) || defined (FF_SAT_E)
+      if (Wap_Call)
+      {
+        strcpy((char*)l2r_dti_req->entity_name, PPP_NAME);
+        l2r_dti_req->dti_direction = DTI_CHANNEL_TO_HIGHER_LAYER;
+      }
+      else
+      {
+#endif /* FF_WAP OR FF_GPF_TCPIP or SAT E */
+        if (IS_SRC_BT(dti_id))
+        {
+          TRACE_EVENT("psa_l2rs - BT_ADAPTER Act");
+          strcpy((char*)l2r_dti_req->entity_name, BTI_NAME);
+          l2r_dti_req->dti_direction   = DTI_CHANNEL_TO_HIGHER_LAYER;
+        }
+        else if ((peer EQ DTI_ENTITY_PPPC) OR
+                  (peer EQ DTI_ENTITY_AAA)
+#ifdef FF_SAT_E
+                  OR (peer EQ DTI_ENTITY_SIM)
+#endif /* FF_SAT_E */
+                  )
+        {
+          strcpy((char*)l2r_dti_req->entity_name, dti_entity_name[peer].name);
+          l2r_dti_req->dti_direction = DTI_CHANNEL_TO_HIGHER_LAYER;
+        }
+        else
+        {
+          if (peer EQ DTI_ENTITY_UART)
+            strcpy((char*)l2r_dti_req->entity_name,UART_NAME);
+          else
+            strcpy((char*)l2r_dti_req->entity_name,PSI_NAME);
+          l2r_dti_req->dti_direction   = DTI_CHANNEL_TO_LOWER_LAYER;
+        }
+#if defined (FF_WAP) || defined (FF_GPF_TCPIP) || defined (FF_SAT_E)
+      }
+#endif /* FF_WAP || FF_GPF_TCPIP || SAT E */
+
+      if (dti_cntrl_set_conn_parms(link_id, DTI_ENTITY_L2R, DTI_INSTANCE_NOTPRESENT, DTI_SUB_NO_NOTPRESENT) EQ FALSE)
+      {
+        return -1;
+      }
+
+      PSENDX (L2R, l2r_dti_req);
+
+      break;
+    }
+
+    case L2R_ENABLE:
+    {
+      PALLOC (l2r_disc_req, L2R_DISC_REQ);
+
+      l2rShrdPrm.state = L2R_DISCONNECT;
+
+      cmhL2R_Failure();
+
+      PSENDX (L2R, l2r_disc_req);
+
+      break;
+    }
+
+    case L2R_ACTIVATE:
+    case L2R_CONNECT:
+    {
+      PALLOC (l2r_deactivate_req, L2R_DEACTIVATE_REQ);
+
+      l2rShrdPrm.state = L2R_DEACTIVATE;
+
+      cmhL2R_Failure();
+
+      PSENDX (L2R, l2r_deactivate_req);
+
+      break;
+    }
+
+    default:
+    {
+      cmhL2R_Failure();
+
+      return -1;
+    }
+  }
+
+  return 0;
+}
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)    MODULE  : PSA_L2R                      |
+|                            ROUTINE : psaL2R_Disable               |
++-------------------------------------------------------------------+
+
+  PURPOSE : Disable L2R.
+
+*/
+
+/* Not sure whether this function is needed or not !!
+
+  GLOBAL SHORT psaL2R_Disable(void)
+{
+  TRACE_FUNCTION ("psaL2R_Disable()");
+
+  switch (l2rShrdPrm.state)
+  {
+    case L2R_ENABLED:
+    {
+      PALLOC (l2r_dti_req, L2R_DTI_REQ);
+
+      l2r_dti_req->dti_conn = L2R_DISCONNECT_DTI;
+      l2rShrdPrm.uart_conn = L2R_DISCONNECT_DTI;
+
+      l2rShrdPrm.state = L2R_DISABLE;
+
+      PSENDX (L2R, l2r_dti_req);
+
+      break;
+    }
+
+    case L2R_CONNECTED:
+    case L2R_ENABLE:
+    {
+      PALLOC (l2r_disc_req, L2R_DISC_REQ);
+
+      l2rShrdPrm.state = L2R_DISCONNECT;
+
+      cmhL2R_Failure();
+
+      PSENDX (L2R, l2r_disc_req);
+
+      break;
+    }
+
+    case L2R_ACTIVATE:
+    case L2R_CONNECT:
+    {
+      PALLOC (l2r_deactivate_req, L2R_DEACTIVATE_REQ);
+
+      l2rShrdPrm.state = L2R_DEACTIVATE;
+
+      cmhL2R_Failure();
+
+      PSENDX (L2R, l2r_deactivate_req);
+
+      break;
+    }
+
+    default:
+    {
+      cmhL2R_Failure();
+
+      return -1;
+    }
+  }
+
+  return 0;
+}  */
+
+
+
+/*
++-------------------------------------------------------------------+
+| PROJECT : GSM-PS (6147)    MODULE  : PSA_L2R                      |
+|                            ROUTINE : psaL2R_ESC                   |
++-------------------------------------------------------------------+
+
+  PURPOSE : ESC.
+
+*/
+
+GLOBAL SHORT psaL2R_ESC( UBYTE src_id )
+{
+#ifdef FF_PSI
+  T_ACI_DTI_PRC_PSI *src_infos = find_element (psi_src_params, src_id, cmhPSItest_srcId);
+#endif /*FF_PSI*/
+  TRACE_EVENT ("psaL2R_ESC()");
+
+
+  switch (l2rShrdPrm.state)
+  {
+    case L2R_ENABLED:
+    {
+    T_DTI_ENTITY_ID entity_list[] = {DTI_ENTITY_ACI};
+#ifdef FF_PSI
+      if (src_infos NEQ NULL)
+        dti_cntrl_est_dpath_indirect ( src_id,
+                                     entity_list,
+                                     1,
+                                     SPLIT,
+                                     atiPSI_dti_cb,
+                                     DTI_CPBLTY_CMD,
+                                     DTI_CID_NOTPRESENT);
+      else
+#endif /*FF_PSI*/
+        dti_cntrl_est_dpath_indirect ( src_id,
+                                     entity_list,
+                                     1,
+                                     SPLIT,
+                                     atiUART_dti_cb,
+                                     DTI_CPBLTY_CMD,
+                                     DTI_CID_NOTPRESENT);
+
+      l2rShrdPrm.state = L2R_ESCAPE;
+      break;
+    }
+    case L2R_CONNECTED:
+    case L2R_ENABLE:
+    {
+      PALLOC (l2r_disc_req, L2R_DISC_REQ);
+
+      l2rShrdPrm.state = L2R_DISCONNECT;
+
+      cmhL2R_Failure();
+
+      PSENDX (L2R, l2r_disc_req);
+
+      break;
+    }
+
+    case L2R_ACTIVATE:
+    case L2R_CONNECT:
+    {
+      PALLOC (l2r_deactivate_req, L2R_DEACTIVATE_REQ);
+
+      l2rShrdPrm.state = L2R_DEACTIVATE;
+
+      cmhL2R_Failure();
+
+      PSENDX (L2R, l2r_deactivate_req);
+
+      break;
+    }
+
+    default:
+    {
+      cmhL2R_Failure();
+
+      break;
+    }
+  }
+
+  return 0;
+}
+
+#endif /* DTI */
+/*==== EOF ========================================================*/