Přeskočit na hlavní obsah

Typy zpráv FLAP

Zpráva se skládá z dat všech fragmentů jednoho přenosu (viz Přenosy). Její první bajt je typ zprávy, zbytek je hodnota:

+----------+------------------------------+
| Type | Value |
| 1 byte | 0 to 16383 bytes |
+----------+------------------------------+

Většina hodnot jsou mapy CBOR s malými celočíselnými klíči. Zprávu s neznámým typem nebo neplatnou hodnotou Cloud ignoruje a nepotvrdí ji.

Typy zpráv​

TypNázevSměrHodnota
0x00CREATE_SESSIONUplinkMapa CBOR s informacemi o zařízení
0x01GET_TIMESTAMPUplinkPrázdná. Cloud odpoví zprávou SET_TIMESTAMP
0x02UPLOAD_CONFIGUplinkHash konfigurace (8 B), 0x00, pole CBOR s řádky konfigurace
0x03UPLOAD_DECODERUplinkHash kodeku (8 B), definice dekodéru v CBOR
0x04UPLOAD_ENCODERUplinkHash kodeku (8 B), definice enkodéru v CBOR
0x05UPLOAD_STATSUplinkMapa CBOR s dobou běhu a statistikami mobilní sítě
0x06UPLOAD_DATAUplinkHash dekodéru (8 B), aplikační data v CBOR
0x07UPLOAD_SHELLUplinkMapa CBOR s výsledky příkazů shellu
0x08UPLOAD_FIRMWAREUplinkMapa CBOR s požadavkem na aktualizaci firmwaru nebo jejím stavem
0x80SET_SESSIONDownlinkMapa CBOR s parametry relace
0x81SET_TIMESTAMPDownlinkUnixový čas v sekundách jako 64bitové celé číslo (8 B)
0x82DOWNLOAD_CONFIGDownlink0x00, pole CBOR s konfiguračními příkazy
0x86DOWNLOAD_DATADownlinkHash enkodéru (8 B), aplikační data v CBOR
0x87DOWNLOAD_SHELLDownlinkMapa CBOR s příkazy shellu ke spuštění
0x88DOWNLOAD_FIRMWAREDownlinkMapa CBOR s částí firmwaru
0xFFREQUEST_REBOOTDownlinkVyhrazeno

Zahájení relace​

Po připojení k síti zařízení nejprve otevře relaci, teprve potom posílá data:

  1. Zařízení pošle CREATE_SESSION. Cloud ji potvrdí s příznakem P, protože čeká odpověď SET_SESSION.
  2. Zařízení se dotáže a přijme SET_SESSION. Podle časové značky v ní si nastaví hodiny.
  3. SET_SESSION obsahuje hashe dekodéru, enkodéru a konfigurace, které Cloud pro toto zařízení zná. Zařízení nahraje jen ty, které se liší: UPLOAD_DECODER, UPLOAD_ENCODER, UPLOAD_CONFIG.
  4. Zařízení je připravené posílat UPLOAD_DATA a dotazovat se na downlinky.

Hlavičky FLAP prvních pěti paketů jsou c000, 3001, 1002, c003 a 2004.

CREATE_SESSION​

KlíčHodnotaTyp
0Časový limit watchdogu (vyhrazeno, 0)Celé číslo
1Název výrobceText
2Název produktuText
3Varianta hardwaruText
4Revize hardwaruText
5Balík firmwaruText
6Název firmwaruText
7Verze firmwaruText
8Passkey pro BluetoothText
9IMSICelé číslo
10IMEICelé číslo
11Verze firmwaru modemuText
12 až 15Sériové číslo, revize hardwaru, varianta hardwaru a verze firmwaru modulu CHESTER-Z (jen s CHESTER-Z)Text
16Sériové čísloCelé číslo
17ICCIDText

SET_SESSION​

KlíčHodnotaTyp
0ID relaceCelé číslo
1Hash dekodéruCelé číslo (64 bitů)
2Hash enkodéruCelé číslo (64 bitů)
3Hash konfiguraceCelé číslo (64 bitů)
4Aktuální čas, unixový čas v sekundáchCelé číslo
5ID zařízení v HARDWARIO CloudText
6Název zařízení v HARDWARIO CloudText

Kodeky a data​

Dekodér převádí data CBOR ze zařízení do JSON, enkodér převádí downlinky v JSON do CBOR. Oba jsou součástí firmwaru a nahrávají se automaticky při zahájení relace, takže Cloud vždy dekóduje data kodekem firmwaru, který je poslal.

Hash kodeku identifikuje kodek. Počítá se z definice kodeku v CBOR (hodnota za hashem):

digest = SHA-256( codec )
w[k] = digest[8k .. 8k+7] read as a little-endian 64-bit integer for k = 0..3
hash = w[0] ^ w[1] ^ w[2] ^ w[3] (sent as big-endian)

Cloud hash nahraného kodeku ověřuje. UPLOAD_DATA a DOWNLOAD_DATA začínají hashem kodeku, ke kterému data patří.

Konfigurace​

UPLOAD_CONFIG nese konfiguraci zařízení jako pole CBOR s textovými řádky ve formátu příkazu shellu config show. Před ním je osmibajtový hash konfigurace a bajt 0x00 (bez komprese). Cloud hash uloží a vrací ho v SET_SESSION, takže zařízení nahrává konfiguraci jen tehdy, když se změnila.

DOWNLOAD_CONFIG nese konfigurační příkazy, viz Downlink konfigurace. Zařízení je spustí, uloží konfiguraci a restartuje se.

Příkazy shellu​

DOWNLOAD_SHELL je mapa CBOR s polem příkazů (klíč 0) a šestnáctibajtovým ID zprávy (klíč 1). Zařízení příkazy spustí a odpoví zprávou UPLOAD_SHELL: mapou CBOR s polem výsledků (klíč 0) a stejným ID zprávy (klíč 1). Každý výsledek obsahuje příkaz (klíč 0), jeho návratový kód, pokud není nulový (klíč 1), a pole řádků výstupu (klíč 2). Viz Downlink shellu.

Aktualizace firmwaru​

Aktualizace firmwaru bezdrátově používají zprávy UPLOAD_FIRMWARE a DOWNLOAD_FIRMWARE:

  1. Zařízení požádá o aktualizaci typem download s ID firmwaru.
  2. Cloud posílá firmware po částech (typ chunk). Zařízení odpoví na každou část typem next s offsetem další části.
  3. Po poslední části zařízení ohlásí swap a restartuje se do nového firmwaru.
  4. Po úspěšném startu ohlásí ack. Pokud cokoli selže, ohlásí error.

Jak spustit aktualizaci z HARDWARIO Cloud, popisuje stránka Firmware.