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
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.
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ě.
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.
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. |
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:
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 |
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.
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 | [] |
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 | {} |
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 |
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 |
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 |
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.
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)
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>.
<comp>::= <type> | <value> | <sequenceType> | <choiceType> | <repetitionType>
<type>::= <simpleType> | <enumTypeName> | <definedTypeName>
<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