From 337af957e122b30a89495627c79e0da4ea2be320 Mon Sep 17 00:00:00 2001 From: "jacob.eva" Date: Mon, 10 Feb 2025 14:06:41 +0000 Subject: [PATCH] Fix TX display functionality on multiple interfaces --- Display.h | 22 +++++----------------- RNode_Firmware_CE.ino | 6 +++++- 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/Display.h b/Display.h index 84c9417..a1062d7 100644 --- a/Display.h +++ b/Display.h @@ -182,7 +182,7 @@ uint32_t last_unblank_event = 0; uint32_t display_blanking_timeout = DISPLAY_BLANKING_TIMEOUT; uint8_t display_unblank_intensity = display_intensity; bool display_blanked = false; -bool display_tx = false; +bool display_tx[INTERFACE_COUNT] = {false}; bool recondition_display = false; int disp_update_interval = 1000/disp_target_fps; int epd_update_interval = 1000/disp_target_fps; @@ -204,11 +204,7 @@ uint8_t online_interface_list[INTERFACE_COUNT] = {0}; uint8_t online_interfaces = 0; -#if DISP_H == 64 #define WATERFALL_SIZE 46 -#else -#define WATERFALL_SIZE int(DISP_H * 0.75) // default to 75% of the display height -#endif int waterfall[INTERFACE_COUNT][WATERFALL_SIZE] = {0}; int waterfall_head[INTERFACE_COUNT] = {0}; @@ -753,30 +749,22 @@ void draw_signal_bars(int px, int py) { } } -//#if MODEM == SX1280 -// #define WF_TX_SIZE 5 -//#else - #define WF_TX_SIZE 5 -//#endif +#define WF_TX_SIZE 5 #define WF_RSSI_MAX -60 #define WF_RSSI_MIN -135 #define WF_RSSI_SPAN (WF_RSSI_MAX - WF_RSSI_MIN) -#if disp_mode == DISP_MODE_LANDSCAPE -#define WF_PIXEL_WIDTH (DISP_H / WF_RSSI_SPAN) -#else -#define WF_PIXEL_WIDTH (DISP_W / WF_RSSI_SPAN) -#endif +#define WF_PIXEL_WIDTH 10 void draw_waterfall(int px, int py) { int rssi_val = interface_obj[interface_page]->currentRssi(); if (rssi_val < WF_RSSI_MIN) rssi_val = WF_RSSI_MIN; if (rssi_val > WF_RSSI_MAX) rssi_val = WF_RSSI_MAX; int rssi_normalised = ((rssi_val - WF_RSSI_MIN)*(1.0/WF_RSSI_SPAN))*WF_PIXEL_WIDTH; - if (display_tx) { + if (display_tx[interface_page]) { for (uint8_t i; i < WF_TX_SIZE; i++) { waterfall[interface_page][waterfall_head[interface_page]++] = -1; if (waterfall_head[interface_page] >= WATERFALL_SIZE) waterfall_head[interface_page] = 0; } - display_tx = false; + display_tx[interface_page] = false; } else { waterfall[interface_page][waterfall_head[interface_page]++] = rssi_normalised; if (waterfall_head[interface_page] >= WATERFALL_SIZE) waterfall_head[interface_page] = 0; diff --git a/RNode_Firmware_CE.ino b/RNode_Firmware_CE.ino index b6f9e06..d49bbe6 100644 --- a/RNode_Firmware_CE.ino +++ b/RNode_Firmware_CE.ino @@ -660,6 +660,10 @@ void flush_queue(RadioInterface* radio) { queued_bytes[index] = 0; selected_radio->updateAirtime(); queue_flushing = false; + + #if HAS_DISPLAY + display_tx[radio->getIndex()] = true; + #endif } void pop_queue(RadioInterface* radio) { @@ -696,7 +700,7 @@ void pop_queue(RadioInterface* radio) { queue_flushing = false; #if HAS_DISPLAY - display_tx = true; + display_tx[radio->getIndex()] = true; #endif }