[feat](trx-rs): add VDES decoder mode support

Add a new trx-vdes decoder path alongside AIS, wire VDES through the server/frontend decode pipeline, and fix the web map so AIS vessel symbols load correctly and the TRX receiver marker appears when location data arrives.

Co-authored-by: OpenAI Codex <codex@openai.com>
Signed-off-by: Stan Grams <sjg@haxx.space>
This commit is contained in:
2026-03-03 00:05:16 +01:00
parent 051d07eaab
commit 92423f1e02
25 changed files with 878 additions and 32 deletions
+6 -1
View File
@@ -11,7 +11,7 @@ use trx_core::rig::state::RigMode;
/// Parse a mode string into a RigMode.
///
/// Handles LSB, USB, CW, CWR, AM, FM, WFM, AIS, DIG, DIGI, PKT, PACKET.
/// Handles LSB, USB, CW, CWR, AM, FM, WFM, AIS, VDES, DIG, DIGI, PKT, PACKET.
/// Falls back to Other(string) for unknown modes.
pub fn parse_mode(s: &str) -> RigMode {
match s.to_uppercase().as_str() {
@@ -23,6 +23,7 @@ pub fn parse_mode(s: &str) -> RigMode {
"FM" => RigMode::FM,
"WFM" => RigMode::WFM,
"AIS" => RigMode::AIS,
"VDES" => RigMode::VDES,
"DIG" | "DIGI" => RigMode::DIG,
"PKT" | "PACKET" => RigMode::PKT,
other => RigMode::Other(other.to_string()),
@@ -43,6 +44,7 @@ pub fn mode_to_string(mode: &RigMode) -> String {
RigMode::FM => "FM".to_string(),
RigMode::WFM => "WFM".to_string(),
RigMode::AIS => "AIS".to_string(),
RigMode::VDES => "VDES".to_string(),
RigMode::DIG => "DIG".to_string(),
RigMode::PKT => "PKT".to_string(),
RigMode::Other(s) => s.clone(),
@@ -81,6 +83,7 @@ mod tests {
assert_eq!(parse_mode("FM"), RigMode::FM);
assert_eq!(parse_mode("WFM"), RigMode::WFM);
assert_eq!(parse_mode("AIS"), RigMode::AIS);
assert_eq!(parse_mode("VDES"), RigMode::VDES);
}
#[test]
@@ -126,6 +129,7 @@ mod tests {
assert_eq!(mode_to_string(&RigMode::FM), "FM");
assert_eq!(mode_to_string(&RigMode::WFM), "WFM");
assert_eq!(mode_to_string(&RigMode::AIS), "AIS");
assert_eq!(mode_to_string(&RigMode::VDES), "VDES");
assert_eq!(mode_to_string(&RigMode::DIG), "DIG");
assert_eq!(mode_to_string(&RigMode::PKT), "PKT");
}
@@ -146,6 +150,7 @@ mod tests {
RigMode::FM,
RigMode::WFM,
RigMode::AIS,
RigMode::VDES,
RigMode::DIG,
RigMode::PKT,
];