Fix TX display functionality on multiple interfaces

master
jacob.eva 2 weeks ago
parent 9871a65d50
commit 337af957e1
No known key found for this signature in database
GPG Key ID: B92E083BBCCAA1E
  1. 22
      Display.h
  2. 6
      RNode_Firmware_CE.ino

@ -182,7 +182,7 @@ uint32_t last_unblank_event = 0;
uint32_t display_blanking_timeout = DISPLAY_BLANKING_TIMEOUT; uint32_t display_blanking_timeout = DISPLAY_BLANKING_TIMEOUT;
uint8_t display_unblank_intensity = display_intensity; uint8_t display_unblank_intensity = display_intensity;
bool display_blanked = false; bool display_blanked = false;
bool display_tx = false; bool display_tx[INTERFACE_COUNT] = {false};
bool recondition_display = false; bool recondition_display = false;
int disp_update_interval = 1000/disp_target_fps; int disp_update_interval = 1000/disp_target_fps;
int epd_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; uint8_t online_interfaces = 0;
#if DISP_H == 64
#define WATERFALL_SIZE 46 #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[INTERFACE_COUNT][WATERFALL_SIZE] = {0};
int waterfall_head[INTERFACE_COUNT] = {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
// #define WF_TX_SIZE 5
//#else
#define WF_TX_SIZE 5
//#endif
#define WF_RSSI_MAX -60 #define WF_RSSI_MAX -60
#define WF_RSSI_MIN -135 #define WF_RSSI_MIN -135
#define WF_RSSI_SPAN (WF_RSSI_MAX - WF_RSSI_MIN) #define WF_RSSI_SPAN (WF_RSSI_MAX - WF_RSSI_MIN)
#if disp_mode == DISP_MODE_LANDSCAPE #define WF_PIXEL_WIDTH 10
#define WF_PIXEL_WIDTH (DISP_H / WF_RSSI_SPAN)
#else
#define WF_PIXEL_WIDTH (DISP_W / WF_RSSI_SPAN)
#endif
void draw_waterfall(int px, int py) { void draw_waterfall(int px, int py) {
int rssi_val = interface_obj[interface_page]->currentRssi(); int rssi_val = interface_obj[interface_page]->currentRssi();
if (rssi_val < WF_RSSI_MIN) rssi_val = WF_RSSI_MIN; if (rssi_val < WF_RSSI_MIN) rssi_val = WF_RSSI_MIN;
if (rssi_val > WF_RSSI_MAX) rssi_val = WF_RSSI_MAX; 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; 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++) { for (uint8_t i; i < WF_TX_SIZE; i++) {
waterfall[interface_page][waterfall_head[interface_page]++] = -1; waterfall[interface_page][waterfall_head[interface_page]++] = -1;
if (waterfall_head[interface_page] >= WATERFALL_SIZE) waterfall_head[interface_page] = 0; if (waterfall_head[interface_page] >= WATERFALL_SIZE) waterfall_head[interface_page] = 0;
} }
display_tx = false; display_tx[interface_page] = false;
} else { } else {
waterfall[interface_page][waterfall_head[interface_page]++] = rssi_normalised; waterfall[interface_page][waterfall_head[interface_page]++] = rssi_normalised;
if (waterfall_head[interface_page] >= WATERFALL_SIZE) waterfall_head[interface_page] = 0; if (waterfall_head[interface_page] >= WATERFALL_SIZE) waterfall_head[interface_page] = 0;

@ -660,6 +660,10 @@ void flush_queue(RadioInterface* radio) {
queued_bytes[index] = 0; queued_bytes[index] = 0;
selected_radio->updateAirtime(); selected_radio->updateAirtime();
queue_flushing = false; queue_flushing = false;
#if HAS_DISPLAY
display_tx[radio->getIndex()] = true;
#endif
} }
void pop_queue(RadioInterface* radio) { void pop_queue(RadioInterface* radio) {
@ -696,7 +700,7 @@ void pop_queue(RadioInterface* radio) {
queue_flushing = false; queue_flushing = false;
#if HAS_DISPLAY #if HAS_DISPLAY
display_tx = true; display_tx[radio->getIndex()] = true;
#endif #endif
} }

Loading…
Cancel
Save