ISO PAS 17684 - ITS – Navigační systémy ve vozidle – Převaděč zpráv ITS na definice formátu ASN.1

Aplikační oblast: Prostorová data a databázové ITS technologie

PDF

Počet stran: 31

Zavedení normy do ČSN: originálemn

Úvod

Tato specifikace nebyla dosud zavedena do ČSN. Je součástí norem zaměřených na vozidlové navigační systémy. zabývá se překladem skupinových zpráv do definice formátu ASN.1. V mnoha navigačních a informačních systémech je přenos do a z vozidla a dopravních informačních center prováděn pomocí zpráv. Aby mohla být zajištěna kompatibilita palubních navigačních jednotek s navigačním zařízením, musí být každá taková zpráva v tomto systému přesně definována. Mezinárodně byl přijat tzv. Abstract Syntax Notation One (ASN.1), což je nástroj pro popis struktur informačních dat. ISO/IEC odsouhlasilo, že struktury dat, jako skupina zpráv, by měly být formálně popsány v jazyce ASN.1.

Specifikace popisuje metodu, která může být použita pro definování navigačních skupin zpráv v tabulkové podobě s následným překladem do odpovídajícího formátu ASN.1. Převodní jazyk Descriptor Normal Form (DNF), který je podmnožinou ASN.1, je specifikovaný a používaný pro popis převodu mezi tabulkovou podobou a vlastním popisem v jazyce ASN.1. Tabulková podoba popisného jazyka skupin zpráv nazvaná jako Message Set Tabular Form (MSTF) je v normě uvedena jako příklad definice tabulkové podoby.

Obrázek 1 – Funkce překladače „dnf2asn1“ jako převodního můstku

Skupina zpráv, která je popsána jiným jazykem, může být nejdříve převedena do podoby DNF a následně, pomocí překladače „dnf2asn1“, do podoby ASN.1. Tento převod se může uskutečnit i v případě, že jiný jazyk popisuje určitou skupinu zpráv v tabulkové podobě.

Obrázek 2 – Převod tabulkové podoby skupiny navigačních zpráv do formátu ASN.1
Poznámka: Extrakt uvádí vybrané kapitoly popisovaného dokumentu a přejímá původní číslování kapitol.

Užití

Norma může být využita jako běžný formát pro přenos dat z pohledu tvůrců mapových podkladů, poskytovatelů dopravních či navigačních informací, pro tvůrce vozidlových asistenčních systémů či správce dopravních informačních center.

1. Předmět normy

Norma je členěna do dvou základních částí: popis tabulkové podoby skupiny zpráv (kap. 4) a popis DNF (kap. 5).

2. Souvisící normy

ISO/IEC 8824-1:1998, Informační technologie – Abstrakt Syntax Notation One (ASN.1) ve své části jedna definuje základní symboly. Čtenářům je též doporučeno seznámit se s normou ISO/IEC 10646-1:2000, Informační technologie – Universal Multiple-Octet Coded Charakter set (UCS) – část 1, jež specifikuje architekturu a základní vícejazyčné úrovně

3. Termíny a definice

3.2 číslo s pohyblivou desetinnou čárkou (floating point number) číslo jež může být vyjádřeno ve tvaru M x 10E, kde M a E jsou dvě celá čísla nazvaná mantisa a exponent

3.3 typ plovoucího bodu (floating point type) typ obsahující všechny možné floating point numbers plus dvě hodnoty +∞ a -∞

3.4 položky (items) pojmenované sekvence znaků z množiny DNF znaků, které jsou užívané pro formulaci DNF zápisu.

Další termíny a zkratky z oboru ITS jsou obsaženy ve slovníku ITS terminology (www. ITSterminology.org).
Další termíny a zkratky z oboru ITS jsou obsaženy ve slovníku ITS terminology.

4 Popis tabulkové podoby skupiny zpráv

4.1 Všeobecně

