FreeCalypso > hg > fc-tourmaline
view src/g23m-gprs/grr/grr_pei.c @ 304:58c7961bd0b0 default tip
TCH tap: extend DL sniffing feature to support CSD modes
Our debug feature for TCH DL sniffing reads the content of the DSP's
a_dd_0 buffer (or a_dd_1 for TCH/H subchannel 1) at appropriate times
and forwards captured bits to the host. This feature was originally
implemented for TCH/FS, TCH/EFS and TCH/HS - now extend it to cover
TCH/F data modes too.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 25 Nov 2024 23:33:27 +0000 |
parents | fa8dc04885d8 |
children |
line wrap: on
line source
/* +----------------------------------------------------------------------------- | Project : GPRS (8441) | Modul : GRR +----------------------------------------------------------------------------- | 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 GPRS Radio Resource Management (GRR) | | Exported functions: | | pei_create - Create the Protocol Stack Entity | pei_init - Initialize Protocol Stack Entity | pei_primitive - Process Primitive | pei_timeout - Process Timeout | pei_exit - Close resources and terminate | pei_run - Process Primitive | pei_config - Dynamic Configuration | pei_monitor - Monitoring of physical Parameters |+----------------------------------------------------------------------------- */ #define GRR_PEI_C #define ENTITY_GRR /*==== INCLUDES =============================================================*/ #include <stdio.h> #include <string.h> #include <stdlib.h> #include <stddef.h> /* to get definition of offsetof(), for MAK_FUNC_S */ #include "typedefs.h" /* to get Condat data types */ #include "vsi.h" /* to get a lot of macros */ #include "macdef.h" #include "gprs.h" #include "custom.h" /*FMM*/ /*set FF_EM_MODE compile switch for SIMULATION and define WAP_NAME*/ #include "gsm.h" /* to get a lot of macros */ #include "ccdapi.h" /* to get CCD API */ #include "cnf_grr.h" /* to get cnf-definitions */ #include "mon_grr.h" /* to get mon-definitions */ #include "prim.h" /* to get the definitions of used SAP and directions */ #include "message.h" #include "tok.h" #include "pcm.h" #include "grr.h" /* to get the global entity definitions */ #include "grr_f.h" #include "grr_gfpp.h" #include "grr_measp.h" #include "grr_csp.h" #include "grr_pgp.h" #include "grr_psip.h" #include "grr_tcp.h" #ifdef _SIMULATION_ #include "grr_meass.h" /* to get definition of meas_init() */ #endif /* #ifdef _SIMULATION_ */ #include "grr_cpapp.h" #include "grr_css.h" #include "grr_ctrlp.h" #include "grr_em.h" /*for Engineering mode*/ /*==== DEFINITIONS ==========================================================*/ #define GRR_TSTR_ILLEGAL_KEYW 0 #define GRR_TSTR_OK 1 /*==== TYPES ================================================================*/ /*==== GLOBAL VARS ==========================================================*/ /*==== LOCAL VARS ===========================================================*/ /* * Function is needed for grr_table[]. */ LOCAL SHORT pei_signal (ULONG opc, void *data); static BOOL first_access = TRUE; static T_MONITOR grr_mon; /* * Jumptables to primitive handler functions. One table per SAP. * * Use MAK_FUNC_0 for primitives which contains no SDU. * Use MAK_FUNC_S for primitives which contains a SDU. */ /* * Function is needed for grr_table[]. This declaration can be removed * as soon as this function is no more called (i.e. all primitives are * handled). */ LOCAL void primitive_not_supported (void *data); static const T_FUNC gmmrr_table[] = { MAK_FUNC_0(ctrl_gmmrr_assign_req, GMMRR_ASSIGN_REQ), MAK_FUNC_0(ctrl_gmmrr_enable_req, GMMRR_ENABLE_REQ), MAK_FUNC_0(ctrl_gmmrr_disable_req, GMMRR_DISABLE_REQ), MAK_FUNC_0(ctrl_gmmrr_ready_req, GMMRR_READY_REQ), MAK_FUNC_0(ctrl_gmmrr_standby_req, GMMRR_STANDBY_REQ), MAK_FUNC_0(ctrl_gmmrr_cs_page_res, GMMRR_CS_PAGE_RES), MAK_FUNC_0(ctrl_gmmrr_suspend_req, GMMRR_SUSPEND_REQ), MAK_FUNC_0(ctrl_gmmrr_resume_req, GMMRR_RESUME_REQ), MAK_FUNC_N(primitive_not_supported, 0), MAK_FUNC_N(primitive_not_supported, 0), MAK_FUNC_0(ctrl_gmmrr_attach_started_req, GMMRR_ATTACH_STARTED_REQ), MAK_FUNC_0(ctrl_gmmrr_attach_finished_req, GMMRR_ATTACH_FINISHED_REQ), MAK_FUNC_0(ctrl_gmmrr_cell_res, GMMRR_CELL_RES) }; static const T_FUNC cgrlc_table[] = { MAK_FUNC_0(tc_cgrlc_tbf_rel_ind, CGRLC_TBF_REL_IND), MAK_FUNC_0(tc_cgrlc_ul_tbf_ind, CGRLC_UL_TBF_IND), MAK_FUNC_0(gfp_cgrlc_data_ind, CGRLC_DATA_IND), MAK_FUNC_0(tc_cgrlc_ctrl_msg_sent_ind, CGRLC_CTRL_MSG_SENT_IND), MAK_FUNC_0(tc_cgrlc_starting_time_ind, CGRLC_STARTING_TIME_IND), MAK_FUNC_0(tc_cgrlc_t3192_started_ind, CGRLC_T3192_STARTED_IND), MAK_FUNC_0(tc_cgrlc_cont_res_done_ind, CGRLC_CONT_RES_DONE_IND), MAK_FUNC_0(tc_cgrlc_ta_value_ind, CGRLC_TA_VALUE_IND), MAK_FUNC_N(primitive_not_supported, 0), MAK_FUNC_N(primitive_not_supported, 0), MAK_FUNC_N(primitive_not_supported, 0), MAK_FUNC_0(ctrl_cgrlc_standby_state_ind, CGRLC_STANDBY_STATE_IND), MAK_FUNC_0(ctrl_cgrlc_ready_state_ind, CGRLC_READY_STATE_IND), MAK_FUNC_0(grr_cgrlc_pwr_ctrl_cnf, CGRLC_PWR_CTRL_CNF), MAK_FUNC_0(tc_cgrlc_test_mode_ind, CGRLC_TEST_MODE_IND) }; /* according to l1p_sign.h */ static const T_FUNC mphp_table[] = { MAK_FUNC_N(primitive_not_supported, 0), /*0*/ MAK_FUNC_N(primitive_not_supported, 0), /*1*/ MAK_FUNC_0(gfp_mphp_single_block_con, MPHP_SINGLE_BLOCK_CON), /*2*/ MAK_FUNC_N(primitive_not_supported, 0), /*3*/ MAK_FUNC_0(gfp_mphp_stop_single_block_con, MPHP_STOP_SINGLE_BLOCK_CON), /*4*/ MAK_FUNC_N(primitive_not_supported, 0), /*5*/ MAK_FUNC_N(primitive_not_supported, 0), /*6*/ MAK_FUNC_0(gfp_mphp_assignment_con, MPHP_ASSIGNMENT_CON), /*7*/ MAK_FUNC_N(primitive_not_supported, 0), /*8*/ MAK_FUNC_0(gfp_mphp_tbf_release_con, MPHP_TBF_RELEASE_CON), /*9*/ MAK_FUNC_N(primitive_not_supported, 0), /*10*/ MAK_FUNC_0(gfp_mphp_repeat_ul_fixed_alloc_con, MPHP_REPEAT_UL_FIXED_ALLOC_CON), /*11*/ MAK_FUNC_N(primitive_not_supported, 0), /*12*/ MAK_FUNC_0(gfp_mphp_pdch_release_con, MPHP_PDCH_RELEASE_CON), /*13*/ MAK_FUNC_N(primitive_not_supported, 0), /*14*/ MAK_FUNC_0(gfp_mphp_timing_advance_con, MPHP_TIMING_ADVANCE_CON), /*15*/ MAK_FUNC_N(primitive_not_supported, 0), /*16*/ MAK_FUNC_0(gfp_mphp_update_psi_param_con, MPHP_UPDATE_PSI_PARAM_CON), /*17*/ MAK_FUNC_N(primitive_not_supported, 0), /*18*/ MAK_FUNC_0(gfp_mphp_ra_con, MPHP_RA_CON), /*19*/ MAK_FUNC_N(primitive_not_supported, 0), /*20*/ MAK_FUNC_0(gfp_mphp_ra_stop_con, MPHP_RA_STOP_CON), /*21*/ MAK_FUNC_N(primitive_not_supported, 0), /*22*/ MAK_FUNC_0(gfp_mphp_polling_ind, MPHP_POLLING_IND), /*23*/ MAK_FUNC_N(primitive_not_supported, 0), /*24*/ MAK_FUNC_N(primitive_not_supported, 0), /*25*/ MAK_FUNC_N(primitive_not_supported, 0), /*26*/ MAK_FUNC_0(gfp_mphp_stop_pccch_con, MPHP_STOP_PCCCH_CON), /*27*/ MAK_FUNC_N(primitive_not_supported, 0), /*28*/ MAK_FUNC_N(primitive_not_supported, 0), /*29*/ MAK_FUNC_0(gfp_mphp_scell_pbcch_stop_con, MPHP_SCELL_PBCCH_STOP_CON), /*30*/ MAK_FUNC_N(primitive_not_supported, 0), /*31*/ MAK_FUNC_N(primitive_not_supported, 0), /*32*/ MAK_FUNC_0(gfp_mphp_cr_meas_stop_con, MPHP_CR_MEAS_STOP_CON), /*33*/ MAK_FUNC_N(primitive_not_supported, 0), /*34*/ MAK_FUNC_N(primitive_not_supported, 0), /*35*/ MAK_FUNC_0(gfp_mphp_int_meas_stop_con, MPHP_INT_MEAS_STOP_CON), /*36*/ MAK_FUNC_N(primitive_not_supported, 0), /*37*/ MAK_FUNC_N(primitive_not_supported, 0), /*38*/ MAK_FUNC_0(gfp_mphp_ncell_pbcch_stop_con, MPHP_NCELL_PBCCH_STOP_CON), /*39*/ MAK_FUNC_0(gfp_mphp_data_ind, MPHP_DATA_IND), /*40*/ MAK_FUNC_0(gfp_mphp_cr_meas_ind, MPHP_CR_MEAS_IND), /*41*/ MAK_FUNC_0(gfp_mphp_int_meas_ind, MPHP_INT_MEAS_IND), /*42*/ MAK_FUNC_0(gfp_mphp_tint_meas_ind, MPHP_TINT_MEAS_IND), /*43*/ MAK_FUNC_0(gfp_mphp_ncell_pbcch_ind, MPHP_NCELL_PBCCH_IND), /*44*/ MAK_FUNC_N(primitive_not_supported, 0), /*45*/ MAK_FUNC_0(gfp_mphp_tcr_meas_ind, MPHP_TCR_MEAS_IND) /*46*/ }; static const T_FUNC rrgrr_table[] = { MAK_FUNC_0(ctrl_rrgrr_gprs_si13_ind, RRGRR_GPRS_SI13_IND), /* 0 */ MAK_FUNC_N(primitive_not_supported, 0), /* 1: NOT USED */ MAK_FUNC_0(ctrl_rrgrr_packet_paging_ind, RRGRR_PACKET_PAGING_IND), /* 2 */ MAK_FUNC_0(ctrl_rrgrr_ia_ind, RRGRR_IA_IND), /* 3 */ MAK_FUNC_0(ctrl_rrgrr_iaext_ind, RRGRR_IAEXT_IND), /* 4 */ MAK_FUNC_0(ctrl_rrgrr_assignment_rej_ind, RRGRR_ASSIGNMENT_REJ_IND), /* 5 */ MAK_FUNC_0(ctrl_rrgrr_data_ind, RRGRR_DATA_IND), /* 6 */ MAK_FUNC_N(primitive_not_supported, RRGRR_RESUMED_TBF_CNF), /* 7 */ MAK_FUNC_0(ctrl_rrgrr_ia_downlink_ind, RRGRR_IA_DOWNLINK_IND), /* 8 */ MAK_FUNC_0(ctrl_rrgrr_stop_task_cnf, RRGRR_STOP_TASK_CNF), /* 9 */ MAK_FUNC_0(ctrl_rrgrr_ext_meas_cnf, RRGRR_EXT_MEAS_CNF), /* A */ MAK_FUNC_N(primitive_not_supported, 0), /* B */ MAK_FUNC_N(primitive_not_supported, 0), /* C */ MAK_FUNC_0(ctrl_rrgrr_rr_est_ind, RRGRR_RR_EST_IND), /* D */ MAK_FUNC_N(primitive_not_supported, 0), /* E */ MAK_FUNC_N(primitive_not_supported, 0), /* F: NOT USED */ MAK_FUNC_0(ctrl_rrgrr_suspend_dcch_cnf, RRGRR_SUSPEND_DCCH_CNF), /* 10 */ MAK_FUNC_0(ctrl_rrgrr_reconnect_dcch_cnf, RRGRR_RECONNECT_DCCH_CNF), /* 11 */ MAK_FUNC_0(ctrl_rrgrr_stop_dcch_ind, RRGRR_STOP_DCCH_IND), /* 12 */ MAK_FUNC_0(ctrl_rrgrr_cr_ind, RRGRR_CR_IND), /* 13 */ MAK_FUNC_N(primitive_not_supported, 0), /* 14: NOT USED */ MAK_FUNC_0(ctrl_rrgrr_check_bsic_ind, RRGRR_NCELL_SYNC_IND), /* 15 */ MAK_FUNC_0(ctrl_rrgrr_sync_ind, RRGRR_SYNC_IND), /* 16 */ MAK_FUNC_0(ctrl_rrgrr_meas_rep_cnf, RRGRR_MEAS_REP_CNF), /* 17 */ MAK_FUNC_N(primitive_not_supported, 0), /* 18: NOT USED */ MAK_FUNC_0(ctrl_rrgrr_ms_id_ind, RRGRR_MS_ID_IND), /* 19 */ MAK_FUNC_0(primitive_not_supported, RRGRR_START_TASK_CNF) /* 1A */ #if defined (REL99) AND defined (TI_PS_FF_EMR) , MAK_FUNC_0(ctrl_rrgrr_si2quater_ind, RRGRR_SI2QUATER_IND) /* 1B */ #endif }; static const T_FUNC tb_table[] = { MAK_FUNC_0(meas_tb_rxlev_sc_req, TB_RXLEV_SC_REQ) /*0*/ }; #ifdef FF_EM_MODE static const T_FUNC em_ul_table[] = { MAK_FUNC_N(primitive_not_supported, 0 ), /* 0x00 */ MAK_FUNC_0(grr_em_sc_gprs_info_req, EM_SC_GPRS_INFO_REQ ), /* 0x01 */ MAK_FUNC_N(primitive_not_supported, 0 ), /* 0x02 */ MAK_FUNC_N(primitive_not_supported, 0 ), /* 0x03 */ MAK_FUNC_N(primitive_not_supported, 0 ), /* 0x04 */ MAK_FUNC_N(primitive_not_supported, 0 ), /* 0x05 */ MAK_FUNC_N(primitive_not_supported, 0 ), /* 0x06 */ MAK_FUNC_N(primitive_not_supported, 0 ), /* 0x07 */ MAK_FUNC_N(primitive_not_supported, 0 ), /* 0x08 */ MAK_FUNC_N(primitive_not_supported, 0 ), /* 0x09 */ MAK_FUNC_N(primitive_not_supported, 0 ), /* 0x0A */ MAK_FUNC_N(primitive_not_supported, 0 ), /* 0x0B */ MAK_FUNC_N(primitive_not_supported, 0 ), /* 0x0C */ MAK_FUNC_N(primitive_not_supported, 0 ), /* 0x0D */ MAK_FUNC_N(primitive_not_supported, 0 ), /* 0x0E */ MAK_FUNC_N(primitive_not_supported, 0 ), /* 0x0F */ MAK_FUNC_N(primitive_not_supported, 0 ), /* 0x10 */ MAK_FUNC_0(grr_em_pco_trace_req, EM_PCO_TRACE_REQ ), /* 0x11*/ /*PCO output*/ MAK_FUNC_N(primitive_not_supported, 0 ), /* 0x12 */ MAK_FUNC_0(grr_em_fmm_sc_gprs_info_req, EM_FMM_SC_GPRS_INFO_REQ), /* 0x13 */ MAK_FUNC_N(primitive_not_supported, 0 ), /* 0x14 */ MAK_FUNC_N(primitive_not_supported, 0 ), /* 0x15 */ MAK_FUNC_0(grr_em_fmm_tbf_info_req, EM_FMM_TBF_INFO_REQ ) /* 0x16 */ }; #endif /* FF_EM_MODE */ /*==== END DIAGNOSTICS ======================================================*/ /*==== PRIVATE FUNCTIONS ====================================================*/ /* +------------------------------------------------------------------------------ | Function : primitive_not_supported +------------------------------------------------------------------------------ | Description : This function handles unsupported primitives. | | Parameters : - | | Return : - | +------------------------------------------------------------------------------ */ LOCAL void primitive_not_supported (void *data) { TRACE_FUNCTION ("primitive_not_supported"); PFREE (data); } /*==== PUBLIC FUNCTIONS =====================================================*/ /* +------------------------------------------------------------------------------ | Function : pei_primitive +------------------------------------------------------------------------------ | Description : This function is called by the frame when a primitive is | received and needs to be processed. | | | | | GRR GMMRR UPLINK | | | | +------v-----------v-------+ | | | | | GRR <--RRGRR-- | | | | +--------------^------- ---+ | | | L1 DOWNLINK | | | | | Parameters : prim - Pointer to the received primitive | | Return : PEI_OK - function succeeded | PEI_ERROR - function failed | +------------------------------------------------------------------------------ */ LOCAL SHORT pei_primitive (void * primptr) { TRACE_FUNCTION ("pei_primitive"); if (primptr NEQ NULL) { T_PRIM *prim = (T_PRIM *)primptr; ULONG opc = prim->custom.opc; USHORT n; const T_FUNC *table; PTRACE_IN (opc); /* * This must be called for Partition Pool supervision. Will be replaced * by another macro some time. */ VSI_PPM_REC (&prim->custom, __FILE__, __LINE__); switch (SAP_NR(opc)) { case MPHP_DL: table = mphp_table; n = TAB_SIZE (mphp_table); break; case TB_DL: table = tb_table; n = TAB_SIZE (tb_table); break; case SAP_NR(CGRLC_DL): table = cgrlc_table; n = TAB_SIZE (cgrlc_table); break; case GMMRR_UL: table = gmmrr_table; n = TAB_SIZE (gmmrr_table); break; case RRGRR_DL: table = rrgrr_table; n = TAB_SIZE (rrgrr_table); break; #ifdef FF_EM_MODE case EM_Ul: table = em_ul_table; n = TAB_SIZE (em_ul_table); break; #endif /* FF_EM_MODE */ 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; #ifndef NO_COPY_ROUTING P_LEN(prim) = table->size + sizeof (T_PRIM_HEADER); #endif /* NO_COPY_ROUTING */ #endif /* PALLOC_TRANSITION */ JUMP (table->func) (P2D(prim)); } else { primitive_not_supported (P2D(prim)); } return PEI_OK; } } return PEI_OK; } /* +------------------------------------------------------------------------------ | Function : pei_init +------------------------------------------------------------------------------ | Description : This function is called by the frame. It is used to initialise | the entitiy. | | Parameters : handle - task handle | | Return : PEI_OK - entity initialised | PEI_ERROR - entity not (yet) initialised | +------------------------------------------------------------------------------ */ LOCAL SHORT pei_init (T_HANDLE handle) { TRACE_FUNCTION ("pei_init"); /* * Initialize task handle */ GRR_handle = handle; /* * Open communication channels */ if (hCommGRR < VSI_OK) { if ((hCommGRR = vsi_c_open (VSI_CALLER GRR_NAME)) < VSI_OK) return PEI_ERROR; } if (hCommGMM < VSI_OK) { if ((hCommGMM = vsi_c_open (VSI_CALLER GMM_NAME)) < VSI_OK) return PEI_ERROR; } if (hCommGRLC < VSI_OK) { if ((hCommGRLC = vsi_c_open (VSI_CALLER GRLC_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 (hCommL1 < VSI_OK) { if ((hCommL1 = vsi_c_open (VSI_CALLER L1_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_WAP /*FFM*/ if (hCommWAP < VSI_OK) { if ((hCommWAP = vsi_c_open (VSI_CALLER WAP_NAME)) < VSI_OK) return PEI_ERROR; } #endif /* * call function pcm_Init to be sure that the global variable std * is set before the initialisation of the GRR services takes place */ pcm_Init(); /* * Initialize entity data (call init function of every service) */ grr_init(); /* { PALLOC (tst_test_hw_req, TST_TEST_HW_REQ); PSEND (hCommL1, tst_test_hw_req); }*/ return (PEI_OK); } /* +------------------------------------------------------------------------------ | Function : pei_timeout +------------------------------------------------------------------------------ | Description : This function is called by the frame when a timer has expired. | | Parameters : index - timer index | | Return : PEI_OK - timeout processed | PEI_ERROR - timeout not processed | +------------------------------------------------------------------------------ */ LOCAL SHORT pei_timeout (USHORT index) { TRACE_FUNCTION ("pei_timeout"); /* * Process timeout */ switch (index) /* SZML-GLBL/007 */ { case T3134: ctrl_t3134(); break; case T3158: cs_t3158(); break; case T3162: tc_t3162(); break; case T3168: tc_t3168(); break; case T3170: tc_t3170(); break; case T3172_1: tc_t3172(T3172_1); break; /* case T3172_2: tc_t3172(T3172_2); break; */ /* case T3172_3: tc_t3172(T3172_3); break; */ /* case T3172_4: tc_t3172(T3172_4); break; */ /* case T3172_5: tc_t3172(T3172_5); break; */ /* case T3172_6: tc_t3172(T3172_6); break; */ /* case T3172_7: tc_t3172(T3172_7); break; */ case T3174: ctrl_t3174(); break; case T3176: ctrl_t3176(); break; case T3178: meas_t3178(); break; case T3186: tc_t3186(); break; case T_60_SEC: psi_t_60_sec(); break; case T_30_SEC: psi_t_30_sec(); break; case T_10_SEC: psi_t_10_sec(); break; case T_IM_SYNC: meas_t_im_sync(); break; case T15_SEC_CC: /* no action required when timer expires!! */ break; case T_TRANS_NON_DRX: grr_handle_non_drx_period( TRANSFER_NDRX, FALSE ); break; case T_NC2_NON_DRX: grr_handle_non_drx_period( NC2_NDRX, FALSE ); break; case T_COMP_PSI: psi_complete_psi_read_failed(); break; case T_RESELECT: cs_t_reselect(); break; #ifdef REL99 case T_POLL_TIMER: ctrl_t_poll_timer(); break; #endif default: TRACE_EVENT_P1( "Unknown Timeout: %d", index ); break; } return PEI_OK; } /* +------------------------------------------------------------------------------ | Function : pei_signal +------------------------------------------------------------------------------ | Description : This function is called by the frame when a signal has been | received. | | Parameters : opc - signal operation code | *data - pointer to primitive | | Return : PEI_OK - signal processed | PEI_ERROR - signal not processed | +------------------------------------------------------------------------------ */ LOCAL SHORT pei_signal (ULONG opc, void *data) { TRACE_FUNCTION ("pei_signal"); /* * Process signal */ TRACE_EVENT_P1( "Unknown Signal: %08X", opc ); return(PEI_OK); } /* +------------------------------------------------------------------------------ | Function : pei_exit +------------------------------------------------------------------------------ | Description : This function is called by the frame when the entity is | terminated. All open resources are freed. | | Parameters : - | | Return : PEI_OK - exit sucessful | PEI_ERROR - exit not sueccessful | +------------------------------------------------------------------------------ */ LOCAL SHORT pei_exit (void) { TRACE_FUNCTION ("pei_exit"); /* * Close communication channels */ vsi_c_close (VSI_CALLER hCommGRR); hCommGRR = VSI_ERROR; vsi_c_close (VSI_CALLER hCommGMM); hCommGMM = VSI_ERROR; vsi_c_close (VSI_CALLER hCommRR); hCommRR = VSI_ERROR; vsi_c_close (VSI_CALLER hCommGRLC); hCommGRLC = VSI_ERROR; vsi_c_close (VSI_CALLER hCommL1); hCommL1 = VSI_ERROR; vsi_c_close (VSI_CALLER hCommPL); hCommPL = VSI_ERROR; ccd_exit(); #ifdef FF_WAP /*FFM*/ vsi_c_close (VSI_CALLER hCommWAP); hCommWAP = VSI_ERROR; #endif return PEI_OK; } /* +------------------------------------------------------------------------------ | Function : pei_run +------------------------------------------------------------------------------ | Description : This function is called by the frame when entering the main | loop. This fucntion is only required in the active variant. | | This function is not used. | | Parameters : handle - Communication handle | | Return : PEI_OK - sucessful | PEI_ERROR - not successful | +------------------------------------------------------------------------------ */ LOCAL SHORT pei_run (T_HANDLE TaskHandle, T_HANDLE ComHandle ) { return PEI_OK; } /* +------------------------------------------------------------------------------ | Function : pei_config +------------------------------------------------------------------------------ | Description : This function is called by the frame when a primitive is | received indicating dynamic configuration. | | This function is not used in this entity. | | Parameters : handle - Communication handle | | Return : PEI_OK - sucessful | PEI_ERROR - not successful | +------------------------------------------------------------------------------ */ #if !defined (NCONFIG) LOCAL const KW_DATA kwtab[] = { GRR_STR_IM_INIT, GRR_NUM_IM_INIT, GRR_STR_TBF_CCCH, GRR_NUM_TBF_CCCH, GRR_STR_NO_TBF_CCCH, GRR_NUM_NO_TBF_CCCH, #if !defined (NTRACE) GRR_STR_CRP_TRACE, GRR_NUM_CRP_TRACE, GRR_STR_IM_TRACE, GRR_NUM_IM_TRACE, #endif /* #if !defined (NTRACE) */ #ifdef _SIMULATION_ GRR_STR_RES_RANDOM, GRR_NUM_RES_RANDOM, GRR_STR_STD, GRR_NUM_STD, GRR_STR_NC2, GRR_NUM_NC2, #endif /* #ifdef _SIMULATION_ */ "", 0 }; #endif /* #if !defined (NCONFIG) */ LOCAL SHORT pei_config (char *inString) { #if !defined (NCONFIG) char * s = inString; char * keyw; char * val [10]; TRACE_FUNCTION( "pei_config" ); TRACE_EVENT_P1( "[PEI_CONFIG]: %s", inString ); tok_init(s); /* * Parse next keyword and number of variables */ while ((tok_next(&keyw,val)) != TOK_EOCS) { UBYTE ncomment = GRR_TSTR_OK; switch ((tok_key((KW_DATA *)kwtab,keyw))) { case GRR_NUM_IM_INIT: meas_init( ( UBYTE )atoi( val[0] ) ); break; case GRR_NUM_TBF_CCCH: grr_data->ms.tbf_mon_ccch = TRUE; /* Allowed */ break; case GRR_NUM_NO_TBF_CCCH: grr_data->ms.tbf_mon_ccch = FALSE; /* Not allowed */ break; #if !defined (NTRACE) case GRR_NUM_CRP_TRACE: grr_data->cs.v_crp_trace = atoi( val[0] ); break; case GRR_NUM_IM_TRACE: grr_data->meas_im.n_im_trace = atoi( val[0] ); break; #endif /* #if !defined (NTRACE) */ #ifdef _SIMULATION_ case GRR_NUM_RES_RANDOM: grr_data->tc.res_random = atoi( val[0] ); TRACE_EVENT_P1("grr_data->tc.res_random is %d",atoi( val[0])); break; case GRR_NUM_STD: std = atoi( val[0] ); #ifdef TI_PS_FF_QUAD_BAND_SUPPORT if ( std EQ 33) { pcm_Init (); { rr_csf_check_rfcap (TRUE); } } #endif TRACE_EVENT_P1("std is %d",atoi( val[0])); break; case GRR_NUM_NC2: grr_data->nc2_on = atoi( val[0] ); break; #endif default: ncomment = GRR_TSTR_ILLEGAL_KEYW; break; } TRACE_EVENT_P2( "[PEI_CONFIG]: %s -> %s", keyw, ncomment EQ GRR_TSTR_OK ? "OK" : "Illegal Keyword" ); } #endif /* #if !defined (NCONFIG) */ return PEI_OK; } /* +------------------------------------------------------------------------------ | Function : pei_config +------------------------------------------------------------------------------ | Description : This function is called by the frame in case sudden entity | specific data is requested (e.g. entity Version). | | Parameters : out_monitor - return the address of the data to be | monitoredCommunication handle | | Return : PEI_OK - sucessful (address in out_monitor is valid) | PEI_ERROR - not successful | +------------------------------------------------------------------------------ */ LOCAL SHORT pei_monitor (void ** out_monitor) { TRACE_FUNCTION ("pei_monitor"); grr_mon.version = "GRR 1.0"; *out_monitor = &grr_mon; return PEI_OK; } /* +------------------------------------------------------------------------------ | Function : pei_create +------------------------------------------------------------------------------ | Description : This function is called by the frame when the process is | created. | | Parameters : out_name - Pointer to the buffer in which to locate | the name of this entity | | Return : PEI_OK - entity created successfuly | PEI_ERROR - entity could not be created | +------------------------------------------------------------------------------ */ GLOBAL SHORT pei_create (T_PEI_INFO **info) { static T_PEI_INFO pei_info = { "GRR", /* name */ { /* pei-table */ pei_init, pei_exit, pei_primitive, pei_timeout, pei_signal, pei_run, pei_config, pei_monitor }, 2560, /* stack size increased for omaps00149330 */ PEI_PRIM_QUEUE_SIZE, /* queue entries */ 204, /* priority (1->low, 255->high) */ TIMER_COUNT, /* number of timers */ #ifdef _TARGET_ PASSIVE_BODY|COPY_BY_REF|TRC_NO_SUSPEND|INT_DATA_TASK|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 = &pei_info; return PEI_OK; } /*==== END OF FILE ==========================================================*/