Fix TX display functionality on multiple interfaces

This commit is contained in:
jacob.eva 2025-02-10 14:06:41 +00:00
parent 9871a65d50
commit 337af957e1
No known key found for this signature in database
GPG Key ID: 0B92E083BBCCAA1E
2 changed files with 10 additions and 18 deletions

View File

@ -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;

View File

@ -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
}