From eab42e9ad8d554658687803de0fc85396869414c Mon Sep 17 00:00:00 2001 From: Stephen Waits Date: Fri, 27 Mar 2026 02:40:02 -0600 Subject: [PATCH] fix: invert only RX/TX letters, not surrounding spaces in display --- .../__pycache__/meshcore_rx.cpython-312.pyc | Bin 0 -> 47183 bytes src/display/render.rs | 82 +++++++++++------- 2 files changed, 53 insertions(+), 29 deletions(-) create mode 100644 examples/meshcore/__pycache__/meshcore_rx.cpython-312.pyc diff --git a/examples/meshcore/__pycache__/meshcore_rx.cpython-312.pyc b/examples/meshcore/__pycache__/meshcore_rx.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..82e2a6183ba1098db368376c7024befa64f17834 GIT binary patch literal 47183 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 literal 0 HcmV?d00001 diff --git a/src/display/render.rs b/src/display/render.rs index a724a9eb..04da0321 100644 --- a/src/display/render.rs +++ b/src/display/render.rs @@ -27,27 +27,33 @@ const RSSI_MIN: i16 = -120; const RSSI_MAX: i16 = 0; /// Render the boot splash screen. -pub fn splash( - target: &mut impl DrawTarget, - board_name: &str, - version: &str, -) { +pub fn splash(target: &mut impl DrawTarget, board_name: &str, version: &str) { let _ = target.clear(BinaryColor::Off); let title_style = MonoTextStyle::new(&FONT_9X15_BOLD, BinaryColor::On); let sub_style = MonoTextStyle::new(&FONT_6X10, BinaryColor::On); - Text::with_alignment("DongLoRa", Point::new(W / 2, 24), title_style, Alignment::Center) - .draw(target) - .ok(); + Text::with_alignment( + "DongLoRa", + Point::new(W / 2, 24), + title_style, + Alignment::Center, + ) + .draw(target) + .ok(); Text::with_alignment(version, Point::new(W / 2, 42), sub_style, Alignment::Center) .draw(target) .ok(); - Text::with_alignment(board_name, Point::new(W / 2, 54), sub_style, Alignment::Center) - .draw(target) - .ok(); + Text::with_alignment( + board_name, + Point::new(W / 2, 54), + sub_style, + Alignment::Center, + ) + .draw(target) + .ok(); } /// Render the main status dashboard. @@ -64,30 +70,48 @@ pub fn dashboard( Some(cfg) => { // Row 0: state + frequency (full precision) let mut buf: String<32> = String::new(); - let state_str = match status.state { - RadioState::Idle => "IDLE", - RadioState::Receiving => "RX", - RadioState::Transmitting => "TX", - }; let freq_mhz = cfg.freq_hz / 1_000_000; let freq_khz = (cfg.freq_hz % 1_000_000) / 1_000; - let _ = write!(buf, "{:<4} {}.{:03}MHz", state_str, freq_mhz, freq_khz); + let _ = write!(buf, " {}.{:03}MHz", freq_mhz, freq_khz); Text::new(&buf, Point::new(0, FONT_H - 1), style) .draw(target) .ok(); - // Inverted state indicator when active - if status.state != RadioState::Idle { - let state_w = state_str.len() as i32 * 6; - let mut inv_style = MonoTextStyle::new(&FONT_6X10, BinaryColor::Off); - inv_style.set_background_color(Some(BinaryColor::On)); - Rectangle::new(Point::new(0, 0), Size::new(state_w as u32, FONT_H as u32)) - .into_styled(PrimitiveStyle::with_fill(BinaryColor::On)) - .draw(target) - .ok(); - Text::new(state_str, Point::new(0, FONT_H - 1), inv_style) - .draw(target) - .ok(); + // State indicator: inverted "RX" or "TX", plain "IDLE" + match status.state { + RadioState::Idle => { + Text::new("IDLE", Point::new(0, FONT_H - 1), style) + .draw(target) + .ok(); + } + RadioState::Receiving => { + let x = 0; + let char_w = 6; + let text_w = 2 * char_w; // "RX" = 2 chars + let mut inv_style = MonoTextStyle::new(&FONT_6X10, BinaryColor::Off); + inv_style.set_background_color(Some(BinaryColor::On)); + Rectangle::new(Point::new(x, 0), Size::new(text_w as u32, FONT_H as u32)) + .into_styled(PrimitiveStyle::with_fill(BinaryColor::On)) + .draw(target) + .ok(); + Text::new("RX", Point::new(x, FONT_H - 1), inv_style) + .draw(target) + .ok(); + } + RadioState::Transmitting => { + let char_w = 6; + let x = 2 * char_w; // start at column 2 (third character position) + let text_w = 2 * char_w; // "TX" = 2 chars + let mut inv_style = MonoTextStyle::new(&FONT_6X10, BinaryColor::Off); + inv_style.set_background_color(Some(BinaryColor::On)); + Rectangle::new(Point::new(x, 0), Size::new(text_w as u32, FONT_H as u32)) + .into_styled(PrimitiveStyle::with_fill(BinaryColor::On)) + .draw(target) + .ok(); + Text::new("TX", Point::new(x, FONT_H - 1), inv_style) + .draw(target) + .ok(); + } } // Row 1: BW (full) SF CR