FreeCalypso > hg > fc-magnetite
diff src/g23m-gsm/rr/rr_em.h @ 104:27a4235405c6
src/g23m-gsm: import from LoCosto source
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 04 Oct 2016 18:24:05 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/g23m-gsm/rr/rr_em.h Tue Oct 04 18:24:05 2016 +0000 @@ -0,0 +1,664 @@ +/* ++----------------------------------------------------------------------------- +| 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 */ +