On Wed, 17 Jul 2002, tong wrote:
> hi all
> In GSM-MAP(ASN.1&BER IMPLICIT),I have a doubt about CHOICE:
>
> example 1:
>
> Ext-SS-InfoList ::= SEQUENCE SIZE (1..maxNumOfSS) OF
> Ext-SS-Info
>
> Ext-SS-Info ::= CHOICE {
> forwardingInfo [0] Ext-ForwInfo,
> callBarringInfo [1] Ext-CallBarInfo,
> cug-Info [2] CUG-Info,
> ss-Data [3] Ext-SS-Data,
> emlpp-Info [4] EMLPP-Info}
>
> Ext-ForwInfo ::= SEQUENCE{
> ss-Code SS-Code,
> forwardingFeatureList Ext-ForwFeatureList,
> extensionContainer [0] ExtensionContainer OPTIONAL,
> ...}
>
>
> then begin from Ext-SS-InfoList :0x30 0xXX 0xA0(10100000) (0xXX
> mean length) Now the 0xA0 mean the tag of "forwardingInfo",and next
> octet after 0xA0 mean the length of "forwardingInfo",is this right?
Yes.
> example2:
>
> SubscriberInfo ::= SEQUENCE {
> locationInformation [0] LocationInformation OPTIONAL,
> subscriberState [1] SubscriberState OPTIONAL,
> extensionContainer [2] ExtensionContainer OPTIONAL,
> ...}
>
> SubscriberState ::= CHOICE {
> assumedIdle [0] NULL,
> camelBusy [1] NULL,
> netDetNotReachable NotReachableReason,
> notProvidedFromVLR [2] NULL}
> begin from SubscriberInfo: how can we encode the "assumedIdle"?
> 0x30 0xXX 0xA1(10100001 subscriberState) 0xXX 0x80(10000000
> assumedIdle) 0x00(length of NULL)
>
> Is the encoding of example 1 and 2 correct?
Yes.
> and so example2 is longer than example1,have an extra tag of choice.
CHOICE itself does not have a tag. However, tags applied to CHOICE are
*always* EXPLICIT, even if at the beginning of the module it says that the
tag environment for the module is IMPLICIT.
Bancroft