diff --git a/companion/src/companion.qrc b/companion/src/companion.qrc index 1ce2967b6..5b68fcd0b 100644 --- a/companion/src/companion.qrc +++ b/companion/src/companion.qrc @@ -22,6 +22,7 @@ images/simulator/icons/svg/fixed_x-on.svg images/simulator/icons/svg/fixed_y.svg images/simulator/icons/svg/fixed_y-on.svg + images/simulator/icons/svg/folder_open.svg images/simulator/icons/svg/hold_x.svg images/simulator/icons/svg/hold_x-on.svg images/simulator/icons/svg/hold_y.svg diff --git a/companion/src/generaledit/calibration.cpp b/companion/src/generaledit/calibration.cpp index 44bda3141..e07a874b1 100644 --- a/companion/src/generaledit/calibration.cpp +++ b/companion/src/generaledit/calibration.cpp @@ -41,10 +41,10 @@ CalibrationPanel::CalibrationPanel(QWidget * parent, GeneralSettings & generalSe tableWidget->setFrameStyle(QFrame::NoFrame | QFrame::Plain); tableWidget->setStyleSheet("QTableWidget {background-color: transparent;}"); QStringList headerLabels; - headerLabels << QObject::tr("Negative span") << QObject::tr("Mid value") << QObject::tr("Positive span"); + headerLabels << QObject::tr("Negative span") << QObject::tr("Mid value") << QObject::tr("Positive span"); tableWidget->setHorizontalHeaderLabels(headerLabels); - int rows = CPN_MAX_STICKS + getBoardCapability(getCurrentBoard(), Board::Pots) + getBoardCapability(getCurrentBoard(), Board::Sliders); + int rows = CPN_MAX_STICKS + getBoardCapability(getCurrentBoard(), Board::Pots) + getBoardCapability(getCurrentBoard(), Board::Sliders) + getBoardCapability(getCurrentBoard(), Board::MouseAnalogs); tableWidget->setRowCount(rows); for(int i = 0; i < rows; ++i) { @@ -80,7 +80,7 @@ void CalibrationPanel::onCellChanged(int value) emit modified(); } } - + int CalibrationPanel::getCalibrationValue(int row, int column) { switch(column) { diff --git a/companion/src/helpers.cpp b/companion/src/helpers.cpp index 0a22bd970..68afcc79d 100644 --- a/companion/src/helpers.cpp +++ b/companion/src/helpers.cpp @@ -762,7 +762,6 @@ void startSimulation(QWidget * parent, RadioData & radioData, int modelIdx) dialog->deleteLater(); } else if (dialog->setRadioData(simuData)) { - dialog->start(); dialog->show(); } else { diff --git a/companion/src/images/simulator/icons/svg/folder_open.svg b/companion/src/images/simulator/icons/svg/folder_open.svg new file mode 100644 index 000000000..768169f8c --- /dev/null +++ b/companion/src/images/simulator/icons/svg/folder_open.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/companion/src/modelslist.cpp b/companion/src/modelslist.cpp index ff9940841..19ffff11a 100644 --- a/companion/src/modelslist.cpp +++ b/companion/src/modelslist.cpp @@ -265,7 +265,7 @@ void TreeModel::refresh() for (unsigned i=0; imodels.size(); i++) { ModelData & model = radioData->models[i]; int currentColumn = 0; - TreeItem * current; + TreeItem * current = NULL; if (IS_HORUS(board)) { if (!model.isEmpty()) { TreeItem * categoryItem; @@ -290,7 +290,7 @@ void TreeModel::refresh() current->setData(currentColumn++, QString().sprintf("%02d", i + 1)); } - if (!model.isEmpty()) { + if (!model.isEmpty() && current) { QString modelName; if (strlen(model.name) > 0) modelName = model.name; diff --git a/companion/src/simulation/debugoutput.cpp b/companion/src/simulation/debugoutput.cpp index 0cb582fb1..2bba42b9f 100644 --- a/companion/src/simulation/debugoutput.cpp +++ b/companion/src/simulation/debugoutput.cpp @@ -87,8 +87,8 @@ DebugOutput::DebugOutput(QWidget * parent, SimulatorInterface *simulator): m_dataBufferDevice->setInputBufferMaxSize(DEBUG_OUTPUT_WIDGET_INP_BUFF_SIZE); m_dataBufferDevice->open(QIODevice::ReadWrite | QIODevice::Text); - connect(m_dataBufferDevice, &FilteredTextBuffer::readyRead, this, &DebugOutput::processBytesReceived); - connect(m_dataBufferDevice, &FilteredTextBuffer::bufferOverflow, this, &DebugOutput::onDataBufferOverflow); + connect(m_dataBufferDevice, &FilteredTextBuffer::readyRead, this, &DebugOutput::processBytesReceived, Qt::QueuedConnection); + connect(m_dataBufferDevice, &FilteredTextBuffer::bufferOverflow, this, &DebugOutput::onDataBufferOverflow, Qt::QueuedConnection); connect(this, &DebugOutput::filterChanged, m_dataBufferDevice, &FilteredTextBuffer::setLineFilter); connect(this, &DebugOutput::filterEnabledChanged, m_dataBufferDevice, &FilteredTextBuffer::setLineFilterEnabled); connect(this, &DebugOutput::filterExprChanged, m_dataBufferDevice, &FilteredTextBuffer::setLineFilterExpr); diff --git a/companion/src/simulation/simulatormainwindow.cpp b/companion/src/simulation/simulatormainwindow.cpp index 9f7a0cb5a..41a708e5c 100644 --- a/companion/src/simulation/simulatormainwindow.cpp +++ b/companion/src/simulation/simulatormainwindow.cpp @@ -168,13 +168,14 @@ void SimulatorMainWindow::closeEvent(QCloseEvent *) void SimulatorMainWindow::show() { QMainWindow::show(); -#ifdef Q_OS_LINUX - // for whatever reason, w/out this workaround any floating docks may appear and get "stuck" behind other windows, eg. Terminal or Companion. if (m_firstShow) { - restoreUiState(); m_firstShow = false; + #ifdef Q_OS_LINUX + // for whatever reason, w/out this workaround any floating docks may appear and get "stuck" behind other windows, eg. Terminal or Companion. + restoreUiState(); + #endif + start(); } -#endif } void SimulatorMainWindow::changeEvent(QEvent *e) diff --git a/companion/src/simulation/simulatorstartupdialog.cpp b/companion/src/simulation/simulatorstartupdialog.cpp index e232b36f9..be67d7a90 100644 --- a/companion/src/simulation/simulatorstartupdialog.cpp +++ b/companion/src/simulation/simulatorstartupdialog.cpp @@ -24,7 +24,6 @@ #include "appdata.h" #include "constants.h" #include "simulatorinterface.h" -#include "helpers.h" #include @@ -52,7 +51,7 @@ SimulatorStartupDialog::SimulatorStartupDialog(SimulatorOptions * options, int * ui->optGrp_dataSource->setId(ui->optFolder, SimulatorOptions::START_WITH_FOLDER); ui->optGrp_dataSource->setId(ui->optSdPath, SimulatorOptions::START_WITH_SDPATH); - CompanionIcon icon("open.png"); + SimulatorIcon icon("folder_open"); ui->btnSelectDataFile->setIcon(icon); ui->btnSelectDataFolder->setIcon(icon); ui->btnSelectSdPath->setIcon(icon); diff --git a/companion/src/simulator.cpp b/companion/src/simulator.cpp index b758bbff1..bbfac692b 100644 --- a/companion/src/simulator.cpp +++ b/companion/src/simulator.cpp @@ -185,7 +185,7 @@ int main(int argc, char *argv[]) if (!cliOptsFound || profileId == -1 || simOptions.firmwareId.isEmpty() || (simOptions.dataFile.isEmpty() && simOptions.dataFolder.isEmpty())) { SimulatorStartupDialog * dlg = new SimulatorStartupDialog(&simOptions, &profileId); int ret = dlg->exec(); - dlg->deleteLater(); + delete dlg; if (ret != QDialog::Accepted) { return finish(0); } @@ -219,7 +219,6 @@ int main(int argc, char *argv[]) showMessage(resultMsg, QMessageBox::Critical); } else if (mainWindow->setOptions(simOptions, true)) { - mainWindow->start(); mainWindow->show(); result = app.exec(); if (!result) { diff --git a/radio/src/lua/api_general.cpp b/radio/src/lua/api_general.cpp index f9b933c75..67a0553f9 100644 --- a/radio/src/lua/api_general.cpp +++ b/radio/src/lua/api_general.cpp @@ -408,7 +408,7 @@ static int luaCrossfireTelemetryPop(lua_State * L) } } - uint8_t length, data; + uint8_t length = 0, data = 0; if (luaInputTelemetryFifo->probe(length) && luaInputTelemetryFifo->size() >= uint32_t(length)) { // length value includes the length field luaInputTelemetryFifo->pop(length); diff --git a/radio/src/pulses/multi_arm.cpp b/radio/src/pulses/multi_arm.cpp index a4781ad22..a3d4045a0 100644 --- a/radio/src/pulses/multi_arm.cpp +++ b/radio/src/pulses/multi_arm.cpp @@ -74,7 +74,7 @@ static void sendByteMulti(uint8_t b) //max 11 changes 0 10 10 10 10 P 1 uint8_t len = BITLEN_MULTI; //max val: 10*20 < 256 for (uint8_t i=0; i<=9; i++) { //8Bits + 1Parity + Stop=1 bool nlev = b & 1; //lsb first - parity = parity ^ nlev; + parity = parity ^ (uint8_t)nlev; if (lev == nlev) { len += BITLEN_MULTI; } diff --git a/radio/src/targets/simu/opentxsimulator.cpp b/radio/src/targets/simu/opentxsimulator.cpp index c84ee7260..f85be7b9e 100644 --- a/radio/src/targets/simu/opentxsimulator.cpp +++ b/radio/src/targets/simu/opentxsimulator.cpp @@ -18,7 +18,7 @@ #include "opentx.h" #include "simulcd.h" -int16_t g_anas[NUM_STICKS+NUM_POTS+NUM_SLIDERS]; +int16_t g_anas[Analogs::NUM_ANALOGS]; uint16_t anaIn(uint8_t chan) { diff --git a/radio/src/targets/simu/simpgmspace.cpp b/radio/src/targets/simu/simpgmspace.cpp index dcf0c6f01..23ba0aa09 100644 --- a/radio/src/targets/simu/simpgmspace.cpp +++ b/radio/src/targets/simu/simpgmspace.cpp @@ -81,7 +81,7 @@ void toplcdOff() { } -U64 microsTimer(void) +uint64_t simuTimerMicros(void) { #if SIMPGMSPC_USE_QT @@ -104,7 +104,7 @@ U64 microsTimer(void) freqScale = 1e6 / frequency.QuadPart; // init timer QueryPerformanceCounter(&firstTick); - TRACE_SIMPGMSPACE("microsTimer() init: first tick = %llu @ %llu Hz: %g", firstTick.QuadPart, frequency.QuadPart); + TRACE_SIMPGMSPACE("microsTimer() init: first tick = %llu @ %llu Hz", firstTick.QuadPart, frequency.QuadPart); } // read the timer QueryPerformanceCounter(&newTick); @@ -121,18 +121,18 @@ U64 microsTimer(void) uint16_t getTmr16KHz() { - return microsTimer() * 2 / 125; + return simuTimerMicros() * 2 / 125; } uint16_t getTmr2MHz() { - return microsTimer() * 2; + return simuTimerMicros() * 2; } // return 2ms resolution to match CoOS settings U64 CoGetOSTime(void) { - return microsTimer() / 2000; + return simuTimerMicros() / 2000; } void simuInit() diff --git a/radio/src/targets/simu/simpgmspace.h b/radio/src/targets/simu/simpgmspace.h index a5cdd1e90..d1edfe084 100644 --- a/radio/src/targets/simu/simpgmspace.h +++ b/radio/src/targets/simu/simpgmspace.h @@ -356,15 +356,16 @@ extern char * main_thread_error; #define SIMU_SLEEP(x) do { if (!main_thread_running) return; sleep(x/*ms*/); } while (0) #define SIMU_SLEEP_NORET(x) do { sleep(x/*ms*/); } while (0) +uint64_t simuTimerMicros(void); + void simuInit(); +void StartSimu(bool tests=true, const char * sdPath = 0, const char * settingsPath = 0); +void StopSimu(); void simuSetKey(uint8_t key, bool state); void simuSetTrim(uint8_t trim, bool state); void simuSetSwitch(uint8_t swtch, int8_t state); -void StartSimu(bool tests=true, const char * sdPath = 0, const char * settingsPath = 0); -void StopSimu(); - void StartEepromThread(const char *filename="eeprom.bin"); void StopEepromThread(); #if defined(SIMU_AUDIO) && defined(CPUARM) @@ -419,6 +420,7 @@ OS_TID CoCreateTask(FUNCPtr task, void *argv, uint32_t parameter, void * stk, ui #define CoTickDelay(x) sleep(2*(x)) #define CoCreateFlag(...) 0 U64 CoGetOSTime(void); + #define UART_Stop(...) #define UART3_Stop(...) #define USART_GetITStatus(...) 0