aboutsummaryrefslogtreecommitdiffstats
path: root/library/RLCMAC_CSN1_Types.ttcn
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2021-06-17 17:07:33 +0200
committerPau Espin Pedrol <pespin@sysmocom.de>2021-06-25 13:28:20 +0200
commit52c54854624eb1d0d3b8fe05dc115626c50ff780 (patch)
tree4b9bee5bad78ce4150ec761c581c6ffcac755f5f /library/RLCMAC_CSN1_Types.ttcn
parent0d6fd3eff2b33e764395e70e90ca766fcd6e72ce (diff)
CSN1: Support enc/dec of Packet Measurement related messages
Diffstat (limited to 'library/RLCMAC_CSN1_Types.ttcn')
-rw-r--r--library/RLCMAC_CSN1_Types.ttcn110
1 files changed, 110 insertions, 0 deletions
diff --git a/library/RLCMAC_CSN1_Types.ttcn b/library/RLCMAC_CSN1_Types.ttcn
index 0dd8a8b9..d9a56626 100644
--- a/library/RLCMAC_CSN1_Types.ttcn
+++ b/library/RLCMAC_CSN1_Types.ttcn
@@ -163,6 +163,80 @@ module RLCMAC_CSN1_Types {
variant (tbf_starting_time) "PRESENCE(tbf_starting_time_present = '1'B)"
};
+ /* 11.2.9b Packet Measurement Order */
+ type enumerated NetworkControlOrder {
+ NC_0 ('00'B),
+ NC_1 ('01'B),
+ NC_2 ('10'B),
+ NC_RESET ('11'B)
+ } with { variant "FIELDLENGTH(2)" };
+ type record CellSelection {
+ BIT1 cell_barr_access_2,
+ BIT1 exc_acc,
+ BIT1 same_ra_as_serving_cell,
+ BIT1 gprs_rxlev_access_min_present ('0'B),
+ BIT1 gprs_temporary_offset_present ('0'B),
+ BIT1 gprs_reselct_offset_present ('0'B),
+ BIT1 hcs_params_present ('0'B),
+ BIT1 si13_pbcch_location_present ('0'B)
+ /* TODO: add optional parameters above^ */
+ };
+ type record AddFrequency {
+ uint10_t start_frequency,
+ uint6_t bsic,
+ BIT1 cell_sel_par_present,
+ CellSelection cell_sel_par optional,
+ uint5_t nr_of_frequencies,
+ uint3_t freq_diff_length
+ /* TODO: support Frequency diff list */
+ } with {
+ variant (cell_sel_par) "PRESENCE(cell_sel_par_present = '1'B)"
+ };
+ type record RepeatedAddFrequencyItem {
+ BIT1 presence,
+ AddFrequency item
+ } with { variant "PRESENCE(presence = '1'B)" };
+ type record of uint6_t FreqIndexList;
+ type record of RepeatedAddFrequencyItem RepeatedAddFrequencyItemList;
+ type record NCFrequencyList {
+ BIT1 removed_freq_present,
+ uint5_t nr_of_removed_freq optional,
+ FreqIndexList removed_freq_index optional,
+ RepeatedAddFrequencyItemList repeated_add_frequency optional,
+ BIT1 repeated_add_frequency_term ('0'B)
+ } with {
+ variant (nr_of_removed_freq) "PRESENCE(removed_freq_present = '1'B)"
+ variant (removed_freq_index) "PRESENCE(removed_freq_present = '1'B)"
+ variant (nr_of_removed_freq) "LENGTHTO(removed_freq_index)-1"
+ variant (nr_of_removed_freq) "UNIT(elements)"
+ };
+ type record NCMeasurementParameters {
+ NetworkControlOrder nco,
+ BIT1 nc_period_present,
+ uint3_t nc_non_drx_period optional,
+ uint3_t nc_reporting_period_i optional,
+ uint3_t nc_reporting_period_t optional,
+ BIT1 nc_freq_list_present,
+ NCFrequencyList nc_freq_list optional
+ } with {
+ variant (nc_non_drx_period) "PRESENCE(nc_period_present = '1'B)"
+ variant (nc_reporting_period_i) "PRESENCE(nc_period_present = '1'B)"
+ variant (nc_reporting_period_t) "PRESENCE(nc_period_present = '1'B)"
+ variant (nc_freq_list) "PRESENCE(nc_freq_list_present = '1'B)"
+ };
+ type record PacketMeasOrder {
+ PageMode page_mode,
+ GlobalTfiOrTlli tfi_or_tlli,
+ uint3_t pmo_index,
+ uint3_t pmo_count,
+ BIT1 nc_meas_param_present,
+ NCMeasurementParameters nc_meas_param optional,
+ BIT1 zero('0'B) /* The value '1' was allocated in an earlier version of the protocol and shall not be used. */
+ /* TODO: support Additions 98 onwards */
+ } with {
+ variant (nc_meas_param) "PRESENCE(nc_meas_param_present = '1'B)"
+ };
+
private type record PktDlAssRelAdditions {
BIT1 rel99_presence, // 0/1
PktDlAssR99Additions rel99 optional
@@ -632,6 +706,7 @@ module RLCMAC_CSN1_Types {
/* 11.2.0.1 */
type union RlcmacDlCtrlUnion {
PacketDlAssignment dl_assignment,
+ PacketMeasOrder meas_order,
PacketUlAssignment ul_assignment,
PacketPagingReq paging,
PacketUlAckNack ul_ack_nack,
@@ -647,6 +722,7 @@ module RLCMAC_CSN1_Types {
RlcmacDlCtrlUnion u
} with {
variant (u) "CROSSTAG(dl_assignment, msg_type = PACKET_DL_ASSIGNMENT;
+ meas_order, msg_type = PACKET_MEASUREMENT_ORDER;
ul_assignment, msg_type = PACKET_UL_ASSIGNMENT;
paging, msg_type = PACKET_PAGING_REQUEST;
ul_ack_nack, msg_type = PACKET_UL_ACK_NACK;
@@ -759,6 +835,38 @@ module RLCMAC_CSN1_Types {
variant (tlli) "BYTEORDER(first)"
};
+ /* 11.2.9 Packet Measurement Report */
+ type record NCMeasurement {
+ uint6_t frequency_n,
+ BIT1 bsic_n_presence,
+ BIT6 bsic_n optional,
+ uint6_t rxlev_n
+ } with {
+ variant (bsic_n) "PRESENCE(bsic_n_presence = '1'B)"
+ };
+ type record of NCMeasurement NCMeasurementList;
+ type record NCMeasurementReport {
+ BIT1 nc_mode,
+ uint6_t rxlev_serving_cell,
+ BIT1 zero ('0'B), /*The value '1' was allocated in an earlier version of the protocol and shall not be used.*/
+ uint3_t num_nc_measurements,
+ NCMeasurementList nm_measurements
+ } with {
+ variant (num_nc_measurements) "LENGTHTO(nm_measurements)"
+ variant (num_nc_measurements) "UNIT(elements)"
+ };
+ type record PacketMeasReport {
+ GprsTlli tlli,
+ BIT1 psi5_change_mark_presence,
+ BIT2 psi5_change_mark optional,
+ BIT1 additions_99 ('0'B), /* TODO: 1 -> support Additions 99 onwards */
+ NCMeasurementReport nc_meas_report optional
+ } with {
+ variant (tlli) "BYTEORDER(first)"
+ variant (psi5_change_mark) "PRESENCE(psi5_change_mark_presence = '1'B)"
+ variant (nc_meas_report) "PRESENCE(additions_99 = '0'B)"
+ };
+
/* TS 44.060 sec 12.30 MS Radio Access Capability 2
* (for value part, see 3GPP TS 24.008 sec 10.5.5.12a and table 10.5.146) */
type union MSRadioAccCap2 {
@@ -844,6 +952,7 @@ module RLCMAC_CSN1_Types {
PacketDlAckNack dl_ack_nack,
EgprsPacketDlAckNack dl_ack_nack_egprs,
PacketUlDummy ul_dummy,
+ PacketMeasReport meas_report,
PacketResourceReq resource_req,
PacketCellChangeNotification cell_chg_notif,
octetstring other
@@ -857,6 +966,7 @@ module RLCMAC_CSN1_Types {
dl_ack_nack, msg_type = PACKET_DL_ACK_NACK;
dl_ack_nack_egprs, msg_type = PACKET_EGPRS_DL_ACK_NACK;
ul_dummy, msg_type = PACKET_UL_DUMMY_CTRL;
+ meas_report, msg_type = PACKET_MEASUREMENT_REPORT;
resource_req, msg_type = PACKET_RESOURCE_REQUEST;
cell_chg_notif, msg_type = PACKET_CELL_CHANGE_NOTIFICATION;
other, OTHERWISE