* Move simulator widgets to subfolder (no code changes).
* [Simulator] Major Simulator re-structuring to reduce code redundancies and allow for fully dynamic simulated hardware setup:
SimulatorDialog is no longer sub-classed by individual radio UIs, instead a new class is added which handles just the "skin," LCD, and navigation controls (also makes setting up new models much quicker);
All radio switches/knobs/sliders are populated dynamically based on loaded hardware configuration data (eeprom/bin), including control types and names (in case of no hardware config data, reasonable "factory defaults" are loaded);
Starting Horus sim with alternate path for RADIO and MODEL data folders is now supported (.otx file is WIP);
6-way switch now works properly and various other inconsistencies addressed (eg. some Horus analogs were backwards).
* Add missing OpenTX headers to new files.
* [Simulator] Fix loading of Horus hardware settings from Companion simulation.
* Update Travis CI build environment to Qt 5.7.
* [Simulator] Fix 9X missing colored side LCD images, an #include fix, and some cleanup.
* [TravisCI] Set up for parallel Travis builds and use Qt5.7 (#4263)
* Fix starting Simulator with non-existing file/folder structure (now properly creates new ones as needed, including Horus directories with default radio/model); Temporarily remove option for using .otx file with Horus (until that feature is added).
* Load correct simulator skin for X7 when launching from Companion.
* X7 hardware defaults changed to match production hardware
* Fix minor compiler warning in mdichild.cpp, and some cleanup in eeprominterface.cpp.
* [Simulator] Centralize radio UI flavor determination.
* [Simulator] Updates:
Add X7 UI flavor;
Centralize LCD settings;
Simplify drawing curved UI widgets;
LCD color can be changed for any 1/4-bit display radio;
Slight change on default LCD "off" color;
Refactor LcdWidget to not use globals.
* [Companion] X7 EEPROM import fix
+ cosmetics
+ compilation error fixed on Manjaro
* [Companion] 9XR-PRO EEPROM import fix
+ cosmetics
+ compilation error fixed on Manjaro
* Navigation fix
French translations
* [X7] Main view cosmetics
* Fix switch/ana custom name import
* [Simulator] Add white border above/below X7 bezel, and use white-colored padding on sides; Adjust X7 default LCD color.
* Does this work? (#4269)
Read an Horus SD card produces a temporary .otx file now
* Bsongis/companion warning before automatic conversions (#4271)
* Does this work?
* Warning before automatic conversions
* Force different file name after conversion (#4272)
* Force different file name after conversion
* More detailed instructions
* [Companion] Files automatically named during XXX => Horus conversions
115 lines
2.8 KiB
C
115 lines
2.8 KiB
C
/*
|
|
* Copyright (C) OpenTX
|
|
*
|
|
* Based on code named
|
|
* th9x - http://code.google.com/p/th9x
|
|
* er9x - http://code.google.com/p/er9x
|
|
* gruvin9x - http://code.google.com/p/gruvin9x
|
|
*
|
|
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*/
|
|
|
|
#include <stdint.h>
|
|
|
|
#if !defined(MAX_LOGICAL_SWITCHES) && defined(NUM_CSW)
|
|
#define MAX_LOGICAL_SWITCHES NUM_CSW
|
|
#endif
|
|
|
|
#ifdef INIT_IMPORT
|
|
#undef INIT_IMPORT
|
|
#ifdef TELEMETRY_FRSKY
|
|
telemetryStreaming = 20;
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef SETVALUES_IMPORT
|
|
#undef SETVALUES_IMPORT
|
|
for (int i=0; i<NUM_STICKS; i++)
|
|
g_anas[i] = inputs.sticks[i];
|
|
for (int i=0; i<NUM_POTS+NUM_SLIDERS; i++)
|
|
g_anas[NUM_STICKS+i] = inputs.pots[i];
|
|
for (int i=0; i<CPN_MAX_SWITCHES; i++)
|
|
simuSetSwitch(i, inputs.switches[i]);
|
|
for (int i=0; i<CPN_MAX_KEYS; i++)
|
|
simuSetKey(i, inputs.keys[i]);
|
|
for (int i=0; i<(NUM_STICKS+NUM_AUX_TRIMS)*2; i++)
|
|
simuSetTrim(i, inputs.trims[i]);
|
|
|
|
// rotary encoders
|
|
#if defined(PCBGRUVIN9X)
|
|
pind = 0;
|
|
if (inputs.rotenc)
|
|
pind |= 0x20;
|
|
#elif defined(PCBSKY9X)
|
|
if (inputs.rotenc)
|
|
PIOB->PIO_PDSR &= ~0x40;
|
|
else
|
|
PIOB->PIO_PDSR |= 0x40;
|
|
#else
|
|
if (inputs.rotenc)
|
|
simuSetKey(KEY_ENTER, true);
|
|
#endif
|
|
#endif // SETVALUES_IMPORT
|
|
|
|
#ifdef GETVALUES_IMPORT
|
|
#undef GETVALUES_IMPORT
|
|
memset(outputs.chans, 0, sizeof(outputs.chans));
|
|
for (unsigned int i=0; i<DIM(g_chans512); i++)
|
|
outputs.chans[i] = g_chans512[i];
|
|
for (int i=0; i<MAX_LOGICAL_SWITCHES; i++)
|
|
#if defined(BOLD_FONT)
|
|
outputs.vsw[i] = getSwitch(SWSRC_SW1+i);
|
|
#else
|
|
outputs.vsw[i] = getSwitch(SWSRC_SW1+i, 0);
|
|
#endif
|
|
#ifdef GVAR_VALUE // defined(GVARS)
|
|
/* TODO it could be a good idea instead of getPhase() / getPhaseName() outputs.phase = getFlightMode(); */
|
|
#if defined(GVARS)
|
|
for (int fm=0; fm<MAX_FLIGHT_MODES; fm++) {
|
|
for (int gv=0; gv<MAX_GVARS; gv++) {
|
|
outputs.gvars[fm][gv] = GVAR_VALUE(gv, getGVarFlightMode(fm, gv));
|
|
}
|
|
}
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef LCDCHANGED_IMPORT
|
|
#undef LCDCHANGED_IMPORT
|
|
if (simuLcdRefresh) {
|
|
lightEnable = isBacklightEnabled();
|
|
simuLcdRefresh = false;
|
|
return true;
|
|
}
|
|
return false;
|
|
#endif
|
|
|
|
#ifdef TIMER10MS_IMPORT
|
|
#undef TIMER10MS_IMPORT
|
|
if (!main_thread_running)
|
|
return false;
|
|
per10ms();
|
|
return true;
|
|
#endif
|
|
|
|
#ifdef GETERROR_IMPORT
|
|
#undef GETERROR_IMPORT
|
|
return main_thread_error;
|
|
#endif
|
|
|
|
#ifdef SETTRAINER_IMPORT
|
|
#undef SETTRAINER_IMPORT
|
|
ppmInputValidityTimer = 100;
|
|
ppmInput[inputNumber] = qMin(qMax((int16_t)-512, value), (int16_t)512);
|
|
#endif
|
|
|