laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/32995 )
Change subject: RLCMAC_CSN1_Types: Add release 6 and release 8 additions to PacketCellChangeNotification ......................................................................
RLCMAC_CSN1_Types: Add release 6 and release 8 additions to PacketCellChangeNotification
The PacketCellChangeNotification type currently lacks the release 6 and the release 8 additions. Those basically add 3G and 4g/5g compatibility to the PacketCellChangeNotification message type.
Spec reference: 3gpp TS 44.060 11.2.3a
Related: OS#6044 Co-authored-by: Vadim Yanitskiy vyanitskiy@sysmocom.de Change-Id: I4e1c63c06fb89111765df187a93db563e77c3fc4 --- M library/RLCMAC_CSN1_Templates.ttcn M library/RLCMAC_CSN1_Types.ttcn 2 files changed, 155 insertions(+), 12 deletions(-)
Approvals: laforge: Looks good to me, approved fixeria: Looks good to me, but someone else must approve Jenkins Builder: Verified
diff --git a/library/RLCMAC_CSN1_Templates.ttcn b/library/RLCMAC_CSN1_Templates.ttcn index 943717e..000709d 100644 --- a/library/RLCMAC_CSN1_Templates.ttcn +++ b/library/RLCMAC_CSN1_Templates.ttcn @@ -162,15 +162,20 @@ is_dl_tfi := false, tfi := tfi }, - arfcn_bsic_presence := '0'B, - arfcn := arfcn, - bsic := bsic, + 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 + ccn_meas_rep := ccn_meas_rep, + rel_additions := omit } } }; diff --git a/library/RLCMAC_CSN1_Types.ttcn b/library/RLCMAC_CSN1_Types.ttcn index 2093f55..917b5d5 100644 --- a/library/RLCMAC_CSN1_Types.ttcn +++ b/library/RLCMAC_CSN1_Types.ttcn @@ -941,7 +941,76 @@ variant (sign_var) "PRESENCE(sign_var_presence = '1'B)" };
- /* 11.2.3a Packet Cell Change Notification */ + /* 11.2.3a Packet Cell Change Notification, 3G Target Cell Struct (Rel-6 extension) */ + type record UtranTargetCellFdd { + uint14_t arfcn, + BIT1 bandwidth_presence, + uint3_t bandwidth optional, + uint10_t scrambling_code + } with { + variant (bandwidth) "PRESENCE(bandwidth_presence = '1'B)" + }; + type record UtranTargetCellTdd { + uint14_t arfcn, + BIT1 bandwidth_presence, + uint3_t bandwidth optional, + uint7_t cell_parameter, + BIT1 sync_case + } with { + variant (bandwidth) "PRESENCE(bandwidth_presence = '1'B)" + }; + type record UtranTargetCell { + BIT1 fdd_presence, + UtranTargetCellFdd fdd optional, + BIT1 tdd_presence, + UtranTargetCellTdd tdd optional, + uint6_t reporting_quantity + } with { + variant (fdd) "PRESENCE(fdd_presence = '1'B)" + variant (tdd) "PRESENCE(tdd_presence = '1'B)" + }; + + /* 11.2.3a Packet Cell Change Notification, Eutran Target Cell Struct (Rel-8 extension) */ + type record EutranTargetCell { + uint16_t earfcn, + BIT1 meas_bandwidth_presence, + uint3_t meas_bandwidth optional, + uint9_t phys_layer_cell_id, + uint6_t reporting_quantity + } with { + variant (meas_bandwidth) "PRESENCE(meas_bandwidth_presence = '1'B)" + }; + + /* 11.2.3a Packet Cell Change Notification, 3G CCN Measurement Report Struct (Rel-6 extension) */ + type record of UtranCCNMeasReportItem UtranReportingQuantityList; + type record UtranCCNMeasReportItem { + uint7_t cell_list_index, + uint6_t reporting_quantity + } with { variant "" }; + type record UtranCCNMeasReport { + uint3_t n_3g, + UtranReportingQuantityList cells + } with { + variant (n_3g) "LENGTHTO(cells) - 1" + variant (n_3g) "UNIT(elements)" + }; + + /* 11.2.3a Packet Cell Change Notification, E-UTRAN CCN Measurement Report Struct (Rel-8 extension) */ + type record length(1..4) of EutranCCNMeasReportItem EutranReportingQuantityList; + type record EutranCCNMeasReportItem { + uint3_t frequency_list_index, + uint9_t cell_identity, + uint6_t reporting_quantity + } with { variant "" }; + type record EutranCCNMeasReport { + uint1_t utran_ba_used, + uint2_t n_eutran, + EutranReportingQuantityList cells + } with { + variant (n_eutran) "LENGTHTO(cells) - 1" + variant (n_eutran) "UNIT(elements)" + }; + type record NCMeasurementItem { uint6_t freq, BIT1 bsic_presence, @@ -957,22 +1026,74 @@ uint3_t num_meas, NCMeasurements meas } with { variant "" }; - type record PacketCellChangeNotification { - GlobalTfi gtfi, - /* TODO: support 3g/4g in these bits */ + + /* 11.2.3a Packet Cell Change Notification, Rel-Additions (Matrioshka) */ + private type record PktCellChgNotifAdditions { + BIT1 rel6_presence, + PktCellChgNotifR6Additions rel6 optional + } with { + variant (rel6) "PRESENCE(rel6_presence = '1'B)" + }; + private type record PktCellChgNotifR6Additions { + BIT1 utran_ba_used_presence, + uint1_t utran_ba_used optional, + UtranCCNMeasReport utran_ccn_meas_rep + } with { + variant (utran_ba_used) "PRESENCE(utran_ba_used_presence = '1'B)" + }; + + private type record PktCellChgNotifyU0 { + BIT1 tag ('0'B), + uint10_t arfcn, + uint6_t bsic + } with { variant "" }; + private type record PktCellChgNotifyU10 { + BIT2 tag ('10'B), + UtranTargetCell utran_target_cell + } with { variant "" }; + private type record PktCellChgNotifyU110 { + BIT3 tag ('110'B), BIT1 arfcn_bsic_presence, uint10_t arfcn optional, uint6_t bsic optional, + BIT1 utran_target_cell_presence, + UtranTargetCell utran_target_cell optional, + BIT1 eutran_target_cell_presence, + EutranTargetCell eutran_target_cell optional, + BIT1 eutran_ccn_meas_rep_presence, + EutranCCNMeasReport eutran_ccn_meas_rep optional + } with { + variant (arfcn) "PRESENCE(arfcn_bsic_presence = '1'B)" + variant (bsic) "PRESENCE(arfcn_bsic_presence = '1'B)" + variant (utran_target_cell) "PRESENCE(utran_target_cell_presence = '1'B)" + variant (eutran_target_cell) "PRESENCE(eutran_target_cell_presence = '1'B)" + variant (eutran_ccn_meas_rep) "PRESENCE(eutran_ccn_meas_rep_presence = '1'B)" + }; + private type union PktCellChgNotifyUnion { + PktCellChgNotifyU0 u0, + PktCellChgNotifyU10 u10, /* Rel-6 additions */ + PktCellChgNotifyU110 u110 /* Rel-8 additions */ + /* TODO: PktCellChgNotifyU1110 Rel-9 additions */ + /* TODO: Message escape : { 1111 } bit (*) = <no string> > */ + } with { + variant "TAG(u0, tag = '0'B; + u10, tag = '10'B; + u110, tag = '110'B)" + }; + + /* 11.2.3a Packet Cell Change Notification, message body */ + type record PacketCellChangeNotification { + GlobalTfi gtfi, + PktCellChgNotifyUnion u, BIT1 ba_psi3_presence, BIT1 ba_used optional, BIT2 psi3_change_mark optional, BIT1 pmo_used, BIT1 pccn_sending, - CCNMesurementReport ccn_meas_rep - /* TODO: Rel6 additions for 3G support */ + CCNMesurementReport ccn_meas_rep, + /* Rel-Additions (Matrioshka) */ + PktCellChgNotifAdditions rel_additions optional } with { - variant (arfcn) "PRESENCE(arfcn_bsic_presence = '0'B)" - variant (bsic) "PRESENCE(arfcn_bsic_presence = '0'B)" variant (ba_used) "PRESENCE(ba_psi3_presence = '0'B)" variant (psi3_change_mark) "PRESENCE(ba_psi3_presence = '1'B)" };