V této kapitole je obecně popsána MSTF ve formě množiny zpráv a jejich komponent. Komponenta zprávy je definována řádkem nebo řádky, kde řádka obsahuje pořadí buněk nebo „boxů“. Každá buňka obsahuje buď řetězec znaků, nebo je prázdná.

4.2 Popis MSTF

Řetězce znaků obsažené v buňkách mohou nabývat jedné z následujících položek komponent:

  • vyhrazené slovo (EXPORT, IMPORT, TITLE, IF, ELSEIF)

  • datový typ

  • datová položka

  • specifický identifikátor složený z jednoho nebo dvou specifických znaků (*, ||, {}, [], //)

Každý řádek MSTF je tvořen sekvencí buněk organizovaných ve formátu Label Value Control (LVC) s následujícími položkami:

  • Lable – vyjmenovaný typ jména návěstí

  • Value – identifikátor, číselná hodnota nebo rozsah hodnot pro návěstí

  • Control – specifický indikátor nebo příznak přepínače vztažený na návěstí nebo typ

*

Množina zpráv komunikačního zařízení vozidlového navigačního systému

*

*

m1L

IF(m1L)

 

 

 

//Dynamic Link Times from Traffic Message Center (TMC)

*

*

*

messageCodeType

I 2

 

 

 

*

*

*

*

causeCode

I 6

[]

// causeCode je volitelný. Nemusí být specifikován.

Obrázek 4 – Čtyři varianty formy řádku


 

4.2.5 Struktura zpráv

Složka zprávy je tvořena řádkem nebo blokem řádků. Pokud je složka tvořena blokem řádků, tak je blok omezen prázdným řádkem a složen ze speciálních vložených indikátorů (standardní znak je *, ale může být jiný). Mohou to být také indikátory umístěné v levé části buňky nebo levé části buněk každého řádku. Jestliže je počet vložených indikátorů v řádku N, pak se řádek vloží do řádku, jež obsahuje N-1 vložených indikátorů.

 

*

AnswerType

||

// Defined Answer Type

*

*

Yes

 

*

*

No

 

 

 

 

 

*

BooleanType

||

//Defined Boolean Type

*

*

True

 

*

*

false

 

2

 

 

3

 

1


Obrázek 5 – Bloky komponent zpráv

 

4.2.6 Složky zprávy

Pro přiblížení jsou uvedeny jednotlivé složky zprávy:

  1. Definice návěstí

Návěstí je přiřazeno ke každé zprávě jménem. Nejjednodušší složky zprávy mají identifikaci stejným jménem jako je vlastní návěstí:

 PŘÍKLAD Jednoduché návěstí

*

Label

identifikátor

  1. Pořadí složek

Pořadí složek je definováno návěstím a řádky s datovými položkami, které následují, vložené podle definice návěstí. Pořadí složek značí, že všechny definované datové položky ve složkách se objeví ve stejném pořadí, jak jsou definovány.

PŘÍKLAD Pořadí složek.

*

Label

 

*

*

Data Item1

*

*

Data Item2

*

*

Data Item3


 

Dále pomocí tzv. vyhrazených slov IF, ELSEIF nebo ELSE mohou být komponenty definovány následovně:

PŘÍKLAD Střídavé pořadí složek.


 


 

 

Label A

IF (Case Value)

*

Data ItemA1

*

Data ItemA2

*

Data ItemA3

Label B

ELSEIF (Case Value)

*

Data ItemB1

*

Data ItemB2

*

Data ItemB3

Label C

ELSE

*

Data ItemC1

*

Data ItemC2

*

Data ItemC3


 

V závislosti na hodnotě Case Value se liší pořadí datových položek od A1, A2, A3 až po C1, C2, C3.

  1. Volitelné komponenty

Volitelné komponenty jsou definované návěstím a speciálním indikátorem „[]“ (hranaté závorky)

PŘÍKLAD Volitelná složka.

 

Label

 

 

 

 

 

Data Item1

I6

 

 

 

Data Item2

A

[]


 

  1. Opakující se komponenty

Opakující se komponenty jsou definovány návěstím a speciálním indikátorem „{}“ (složené závorky)

PŘÍKLAD Opakující se složka.

*

Label

{}

 

 

 

 

Label

 

 

 

 

 

Data Item1

I6

 

 

 

Data Item2

A

{}


 

  1. Volitelné komponenty

Tyto komponenty jsou definovány návěstím a speciálními indikátory „||“ (svislé závorky). Znamenají, že jedna nebo více datových položek se budou vyskytovat ve složkách zpráv bez opakování.

PŘÍKLAD Volitelná složka.

*

Label

||

*

*

Data Item1

*

*

Data Item2

*

*

Data Item3


 

  1. Odkazující komponenty

Tyto komponenty odkazují na externě definované skupiny zpráv. Jsou specifikované vyhrazenými slovy IMPORT a EXPORT.

PŘÍKLAD Odkazující složky.

IMPORT

Other Message Set Components

EXPORT

Other Message Set Components


 

  1. Komponenty záhlaví

Tyto komponenty definují jméno modulu skupiny zpráv. Jsou specifikované vyhrazeným slovem TITLE.

PŘÍKLAD Složka záhlaví.

TITLE

This Message Set Components


 

  1. Komentář

Vše, co je odděleno dvojitou lomenou čárou „//“ je bráno jako komentář a současně ignorováno překladačem. Komentář může být umístěn kdekoliv kromě hlavičky LVC nebo složeného prvku.

PŘÍKLAD Komentář složky.

*

Množina zpráv komunikačního zařízení vozidlového navigačního systému

*

*

M1L

IF(m1L)

 

 

 

//Dynamic Link Times from Traffic Message Center (TMC)

//m1L Detail

 

 

 

 

 

*

*

*

messageCodeType

I 2

 

 

 

*

*

*

*

causeCode

I 6

[]

// causeCode je volitelný. Nemusí být vždy specifikován.


 

Datové typy

Datové typy MSTF odpovídají datovým typům ASN.1. Zde pro ilustraci uveďme následující typy.


 

 


 

  1. Jednoduché datové typy

    MSTF typy

    ANS.1 typy

    Bool

    BOOLEAN (booleovský)

    I

    INTEGER (celočíselný)

    enumerated

    ENUMERATED (vyjmenovaný)

    F

    REAL (celočíselný) Jen základ 10, ale standardní desetinný zápis je povolen v DNF

    Bit

    BIT STRING (bitový řetězec)

    O

    OCTET STRING (bytový řetězec)

    NULL

    NULL (nula)

    A.

    CHARACTER STRING (znakový řetězec)

  2. Podtypy prvků

MSTF

ANS.1

value

Single value (jednotlivá hodnota)

Low .. High

Value range (rozsah hodnot)

size

Size constraint (omezení velikosti)

Min. max.

Size constraint (omezení velikosti)


 

5 Specifikace DNF (Descriptor Normal Form)

Tato kapitola specifikuje význam pojmu DNF, definuje mechanismy pro tvorbu složených typů z typů základních a specifikuje zápisy pro definování složených typů. DNF umožňuje specifikovat strukturu množiny datových prvků. Na nejnižší úrovni je definována množina jednoduchých typů, jež je podmnožinou vnořených typů povolených v ASN.1. Jmenovitě zahrnují tyto jednoduché typy celá čísla, čísla s pohyblivou desetinnou čárkou, booleovské typy, znakové řetězce, řetězce bitů a řetězce bytů. DNF rovněž umožňuje definovat vyjmenované typy, kde typ specifikuje množinu identifikátorů jako vlastních hodnot.

Znaky, jež mohou být použity v DNF položkách, jsou následující:

  • a až z

  • A až Z

  • 0 až 9

  • :=, {} <> . () [] - ´ “ / * ;

Následující definice jsou využity pro různé množiny znaků:

  • <lowerCaseLetter>::= a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z

  • <upperCaseLetter>::= A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

  • <letter>::= <upperCaseLetter> | <lowerCaseLetter>

  • <nonZeroDigit>::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

  • <digit> ::= 0 | <nonZeroDigit>

  • <letterOrDigit> ::= <letter> | <digit>

  • <upperLetterOrDigit> ::= <upperCaseLetter> | <digit>

5.5 Položky DNF

Identifikátory: se skládají z jednoho nebo více písmen, číslic a pomlček. Počáteční znak má být malé písmeno (lower-case letter). Pomlčka nemůže být na posledním místě a nemůže být následována další pomlčkou. V označení EBNF je identifikátor označen <identifier> a definován následovně:

<identifier>::=<lowerCaseLetter> {[-] <letterOrDigit>}

Například „a-5“ je jednoduchý identifikátor. Neplatným zápisem je „a“ následované „-5“ nebo „a-“ následované „5“

Návěstí: se skládá ze shodného pořadí znaků jako identifikátor. Rozlišují se pouze obsahem. V EBNF zápise je návěstí označeno klíčovým slovem <label> a definováno následovně:

<label>::=<identifier>

Označení typů: se skládá z jednoho nebo více písmen, číslic a pomlček. Počáteční znak má být velké písmeno. Pomlčka se nemá nacházet na posledním místě a nemá být následována další pomlčkou.

V EBNF zápise je označení typu vyjádřeno klíčovým slovem <typeName> a definováno následovně:

<typeName>::=<upperCaseLetter>{ [ - ] <letterOrDigit>}

Jména modulů, vyjmenovaná jména typů, definovaná jména typů: se všechna skládají ze shodného pořadí znaků specifikované pro <typeName>

V EBNF zápise je pojmenování a definice následující:

<moduleName>::=<typeName>

<enumTypeName>::=<typeName>

<definedTypeName>::=<typeName>

Jednoduchá jména typů: jsou tvořena následující posloupností znaků (I, A, Bit, O, Bool, F, Hole)

Komentáře: vše, co se na řádku nachází za dvojitou pomlčkou („--“) nebo za dvojitým lomítkem („//“) je považováno za komentář a ignorováno syntaxí jazyka.

Vše co se nachází mezi znaky „/*“ a „*/“ je rovněž bráno jako komentář a je ekvivalentní prázdné mezeře. Tyto symboly se mohou vyskytovat na témže řádku nebo na několika řádcích.

Vyjmenované typy

Vyjmenované typy definují množinu identifikátorů jako hodnoty typu. Definice vyjmenovaného typu ve formátu EBNF zápisu je následující:

<enumeratedTypeDef> ::= <enumTypeName> = <identifier>

{„|“ <identifier>} ;

PŘÍKLAD Definice DaysOfWeek = monday | tuesday | wednesday | thursday | friday | saturday | sunday;

definuje vyjmenovaný typ DaysOfWeek s hodnotami monday, tuesday, wednesday, thursday, friday, saturday, sunday.

Složené typy

Tato část definuje způsoby vytváření složených typů a to kombinací jednotlivých prvků různými způsoby. Rozlišují se sekvenční typy (sequence types), vybrané typy (choice types) a opakující se typy (repetition types).

Každý z těchto tří typů je definován v rámci jednodušších prvků. Následující definice EBNF obsahuje prvek, jež je označen <comp>.

  1. <comp>::= <type> | <value> | <sequenceType> | <choiceType> | <repetitionType>

  2. <type>::= <simpleType> | <enumTypeName> | <definedTypeName>

  3. <simpleType>::= <intType> | <charStringType> | <bitStringType> | <booleanType> | <floatType> | <holeType>

Sekvenční typy jsou označeny <sequenceType> a ve formátu EBNF jsou popsány následovně:

<sequenceType>::=( <labeledSeqComp> { , <labeledSeqComp>} )

Skládají se z jednoho nebo více <labeledSeqComp> oddělených čárkami a uzavřených v závorkách. Nejjednodušší forma označení sekvenčního prvku je dvojice.

<label><comp>

Každé označení <label> v rámci jednotlivé posloupnosti je jedinečné. Nicméně se může objevit duplicita označení v různých posloupnostech či výběrech, včetně prvků vložených do posloupnosti.

PŘÍKLAD 1 Následující platné pořadí.

(firstName A 1..15, middleInitial A 1, lastName A 1..30 )

PŘÍKLAD 2 Pořadí může být vložené.

(name (firstName A 1..15, middleInitial A 1, lastName A 1..30),

street A 1..45,

city A 1..30,

state A 2,

zip I 5)

PŘÍKLAD 3 Označení se mohou opakovat v rámci vložených prvků.

(first ( first F, second I), second (first Bit 1..100, second Bool))

Volitelé prvky v posloupnosti

Posloupnost může mít jeden nebo více volitelných prvků. Volitelné prvky se uzavírají do hranatých závorek:

„[“ <label> <comp> „]“

PŘÍKLAD 1 Označení (first 10, [second „ab“], third 3.5 )

Představuje buď uspořádanou trojici (first 10, sekond „ab“, third 3.5) nebo uspořádanou dvojici (first 10, third 3.5) prvků.

Implicitní hodnoty volitelných prvků

Implicitní hodnoty je rovněž možné stanovit u posloupností jednoduchých a výčtových typů. Jestliže nějaký prvek v posloupnosti přenášených dat je vynechán, tak je pro tento prvek použita implicitní hodnota. Tento koncept je zakódován rozšířením poznámky pro volitelný prvek.

[“ <label><type>=<value> „]“

Položka <value> bude mít stejný typ jako <type>. Vynechání tohoto prvku v přenosu dat je identické jako jeho vložení s <value> jako hodnotou.

Vybrané typy

Výběr mezi jedním nebo více komponenty je označen <choiceType>. V EBNF formátu zápisu je definován následovně:

<choiceType>::= “<“ <label> <choiceComp> { „|“ <label> <choiceComp>} „>“

<choiceComp>::=<comp> | NULL

Výběr se skládá z jednoho nebo více označených prvků oddělených svislými čárami a uzavřených v lomených závorkách <>. Je možné specifikovat i hodnotu NULL jako část prvku jednoho nebo více výběrů. Volba NULL je totožná, jako kdyby nebyl vybrán žádný prvek ze seznamu. Každé označení <label> v rámci jednotlivého výběru je unikátní. Mohou se však vyskytovat duplicity označení v jiných výběrech či posloupnostech.

Opakující se typy

Opakující se typ <repetitionType>, se využívá k indikaci stavu opakovatelnosti prvku 0 či vícekrát. Je definován následovně.

<repetitionType>::= “{“ <comp “}“

Definované typy

Definované typy poskytují způsob jak pojmenovat prvky a následně využít tato jména k popisu ostatních prvků. Toto je zejména užitečné, když se stejná struktura vyskytuje na různých místech.

Zápis definovaného typu ve formátu EBNF je následující:

<typeDefinition>::=<definedTypeName>“::=“ <comp> ;

<definedTypeName>::=<typeName>

Příklad: Definované typy mohou být využity k popisu dílčích částí složených struktur.

NameType::= (firstName A 1..15,

middleInitial A 1,

l lastName A 1..30 );

AddressType::= ( street A 1..45,

city A 1..30,

state A 2,

zip I 5 );

PersonRecord::= ( name NameType,

address AdressType );

Příloha A – Příklad kódování ve formátu MSTF

Příloha B – ASN.1 Rezervovaná slova ASN.1

Příloha C – Srovnání DNF a ASN.1

 

 

Výběr podle typu

Výběr podle aplikačních oblastí