diff gsm-fw/g23m-aci/aci/dcm_handle_message.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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gsm-fw/g23m-aci/aci/dcm_handle_message.c	Sun Oct 12 01:45:14 2014 +0000
@@ -0,0 +1,99 @@
+/*
++-----------------------------------------------------------------------------
+|  Project :  GSM-F&D (8411)
+|  Modul   :  ACI
++-----------------------------------------------------------------------------
+|  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.
++-----------------------------------------------------------------------------
+|  Description :  DCM handle_msg function, which is called when DCM
+|                 receives a new message by application or rAT_function.
++-----------------------------------------------------------------------------
+*/
+
+
+/***********************************  INCLUDES ********************************************/
+#include "aci_all.h"
+#include "dcm.h"
+#include "dcm_utils.h"
+#include "dcm_state.h"
+#include "dcm_env.h"
+
+/**************************** LOCAL VARIABLE DEFINITION  ***********************************/
+/**************************** EXTERN VARIABLE DEFINITION  **********************************/
+extern T_DCM_ENV_CTRL_BLK	*dcm_env_ctrl_blk_p;
+
+/**************************** LOCAL FUCNTION DEFINITION  ***********************************/
+/************************** EXTERN FUCNTION DEFINITION  ************************************/
+
+
+/******************************************************************************************
+*  Function      : dcm_handle_message
+*  Description   : Called every time DCM is in WAITING state or
+*                  When receiving message from Application or rAT_function
+*  Parameter     :	 T_DCM_HDR
+*                    -Pointer on the header of the message.
+*  Return 	     : T_DCM_RET DCM
+*                    -DCM Result : DCM_OK, DCM_NOT_READY.
+*  History       : 0001 03/09/17 CJH Created
+********************************************************************************************/
+T_DCM_RET dcm_handle_message(T_DCM_HDR *msg_p)
+{
+  T_DCM_GET_CURRENT_CONN_REQ_MSG   *current_conn_info;
+
+  TRACE_FUNCTION("DCM: dcm_handle_message()");
+  dcm_display_message(msg_p->msg_id);
+  dcm_dispay_state((U8)dcm_env_ctrl_blk_p->state[0],
+                   (U8)dcm_env_ctrl_blk_p->substate[0]);
+
+  if (msg_p != NULL)
+  {
+    /* get current conn req is always received regardless of current state..*/
+    if(msg_p->msg_id == DCM_GET_CURRENT_CONN_REQ_MSG)
+    {
+      TRACE_EVENT("DCM: DCM_GET_CURRENT_CONN_REQ_MSG");
+      current_conn_info = (T_DCM_GET_CURRENT_CONN_REQ_MSG*)msg_p;
+      dcm_process_get_current_conn_event(current_conn_info);
+      return DCM_OK;
+    }
+    switch (dcm_env_ctrl_blk_p->state[0])
+    {
+      case DCM_IDLE:
+        TRACE_EVENT("DCM: DCM_IDLE") ;
+        /* there is no current action */
+        return dcm_idle(msg_p);
+
+      case DCM_ACTIVATING_CONN:
+        TRACE_EVENT("DCM: DCM_ACTIVATING_CONN") ;
+        /* An IP User have asked the opening of a connection */
+        return dcm_activating_conn(msg_p);
+
+      case DCM_CONN_ACTIVATED:
+        TRACE_EVENT("DCM: DCM_CONN_ACTIVATED") ;
+        /* At leat, on connection is active */
+        return dcm_conn_activated(msg_p);
+
+      case DCM_CLOSING_CONN:
+        TRACE_EVENT("DCM: DCM_CLOSING_CONN") ;
+        /* An IP User have asked the closing of a connection */
+        return dcm_closing_conn(msg_p);
+
+      default:
+        TRACE_EVENT("DCM: unknown state") ;
+        return DCM_NOT_READY;
+    }
+  }
+  else
+  {
+    TRACE_ERROR("DCM: NULL message") ;
+    return DCM_INVALID_PARAMETER;
+  }
+}