From acecaff8106df5e899efa110581662e07c95d2ab Mon Sep 17 00:00:00 2001 From: Stan Grams Date: Tue, 3 Mar 2026 02:12:49 +0100 Subject: [PATCH] [fix](trx-backend-ft817): reject unsupported modes Make FT-817 mode setting fail for unsupported modes instead of silently mapping SDR-only modes onto FM. Co-authored-by: Stan Grams Signed-off-by: Stan Grams --- .../trx-backend/trx-backend-ft817/src/lib.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/trx-server/trx-backend/trx-backend-ft817/src/lib.rs b/src/trx-server/trx-backend/trx-backend-ft817/src/lib.rs index 98f09b3..107d26f 100644 --- a/src/trx-server/trx-backend/trx-backend-ft817/src/lib.rs +++ b/src/trx-server/trx-backend/trx-backend-ft817/src/lib.rs @@ -292,7 +292,8 @@ impl Ft817 { let _ = self.port.clear(ClearBuffer::Input); // Data byte 1 = mode, data bytes 2-4 = 0x00, command = 0x07. - let mode_code = encode_mode(mode); + let mode_code = encode_mode(mode) + .ok_or_else(|| format!("Mode {mode:?} not supported on FT-817"))?; tracing::debug!("FT-817 set_mode -> code 0x{:02X} ({:?})", mode_code, mode); let frame = [mode_code, 0x00, 0x00, 0x00, CMD_SET_MODE]; self.write_frame(&frame).await?; @@ -579,8 +580,8 @@ const CMD_LOCK: u8 = 0x00; const CMD_UNLOCK: u8 = 0x80; const CMD_READ_METER: u8 = 0xE7; -fn encode_mode(mode: &RigMode) -> u8 { - match mode { +fn encode_mode(mode: &RigMode) -> Option { + Some(match mode { RigMode::LSB => 0x00, RigMode::USB => 0x01, RigMode::CW => 0x02, @@ -588,11 +589,10 @@ fn encode_mode(mode: &RigMode) -> u8 { RigMode::AM => 0x04, RigMode::WFM => 0x06, RigMode::FM => 0x08, - RigMode::AIS | RigMode::VDES | RigMode::MARINE => 0x08, RigMode::DIG => 0x0A, RigMode::PKT => 0x0C, - RigMode::Other(_) => 0x00, - } + RigMode::AIS | RigMode::VDES | RigMode::MARINE | RigMode::Other(_) => return None, + }) } fn decode_mode(code: u8) -> RigMode {