fix: Incorrect MPM module status (#4198)

This commit is contained in:
Raphael Coeffic
2023-10-15 16:27:38 +10:00
committed by GitHub
parent b22a1b5d32
commit ee9d50dca4
5 changed files with 21 additions and 2 deletions
+9
View File
@@ -447,6 +447,15 @@ void ModuleWindow::updateModule()
auto line = newLine(&grid);
new StaticText(line, rect_t{}, STR_RF_POWER, 0, COLOR_THEME_PRIMARY1);
rfPower = new Choice(line, rect_t{}, 0, 0, GET_SET_DEFAULT(md->pxx.power));
line = newLine(&grid);
new StaticText(line, rect_t{}, STR_MODULE_TELEMETRY, 0, COLOR_THEME_PRIMARY1);
new DynamicText(line, rect_t{}, [=] () {
if (modulePortHasRx(moduleIdx)) {
return std::string(STR_MODULE_TELEM_ON);
} else {
return std::string(STR_DISABLE_INTERNAL);
}
});
}
#if defined(PXX2)
+8
View File
@@ -319,3 +319,11 @@ int8_t modulePortGetModuleForPort(uint8_t port)
return -1;
}
bool modulePortHasRx(uint8_t module)
{
auto mod_st = modulePortGetState(module);
if (!mod_st) return false;
return mod_st && mod_st->rx.port;
}
+2
View File
@@ -166,3 +166,5 @@ bool modulePortIsPortUsedByModule(uint8_t module, uint8_t port);
bool modulePortIsPortUsed(uint8_t port);
int8_t modulePortGetModuleForPort(uint8_t port);
bool modulePortHasRx(uint8_t module);
+1 -1
View File
@@ -139,7 +139,7 @@ static void setupPulsesMulti(uint8_t*& p_buf, uint8_t module)
}
// Invert telemetry if needed
uint8_t disableTelemetry = modulePortIsPortUsedByModule(module, ETX_MOD_PORT_SPORT) ? 0 : 1;
uint8_t disableTelemetry = modulePortHasRx(module) ? 0 : 1;
if (invert[module] & 0x80 && !disableTelemetry) {
if (getMultiModuleStatus(module).isValid()) {
invert[module] &= 0x08; // Telemetry received, stop searching
+1 -1
View File
@@ -508,7 +508,7 @@ static void processMultiTelemetryPaket(const uint8_t * packet, uint8_t module)
void MultiModuleStatus::getStatusString(char * statusText) const
{
if (!isValid()) {
if (!modulePortIsPortUsedByModule(getModuleIndex(), ETX_MOD_PORT_SPORT)) {
if (!modulePortHasRx(getModuleIndex())) {
strcpy(statusText, STR_DISABLE_INTERNAL);
} else {
strcpy(statusText, STR_MODULE_NO_TELEMETRY);