8 Detailed message format and information elements coding
3GPP44.071GSM/EDGE Location Services (LCS)Mobile radio interface layer 3 LCS specificationRelease 17TS
8.1 Transparent LCS Information
This clause provides the formats and encoding of Transparent LCS Information component in the Facility information element. The contents of this component are copied directly from Signal Info (defined in subclause 11.1). Encoding methods for the entire LLP component are based on BASIC-PER; unaligned variant is used. Format and encoding of the entire LLP component – part of which can be seen as a subset of ITU-T Recommendation Q.773 – is based on and consistent with the following ITU-T recommendations:
– Abstract Syntax Notation One (ASN.1) "Specification of Basic Notation" ITU-T Recommendation X.680 | ISO/IEC 8824-1.
– ASN.1 encoding rules "Specification of Packed Encoding Rules (PER)" ITU-T Recommendation X.691 | ISO/IEC 8825-2.
NOTE 1: Concerning the general rules for encoding (structure of encoding, identifier octets, length octets, etc.) see ITU-T Recommendations X.680 and ITU-T Recommendation X.691. For these general rules the same exceptions apply as stated in 3GPP TS 29.002. Following ASN.1 definitions are exactly same than in ITU-T Recommendation Q.773.
NOTE 2: invokeNotLast component is added to the Component list. This change impacts to the coding of the Component type and thus to coding of the LLP messages.
The Component portion of the TCAP used in this protocol, LLP, is a modification of the TCAP Component portion defined in ITU-T Recommendation, Q.773. Even though part of the LLP component can be seen as a subset of TCAP, BER encoding is not used.
Component ::= CHOICE {
invoke [1] IMPLICIT Invoke,
returnResultLast [2] IMPLICIT ReturnResult,
returnError [3] IMPLICIT ReturnError,
reject [4] IMPLICIT Reject,
returnResultNotLast [7] IMPLICIT ReturnResult,
invokeNotLast [8] IMPLICIT Invoke }
— The Components are sequences of data elements.
Invoke ::= SEQUENCE {
invokeID InvokeIdType,
linkedID [0] IMPLICIT InvokeIdType OPTIONAL,
operationCode OPERATION,
parameter ANY DEFINED BY operationCode OPTIONAL }
— ANY is filled by the single ASN.1 data type following the keyword PARAMETER or the keyword ARGUMENT
— in the type definition of a particular operation.
ReturnResult ::= SEQUENCE {
invokeID InvokeIdType,
result SEQUENCE {
operationCode OPERATION,
parameter ANY DEFINED BY operationCode
} OPTIONAL
}
— ANY is filled by the single ASN.1 data type following the keyword RESULT in the type definition
— of a particular operation.
ReturnError ::= SEQUENCE {
invokeID InvokeIdType,
errorCode ERROR,
parameter ANY DEFINED BY errorCode OPTIONAL }
— ANY is filled by the single ASN.1 data type following the keyword PARAMETER in the type definition
— of a particular error.
Reject ::= SEQUENCE {
invokeID CHOICE {
derivable InvokeIdType,
not-derivable NULL },
problem CHOICE {
generalProblem [0] IMPLICIT GeneralProblem,
invokeProblem [1] IMPLICIT InvokeProblem,
returnResultProblem [2] IMPLICIT ReturnResultProblem,
returnErrorProblem [3] IMPLICIT ReturnErrorProblem} }
InvokeIdType ::= INTEGER (-128..127)
8.1.1 Operation Code
Each Operation is assigned an Operation Code to identify it. The Operation Codes for the different Operations are defined in subclause 9.2.
8.1.2 Error Code
Each Error is assigned a value (Error Code) to identify it. The Error Codes for the different Errors are defined in subclause 10.3.
8.1.3 Problem Code
The Problem Code consists of one of the four elements: General Problem, Invoke Problem, Return Result Problem or Return Error Problem. ASN.1 definitions are presented below.
— PROBLEMS
GeneralProblem ::= INTEGER { unrecognizedComponent (0),
mistypedComponent (1),
badlyStructuredComponent (2) }
InvokeProblem ::= INTEGER { duplicateInvokeID (0),
unrecognizedOperation (1),
mistypedParameter (2),
resourceLimitation (3),
initiatingRelease (4),
unrecognizedLinkedID (5),
linkedResponseUnexpected (6),
unexpectedLinkedOperation (7) }
ReturnResultProblem ::= INTEGER { unrecognizedInvokeID (0),
returnResultUnexpected (1),
mistypedParameter (2) }
ReturnErrorProblem ::= INTEGER { unrecognizedInvokeID (0),
returnErrorUnexpected (1),
unrecognizedError (2),
unexpectedError (3),
mistypedParameter (4) }