상세 컨텐츠

본문 제목

ASN.1 문법 정리 - SEQUENCE , CHOICE, INTEGER

통신

by oksk2003kr 2019. 12. 6. 16:21

본문

반응형


ASN.1 문법 기초적인 부분을 정리하였다. 

SEQUENCE

SEQUENCE , C,C++ 에서는 Struct 구조체와 동일한 개념이다.
SEQUENCE 내부에 선언된 Element(변수(?)) 들은 mask 형식으로 관리된다, 즉, 모든 Element가 출력될 수 있다.

BCCH-BCH-Message ::=            SEQUENCE {
    message                         BCCH-BCH-MessageType
}

BCCH-BCH-MessageType ::=        CHOICE {
    mib                             MIB,
    messageClassExtension           SEQUENCE {}
}

BCCH-BCH-Message 타입이라는 SEQUENCE 시컨스(구조체)를 만듭니다.
{ } 괄호안에는 시컨스안에 들어갈 정보 입니다.
ex) SEQUENCE {} 와 같은 구조는 정보가 없음을 의미합니다. 


BCCH-BCH-Message시컨스 안에는 BCCH-BCH-MessageType 타입이라는 message 시컨스가 있습니다.


CHOICE

반면에, CHOICE 는 대상 중에 하나만 사용한다. C의 union과 같은 개념이다. CHOICE 값을 선언할 때 선언되어 있는 Element 중 하나를 사용한다.

    criticalExtensions                      CHOICE {
        rrcResumeComplete                       AAA,
        criticalExtensionsFuture                SEQUENCE {}
    }

INTEGER

INTEGER은 C에서 int형과 같은 개념이다. 아래에서 SEQUENCE는 C의 struct이고 SEQUENCE OF는 C의 Array선언 [ ] 에 해당된다.

frequencyDensity                    SEQUENCE (SIZE (2)) OF INTEGER (1..276)                 OPTIONAL,   -- Need S
frequencyDensity의 값은 1~276사이 값으로 들어오며, 시컨스의 갯수는2개 고정됨을 의미한다.

ABC ::=     INTEGER (0..100)
ABC값은 0 ~ 100 사이로 들어옴  보통, 0 ~ 100 사이임으로 양수만 사용함으로 C,C++ 입장에서는 unsigned short 같은 타임을 사용한다.  
여기서 추가로 하고 싶은 말은, INTEGER (범위) 괄호안에 범위에 따라, unsigned int, unsigned short , short(범위가 -값을 포함할 경우) 할지가 결정된다.
AAB              INTEGER ::= 32   -- AAB 값은 32


SIZE

구조체의 갯수의 의미로 판단된다. 3 은 3개로 고정, 2..3은 2 ~ 3개 값으로 들어올수 있음을 의미한다.

MCC ::=                             SEQUENCE (SIZE (3)) OF MCC-MNC-Digit
MNC ::=                             SEQUENCE (SIZE (2..3)) OF MCC-MNC-Digit

ENUMERATED

cellReservedForOperatorUse              ENUMERATED {reserved, notReserved},
cellReservedForOperatorUse 요소의 값 0은 reserved, 1은 notReserved 이라는 문자열을 맵핑한다.


SetupRelease  CHOICE와 유사한 개념으로, 선언은 한게만 되어있지만, release or setup 둘중 하나로 분리가 되며, 
setup이면, 아래언급된 { } 안에 영역 요소로 접근하고, release면, 간이 없음을 의미한다. 

semiPersistentOnPUSCH-TriggerStateList    SetupRelease { CSI-SemiPersistentOnPUSCH-TriggerStateList }         OPTIONAL, -- Need M

--  
-- 은 주석을 의미를 지닌다. 

BOOLEAN

BOOLEAN은 c++ 에서 bool과 같은 의미를 지닌다
 skipUplinkTxDynamic                 BOOLEAN,
 

NULL

NULL 은 값이 NULL, 0 만 들어온다는 것이다. 

SRS-PeriodicityAndOffset ::=            CHOICE {
    sl1                                     NULL,


BIT STRING 

Bit string은 Bit정보가 담벼잇는 타입 
 TESTAA                           BIT STRING (SIZE (10))    
 TESTAA 가 10자리의 Bit 정보를 가지고 잇음을 의미


참고자료 : https://fly32.tistory.com/446
다음 정리는 TLV 관점에서 처리를 공부하고 정리해보도록 하겠습니다.

반응형

관련글 더보기

댓글 영역