From c2781477068e33353ed909dc1a9bf90b89c0f2e7 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Mon, 6 May 2019 14:48:02 +0200 Subject: WIP: SABP (Service Area Broadcast Protocol) definitions Using ASN.1 syntax copy+pasted from 3GPP TS 25.419 version 15.0.0 Release 15 Change-Id: Iab44cca10a664bbe2823a4183bca055ac8851137 --- library/sabp/SABP_CommonDataTypes.asn | 16 ++ library/sabp/SABP_Constants.asn | 66 +++++ library/sabp/SABP_Containers.asn | 94 +++++++ library/sabp/SABP_IEs.asn | 203 +++++++++++++++ library/sabp/SABP_PDU_Contents.asn | 447 +++++++++++++++++++++++++++++++++ library/sabp/SABP_PDU_Descriptions.asn | 168 +++++++++++++ library/sabp/SABP_Types.ttcn | 7 + 7 files changed, 1001 insertions(+) create mode 100644 library/sabp/SABP_CommonDataTypes.asn create mode 100644 library/sabp/SABP_Constants.asn create mode 100644 library/sabp/SABP_Containers.asn create mode 100644 library/sabp/SABP_IEs.asn create mode 100644 library/sabp/SABP_PDU_Contents.asn create mode 100644 library/sabp/SABP_PDU_Descriptions.asn create mode 100644 library/sabp/SABP_Types.ttcn diff --git a/library/sabp/SABP_CommonDataTypes.asn b/library/sabp/SABP_CommonDataTypes.asn new file mode 100644 index 00000000..92f3e128 --- /dev/null +++ b/library/sabp/SABP_CommonDataTypes.asn @@ -0,0 +1,16 @@ +-- +-- Common definitions +-- +-- ************************************************************** +SABP-CommonDataTypes { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +umts-Access (20) modules (3) sabp (3) version1 (1) sabp-CommonDataTypes (3) } +DEFINITIONS AUTOMATIC TAGS ::= +BEGIN +Criticality ::= ENUMERATED { reject, ignore, notify } +Presence ::= ENUMERATED { optional, conditional, mandatory } +ProcedureCode ::= INTEGER (0..255) +ProtocolExtensionID ::= INTEGER (0..65535) +ProtocolIE-ID ::= INTEGER (0..65535) +TriggeringMessage ::= ENUMERATED {initiating-message, successful-outcome, unsuccessful-outcome, outcome} +END diff --git a/library/sabp/SABP_Constants.asn b/library/sabp/SABP_Constants.asn new file mode 100644 index 00000000..5b390a99 --- /dev/null +++ b/library/sabp/SABP_Constants.asn @@ -0,0 +1,66 @@ +-- ************************************************************** +-- +-- Constant definitions +-- +-- ************************************************************** +SABP-Constants { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +umts-Access (20) modules (3) sabp (3) version1 (1) sabp-Constants (4) } +DEFINITIONS AUTOMATIC TAGS ::= +BEGIN +-- ************************************************************** +-- +-- Elementary Procedures +-- +-- ************************************************************** +id-Write-Replace INTEGER ::= 0 +id-Kill INTEGER ::= 1 +id-Load-Status-Enquiry INTEGER ::= 2 +id-Message-Status-Query INTEGER ::= 3 +id-Restart-Indication INTEGER ::= 4 +id-Reset INTEGER ::= 5 +id-Failure-Indication INTEGER ::= 6 +id-Error-Indication INTEGER ::= 7 +-- ************************************************************** +-- +-- IEs +-- +-- ************************************************************** +id-Broadcast-Message-Content INTEGER ::= 0 +id-Category INTEGER ::= 1 +id-Cause INTEGER ::= 2 +id-Criticality-Diagnostics INTEGER ::=3 +id-Data-Coding-Scheme INTEGER ::= 4 +id-Failure-List INTEGER ::= 5 +id-Message-Identifier INTEGER ::= 6 +id-New-Serial-Number INTEGER ::= 7 +id-Number-of-Broadcasts-Completed-List INTEGER ::= 8 +id-Number-of-Broadcasts-Requested INTEGER ::= 9 +id-Old-Serial-Number INTEGER ::= 10 +id-Radio-Resource-Loading-List INTEGER ::= 11 +id-Recovery-Indication INTEGER ::= 12 +id-Repetition-Period INTEGER ::= 13 +id-Serial-Number INTEGER ::= 14 +id-Service-Areas-List INTEGER ::= 15 +id-MessageStructure INTEGER ::= 16 +id-TypeOfError INTEGER ::= 17 +id-Paging-ETWS-Indicator INTEGER ::= 18 +id-Warning-Type INTEGER ::= 19 +id-WarningSecurityInfo INTEGER ::= 20 +id-Broadcast-Message-Content-Validity-Indicator INTEGER ::= 21 +-- ************************************************************** +-- +-- Extension constants +-- +-- ************************************************************** +-- ************************************************************** +-- +-- Lists +-- +-- ************************************************************** +maxNrOfErrors INTEGER ::= 256 +maxnoofSAI INTEGER ::= 65535 +maxProtocolExtensions INTEGER ::= 65535 +maxProtocolIEs INTEGER ::= 65535 +maxNrOfLevels INTEGER ::= 256 +END diff --git a/library/sabp/SABP_Containers.asn b/library/sabp/SABP_Containers.asn new file mode 100644 index 00000000..0aea9cc4 --- /dev/null +++ b/library/sabp/SABP_Containers.asn @@ -0,0 +1,94 @@ +-- ************************************************************** +-- +-- Container definitions +-- +-- ************************************************************** +SABP-Containers { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +umts-Access (20) modules (3) sabp (3) version1 (1) sabp-Containers (5) } +DEFINITIONS AUTOMATIC TAGS ::= +BEGIN +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** +IMPORTS + Criticality, + Presence, + ProtocolExtensionID, + ProtocolIE-ID +FROM SABP-CommonDataTypes + maxProtocolExtensions, + maxProtocolIEs +FROM SABP-Constants; +-- ************************************************************** +-- +-- Class Definition for Protocol IEs +-- +-- ************************************************************** +SABP-PROTOCOL-IES ::= CLASS { + &id ProtocolIE-ID UNIQUE, + &criticality Criticality DEFAULT ignore, + &Value, + &presence Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + TYPE &Value + PRESENCE &presence +} + +-- ************************************************************** +-- +-- Class Definition for Protocol Extensions +-- +-- ************************************************************** +SABP-PROTOCOL-EXTENSION ::= CLASS { + &id ProtocolExtensionID UNIQUE, + &criticality Criticality DEFAULT ignore, + &Extension, + &presence Presence +} +WITH SYNTAX { + ID &id + CRITICALITY &criticality + EXTENSION &Extension + PRESENCE &presence +} +-- ************************************************************** +-- +-- Container for Protocol IEs +-- +-- ************************************************************** +ProtocolIE-Container {SABP-PROTOCOL-IES : IEsSetParam} ::= + SEQUENCE (SIZE (0..maxProtocolIEs)) OF + ProtocolIE-Field {{IEsSetParam}} +ProtocolIE-Field {SABP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE { + id SABP-PROTOCOL-IES.&id ({IEsSetParam}), + criticality SABP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}), + value SABP-PROTOCOL-IES.&Value ({IEsSetParam}{@id}) +} +-- ************************************************************** +-- +-- Container Lists for Protocol IE Containers +-- +-- ************************************************************** +ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, SABP-PROTOCOL-IES : IEsSetParam} ::= + SEQUENCE (SIZE (lowerBound..upperBound)) OF + ProtocolIE-Container {{IEsSetParam}} +-- ************************************************************** +-- +-- Container for Protocol Extensions +-- +-- ************************************************************** +ProtocolExtensionContainer {SABP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= + SEQUENCE (SIZE (1..maxProtocolExtensions)) OF + ProtocolExtensionField {{ExtensionSetParam}} +ProtocolExtensionField {SABP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE { + id SABP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}), + criticality SABP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}), + extensionValue SABP-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id}) +} +END diff --git a/library/sabp/SABP_IEs.asn b/library/sabp/SABP_IEs.asn new file mode 100644 index 00000000..e21e007b --- /dev/null +++ b/library/sabp/SABP_IEs.asn @@ -0,0 +1,203 @@ +-- ************************************************************** +-- +-- Information Element Definitions +-- +-- ************************************************************** +SABP-IEs { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +umts-Access (20) modules (3) sabp (3) version1 (1) sabp-IEs (2) } +DEFINITIONS AUTOMATIC TAGS ::= +BEGIN +IMPORTS + maxNrOfErrors, + maxnoofSAI, + maxNrOfLevels, + id-MessageStructure, + id-TypeOfError +FROM SABP-Constants + Criticality, + ProcedureCode, + TriggeringMessage, + ProtocolIE-ID +FROM SABP-CommonDataTypes + ProtocolExtensionContainer{}, + SABP-PROTOCOL-EXTENSION +FROM SABP-Containers; +-- A +Available-Bandwidth ::= INTEGER (0..20480) +-- bits/sec +-- B +Broadcast-Message-Content ::= BIT STRING (SIZE (1..9968))-- This IE is sent from the CN to the RNC containing user information i.e. +-- the message. +Broadcast-Message-Content-Validity-Indicator ::= ENUMERATED { + broadcast-Message-Content-not-valid, + ... +} +-- C +Category ::= ENUMERATED { + high-priority, + background-priority, + normal-priority, + default-priority, + ... +} +Cause ::= INTEGER { + parameter-not-recognised (0), + parameter-value-invalid (1), + valid-CN-message-not-identified (2), + service-area-identity-not-valid (3), + unrecognised-message (4), + missing-mandatory-element (5), + rNC-capacity-exceeded (6), + rNC-memory-exceeded (7), + service-area-broadcast-not-supported (8), + service-area-broadcast-not-operational (9), + message-reference-already-used (10), + unspecifed-error (11), + transfer-syntax-error (12), + semantic-error (13), + message-not-compatible-with-receiver-state (14), + abstract-syntax-error-reject (15), + abstract-syntax-error-ignore-and-notify (16), + abstract-syntax-error-falsely-constructed-message (17) +} (0..255) +Criticality-Diagnostics ::= SEQUENCE { + procedureCode ProcedureCode OPTIONAL, + triggeringMessage TriggeringMessage OPTIONAL, + procedureCriticality Criticality OPTIONAL, + iEsCriticalityDiagnostics CriticalityDiagnostics-IE-List OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {CriticalityDiagnostics-ExtIEs} } OPTIONAL, + ... +} +CriticalityDiagnostics-ExtIEs SABP-PROTOCOL-EXTENSION ::= { + ... +} +CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE (1..maxNrOfErrors)) OF + SEQUENCE { + iECriticality Criticality, + iE-ID ProtocolIE-ID, + repetitionNumber RepetitionNumber0 OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {CriticalityDiagnostics-IE-List-ExtIEs} } OPTIONAL, + ... + } +CriticalityDiagnostics-IE-List-ExtIEs SABP-PROTOCOL-EXTENSION ::= { + { ID id-MessageStructure CRITICALITY ignore EXTENSION MessageStructure PRESENCE optional }| + { ID id-TypeOfError CRITICALITY ignore EXTENSION TypeOfError PRESENCE mandatory }, + ... +} +MessageStructure ::= SEQUENCE (SIZE (1..maxNrOfLevels)) OF + SEQUENCE { + iE-ID ProtocolIE-ID, + repetitionNumber RepetitionNumber1 OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {MessageStructure-ExtIEs} } OPTIONAL, + ... + } +MessageStructure-ExtIEs SABP-PROTOCOL-EXTENSION ::= { + ... +} +-- D +Data-Coding-Scheme ::= BIT STRING (SIZE (8)) +-- E +-- F +Failure-List ::= SEQUENCE (SIZE (1..maxnoofSAI)) OF Failure-List-Item +Failure-List-Item ::= SEQUENCE { + service-area-identifier Service-Area-Identifier, + cause Cause, + iE-Extensions ProtocolExtensionContainer { {FailureListItemIE-ExtIEs} } OPTIONAL, + ... +} +FailureListItemIE-ExtIEs SABP-PROTOCOL-EXTENSION ::= { +... +} +-- G +-- H +-- I +-- J +-- K +-- L +-- M +Message-Identifier ::= BIT STRING (SIZE (16)) +-- N +New-Serial-Number ::= Serial-Number +Number-of-Broadcasts-Completed-List ::= SEQUENCE (SIZE (1..maxnoofSAI)) OF + Number-of-Broadcasts-Completed-List-Item +Number-of-Broadcasts-Completed-List-Item ::= SEQUENCE { + service-area-identifier Service-Area-Identifier, + number-of-broadcasts-completed INTEGER (0..65535), + number-of-broadcasts-completed-info Number-Of-Broadcasts-Completed-Info OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {NoOfBroadcastsCompletedListItemIE-ExtIEs} } OPTIONAL, + ... +} +NoOfBroadcastsCompletedListItemIE-ExtIEs SABP-PROTOCOL-EXTENSION ::= { +... +} +Number-Of-Broadcasts-Completed-Info ::= ENUMERATED { + overflow, + unknown, + ... +} +Number-of-Broadcasts-Requested ::= INTEGER { + broadcast-indefinitely (0) +} (0..65535) +-- O +Old-Serial-Number ::= Serial-Number +-- P +Paging-ETWS-Indicator ::= ENUMERATED { + paging, + ... +} +-- Q +-- R +Radio-Resource-Loading-List ::= SEQUENCE (SIZE (1..maxnoofSAI)) OF + Radio-Resource-Loading-List-Item +Radio-Resource-Loading-List-Item ::= SEQUENCE { + service-area-identifier Service-Area-Identifier, + available-bandwidth Available-Bandwidth, + iE-Extensions ProtocolExtensionContainer { {RadioResourceLoadingListItemIE-ExtIEs} } OPTIONAL, + ... +} +RadioResourceLoadingListItemIE-ExtIEs SABP-PROTOCOL-EXTENSION ::= { +... +} +Recovery-Indication ::= ENUMERATED { + data-lost, + data-available +} +RepetitionNumber0 ::= INTEGER(0..255) +RepetitionNumber1 ::= INTEGER(1..256) +Repetition-Period ::= INTEGER (1..4096) +-- Each unit represents a repetition of one second to a maximum of +-- once per 4096 seconds (~1 hour). +-- S +Serial-Number ::= BIT STRING (SIZE (16)) +Service-Area-Identifier ::= SEQUENCE { + pLMNidentity OCTET STRING (SIZE (3)) + -- Digits 0 to 9, two digits per octet. -- + -- Each octet encoded 0000 to 1001. -- + -- 1111 used as filler -- + -- Bit 4 to 1 of octet n encoding digit 2n-1. -- + -- Bit 8 to 5 of octet n encoding digit 2n. -- + -- The PLMN identity consists of 3 digits from MCC -- + -- followed by either a filler plus 2 digits -- + -- from MNC (in case of 2 digit MNC) or 3 digits -- + -- from MNC (in case of 3 digit MNC). -- , + lac OCTET STRING (SIZE (2)) + -- 0000 and FFFE not allowed -- , + sac OCTET STRING (SIZE (2)) +} +-- **TODO** The IE type for these parameters is not known as yet +Service-Areas-List ::= SEQUENCE (SIZE (1..maxnoofSAI)) OF Service-Area-Identifier +-- T +TypeOfError ::= ENUMERATED { + not-understood, + missing, + ... +} +-- U +-- V +-- W +WarningSecurityInfo ::= OCTET STRING (SIZE (50)) +Warning-Type ::= OCTET STRING (SIZE(2)) +-- X +-- Y +END diff --git a/library/sabp/SABP_PDU_Contents.asn b/library/sabp/SABP_PDU_Contents.asn new file mode 100644 index 00000000..814da2ff --- /dev/null +++ b/library/sabp/SABP_PDU_Contents.asn @@ -0,0 +1,447 @@ +-- ************************************************************** +-- +-- PDU definitions for SABP. +-- +-- ************************************************************** +SABP-PDU-Contents { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +umts-Access (20) modules (3) sabp (3) version1 (1) sabp-PDU-Contents (1) } +DEFINITIONS AUTOMATIC TAGS ::= +BEGIN +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** +IMPORTS + Broadcast-Message-Content, + Category, + Cause, +Criticality-Diagnostics, + Data-Coding-Scheme, + Failure-List, + Message-Identifier, + New-Serial-Number, + Number-of-Broadcasts-Completed-List, + Number-of-Broadcasts-Requested, + Old-Serial-Number, + Paging-ETWS-Indicator, + Radio-Resource-Loading-List, + Recovery-Indication, + Repetition-Period, + Serial-Number, + Service-Areas-List, + WarningSecurityInfo, + Warning-Type, + Broadcast-Message-Content-Validity-Indicator +FROM SABP-IEs + ProtocolExtensionContainer{}, + ProtocolIE-Container{}, + SABP-PROTOCOL-EXTENSION, + SABP-PROTOCOL-IES +FROM SABP-Containers + id-Broadcast-Message-Content, + id-Category, + id-Criticality-Diagnostics, + id-Cause, + id-Data-Coding-Scheme, + id-Failure-List, + id-Message-Identifier, + id-New-Serial-Number, + id-Number-of-Broadcasts-Completed-List, + id-Number-of-Broadcasts-Requested, + id-Old-Serial-Number, + id-Paging-ETWS-Indicator, + id-Radio-Resource-Loading-List, + id-Recovery-Indication, + id-Repetition-Period, + id-Serial-Number, + id-Service-Areas-List, + id-WarningSecurityInfo, + id-Warning-Type, + id-Broadcast-Message-Content-Validity-Indicator +FROM SABP-Constants; +-- ************************************************************** +-- +-- Write-Replace +-- +-- ************************************************************** +Write-Replace ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {Write-Replace-IEs} }, + protocolExtensions ProtocolExtensionContainer { {Write-Replace-Extensions} } OPTIONAL, + ... +} +Write-Replace-IEs SABP-PROTOCOL-IES ::= { + { ID id-Message-Identifier CRITICALITY reject TYPE Message-Identifier PRESENCE mandatory } | + { ID id-New-Serial-Number CRITICALITY reject TYPE New-Serial-Number PRESENCE mandatory } | + { ID id-Old-Serial-Number CRITICALITY ignore TYPE Old-Serial-Number PRESENCE optional } | + { ID id-Service-Areas-List CRITICALITY reject TYPE Service-Areas-List PRESENCE mandatory } | + { ID id-Category CRITICALITY ignore TYPE Category PRESENCE optional } | + { ID id-Repetition-Period CRITICALITY reject TYPE Repetition-Period PRESENCE mandatory } | + { ID id-Number-of-Broadcasts-Requested + CRITICALITY reject TYPE Number-of-Broadcasts-Requested PRESENCE mandatory } | + { ID id-Data-Coding-Scheme CRITICALITY reject TYPE Data-Coding-Scheme PRESENCE mandatory } | + { ID id-Broadcast-Message-Content + CRITICALITY reject TYPE Broadcast-Message-Content PRESENCE mandatory }, + ... +} +Write-Replace-Extensions SABP-PROTOCOL-EXTENSION ::= { + { ID id-WarningSecurityInfo CRITICALITY ignore EXTENSION WarningSecurityInfo PRESENCE optional } | + { ID id-Paging-ETWS-Indicator CRITICALITY ignore EXTENSION Paging-ETWS-Indicator PRESENCE optional } | + { ID id-Warning-Type CRITICALITY ignore EXTENSION Warning-Type PRESENCE optional } | + { ID id-Broadcast-Message-Content-Validity-Indicator CRITICALITY ignore EXTENSION Broadcast-Message-Content-Validity-Indicator PRESENCE +optional }, + ... +} +-- ************************************************************** +-- +-- Write-Replace-Complete +-- +-- ************************************************************** +Write-Replace-Complete ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {Write-Replace-Complete-IEs} }, + protocolExtensions ProtocolExtensionContainer { {Write-Replace-Complete-Extensions} } OPTIONAL, + ... +} +Write-Replace-Complete-IEs SABP-PROTOCOL-IES ::= { + { ID id-Message-Identifier CRITICALITY reject TYPE Message-Identifier PRESENCE mandatory } | + { ID id-New-Serial-Number CRITICALITY reject TYPE New-Serial-Number PRESENCE mandatory } | + { ID id-Number-of-Broadcasts-Completed-List + CRITICALITY reject TYPE Number-of-Broadcasts-Completed-List + PRESENCE mandatory }| +{ ID id-Criticality-Diagnostics +CRITICALITY ignore TYPE Criticality-Diagnostics PRESENCE optional }, + ... +} +Write-Replace-Complete-Extensions SABP-PROTOCOL-EXTENSION ::= { + ... +} +-- ************************************************************** +-- +-- Write-Replace-Failure +-- +-- ************************************************************** +Write-Replace-Failure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {Write-Replace-Failure-IEs} }, + protocolExtensions ProtocolExtensionContainer { {Write-Replace-Failure-Extensions} } OPTIONAL, + ... +} +Write-Replace-Failure-IEs SABP-PROTOCOL-IES ::= { + { ID id-Message-Identifier CRITICALITY reject TYPE Message-Identifier PRESENCE mandatory } | + { ID id-New-Serial-Number CRITICALITY reject TYPE New-Serial-Number PRESENCE mandatory } | + { ID id-Failure-List CRITICALITY reject TYPE Failure-List PRESENCE mandatory } | + { ID id-Number-of-Broadcasts-Completed-List + CRITICALITY ignore TYPE Number-of-Broadcasts-Completed-List + PRESENCE optional } | +{ ID id-Criticality-Diagnostics +CRITICALITY ignore TYPE Criticality-Diagnostics PRESENCE optional }, + ... +} +Write-Replace-Failure-Extensions SABP-PROTOCOL-EXTENSION ::= { + ... +} +-- ************************************************************** +-- +-- Kill +-- +-- ************************************************************** +Kill ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{Kill-IEs}}, + protocolExtensions ProtocolExtensionContainer {{Kill-Extensions}} OPTIONAL, + ... +} +Kill-IEs SABP-PROTOCOL-IES ::= { + { ID id-Message-Identifier CRITICALITY reject TYPE Message-Identifier PRESENCE mandatory } | + { ID id-Old-Serial-Number CRITICALITY reject TYPE Old-Serial-Number PRESENCE mandatory } | + { ID id-Service-Areas-List CRITICALITY reject TYPE Service-Areas-List PRESENCE mandatory } , + ... +} +Kill-Extensions SABP-PROTOCOL-EXTENSION ::= { + ... +} +-- ************************************************************** +-- +-- Kill-Complete +-- +-- ************************************************************** +Kill-Complete ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{Kill-Complete-IEs}}, + protocolExtensions ProtocolExtensionContainer {{Kill-Complete-Extensions}} OPTIONAL, + ... +} +Kill-Complete-IEs SABP-PROTOCOL-IES ::= { + { ID id-Message-Identifier CRITICALITY reject TYPE Message-Identifier PRESENCE mandatory } | + { ID id-Old-Serial-Number CRITICALITY reject TYPE Old-Serial-Number PRESENCE mandatory } | + { ID id-Number-of-Broadcasts-Completed-List + CRITICALITY reject TYPE Number-of-Broadcasts-Completed-List + PRESENCE mandatory }| +{ ID id-Criticality-Diagnostics +CRITICALITY ignore TYPE Criticality-Diagnostics PRESENCE optional }, + ... +} +Kill-Complete-Extensions SABP-PROTOCOL-EXTENSION ::= { + ... +} +-- ************************************************************** +-- +-- Kill-Failure +-- +-- ************************************************************** +Kill-Failure ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{Kill-Failure-IEs}}, + protocolExtensions ProtocolExtensionContainer {{Kill-Failure-Extensions}} OPTIONAL, + ... +} +Kill-Failure-IEs SABP-PROTOCOL-IES ::= { + { ID id-Message-Identifier CRITICALITY reject TYPE Message-Identifier PRESENCE mandatory } | + { ID id-Old-Serial-Number CRITICALITY reject TYPE Old-Serial-Number PRESENCE mandatory } | + { ID id-Failure-List CRITICALITY reject TYPE Failure-List PRESENCE mandatory } | + { ID id-Number-of-Broadcasts-Completed-List + CRITICALITY ignore TYPE Number-of-Broadcasts-Completed-List + PRESENCE optional } | +{ ID id-Criticality-Diagnostics +CRITICALITY ignore TYPE Criticality-Diagnostics PRESENCE optional }, + ... +} +Kill-Failure-Extensions SABP-PROTOCOL-EXTENSION ::= { + ... +} +-- ************************************************************** +-- +-- Load-Query +-- +-- ************************************************************** +Load-Query ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{Load-Query-IEs}}, + protocolExtensions ProtocolExtensionContainer {{Load-Query-Extensions}} OPTIONAL, + ... +} +Load-Query-IEs SABP-PROTOCOL-IES ::= { + { ID id-Service-Areas-List CRITICALITY reject TYPE Service-Areas-List PRESENCE mandatory } , + ... +} +Load-Query-Extensions SABP-PROTOCOL-EXTENSION ::= { + ... +} +-- ************************************************************** +-- +-- Load-Query-Complete +-- +-- ************************************************************** +Load-Query-Complete ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{Load-Query-Complete-IEs}}, + protocolExtensions ProtocolExtensionContainer {{Load-Query-Complete-Extensions}} OPTIONAL, + ... +} +Load-Query-Complete-IEs SABP-PROTOCOL-IES ::= { + { ID id-Radio-Resource-Loading-List + CRITICALITY reject TYPE Radio-Resource-Loading-List + PRESENCE mandatory } | +{ ID id-Criticality-Diagnostics +CRITICALITY ignore TYPE Criticality-Diagnostics PRESENCE optional }, + ... +} +Load-Query-Complete-Extensions SABP-PROTOCOL-EXTENSION ::= { + ... +} +-- ************************************************************** +-- +-- Load-Query-Failure +-- +-- ************************************************************** +Load-Query-Failure ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{Load-Query-Failure-IEs}}, + protocolExtensions ProtocolExtensionContainer {{Load-Query-Failure-Extensions}} OPTIONAL, + ... +} +Load-Query-Failure-IEs SABP-PROTOCOL-IES ::= { + { ID id-Failure-List CRITICALITY reject TYPE Failure-List PRESENCE mandatory } | + { ID id-Radio-Resource-Loading-List + CRITICALITY ignore TYPE Radio-Resource-Loading-List + PRESENCE optional } | +{ ID id-Criticality-Diagnostics +CRITICALITY ignore TYPE Criticality-Diagnostics PRESENCE optional }, + ... +} +Load-Query-Failure-Extensions SABP-PROTOCOL-EXTENSION ::= { + ... +} +-- ************************************************************** +-- +-- Message-Status-Query +-- +-- ************************************************************** +Message-Status-Query ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{Message-Status-Query-IEs}}, + protocolExtensions ProtocolExtensionContainer {{Message-Status-Query-Extensions}} OPTIONAL, + ... +} +Message-Status-Query-IEs SABP-PROTOCOL-IES ::= { + { ID id-Message-Identifier CRITICALITY reject TYPE Message-Identifier PRESENCE mandatory } | + { ID id-Old-Serial-Number CRITICALITY reject TYPE Old-Serial-Number PRESENCE mandatory } | + { ID id-Service-Areas-List CRITICALITY reject TYPE Service-Areas-List PRESENCE mandatory } , + ... +} +Message-Status-Query-Extensions SABP-PROTOCOL-EXTENSION ::= { + ... +} +-- ************************************************************** +-- +-- Message-Status-Query-Complete +-- +-- ************************************************************** +Message-Status-Query-Complete ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{Message-Status-Query-Complete-IEs}}, + protocolExtensions ProtocolExtensionContainer {{Message-Status-Query-Complete-Extensions}} OPTIONAL, + ... +} +Message-Status-Query-Complete-IEs SABP-PROTOCOL-IES ::= { + { ID id-Message-Identifier CRITICALITY reject TYPE Message-Identifier PRESENCE mandatory } | + { ID id-Old-Serial-Number CRITICALITY reject TYPE Old-Serial-Number PRESENCE mandatory } | + { ID id-Number-of-Broadcasts-Completed-List + CRITICALITY reject TYPE Number-of-Broadcasts-Completed-List + PRESENCE mandatory } | +{ ID id-Criticality-Diagnostics +CRITICALITY ignore TYPE Criticality-Diagnostics PRESENCE optional }, + ... +} +Message-Status-Query-Complete-Extensions SABP-PROTOCOL-EXTENSION ::= { + ... +} +-- ************************************************************** +-- +-- Message-Status-Query-Failure +-- +-- ************************************************************** +Message-Status-Query-Failure ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{Message-Status-Query-Failure-IEs}}, + protocolExtensions ProtocolExtensionContainer {{Message-Status-Query-Failure-Extensions}} OPTIONAL, + ... +} +Message-Status-Query-Failure-IEs SABP-PROTOCOL-IES ::= { + { ID id-Message-Identifier CRITICALITY reject TYPE Message-Identifier PRESENCE mandatory } | + { ID id-Failure-List CRITICALITY reject TYPE Failure-List PRESENCE mandatory } | + { ID id-Old-Serial-Number CRITICALITY reject TYPE Old-Serial-Number PRESENCE mandatory } | + { ID id-Number-of-Broadcasts-Completed-List + CRITICALITY ignore TYPE Number-of-Broadcasts-Completed-List + PRESENCE optional } | +{ ID id-Criticality-Diagnostics +CRITICALITY ignore TYPE Criticality-Diagnostics PRESENCE optional }, + ... +} +Message-Status-Query-Failure-Extensions SABP-PROTOCOL-EXTENSION ::= { + ... +} +-- ************************************************************** +-- +-- Reset +-- +-- ************************************************************** +Reset ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{Reset-IEs}}, + protocolExtensions ProtocolExtensionContainer {{Reset-Extensions}} OPTIONAL, + ... +} +Reset-IEs SABP-PROTOCOL-IES ::= { + { ID id-Service-Areas-List CRITICALITY reject TYPE Service-Areas-List PRESENCE mandatory } , + ... +} +Reset-Extensions SABP-PROTOCOL-EXTENSION ::= { + ... +} +-- ************************************************************** +-- +-- Reset-Complete +-- +-- ************************************************************** +Reset-Complete ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{Reset-Complete-IEs}}, + protocolExtensions ProtocolExtensionContainer {{Reset-Complete-Extensions}} OPTIONAL, + ... +} +Reset-Complete-IEs SABP-PROTOCOL-IES ::= { + { ID id-Service-Areas-List CRITICALITY reject TYPE Service-Areas-List PRESENCE mandatory } | +{ ID id-Criticality-Diagnostics +CRITICALITY ignore TYPE Criticality-Diagnostics PRESENCE optional }, + ... +} +Reset-Complete-Extensions SABP-PROTOCOL-EXTENSION ::= { + ... +} +-- ************************************************************** +-- +-- Reset-Failure +-- +-- ************************************************************** +Reset-Failure ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{Reset-Failure-IEs}}, + protocolExtensions ProtocolExtensionContainer {{Reset-Failure-Extensions}} OPTIONAL, + ... +} +Reset-Failure-IEs SABP-PROTOCOL-IES ::= { + { ID id-Failure-List CRITICALITY reject TYPE Failure-List PRESENCE mandatory } | + { ID id-Service-Areas-List CRITICALITY reject TYPE Service-Areas-List PRESENCE optional } | +{ ID id-Criticality-Diagnostics +CRITICALITY ignore TYPE Criticality-Diagnostics PRESENCE optional } , + ... +} +Reset-Failure-Extensions SABP-PROTOCOL-EXTENSION ::= { + ... +} +-- ************************************************************** +-- +-- Restart +-- +-- ************************************************************** +Restart ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{Restart-IEs}}, + protocolExtensions ProtocolExtensionContainer {{Restart-Extensions}} OPTIONAL, + ... +} +Restart-IEs SABP-PROTOCOL-IES ::= { + { ID id-Service-Areas-List CRITICALITY ignore TYPE Service-Areas-List PRESENCE mandatory } | + { ID id-Recovery-Indication CRITICALITY ignore TYPE Recovery-Indication PRESENCE optional } , + ... +} +Restart-Extensions SABP-PROTOCOL-EXTENSION ::= { + ... +} +-- ************************************************************** +-- +-- Failure +-- +-- ************************************************************** +Failure ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{Failure-IEs}}, + protocolExtensions ProtocolExtensionContainer {{Failure-Extensions}} OPTIONAL, + ... +} +Failure-IEs SABP-PROTOCOL-IES ::= { + { ID id-Service-Areas-List CRITICALITY ignore TYPE Service-Areas-List PRESENCE mandatory } , + ... +} +Failure-Extensions SABP-PROTOCOL-EXTENSION ::= { + ... +} +-- ************************************************************** +-- +-- Error-Indication +-- +-- ************************************************************** +Error-Indication ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{Error-Indication-IEs}}, + protocolExtensions ProtocolExtensionContainer {{Error-Indication-Extensions}} OPTIONAL, + ... +} +Error-Indication-IEs SABP-PROTOCOL-IES ::= { + { ID id-Message-Identifier CRITICALITY ignore TYPE Message-Identifier PRESENCE optional } | + { ID id-Serial-Number CRITICALITY ignore TYPE Serial-Number PRESENCE optional } | + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional } | +{ ID id-Criticality-Diagnostics +CRITICALITY ignore TYPE Criticality-Diagnostics PRESENCE optional }, + ... +} +Error-Indication-Extensions SABP-PROTOCOL-EXTENSION ::= { + ... +} +END diff --git a/library/sabp/SABP_PDU_Descriptions.asn b/library/sabp/SABP_PDU_Descriptions.asn new file mode 100644 index 00000000..428c35a0 --- /dev/null +++ b/library/sabp/SABP_PDU_Descriptions.asn @@ -0,0 +1,168 @@ +-- ************************************************************** +-- +-- Elementary Procedure definitions +-- +-- ************************************************************** +SABP-PDU-Descriptions { +itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) +umts-Access (20) modules (3) sabp (3) version1 (1) sabp-PDU-Descriptions (0)} +DEFINITIONS AUTOMATIC TAGS ::= +BEGIN +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** +IMPORTS + Criticality, + ProcedureCode +FROM SABP-CommonDataTypes + Error-Indication, + Failure, + Kill, + Kill-Complete, + Kill-Failure, + Load-Query, + Load-Query-Complete, + Load-Query-Failure, + Reset, + Reset-Complete, + Reset-Failure, + Restart, + Message-Status-Query, + Message-Status-Query-Complete, + Message-Status-Query-Failure, + Write-Replace, + Write-Replace-Complete, + Write-Replace-Failure +FROM SABP-PDU-Contents + id-Error-Indication, + id-Failure-Indication, + id-Kill, + id-Reset, + id-Restart-Indication, + id-Load-Status-Enquiry, + id-Message-Status-Query, + id-Write-Replace +FROM SABP-Constants; +-- ************************************************************** +-- +-- Interface Elementary Procedure Class +-- +-- ************************************************************** +SABP-ELEMENTARY-PROCEDURE ::= CLASS { + &InitiatingMessage , + &SuccessfulOutcome OPTIONAL, + &UnsuccessfulOutcome OPTIONAL, + &procedureCode ProcedureCode UNIQUE, + &criticality Criticality DEFAULT ignore +} +WITH SYNTAX { + INITIATING MESSAGE &InitiatingMessage + [SUCCESSFUL OUTCOME +&SuccessfulOutcome] + [UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome] + PROCEDURE CODE &procedureCode + [CRITICALITY &criticality] +} +-- ************************************************************** +-- +-- Interface PDU Definition +-- +-- ************************************************************** +SABP-PDU ::= CHOICE { + initiatingMessage InitiatingMessage, + successfulOutcome SuccessfulOutcome, + unsuccessfulOutcome UnsuccessfulOutcome, + ... +} +InitiatingMessage ::= SEQUENCE { + procedureCode SABP-ELEMENTARY-PROCEDURE.&procedureCode ({SABP-ELEMENTARY-PROCEDURES}), + criticality SABP-ELEMENTARY-PROCEDURE.&criticality ({SABP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value SABP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({SABP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} +SuccessfulOutcome ::= SEQUENCE { + procedureCode SABP-ELEMENTARY-PROCEDURE.&procedureCode ({SABP-ELEMENTARY-PROCEDURES}), + criticality SABP-ELEMENTARY-PROCEDURE.&criticality ({SABP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value SABP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({SABP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} +UnsuccessfulOutcome ::= SEQUENCE { + procedureCode SABP-ELEMENTARY-PROCEDURE.&procedureCode ({SABP-ELEMENTARY-PROCEDURES}), + criticality SABP-ELEMENTARY-PROCEDURE.&criticality ({SABP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value SABP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({SABP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} +-- ************************************************************** +-- +-- Interface Elementary Procedure List +-- +-- ************************************************************** +SABP-ELEMENTARY-PROCEDURES SABP-ELEMENTARY-PROCEDURE ::= { + SABP-ELEMENTARY-PROCEDURES-CLASS-1 | + SABP-ELEMENTARY-PROCEDURES-CLASS-2 , + ... +} +SABP-ELEMENTARY-PROCEDURES-CLASS-1 SABP-ELEMENTARY-PROCEDURE ::= { + write-Replace | + kill | + load-Status-Enquiry | + message-Status-Query | + reset , + ... +} +SABP-ELEMENTARY-PROCEDURES-CLASS-2 SABP-ELEMENTARY-PROCEDURE ::= { + restart-Indication | + failure-Indication | + error-Indication , + ... +} +write-Replace SABP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Write-Replace + SUCCESSFUL OUTCOME Write-Replace-Complete + UNSUCCESSFUL OUTCOME Write-Replace-Failure + PROCEDURE CODE id-Write-Replace + CRITICALITY reject +} +kill SABP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Kill + SUCCESSFUL OUTCOME Kill-Complete + UNSUCCESSFUL OUTCOME Kill-Failure + PROCEDURE CODE id-Kill + CRITICALITY reject +} +load-Status-Enquiry SABP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Load-Query + SUCCESSFUL OUTCOME Load-Query-Complete + UNSUCCESSFUL OUTCOME Load-Query-Failure + PROCEDURE CODE id-Load-Status-Enquiry + CRITICALITY reject +} +message-Status-Query SABP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Message-Status-Query + SUCCESSFUL OUTCOME Message-Status-Query-Complete + UNSUCCESSFUL OUTCOME Message-Status-Query-Failure + PROCEDURE CODE id-Message-Status-Query + CRITICALITY reject +} +reset SABP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Reset + SUCCESSFUL OUTCOME Reset-Complete + UNSUCCESSFUL OUTCOME Reset-Failure + PROCEDURE CODE id-Reset + CRITICALITY reject +} +restart-Indication SABP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Restart + PROCEDURE CODE id-Restart-Indication + CRITICALITY ignore +} +failure-Indication SABP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Failure + PROCEDURE CODE id-Failure-Indication + CRITICALITY ignore +} +error-Indication SABP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE Error-Indication + PROCEDURE CODE id-Error-Indication + CRITICALITY ignore +} +END diff --git a/library/sabp/SABP_Types.ttcn b/library/sabp/SABP_Types.ttcn new file mode 100644 index 00000000..df86549d --- /dev/null +++ b/library/sabp/SABP_Types.ttcn @@ -0,0 +1,7 @@ +module SABP_Types { + + import from SABP_PDU_Descriptions language "ASN.1:1997" all; + + external function enc_SABP_PDU(in SABP_PDU pdu) return octetstring; + external function dec_SABP_PDU(in octetstring stream) return SABP_PDU; +} -- cgit v1.2.3