fixeria has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/34578?usp=email )
Change subject: library: add System Information Type 10 Rest Octets codec ...................................................................... library: add System Information Type 10 Rest Octets codec The CSN.1 definition can be found in 3GPP TS 44.018, section 10.5.2.44. Change-Id: Iab04a588e645abf9b3c99bddef293526ae6752e1 Related: OS#5782 --- M library/GSM_RestOctets.ttcn 1 file changed, 136 insertions(+), 0 deletions(-) Approvals: fixeria: Looks good to me, approved pespin: Looks good to me, but someone else must approve jolly: Looks good to me, but someone else must approve Jenkins Builder: Verified diff --git a/library/GSM_RestOctets.ttcn b/library/GSM_RestOctets.ttcn index 6fa781c..eff9546 100644 --- a/library/GSM_RestOctets.ttcn +++ b/library/GSM_RestOctets.ttcn @@ -1241,6 +1241,125 @@ }; +/* 10.5.2.44 SI10 rest octets (ASCI) */ +type record SI10RestOctets { + BIT1 ba_ind, + BIT1 neigh_info_presence, // L/H + SI10NeighInfo neigh_info optional +} with { + variant (neigh_info_presence) "CSN.1 L/H" + variant (neigh_info) "PRESENCE(neigh_info_presence = '1'B)" + + /* The TITAN's RAW encoder generates an octet-aligned octetstring, + * so we should make sure that unused bits contain proper padding. */ + variant "PADDING(yes), PADDING_PATTERN('00101011'B)" +}; + +private type record SI10NeighInfo { + uint5_t first_freq, + SI10CellInfo cell_info, + SI10InfoFieldList info_field optional, + BIT1 info_field_term ('0'B) // L/H +} with { + variant (info_field_term) "CSN.1 L/H" +}; + +private type record SI10CellInfo { + uint6_t bsic, + BIT1 cell_params_presence, // L/H + SI10CellParams cell_params optional +} with { + variant (cell_params_presence) "CSN.1 L/H" + variant (cell_params) "PRESENCE(cell_params_presence = '1'B)" +}; + +private type record SI10CellParams { + BIT1 cell_barred, // L/H + SI10FurtherCellInfo further_cell_info optional +} with { + variant (cell_barred) "CSN.1 L/H" + variant (further_cell_info) "PRESENCE(cell_barred = '0'B)" +}; + +private type record SI10FurtherCellInfo { + BIT1 la_different, // L/H + uint3_t cell_resel_hyst optional, + uint5_t ms_txpwr_max_cch, + uint6_t rxlev_access_min, + uint6_t cell_resel_offset, + uint3_t temp_offset, + uint5_t penalty_time +} with { + variant (la_different) "CSN.1 L/H" + variant (cell_resel_hyst) "PRESENCE(la_different = '1'B)" +}; + +private type record of SI10InfoField SI10InfoFieldList; +private type record SI10InfoField { + BIT1 item_ind ('1'B), + SI10NextFreqList next_freq optional, + BIT1 next_freq_term ('0'B), // L/H + SI10DiffCellInfo diff_cell_info +} with { + variant (item_ind) "CSN.1 L/H" + variant "PRESENCE(item_ind = '1'B)" + variant (next_freq_term) "CSN.1 L/H" +}; + +private type record of SI10NextFreq SI10NextFreqList; +private type BIT1 SI10NextFreq with { variant "CSN.1 L/H" }; + +private type record SI10DiffCellInfo { + BIT1 bcc_or_bsic, // L/H + uint3_t bcc optional, + uint6_t bsic optional, + BIT1 diff_cell_params_presence, // L/H + SI10DiffCellParams diff_cell_params optional +} with { + variant (bcc_or_bsic) "CSN.1 L/H" + variant (bcc) "PRESENCE(bcc_or_bsic = '1'B)" + variant (bsic) "PRESENCE(bcc_or_bsic = '0'B)" + variant (diff_cell_params_presence) "CSN.1 L/H" + variant (diff_cell_params) "PRESENCE(diff_cell_params_presence = '1'B)" +}; + +private type record SI10DiffCellParams { + BIT1 cell_barred, // L/H + SI10FurtherDiffCellInfo further_diff_cell_info optional +} with { + variant (cell_barred) "CSN.1 L/H" + variant (further_diff_cell_info) "PRESENCE(cell_barred = '0'B)" +}; + +private type record SI10FurtherDiffCellInfo { + BIT1 la_different, // L/H + uint3_t cell_resel_hyst optional, + BIT1 ms_txpwr_max_cch_presence, // L/H + uint5_t ms_txpwr_max_cch optional, + BIT1 rxlev_access_min_presence, // L/H + uint6_t rxlev_access_min optional, + BIT1 cell_resel_offset_presence, // L/H + uint6_t cell_resel_offset optional, + BIT1 temp_offset_presence, // L/H + uint3_t temp_offset optional, + BIT1 penalty_time_presence, // L/H + uint5_t penalty_time optional +} with { + variant (la_different) "CSN.1 L/H" + variant (cell_resel_hyst) "PRESENCE(la_different = '1'B)" + variant (ms_txpwr_max_cch_presence) "CSN.1 L/H" + variant (ms_txpwr_max_cch) "PRESENCE(ms_txpwr_max_cch_presence = '1'B)" + variant (rxlev_access_min_presence) "CSN.1 L/H" + variant (rxlev_access_min) "PRESENCE(rxlev_access_min_presence = '1'B)" + variant (cell_resel_offset_presence) "CSN.1 L/H" + variant (cell_resel_offset) "PRESENCE(cell_resel_offset_presence = '1'B)" + variant (temp_offset_presence) "CSN.1 L/H" + variant (temp_offset) "PRESENCE(temp_offset_presence = '1'B)" + variant (penalty_time_presence) "CSN.1 L/H" + variant (penalty_time) "PRESENCE(penalty_time_presence = '1'B)" +}; + + external function enc_SI2quaterRestOctets(in SI2quaterRestOctets ro) return octetstring with { extension "prototype(convert) encode(RAW)" }; external function dec_SI2quaterRestOctets(in octetstring stream) return SI2quaterRestOctets @@ -1266,6 +1385,11 @@ external function dec_SI13RestOctets(in octetstring stream) return SI13RestOctets with { extension "prototype(convert) decode(RAW)" }; +external function enc_SI10RestOctets(in SI10RestOctets ro) return octetstring + with { extension "prototype(convert) encode(RAW)" }; +external function dec_SI10RestOctets(in octetstring stream) return SI10RestOctets + with { extension "prototype(convert) decode(RAW)" }; + /* Basic templates to be extended in place */ template (value) SI3RestOctets ts_SI3RestOctets := { -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/34578?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: Iab04a588e645abf9b3c99bddef293526ae6752e1 Gerrit-Change-Number: 34578 Gerrit-PatchSet: 2 Gerrit-Owner: fixeria <vyanits...@sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanits...@sysmocom.de> Gerrit-Reviewer: jolly <andr...@eversberg.eu> Gerrit-Reviewer: laforge <lafo...@osmocom.org> Gerrit-Reviewer: pespin <pes...@sysmocom.de> Gerrit-MessageType: merged