FreeCalypso > hg > freecalypso-sw
diff gsm-fw/g23m-gsm/dl/dl_pei.c @ 673:2f7df7a314f8
gsm-fw/g23m-gsm subtree: initial import from LoCosto source
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Sun, 28 Sep 2014 23:20:04 +0000 |
parents | |
children | 6bc81ea50ab5 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gsm-fw/g23m-gsm/dl/dl_pei.c Sun Sep 28 23:20:04 2014 +0000 @@ -0,0 +1,729 @@ +/* ++----------------------------------------------------------------------------- +| Project : +| Modul : ++----------------------------------------------------------------------------- +| 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 implements the process body interface +| for the entity DL of the mobile station. ++----------------------------------------------------------------------------- +*/ + +#ifndef DL_PEI_C +#define DL_PEI_C + +#define ENTITY_DL + + + +/*==== INCLUDES ===================================================*/ +#include "typedefs.h" +#include <string.h> +#include <stdlib.h> +#include <stddef.h> +#include "vsi.h" +#include "pconst.cdg" +#include "custom.h" +#include "gsm.h" +#include "mon_dl.h" +#include "prim.h" +#include "pei.h" +#include "tok.h" +#include "ccdapi.h" +#include "dl.h" +#include "dl_em.h" +#include "dl_trc.h" + +/*==== EXPORT =====================================================*/ +#ifdef TI_PS_HCOMM_CHANGE +#else +GLOBAL T_HANDLE hCommDL = VSI_ERROR; /* Self Communication */ +GLOBAL T_HANDLE hCommRR = VSI_ERROR; /* RR Communication */ +GLOBAL T_HANDLE hCommPL = VSI_ERROR; /* PL Communication */ +#ifdef FF_EM_MODE +GLOBAL T_HANDLE hCommMMI = VSI_ERROR; /* EM Communication */ +#endif /* FF_EM_MODE */ +#endif +GLOBAL USHORT dl_handle; + +/*==== PRIVATE ====================================================*/ + +LOCAL void pei_not_supported (void *data); +LOCAL int dl_process_signal (ULONG opc, void *signal_data); + +LOCAL SHORT pei_signal (T_SIGNAL_OPC opc, void *signal_data); + +/*==== VARIABLES ==================================================*/ +#ifdef _SIMULATION_ +static UBYTE first_access = TRUE; +#endif /* _SIMULATION_ */ + +static T_MONITOR dl_mon; + +/*==== FUNCTIONS ==================================================*/ +/* Please consider that the opc´s are not necessarily sorted in sequential order. + * DL doesn´t use the normal technique to get the primitive from the table. + * Instead it uses the direct search and compare: + * for (i=0; i<n; i++, table++) + * if (table->opc EQ opc) + * break; + */ +LOCAL const T_FUNC dl_table[] = { + MAK_FUNC_S( drr_dl_establish_req , DL_ESTABLISH_REQ ), /* 0x80000003 */ + MAK_FUNC_N( pei_not_supported , 0 ), /* 0x80010003 */ + MAK_FUNC_0( drr_dl_release_req , DL_RELEASE_REQ ), /* 0x80020003 */ + MAK_FUNC_N( pei_not_supported , 0 ), /* 0x80030003 */ + MAK_FUNC_S( drr_dl_data_req , DL_DATA_REQ ), /* 0x80040003 */ + MAK_FUNC_N( pei_not_supported , 0 ), /* 0x80050003 */ + MAK_FUNC_S( drr_dl_unitdata_req , DL_UNITDATA_REQ ), /* 0x80060003 */ + MAK_FUNC_N( pei_not_supported , 0 ), /* 0x80070003 */ + MAK_FUNC_0( drr_dl_suspend_req , DL_SUSPEND_REQ ), /* 0x80080003 */ + MAK_FUNC_N( pei_not_supported , 0 ), /* 0x80090003 */ + MAK_FUNC_S( drr_dl_resume_req , DL_RESUME_REQ ), /* 0x800a0003 */ + MAK_FUNC_N( pei_not_supported , 0 ), /* 0x800b0003 */ + MAK_FUNC_S( drr_dl_reconnect_req , DL_RECONNECT_REQ ), /* 0x800c0003 */ + MAK_FUNC_N( pei_not_supported , 0 ), /* 0x800d0003 */ +#if defined (DL_TRACE_ENABLED) && !defined(DL_IMMEDIATE_TRACE) + MAK_FUNC_0( dl_trace_read_all , DL_TRACE_REQ ), /* 0x800e0003 */ +#else + MAK_FUNC_N( pei_not_supported , 0 ), /* 0x800e0003 */ +#endif /* DL_TRACE_ENABLED && !DL_IMMEDIATE_TRACE */ + MAK_FUNC_N( pei_not_supported , 0 ), /* 0x800f0003 */ + MAK_FUNC_S( drr_dl_short_unitdata_req , DL_SHORT_UNITDATA_REQ) /* 0x80100003 */ +}; + +LOCAL const T_FUNC mphc_table[] = { + MAK_FUNC_0( dph_ph_data_ind, PH_DATA_IND ) /* 0x0000006d */ +}; + + +#if defined (DL_2TO1) + #if defined(_SIMULATION_) + LOCAL const T_FUNC l1_test_table[] = { + MAK_FUNC_0( l1test_call_mphc_read_dcch, L1TEST_CALL_MPHC_READ_DCCH ), /* 8000409b */ + MAK_FUNC_N( pei_not_supported , 0 ) /* removed */ + MAK_FUNC_N( pei_not_supported , 0 ) /* removed */ + }; + #endif /* _SIMULATION_ */ +#else /* DL_2TO1 */ + + LOCAL const T_FUNC mdl_table[] = { + MAK_FUNC_0( drr_mdl_release_req , MDL_RELEASE_REQ ) /* 0x80004004 */ + }; + + #if defined (_SIMULATION_) || (defined (DL_TRACE_ENABLED) && !defined(DL_IMMEDIATE_TRACE)) + LOCAL const T_FUNC ph_table[] = { + #if defined(_SIMULATION_) + MAK_FUNC_0( dph_ph_ready_to_send , PH_READY_TO_SEND ), /* 0x4100 */ + #else + MAK_FUNC_N( pei_not_supported , 0 ), /* 0x4100 */ + #endif /* _SIMULATION_ */ + MAK_FUNC_N( pei_not_supported , 0 ), /* 0x4101 */ + #if defined (DL_TRACE_ENABLED) && !defined(DL_IMMEDIATE_TRACE) + MAK_FUNC_0( dl_trace_read , PH_TRACE_IND ) /* 0x4102 */ + #else + MAK_FUNC_N( pei_not_supported , 0 ) /* 0x4102 */ + #endif /* DL_TRACE_ENABLED && !DL_IMMEDIATE_TRACE*/ + }; + #endif /* _SIMULATION_||(DL_TRACE_ENABLED&& !DL_IMMEDIATE_TRACE) */ +#endif /* DL_2TO1 */ + +#ifdef FF_EM_MODE +LOCAL const T_FUNC em_ul_table[] = { + MAK_FUNC_0( dl_em_dl_event_req , EM_DL_EVENT_REQ ), /* 0x3e0A*/ +}; +#endif /* FF_EM_MODE */ + + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : DL_PEI | +| STATE : code ROUTINE : pei_primitive | ++--------------------------------------------------------------------+ + + PURPOSE : Process protocol specific primitive. + +*/ +LOCAL SHORT pei_primitive (void * ptr) +{ + GET_INSTANCE_DATA; + T_PRIM *prim = (T_PRIM*)ptr; + /* + * | | + * DL MDL + * | | + * +------v------------v------+ + * | | + * | DL | + * | | + * +-------------^------------+ + * | + * MPHC/PH + * | + * + */ + + 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); + + switch (SAP_NR(opc)) + { + case SAP_NR(DL_UL): table = dl_table; n = TAB_SIZE (dl_table); break; + /*case SAP_NR(MPHC_UL):*/ /* same as MPHC_DL */ + case SAP_NR(MPHC_DL): + table = mphc_table; + n = TAB_SIZE (mphc_table); + /* + * The opcodes for MPHC_DL start at 0x6d + */ + opc -= 0x6d; + break; +#if defined (DL_2TO1) + #if defined(_SIMULATION_) + case SAP_NR(L1TEST_UL): + case SAP_NR(L1TEST_DL): table = l1_test_table; n = TAB_SIZE (l1_test_table); break; + #endif /* _SIMULATION_ */ +#else /* DL_2TO1 */ + case SAP_NR(MDL_DL): table = mdl_table; n = TAB_SIZE (mdl_table); break; + #if defined (_SIMULATION_) || (defined (DL_TRACE_ENABLED) && !defined(DL_IMMEDIATE_TRACE)) + case SAP_NR(PH_UL): + case SAP_NR(PH_DL): table = ph_table; n = TAB_SIZE (ph_table); break; + #endif /* _SIMULATION_||(DL_TRACE_ENABLED&&!DL_IMMEDIATE_TRACE) */ +#endif /* DL_2TO1 */ + +#ifdef FF_EM_MODE + case EM_Ul: + table = em_ul_table; + n = TAB_SIZE (em_ul_table); + /* + * The opcodes for EM_Ul start at 0x0a + */ + opc -= 0x0a; + break; +#endif /* FF_EM_MODE*/ + default : table = NULL; n = 0; break; + } + if (table) + { + +#if defined (_SIMULATION_) + if (opc NEQ PH_READY_TO_SEND) + /* + * this simulates function call of layer 1 in the + * windows environment + */ +#endif /* _SIMULATION_ */ + dl_data->dl_active = TRUE; + + + if (PRIM_NR(opc)<n) + { + table += PRIM_NR(opc); +#ifdef PALLOC_TRANSITION + /*lint -e661 (Warning -- Possible access of out-of-bounds) */ + P_SDU(prim) = table->soff ? (T_sdu*) (((char*)&prim->data) + table->soff) : 0; + /*lint +e661 (Warning -- Possible access of out-of-bounds) */ +#ifndef NO_COPY_ROUTING + P_LEN(prim) = table->size + sizeof (T_PRIM_HEADER); +#endif /* NO_COPY_ROUTING */ +#endif /* PALLOC_TRANSITION */ + +#if defined (DL_TRACE_ENABLED) && !defined(DL_2TO1) + if ((opc EQ DL_TRACE_REQ) OR (opc EQ PH_TRACE_IND)) + /*lint -e661 (Warning -- Possible access of out-of-bounds) */ + JUMP (table->func)(); + /*lint +e661 (Warning -- Possible access of out-of-bounds) */ + else +#endif /* DL_TRACE_ENABLED && !DL_2TO1 */ + /*lint -e661 (Warning -- Possible access of out-of-bounds) */ + JUMP (table->func) (P2D(prim)); + /*lint +e661 (Warning -- Possible access of out-of-bounds) */ + } + else + { + pei_not_supported (P2D(prim)); + } + dl_data->dl_active = FALSE; + + return PEI_OK; + } + +#if defined (_SIMULATION_) + /* TDC is not able to send signals, therefore the redirection over primitives */ + if (opc EQ DL_SIGNAL_EM_READ) + { /* test ACI read of EM buffer only */ + return dl_process_signal(DL_SIGNAL_EM_READ, NULL); + } +#endif /* _SIMULATION_ */ + + /* + * Primitive is no GSM Primitive + * then forward to the environment + */ + +#ifdef GSM_ONLY + MY_PFREE (P2D(prim)) + + return PEI_ERROR; +#else + if (opc & SYS_MASK) + vsi_c_primitive (VSI_CALLER prim); + else + { + void* p = (void*)P2D(prim); + MY_PFREE (p); + return PEI_ERROR; + } +#endif + } + return PEI_OK; +} + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : DL_PEI | +| STATE : code ROUTINE : pei_not_supported | ++--------------------------------------------------------------------+ + + PURPOSE : An unsupported primitive is received. + +*/ + +LOCAL void pei_not_supported (void * data) +{ + TRACE_FUNCTION ("pei_not_supported()"); + + MY_PFREE (data); +} + + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : DL_PEI | +| STATE : code ROUTINE : pei_init | ++--------------------------------------------------------------------+ + + PURPOSE : Initialize Protocol Stack Entity + +*/ + +LOCAL SHORT pei_init (T_HANDLE handle) +{ + dl_handle = handle; + + TRACE_FUNCTION ("pei_init() " __DATE__ " " __TIME__); + +#ifdef TI_PS_HCOMM_CHANGE + if (!cl_hcom_all_handles_open()) + { + return PEI_ERROR; + } +#else /* for hCommHandles backward compatibility */ + if (hCommDL < VSI_OK) + { + if ((hCommDL = vsi_c_open (VSI_CALLER DL_NAME)) < VSI_OK) + return PEI_ERROR; + } + + if (hCommRR < VSI_OK) + { + if ((hCommRR = vsi_c_open (VSI_CALLER RR_NAME)) < VSI_OK) + return PEI_ERROR; + } + + + if (hCommPL < VSI_OK) + { + if ((hCommPL = vsi_c_open (VSI_CALLER PL_NAME)) < VSI_OK) + return PEI_ERROR; + } + +#ifdef FF_EM_MODE + if (hCommMMI < VSI_OK) + { + if ((hCommMMI = vsi_c_open (VSI_CALLER ACI_NAME)) < VSI_OK) + return PEI_ERROR; + } +#endif /* FF_EM_MODE */ +#endif + + TRC_INIT (); + +#if !defined(_SIMULATION_) + TRACE_EVENT (dl_version()); + SYST_TRACE (dl_version()); +#endif /* !_SIMULATION_ */ + + /* + * Initialize data base + */ + +#if defined(DL_TRACE_ENABLED) && !defined(DL_IMMEDIATE_TRACE) + dl_trace_init (); +#endif /* DL_TRACE_ENABLED && !DL_IMMEDIATE_TRACE*/ + + com_init_data (); + dcch0_init_dl_data (); + sacch0_init_dl_data (); + +#ifdef FF_EM_MODE + /* + initialise event flags + */ + em_init_dl_event_trace(); + /* + initialise dl semaphor for EM event tracing + */ + em_dl_sem_init(); +#endif /* FF_EM_MODE */ + + return PEI_OK; +} + +#ifdef _SIMULATION_ +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : DL_PEI | +| STATE : code ROUTINE : pei_exit | ++--------------------------------------------------------------------+ + + PURPOSE : Close Resources and terminate + +*/ +LOCAL SHORT pei_exit (void) +{ + TRACE_FUNCTION ("pei_exit()"); + +#if defined(DL_TRACE_ENABLED) && !defined(DL_IMMEDIATE_TRACE) + dl_trace_exit (); +#endif /* DL_TRACE_ENABLED && !DL_IMMEDIATE_TRACE*/ + +#ifdef FF_EM_MODE + em_dl_sem_exit(); +#endif /* FF_EM_MODE */ + + /* + * clean up communication + */ +#ifdef TI_PS_HCOMM_CHANGE +#else /* for hCommHandles backward compatibility */ + vsi_c_close (VSI_CALLER hCommDL); + hCommDL = VSI_ERROR; + + vsi_c_close (VSI_CALLER hCommRR); + hCommRR = VSI_ERROR; + + vsi_c_close (VSI_CALLER hCommPL); + hCommPL = VSI_ERROR; + +#ifdef FF_EM_MODE + vsi_c_close (VSI_CALLER hCommMMI); + hCommMMI = VSI_ERROR; +#endif /* FF_EM_MODE */ +#endif + + TRC_EXIT (); + + return PEI_OK; +} +#endif /* _SIMULATION_ */ + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : DL_PEI | +| STATE : code ROUTINE : pei_config | ++--------------------------------------------------------------------+ + + PURPOSE : Dynamic Configuration + +*/ + +/* Implements Measure#36 */ +#ifdef NCONFIG +#else /* NCONFIG */ +LOCAL SHORT pei_config (T_PEI_CONFIG inString) +{ + return PEI_OK; +} +#endif /* NCONFIG */ + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : DL_PEI | +| STATE : code ROUTINE : dl_pei_config | ++--------------------------------------------------------------------+ + + PURPOSE : Dynamic Configuration + +*/ +/* Implements Measure#36 */ +#ifdef NCONFIG +#else /* NCONFIG */ +GLOBAL T_PEI_RETURN dl_pei_config ( char * inString, char * dummy ) +{ + return pei_config ( inString ); +} +#endif /* NCONFIG */ + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : DL_PEI | +| STATE : code ROUTINE : pei_monitor | ++--------------------------------------------------------------------+ + + PURPOSE : Monitoring of physical Parameters + +*/ + +LOCAL SHORT pei_monitor (void ** monitor) +{ + TRACE_FUNCTION ("pei_monitor()"); + +/* Implements Measure#32: Row 50 */ + + * monitor = &dl_mon; + + return PEI_OK; +} + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : DL_PEI | +| STATE : code ROUTINE : pei_create | ++--------------------------------------------------------------------+ + + PURPOSE : Create the Protocol Stack Entity + +*/ + +/* + * New Frame + */ +GLOBAL T_PEI_RETURN dl_pei_create (T_PEI_INFO **info) +{ + static const T_PEI_INFO pei_info = + { + "DL", + { + pei_init, +#ifdef _SIMULATION_ + pei_exit, +#else + NULL, +#endif + pei_primitive, + NULL, /* no timeout function */ + pei_signal, /* signal function */ + NULL, /* no run function */ +/* Implements Measure#36 */ +#ifdef NCONFIG + NULL, /* no pei_config function */ +#else /* NCONFIG */ + pei_config, +#endif /* NCONFIG */ + pei_monitor, + }, + #if defined (GPRS) + 1536, /* Stack Size incresed for omaps00140330 */ + #else + #if defined (FAX_AND_DATA) + 1536, /* Stack Size incresed for omaps00140330 */ + #else + 1394, /* Stack Size incresed for omaps00140330 */ + #endif + #endif + 10+DL_SIGNAL_DATA_ELEMENTS, /* Queue Entries */ + 215, /* Priority */ + 0, /* number of timer */ + /* flags */ +#ifdef _TARGET_ +#ifdef GPRS + PASSIVE_BODY|COPY_BY_REF|TRC_NO_SUSPEND|PRIM_NO_SUSPEND +#else + PASSIVE_BODY|COPY_BY_REF|TRC_NO_SUSPEND|PRIM_NO_SUSPEND +#endif +#else + PASSIVE_BODY|COPY_BY_REF +#endif + + }; + + TRACE_FUNCTION ("pei_create"); + /* + * Close Resources if open + */ + +#ifdef _SIMULATION_ + if (first_access) + first_access = FALSE; + else + pei_exit (); +#endif + + /* + * export startup configuration data + */ + *info = (T_PEI_INFO *)&pei_info; + /* + * Initialize entity data + */ + + /* + * Initialize Condat Coder Decoder and + * processes + */ + + + return PEI_OK; +} + +/* ++--------------------------------------------------------------------+ +| PROJECT : GSM-PS (6147) MODULE : DL_PEI | +| STATE : code ROUTINE : pei_signal | ++--------------------------------------------------------------------+ + + PURPOSE : Functional interface to signal a primitive. + +*/ +LOCAL SHORT pei_signal (T_SIGNAL_OPC opc, void *signal_data) +{ +#ifdef TRACE_FKT + { + char buf[24]; + sprintf(buf, "pei_signal (0x%lx)", (ULONG)opc); + TRACE_FUNCTION (buf); + PTRACE_IN(opc); + } +#elif defined(_SIMULATION_) + TRACE_EVENT_WIN_P1 ("pei_signal (0x%lx)", (ULONG)opc); +#endif + + dl_process_signal ((ULONG)opc, signal_data); + + return PEI_OK; +} + +LOCAL int dl_process_signal (ULONG opc, void *signal_data) +{ + /*TRACE_FUNCTION ("pei_process_signal()");*/ + GET_INSTANCE_DATA; + switch (opc) + { +#if defined(DL_TRACE_ENABLED) && !defined (DL_IMMEDIATE_TRACE) && !defined(DL_2TO1) + case DL_TRACE_REQ: /* RR -> DL */ + SYST_TRACE("call dl_trace_read_all()"); + dl_trace_read_all (); + break; + case PH_TRACE_IND: /* ALR/TIL -> DL */ + dl_trace_read (); + break; +#endif /* DL_TRACE_ENABLED && !DL_IMMEDIATE_TRACE &6 !DL_2TO1 */ +#if defined(INVOKE_SIGNAL) + case DL_SIGNAL_ESTABLISH_IND: + sig_handle_drr_dl_establish_ind ((T_DL_SIGNAL_DATA *) signal_data); + break; + case DL_SIGNAL_ESTABLISH_CNF: + sig_handle_drr_dl_establish_cnf ((T_DL_SIGNAL_DATA *) signal_data); + break; + case DL_SIGNAL_DATA_IND: + sig_handle_com_data_ind ((T_DL_SIGNAL_DATA *) signal_data); + break; + case DL_SIGNAL_DATA_CNF: + sig_handle_drr_dl_data_cnf ((T_DL_SIGNAL_DATA *) signal_data); + break; +#if 0 /* happens in primitive context only */ + case DL_SIGNAL_UNITDATA_IND: + sig_handle_drr_dl_unitdata_ind (dl_data, (T_DL_SIGNAL_DATA *) signal_data); + break; +#endif /* 0 */ + case DL_SIGNAL_SHORT_UNITDATA_IND: + sig_handle_drr_dl_short_unitdata_ind ((T_DL_SIGNAL_DATA *) signal_data); + break; + case DL_SIGNAL_RELEASE_IND: + sig_handle_drr_dl_release_ind ((T_DL_SIGNAL_DATA *) signal_data); + break; + case DL_SIGNAL_RELEASE_CNF: + sig_handle_drr_dl_release_cnf ((T_DL_SIGNAL_DATA *) signal_data); + break; + case DL_SIGNAL_ERROR_IND: + sig_handle_drr_error_ind ((T_DL_SIGNAL_DATA *) signal_data); + break; + case DL_SIGNAL_FREE_POINTER: + sig_handle_com_free_pointer ((T_DL_SIGNAL_DATA *) signal_data); + break; + case DL_SIGNAL_CONCATENATE: + sig_handle_com_concatenate((T_DL_SIGNAL_DATA *) signal_data); + break; +#if defined(DL_TRACE_ENABLED) + case DL_SIGNAL_L2TRACE: + sig_handle_com_l2trace ((T_DL_SIGNAL_DATA *) signal_data); + break; +#endif /*DL_TRACE_ENABLED*/ + case DL_SIGNAL_L3TRACE: + sig_handle_com_l3trace((T_DL_SIGNAL_DATA *) signal_data); + break; +#if defined(FF_EM_MODE) + case DL_SIGNAL_EM_IND: + sig_handle_dl_em_first_event_check (); + break; + case DL_SIGNAL_EM_WRITE: + sig_handle_dl_em_write (dl_data, (T_DL_SIGNAL_DATA *) signal_data); + break; +#if defined(_SIMULATION_) + case DL_SIGNAL_EM_READ: + { + T_MONITOR *dummy; + + em_dl_sem_read (); + em_dl_sem_reset (); + pei_monitor (&dummy); + TRACE_EVENT_WIN (dummy->version); + } + break; +#endif /* _SIMULATION_ */ +#endif /* FF_EM_MODE */ +#endif /* INVOKE_SIGNAL */ + default: + break; + } + +#if defined(INVOKE_SIGNAL) + if (signal_data) + { + TRACE_EVENT_WIN_P1 ("pei_process_signal(): set data with idx=%u to FREE", + ((T_DL_SIGNAL_DATA *)signal_data)->idx); + + ((T_DL_SIGNAL_DATA *)signal_data)->busy = FALSE; + } +#endif /* INVOKE_SIGNAL */ + + return PEI_OK; +}/* dl_process_signal */ + +GLOBAL UBYTE * dl_get_sacch_buffer (void) +{ + GET_INSTANCE_DATA; + return dl_data->sacch_act_buffer.buf; +} + +#endif /* DL_PEI_C */