Skip to content

Commit

Permalink
Fixes a race condition on proto list class init between UI and mixer …
Browse files Browse the repository at this point in the history
…task
  • Loading branch information
raphaelcoeffic authored and pfeerick committed Oct 6, 2021
1 parent 28910c9 commit 065d423
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 15 deletions.
4 changes: 2 additions & 2 deletions radio/src/pulses/pulses.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -583,8 +583,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 {
Expand All @@ -611,8 +611,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 {
Expand Down
32 changes: 19 additions & 13 deletions radio/src/telemetry/telemetry.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -132,18 +132,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)
Expand All @@ -169,11 +173,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)) {
Expand Down

0 comments on commit 065d423

Please sign in to comment.