FreeCalypso > hg > fc-magnetite
diff src/g23m-fad/l2r/l2r_pei.c @ 174:90eb61ecd093
src/g23m-fad: initial import from TCS3.2/LoCosto
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Wed, 12 Oct 2016 05:40:46 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/g23m-fad/l2r/l2r_pei.c Wed Oct 12 05:40:46 2016 +0000 @@ -0,0 +1,892 @@ +/* ++----------------------------------------------------------------------------- +| Project : CSD (8411) +| Modul : L2r_pei.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 process body interface +| for the component L2R of the base station ++----------------------------------------------------------------------------- +*/ + +#ifndef L2R_PEI_C +#define L2R_PEI_C +#endif + +#define ENTITY_L2R +#define ENTITY_TRA + +/*==== INCLUDES ===================================================*/ + +#include <string.h> + +#include "typedefs.h" +#include "pconst.cdg" +#include "vsi.h" +#include "macdef.h" +#include "custom.h" +#include "gsm.h" +#include "tools.h" +#include "cus_l2r.h" +#include "cnf_l2r.h" +#include "mon_l2r.h" +#include "prim.h" +#include "pei.h" +#include "tok.h" +#include "dti.h" /* functionality of the dti library */ + +#include "cl_ribu.h" +#include "l2r.h" +#include "tra_pei.h" + +/*==== CONST ======================================================*/ +/*==== VAR EXPORT =================================================*/ + +GLOBAL T_MODE l2r_data_mode = NONTRANSP; /* = default */ + +GLOBAL T_TRA_DATA *tra_data; +GLOBAL T_TRA_DATA *tra_data_first_elem; +GLOBAL DTI_HANDLE l2r_hDTI; /* DTI connection for DTI library */ + +GLOBAL T_HANDLE l2r_handle; +GLOBAL T_HANDLE hCommCTRL = VSI_ERROR; /* Controller Communication */ +GLOBAL T_HANDLE hCommRLP = VSI_ERROR; /* RLP Communication */ + +#ifdef _SIMULATION_ +GLOBAL T_HANDLE hCommRA = VSI_ERROR; /* RA Communication */ +#endif + +LOCAL T_HANDLE hCommL2R = VSI_ERROR; /* L2R Communication (used by relay entity) */ + +/* + * instance data base + */ +GLOBAL T_L2R_DATA l2r_data_base [L2R_INSTANCES], *l2r_data; +GLOBAL ULONG l2r_data_magic_num; + +/*==== VAR LOCAL ==================================================*/ + +LOCAL BOOL first_access = TRUE; +LOCAL T_MONITOR l2r_mon; + +/* ++------------------------------------------------------------------------------ +| Function : pei_not_supported ++------------------------------------------------------------------------------ +| Description : An unsupported primitive is received. +| +| Parameters : data - +| +| +| Return : - ++------------------------------------------------------------------------------ +*/ + + +LOCAL void pei_not_supported (void *data) +{ + TRACE_FUNCTION ("pei_not_supported()"); + PFREE (data); +} + +/* + * + * Use MAK_FUNC_0 for primitives which contains no SDU. + * + * Use MAK_FUNC_S for primitives which contains a SDU. + */ + +/* + * jumptable for the entity service access point. Contains + * the processing-function addresses and opcodes of + * request and response primitives. + * + */ + +LOCAL const T_FUNC l2r_table[] = { + MAK_FUNC_0( mgt_l2r_activate_req , L2R_ACTIVATE_REQ ), + MAK_FUNC_0( mgt_l2r_deactivate_req , L2R_DEACTIVATE_REQ ), + MAK_FUNC_0( mgt_l2r_connect_req , L2R_CONNECT_REQ ), + MAK_FUNC_0( mgt_l2r_disc_req , L2R_DISC_REQ ), + MAK_FUNC_N( pei_not_supported , 0 ), + MAK_FUNC_N( pei_not_supported , 0 ), + MAK_FUNC_N( pei_not_supported , 0 ), + MAK_FUNC_0( mgt_l2r_dti_req , L2R_DTI_REQ ) +}; + +LOCAL const T_FUNC tra_table[] = { + MAK_FUNC_0( mgt_tra_activate_req , TRA_ACTIVATE_REQ ), + MAK_FUNC_0( mgt_tra_deactivate_req , TRA_DEACTIVATE_REQ ), + MAK_FUNC_0( mgt_tra_dti_req , TRA_DTI_REQ ) +}; + +LOCAL void pei_dti_connect_req(T_DTI2_CONNECT_REQ *dti_connect_req); +LOCAL void pei_dti_connect_cnf(T_DTI2_CONNECT_CNF *dti_connect_cnf); +LOCAL void pei_dti_connect_ind(T_DTI2_CONNECT_IND *dti_connect_ind); +LOCAL void pei_dti_connect_res(T_DTI2_CONNECT_RES *dti_connect_res); +LOCAL void pei_dti_disconnect_req(T_DTI2_DISCONNECT_REQ *dti_disconnect_req); +LOCAL void pei_dti_disconnect_ind(T_DTI2_DISCONNECT_IND *dti_disconnect_ind); +LOCAL void pei_dti_data_req(T_DTI2_DATA_REQ *dti_data_req); +LOCAL void pei_dti_getdata_req(T_DTI2_GETDATA_REQ *dti_getdata_req); +LOCAL void pei_dti_data_ind(T_DTI2_DATA_IND *dti_data_ind); +LOCAL void pei_dti_ready_ind(T_DTI2_READY_IND *dti_ready_ind); +LOCAL void pei_dti_data_test_req(T_DTI2_DATA_TEST_REQ *dti_data_test_req); +LOCAL void pei_dti_data_test_ind(T_DTI2_DATA_TEST_IND *dti_data_test_ind); + +LOCAL const T_FUNC dti_ul_table[] = { + MAK_FUNC_0( pei_dti_connect_req , DTI2_CONNECT_REQ ), + MAK_FUNC_0( pei_dti_connect_res , DTI2_CONNECT_RES ), + MAK_FUNC_0( pei_dti_disconnect_req , DTI2_DISCONNECT_REQ ), + MAK_FUNC_0( pei_dti_getdata_req , DTI2_GETDATA_REQ ), + MAK_FUNC_0( pei_dti_data_req , DTI2_DATA_REQ ) +#ifdef _SIMULATION_ + , + MAK_FUNC_S( pei_dti_data_test_req , DTI2_DATA_TEST_REQ ) +#endif /* _SIMULATION_ */ +}; + +LOCAL const T_FUNC dti_dl_table[] = { + MAK_FUNC_0( pei_dti_connect_ind , DTI2_CONNECT_IND ), + MAK_FUNC_0( pei_dti_connect_cnf , DTI2_CONNECT_CNF ), + MAK_FUNC_0( pei_dti_disconnect_ind , DTI2_DISCONNECT_IND ), + MAK_FUNC_0( pei_dti_ready_ind , DTI2_READY_IND ), + MAK_FUNC_0( pei_dti_data_ind , DTI2_DATA_IND ) +#ifdef _SIMULATION_ + , + MAK_FUNC_S( pei_dti_data_test_ind , DTI2_DATA_TEST_IND ) +#endif /* _SIMULATION_ */ +}; + +LOCAL const T_FUNC ra_table[] = { + MAK_FUNC_0( rcv_ra_ready_ind , RA_READY_IND ), + MAK_FUNC_S( rcv_ra_data_ind , RA_DATA_IND ), +}; + +LOCAL const T_FUNC rlp_table[] = { + MAK_FUNC_0( mgt_rlp_detach_cnf , RLP_DETACH_CNF ), + MAK_FUNC_0( mgt_rlp_connect_ind , RLP_CONNECT_IND ), + MAK_FUNC_0( mgt_rlp_connect_cnf , RLP_CONNECT_CNF ), + MAK_FUNC_0( mgt_rlp_disc_ind , RLP_DISC_IND ), + MAK_FUNC_0( mgt_rlp_disc_cnf , RLP_DISC_CNF ), + MAK_FUNC_0( mgt_rlp_reset_ind , RLP_RESET_IND ), + MAK_FUNC_0( mgt_rlp_reset_cnf , RLP_RESET_CNF ), + MAK_FUNC_0( up_rlp_ready_ind , RLP_READY_IND ), + MAK_FUNC_S( dn_rlp_data_ind , RLP_DATA_IND ), + MAK_FUNC_S( mgt_rlp_ui_ind , RLP_UI_IND ), + MAK_FUNC_0( mgt_rlp_xid_ind , RLP_XID_IND ), + MAK_FUNC_0( mgt_rlp_error_ind , RLP_ERROR_IND ), + MAK_FUNC_0( mgt_rlp_statistic_ind , RLP_STATISTIC_IND ) +}; + +/* ++------------------------------------------------------------------------------ +| Function : pei_primitive ++------------------------------------------------------------------------------ +| Description : Process protocol specific primitive. +| +| Parameters : ptr - +| +| +| Return : PEI_ERROR - +| PEI_OK - ++------------------------------------------------------------------------------ +*/ +LOCAL SHORT pei_primitive (void * ptr) +{ + T_PRIM * prim = ptr; + /* + * @ADAPT@ + * | | + * Controller/UL UPPER LAYER + * | | + * v v + * +-----------(l2r)------(tra)----+ + * | | | + * | L2R | TRA | + * | | | + * +-------------^----------^------+ + * | | + * RLP RA LOWER LAYER + * | | + * + */ + + TRACE_FUNCTION ("pei_primitive()"); + + if (prim NEQ NULL) + { + ULONG opc = prim->custom.opc; + USHORT n; + const T_FUNC *table; + + VSI_PPM_REC ((T_PRIM_HEADER *)prim, __FILE__, __LINE__); + + PTRACE_IN (opc); + l2r_data = GET_INSTANCE (*primData); + + switch (SAP_NR(opc)) + { + case SAP_NR(L2R_UL): table = l2r_table; n = TAB_SIZE (l2r_table); break; + case SAP_NR(TRA_UL): table = tra_table; n = TAB_SIZE (tra_table); break; + case SAP_NR(RLP_DL): table = rlp_table; n = TAB_SIZE (rlp_table); break; + case DTI2_UL: + { + table = dti_ul_table; n = TAB_SIZE (dti_ul_table); + /* + * to be able to distinguish DTI1/DTI2 opcodes, + * the ones for DTI2 start at 0x50 + */ + opc -= 0x50; + } + break; + case DTI2_DL: + { + table = dti_dl_table; n = TAB_SIZE (dti_dl_table); + /* + * to be able to distinguish DTI1/DTI2 opcodes, + * the ones for DTI2 start at 0x50 + */ + opc -= 0x50; + } + break; + case SAP_NR(RA_DL ): table = ra_table; n = TAB_SIZE (ra_table); break; + default : table = NULL; n = 0; break; + } + + if (table != NULL ) + { + if (PRIM_NR(opc) < n) + { + table += PRIM_NR(opc); +#ifdef PALLOC_TRANSITION + P_SDU(prim) = table->soff ? (T_sdu*) (((char*)&prim->data) + table->soff) : 0; + P_LEN(prim) = table->size + sizeof (T_PRIM_HEADER); +#endif /* PALLOC_TRANSITION */ + JUMP (table->func) (P2D(prim)); + } + else + { + pei_not_supported (P2D(prim)); + } + return PEI_OK; + } + /* + * Primitive is no GSM Primitive + * then forward to the environment + */ + +#ifdef GSM_ONLY + PFREE (P2D(prim)) + + return PEI_ERROR; +#else + if (opc & SYS_MASK) + vsi_c_primitive (VSI_CALLER prim); + else + { + PFREE (P2D(prim)); + return PEI_ERROR; + } +#endif /* GSM_ONLY */ + } + return PEI_OK; +} + +/* ++------------------------------------------------------------------------------ +| Function: pei_sig_callback ++------------------------------------------------------------------------------ +| PURPOSE : Callback function for DTILIB ++------------------------------------------------------------------------------ +*/ + +LOCAL void pei_sig_callback(U8 instance, U8 interfac, U8 channel, + U8 reason, T_DTI2_DATA_IND *dti_data_ind) +{ + TRACE_FUNCTION("pei_sig_callback"); + + if (l2r_data_mode EQ NONTRANSP) + { + +#ifdef _SIMULATION_ + if (interfac NEQ L2R_DTI_UP_INTERFACE || channel NEQ L2R_DTI_UP_CHANNEL) + { + TRACE_ERROR("[PEI_SIG_CALLBACK] channel or interface not valid!"); + return; /* error, not found */ + } +#endif /* _SIMULATION_ */ + + if (l2r_hDTI NEQ D_NO_DATA_BASE) + { + switch (reason) + { + case DTI_REASON_CONNECTION_OPENED: + sig_dti_mgt_connection_opened_ind(); + break; + + case DTI_REASON_CONNECTION_CLOSED: + sig_dti_mgt_connection_closed_ind(); + break; + + case DTI_REASON_DATA_RECEIVED: + PACCESS (dti_data_ind); + { + PPASS (dti_data_ind, dti_data_req, DTI2_DATA_REQ); + sig_dti_up_data_received_ind(dti_data_req); + } + break; + + case DTI_REASON_TX_BUFFER_FULL: + sig_dti_dn_tx_buffer_full_ind(); + break; + + case DTI_REASON_TX_BUFFER_READY: + sig_dti_dn_tx_buffer_ready_ind(); + break; + + default: + TRACE_ERROR("unknown DTILIB reason parameter"); + break; + } + } + else + { + TRACE_ERROR("Pointer to DTILIB database not existing"); + } + } + else if (l2r_data_mode EQ TRANSP) + { + +#ifdef _SIMULATION_ + if (interfac NEQ TRA_DTI_UP_INTERFACE || channel NEQ TRA_DTI_UP_CHANNEL) + { + TRACE_ERROR("[PEI_SIG_CALLBACK] channel or interface not valid!"); + return; /* error, not found */ + } +#endif /* _SIMULATION_ */ + + if (l2r_hDTI NEQ D_NO_DATA_BASE) + { + switch (reason) + { + case DTI_REASON_CONNECTION_OPENED: + sig_dti_tra_mgt_connection_opened_ind(); + break; + + case DTI_REASON_CONNECTION_CLOSED: + sig_dti_tra_mgt_connection_closed_ind(); + break; + + case DTI_REASON_DATA_RECEIVED: + PACCESS (dti_data_ind); + { + PPASS (dti_data_ind, dti_data_req, DTI2_DATA_REQ); + sig_dti_tra_up_data_received_ind(dti_data_req); + } + break; + + case DTI_REASON_TX_BUFFER_FULL: + sig_dti_tra_dn_tx_buffer_full_ind(); + break; + + case DTI_REASON_TX_BUFFER_READY: + sig_dti_tra_dn_tx_buffer_ready_ind(); + break; + + default: + TRACE_ERROR("unknown DTILIB reason parameter"); + break; + } + } + else + { + TRACE_ERROR("Pointer to DTILIB database not existing"); + } + } +} /*lint !e715 instance, interfac, channel not referenced */ + +/* ++------------------------------------------------------------------------------ +| Function : pei_init ++------------------------------------------------------------------------------ +| Description : Initialize Protocol Stack Entity +| +| Parameters : handle - +| +| +| Return : PEI_OK - +| PEI_ERROR - ++------------------------------------------------------------------------------ +*/ + + #define CTRL_NAME ACI_NAME + +LOCAL SHORT pei_init (T_HANDLE handle) +{ + BOOL ret = PEI_OK; + + tra_data = NULL; + + l2r_handle = handle; + + TRACE_FUNCTION ("pei_init()"); + + if (hCommCTRL < VSI_OK) + { + if ((hCommCTRL = vsi_c_open (VSI_CALLER CTRL_NAME)) < VSI_OK) + return PEI_ERROR; + } + + if (hCommRLP < VSI_OK) + { + if ((hCommRLP = vsi_c_open (VSI_CALLER RLP_NAME)) < VSI_OK) + return PEI_ERROR; + } + + if (hCommL2R < VSI_OK) + { + if ((hCommL2R = vsi_c_open (VSI_CALLER L2R_NAME)) < VSI_OK) + return PEI_ERROR; + } + +#ifdef _SIMULATION_ + if (hCommRA < VSI_OK) + { + if ((hCommRA = vsi_c_open (VSI_CALLER RA_NAME)) < VSI_OK) + return PEI_ERROR; + } +#endif + + /* + * initialize dtilib for this entity + */ + l2r_hDTI = dti_init(L2R_INSTANCES, handle, DTI_DEFAULT_OPTIONS, pei_sig_callback); + + if(!l2r_hDTI) + return PEI_ERROR; + + l2r_data = &l2r_data_base[0]; + l2r_data_magic_num = 0; /* memory is not yet initialized */ + INIT_STATE (DTI, DTI_CLOSED); + mgt_init(&l2r_data->mgt); + dn_init(&l2r_data->dn); + up_init(&l2r_data->up); + tra_data_first_elem = (T_TRA_DATA *) &l2r_data_base[0]; + return (ret); +} + +/* ++------------------------------------------------------------------------------ +| Function : pei_timeout ++------------------------------------------------------------------------------ +| Description : Process timeout +| +| Parameters : index - +| +| +| Return : PEI_OK - +| ++------------------------------------------------------------------------------ +*/ +EXTERN void tim_tup_snd (void); + +LOCAL SHORT pei_timeout (USHORT index) +{ + if (index EQ TIMER_TUP_SND) + { + tim_tup_snd (); + } + return PEI_OK; +} + +/* ++------------------------------------------------------------------------------ +| Function : pei_signal ++------------------------------------------------------------------------------ +| Description : Functional interface to signal a primitive. +| +| Parameters : opc - +| primData - +| +| +| Return : PEI_OK ++------------------------------------------------------------------------------ +*/ + +LOCAL SHORT pei_signal (ULONG opc, void *primData) +{ +#ifdef OPTION_SIGNAL + + l2r_data = GET_INSTANCE (prim); + switch (opc) + { + case RA_READY_IND: + rcv_ra_ready_ind + ( + (T_RA_READY_IND *)primData + ); + break; + + case RA_DATA_IND: + rcv_ra_data_ind + ( + (T_RA_DATA_IND *)primData + ); + break; + + case RA_BREAK_IND: + rcv_ra_break_ind + ( + (T_RA_BREAK_IND *)primData + ); + break; + } +#endif /* OPTION_SIGNAL */ + return PEI_OK; +} + +/* ++------------------------------------------------------------------------------ +| Function : pei_exit ++------------------------------------------------------------------------------ +| Description : Close Resources and terminate +| +| Parameters : - +| +| +| Return : PEI_OK - ++------------------------------------------------------------------------------ +*/ + +LOCAL SHORT pei_exit (void) +{ + TRACE_FUNCTION ("pei_exit()"); + + /* + * clean up vsi communication + */ + vsi_c_close (VSI_CALLER hCommCTRL); + hCommCTRL = VSI_ERROR; + + vsi_c_close (VSI_CALLER hCommRLP); + hCommRLP = VSI_ERROR; + +#ifdef _SIMULATION_ + vsi_c_close (VSI_CALLER hCommRA); + hCommRA = VSI_ERROR; +#endif + + if (GET_STATE (DTI) NEQ DTI_CLOSED) + { + if (l2r_data_mode EQ NONTRANSP) + { + dti_close(l2r_hDTI, L2R_DTI_UP_DEF_INSTANCE, L2R_DTI_UP_INTERFACE, L2R_DTI_UP_CHANNEL, FALSE); + SET_STATE (DTI, DTI_CLOSED); + } + else if (l2r_data_mode EQ TRANSP) + { + dti_close(l2r_hDTI, TRA_DTI_UP_INSTANCE, TRA_DTI_UP_INTERFACE, TRA_DTI_UP_CHANNEL, FALSE); + SET_STATE (DTI, DTI_CLOSED); + } + } + + vsi_c_close (VSI_CALLER hCommL2R); + hCommL2R = VSI_ERROR; + + /* + * Shut down dtilib communication + */ + dti_deinit(l2r_hDTI); + return PEI_OK; +} + +/* ++------------------------------------------------------------------------------ +| Function : pei_config ++------------------------------------------------------------------------------ +| Description : Dynamic Configuration +| +| Parameters : inString - +| +| +| Return : PEI_OK - ++------------------------------------------------------------------------------ +*/ + +LOCAL SHORT pei_config (T_PEI_CONFIG inString) +{ +#ifndef NCONFIG + + char *s = inString; + + const T_STR_IND tmr_name_to_ind[] = + { + { "TUP_SND", 1 }, + { NULL, 0 } + }; + + TRACE_FUNCTION ("pei_config()"); + TRACE_EVENT (s); + + if (ConfigTimer(VSI_CALLER inString, tmr_name_to_ind) EQ VSI_OK) + return PEI_OK; + else + return PEI_ERROR; + +#else /* NCONFIG */ + + return PEI_OK; + +#endif +} + +/* ++------------------------------------------------------------------------------ +| Function : pei_monitor ++------------------------------------------------------------------------------ +| Description : Monitoring of physical Parameters +| +| Parameters : monitor - +| +| +| Return : PEI_OK; ++------------------------------------------------------------------------------ +*/ + +LOCAL SHORT pei_monitor (void **monitor) +{ + TRACE_FUNCTION ("pei_monitor()"); + + l2r_mon.version = VERSION_L2R; + *monitor = &l2r_mon; + return PEI_OK; +} + +/* ++------------------------------------------------------------------------------ +| Function : pei_dti_connect_req ++------------------------------------------------------------------------------ +| PURPOSE : Call the process function dti_dti_connect_req ++------------------------------------------------------------------------------ +*/ + +LOCAL void pei_dti_connect_req(T_DTI2_CONNECT_REQ *dti_connect_req) +{ + dti_dti_connect_req (l2r_hDTI, dti_connect_req); +} + +/* ++------------------------------------------------------------------------------ +| Function : pei_dti_connect_cnf ++------------------------------------------------------------------------------ +| PURPOSE : Call the process function dti_dti_connect_cnf ++------------------------------------------------------------------------------ +*/ + +LOCAL void pei_dti_connect_cnf(T_DTI2_CONNECT_CNF *dti_connect_cnf) +{ + dti_dti_connect_cnf(l2r_hDTI, dti_connect_cnf); +} + +/* ++------------------------------------------------------------------------------ +| Function : pei_dti_connect_ind ++------------------------------------------------------------------------------ +| PURPOSE : Call the process function dti_dti_connect_ind ++------------------------------------------------------------------------------ +*/ + +LOCAL void pei_dti_connect_ind(T_DTI2_CONNECT_IND *dti_connect_ind) +{ + dti_dti_connect_ind(l2r_hDTI, dti_connect_ind); +} + +/* ++------------------------------------------------------------------------------ +| Function : pei_dti_connect_res ++------------------------------------------------------------------------------ +| PURPOSE : Call the process function dti_dti_connect_res ++------------------------------------------------------------------------------ +*/ + +LOCAL void pei_dti_connect_res(T_DTI2_CONNECT_RES *dti_connect_res) +{ + dti_dti_connect_res(l2r_hDTI, dti_connect_res); +} + +/* ++------------------------------------------------------------------------------ +| Function : pei_dti_disconnect_req ++------------------------------------------------------------------------------ +| PURPOSE : Call the process function dti_dti_disconnect_req ++------------------------------------------------------------------------------ +*/ + +LOCAL void pei_dti_disconnect_req(T_DTI2_DISCONNECT_REQ *dti_disconnect_req) +{ + dti_dti_disconnect_req (l2r_hDTI, dti_disconnect_req); +} + +/* ++------------------------------------------------------------------------------ +| Function : pei_dti_disconnect_ind ++------------------------------------------------------------------------------ +| PURPOSE : Call the process function dti_dti_disconnect_ind ++------------------------------------------------------------------------------ +*/ + +LOCAL void pei_dti_disconnect_ind(T_DTI2_DISCONNECT_IND *dti_disconnect_ind) +{ + dti_dti_disconnect_ind (l2r_hDTI, dti_disconnect_ind); +} + +/* ++------------------------------------------------------------------------------ +| Function : pei_dti_data_req ++------------------------------------------------------------------------------ +| PURPOSE : Call the process function dti_dti_data_req ++------------------------------------------------------------------------------ +*/ + +LOCAL void pei_dti_data_req(T_DTI2_DATA_REQ *dti_data_req) +{ + dti_dti_data_req (l2r_hDTI, dti_data_req); +} + +/* ++------------------------------------------------------------------------------ +| Function : pei_dti_getdata_req ++------------------------------------------------------------------------------ +| PURPOSE : Call the process function dti_dti_getdata_req ++------------------------------------------------------------------------------ +*/ + +LOCAL void pei_dti_getdata_req(T_DTI2_GETDATA_REQ *dti_getdata_req) +{ + dti_dti_getdata_req (l2r_hDTI, dti_getdata_req); +} + +/* ++------------------------------------------------------------------------------ +| Function : pei_dti_data_ind ++------------------------------------------------------------------------------ +| PURPOSE : Call the process function dti_dti_data_ind ++------------------------------------------------------------------------------ +*/ + +LOCAL void pei_dti_data_ind(T_DTI2_DATA_IND *dti_data_ind) +{ + dti_dti_data_ind (l2r_hDTI, dti_data_ind); +} + +/* ++------------------------------------------------------------------------------ +| Function : pei_dti_ready_ind ++------------------------------------------------------------------------------ +| PURPOSE : Call the process function dti_dti_ready_ind ++------------------------------------------------------------------------------ +*/ + +LOCAL void pei_dti_ready_ind(T_DTI2_READY_IND *dti_ready_ind) +{ + dti_dti_ready_ind (l2r_hDTI, dti_ready_ind); +} + +#ifdef _SIMULATION_ + +/* ++------------------------------------------------------------------------------ +| Function : pei_dti_data_test_req ++------------------------------------------------------------------------------ +| PURPOSE : Call the process function dti_dti_data_test_req ++------------------------------------------------------------------------------ +*/ + +LOCAL void pei_dti_data_test_req(T_DTI2_DATA_TEST_REQ *dti_data_test_req) +{ + dti_dti_data_test_req (l2r_hDTI, dti_data_test_req); +} + +/* ++------------------------------------------------------------------------------ +| Function : pei_dti_data_test_ind ++------------------------------------------------------------------------------ +| PURPOSE : Call the process function dti_dti_data_test_ind ++------------------------------------------------------------------------------ +*/ + +LOCAL void pei_dti_data_test_ind(T_DTI2_DATA_TEST_IND *dti_data_test_ind) +{ + dti_dti_data_test_ind (l2r_hDTI, dti_data_test_ind); +} + +#endif /* _SIMULATION_ */ + +/* ++------------------------------------------------------------------------------ +| Function : pei_create ++------------------------------------------------------------------------------ +| Description : Create the Protocol Stack Entity +| +| Parameters : info - +| +| +| Return : PEI_OK - ++------------------------------------------------------------------------------ +*/ + +/*lint -e714 : Symbol not referenced */ +/*lint -e765 : external could be made static */ +GLOBAL T_PEI_RETURN l2r_pei_create (T_PEI_INFO **info) +{ + static const T_PEI_INFO pei_info = + { + "L2R", + { + pei_init, + pei_exit, + pei_primitive, + pei_timeout, + pei_signal, + NULL, /* no run function */ + pei_config, + pei_monitor + }, + 1024, + 10, + 205, + 2, +#ifdef _TARGET_ + (PASSIVE_BODY|COPY_BY_REF|TRC_NO_SUSPEND|PRIM_NO_SUSPEND) +#else + (PASSIVE_BODY|COPY_BY_REF) +#endif + }; + + TRACE_FUNCTION ("pei_create()"); + + /* + * Close Resources if open + */ + if (first_access) + first_access = FALSE; + else + pei_exit (); + + /* + * Export Startup Configuration data + */ + *info = (T_PEI_INFO *)&pei_info; + + return PEI_OK; +}