BSSMAP templates for LCS

Both BSSMAP-LE and BSSMAP use the LCS Cause IE with identical definition. In
order to not add further dependencies from BSSMAP_Templates.ttcn to
BSSAP_LE_Types.ttcn to BSSLAP_Types.ttcn, duplicate the LCS Cause enum.

Change-Id: Ifee698c128a5345f6bf0301ad4dac9e083285d56
This commit is contained in:
Neels Hofmeyr 2020-10-01 06:39:10 +02:00 committed by laforge
parent fc64f53c49
commit e52bc2d9df
1 changed files with 105 additions and 0 deletions

View File

@ -103,6 +103,25 @@ type enumerated myBSSMAP_Cause {
GSM0808_CAUSE_DTM_HO_TIMER_EXPIRY ('1100010'B)
} with { variant "FIELDLENGTH(7)" };
type enumerated BSSMAP_LcsCause {
BSSMAP_LCS_CAUSE_UNSPECIFIED ('00000000'B),
BSSMAP_LCS_CAUSE_SYSTEM_FAILURE ('00000001'B),
BSSMAP_LCS_CAUSE_PROTOCOL_ERROR ('00000010'B),
BSSMAP_LCS_CAUSE_DATA_MISSING_IN_REQ ('00000011'B),
BSSMAP_LCS_CAUSE_UNEXP_DATA_IN_REQ ('00000100'B),
BSSMAP_LCS_CAUSE_POS_METH_FAILURE ('00000101'B),
BSSMAP_LCS_CAUSE_TGT_MS_UNREACHABLE ('00000110'B),
BSSMAP_LCS_CAUSE_REQUEST_ABORTED ('00000111'B),
BSSMAP_LCS_CAUSE_FACILITY_NOTSUPP ('00001000'B),
BSSMAP_LCS_CAUSE_INTER_BSC_HO ('00001001'B),
BSSMAP_LCS_CAUSE_INTRA_BSC_HO ('00001010'B),
BSSMAP_LCS_CAUSE_CONGESTION ('00001011'B),
BSSMAP_LCS_CAUSE_INTER_NSE_CHG ('00001100'B),
BSSMAP_LCS_CAUSE_RA_UPDAT ('00001101'B),
BSSMAP_LCS_CAUSE_PTMSI_REALLOC ('00001110'B),
BSSMAP_LCS_CAUSE_GPRS_SUSPENSION ('00001111'B)
} with { variant "FIELDLENGTH(8)" };
template PDU_BSSAP ts_BSSAP_BSSMAP := {
discriminator := '0'B,
spare := '0000000'B,
@ -1693,6 +1712,92 @@ return template (present) BIT3 {
}
}
template (value) BSSMAP_IE_LocationType ts_BSSMAP_IE_LocationType
:= {
elementIdentifier := '44'O,
lengthIndicator := 1,
locationInformation := '00'O,
positioningMethod := omit
}
template (value) PDU_BSSAP ts_BSSMAP_Perform_Location_Request(template (omit) BSSMAP_IE_IMSI imsi,
template (omit) BSSMAP_IE_CellIdentifier cellIdentifier := omit
)
modifies ts_BSSAP_BSSMAP := {
pdu := {
bssmap := {
performLocationRequest := {
messageType := '2B'O,
locationType := ts_BSSMAP_IE_LocationType,
cellIdentifier := cellIdentifier,
classmarkInformationType3 := omit,
lCS_ClientType := omit,
chosenChannel := omit,
lCS_Priority := omit,
lCS_QOS := omit,
gPS_AssistanceData := omit,
aPDU := omit,
iMSI := imsi,
iMEI := omit,
gANSS_LocationType := omit,
gANSS_AssistanceData := omit
}
}
}
}
template (present) BSSMAP_IE_LocationEstimate tr_BSSMAP_IE_LocationEstimate(template (present) octetstring geo_loc := ?)
:= {
elementIdentifier := '45'O,
lengthIndicator := ?,
geographicLocation := geo_loc
}
function tr_BSSMAP_LcsCause(template (present) BSSMAP_LcsCause cause)
return template (omit) BSSMAP_IE_LCSCause {
if (istemplatekind(cause, "omit")) {
return omit;
}
var template BSSMAP_IE_LCSCause ie := {
elementIdentifier := '47'O,
lengthIndicator := 1,
causeValue := int2bit(enum2int(valueof(cause)), 8),
diagnosticValue := omit
}
return ie;
}
template (present) PDU_BSSAP tr_BSSMAP_Perform_Location_Response(
template BSSMAP_IE_LocationEstimate locationEstimate := *,
template BSSMAP_IE_PositioningData positioningData := *,
template BSSMAP_IE_LCSCause lCS_Cause := *
)
modifies tr_BSSAP_BSSMAP := {
pdu := {
bssmap := {
performLocationResponse := {
messageType := '2D'O,
locationEstimate := locationEstimate,
positioningData := positioningData,
decipheringKeys := *,
lCS_Cause := lCS_Cause,
velocityEstimate := *,
gANSS_PositioningData := *
}
}
}
}
template (present) PDU_BSSAP tr_BSSMAP_Perform_Location_Abort(template (present) BSSMAP_IE_LCSCause lCS_Cause := ?)
modifies tr_BSSAP_BSSMAP := {
pdu := {
bssmap := {
performLocationAbort := {
messageType := '2E'O,
lCS_Cause := lCS_Cause
}
}
}
}
} with { encode "RAW" };