FreeCalypso > hg > fc-selenite
view src/g23m-gsm/rr/rr_em.h @ 164:9c14f0c7a904
LICENSE: current status
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 02 Apr 2019 21:06:05 +0000 |
parents | d393cd9bb723 |
children |
line wrap: on
line source
/* +----------------------------------------------------------------------------- | 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 : Engineering Mode (EM) Declarations + Macros | +----------------------------------------------------------------------------- */ #ifndef RR_EM_H #define RR_EM_H #ifdef FF_EM_MODE /* ------------ data declarations for EM ---------------- */ /*This value is used for function dat_em_nc_info_req to avoid a magic number*/ #define EM_MAX_NUM_NC 6 /* * Buffer is by one bigger than max. number of prims, because it * needs always one termination entry. * To optimize the buffersize, the data is packed in the buffer as follows: * type, length, value * Value is the combination of the additional parameters as defined in 8443.601, coded as UBYTE. */ #define EM_RR_SEM_SIZE 220 /* * EM_MAX_RR_EVENTS defines maximum number of event traces for the engineering mode. * The number is increased by one to ensure that the event numbers defined in the * corresponding document are the same as in the sources. */ #define EM_MAX_RR_EVENTS 38 /* * The offset is used to indicate the source entity the event trace is from. * L1/ALR = 0x00, DL = 0x2D, RR = 0x37, MM = 0x5F, CC = 0x78, SS = 0xAF, SMS = 0xBE, SIM = E1 */ #define RR_OFFSET 0x37 /* * Definitions for the additional parameters used for the event tracing. */ #define EM_NORMAL 1 #define EM_EXTENDED 2 #define EM_REJECT 3 #define EM_RECONNECT 4 #define EM_TCH_CLOSE 0 #define EM_TCH_OPEN 1 /* #define EM_PLMN_SEARCH_STARTED 0 #define EM_PLMN_SEARCH_FINISHED 1 #define EM_SEARCH_STARTED 0 */ #define EM_SEARCH_FAILED 1 #define EM_SEARCH_PASSED 2 #define EM_STATUS_RX 0 #define EM_STATUS_TX 1 /* * Type is combination of entity index(upper nibble) plus event number(lower nibble). * Bit 8 7 6 5 4 3 2 1 * | entity | event number | */ #define RR_V_1 (1 + RR_OFFSET) #define RR_V_2 (2 + RR_OFFSET) #define RR_V_3 (3 + RR_OFFSET) #define RR_V_5 (5 + RR_OFFSET) #define RR_V_6 (6 + RR_OFFSET) #define RR_V_7 (7 + RR_OFFSET) #define RR_V_8 (8 + RR_OFFSET) #define RR_V_9 (9 + RR_OFFSET) #define RR_V_10 (10+ RR_OFFSET) #define RR_V_11 (11+ RR_OFFSET) #define RR_V_12 (12+ RR_OFFSET) #define RR_V_13 (13+ RR_OFFSET) #define RR_V_14 (14+ RR_OFFSET) #define RR_V_15 (15+ RR_OFFSET) #define RR_V_16 (16+ RR_OFFSET) #define RR_V_17 (17+ RR_OFFSET) #define RR_V_18 (18+ RR_OFFSET) #define RR_V_19 (19+ RR_OFFSET) #define RR_V_20 (20+ RR_OFFSET) #define RR_V_21 (21+ RR_OFFSET) #define RR_V_22 (22+ RR_OFFSET) #define RR_V_23 (23+ RR_OFFSET) #define RR_V_24 (24+ RR_OFFSET) #define RR_V_25 (25+ RR_OFFSET) #define RR_V_26 (26+ RR_OFFSET) #define RR_V_27 (27+ RR_OFFSET) #define RR_V_28 (28+ RR_OFFSET) #define RR_V_29 (29+ RR_OFFSET) #define RR_V_30 (30+ RR_OFFSET) #define RR_V_31 (31+ RR_OFFSET) #define RR_V_32 (32+ RR_OFFSET) #define RR_V_33 (33+ RR_OFFSET) #define RR_V_34 (34+ RR_OFFSET) #define RR_V_35 (35+ RR_OFFSET) #define RR_V_36 (36+ RR_OFFSET) #define RR_V_37 (37+ RR_OFFSET) EXTERN BOOL rr_v[EM_MAX_RR_EVENTS]; EXTERN USHORT em_assign_fail_rr_cause; EXTERN USHORT em_handover_fail_rr_cause; /*#define TRACE_EVENT_EM(s) TRACE_EVENT(s) #define TRACE_EVENT_EM_P1(s,a1) TRACE_EVENT_P1(s,a1) #define TRACE_EVENT_EM_P2(s,a1,a2) TRACE_EVENT_P2(s,a1,a2) #define TRACE_EVENT_EM_P3(s,a1,a2,a3) TRACE_EVENT_P3(s,a1,a2,a3) #define TRACE_EVENT_EM_P4(s,a1,a2,a3,a4) TRACE_EVENT_P4(s,a1,a2,a3,a4) #define TRACE_EVENT_EM_P5(s,a1,a2,a3,a4,a5) TRACE_EVENT_P5(s,a1,a2,a3,a4,a5) #define TRACE_EVENT_EM_P6(s,a1,a2,a3,a4,a5,a6) TRACE_EVENT_P6(s,a1,a2,a3,a4,a5,a6) #define TRACE_EVENT_EM_P8(s,a1,a2,a3,a4,a5,a6,a7,a8) TRACE_EVENT_P8(s,a1,a2,a3,a4,a5,a6,a7,a8)*/ #define TRACE_EVENT_EM(s) TRACE_USER_CLASS (TC_USER8,s) #define TRACE_EVENT_EM_P1(s,a1) TRACE_USER_CLASS_P1(TC_USER8,s,a1) #define TRACE_EVENT_EM_P2(s,a1,a2) TRACE_USER_CLASS_P2(TC_USER8,s,a1,a2) #define TRACE_EVENT_EM_P3(s,a1,a2,a3) TRACE_USER_CLASS_P3(TC_USER8,s,a1,a2,a3) #define TRACE_EVENT_EM_P4(s,a1,a2,a3,a4) TRACE_USER_CLASS_P4(TC_USER8,s,a1,a2,a3,a4) #define TRACE_EVENT_EM_P5(s,a1,a2,a3,a4,a5) TRACE_USER_CLASS_P5(TC_USER8,s,a1,a2,a3,a4,a5) #define TRACE_EVENT_EM_P6(s,a1,a2,a3,a4,a5,a6) TRACE_USER_CLASS_P6(TC_USER8,s,a1,a2,a3,a4,a5,a6) #define TRACE_EVENT_EM_P8(s,a1,a2,a3,a4,a5,a6,a7,a8) TRACE_USER_CLASS_P8(TC_USER8,s,a1,a2,a3,a4,a5,a6,a7,a8) /*---------Functions ---------*/ EXTERN void dat_em_sc_info_req (T_EM_SC_INFO_REQ *em_sc_info_req); EXTERN void dat_em_nc_info_req (T_EM_NC_INFO_REQ *em_nc_info_req); EXTERN void dat_em_loc_pag_info_req (T_EM_LOC_PAG_INFO_REQ *em_loc_pag_info_req); EXTERN void dat_em_plmn_info_req (T_EM_PLMN_INFO_REQ *em_plmn_info_req); EXTERN void dat_em_cip_hop_dtx_info_req (T_EM_CIP_HOP_DTX_INFO_REQ *em_cip_hop_dtx_info_req); EXTERN void dat_em_mobdata_power_info_req (T_EM_POWER_INFO_REQ *em_power_info_req); EXTERN void dat_em_mobdata_id_info_req (T_EM_IDENTITY_INFO_REQ *em_identity_info_req); EXTERN void dat_em_mobdata_version_info_req (T_EM_SW_VERSION_INFO_REQ *em_sw_version_info_req); EXTERN void dat_em_amr_info_req (T_EM_AMR_INFO_REQ *em_amr_info_req); EXTERN void dat_em_get_hchn (USHORT* channel_array, USHORT* channel2_array, UBYTE v_start, UBYTE maio2); EXTERN UBYTE em_get_first_codec (UBYTE acs); EXTERN void em_init_rr_event_trace (void); EXTERN void rr_em_rr_event_req (T_EM_RR_EVENT_REQ *em_rr_event_req); EXTERN void rr_em_pco_trace_req (T_EM_PCO_TRACE_REQ *em_pco_trace_req); #if !defined (WIN32) EXTERN CHAR* sim_version(); EXTERN CHAR* sms_version(); EXTERN CHAR* ss_version (); EXTERN CHAR* cc_version (); EXTERN CHAR* mm_version (); EXTERN CHAR* rr_version (); EXTERN CHAR* dl_version (); EXTERN CHAR* l1_version (); #endif /*---------FMM--------------*/ EXTERN void dat_em_fmm_reselection_start_ind (void); EXTERN void dat_em_fmm_reselection_end_ind (void); EXTERN void dat_em_fmm_sc_info_req (T_EM_FMM_SC_INFO_REQ *em_fmm_sc_info_req); EXTERN void dat_em_fmm_nc_info_req (T_EM_FMM_NC_INFO_REQ *em_fmm_nc_info_req); /* * If all entities are linked into one module this definitions * prefixes all this functions with the enity name */ #ifdef OPTION_MULTITHREAD #define em_write_buffer_2 _ENTITY_PREFIXED(em_write_buffer_2) #define em_write_buffer_3 _ENTITY_PREFIXED(em_write_buffer_3) #define em_write_buffer_3a _ENTITY_PREFIXED(em_write_buffer_3a) #define em_write_buffer_4 _ENTITY_PREFIXED(em_write_buffer_4) #define em_write_buffer_4a _ENTITY_PREFIXED(em_write_buffer_4a) #define em_write_buffer_4b _ENTITY_PREFIXED(em_write_buffer_4b) #define em_write_buffer_4c _ENTITY_PREFIXED(em_write_buffer_4c) #define em_write_buffer_5 _ENTITY_PREFIXED(em_write_buffer_5) #define em_write_buffer_5c _ENTITY_PREFIXED(em_write_buffer_5c) #define em_write_buffer_8 _ENTITY_PREFIXED(em_write_buffer_8) #define em_write_buffer_9 _ENTITY_PREFIXED(em_write_buffer_9) #endif EXTERN UBYTE em_write_buffer_2 (UBYTE event_no); EXTERN UBYTE em_write_buffer_3 (UBYTE event_no, UBYTE value); EXTERN UBYTE em_write_buffer_3a (UBYTE event_no, USHORT value); EXTERN UBYTE em_write_buffer_4 (UBYTE event_no, UBYTE value1, UBYTE value2); EXTERN UBYTE em_write_buffer_4a (UBYTE event_no, UBYTE value, USHORT cs); EXTERN UBYTE em_write_buffer_4b (UBYTE event_no, UBYTE value, T_plmn plmn); EXTERN UBYTE em_write_buffer_4c (UBYTE event_no, UBYTE value1, T_plmn plmn[MAX_PLMN]); EXTERN UBYTE em_write_buffer_5 (UBYTE event_no, UBYTE value1, UBYTE value2, UBYTE value3); EXTERN UBYTE em_write_buffer_5c (UBYTE event_no, UBYTE value1, UBYTE value2, T_plmn plmn); EXTERN UBYTE em_write_buffer_8 (UBYTE event_no, UBYTE value1, UBYTE value2, UBYTE value3, UBYTE value4, UBYTE value5, UBYTE value6); EXTERN UBYTE em_write_buffer_9 (UBYTE event_no, UBYTE value1, UBYTE value2, UBYTE value3, UBYTE value4, UBYTE value5, UBYTE value6, UBYTE value7); /* * Semaphore handling * called by ACI */ /*lint -esym(759,em_rr_sem)*/ /*lint -esym(759,em_rr_sem_read)*/ /*lint -esym(759,em_rr_sem_reset)*/ EXTERN UBYTE em_rr_sem (UBYTE length, UBYTE * data); EXTERN void em_rr_sem_reset (void); EXTERN void em_rr_sem_read (void); EXTERN void em_rr_sem_init (void); EXTERN void em_rr_sem_exit (void); EXTERN void em_init_get_hchn (void); /*------Macro Definition---*/ #define RR_EM_SET_ASSIGN_FAIL_CAUSE(x) (em_assign_fail_rr_cause = x) #define RR_EM_SET_HANDOVER_FAIL_CAUSE(x) (em_handover_fail_rr_cause = x) #define RR_EM_GET_HOPPING_CHANNEL(w,x,y,z) dat_em_get_hchn(w,x,y,z) /*-----------------------Event Macro Definition -----------*/ #define EM_PLMN_SRCH_STARTED\ /* Search for service by MM - started */\ if (rr_v[1]) {\ rr_v[1] = em_write_buffer_3 (RR_V_1 , FULL_SERVICE);\ } #define EM_CELL_SELECTION\ /* Search for full service by RR started */\ if (rr_v[2]) {\ rr_v[2] = em_write_buffer_2 (RR_V_2 );\ } #define EM_NET_SEARCH_FAILED\ /* Search for service by MM/RR - failed */\ if (rr_v[3] ) {\ rr_v[3] = em_write_buffer_4 (RR_V_3 , EM_SEARCH_FAILED,\ abort_ind->op.service);\ } #define EM_PLMN_SRCH_PASSED\ /* Search for service by MM/RR - passed */\ if (rr_v[3] ) {\ rr_v[3] = em_write_buffer_5c (RR_V_3 , EM_SEARCH_PASSED,\ rr_activate_cnf->op.service,\ rr_activate_cnf->plmn);\ } #define EM_HPLMN_SEARCH_PASSED\ /* Search for HPLMN passed */\ if (rr_v[5])\ {\ T_plmn plmn_temp;\ plmn_temp.v_plmn = TRUE;\ memcpy(plmn_temp.mcc, rr_data->nc_data[CR_INDEX].lai.mcc, SIZE_MCC);\ memcpy(plmn_temp.mnc, rr_data->nc_data[CR_INDEX].lai.mnc, SIZE_MNC);\ rr_v[5] = em_write_buffer_4b (RR_V_5, EM_SEARCH_PASSED, plmn_temp);\ } #define EM_HPLMN_SEARCH_FAILED\ /* Search for HPLMN failed */\ if (rr_v[5]) {\ rr_v[5] = em_write_buffer_3 (RR_V_5, EM_SEARCH_FAILED);\ } #define EM_NET_SEARCH_STARTED\ /* Net search - started */\ if (rr_v[6]) {\ rr_v[6] = em_write_buffer_2 (RR_V_6 );\ } #define EM_NET_SEARCH_PASSED\ /* Net search - passed */\ if (rr_v[7]) {\ rr_v[7] = em_write_buffer_4c (RR_V_7 , abort_ind->plmn_avail, abort_ind->plmn);\ } #define EM_IDLE_MODE\ /* Idle */\ if (rr_v[8]) {\ rr_v[8] = em_write_buffer_4a (RR_V_8, rr_data->ms_data.rr_service,\ idle_req->arfcn);\ } #define EM_CELL_RESEL_STARTED\ /* Cell Reselection started */\ if (rr_v[9]) {\ rr_v[9] = em_write_buffer_3 (RR_V_9 , rr_data->sc_data.selection_type);\ } #define EM_CELL_RESEL_FINISHED\ /* Cell reselection finished */\ if (rr_v[10]) {\ rr_v[10] = em_write_buffer_3a (RR_V_10, rr_data->nc_data[SC_INDEX].arfcn);\ } #define EM_PAGING_IND\ /* Paging */\ if (rr_v[11]) {\ rr_v[11] = em_write_buffer_4 (RR_V_11, mph_paging_ind->identity_type,\ mph_paging_ind->channel_needed);\ } #define EM_DOWNLINK_FAILURE\ /* Downlink failure */\ if (rr_v[12]) {\ rr_v[12] = em_write_buffer_2 (RR_V_12);\ } #define EM_CHANNEL_REQUEST_SENT\ /* Channel request*/\ if (rr_v[13]) {\ rr_v[13] = em_write_buffer_5 (RR_V_13, mph_random_access_cnf->frame_no.t1,\ mph_random_access_cnf->frame_no.t2,\ mph_random_access_cnf->frame_no.t3);\ } #define EM_IMMEDIATE_ASSIGNMENT\ /* Immediate Assignment */\ if (rr_v[14]) {\ if (imm_assign->chan_desc.hop EQ H_NO)\ rr_v[14] = em_write_buffer_9 (RR_V_14, EM_NORMAL,\ imm_assign->chan_desc.chan_type,\ imm_assign->chan_desc.tn,\ imm_assign->chan_desc.tsc,\ imm_assign->chan_desc.hop,\ (UBYTE)(imm_assign->chan_desc.arfcn>>8),\ (UBYTE)(imm_assign->chan_desc.arfcn));\ else\ rr_v[14] = em_write_buffer_9 (RR_V_14, EM_NORMAL,\ imm_assign->chan_desc.chan_type,\ imm_assign->chan_desc.tn,\ imm_assign->chan_desc.tsc,\ imm_assign->chan_desc.hop,\ imm_assign->chan_desc.maio,\ imm_assign->chan_desc.hsn);\ } #define EM_IMMEDIATE_ASSIGNMENT_EXT\ /* Immediate Assignment */\ if (rr_v[14]) {\ if (p_chan_desc->hop EQ H_NO)\ rr_v[14] = em_write_buffer_9 (RR_V_14, EM_EXTENDED,\ p_chan_desc->chan_type,p_chan_desc->tn,\ p_chan_desc->tsc, p_chan_desc->hop,\ (UBYTE)(p_chan_desc->arfcn>>8),\ (UBYTE)(p_chan_desc->arfcn));\ else\ rr_v[14] = em_write_buffer_9 (RR_V_14, EM_EXTENDED,\ p_chan_desc->chan_type,p_chan_desc->tn,\ p_chan_desc->tsc, p_chan_desc->hop,\ p_chan_desc->maio, p_chan_desc->hsn);\ } #define EM_IMMEDIATE_ASSIGNMENT_REJECT\ /* Immediate Assignment reject */\ if (rr_v[15])\ rr_v[15] = em_write_buffer_3 (RR_V_15, t3122); #define EM_DL_ESTABLISH_CNF\ /* Layer 2 connection establishment */\ if (rr_v[16]) {\ rr_v[16] = em_write_buffer_3 (RR_V_16, dl_establish_cnf->ch_type);\ } #define EM_L2_CONNECTION_ESTABLISHED\ /* Layer 2 connection establishment */\ if (rr_v[16]) {\ rr_v[16] = em_write_buffer_3 (RR_V_16, dl_establish_cnf->ch_type);\ } #define EM_EARLY_CLASSMARK_SENDING\ /* Early classmark sending */\ if (rr_v[17]) {\ rr_v[17] = em_write_buffer_2 (RR_V_17);\ } #define EM_CLASSMARK_ENQUIRY\ /* Classmark interrogation */\ if (rr_v[18])\ rr_v[18] = em_write_buffer_2 (RR_V_18); #define EM_ASSIGNMENT_RECEIVED\ /* Assignment received */\ if (rr_v[19]) {\ if (dedicated_req->ch_type.h EQ H_NO)\ rr_v[19] = em_write_buffer_8 (RR_V_19,\ dedicated_req->ch_type.ch,\ dedicated_req->ch_type.tn,\ dedicated_req->ch_type.tsc,\ dedicated_req->ch_type.h,\ (UBYTE)(dedicated_req->ch_type.arfcn>>8),\ (UBYTE)(dedicated_req->ch_type.arfcn));\ else\ rr_v[19] = em_write_buffer_8 (RR_V_19,\ dedicated_req->ch_type.ch,\ dedicated_req->ch_type.tn,\ dedicated_req->ch_type.tsc,\ dedicated_req->ch_type.h,\ dedicated_req->ch_type.maio,\ dedicated_req->ch_type.hsn);\ } #define EM_ASS_FAILURE_RECONNECT_SUCCESS\ /* Assignment failure reconnect */\ if (rr_v[20]) {\ rr_v[20] = em_write_buffer_4a (RR_V_20, EM_RECONNECT, em_assign_fail_rr_cause);\ } #define EM_ASS_FAILURE_RECONNECT_FAILED2\ /* Assignment failure reconnect */\ if (rr_v[20]) {\ rr_v[20] = em_write_buffer_4a (RR_V_20, EM_RECONNECT,\ em_assign_fail_rr_cause);\ } #define EM_ASS_FAILURE_RECONNECT_FAILED\ /* Assignment failure, loss of call */\ if (rr_v[21]) {\ rr_v[21] = em_write_buffer_2 (RR_V_21);\ } #define EM_ASSIGNMENT_COMPLETE\ /* Assignment complete */\ if (rr_v[22]) {\ rr_v[22] = em_write_buffer_2 (RR_V_22);\ } #define EM_HANDOVER_CMD\ /* Handover */\ if (rr_v[23]) {\ if (handov_cmd->chan_desc_after.hop EQ H_NO)\ rr_v[23] = em_write_buffer_9 (RR_V_23, rr_data->ms_data.ho_type.si,\ dedicated_req->ch_type.ch,\ dedicated_req->ch_type.tn,\ dedicated_req->ch_type.tsc,\ dedicated_req->ch_type.h,\ (UBYTE)(dedicated_req->ch_type.arfcn>>8),\ (UBYTE)(dedicated_req->ch_type.arfcn));\ else\ rr_v[23] = em_write_buffer_9 (RR_V_23, rr_data->ms_data.ho_type.si,\ dedicated_req->ch_type.ch,\ dedicated_req->ch_type.tn,\ dedicated_req->ch_type.tsc,\ dedicated_req->ch_type.h,\ dedicated_req->ch_type.maio,\ dedicated_req->ch_type.hsn);\ } #define EM_HO_FAILURE_RECONNECT_SUCCESS\ /* Handover failure reconnect */\ if (rr_v[24]) {\ rr_v[24] = em_write_buffer_4a (RR_V_24, EM_RECONNECT,\ em_handover_fail_rr_cause);\ } #define EM_DL_RELEASE_IND\ switch (GET_STATE (STATE_DAT))\ {\ case DAT_HANDOVER:\ case DAT_HANDOVER_5:\ /* Handover failure reject */\ if (rr_v[24] ) {\ rr_v[24] = em_write_buffer_4a (RR_V_24, EM_REJECT,\ em_handover_fail_rr_cause);\ }\ break;\ case DAT_CHAN_ASS:\ case DAT_CHAN_ASS_2:\ /* Assignment failure reject */\ if (rr_v[20] ) {\ rr_v[20] = em_write_buffer_4a (RR_V_20, EM_REJECT,\ em_assign_fail_rr_cause);\ }\ break;\ default:\ break;\ } #define EM_HO_FAILURE_RECONNECT_FAILED2\ /* Handover failure reconnect */\ if (rr_v[24]) {\ rr_v[24] = em_write_buffer_4a (RR_V_24, EM_RECONNECT,\ em_handover_fail_rr_cause);\ } #define EM_HO_FAILURE_RECONNECT_FAILED\ /* Handover failure, loss of call */\ if (rr_v[25]) {\ rr_v[25] = em_write_buffer_2 (RR_V_25);\ } /* rr_v[25] */ #define EM_HANDOVER_COMPLETE\ /* Handover complete */\ if (rr_v[26]) {\ rr_v[26] = em_write_buffer_2 (RR_V_26);\ } #define EM_FREQ_REDEF\ /* Freq redefinition */\ if (rr_v[27]) {\ rr_v[27] = em_write_buffer_8 (RR_V_27, freq_redef_req->ch_type.ch,\ freq_redef_req->ch_type.tn,\ freq_redef_req->ch_type.tsc,\ freq_redef_req->ch_type.tsc,\ freq_redef_req->ch_type.maio,\ freq_redef_req->ch_type.hsn);\ } #define EM_CIPHERING_CMD\ /* Cipher mode setting */\ if (rr_v[28])\ rr_v[28] = em_write_buffer_2 (RR_V_28); #define EM_CHANNEL_MODE_MODIFY\ /* Channel mode modify started */\ if (rr_v[29]) {\ rr_v[29] = em_write_buffer_3 (RR_V_29, chan_mod->chan_mode);\ } #define EM_CHANNEL_MODE_MODIFY_ACK\ /* Channel mode modify result */\ if (rr_v[30]) {\ rr_v[30] = em_write_buffer_3 (RR_V_30, chan_mod_ack->chan_mode);\ } #define EM_CHANNEL_RELEASE\ /* Channel release */\ if (rr_v[31])\ rr_v[31] = em_write_buffer_3a (RR_V_31, chan_rel->rr_cause); #define EM_RADIO_LINK_FAILURE\ /* Radio link failure */\ if (rr_v[32]) {\ rr_v[32] = em_write_buffer_2 (RR_V_32);\ } #define EM_L2_CONNECTION_LOST\ /* Loss of layer 2 connection */\ if (rr_v[33])\ {\ rr_v[33] = em_write_buffer_3a (RR_V_33, dl_release_ind->cs);\ } #define EM_RR_STATUS_SEND\ /* Status sent */\ if (rr_v[34]) {\ rr_v[34] = em_write_buffer_4a (RR_V_34, EM_STATUS_TX, rr_status->rr_cause);\ } #define EM_RR_STATUS_RECEIVED\ /* Status received */\ if (rr_v[34])\ rr_v[34] = em_write_buffer_3 (RR_V_34, EM_STATUS_RX); #define EM_TCH_LOOP_CLOSED\ /* TCH loop closed */\ if (rr_v[35])\ rr_v[35] = em_write_buffer_3 (RR_V_35, EM_TCH_CLOSE); #define EM_TCH_LOOP_OPEN\ /* TCH loop opened */\ if (rr_v[35])\ rr_v[35] = em_write_buffer_3 (RR_V_35, EM_TCH_OPEN); #define EM_TEST_INTERFACE\ /* Test interface */\ if (rr_v[36])\ rr_v[36] = em_write_buffer_2 (RR_V_36); #define EM_DEACTIVATION\ /* Deactivation */\ if (rr_v[37]) {\ rr_v[37] = em_write_buffer_2 (RR_V_37);\ } /*-------FMM------------*/ #ifdef GPRS #define EM_FMM_RESEL_START_IND \ /*inform FMM1251 that reselection has started*/\ dat_em_fmm_reselection_start_ind() #define EM_FMM_RESEL_END_IND \ /*inform fmmm1251 about successfull reselection*/\ dat_em_fmm_reselection_end_ind() #else /*no GPRS*/ #define EM_FMM_RESEL_START_IND /*for Microtec FMM1251 */ #define EM_FMM_RESEL_END_IND /*for Microtec FMM1251 */ #endif /*GPRS*/ #else /*FF_EM_MODE not defined*/ #define RR_EM_SET_ASSIGN_FAIL_CAUSE(x) #define RR_EM_SET_HANDOVER_FAIL_CAUSE(x) #define RR_EM_GET_HOPPING_CHANNEL(w,x,y,z) #define EM_PLMN_SRCH_STARTED /* Event 1 */ #define EM_CELL_SELECTION /* Event 2 */ #define EM_NET_SEARCH_FAILED /* Event 3 */ #define EM_PLMN_SRCH_PASSED /* Event 3 */ #define EM_HPLMN_SEARCH_STARTED /* Event 4 */ #define EM_HPLMN_SEARCH_PASSED /* Event 5 */ #define EM_HPLMN_SEARCH_FAILED /* Event 5 */ #define EM_NET_SEARCH_STARTED /* Event 6 */ #define EM_NET_SEARCH_PASSED /* Event 7 */ #define EM_IDLE_MODE /* Event 8 */ #define EM_CELL_RESEL_STARTED /* Event 9*/ #define EM_CELL_RESEL_FINISHED /* Event 10*/ #define EM_PAGING_IND /* Event 11*/ #define EM_DOWNLINK_FAILURE /* Event 12*/ #define EM_CHANNEL_REQUEST_SENT /* Event 13*/ #define EM_IMMEDIATE_ASSIGNMENT /* Event 14*/ #define EM_IMMEDIATE_ASSIGNMENT_EXT /* Event 14*/ #define EM_IMMEDIATE_ASSIGNMENT_REJECT /* Event 15*/ #define EM_DL_ESTABLISH_CNF /* Event 16*/ #define EM_L2_CONNECTION_ESTABLISHED /* Event 16*/ #define EM_EARLY_CLASSMARK_SENDING /* Event 17*/ #define EM_CLASSMARK_ENQUIRY /* Event 18*/ #define EM_ASSIGNMENT_RECEIVED /* Event 19*/ #define EM_ASS_FAILURE_RECONNECT_SUCCESS /* Event 20*/ #define EM_DL_RELEASE_IND /* Event 24 or Event 20 */ #define EM_ASS_FAILURE_RECONNECT_FAILED2 /* Event 20*/ #define EM_ASS_FAILURE_RECONNECT_FAILED /* Event 21*/ #define EM_ASSIGNMENT_COMPLETE /* Event 22*/ #define EM_HANDOVER_CMD /* Event 23*/ #define EM_HO_FAILURE_RECONNECT_SUCCESS /* Event 24*/ #define EM_HO_FAILURE_RECONNECT_FAILED2 /* Event 24*/ #define EM_HO_FAILURE_RECONNECT_FAILED /* Event 25*/ #define EM_HANDOVER_COMPLETE /* Event 26*/ #define EM_FREQ_REDEF /* Event 27*/ #define EM_CIPHERING_CMD /* Event 28*/ #define EM_CHANNEL_MODE_MODIFY /* Event 29*/ #define EM_CHANNEL_MODE_MODIFY_ACK /* Event 30*/ #define EM_CHANNEL_RELEASE /* Event 31*/ #define EM_RADIO_LINK_FAILURE /* Event 32*/ #define EM_L2_CONNECTION_LOST /* Event 33*/ #define EM_RR_STATUS_SEND /* Event 34*/ #define EM_RR_STATUS_RECEIVED /* Event 34*/ #define EM_TCH_LOOP_CLOSED /* Event 35*/ #define EM_TCH_LOOP_OPEN /* Event 36*/ #define EM_TEST_INTERFACE /* Event 37*/ #define EM_DEACTIVATION /* Event 38*/ #define EM_FMM_RESEL_START_IND /*for Microtec FMM1251 */ #define EM_FMM_RESEL_END_IND /*for Microtec FMM1251 */ #endif /*FF_EM_MODE*/ #endif /* RR_EM_H */