Fixes a race condition on proto list class init between UI and mixer task

This commit is contained in:
Raphael Coeffic
2021-10-04 21:52:08 +11:00
committed by Peter Feerick
parent 6684489f01
commit ba03d02b7a
2 changed files with 21 additions and 15 deletions
+2 -2
View File
@@ -584,8 +584,8 @@ bool setupPulsesInternalModule()
if (moduleState[INTERNAL_MODULE].protocol != protocol) {
intmoduleStop();
moduleState[INTERNAL_MODULE].protocol = protocol;
enablePulsesInternalModule(protocol);
moduleState[INTERNAL_MODULE].protocol = protocol;
return false;
}
else {
@@ -612,8 +612,8 @@ bool setupPulsesExternalModule()
if (moduleState[EXTERNAL_MODULE].protocol != protocol) {
extmoduleStop();
moduleState[EXTERNAL_MODULE].protocol = protocol;
enablePulsesExternalModule(protocol);
moduleState[EXTERNAL_MODULE].protocol = protocol;
return false;
}
else {
+19 -13
View File
@@ -133,18 +133,22 @@ void telemetryWakeup()
#endif
#if defined(INTERNAL_MODULE_MULTI)
if (intmoduleFifo.pop(data)) {
LOG_TELEMETRY_WRITE_START();
do {
processMultiTelemetryData(data, INTERNAL_MODULE);
LOG_TELEMETRY_WRITE_BYTE(data);
} while (intmoduleFifo.pop(data));
}
if (isModuleMultimodule(INTERNAL_MODULE)) {
if (intmoduleFifo.pop(data)) {
LOG_TELEMETRY_WRITE_START();
do {
processMultiTelemetryData(data, INTERNAL_MODULE);
LOG_TELEMETRY_WRITE_BYTE(data);
} while (intmoduleFifo.pop(data));
}
#if defined(MULTI_PROTOLIST)
if (MultiRfProtocols::instance(INTERNAL_MODULE)->isScanning()) {
MultiRfProtocols::instance(INTERNAL_MODULE)->scanReply();
}
if ((moduleState[INTERNAL_MODULE].protocol ==
PROTOCOL_CHANNELS_MULTIMODULE) &&
MultiRfProtocols::instance(INTERNAL_MODULE)->isScanning()) {
MultiRfProtocols::instance(INTERNAL_MODULE)->scanReply();
}
#endif
}
#endif
#if defined(PCBNV14)
@@ -170,11 +174,13 @@ void telemetryWakeup()
#if defined(MULTI_PROTOLIST)
if (isModuleMultimodule(EXTERNAL_MODULE) &&
MultiRfProtocols::instance(EXTERNAL_MODULE)->isScanning()) {
MultiRfProtocols::instance(EXTERNAL_MODULE)->scanReply();
(moduleState[EXTERNAL_MODULE].protocol ==
PROTOCOL_CHANNELS_MULTIMODULE) &&
MultiRfProtocols::instance(EXTERNAL_MODULE)->isScanning()) {
MultiRfProtocols::instance(EXTERNAL_MODULE)->scanReply();
}
#endif
#elif defined(PCBSKY9X)
if (telemetryProtocol == PROTOCOL_TELEMETRY_FRSKY_D_SECONDARY) {
while (telemetrySecondPortReceive(data)) {