Budowa protokołu MeshCom
MeshCom 4.0 wykorzystuje do przesyłania danych użytkowych protokół zmodyfikowany na bazie protokołu APRS-AX.25, zdefiniowanego dla APRS (aprs101.pdf, APRS PROTOCOL REFERENCE, wersja 1.0, 2000, str. 12).
1. Wykorzystywane pola
- Identyfikator – identyfikator typu danych APRS
- ID wiadomości – unikalna wartość 32-bitowa LSB->MSB
- MAX-HOP – maks. 7 (maska 0x07), domyślnie używane jest 5, co pozwala na 4 dalsze przekazania.
- 0x80 – znacznik informujący, że wiadomość została już przesłana przez serwer MQTT.
- 0x40 – znacznik informujący, że wiadomość ma zostać uzupełniona przez MeshClient o znak wywoławczy stacji przekazującej. Używany do celów pomiarowych i sterujących.
- Adres źródłowy – pole zawiera znak wywoławczy i SSID stacji nadającej.
- Adres docelowy – pole może zawierać docelowy znak wywoławczy APRS lub „*” dla transmisji do WSZYSTKICH.
- Digipeater – w tym polu może znajdować się od 0 do 8 znaków wywoławczych digipeaterów. Uwaga: adresy tych digipeaterów mogą zostać nadpisane ogólną ścieżką digipeaterów APRS (określoną przez SSID adresu docelowego).
- Informacja – pole zawiera dane transportowe. Pierwszy znak tego pola to identyfikator typu danych APRS, który wskazuje, jakiego rodzaju dane następują dalej.
- Frame Check Sequence (FCS) – sekwencja 16 bitów służąca do sprawdzania integralności odebranej ramki.
2. Wiadomości
Wiadomości tekstowe:
:|!MMMMMM|!*HH|OE0XXX-99|>*|*:|Wiadomość tekstowa|!00|!HW|!MOD|FCS#
Wiadomości tekstowe ze ścieżką z sieci Mesh:
:|!MMMMMM|!*HH|OE0XXX-99*,OE3XXX-12,OE3YY-12|>*|:|Wiadomość tekstowa|!00|!HW|!MOD|FCS#
Wiadomości z pozycją:
!|!MMMMMMMM|!HH|OE0XXX-99|>*|!|4800.00|N|/|01600.00|E|#| BBB /A=HHHHHH|!00|!HW|!MOD|FCS#
Suma kontrolna:
FCS jest tworzona jako 16-bitowa suma bez znaku bajtów protokołu od 0 do bajtu MOD włącznie i dołączana w formacie little endian za bajtem MOD.
3. Elementy wiadomości
| Skrót | Nazwa pola | Typ zmiennej |
|---|---|---|
| : ! | Identyfikator wiadomości | Wersja 4.0 |
| MMMMMMMM | ID wiadomości | 32-bit LSB->MSB |
| HH | MAX-HOP | 8-bitowa maska bitowa 0x07 |
| Wiadomość przesłana przez serwer MQTT | Maska bitowa 0x80 | |
| Wstawienie ścieżki w sieci Mesh (z przecinkiem jako separatorem) | Maska bitowa 0x40 | |
| 4800.00 | Szerokość geograficzna | stopnie/dziesiętne x 100 |
| 01600.00 | Długość geograficzna | stopnie/dziesiętne x 100 |
| N | N (północ) / S (południe) | char |
| / | Grupa symboli APRS (/ lub \) | char |
| E | E (wschód) / W (zachód) | char |
| # | Symbol APRS | char |
| BBB | Stan akumulatora w % | int 0 – 100 |
| /A=HHHHHH | Wysokość GPS n.p.m. (stopy) | int 0 – 40000 |
| Zakończenie PayLoad | zamyka obszar APRS PayLoad | 0x00 |
| HW | ID sprzętu (patrz osobna tabela) | 8-bit (patrz tabela) |
| MOD | ID modulacji LoRa (MediumSlow…3) | 8-bit (patrz tabela) |
| FCS# | Suma kontrolna wraz z identyfikatorem i 0x00 zakończenia wiadomości | 32-bit LSB->MSB |
