Протоколи приймачів, які читає receiver-trust (0,38)
Скрізь лише читання: нічого тут не записує жодного байта в приймач, і жодного шляху передавання не існує. Консультативне програмне забезпечення, не навігаційне обладнання із затвердженням типу (IEC 61108, IEC 61162): відповідальність залишається на операторі.
Власні прапорці спуфінгу та глушіння приймача (UBX)#
| повідомлення | поле | читається як |
|---|---|---|
| UBX-NAV-STATUS (0x01 0x03), 16 байтів | байт flags2 зі зсувом 7, біти 4..3: spoofDetState |
0 невідомо або деактивовано, 1 спуфінг не вказано, 2 спуфінг вказано, 3 кілька індикацій спуфінгу (протокол 18 і новіші; опис інтерфейсу u-blox F9 HPG 1,32, розділ 3.15.20) |
| UBX-SEC-SIG (0x27 0x09) версії 1, 12 байтів | jamFlags за зсувом 4 (біт 0 jamDetEnabled, біти 2..1 jammingState); spfFlags за зсувом 8 (біт 0 spfDetEnabled, біти 3..1 spoofingState) |
стани читаються лише там, де детектор увімкнено; 0 невідомо, 1 немає, 2 попередження або індикація, 3 критично або підтверджено |
| UBX-SEC-SIG версії 2 | sigSecFlags за зсувом 1 (біт 0 jamDetEnabled, біти 2..1 jammingState, біт 3 spfDetEnabled, біти 6..4 spoofingState); jamNumCentFreqs за зсувом 3 і стільки 4-байтових груп (не використовується) |
як вище |
Джерело розкладки SEC-SIG. Описи інтерфейсів u-blox F9 HPG 1,32 і M10 SPG 5,10, які вдалося завантажити на момент написання, називають UBX-SEC-SIG, але не визначають його. Наведені вище розкладки взято з пізніших описів інтерфейсів u-blox у транскрипції з бібліотеки pyubx2 (BSD-3-Clause, SEC-SIG-V1 і SEC-SIG-V2); тести з фікстурами в tests/receiver_trust_self_report.rs побудовано за цією розкладкою, а не за виходом реального приймача. Розкладка з відкритої транскрипції, не звірена з чинним посібником виробника: звірте її з чинним описом інтерфейсу u-blox, перш ніж покладатися на SEC-SIG.
SEC-SIG не має часу тижня; він належить до поточної навігаційної епохи. Стан, уже прочитаний на епосі, зберігається, якщо пізніший не гірший.
Порівняння receiver-self-report#
Якщо журнал містить ці прапорці, кожна епоха результату має self_report (обидва стани, чи подає приймач прапорець, чи спрацював будь-який монітор Kshana, та agreement: both, receiver-only, kshana-only, neither або calibrating), а результат має receiver_self_report із кількостями та першою епохою кожного. Приймач «подає прапорець» за стану 2 або вище. Він не піднімає тривоги і не змінює жодної оцінки, і жодна зі сторін не є істиною: збіг не є валідацією, а розбіжність означає, що один детектор побачив те, чого не побачив інший, і нічого не каже про те, котрий мав рацію. Смуга Studio читає epochs[].self_report.
Septentrio SBF (format = "sbf")#
receiver_trust::ingest::read_sbf декодується крейтом sbf-tools (0,4, MIT; його єдина залежність — thiserror; дозвільна ліцензія, яку deny.toml допускає). Блоки, що читаються: PVTGeodetic (4007) для визначення положення, MeasEpoch (4027) для C/N0 за супутником і сигналом (band — назва сигналу, наприклад L1CA) і RFStatus (4092) для кількості радіодіапазонів, у яких байт Info ненульовий (rf_bands_reported, передається і не інтерпретується: він ніколи не вважається прапорцем). Епохи ідентифікуються за часом тижня та номером тижня й позначаються в часі GPS (2024-09-05T00:00:00.000 GPST). Блок, що не проходить CRC або розбір, враховується як пропущений запис. Цей зчитувач не читає AGC чи індикатор глушіння, тож монітори падіння C/N0 і втрати утримання працюють, а монітори AGC та індикатора глушіння — ні.
Джерело розкладок. Довідковий посібник Septentrio не вдалося завантажити на момент написання (сервер відхилив запит), тому розкладки взято з коду sbf-tools, який посилається на посібник, а фікстури в tests/receiver_trust_sbf.rs — це синтетичні блоки, побудовані за цією розкладкою та її CRC-16-CCITT. Жодного реального журналу SBF не використовувалося. Розкладка з відкритого крейта, не звірена з чинним посібником виробника: звірте її з довідковим посібником Septentrio, перш ніж покладатися на неї.
Пряме послідовне й USB-введення (receiver-trust live --serial)#
kshana receiver-trust live session.toml --serial /dev/ttyUSB0 --baud 4800 [--gate ...]
Лише Unix. Він відкриває пристрій для читання, переводить локальну лінію в сирий режим зі швидкістю --baud (за замовчуванням 4800, швидкість NMEA 0183) і читає рядки NMEA, як і з будь-якого іншого джерела. Він ніколи нічого не записує в приймач. --configure відхиляється з поясненням: Kshana не налаштовує приймачі; налаштуйте приймач на вивід NMEA власним інструментом виробника, а потім читайте його. Потік — NMEA, як і для кожного джерела live (UBX і SBF читаються з файлів). Пристрій, що зникає, завершує команду як збій (код виходу 1), щоб супервізор її перезапустив; шар не перепідключається. Перевірено на петлі псевдотермінала (tests/receiver_trust_live_serial.rs), зокрема що головна сторона не отримує від команди жодного байта.