From 31cb282dd293461fe1f767497968124c21e5e6d8 Mon Sep 17 00:00:00 2001 From: Bryan Mayland Date: Tue, 28 Sep 2021 14:58:51 -0400 Subject: [PATCH] Stop using 50ms mixer period when no module enabled Also adds a 2ms mixer period if internal and external modules are stopped but joystick mode is active --- radio/src/mixer_scheduler.cpp | 5 +++++ radio/src/mixer_scheduler.h | 3 ++- radio/src/pulses/pulses.cpp | 6 +++--- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/radio/src/mixer_scheduler.cpp b/radio/src/mixer_scheduler.cpp index a94b6b27e..61ea8bc46 100644 --- a/radio/src/mixer_scheduler.cpp +++ b/radio/src/mixer_scheduler.cpp @@ -45,6 +45,11 @@ uint16_t getMixerSchedulerPeriod() if (mixerSchedules[EXTERNAL_MODULE].period) { return mixerSchedules[EXTERNAL_MODULE].period; } +#endif +#if defined(STM32) && !defined(SIMU) + if (getSelectedUsbMode() == USB_JOYSTICK_MODE) { + return MIXER_SCHEDULER_JOYSTICK_PERIOD_US; + } #endif return MIXER_SCHEDULER_DEFAULT_PERIOD_US; } diff --git a/radio/src/mixer_scheduler.h b/radio/src/mixer_scheduler.h index c8ab79019..78559317a 100644 --- a/radio/src/mixer_scheduler.h +++ b/radio/src/mixer_scheduler.h @@ -21,7 +21,8 @@ #ifndef _MIXER_SCHEDULER_H_ #define _MIXER_SCHEDULER_H_ -#define MIXER_SCHEDULER_DEFAULT_PERIOD_US 4000u // 4ms +#define MIXER_SCHEDULER_DEFAULT_PERIOD_US 4000u // 4ms +#define MIXER_SCHEDULER_JOYSTICK_PERIOD_US 2000u // 2ms #define MIN_REFRESH_RATE 1750 /* us */ #define MAX_REFRESH_RATE 50000 /* us */ diff --git a/radio/src/pulses/pulses.cpp b/radio/src/pulses/pulses.cpp index ea6f59d8d..6b1acc047 100755 --- a/radio/src/pulses/pulses.cpp +++ b/radio/src/pulses/pulses.cpp @@ -327,8 +327,8 @@ void enablePulsesExternalModule(uint8_t protocol) #endif default: - // external module stopped, set period to 50ms (necessary for USB Joystick, for instance) - mixerSchedulerSetPeriod(EXTERNAL_MODULE, 50000/*us*/); + // external module stopped, use default mixer period + mixerSchedulerSetPeriod(EXTERNAL_MODULE, 0); break; } } @@ -500,7 +500,7 @@ static void enablePulsesInternalModule(uint8_t protocol) #endif default: - // internal module stopped, set internal period to 0 and start the scheduler + // internal module stopped, use default mixer period mixerSchedulerSetPeriod(INTERNAL_MODULE, 0); break; }