fix: Incorrect MPM module status (#4198)
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user