diff options
Diffstat (limited to 'library/RLCMAC_CSN1_Templates.ttcn')
-rw-r--r-- | library/RLCMAC_CSN1_Templates.ttcn | 310 |
1 files changed, 310 insertions, 0 deletions
diff --git a/library/RLCMAC_CSN1_Templates.ttcn b/library/RLCMAC_CSN1_Templates.ttcn index 21a7c463..a4f59f08 100644 --- a/library/RLCMAC_CSN1_Templates.ttcn +++ b/library/RLCMAC_CSN1_Templates.ttcn @@ -19,6 +19,28 @@ module RLCMAC_CSN1_Templates { import from MobileL3_GMM_SM_Types all; import from RLCMAC_CSN1_Types all; + /* 11.2.1 Packet Access Reject */ + template PacketAccessRejectStruct tr_PacketAccessRejectStruct_TLLI(template GprsTlli tlli := ?, + template uint8_t wait_ind := *, + template BIT1 wait_ind_size := *) := { + id_type := '0'B, + id := { + tlli := tlli + }, + wait_ind_presence := ?, + wait_ind := wait_ind, + wait_ind_size := wait_ind_size + } + template RlcmacDlCtrlMsg tr_RlcMacDlCtrl_PKT_ACC_REJ(template PacketAccessRejectStruct rej := ?) := { + msg_type := PACKET_ACCESS_REJECT, + u := { + access_reject := { + page_mode := ?, + reject_struct := rej + } + } + } + template (value) RlcmacUlCtrlMsg ts_RlcMacUlCtrl_PKT_CTRL_ACK(GprsTlli tlli, CtrlAck ack := MS_RCVD_TWO_RLC_SAME_RTI_DIFF_RBSN) := { msg_type := PACKET_CONTROL_ACK, @@ -79,6 +101,18 @@ module RLCMAC_CSN1_Templates { RlcOctetCount := 0 } + template (value) ChannelReqDescription ts_ChannelReqDescription(uint4_t peak_tput_class := 0, + uint2_t priority := 0, + RlcMode rlc_mode := RLC_MODE_ACKNOWLEDGED, + LlcPduType llc_pdu_type := LLC_PDU_IS_NOT_SACK_OR_ACK, + uint16_t RlcOctetCount := 0) := { + peak_tput_class := peak_tput_class, + priority := priority, + rlc_mode := rlc_mode, + llc_pdu_type := llc_pdu_type, + RlcOctetCount := RlcOctetCount + }; + /* TS 44.060 sec 11.2.16 */ template (value) RlcmacUlCtrlMsg ts_RlcMacUlCtrl_PKT_RES_REQ(GprsTlli tlli, template (omit) MSRadioAccessCapabilityV ms_rac, @@ -108,6 +142,275 @@ module RLCMAC_CSN1_Templates { } }; + const CCNMeasReport ccn_meas_rep_def := { + rxlev_servig_cell := 0, + zero := '0'B, + num_meas := 0, + meas := { } + } + + /* TS 44.060 sec 11.2.3a */ + template (value) RlcmacUlCtrlMsg ts_RlcMacUlCtrl_PKT_CELL_CHG_NOTIF(uint5_t tfi, + GsmArfcn arfcn, + uint6_t bsic, + template (value) CCNMeasReport ccn_meas_rep := ccn_meas_rep_def) + := { + msg_type := PACKET_CELL_CHANGE_NOTIFICATION, + u := { + cell_chg_notif := { + gtfi := { + is_dl_tfi := false, + tfi := tfi + }, + u := { + u0 := { + tag := '0'B, + arfcn := arfcn, + bsic := bsic + } + }, + ba_psi3_presence := '0'B, + ba_used := '0'B, + psi3_change_mark := omit, + pmo_used := '0'B, + pccn_sending := '0'B, + ccn_meas_rep := ccn_meas_rep, + rel_additions := omit + } + } + }; + + /* TS 44.060 sec 11.2.3a */ + template (value) RlcmacUlCtrlMsg ts_RlcMacUlCtrl_PKT_CELL_CHG_NOTIF_UTRAN(uint5_t tfi, + uint14_t uarfcn, + uint10_t scrambling_code, + template (value) CCNMeasReport ccn_meas_rep := ccn_meas_rep_def) + := { + msg_type := PACKET_CELL_CHANGE_NOTIFICATION, + u := { + cell_chg_notif := { + gtfi := { + is_dl_tfi := false, + tfi := tfi + }, + u := { + u10 := { + tag := '10'B, + utran_target_cell := { + fdd_presence := '1'B, + fdd := { + arfcn := uarfcn, + bandwidth_presence := '0'B, + bandwidth := omit, + scrambling_code := scrambling_code + }, + tdd_presence := '0'B, + tdd := omit, + reporting_quantity := 1 + } + } + }, + ba_psi3_presence := '0'B, + ba_used := '0'B, + psi3_change_mark := omit, + pmo_used := '0'B, + pccn_sending := '0'B, + ccn_meas_rep := ccn_meas_rep, + rel_additions := omit + } + } + }; + + /* TS 44.060 sec 11.2.3a */ + template (value) RlcmacUlCtrlMsg ts_RlcMacUlCtrl_PKT_CELL_CHG_NOTIF_EUTRAN(uint5_t tfi, + uint16_t earfcn, + uint9_t phys_layer_cell_id, + template (value) CCNMeasReport ccn_meas_rep := ccn_meas_rep_def) + := { + msg_type := PACKET_CELL_CHANGE_NOTIFICATION, + u := { + cell_chg_notif := { + gtfi := { + is_dl_tfi := false, + tfi := tfi + }, + u := { + u110 := { + tag := '110'B, + arfcn_bsic_presence := '0'B, + arfcn := omit, + bsic := omit, + + utran_target_cell_presence := '0'B, + utran_target_cell := omit, + + eutran_target_cell_presence := '1'B, + eutran_target_cell := { + earfcn := earfcn, + meas_bandwidth_presence := '0'B, + meas_bandwidth := omit, + phys_layer_cell_id := phys_layer_cell_id, + reporting_quantity := 1 + }, + eutran_ccn_meas_rep_presence := '1'B, + eutran_ccn_meas_rep := { + utran_ba_used := 0, + n_eutran := 1, + cells := {{frequency_list_index := 1, + cell_identity := phys_layer_cell_id, + reporting_quantity := 1}} + } + } + }, + ba_psi3_presence := '0'B, + ba_used := '0'B, + psi3_change_mark := omit, + pmo_used := '0'B, + pccn_sending := '0'B, + ccn_meas_rep := ccn_meas_rep, + rel_additions := omit + } + } + }; + + /* TS 44.060 sec 11.2.2a */ + template RlcmacDlCtrlMsg tr_RlcMacDlCtrl_PKT_CELL_CHG_CONTINUE(template GlobalTfi tfi := ?) + := { + msg_type := PACKET_CELL_CHANGE_CONTINUE, + u := { + cell_chg_continue := { + page_mode := ?, + zero := '0'B, + gtfi := tfi, + arfcn_bsic_presence := ?, + arfcn := *, + bsic := *, + container_id := * + } + } + }; + + /* TS 44.060 sec 11.2.9 */ + template (value) NCMeasurement ts_NCMeasurement(uint6_t frequency_n, BIT6 bsic, uint6_t rxlev) + := { + frequency_n := frequency_n, + bsic_n_presence := '1'B, + bsic_n := bsic, + rxlev_n := rxlev + }; + template (value) NCMeasurementReport ts_NCMeasurementReport(BIT1 nc_mode, + uint6_t rxlev_serving_cell, + template (value) NCMeasurementList nc_meas_list := {}) + := { + nc_mode := nc_mode, + rxlev_serving_cell := rxlev_serving_cell, + zero := '0'B, + num_nc_measurements := 0, /* automatically updated */ + nm_measurements := nc_meas_list + }; + template RlcmacUlCtrlMsg ts_RlcMacUlCtrl_PKT_MEAS_REPORT(template (value) GprsTlli tlli, + template (value) NCMeasurementReport nc_meas_rep) + := { + msg_type := PACKET_MEASUREMENT_REPORT, + u := { + meas_report := { + tlli := tlli, + psi5_change_mark_presence := '0'B, + psi5_change_mark := omit, + additions_99 := '0'B, + nc_meas_report := nc_meas_rep + } + } + }; + + /* TS 44.060 sec 11.2.9b */ + template RepeatedAddFrequencyItem tr_RepeatedAddFrequencyItem(template (present) uint10_t start_frequency := ?, + template (present) uint6_t bsic := ?) + := { + presence := '1'B, + item := { + start_frequency := start_frequency, + bsic := bsic, + cell_sel_par_present := ?, + cell_sel_par := *, + nr_of_frequencies := 0, + freq_diff_length := ? + /* TODO: support Frequency diff list */ + } + }; + template NCFrequencyList tr_NCFrequencyList(template FreqIndexList removed_freq_index := *, template RepeatedAddFrequencyItemList repeated_add_frequency := *) + := { + removed_freq_present := ?, + nr_of_removed_freq := *, + removed_freq_index := removed_freq_index, + repeated_add_frequency := repeated_add_frequency, + repeated_add_frequency_term := '0'B + }; + template NCMeasurementParameters tr_NCMeasurementParameters(template (present) NetworkControlOrder nco := ?, + template uint3_t nc_non_drx_period := *, + template uint3_t nc_reporting_period_i := *, + template uint3_t nc_reporting_period_t := *, + template NCFrequencyList nc_freq_list := *) + := { + nco := nco, + nc_period_present := ?, + nc_non_drx_period := nc_non_drx_period, + nc_reporting_period_i := nc_reporting_period_i, + nc_reporting_period_t := nc_reporting_period_t, + nc_freq_list_present := ?, + nc_freq_list := nc_freq_list + }; + /* This template is used by osmo-pcu to reset the GSM Neighbour Cell List of the MS */ + template (value) NCMeasurementParameters ts_NCMeasurementParametersRESET + := { + nco := NC_RESET, + nc_period_present := '0'B, + nc_non_drx_period := omit, + nc_reporting_period_i := omit, + nc_reporting_period_t := omit, + nc_freq_list_present := '0'B, + nc_freq_list := omit + }; + template RlcmacDlCtrlMsg tr_RlcMacDlCtrl_PKT_MEAS_ORDER(template (present) GlobalTfiOrTlli tfi_or_tlli := ?, + template (present) uint3_t pmo_index := ?, + template (present) uint3_t pmo_count := ?, + template (present) NCMeasurementParameters nc_meas_param := ?) + := { + msg_type := PACKET_MEASUREMENT_ORDER, + u := { + meas_order := { + page_mode := ?, + tfi_or_tlli := tfi_or_tlli, + pmo_index := pmo_index, + pmo_count := pmo_count, + nc_meas_param_present := '1'B, + nc_meas_param := nc_meas_param, + zero := '0'B + } + } + }; + + /* TS 44.060 sec 11.2.9e */ + template RlcmacDlCtrlMsg tr_RlcMacDlCtrl_PKT_NEIGH_CELL_DATA(template (present) GlobalTfi tfi := ?, + template (present) uint5_t container_index := ?) + := { + msg_type := PACKET_NEIGHBOUR_CELL_DATA, + u := { + neighbour_cell_data := { + page_mode := ?, + zero := '0'B, + gtfi := tfi, + container_id := ?, + spare := '0'B, + container_index := container_index, + arfcn_bsic_presence := ?, + arfcn := *, + bsic := *, + container_list := ? + } + } + }; + private function f_presence_bit_tfi(template uint5_t tfi) return BIT1 { if (istemplatekind(tfi, "omit")) { return '0'B; @@ -196,6 +499,7 @@ module RLCMAC_CSN1_Templates { }; template UlAckNackEgprs tr_UlAckNackEgprs(template GprsTlli tlli := *) := { + msg_excape := '00'B, ch_coding_cmd := ?, resegment := ?, preemptive_tx := ?, @@ -212,4 +516,10 @@ module RLCMAC_CSN1_Templates { pwr_ctrl := * }; + template (value) EgprsAckNackDescriptionIE ts_EgprsAckNackDescriptionIE(template (value) EgprsAckNackDescription andesc) := { + len_present := '1'B, + len := 0, /* Overwritten by RAW encoder */ + acknack_desc := andesc + } + } with { encode "RAW"; variant "FIELDORDER(msb)" variant "BYTEORDER(last)" }; |