Modtagerprotokoller, som receiver-trust læser (0,38)
Kun læsning, hele vejen igennem: intet her skriver en eneste byte til en modtager, og der findes ingen sendesti af nogen art. Vejledende software, ikke typegodkendt navigationsudstyr (IEC 61108, IEC 61162): operatøren er fortsat ansvarlig.
Modtagerens egne flag for spoofing og jamming (UBX)#
| meddelelse | felt | læses som |
|---|---|---|
| UBX-NAV-STATUS (0x01 0x03), 16 bytes | flags2-byte ved offset 7, bit 4..3: spoofDetState |
0 ukendt eller deaktiveret, 1 ingen spoofing angivet, 2 spoofing angivet, 3 flere angivelser af spoofing (protokol 18 og senere; u-blox F9 HPG 1,32 grænsefladebeskrivelse, afsnit 3.15.20) |
| UBX-SEC-SIG (0x27 0x09) version 1, 12 bytes | jamFlags ved 4 (bit 0 jamDetEnabled, bit 2..1 jammingState); spfFlags ved 8 (bit 0 spfDetEnabled, bit 3..1 spoofingState) |
tilstande læses kun, hvor detektoren er aktiveret; 0 ukendt, 1 ingen, 2 advarsel eller angivet, 3 kritisk eller bekræftet |
| UBX-SEC-SIG version 2 | sigSecFlags ved 1 (bit 0 jamDetEnabled, bit 2..1 jammingState, bit 3 spfDetEnabled, bit 6..4 spoofingState); jamNumCentFreqs ved 3 og så mange grupper på 4 bytes (bruges ikke) |
som ovenfor |
Kilden til SEC-SIG-layoutet. Grænsefladebeskrivelserne for u-blox F9 HPG 1,32 og M10 SPG 5,10, som kunne hentes, da dette blev skrevet, nævner UBX-SEC-SIG, men definerer det ikke. Layoutene ovenfor er dem fra de senere u-blox-grænsefladebeskrivelser, som de er afskrevet i biblioteket pyubx2 (BSD-3-Clause, SEC-SIG-V1 og SEC-SIG-V2); fixture-testene i tests/receiver_trust_self_report.rs er bygget ud fra det layout, ikke ud fra en virkelig modtagers output. Layout fra åben afskrift, ikke kontrolleret mod den aktuelle vejledning fra producenten: kontrollér det mod den aktuelle grænsefladebeskrivelse fra u-blox, før du stoler på SEC-SIG.
En SEC-SIG har ingen tid i ugen; den hører til den aktuelle navigationsepoke. En tilstand, der allerede er aflæst ved en epoke, bevares, medmindre en senere er værre.
Sammenligningen receiver-self-report#
Hvor en log bærer disse flag, har hver epoke i resultatet self_report (de to tilstande, om modtageren flager, om en Kshana-monitor har slået alarm, og agreement: both, receiver-only, kshana-only, neither eller calibrating), og resultatet har receiver_self_report med antallene og den første epoke for hver. Modtageren "flager" ved en tilstand på 2 eller derover. Den udløser ingen alarm og ændrer ingen score, og ingen af siderne er reference: enighed er ikke validering, og uenighed siger, at den ene detektor så noget, den anden ikke så, intet om, hvilken der havde ret. Studios bånd læser epochs[].self_report.
Septentrio SBF (format = "sbf")#
receiver_trust::ingest::read_sbf afkodes med crate'en sbf-tools (0,4, MIT; dens eneste afhængighed er thiserror; en tilladende licens, som deny.toml tillader). Blokke, der læses: PVTGeodetic (4007) til positionsbestemmelsen, MeasEpoch (4027) til C/N0 pr. satellit og signal (band er signalets navn, såsom L1CA) og RFStatus (4092) til antallet af RF-bånd, hvis Info-byte ikke er nul (rf_bands_reported, medtaget og ikke fortolket: det tæller aldrig som et flag). Epoker nøgles efter tid i ugen og ugenummer og mærkes i GPS-tid (2024-09-05T00:00:00.000 GPST). En blok, der fejler sin CRC eller fortolkning, tæller som en sprunget post. Denne læser læser ikke AGC eller en jamming-indikator, så monitorerne for fald i C/N0 og tab af lås kører, mens monitorerne for AGC og jamming-indikator ikke gør.
Kilden til layoutene. Septentrios referencevejledning kunne ikke hentes, da dette blev skrevet (serveren afviste forespørgslen), så layoutene er taget fra kilden til sbf-tools, som henviser til vejledningen, og fixtures i tests/receiver_trust_sbf.rs er syntetiske blokke bygget til dette layout og dets CRC-16-CCITT. Ingen virkelig SBF-log er brugt. Layout fra en open source-crate, ikke kontrolleret mod den aktuelle vejledning fra producenten: kontrollér mod Septentrios referencevejledning, før du stoler på det.
Direkte seriel og USB-input (receiver-trust live --serial)#
kshana receiver-trust live session.toml --serial /dev/ttyUSB0 --baud 4800 [--gate ...]
Kun Unix. Den åbner enheden til læsning, sætter den lokale linje i rå tilstand ved --baud (standard 4800, hastigheden for NMEA 0183) og læser NMEA-linjer som enhver anden kilde. Den skriver aldrig til modtageren. --configure afvises med en forklaring: Kshana konfigurerer ikke modtagere; sæt modtageren til at udsende NMEA med producentens eget værktøj, og læs det så. Feedet er NMEA, som for hver live-kilde (UBX og SBF læses fra filer). En enhed, der forsvinder, afslutter kommandoen som en fejl (exit 1), så en supervisor kan genstarte den; laget genopretter ikke forbindelsen. Testet på en pseudoterminal-loopback (tests/receiver_trust_live_serial.rs), herunder at master-siden ikke modtager nogen byte fra kommandoen.