Protokoły odbiorników odczytywane przez receiver-trust (0,38)
Wyłącznie odczyt, w całości: nic tutaj nie zapisuje ani jednego bajtu do odbiornika i nie istnieje żadna ścieżka nadawcza. Oprogramowanie wyłącznie doradcze, nie jest to sprzęt nawigacyjny z zatwierdzeniem typu (IEC 61108, IEC 61162): za nawigację statku odpowiada nadal operator.
Własne flagi odbiornika dotyczące spoofingu i zagłuszania (UBX)#
| komunikat | pole | odczytywane jako |
|---|---|---|
| UBX-NAV-STATUS (0x01 0x03), 16 bajtów | bajt flags2 przy przesunięciu 7, bity 4..3: spoofDetState |
0 nieznany lub wyłączony, 1 brak wskazania spoofingu, 2 wskazano spoofing, 3 wiele wskazań spoofingu (protokół 18 i nowszy; opis interfejsu u-blox F9 HPG 1,32, sekcja 3.15.20) |
| UBX-SEC-SIG (0x27 0x09) wersja 1, 12 bajtów | jamFlags przy 4 (bit 0 jamDetEnabled, bity 2..1 jammingState); spfFlags przy 8 (bit 0 spfDetEnabled, bity 3..1 spoofingState) |
stany są odczytywane tylko tam, gdzie detektor jest włączony; 0 nieznany, 1 brak, 2 ostrzeżenie lub wskazanie, 3 krytyczny lub potwierdzony |
| UBX-SEC-SIG wersja 2 | sigSecFlags przy 1 (bit 0 jamDetEnabled, bity 2..1 jammingState, bit 3 spfDetEnabled, bity 6..4 spoofingState); jamNumCentFreqs przy 3 i tyle 4-bajtowych grup (nieużywane) |
jak wyżej |
Źródło układu SEC-SIG. Opisy interfejsów u-blox F9 HPG 1,32 i M10 SPG 5,10, które dało się pobrać w chwili pisania, wymieniają UBX-SEC-SIG, ale go nie definiują. Powyższe układy pochodzą z późniejszych opisów interfejsów u-blox w transkrypcji z biblioteki pyubx2 (BSD-3-Clause, SEC-SIG-V1 i SEC-SIG-V2); testy z danymi testowymi w tests/receiver_trust_self_report.rs są zbudowane na tym układzie, a nie na rzeczywistym wyniku odbiornika. Układ pochodzi z otwartej transkrypcji i nie został sprawdzony względem aktualnego przewodnika producenta: przed poleganiem na SEC-SIG należy go sprawdzić względem aktualnego opisu interfejsu u-blox.
SEC-SIG nie ma czasu tygodnia; należy do bieżącej epoki nawigacyjnej. Stan już odczytany w danej epoce jest zachowywany, chyba że późniejszy jest gorszy.
Porównanie receiver-self-report#
Tam, gdzie dziennik zawiera te flagi, każda epoka wyniku ma self_report (dwa stany, czy odbiornik zgłasza flagę, czy zaalarmował jakikolwiek monitor Kshana oraz agreement: both, receiver-only, kshana-only, neither lub calibrating), a wynik ma receiver_self_report z liczbami i pierwszą epoką każdego z nich. Odbiornik „zgłasza flagę” przy stanie 2 lub wyższym. Porównanie nie wywołuje alarmu i nie zmienia żadnego wskaźnika, a żadna ze stron nie jest prawdą odniesienia: zgodność nie jest walidacją, a niezgodność oznacza, że jeden detektor zobaczył coś, czego drugi nie zobaczył, i nic nie mówi o tym, który miał rację. Pasek w Studio odczytuje epochs[].self_report.
Septentrio SBF (format = "sbf")#
receiver_trust::ingest::read_sbf dekoduje się za pomocą biblioteki sbf-tools (0,4, MIT; jej jedyną zależnością jest thiserror; licencja liberalna, którą deny.toml dopuszcza). Odczytywane bloki: PVTGeodetic (4007) dla rozwiązania pozycji, MeasEpoch (4027) dla C/N0 na satelitę i sygnał (band to nazwa sygnału, na przykład L1CA) oraz RFStatus (4092) dla liczby pasm RF, których bajt Info jest niezerowy (rf_bands_reported, przenoszone i nieinterpretowane: nigdy nie liczy się jako flaga). Epoki są indeksowane czasem tygodnia i numerem tygodnia oraz oznaczane w czasie GPS (2024-09-05T00:00:00.000 GPST). Blok, który nie przechodzi CRC lub parsowania, liczy się jako pominięty rekord. Ten czytnik nie odczytuje AGC ani wskaźnika zagłuszania, więc monitory spadku C/N0 i utraty zaczepienia działają, a monitory AGC i wskaźnika zagłuszania nie.
Źródło układów. Przewodnika referencyjnego Septentrio nie dało się pobrać w chwili pisania (serwer odrzucił żądanie), więc układy wzięto ze źródeł sbf-tools, które cytują ten przewodnik, a dane testowe w tests/receiver_trust_sbf.rs to syntetyczne bloki zbudowane według tego układu i jego CRC-16-CCITT. Nie użyto żadnego rzeczywistego dziennika SBF. Układ pochodzi z otwartej biblioteki i nie został sprawdzony względem aktualnego przewodnika producenta: przed poleganiem na nim należy go sprawdzić względem przewodnika referencyjnego Septentrio.
Bezpośrednie wejście szeregowe i USB (receiver-trust live --serial)#
kshana receiver-trust live session.toml --serial /dev/ttyUSB0 --baud 4800 [--gate ...]
Tylko Unix. Otwiera urządzenie do odczytu, ustawia lokalną linię w tryb surowy przy --baud (domyślnie 4800, szybkość NMEA 0183) i odczytuje wiersze NMEA jak z każdego innego źródła. Nigdy nie zapisuje niczego do odbiornika. --configure jest odrzucane z wyjaśnieniem: Kshana nie konfiguruje odbiorników; należy ustawić odbiornik na wyjście NMEA własnym narzędziem producenta, a potem go odczytać. Strumień to NMEA, jak dla każdego źródła live (UBX i SBF są odczytywane z plików). Urządzenie, które zniknie, kończy polecenie jako błąd (kod wyjścia 1), aby nadzorca uruchomił je ponownie; warstwa nie łączy się ponownie. Przetestowano na pętli zwrotnej pseudoterminala (tests/receiver_trust_live_serial.rs), w tym na tym, że strona nadrzędna nie otrzymuje od polecenia żadnego bajtu.