Moved MPM failsafe check to the UI task

Resolves #87
This commit is contained in:
Raphael Coeffic
2021-05-26 23:21:34 +02:00
committed by Raphael Coeffic
parent 03efcdf22c
commit 5960d0aac2
4 changed files with 25 additions and 14 deletions
+4
View File
@@ -548,6 +548,10 @@ void perMain()
}
#endif
#if defined(MULTIMODULE)
checkFailsafeMulti();
#endif
#if defined(KEYS_GPIO_REG_BIND) && defined(BIND_KEY)
bindButtonHandler(evt);
#endif
+1 -7
View File
@@ -710,15 +710,9 @@ static void checkRTCBattery()
#endif
#if defined(PCBFRSKY) || defined(PCBFLYSKY)
void checkFailsafe()
static void checkFailsafe()
{
for (int i=0; i<NUM_MODULES; i++) {
#if defined(MULTIMODULE)
if (isModuleMultimodule(i)) {
getMultiModuleStatus(i).requiresFailsafeCheck = true;
}
else
#endif
if (isModuleFailsafeAvailable(i)) {
ModuleData & moduleData = g_model.moduleData[i];
if (moduleData.failsafeMode == FAILSAFE_NOT_SET) {
+17 -7
View File
@@ -232,15 +232,12 @@ static void processMultiStatusPacket(const uint8_t * data, uint8_t module, uint8
status.protocolName[0] = 0;
}
}
if (getMultiModuleStatus(module).requiresFailsafeCheck) {
getMultiModuleStatus(module).requiresFailsafeCheck = false;
if (getMultiModuleStatus(module).supportsFailsafe() &&
g_model.moduleData[module].failsafeMode == FAILSAFE_NOT_SET) {
ALERT(STR_FAILSAFEWARN, STR_NO_FAILSAFE, AU_ERROR);
}
if (!getMultiModuleStatus(module).failsafeChecked) {
getMultiModuleStatus(module).requiresFailsafeCheck = true;
getMultiModuleStatus(module).failsafeChecked = true;
}
if (wasBinding && !status.isBinding() && getMultiBindStatus(module) == MULTI_BIND_INITIATED)
setMultiBindStatus(module, MULTI_BIND_FINISHED);
}
@@ -695,3 +692,16 @@ void processMultiTelemetryData(uint8_t data, uint8_t module)
}
}
void checkFailsafeMulti()
{
for (int i=0; i<NUM_MODULES; i++) {
if (isModuleMultimodule(i) &&
getMultiModuleStatus(i).requiresFailsafeCheck) {
getMultiModuleStatus(i).requiresFailsafeCheck = false;
if (getMultiModuleStatus(i).supportsFailsafe() &&
g_model.moduleData[i].failsafeMode == FAILSAFE_NOT_SET) {
ALERT(STR_FAILSAFEWARN, STR_NO_FAILSAFE, AU_ERROR);
}
}
}
}
+3
View File
@@ -104,6 +104,7 @@ struct MultiModuleStatus {
uint8_t flags;
uint8_t requiresFailsafeCheck;
uint8_t failsafeChecked;
tmr10ms_t lastUpdate;
uint8_t protocolPrev = 0;
@@ -137,4 +138,6 @@ enum MultiBindStatus : uint8_t {
uint8_t getMultiBindStatus(uint8_t module);
void setMultiBindStatus(uint8_t module, uint8_t bindStatus);
void checkFailsafeMulti();
#endif //OPENTX_MULTI_H