Osmocom_Gb_Types: Fix indentation
Change-Id: I4ca156b53dfe9daa190d52a7de46be56cf74099a
This commit is contained in:
parent
087a33d5d4
commit
670bbc0c4e
|
@ -929,41 +929,41 @@ octetstring sdu) := {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
template (value) Tag ts_BSSGP_IE_Tag(OCT1 tag) := {
|
template (value) Tag ts_BSSGP_IE_Tag(OCT1 tag) := {
|
||||||
iEI := '1E'O,
|
iEI := '1E'O,
|
||||||
ext := '1'B,
|
ext := '1'B,
|
||||||
lengthIndicator := {
|
lengthIndicator := {
|
||||||
length1 := 1
|
length1 := 1
|
||||||
},
|
},
|
||||||
unstructured_Value := tag
|
unstructured_Value := tag
|
||||||
}
|
}
|
||||||
|
|
||||||
template (present) Tag tr_BSSGP_IE_Tag(template (present) OCT1 tag) := {
|
template (present) Tag tr_BSSGP_IE_Tag(template (present) OCT1 tag) := {
|
||||||
iEI := '1E'O,
|
iEI := '1E'O,
|
||||||
ext := '1'B,
|
ext := '1'B,
|
||||||
lengthIndicator := {
|
lengthIndicator := {
|
||||||
length1 := 1
|
length1 := 1
|
||||||
},
|
},
|
||||||
unstructured_Value := tag
|
unstructured_Value := tag
|
||||||
}
|
}
|
||||||
|
|
||||||
template (value) RA_Cap_UPD_CAUSE ts_BSSGP_IE_RACU_Cause(template (value) OCT1 cause) := {
|
template (value) RA_Cap_UPD_CAUSE ts_BSSGP_IE_RACU_Cause(template (value) OCT1 cause) := {
|
||||||
iEI := '1A'O,
|
iEI := '1A'O,
|
||||||
ext := '1'B,
|
ext := '1'B,
|
||||||
lengthIndicator := {
|
lengthIndicator := {
|
||||||
length1 := 1
|
length1 := 1
|
||||||
},
|
},
|
||||||
rA_CAP_UPD_Cause_value := cause
|
rA_CAP_UPD_Cause_value := cause
|
||||||
}
|
}
|
||||||
|
|
||||||
template (present) RA_Cap_UPD_CAUSE tr_BSSGP_IE_RACU_Cause(template (present) OCT1 cause) := {
|
template (present) RA_Cap_UPD_CAUSE tr_BSSGP_IE_RACU_Cause(template (present) OCT1 cause) := {
|
||||||
iEI := '1A'O,
|
iEI := '1A'O,
|
||||||
ext := '1'B,
|
ext := '1'B,
|
||||||
lengthIndicator := {
|
lengthIndicator := {
|
||||||
length1 := 1
|
length1 := 1
|
||||||
},
|
},
|
||||||
rA_CAP_UPD_Cause_value := cause
|
rA_CAP_UPD_Cause_value := cause
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
template PDU_BSSGP ts_BVC_RESET(BssgpCause cause, BssgpBvci bvci,
|
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 */
|
/* 10.2.3 */
|
||||||
template (value) PDU_BSSGP ts_BSSGP_RA_CAP(GprsTlli tlli,
|
template (value) PDU_BSSGP ts_BSSGP_RA_CAP(GprsTlli tlli,
|
||||||
template (omit) MSRadioAccessCapabilityV_BSSGP racap := omit) := {
|
template (omit) MSRadioAccessCapabilityV_BSSGP racap := omit) := {
|
||||||
pDU_BSSGP_RA_CAPABILITY := {
|
pDU_BSSGP_RA_CAPABILITY := {
|
||||||
bssgpPduType := '02'O,
|
bssgpPduType := '02'O,
|
||||||
tLLI := ts_BSSGP_TLLI(tlli),
|
tLLI := ts_BSSGP_TLLI(tlli),
|
||||||
mS_Radio_Access_Capability := ts_BSSGP_IE_MSRAcap_omit(racap)
|
mS_Radio_Access_Capability := ts_BSSGP_IE_MSRAcap_omit(racap)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
template (present) PDU_BSSGP tr_BSSGP_RA_CAP(template (present) GprsTlli tlli,
|
||||||
template (present) PDU_BSSGP tr_BSSGP_RA_CAP(template (present) GprsTlli tlli,
|
template MSRadioAccessCapabilityV_BSSGP racap) := {
|
||||||
template MSRadioAccessCapabilityV_BSSGP racap) := {
|
pDU_BSSGP_RA_CAPABILITY := {
|
||||||
pDU_BSSGP_RA_CAPABILITY := {
|
bssgpPduType := '02'O,
|
||||||
bssgpPduType := '02'O,
|
tLLI := ts_BSSGP_TLLI(tlli),
|
||||||
tLLI := ts_BSSGP_TLLI(tlli),
|
mS_Radio_Access_Capability := tr_BSSGP_IE_MSRAcap(racap)
|
||||||
mS_Radio_Access_Capability := tr_BSSGP_IE_MSRAcap(racap)
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* 10.3.3 */
|
/* 10.3.3 */
|
||||||
template (value) PDU_BSSGP ts_BSSGP_RA_CAP_UPD(GprsTlli tlli, OCT1 tag) := {
|
template (value) PDU_BSSGP ts_BSSGP_RA_CAP_UPD(GprsTlli tlli, OCT1 tag) := {
|
||||||
pDU_BSSGP_RA_CAPABILITY_UPDATE := {
|
pDU_BSSGP_RA_CAPABILITY_UPDATE := {
|
||||||
bssgpPduType := '08'O,
|
bssgpPduType := '08'O,
|
||||||
tLLI := ts_BSSGP_TLLI(tlli),
|
tLLI := ts_BSSGP_TLLI(tlli),
|
||||||
tag := ts_BSSGP_IE_Tag(tag)
|
tag := ts_BSSGP_IE_Tag(tag)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
template (present) PDU_BSSGP tr_BSSGP_RA_CAP_UPD(template (present) GprsTlli tlli,
|
||||||
template (present) PDU_BSSGP tr_BSSGP_RA_CAP_UPD(template (present) GprsTlli tlli,
|
template OCT1 tag) := {
|
||||||
template OCT1 tag) := {
|
pDU_BSSGP_RA_CAPABILITY_UPDATE := {
|
||||||
pDU_BSSGP_RA_CAPABILITY_UPDATE := {
|
bssgpPduType := '08'O,
|
||||||
bssgpPduType := '08'O,
|
tLLI := ts_BSSGP_TLLI(tlli),
|
||||||
tLLI := ts_BSSGP_TLLI(tlli),
|
tag := tr_BSSGP_IE_Tag(tag)
|
||||||
tag := tr_BSSGP_IE_Tag(tag)
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* 10.3.4 */
|
/* 10.3.4 */
|
||||||
template (value) PDU_BSSGP
|
template (value) PDU_BSSGP
|
||||||
ts_BSSGP_RA_CAP_UPD_ACK(GprsTlli tlli, OCT1 tag, template (value) OCT1 cause,
|
ts_BSSGP_RA_CAP_UPD_ACK(GprsTlli tlli, OCT1 tag, template (value) OCT1 cause,
|
||||||
template (omit) MSRadioAccessCapabilityV_BSSGP racap := omit) := {
|
template (omit) MSRadioAccessCapabilityV_BSSGP racap := omit) := {
|
||||||
pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := {
|
pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := {
|
||||||
bssgpPduType := '09'O,
|
bssgpPduType := '09'O,
|
||||||
tLLI := ts_BSSGP_TLLI(tlli),
|
tLLI := ts_BSSGP_TLLI(tlli),
|
||||||
tag := ts_BSSGP_IE_Tag(tag),
|
tag := ts_BSSGP_IE_Tag(tag),
|
||||||
iMSI := omit,
|
iMSI := omit,
|
||||||
rA_Cap_UPDATE_CAUSE := ts_BSSGP_IE_RACU_Cause(cause),
|
rA_Cap_UPDATE_CAUSE := ts_BSSGP_IE_RACU_Cause(cause),
|
||||||
mS_Radio_Access_Capability := ts_BSSGP_IE_MSRAcap_omit(racap)
|
mS_Radio_Access_Capability := ts_BSSGP_IE_MSRAcap_omit(racap)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
template (present) PDU_BSSGP
|
||||||
template (present) PDU_BSSGP
|
tr_BSSGP_RA_CAP_UPD_ACK(template (present) GprsTlli tlli, template OCT1 tag, template (present) OCT1 cause,
|
||||||
tr_BSSGP_RA_CAP_UPD_ACK(template (present) GprsTlli tlli, template OCT1 tag, template (present) OCT1 cause,
|
template MSRadioAccessCapabilityV_BSSGP racap := omit) := {
|
||||||
template MSRadioAccessCapabilityV_BSSGP racap := omit) := {
|
pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := {
|
||||||
pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := {
|
bssgpPduType := '09'O,
|
||||||
bssgpPduType := '09'O,
|
tLLI := ts_BSSGP_TLLI(tlli),
|
||||||
tLLI := ts_BSSGP_TLLI(tlli),
|
tag := tr_BSSGP_IE_Tag(tag),
|
||||||
tag := tr_BSSGP_IE_Tag(tag),
|
iMSI := omit,
|
||||||
iMSI := omit,
|
rA_Cap_UPDATE_CAUSE := tr_BSSGP_IE_RACU_Cause(cause),
|
||||||
rA_Cap_UPDATE_CAUSE := tr_BSSGP_IE_RACU_Cause(cause),
|
mS_Radio_Access_Capability := tr_BSSGP_IE_MSRAcap(racap)
|
||||||
mS_Radio_Access_Capability := tr_BSSGP_IE_MSRAcap(racap)
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
type enumerated BssgpRadioCause {
|
type enumerated BssgpRadioCause {
|
||||||
BSSGP_RADIO_CAUSE_CONTACT_LOST ('00'H),
|
BSSGP_RADIO_CAUSE_CONTACT_LOST ('00'H),
|
||||||
BSSGP_RADIO_CAUSE_LINK_QUAL_INSUFF ('01'H),
|
BSSGP_RADIO_CAUSE_LINK_QUAL_INSUFF ('01'H),
|
||||||
BSSGP_RADIO_CAUSE_CELL_RESEL_ORDERED ('02'H),
|
BSSGP_RADIO_CAUSE_CELL_RESEL_ORDERED ('02'H),
|
||||||
BSSGP_RADIO_CAUSE_CELL_RESEL_PREPARE ('03'H),
|
BSSGP_RADIO_CAUSE_CELL_RESEL_PREPARE ('03'H),
|
||||||
BSSGP_RADIO_CAUSE_CELL_RESEL_FAILURE ('04'H)
|
BSSGP_RADIO_CAUSE_CELL_RESEL_FAILURE ('04'H)
|
||||||
} with { variant "FIELDLENGTH(8)" };
|
} with { variant "FIELDLENGTH(8)" };
|
||||||
|
|
||||||
|
|
||||||
function ts_BSSGP_RADIO_CAUSE(template (omit) BssgpRadioCause cause) return template (omit) Radio_Cause {
|
function ts_BSSGP_RADIO_CAUSE(template (omit) BssgpRadioCause cause) return template (omit) Radio_Cause {
|
||||||
var template (omit) Radio_Cause ret;
|
var template (omit) Radio_Cause ret;
|
||||||
if (istemplatekind(cause, "omit")) {
|
if (istemplatekind(cause, "omit")) {
|
||||||
ret := omit;
|
ret := omit;
|
||||||
} else {
|
} 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.iEI := '19'O;
|
||||||
ret.ext := '1'B;
|
ret.ext := '1'B;
|
||||||
ret.lengthIndicator := { length1 := 1 };
|
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 */
|
/* 10.3.5 */
|
||||||
template (value) PDU_BSSGP
|
template (value) PDU_BSSGP
|
||||||
ts_BSSGP_RADIO_STATUS(GprsTlli tlli, template (value) BssgpRadioCause cause) := {
|
ts_BSSGP_RADIO_STATUS(GprsTlli tlli, template (value) BssgpRadioCause cause) := {
|
||||||
pDU_BSSGP_RADIO_STATUS := {
|
pDU_BSSGP_RADIO_STATUS := {
|
||||||
bssgpPduType := '0a'O,
|
bssgpPduType := '0a'O,
|
||||||
tLLI := ts_BSSGP_TLLI(tlli),
|
tLLI := ts_BSSGP_TLLI(tlli),
|
||||||
tMSI := omit,
|
tMSI := omit,
|
||||||
iMSI := omit,
|
iMSI := omit,
|
||||||
radio_Cause := ts_BSSGP_RADIO_CAUSE(cause)
|
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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
template (present) PDU_BSSGP
|
||||||
|
tr_BSSGP_RADIO_STATUS(template (present) GprsTlli tlli, template (present) BssgpRadioCause cause) := {
|
||||||
/* extract the BVCI IE of given PDU + convert it to integer value */
|
pDU_BSSGP_RADIO_STATUS := {
|
||||||
function f_BSSGP_BVCI_get(PDU_BSSGP pdu) return template (omit) BssgpBvci {
|
bssgpPduType := '0a'O,
|
||||||
var template (omit) BVCI bvci_raw := f_BSSGP_BVCI_IE_get(pdu);
|
tLLI := ts_BSSGP_TLLI(tlli),
|
||||||
if (istemplatekind(bvci_raw, "omit")) {
|
tMSI := omit,
|
||||||
return 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 {
|
/* PDU permitted on PTP BVC only (TS 48.018 Section 5.4.1) */
|
||||||
var bitstring tllib := oct2bit(tlli);
|
template (present) PDU_BSSGP tr_BSSGP_PERMITTED_PTP_ONLY := (
|
||||||
if (substr(tllib, 0, 2) == '11'B) {
|
{pDU_BSSGP_DL_UNITDATA := ?},
|
||||||
return TLLI_LOCAL;
|
{pDU_BSSGP_UL_UNITDATA := ?},
|
||||||
} else if (substr(tllib, 0, 2) == '10'B) {
|
{pDU_BSSGP_RA_CAPABILITY := ?},
|
||||||
return TLLI_FOREIGN;
|
{pDU_BSSGP_RA_CAPABILITY_UPDATE := ?},
|
||||||
} else if (substr(tllib, 0, 5) == '01111'B) {
|
{pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := ?},
|
||||||
return TLLI_RANDOM;
|
{pDU_BSSGP_RADIO_STATUS := ?},
|
||||||
} else if (substr(tllib, 0, 4) == '0110'B) {
|
{pDU_BSSGP_FLOW_CONTROL_BVC := ?},
|
||||||
return TLLI_RESERVED;
|
{pDU_BSSGP_FLOW_CONTROL_BVC_ACK := ?},
|
||||||
} else if (substr(tllib, 0, 3) == '010'B) {
|
{pDU_BSSGP_FLOW_CONTROL_MS := ?},
|
||||||
return TLLI_RESERVED;
|
{pDU_BSSGP_FLOW_CONTROL_MS_ACK := ?},
|
||||||
} else if (substr(tllib, 0, 4) == '0000'B) {
|
{pDU_BSSGP_FLOW_CONTROL_PFC := ?},
|
||||||
return TLLI_G_RNTI;
|
{pDU_BSSGP_FLOW_CONTROL_PFC_ACK := ?},
|
||||||
} else if (substr(tllib, 0, 4) == '0001'B) {
|
{pDU_BSSGP_DOWNLOAD_BSS_PFC := ?},
|
||||||
return TLLI_RAND_G_RNTI;
|
{pDU_BSSGP_CREATE_BSS_PFC := ?},
|
||||||
} else {
|
{pDU_BSSGP_CREATE_BSS_PFC_ACK := ?},
|
||||||
setverdict(fail, "Unknonw TLLI Type ", tllib);
|
{pDU_BSSGP_CREATE_BSS_PFC_NACK := ?},
|
||||||
mtc.stop;
|
{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 {
|
/* message on signaling PTP but containing a ptp BVC */
|
||||||
var OCT4 tlli := f_rnd_octstring(4);
|
/*
|
||||||
return tlli or4b 'c0000000'O;
|
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" };
|
} with { encode "RAW" };
|
||||||
|
|
Loading…
Reference in New Issue