[fix](ftx): treat second callsign as source in directed traffic

This commit is contained in:
2026-03-05 20:23:22 +01:00
parent bf74044c05
commit bc0d9a6273
2 changed files with 39 additions and 7 deletions
+14
View File
@@ -205,6 +205,12 @@ fn parse_sender_callsign_ft8(message: &str) -> Option<String> {
}
}
}
// Directed FT8/FT4-style messages are usually "<target> <source> ...".
if let (Some(first), Some(second)) = (tokens.first(), tokens.get(1)) {
if is_callsign(first) && is_callsign(second) {
return Some(second.clone());
}
}
tokens.into_iter().find(|t| is_callsign(t))
}
@@ -441,6 +447,14 @@ mod tests {
parse_sender_callsign_ft8("CQ SP2SJG JO93"),
Some("SP2SJG".to_string())
);
assert_eq!(
parse_sender_callsign_ft8("K1ABC SP2SJG JO93"),
Some("SP2SJG".to_string())
);
assert_eq!(
parse_sender_callsign_ft8("K1ABC SP2SJG -07"),
Some("SP2SJG".to_string())
);
assert_eq!(parse_locator("CQ SP2SJG JO93"), Some("JO93".to_string()));
assert_eq!(parse_locator("CQ SP2SJG RR73"), None);
assert_eq!(parse_locator("SP2SJG RR 73"), None);