From a00975d3e547d236093a195306e8ed80ef54f41e Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Sun, 12 Jun 2022 11:28:05 +0200 Subject: [PATCH] fix(simulator): fixed LCD flush sync with QT simulator (#2030) --- companion/src/simulation/simulateduiwidget.cpp | 2 ++ companion/src/simulation/simulatorinterface.h | 1 + radio/src/simu.cpp | 1 - radio/src/targets/simu/opentxsimulator.cpp | 8 ++++++-- radio/src/targets/simu/opentxsimulator.h | 1 + radio/src/targets/simu/simpgmspace.cpp | 3 +++ radio/src/targets/taranis/board.h | 1 + 7 files changed, 14 insertions(+), 3 deletions(-) diff --git a/companion/src/simulation/simulateduiwidget.cpp b/companion/src/simulation/simulateduiwidget.cpp index a2c257a19..3d650995e 100644 --- a/companion/src/simulation/simulateduiwidget.cpp +++ b/companion/src/simulation/simulateduiwidget.cpp @@ -133,6 +133,8 @@ void SimulatedUIWidget::onLcdChange(bool backlightEnable) return; m_lcd->onLcdChanged(backlightEnable); + m_simulator->lcdFlushed(); + setLightOn(backlightEnable); } diff --git a/companion/src/simulation/simulatorinterface.h b/companion/src/simulation/simulatorinterface.h index 25adc9c6b..3af09c3f9 100644 --- a/companion/src/simulation/simulatorinterface.h +++ b/companion/src/simulation/simulatorinterface.h @@ -145,6 +145,7 @@ class SimulatorInterface : public QObject virtual void setInputValue(int type, uint8_t index, int16_t value) = 0; virtual void rotaryEncoderEvent(int steps) = 0; virtual void touchEvent(int type, int x, int y) = 0; + virtual void lcdFlushed() = 0; virtual void setTrainerTimeout(uint16_t ms) = 0; virtual void sendTelemetry(const QByteArray data) = 0; virtual void setLuaStateReloadPermanentScripts() = 0; diff --git a/radio/src/simu.cpp b/radio/src/simu.cpp index 89996d406..69970a32b 100644 --- a/radio/src/simu.cpp +++ b/radio/src/simu.cpp @@ -96,7 +96,6 @@ FXIMPLEMENT(OpenTxSim, FXMainWindow, OpenTxSimMap, ARRAYNUMBER(OpenTxSimMap)) OpenTxSim::OpenTxSim(FXApp* a): FXMainWindow(a, "OpenTX Simu", nullptr, nullptr, DECOR_ALL, 20, 90, 0, 0) { - lcdInit(); bmp = new FXPPMImage(getApp(), nullptr, IMAGE_OWNED|IMAGE_KEEP|IMAGE_SHMI|IMAGE_SHMP, W2, H2); #if defined(SIMU_AUDIO) diff --git a/radio/src/targets/simu/opentxsimulator.cpp b/radio/src/targets/simu/opentxsimulator.cpp index 49d83951f..13243df21 100644 --- a/radio/src/targets/simu/opentxsimulator.cpp +++ b/radio/src/targets/simu/opentxsimulator.cpp @@ -132,8 +132,7 @@ void OpenTxSimulator::init() void OpenTxSimulator::start(const char * filename, bool tests) { - if (isRunning()) - return; + if (isRunning()) return; ETXS_DBG << "file:" << filename << "tests:" << tests; QMutexLocker lckr(&m_mtxSimuMain); @@ -375,6 +374,11 @@ void OpenTxSimulator::touchEvent(int type, int x, int y) #endif } +void OpenTxSimulator::lcdFlushed() +{ + ::lcdFlushed(); +} + void OpenTxSimulator::setTrainerTimeout(uint16_t ms) { ppmInputValidityTimer = ms; diff --git a/radio/src/targets/simu/opentxsimulator.h b/radio/src/targets/simu/opentxsimulator.h index 970ee6da0..758529475 100644 --- a/radio/src/targets/simu/opentxsimulator.h +++ b/radio/src/targets/simu/opentxsimulator.h @@ -76,6 +76,7 @@ class DLLEXPORT OpenTxSimulator : public SimulatorInterface virtual void setInputValue(int type, uint8_t index, int16_t value); virtual void rotaryEncoderEvent(int steps); virtual void touchEvent(int type, int x, int y); + virtual void lcdFlushed(); virtual void setTrainerTimeout(uint16_t ms); virtual void sendTelemetry(const QByteArray data); virtual void setLuaStateReloadPermanentScripts(); diff --git a/radio/src/targets/simu/simpgmspace.cpp b/radio/src/targets/simu/simpgmspace.cpp index 276583239..7247f6196 100644 --- a/radio/src/targets/simu/simpgmspace.cpp +++ b/radio/src/targets/simu/simpgmspace.cpp @@ -207,6 +207,9 @@ void simuStart(bool tests, const char * sdPath, const char * settingsPath) try { #endif + // Init LCD call backs + lcdInit(); + #if !defined(SIMU_BOOTLOADER) simuMain(); #else diff --git a/radio/src/targets/taranis/board.h b/radio/src/targets/taranis/board.h index f1a9dd639..d728236df 100644 --- a/radio/src/targets/taranis/board.h +++ b/radio/src/targets/taranis/board.h @@ -947,6 +947,7 @@ void lcdSetRefVolt(unsigned char val); #ifdef __cplusplus void lcdSetContrast(bool useDefault = false); #endif +void lcdFlushed(); // Top LCD driver #if defined(TOPLCD_GPIO)