view src/g23m-fad/l2r/tra_upp.c @ 32:b6c8dd9a1b02
components: switch to new Nucleus
author
Mychaela Falconia <falcon@freecalypso.org>
date
Mon, 16 Jul 2018 05:19:45 +0000 (2018-07-16)
parents
d393cd9bb723
children
line source
+ − /*
+ − +-----------------------------------------------------------------------------
+ − | Project : CSD (8411)
+ − | Modul : tra_upp.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 primitives for the component TRA
+ − +-----------------------------------------------------------------------------
+ − */
+ −
+ − #ifndef TRA_UPP_C
+ − #define TRA_UPP_C
+ − #endif
+ −
+ − #define ENTITY_L2R
+ −
+ − /*==== INCLUDES ===================================================*/
+ −
+ − #include "typedefs.h"
+ − #include "pconst.cdg"
+ − #include "vsi.h"
+ − #include "macdef.h"
+ − #include "custom.h"
+ − #include "gsm.h"
+ − #include "prim.h"
+ − #include "pei.h"
+ − #include "tok.h"
+ − #include "dti.h"
+ −
+ − #include "cl_ribu.h"
+ − #include "tra_pei.h"
+ − #include "tra.h"
+ −
+ − /*==== CONST =======================================================*/
+ −
+ − /*==== TYPES =======================================================*/
+ −
+ − /*==== VAR EXPORT ==================================================*/
+ −
+ − /*==== VAR LOCAL ===================================================*/
+ −
+ − /*==== FUNCTIONS ===================================================*/
+ −
+ − /*
+ − +------------------------------------------------------------------------------
+ − | Function : rcv_ra_ready_ind
+ − +------------------------------------------------------------------------------
+ − | Description : Process primitive RA_READY_IND received from RA.
+ − | This function is called if the RA_READY_IND primtive
+ − | is received
+ − |
+ − | Parameters : ra_ready_ind -
+ − |
+ − |
+ − | Return : -
+ − +------------------------------------------------------------------------------
+ − */
+ −
+ − GLOBAL void rcv_ra_ready_ind(T_RA_READY_IND *ra_ready_ind)
+ − {
+ − T_TRA_UP *dul = &tra_data->up;
+ −
+ − #ifdef _SIMULATION_
+ − TRACE_EVENT_P1 ("rcv_ra_ready_ind(), req_frames: 0x%x", ra_ready_ind->req_frames);
+ − PACCESS (ra_ready_ind);
+ − #endif
+ −
+ − dul->req_frames = ra_ready_ind->req_frames;
+ −
+ − switch (GET_STATE (UP))
+ − {
+ − case UP_IDLE:
+ − SET_STATE (UP, UP_WAIT);
+ − break;
+ −
+ − case UP_SEND:
+ − snd_data_to_RA();
+ − if (dul->Prim->desc_list2.first EQ 0)
+ − {
+ − if (dul->Prim NEQ NULL)
+ − {
+ − PFREE(dul->Prim);
+ − dul->Prim = NULL;
+ − }
+ − up_start_dti_flow();
+ − SET_STATE (UP, UP_IDLE);
+ − }
+ − break;
+ − }
+ − #ifdef _SIMULATION_
+ − PFREE (ra_ready_ind);
+ − #endif
+ − }
+ −
+ − /*
+ − +------------------------------------------------------------------------------
+ − | Function : sig_dti_tra_up_data_received_ind
+ − +------------------------------------------------------------------------------
+ − | Description : Process primitive DTI2_DATA_REQ received from CSDIWF.
+ − |
+ − | Parameters : dti_data_req
+ − |
+ − |
+ − | Return : -
+ − +------------------------------------------------------------------------------
+ − */
+ −
+ − GLOBAL void sig_dti_tra_up_data_received_ind(T_DTI2_DATA_REQ *dti_data_req)
+ − {
+ − T_TRA_UP *dul = &tra_data->up;
+ −
+ − TRACE_FUNCTION ("sig_dti_tra_up_data_received_ind()");
+ −
+ − PACCESS (dti_data_req);
+ −
+ − dul->Prim = dti_data_req;
+ −
+ − dul->sa = dti_data_req->parameters.st_lines.st_line_sa;
+ − dul->sb = dti_data_req->parameters.st_lines.st_line_sb;
+ − dul->x = dti_data_req->parameters.st_lines.st_flow;
+ −
+ − /*
+ − TRACE_EVENT_P1("new data: %02X", dti_data_req->desc_list2.list_len);
+ − */
+ −
+ − if (GET_STATE(DTI) NEQ DTI_CLOSED)
+ − {
+ − /*
+ − * do not send flow control primitives automatically
+ − */
+ − dti_stop(l2r_hDTI, TRA_DTI_UP_INSTANCE, TRA_DTI_UP_INTERFACE, TRA_DTI_UP_CHANNEL);
+ − }
+ −
+ − /* Detect break request */
+ − if (dti_data_req->parameters.st_lines.st_break_len NEQ DTI_BREAK_OFF)
+ − {
+ − USHORT break_len = dti_data_req->parameters.st_lines.st_break_len;
+ −
+ − PFREE(dti_data_req); /* no more used */
+ −
+ − switch (GET_STATE (UP))
+ − {
+ − case UP_SEND:
+ − /*
+ − * No more data to send
+ − */
+ − SET_STATE (UP, UP_IDLE);
+ − /* Fall through */
+ −
+ − case UP_IDLE:
+ − case UP_WAIT:
+ − sig_up_tra_mgt_break_ind(break_len);
+ − up_start_dti_flow();
+ − break;
+ − }
+ − return; /* xxxxx - send data or do not send it??! */
+ − }
+ −
+ − switch (GET_STATE (UP))
+ − {
+ − case UP_SEND:
+ − TRACE_EVENT("still in UP_SEND!");
+ − break;
+ −
+ − case UP_IDLE:
+ − SET_STATE (UP, UP_SEND);
+ − break;
+ −
+ − case UP_WAIT:
+ − snd_data_to_RA();
+ − if (dti_data_req->desc_list2.list_len EQ 0) /* data is copied completely */
+ − {
+ − up_start_dti_flow();
+ − SET_STATE (UP, UP_IDLE);
+ − PFREE(dti_data_req);
+ − dul->Prim = NULL;
+ − }
+ − else
+ − {
+ − SET_STATE (UP, UP_SEND);
+ − }
+ − break;
+ − }
+ − }
+ −