view src/g23m-gprs/upm/upm_dispatcher_gsm.c @ 375:e80e43185ca1

doc/Modem-configs update: we now have both Standard Modem and VPM functionality choices
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 12 Jan 2018 07:22:16 +0000
parents 2cf312e56ee7
children
line wrap: on
line source

/*----------------------------------------------------------------------------
|  Project :  3G PS
|  Module  :  UPM
+-----------------------------------------------------------------------------
|             Copyright 2003 Texas Instruments.
|             All rights reserved. 
| 
|             This file is confidential and a trade secret of Texas 
|             Instruments .
|             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. 
+-----------------------------------------------------------------------------
| Purpose:    This module implements the process dispatcher for GSM primitives
|             in the User Plane Manager (UPM) entity.
|             For design details, see:
|             8010.939 UPM Detailed Specification
+---------------------------------------------------------------------------*/

/*==== DECLARATION CONTROL =================================================*/


/*==== INCLUDES =============================================================*/

#include "upm.h"

#ifndef UPM_WITHOUT_USER_PLANE
#include "upm_dti_output_handler.h"
#endif

/*==== CONSTS ===============================================================*/

/*==== TYPES ================================================================*/

/*==== LOCALS ===============================================================*/

/*==== PRIVATE FUNCTIONS ====================================================*/

/*==== PUBLIC FUNCTIONS =====================================================*/

/*
+------------------------------------------------------------------------------
| Function    : upm_disp_mmpm_sequence_ind
+------------------------------------------------------------------------------
| Description : Dispatch MMPM_SEQUENCE_IND
|
| Parameters  : prim                         - received primitive
+------------------------------------------------------------------------------
*/
void upm_disp_mmpm_sequence_ind (T_MMPM_SEQUENCE_IND *prim)
{
  (void)TRACE_FUNCTION("upm_disp_mmpm_sequence_ind");

  upm_sndcp_dispatch_mmpm_sequence_ind(prim);
}

/*
+------------------------------------------------------------------------------
| Function    : upm_disp_sn_activate_cnf
+------------------------------------------------------------------------------
| Description : Dispatch SN_ACTIVATE_CNF
|
| Parameters  : prim                       - received primitive
+------------------------------------------------------------------------------
*/
void upm_disp_sn_activate_cnf (T_SN_ACTIVATE_CNF *prim)
{
  struct T_CONTEXT_DATA *context;

  (void)TRACE_FUNCTION("upm_disp_sn_activate_cnf");

  /* Find context data using NSAPI as index */
  context = upm_get_context_data_from_nsapi(prim->nsapi);

  if (context != NULL) {
    /* Forward primitive to SNDCP Control */
    upm_sndcp_control(context, UPM_P_SN_ACTIVATE_CNF, prim);
  } else {
    (void)TRACE_ERROR("Received SN_ACTIVATE_CNF for non-existing context "
                      "- discarded!");
  }
}

/*
+------------------------------------------------------------------------------
| Function    : upm_disp_sn_count_cnf
+------------------------------------------------------------------------------
| Description : Dispatch SN_COUNT_CNF
|
| Parameters  : prim                       - received primitive
+------------------------------------------------------------------------------
*/
void upm_disp_sn_count_cnf (T_SN_COUNT_CNF *prim)
{
  struct T_CONTEXT_DATA *ptr_context_data;

  (void)TRACE_FUNCTION("upm_disp_sn_count_cnf");

  ptr_context_data = upm_get_context_data_from_nsapi(prim->nsapi);
  if (ptr_context_data != NULL) {
    /* Forward primitive to SNDCP Control */
    upm_sndcp_dispatch_sn_count_cnf(prim);
  } else {
    (void)TRACE_ERROR("Received SN_COUNT_CNF for non-existing context "
                      "- discarded!");
  }
}

/*
+------------------------------------------------------------------------------
| Function    : upm_disp_sn_deactivate_cnf
+------------------------------------------------------------------------------
| Description : Dispatch SN_DEACTIVATE_CNF
|
| Parameters  : prim                       - received primitive
+------------------------------------------------------------------------------
*/
void upm_disp_sn_deactivate_cnf (T_SN_DEACTIVATE_CNF *prim)
{
  struct T_CONTEXT_DATA *ptr_context_data;

  (void)TRACE_FUNCTION("upm_disp_sn_deactivate_cnf");

  ptr_context_data = upm_get_context_data_from_nsapi(prim->nsapi);
  if (ptr_context_data != NULL) {
    /* Forward primitive to SNDCP Control */
    upm_sndcp_control(ptr_context_data, UPM_P_SN_DEACTIVATE_CNF, NULL);

    upm_check_for_released_context_and_release(ptr_context_data);
  }
}

/*
+------------------------------------------------------------------------------
| Function    : upm_disp_sn_modify_cnf
+------------------------------------------------------------------------------
| Description : Dispatch SN_MODIFY_CNF
|
| Parameters  : prim                      - received primitive
+------------------------------------------------------------------------------
*/
void upm_disp_sn_modify_cnf (T_SN_MODIFY_CNF *prim)
{
  struct T_CONTEXT_DATA *context;

  (void)TRACE_FUNCTION("upm_disp_sn_modify_cnf");

  /* Find context data using NSAPI as index */
  context = upm_get_context_data_from_nsapi(prim->nsapi);

  if (context != NULL) {
    /* Forward primitive to SNDCP Control */
    upm_sndcp_control(context, UPM_P_SN_MODIFY_CNF, prim);
  } else {
    (void)TRACE_ERROR("Received SN_MODIFY_CNF for non-existing context "
                      "- discarded!");
  }
}

/*==== END OF FILE ==========================================================*/