Osmocom_Gb_Types: Fix indentation

Change-Id: I4ca156b53dfe9daa190d52a7de46be56cf74099a
This commit is contained in:
Daniel Willmann 2020-11-19 16:39:39 +01:00 committed by daniel
parent 087a33d5d4
commit 670bbc0c4e
1 changed files with 360 additions and 362 deletions

View File

@ -929,41 +929,41 @@ octetstring sdu) := {
return ret;
}
template (value) Tag ts_BSSGP_IE_Tag(OCT1 tag) := {
iEI := '1E'O,
ext := '1'B,
lengthIndicator := {
length1 := 1
},
unstructured_Value := tag
}
template (value) Tag ts_BSSGP_IE_Tag(OCT1 tag) := {
iEI := '1E'O,
ext := '1'B,
lengthIndicator := {
length1 := 1
},
unstructured_Value := tag
}
template (present) Tag tr_BSSGP_IE_Tag(template (present) OCT1 tag) := {
iEI := '1E'O,
ext := '1'B,
lengthIndicator := {
length1 := 1
},
unstructured_Value := tag
}
template (present) Tag tr_BSSGP_IE_Tag(template (present) OCT1 tag) := {
iEI := '1E'O,
ext := '1'B,
lengthIndicator := {
length1 := 1
},
unstructured_Value := tag
}
template (value) RA_Cap_UPD_CAUSE ts_BSSGP_IE_RACU_Cause(template (value) OCT1 cause) := {
iEI := '1A'O,
ext := '1'B,
lengthIndicator := {
length1 := 1
},
rA_CAP_UPD_Cause_value := cause
}
template (value) RA_Cap_UPD_CAUSE ts_BSSGP_IE_RACU_Cause(template (value) OCT1 cause) := {
iEI := '1A'O,
ext := '1'B,
lengthIndicator := {
length1 := 1
},
rA_CAP_UPD_Cause_value := cause
}
template (present) RA_Cap_UPD_CAUSE tr_BSSGP_IE_RACU_Cause(template (present) OCT1 cause) := {
iEI := '1A'O,
ext := '1'B,
lengthIndicator := {
length1 := 1
},
rA_CAP_UPD_Cause_value := cause
}
template (present) RA_Cap_UPD_CAUSE tr_BSSGP_IE_RACU_Cause(template (present) OCT1 cause) := {
iEI := '1A'O,
ext := '1'B,
lengthIndicator := {
length1 := 1
},
rA_CAP_UPD_Cause_value := cause
}
template PDU_BSSGP ts_BVC_RESET(BssgpCause cause, BssgpBvci bvci,
@ -1683,362 +1683,360 @@ template (present) RA_Cap_UPD_CAUSE tr_BSSGP_IE_RACU_Cause(template (present) OC
}
}
/* 10.2.3 */
template (value) PDU_BSSGP ts_BSSGP_RA_CAP(GprsTlli tlli,
template (omit) MSRadioAccessCapabilityV_BSSGP racap := omit) := {
pDU_BSSGP_RA_CAPABILITY := {
bssgpPduType := '02'O,
tLLI := ts_BSSGP_TLLI(tlli),
mS_Radio_Access_Capability := ts_BSSGP_IE_MSRAcap_omit(racap)
/* 10.2.3 */
template (value) PDU_BSSGP ts_BSSGP_RA_CAP(GprsTlli tlli,
template (omit) MSRadioAccessCapabilityV_BSSGP racap := omit) := {
pDU_BSSGP_RA_CAPABILITY := {
bssgpPduType := '02'O,
tLLI := ts_BSSGP_TLLI(tlli),
mS_Radio_Access_Capability := ts_BSSGP_IE_MSRAcap_omit(racap)
}
}
}
template (present) PDU_BSSGP tr_BSSGP_RA_CAP(template (present) GprsTlli tlli,
template MSRadioAccessCapabilityV_BSSGP racap) := {
pDU_BSSGP_RA_CAPABILITY := {
bssgpPduType := '02'O,
tLLI := ts_BSSGP_TLLI(tlli),
mS_Radio_Access_Capability := tr_BSSGP_IE_MSRAcap(racap)
template (present) PDU_BSSGP tr_BSSGP_RA_CAP(template (present) GprsTlli tlli,
template MSRadioAccessCapabilityV_BSSGP racap) := {
pDU_BSSGP_RA_CAPABILITY := {
bssgpPduType := '02'O,
tLLI := ts_BSSGP_TLLI(tlli),
mS_Radio_Access_Capability := tr_BSSGP_IE_MSRAcap(racap)
}
}
}
/* 10.3.3 */
template (value) PDU_BSSGP ts_BSSGP_RA_CAP_UPD(GprsTlli tlli, OCT1 tag) := {
pDU_BSSGP_RA_CAPABILITY_UPDATE := {
bssgpPduType := '08'O,
tLLI := ts_BSSGP_TLLI(tlli),
tag := ts_BSSGP_IE_Tag(tag)
/* 10.3.3 */
template (value) PDU_BSSGP ts_BSSGP_RA_CAP_UPD(GprsTlli tlli, OCT1 tag) := {
pDU_BSSGP_RA_CAPABILITY_UPDATE := {
bssgpPduType := '08'O,
tLLI := ts_BSSGP_TLLI(tlli),
tag := ts_BSSGP_IE_Tag(tag)
}
}
}
template (present) PDU_BSSGP tr_BSSGP_RA_CAP_UPD(template (present) GprsTlli tlli,
template OCT1 tag) := {
pDU_BSSGP_RA_CAPABILITY_UPDATE := {
bssgpPduType := '08'O,
tLLI := ts_BSSGP_TLLI(tlli),
tag := tr_BSSGP_IE_Tag(tag)
template (present) PDU_BSSGP tr_BSSGP_RA_CAP_UPD(template (present) GprsTlli tlli,
template OCT1 tag) := {
pDU_BSSGP_RA_CAPABILITY_UPDATE := {
bssgpPduType := '08'O,
tLLI := ts_BSSGP_TLLI(tlli),
tag := tr_BSSGP_IE_Tag(tag)
}
}
}
/* 10.3.4 */
template (value) PDU_BSSGP
ts_BSSGP_RA_CAP_UPD_ACK(GprsTlli tlli, OCT1 tag, template (value) OCT1 cause,
template (omit) MSRadioAccessCapabilityV_BSSGP racap := omit) := {
pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := {
bssgpPduType := '09'O,
tLLI := ts_BSSGP_TLLI(tlli),
tag := ts_BSSGP_IE_Tag(tag),
iMSI := omit,
rA_Cap_UPDATE_CAUSE := ts_BSSGP_IE_RACU_Cause(cause),
mS_Radio_Access_Capability := ts_BSSGP_IE_MSRAcap_omit(racap)
/* 10.3.4 */
template (value) PDU_BSSGP
ts_BSSGP_RA_CAP_UPD_ACK(GprsTlli tlli, OCT1 tag, template (value) OCT1 cause,
template (omit) MSRadioAccessCapabilityV_BSSGP racap := omit) := {
pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := {
bssgpPduType := '09'O,
tLLI := ts_BSSGP_TLLI(tlli),
tag := ts_BSSGP_IE_Tag(tag),
iMSI := omit,
rA_Cap_UPDATE_CAUSE := ts_BSSGP_IE_RACU_Cause(cause),
mS_Radio_Access_Capability := ts_BSSGP_IE_MSRAcap_omit(racap)
}
}
}
template (present) PDU_BSSGP
tr_BSSGP_RA_CAP_UPD_ACK(template (present) GprsTlli tlli, template OCT1 tag, template (present) OCT1 cause,
template MSRadioAccessCapabilityV_BSSGP racap := omit) := {
pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := {
bssgpPduType := '09'O,
tLLI := ts_BSSGP_TLLI(tlli),
tag := tr_BSSGP_IE_Tag(tag),
iMSI := omit,
rA_Cap_UPDATE_CAUSE := tr_BSSGP_IE_RACU_Cause(cause),
mS_Radio_Access_Capability := tr_BSSGP_IE_MSRAcap(racap)
template (present) PDU_BSSGP
tr_BSSGP_RA_CAP_UPD_ACK(template (present) GprsTlli tlli, template OCT1 tag, template (present) OCT1 cause,
template MSRadioAccessCapabilityV_BSSGP racap := omit) := {
pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := {
bssgpPduType := '09'O,
tLLI := ts_BSSGP_TLLI(tlli),
tag := tr_BSSGP_IE_Tag(tag),
iMSI := omit,
rA_Cap_UPDATE_CAUSE := tr_BSSGP_IE_RACU_Cause(cause),
mS_Radio_Access_Capability := tr_BSSGP_IE_MSRAcap(racap)
}
}
}
type enumerated BssgpRadioCause {
BSSGP_RADIO_CAUSE_CONTACT_LOST ('00'H),
BSSGP_RADIO_CAUSE_LINK_QUAL_INSUFF ('01'H),
BSSGP_RADIO_CAUSE_CELL_RESEL_ORDERED ('02'H),
BSSGP_RADIO_CAUSE_CELL_RESEL_PREPARE ('03'H),
BSSGP_RADIO_CAUSE_CELL_RESEL_FAILURE ('04'H)
} with { variant "FIELDLENGTH(8)" };
type enumerated BssgpRadioCause {
BSSGP_RADIO_CAUSE_CONTACT_LOST ('00'H),
BSSGP_RADIO_CAUSE_LINK_QUAL_INSUFF ('01'H),
BSSGP_RADIO_CAUSE_CELL_RESEL_ORDERED ('02'H),
BSSGP_RADIO_CAUSE_CELL_RESEL_PREPARE ('03'H),
BSSGP_RADIO_CAUSE_CELL_RESEL_FAILURE ('04'H)
} with { variant "FIELDLENGTH(8)" };
function ts_BSSGP_RADIO_CAUSE(template (omit) BssgpRadioCause cause) return template (omit) Radio_Cause {
var template (omit) Radio_Cause ret;
if (istemplatekind(cause, "omit")) {
ret := omit;
} else {
function ts_BSSGP_RADIO_CAUSE(template (omit) BssgpRadioCause cause) return template (omit) Radio_Cause {
var template (omit) Radio_Cause ret;
if (istemplatekind(cause, "omit")) {
ret := omit;
} else {
ret.iEI := '19'O;
ret.ext := '1'B;
ret.lengthIndicator := { length1 := 1 };
ret.radio_Cause_Value := int2oct(enum2int(valueof(cause)), 1);
}
return ret;
}
function tr_BSSGP_RADIO_CAUSE(template BssgpRadioCause cause) return template (present) Radio_Cause {
var template Radio_Cause ret;
ret.iEI := '19'O;
ret.ext := '1'B;
ret.lengthIndicator := { length1 := 1 };
ret.radio_Cause_Value := int2oct(enum2int(valueof(cause)), 1);
if (isvalue(cause)) {
ret.radio_Cause_Value := int2oct(enum2int(valueof(cause)), 1);
} else {
ret.radio_Cause_Value := ?
}
return ret;
}
return ret;
}
function tr_BSSGP_RADIO_CAUSE(template BssgpRadioCause cause) return template (present) Radio_Cause {
var template Radio_Cause ret;
ret.iEI := '19'O;
ret.ext := '1'B;
ret.lengthIndicator := { length1 := 1 };
if (isvalue(cause)) {
ret.radio_Cause_Value := int2oct(enum2int(valueof(cause)), 1);
} else {
ret.radio_Cause_Value := ?
}
return ret;
}
/* 10.3.5 */
template (value) PDU_BSSGP
ts_BSSGP_RADIO_STATUS(GprsTlli tlli, template (value) BssgpRadioCause cause) := {
pDU_BSSGP_RADIO_STATUS := {
bssgpPduType := '0a'O,
tLLI := ts_BSSGP_TLLI(tlli),
tMSI := omit,
iMSI := omit,
radio_Cause := ts_BSSGP_RADIO_CAUSE(cause)
}
}
template (present) PDU_BSSGP
tr_BSSGP_RADIO_STATUS(template (present) GprsTlli tlli, template (present) BssgpRadioCause cause) := {
pDU_BSSGP_RADIO_STATUS := {
bssgpPduType := '0a'O,
tLLI := ts_BSSGP_TLLI(tlli),
tMSI := omit,
iMSI := omit,
radio_Cause := tr_BSSGP_RADIO_CAUSE(cause)
}
}
/* PDU permitted on PTP BVC only (TS 48.018 Section 5.4.1) */
template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTP_ONLY := (
{pDU_BSSGP_DL_UNITDATA := ?},
{pDU_BSSGP_UL_UNITDATA := ?},
{pDU_BSSGP_RA_CAPABILITY := ?},
{pDU_BSSGP_RA_CAPABILITY_UPDATE := ?},
{pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := ?},
{pDU_BSSGP_RADIO_STATUS := ?},
{pDU_BSSGP_FLOW_CONTROL_BVC := ?},
{pDU_BSSGP_FLOW_CONTROL_BVC_ACK := ?},
{pDU_BSSGP_FLOW_CONTROL_MS := ?},
{pDU_BSSGP_FLOW_CONTROL_MS_ACK := ?},
{pDU_BSSGP_FLOW_CONTROL_PFC := ?},
{pDU_BSSGP_FLOW_CONTROL_PFC_ACK := ?},
{pDU_BSSGP_DOWNLOAD_BSS_PFC := ?},
{pDU_BSSGP_CREATE_BSS_PFC := ?},
{pDU_BSSGP_CREATE_BSS_PFC_ACK := ?},
{pDU_BSSGP_CREATE_BSS_PFC_NACK := ?},
{pDU_BSSGP_MODIFY_BSS_PFC := ?},
{pDU_BSSGP_MODIFY_BSS_PFC_ACK := ?},
{pDU_BSSGP_DELETE_BSS_PFC := ?},
{pDU_BSSGP_DELETE_BSS_PFC_ACK := ?},
{pDU_BSSGP_DELETE_BSS_PFC_REQ := ?},
{pDU_BSSGP_PS_HANDOVER_REQUIRED := ?},
{pDU_BSSGP_PS_HANDOVER_REQUIRED_ACK := ?},
{pDU_BSSGP_PS_HANDOVER_REQUIRED_NACK := ?},
{pDU_BSSGP_PS_HANDOVER_REQUEST := ?},
{pDU_BSSGP_PS_HANDOVER_REQUEST_ACK := ?},
{pDU_BSSGP_PS_HANDOVER_REQUEST_NACK := ?},
{pDU_BSSGP_PS_HANDOVER_COMPLETE := ?},
{pDU_BSSGP_PS_HANDOVER_COMPLETE_ACK := ?},
{pDU_BSSGP_PS_HANDOVER_CANCEL := ?}
);
template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTP := (
tr_BSSGP_PERMITTED_PTP_ONLY,
{pDU_BSSGP_PAGING_PS := ?},
{pDU_BSSGP_PAGING_CS := ?},
{pDU_BSSGP_STATUS := ?}
);
/* PDU permitted on Signaling BVC only (TS 48.018 Section 5.4.1) */
template (present) PDU_BSSGP tr_BSSGP_PERMITTED_SIGN_ONLY := (
{pDU_BSSGP_SUSPEND := ?},
{pDU_BSSGP_SUSPEND_ACK := ?},
{pDU_BSSGP_SUSPEND_NACK := ?},
{pDU_BSSGP_RESUME := ?},
{pDU_BSSGP_RESUME_ACK := ?},
{pDU_BSSGP_RESUME_NACK := ?},
{pDU_BSSGP_FLUSH_LL := ?},
{pDU_BSSGP_FLUSH_LL_ACK := ?},
{pDU_BSSGP_LLC_DISCARDED := ?},
{pDU_BSSGP_BVC_BLOCK := ?},
{pDU_BSSGP_BVC_BLOCK_ACK := ?},
{pDU_BSSGP_BVC_UNBLOCK := ?},
{pDU_BSSGP_BVC_UNBLOCK_ACK := ?},
{pDU_BSSGP_BVC_RESET := ?},
{pDU_BSSGP_BVC_RESET_ACK := ?},
{pDU_BSSGP_SGSN_INVOKE_TRACE := ?},
{pDU_BSSGP_PERFORM_LOCATION_REQUEST := ?},
{pDU_BSSGP_PERFORM_LOCATION_RESPONSE := ?},
{pDU_BSSGP_PERFORM_LOCATION_ABORT := ?},
{pDU_BSSGP_POSITION_COMMAND := ?},
{pDU_BSSGP_POSITION_RESPONSE := ?},
{pDU_BSSGP_RAN_INFORMATION := ?},
{pDU_BSSGP_RAN_INFORMATION_REQUEST := ?},
{pDU_BSSGP_RAN_INFORMATION_ACK := ?},
{pDU_BSSGP_RAN_INFORMATION_ERROR := ?},
{pDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR := ?},
{pDU_BSSGP_MBMS_SESSION_START_REQUEST := ?},
{pDU_BSSGP_MBMS_SESSION_START_RESPONSE := ?},
{pDU_BSSGP_MBMS_SESSION_STOP_REQUEST := ?},
{pDU_BSSGP_MBMS_STOP_RESPONSE := ?},
{pDU_BSSGP_SESSION_UPDATE_REQUEST := ?},
{pDU_BSSGP_SESSION_UPDATE_RESPONSE := ?}
);
template (present) PDU_BSSGP tr_BSSGP_PERMITTED_SIGN := (
tr_BSSGP_PERMITTED_SIGN_ONLY,
{pDU_BSSGP_PAGING_PS := ?},
{pDU_BSSGP_PAGING_CS := ?},
{pDU_BSSGP_SUSPEND := ?},
{pDU_BSSGP_STATUS := ?}
);
/* PDU permitted on PTM BVC only (TS 48.018 Section 5.4.1) */
template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTM_ONLY := (
{pDU_BSSGP_DL_MBMS_UNITDATA := ?},
{pDU_BSSGP_UL_MBMS_UNITDATA := ?}
);
template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTM := (
tr_BSSGP_PERMITTED_PTM_ONLY,
{pDU_BSSGP_STATUS := ?}
);
/* Template for any PTP BVCI IE */
template (present) BVCI tr_BSSGP_IE_PtpBvci := {
iEI := '04'O,
ext := '1'B,
lengthIndicator := {
length1 := 2
},
unstructured_value := complement ('0000'O, '0001'O)
}
/* message on signaling PTP but containing a ptp BVC */
/*
template PDU_BSSGP tr_BSSGP_SIG_FOR_PTP(template Bvci bvci) := (
{pDU_BSSGP_FLUSH_LL:{?,?,tr_BSSGP_IE_PtpBvci, *, *}},
{pDU_BSSGP_FLUSH_LL_ACK:{?,?,?,tr_BSSGP_IE_PtpBvci, ?, *}},
{pDU_BSSGP_LLC_DISCARDED:{?,?,?,tr_BSSGP_IE_PtpBvci, ?, *}},
{pDU_BSSGP_BVC_BLOCK:{?,tr_BSSGP_IE_PtpBvci, ?}},
{pDU_BSSGP_BVC_BLOCK_ACK:{?,tr_BSSGP_IE_PtpBvci}},
{pDU_BSSGP_BVC_UNBLOCK:{?,tr_BSSGP_IE_PtpBvci}},
{pDU_BSSGP_BVC_UNBLOCK_ACK:{?,tr_BSSGP_IE_PtpBvci}},
{pDU_BSSGP_BVC_RESET:{?,tr_BSSGP_IE_PtpBvci,?,*,*,*}},
{pDU_BSSGP_BVC_RESET_ACK:{?,tr_BSSGP_IE_PtpBvci,*,*,*}},
{pDU_BSSGP_STATUS:{?,?,tr_BSSGP_IE_PtpBvci,*}},
{pDU_BSSGP_PERFORM_LOCATION_REQUEST:{?,?,?,*,tr_BSSGP_IE_PtpBvci,?,?,?,*,*,*,*,*,*,*,*,*}},
{pDU_BSSGP_PERFORM_LOCATION_RESPONSE:{?,?,tr_BSSGP_IE_PtpBvci,*,*,*,*,*,*}},
{pDU_BSSGP_PERFORM_LOCATION_ABORT:{?,?,tr_BSSGP_IE_PtpBvci,?}},
{pDU_BSSGP_POSITION_COMMAND:{
);
*/
/* extract the BVCI IE of given PDU + return it */
function f_BSSGP_BVCI_IE_get(PDU_BSSGP pdu) return template (omit) BVCI {
select (pdu) {
case (PDU_BSSGP:{pDU_BSSGP_FLUSH_LL:=?}) {
return pdu.pDU_BSSGP_FLUSH_LL.bVCI_old;
}
case (PDU_BSSGP:{pDU_BSSGP_FLUSH_LL_ACK:=?}) {
return pdu.pDU_BSSGP_FLUSH_LL_ACK.bVCI_new;
}
case (PDU_BSSGP:{pDU_BSSGP_LLC_DISCARDED:=?}) {
return pdu.pDU_BSSGP_LLC_DISCARDED.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_BVC_BLOCK:=?}) {
return pdu.pDU_BSSGP_BVC_BLOCK.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_BVC_BLOCK_ACK:=?}) {
return pdu.pDU_BSSGP_BVC_BLOCK_ACK.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_BVC_UNBLOCK:=?}) {
return pdu.pDU_BSSGP_BVC_UNBLOCK.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_BVC_UNBLOCK_ACK:=?}) {
return pdu.pDU_BSSGP_BVC_UNBLOCK_ACK.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_BVC_RESET:=?}) {
return pdu.pDU_BSSGP_BVC_RESET.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_BVC_RESET_ACK:=?}) {
return pdu.pDU_BSSGP_BVC_RESET_ACK.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_STATUS:=?}) {
return pdu.pDU_BSSGP_STATUS.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_PERFORM_LOCATION_REQUEST:=?}) {
return pdu.pDU_BSSGP_PERFORM_LOCATION_REQUEST.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_PERFORM_LOCATION_RESPONSE:=?}) {
return pdu.pDU_BSSGP_PERFORM_LOCATION_RESPONSE.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_PERFORM_LOCATION_ABORT:=?}) {
return pdu.pDU_BSSGP_PERFORM_LOCATION_ABORT.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_POSITION_COMMAND:=?}) {
return pdu.pDU_BSSGP_POSITION_COMMAND.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_POSITION_RESPONSE:=?}) {
return pdu.pDU_BSSGP_POSITION_RESPONSE.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_PAGING_PS:={?,?,*,{bVCI:=?},*,*,?,*,*}}) {
return pdu.pDU_BSSGP_PAGING_PS.paging_Field4.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_PAGING_CS:={?,?,?,{bVCI:=?},*,*,*,*,*}}) {
return pdu.pDU_BSSGP_PAGING_CS.paging_Field4.bVCI;
}
case else {
return omit;
/* 10.3.5 */
template (value) PDU_BSSGP
ts_BSSGP_RADIO_STATUS(GprsTlli tlli, template (value) BssgpRadioCause cause) := {
pDU_BSSGP_RADIO_STATUS := {
bssgpPduType := '0a'O,
tLLI := ts_BSSGP_TLLI(tlli),
tMSI := omit,
iMSI := omit,
radio_Cause := ts_BSSGP_RADIO_CAUSE(cause)
}
}
}
/* extract the BVCI IE of given PDU + convert it to integer value */
function f_BSSGP_BVCI_get(PDU_BSSGP pdu) return template (omit) BssgpBvci {
var template (omit) BVCI bvci_raw := f_BSSGP_BVCI_IE_get(pdu);
if (istemplatekind(bvci_raw, "omit")) {
return omit;
template (present) PDU_BSSGP
tr_BSSGP_RADIO_STATUS(template (present) GprsTlli tlli, template (present) BssgpRadioCause cause) := {
pDU_BSSGP_RADIO_STATUS := {
bssgpPduType := '0a'O,
tLLI := ts_BSSGP_TLLI(tlli),
tMSI := omit,
iMSI := omit,
radio_Cause := tr_BSSGP_RADIO_CAUSE(cause)
}
}
return oct2int(valueof(bvci_raw.unstructured_value));
}
/* 3GPP TS 23.003 2.6 */
type enumerated TlliType {
TLLI_LOCAL,
TLLI_FOREIGN,
TLLI_RANDOM,
TLLI_AUXILIARY,
TLLI_RESERVED,
TLLI_G_RNTI,
TLLI_RAND_G_RNTI
}
/* 3GPP TS 23.003 2.6 */
function f_gprs_tlli_type(OCT4 tlli) return TlliType {
var bitstring tllib := oct2bit(tlli);
if (substr(tllib, 0, 2) == '11'B) {
return TLLI_LOCAL;
} else if (substr(tllib, 0, 2) == '10'B) {
return TLLI_FOREIGN;
} else if (substr(tllib, 0, 5) == '01111'B) {
return TLLI_RANDOM;
} else if (substr(tllib, 0, 4) == '0110'B) {
return TLLI_RESERVED;
} else if (substr(tllib, 0, 3) == '010'B) {
return TLLI_RESERVED;
} else if (substr(tllib, 0, 4) == '0000'B) {
return TLLI_G_RNTI;
} else if (substr(tllib, 0, 4) == '0001'B) {
return TLLI_RAND_G_RNTI;
} else {
setverdict(fail, "Unknonw TLLI Type ", tllib);
mtc.stop;
/* PDU permitted on PTP BVC only (TS 48.018 Section 5.4.1) */
template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTP_ONLY := (
{pDU_BSSGP_DL_UNITDATA := ?},
{pDU_BSSGP_UL_UNITDATA := ?},
{pDU_BSSGP_RA_CAPABILITY := ?},
{pDU_BSSGP_RA_CAPABILITY_UPDATE := ?},
{pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := ?},
{pDU_BSSGP_RADIO_STATUS := ?},
{pDU_BSSGP_FLOW_CONTROL_BVC := ?},
{pDU_BSSGP_FLOW_CONTROL_BVC_ACK := ?},
{pDU_BSSGP_FLOW_CONTROL_MS := ?},
{pDU_BSSGP_FLOW_CONTROL_MS_ACK := ?},
{pDU_BSSGP_FLOW_CONTROL_PFC := ?},
{pDU_BSSGP_FLOW_CONTROL_PFC_ACK := ?},
{pDU_BSSGP_DOWNLOAD_BSS_PFC := ?},
{pDU_BSSGP_CREATE_BSS_PFC := ?},
{pDU_BSSGP_CREATE_BSS_PFC_ACK := ?},
{pDU_BSSGP_CREATE_BSS_PFC_NACK := ?},
{pDU_BSSGP_MODIFY_BSS_PFC := ?},
{pDU_BSSGP_MODIFY_BSS_PFC_ACK := ?},
{pDU_BSSGP_DELETE_BSS_PFC := ?},
{pDU_BSSGP_DELETE_BSS_PFC_ACK := ?},
{pDU_BSSGP_DELETE_BSS_PFC_REQ := ?},
{pDU_BSSGP_PS_HANDOVER_REQUIRED := ?},
{pDU_BSSGP_PS_HANDOVER_REQUIRED_ACK := ?},
{pDU_BSSGP_PS_HANDOVER_REQUIRED_NACK := ?},
{pDU_BSSGP_PS_HANDOVER_REQUEST := ?},
{pDU_BSSGP_PS_HANDOVER_REQUEST_ACK := ?},
{pDU_BSSGP_PS_HANDOVER_REQUEST_NACK := ?},
{pDU_BSSGP_PS_HANDOVER_COMPLETE := ?},
{pDU_BSSGP_PS_HANDOVER_COMPLETE_ACK := ?},
{pDU_BSSGP_PS_HANDOVER_CANCEL := ?}
);
template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTP := (
tr_BSSGP_PERMITTED_PTP_ONLY,
{pDU_BSSGP_PAGING_PS := ?},
{pDU_BSSGP_PAGING_CS := ?},
{pDU_BSSGP_STATUS := ?}
);
/* PDU permitted on Signaling BVC only (TS 48.018 Section 5.4.1) */
template (present) PDU_BSSGP tr_BSSGP_PERMITTED_SIGN_ONLY := (
{pDU_BSSGP_SUSPEND := ?},
{pDU_BSSGP_SUSPEND_ACK := ?},
{pDU_BSSGP_SUSPEND_NACK := ?},
{pDU_BSSGP_RESUME := ?},
{pDU_BSSGP_RESUME_ACK := ?},
{pDU_BSSGP_RESUME_NACK := ?},
{pDU_BSSGP_FLUSH_LL := ?},
{pDU_BSSGP_FLUSH_LL_ACK := ?},
{pDU_BSSGP_LLC_DISCARDED := ?},
{pDU_BSSGP_BVC_BLOCK := ?},
{pDU_BSSGP_BVC_BLOCK_ACK := ?},
{pDU_BSSGP_BVC_UNBLOCK := ?},
{pDU_BSSGP_BVC_UNBLOCK_ACK := ?},
{pDU_BSSGP_BVC_RESET := ?},
{pDU_BSSGP_BVC_RESET_ACK := ?},
{pDU_BSSGP_SGSN_INVOKE_TRACE := ?},
{pDU_BSSGP_PERFORM_LOCATION_REQUEST := ?},
{pDU_BSSGP_PERFORM_LOCATION_RESPONSE := ?},
{pDU_BSSGP_PERFORM_LOCATION_ABORT := ?},
{pDU_BSSGP_POSITION_COMMAND := ?},
{pDU_BSSGP_POSITION_RESPONSE := ?},
{pDU_BSSGP_RAN_INFORMATION := ?},
{pDU_BSSGP_RAN_INFORMATION_REQUEST := ?},
{pDU_BSSGP_RAN_INFORMATION_ACK := ?},
{pDU_BSSGP_RAN_INFORMATION_ERROR := ?},
{pDU_BSSGP_RAN_INFORMATION_APPLICATION_ERROR := ?},
{pDU_BSSGP_MBMS_SESSION_START_REQUEST := ?},
{pDU_BSSGP_MBMS_SESSION_START_RESPONSE := ?},
{pDU_BSSGP_MBMS_SESSION_STOP_REQUEST := ?},
{pDU_BSSGP_MBMS_STOP_RESPONSE := ?},
{pDU_BSSGP_SESSION_UPDATE_REQUEST := ?},
{pDU_BSSGP_SESSION_UPDATE_RESPONSE := ?}
);
template (present) PDU_BSSGP tr_BSSGP_PERMITTED_SIGN := (
tr_BSSGP_PERMITTED_SIGN_ONLY,
{pDU_BSSGP_PAGING_PS := ?},
{pDU_BSSGP_PAGING_CS := ?},
{pDU_BSSGP_SUSPEND := ?},
{pDU_BSSGP_STATUS := ?}
);
/* PDU permitted on PTM BVC only (TS 48.018 Section 5.4.1) */
template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTM_ONLY := (
{pDU_BSSGP_DL_MBMS_UNITDATA := ?},
{pDU_BSSGP_UL_MBMS_UNITDATA := ?}
);
template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTM := (
tr_BSSGP_PERMITTED_PTM_ONLY,
{pDU_BSSGP_STATUS := ?}
);
/* Template for any PTP BVCI IE */
template (present) BVCI tr_BSSGP_IE_PtpBvci := {
iEI := '04'O,
ext := '1'B,
lengthIndicator := {
length1 := 2
},
unstructured_value := complement ('0000'O, '0001'O)
}
}
function f_gprs_tlli_random() return OCT4 {
var OCT4 tlli := f_rnd_octstring(4);
return tlli or4b 'c0000000'O;
}
/* message on signaling PTP but containing a ptp BVC */
/*
template PDU_BSSGP tr_BSSGP_SIG_FOR_PTP(template Bvci bvci) := (
{pDU_BSSGP_FLUSH_LL:{?,?,tr_BSSGP_IE_PtpBvci, *, *}},
{pDU_BSSGP_FLUSH_LL_ACK:{?,?,?,tr_BSSGP_IE_PtpBvci, ?, *}},
{pDU_BSSGP_LLC_DISCARDED:{?,?,?,tr_BSSGP_IE_PtpBvci, ?, *}},
{pDU_BSSGP_BVC_BLOCK:{?,tr_BSSGP_IE_PtpBvci, ?}},
{pDU_BSSGP_BVC_BLOCK_ACK:{?,tr_BSSGP_IE_PtpBvci}},
{pDU_BSSGP_BVC_UNBLOCK:{?,tr_BSSGP_IE_PtpBvci}},
{pDU_BSSGP_BVC_UNBLOCK_ACK:{?,tr_BSSGP_IE_PtpBvci}},
{pDU_BSSGP_BVC_RESET:{?,tr_BSSGP_IE_PtpBvci,?,*,*,*}},
{pDU_BSSGP_BVC_RESET_ACK:{?,tr_BSSGP_IE_PtpBvci,*,*,*}},
{pDU_BSSGP_STATUS:{?,?,tr_BSSGP_IE_PtpBvci,*}},
{pDU_BSSGP_PERFORM_LOCATION_REQUEST:{?,?,?,*,tr_BSSGP_IE_PtpBvci,?,?,?,*,*,*,*,*,*,*,*,*}},
{pDU_BSSGP_PERFORM_LOCATION_RESPONSE:{?,?,tr_BSSGP_IE_PtpBvci,*,*,*,*,*,*}},
{pDU_BSSGP_PERFORM_LOCATION_ABORT:{?,?,tr_BSSGP_IE_PtpBvci,?}},
{pDU_BSSGP_POSITION_COMMAND:{
);
*/
/* extract the BVCI IE of given PDU + return it */
function f_BSSGP_BVCI_IE_get(PDU_BSSGP pdu) return template (omit) BVCI {
select (pdu) {
case (PDU_BSSGP:{pDU_BSSGP_FLUSH_LL:=?}) {
return pdu.pDU_BSSGP_FLUSH_LL.bVCI_old;
}
case (PDU_BSSGP:{pDU_BSSGP_FLUSH_LL_ACK:=?}) {
return pdu.pDU_BSSGP_FLUSH_LL_ACK.bVCI_new;
}
case (PDU_BSSGP:{pDU_BSSGP_LLC_DISCARDED:=?}) {
return pdu.pDU_BSSGP_LLC_DISCARDED.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_BVC_BLOCK:=?}) {
return pdu.pDU_BSSGP_BVC_BLOCK.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_BVC_BLOCK_ACK:=?}) {
return pdu.pDU_BSSGP_BVC_BLOCK_ACK.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_BVC_UNBLOCK:=?}) {
return pdu.pDU_BSSGP_BVC_UNBLOCK.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_BVC_UNBLOCK_ACK:=?}) {
return pdu.pDU_BSSGP_BVC_UNBLOCK_ACK.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_BVC_RESET:=?}) {
return pdu.pDU_BSSGP_BVC_RESET.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_BVC_RESET_ACK:=?}) {
return pdu.pDU_BSSGP_BVC_RESET_ACK.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_STATUS:=?}) {
return pdu.pDU_BSSGP_STATUS.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_PERFORM_LOCATION_REQUEST:=?}) {
return pdu.pDU_BSSGP_PERFORM_LOCATION_REQUEST.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_PERFORM_LOCATION_RESPONSE:=?}) {
return pdu.pDU_BSSGP_PERFORM_LOCATION_RESPONSE.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_PERFORM_LOCATION_ABORT:=?}) {
return pdu.pDU_BSSGP_PERFORM_LOCATION_ABORT.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_POSITION_COMMAND:=?}) {
return pdu.pDU_BSSGP_POSITION_COMMAND.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_POSITION_RESPONSE:=?}) {
return pdu.pDU_BSSGP_POSITION_RESPONSE.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_PAGING_PS:={?,?,*,{bVCI:=?},*,*,?,*,*}}) {
return pdu.pDU_BSSGP_PAGING_PS.paging_Field4.bVCI;
}
case (PDU_BSSGP:{pDU_BSSGP_PAGING_CS:={?,?,?,{bVCI:=?},*,*,*,*,*}}) {
return pdu.pDU_BSSGP_PAGING_CS.paging_Field4.bVCI;
}
case else {
return omit;
}
}
}
/* extract the BVCI IE of given PDU + convert it to integer value */
function f_BSSGP_BVCI_get(PDU_BSSGP pdu) return template (omit) BssgpBvci {
var template (omit) BVCI bvci_raw := f_BSSGP_BVCI_IE_get(pdu);
if (istemplatekind(bvci_raw, "omit")) {
return omit;
}
return oct2int(valueof(bvci_raw.unstructured_value));
}
/* 3GPP TS 23.003 2.6 */
type enumerated TlliType {
TLLI_LOCAL,
TLLI_FOREIGN,
TLLI_RANDOM,
TLLI_AUXILIARY,
TLLI_RESERVED,
TLLI_G_RNTI,
TLLI_RAND_G_RNTI
}
/* 3GPP TS 23.003 2.6 */
function f_gprs_tlli_type(OCT4 tlli) return TlliType {
var bitstring tllib := oct2bit(tlli);
if (substr(tllib, 0, 2) == '11'B) {
return TLLI_LOCAL;
} else if (substr(tllib, 0, 2) == '10'B) {
return TLLI_FOREIGN;
} else if (substr(tllib, 0, 5) == '01111'B) {
return TLLI_RANDOM;
} else if (substr(tllib, 0, 4) == '0110'B) {
return TLLI_RESERVED;
} else if (substr(tllib, 0, 3) == '010'B) {
return TLLI_RESERVED;
} else if (substr(tllib, 0, 4) == '0000'B) {
return TLLI_G_RNTI;
} else if (substr(tllib, 0, 4) == '0001'B) {
return TLLI_RAND_G_RNTI;
} else {
setverdict(fail, "Unknonw TLLI Type ", tllib);
mtc.stop;
}
}
function f_gprs_tlli_random() return OCT4 {
var OCT4 tlli := f_rnd_octstring(4);
return tlli or4b 'c0000000'O;
}
} with { encode "RAW" };