diff --git a/library/Osmocom_Gb_Types.ttcn b/library/Osmocom_Gb_Types.ttcn index b82ca3279..589108fb9 100644 --- a/library/Osmocom_Gb_Types.ttcn +++ b/library/Osmocom_Gb_Types.ttcn @@ -897,6 +897,22 @@ octetstring sdu) := { }, tLLI_Value := tlli } + private function f_ts_BSSGP_TLLI(template (omit) GprsTlli tlli) return template (omit) TLLI_BSSGP { + if (istemplatekind(tlli, "omit")) { + return omit; + } else { + return ts_BSSGP_TLLI(valueof(tlli)); + } + } + private function f_tr_BSSGP_TLLI(template GprsTlli tlli) return template TLLI_BSSGP { + if (istemplatekind(tlli, "omit")) { + return omit; + } else if (istemplatekind(tlli, "*")) { + return *; + } else { + return tr_BSSGP_TLLI(valueof(tlli)); + } + } template (value) Suspend_Reference_Number ts_BSSGP_SUSP_REF(template (value) OCT1 susp_ref) := { iEI := '1D'O, @@ -932,6 +948,22 @@ octetstring sdu) := { oddevenIndicator := f_hex_is_odd_length(imsi), digits := imsi } + private function f_ts_BSSGP_IMSI(template (omit) hexstring imsi) return template (omit) IMSI_BSSGP { + if (istemplatekind(imsi, "omit")) { + return omit; + } else { + return ts_BSSGP_IMSI(valueof(imsi)); + } + } + private function f_tr_BSSGP_IMSI(template hexstring imsi) return template IMSI_BSSGP { + if (istemplatekind(imsi, "omit")) { + return omit; + } else if (istemplatekind(imsi, "*")) { + return *; + } else { + return tr_BSSGP_IMSI(imsi); + } + } template (present) TMSI_BSSGP tr_BSSGP_TMSI(GsmTmsi tmsi) := { iEI := '20'O, @@ -2324,22 +2356,25 @@ octetstring sdu) := { /* 10.3.5 */ template (value) PDU_BSSGP - ts_BSSGP_RADIO_STATUS(GprsTlli tlli, template (value) BssgpRadioCause cause) := { + ts_BSSGP_RADIO_STATUS(template (omit) GprsTlli tlli, template (value) BssgpRadioCause cause, + template (omit) GsmTmsi tmsi := omit, + template (omit) hexstring imsi := omit) := { pDU_BSSGP_RADIO_STATUS := { bssgpPduType := '0a'O, - tLLI := ts_BSSGP_TLLI(tlli), - tMSI := omit, - iMSI := omit, + tLLI := f_ts_BSSGP_TLLI(tlli), + tMSI := f_ts_BSSGP_TMSI(tmsi), + iMSI := f_ts_BSSGP_IMSI(imsi), radio_Cause := ts_BSSGP_RADIO_CAUSE(cause) } } template (present) PDU_BSSGP - tr_BSSGP_RADIO_STATUS(template (present) GprsTlli tlli, template (present) BssgpRadioCause cause) := { + tr_BSSGP_RADIO_STATUS(template GprsTlli tlli, template (present) BssgpRadioCause cause, + template GsmTmsi tmsi := *, template hexstring imsi := *) := { pDU_BSSGP_RADIO_STATUS := { bssgpPduType := '0a'O, - tLLI := ts_BSSGP_TLLI(tlli), - tMSI := omit, - iMSI := omit, + tLLI := f_tr_BSSGP_TLLI(tlli), + tMSI := f_tr_BSSGP_TMSI(tmsi), + iMSI := f_tr_BSSGP_IMSI(imsi), radio_Cause := tr_BSSGP_RADIO_CAUSE(cause) } }