Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
9835ef6
Enhance USB driver shutdown procedure and improve transfer management
freshLobster Feb 6, 2026
fcb88ed
Merge branch 'espotek-org:master' into lobster
freshLobster Feb 7, 2026
53ab34d
Merge branch 'espotek-org:master' into lobster
freshLobster Feb 13, 2026
f3bce71
Merge branch 'espotek-org:master' into lobster
freshLobster Feb 17, 2026
86e5404
Merge branch 'espotek-org:master' into lobster
freshLobster Mar 4, 2026
21e4350
Add graceful USB driver shutdown and reinit handling
freshLobster Mar 4, 2026
38251d2
Platform-specific pipeID and winusb cleanup
freshLobster Mar 4, 2026
19e3a7b
Ignore Desktop_Interface test/build/tools
freshLobster Mar 5, 2026
120181f
Update .gitignore
freshLobster Mar 5, 2026
1c4a600
Update .gitignore
freshLobster Mar 5, 2026
cdd5eb0
Update .gitignore
freshLobster Mar 5, 2026
afd796b
Update .gitignore
freshLobster Mar 5, 2026
03f9f68
PCB update to swap incorrect labels
freshLobster Mar 10, 2026
3c4ec65
Merge upstream master: libdfuprog static linking and submodule integr…
freshLobster Mar 11, 2026
63b25bf
Remove PCB label update from PR
freshLobster Mar 11, 2026
0575951
Restore .gitignore to match upstream master
freshLobster Mar 11, 2026
b445eb5
Merge branch 'espotek-org:master' into lobster-pr-clean-winfix
freshLobster Mar 13, 2026
d93b7df
Merge branch 'espotek-org:master' into lobster-pr-clean-winfix
freshLobster Mar 17, 2026
c17d203
Merge branch 'espotek-org:master' into lobster-pr-clean-winfix
freshLobster Mar 22, 2026
a9edf1c
Stabilize WinUSB reconnect handling
freshLobster Mar 25, 2026
a58b112
Merge branch 'espotek-org:master' into lobster-pr-clean-winfix
freshLobster Mar 25, 2026
71fbe9a
cleanup and organization
freshLobster Mar 25, 2026
7b25a52
Merge branch 'lobster-pr-clean-winfix' of https://github.com/freshLob…
freshLobster Mar 25, 2026
6cd57e2
Revert "Merge branch 'lobster-pr-clean-winfix' of https://github.com/…
freshLobster Mar 27, 2026
ff69133
Revert "cleanup and organization"
freshLobster Mar 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions Desktop_Interface/genericusbdriver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ genericUsbDriver::genericUsbDriver(QWidget *parent) : QLabel(parent)
//qDebug() << k;
//qDebug() << NUM_ISO_ENDPOINTS;
pipeID[k] = 0x81+k;
qDebug() << "pipeID" << k << "=" << pipeID[k];

qDebug() << "pipeID" << k << "=" << static_cast<int>(pipeID[k]);
Comment thread
freshLobster marked this conversation as resolved.
}

connectTimer = new QTimer();
Expand Down Expand Up @@ -376,7 +377,7 @@ void genericUsbDriver::setGain(double newGain){
*/
qDebug("newGain = %f", newGain);
qDebug("gainMask = %x", gainMask);
usbSendControl(0x40, 0xa5, (deviceMode == 5 ? 0 : 5), gainMask, 0, NULL);
usbSendControl(0x40, 0xa5, deviceMode, gainMask, 0, NULL);
}

void genericUsbDriver::avrDebug(void){
Expand Down
4 changes: 4 additions & 0 deletions Desktop_Interface/genericusbdriver.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,11 @@ class genericUsbDriver : public QLabel
//Generic Vars
//bufferControl *bufferPtr = NULL;
QTimer *psuTimer = nullptr;
#ifdef PLATFORM_WINDOWS
unsigned char pipeID[NUM_ISO_ENDPOINTS];
#else
unsigned char pipeID[3];
#endif
QTimer *isoTimer = nullptr;
QTimer *connectTimer = nullptr;
QTimer *recoveryTimer;
Expand Down
165 changes: 75 additions & 90 deletions Desktop_Interface/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
#endif

#include <algorithm>
#include <QStandardPaths>

#define DO_QUOTE(X) #X
#define QUOTE(X) DO_QUOTE(X)
Expand Down Expand Up @@ -166,10 +165,6 @@ MainWindow::MainWindow(QWidget *parent) :
connect(ui->debugButton1, SIGNAL(clicked()), ui->controller_iso->driver, SLOT(avrDebug()));
connect(ui->psuSlider, SIGNAL(voltageChanged(double)), ui->controller_iso->driver, SLOT(setPsu(double)));
connect(ui->controller_iso, SIGNAL(setGain(double)), ui->controller_iso->driver, SLOT(setGain(double)));
connect(ui->controller_iso, &isoDriver::setGain, this, [this](){
// Force a trigger refresh when gain changes (issue #233)
ui->controller_iso->setTriggerLevel(ui->triggerLevelValue->value());
});
connect(ui->controller_fg, &functionGenControl::functionGenToUpdate, ui->controller_iso->driver, &genericUsbDriver::setFunctionGen);
connect(ui->bufferDisplay, SIGNAL(modeChange(int)), ui->controller_iso->driver, SLOT(setDeviceMode(int)));
connect(ui->bufferDisplay, &bufferControl::modeChange, this, [this](){
Expand Down Expand Up @@ -405,26 +400,26 @@ MainWindow::MainWindow(QWidget *parent) :

void MainWindow::closeEvent(QCloseEvent *event)
{
writeSettings("ScopeTopRange", ui->controller_iso->display->topRange);
writeSettings("ScopeBotRange", ui->controller_iso->display->botRange);
writeSettings("ScopeTimeWindow", ui->controller_iso->display->window);
writeSettings("ScopeDelay", ui->controller_iso->display->delay);
settings->setValue("ScopeTopRange", ui->controller_iso->display->topRange);
settings->setValue("ScopeBotRange", ui->controller_iso->display->botRange);
settings->setValue("ScopeTimeWindow", ui->controller_iso->display->window);
settings->setValue("ScopeDelay", ui->controller_iso->display->delay);
#ifndef PLATFORM_ANDROID
writeSettings("ScopeOffsetCH1", ui->offsetSpinBox_CH1->value());
writeSettings("ScopeOffsetCH2", ui->offsetSpinBox_CH2->value());
writeSettings("LAOffsetCH1", ui->laOffsetSpinBox_CH1->value());
writeSettings("LAOffsetCH2", ui->laOffsetSpinBox_CH2->value());
writeSettings("WidgetScopeGroup_CH1", ui->scopeGroup_CH1->isChecked());
writeSettings("WidgetScopeGroup_CH2", ui->scopeGroup_CH2->isChecked());
writeSettings("WidgetMultimeterGroup", ui->multimeterGroup->isChecked());
writeSettings("WidgetBusSnifferGroup_CH1", ui->busSnifferGroup_CH1->isChecked());
writeSettings("WidgetBusSnifferGroup_CH2", ui->busSnifferGroup_CH2->isChecked());
writeSettings("WidgetDoubleSample", ui->doubleSampleLabel->isChecked());
writeSettings("HideOscilloscope", ui->actionHide_Widget_Oscilloscope->isChecked());
writeSettings("HideSignalGen", ui->actionHide_Widget_SignalGen->isChecked());
writeSettings("HideMultimeter", ui->actionHide_Widget_Multimeter->isChecked());
writeSettings("HidePowerSupply", ui->actionHide_Widget_PowerSupply->isChecked());
writeSettings("HideLogicAnalyzer", ui->actionHide_Widget_LogicAnalyzer->isChecked());
settings->setValue("ScopeOffsetCH1", ui->offsetSpinBox_CH1->value());
settings->setValue("ScopeOffsetCH2", ui->offsetSpinBox_CH2->value());
settings->setValue("LAOffsetCH1", ui->laOffsetSpinBox_CH1->value());
settings->setValue("LAOffsetCH2", ui->laOffsetSpinBox_CH2->value());
settings->setValue("WidgetScopeGroup_CH1", ui->scopeGroup_CH1->isChecked());
settings->setValue("WidgetScopeGroup_CH2", ui->scopeGroup_CH2->isChecked());
settings->setValue("WidgetMultimeterGroup", ui->multimeterGroup->isChecked());
settings->setValue("WidgetBusSnifferGroup_CH1", ui->busSnifferGroup_CH1->isChecked());
settings->setValue("WidgetBusSnifferGroup_CH2", ui->busSnifferGroup_CH2->isChecked());
settings->setValue("WidgetDoubleSample", ui->doubleSampleLabel->isChecked());
settings->setValue("HideOscilloscope", ui->actionHide_Widget_Oscilloscope->isChecked());
settings->setValue("HideSignalGen", ui->actionHide_Widget_SignalGen->isChecked());
settings->setValue("HideMultimeter", ui->actionHide_Widget_Multimeter->isChecked());
settings->setValue("HidePowerSupply", ui->actionHide_Widget_PowerSupply->isChecked());
settings->setValue("HideLogicAnalyzer", ui->actionHide_Widget_LogicAnalyzer->isChecked());
#endif
QMainWindow::closeEvent(event);
}
Expand Down Expand Up @@ -1486,36 +1481,23 @@ void MainWindow::on_actionEnter_Manually_triggered()
dialog.exec();
}

#ifdef PLATFORM_WINDOWS
#define MAKE_SETTINGS QSettings settings( \
QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/labrador.ini", \
QSettings::IniFormat)
#else
#define MAKE_SETTINGS QSettings settings
#endif

void MainWindow::writeSettings(const QString &key, const QVariant &value){
MAKE_SETTINGS;
settings.setValue(key, value);
}

#define QSETTINGS_DEFAULT_RETURN 42069
void MainWindow::readSettingsFile(){
MAKE_SETTINGS;
int connectionType = settings.value("ConnectionType", QSETTINGS_DEFAULT_RETURN).toInt();
double calibrate_vref_ch1 = settings.value("CalibrateVrefCH1", 1.65).toDouble();
double calibrate_vref_ch2 = settings.value("CalibrateVrefCH2", 1.65).toDouble();
double calibrate_gain_ch1 = settings.value("CalibrateGainCH1", R4/(R3+R4)).toDouble();
double calibrate_gain_ch2 = settings.value("CalibrateGainCH2", R4/(R3+R4)).toDouble();
psu_voltage_calibration_offset = settings.value("CalibratePsu", 0).toDouble();

daq_num_to_average = settings.value("daq_defaultAverage", 1).toInt();
daq_max_file_size = settings.value("daq_defaultFileSize", 2048000000).toULongLong();

double savedTopRange = settings.value("ScopeTopRange", 2.5).toDouble();
double savedBotRange = settings.value("ScopeBotRange", -0.5).toDouble();
double savedTimeWindow = settings.value("ScopeTimeWindow", 0.1).toDouble();
double savedDelay = settings.value("ScopeDelay", 0.0).toDouble();
settings = new QSettings();
int connectionType = settings->value("ConnectionType", QSETTINGS_DEFAULT_RETURN).toInt();
double calibrate_vref_ch1 = settings->value("CalibrateVrefCH1", 1.65).toDouble();
double calibrate_vref_ch2 = settings->value("CalibrateVrefCH2", 1.65).toDouble();
double calibrate_gain_ch1 = settings->value("CalibrateGainCH1", R4/(R3+R4)).toDouble();
double calibrate_gain_ch2 = settings->value("CalibrateGainCH2", R4/(R3+R4)).toDouble();
psu_voltage_calibration_offset = settings->value("CalibratePsu", 0).toDouble();

daq_num_to_average = settings->value("daq_defaultAverage", 1).toInt();
daq_max_file_size = settings->value("daq_defaultFileSize", 2048000000).toULongLong();

double savedTopRange = settings->value("ScopeTopRange", 2.5).toDouble();
double savedBotRange = settings->value("ScopeBotRange", -0.5).toDouble();
double savedTimeWindow = settings->value("ScopeTimeWindow", 0.1).toDouble();
double savedDelay = settings->value("ScopeDelay", 0.0).toDouble();

bool voltageRangeValid = savedTopRange > savedBotRange
&& savedTopRange >= -20.0 && savedTopRange <= 20.0
Expand All @@ -1530,61 +1512,61 @@ void MainWindow::readSettingsFile(){
ui->controller_iso->display->delay = savedDelay;

#ifndef PLATFORM_ANDROID
double savedOffsetCH1 = settings.value("ScopeOffsetCH1", 0.0).toDouble();
double savedOffsetCH2 = settings.value("ScopeOffsetCH2", 0.0).toDouble();
double savedOffsetCH1 = settings->value("ScopeOffsetCH1", 0.0).toDouble();
double savedOffsetCH2 = settings->value("ScopeOffsetCH2", 0.0).toDouble();
if (savedOffsetCH1 >= -20.0 && savedOffsetCH1 <= 20.0)
ui->offsetSpinBox_CH1->setValue(savedOffsetCH1);
if (savedOffsetCH2 >= -20.0 && savedOffsetCH2 <= 20.0)
ui->offsetSpinBox_CH2->setValue(savedOffsetCH2);

double savedLAOffsetCH1 = settings.value("LAOffsetCH1", 0.0).toDouble();
double savedLAOffsetCH2 = settings.value("LAOffsetCH2", 0.0).toDouble();
double savedLAOffsetCH1 = settings->value("LAOffsetCH1", 0.0).toDouble();
double savedLAOffsetCH2 = settings->value("LAOffsetCH2", 0.0).toDouble();
if (savedLAOffsetCH1 >= -20.0 && savedLAOffsetCH1 <= 20.0)
ui->laOffsetSpinBox_CH1->setValue(savedLAOffsetCH1);
if (savedLAOffsetCH2 >= -20.0 && savedLAOffsetCH2 <= 20.0)
ui->laOffsetSpinBox_CH2->setValue(savedLAOffsetCH2);

if (settings.value("ShowRangeDialog").toBool())
if (settings->value("ShowRangeDialog").toBool())
{
qDebug() << "ShowRangeDialog setting true";
ui->actionShow_Range_Dialog_on_Main_Page->setChecked(true);
on_actionShow_Range_Dialog_on_Main_Page_triggered(true);
}

if(settings.value("DarkModeEnabled").toBool())
if(settings->value("DarkModeEnabled").toBool())
{
ui->actionDark_Mode->setChecked(true);
setDarkMode(true);
}

ui->scopeGroup_CH1->setChecked(settings.value("WidgetScopeGroup_CH1", true).toBool());
ui->scopeGroup_CH2->setChecked(settings.value("WidgetScopeGroup_CH2", false).toBool());
ui->multimeterGroup->setChecked(settings.value("WidgetMultimeterGroup", false).toBool());
ui->busSnifferGroup_CH1->setChecked(settings.value("WidgetBusSnifferGroup_CH1", false).toBool());
ui->busSnifferGroup_CH2->setChecked(settings.value("WidgetBusSnifferGroup_CH2", false).toBool());
ui->doubleSampleLabel->setChecked(settings.value("WidgetDoubleSample", false).toBool());
ui->scopeGroup_CH1->setChecked(settings->value("WidgetScopeGroup_CH1", true).toBool());
ui->scopeGroup_CH2->setChecked(settings->value("WidgetScopeGroup_CH2", false).toBool());
ui->multimeterGroup->setChecked(settings->value("WidgetMultimeterGroup", false).toBool());
ui->busSnifferGroup_CH1->setChecked(settings->value("WidgetBusSnifferGroup_CH1", false).toBool());
ui->busSnifferGroup_CH2->setChecked(settings->value("WidgetBusSnifferGroup_CH2", false).toBool());
ui->doubleSampleLabel->setChecked(settings->value("WidgetDoubleSample", false).toBool());

if (settings.value("HideOscilloscope").toBool())
if (settings->value("HideOscilloscope").toBool())
{
ui->actionHide_Widget_Oscilloscope->setChecked(true);
on_actionHide_Widget_Oscilloscope_triggered(true);
}
if (settings.value("HideSignalGen").toBool())
if (settings->value("HideSignalGen").toBool())
{
ui->actionHide_Widget_SignalGen->setChecked(true);
on_actionHide_Widget_SignalGen_triggered(true);
}
if (settings.value("HideMultimeter").toBool())
if (settings->value("HideMultimeter").toBool())
{
ui->actionHide_Widget_Multimeter->setChecked(true);
on_actionHide_Widget_Multimeter_triggered(true);
}
if (settings.value("HidePowerSupply").toBool())
if (settings->value("HidePowerSupply").toBool())
{
ui->actionHide_Widget_PowerSupply->setChecked(true);
on_actionHide_Widget_PowerSupply_triggered(true);
}
if (settings.value("HideLogicAnalyzer").toBool())
if (settings->value("HideLogicAnalyzer").toBool())
{
ui->actionHide_Widget_LogicAnalyzer->setChecked(true);
on_actionHide_Widget_LogicAnalyzer_triggered(true);
Expand Down Expand Up @@ -1637,7 +1619,13 @@ void MainWindow::reinitUsb(void){
ui->controller_iso->driver->saveState(&reinitdeviceMode, &reinitScopeGain, &reinitCurrentPsuVoltage, &reinitDigitalPinState);

#ifdef PLATFORM_WINDOWS
reinitUsbStage2();
if(!(ui->controller_iso->driver->connected)){
reinitUsbStage2();
} else{
connect(ui->controller_iso->driver, SIGNAL(shutdownComplete()),
this, SLOT(reinitUsbStage2()), Qt::UniqueConnection);
ui->controller_iso->driver->shutdownProcedure();
}
#else
if(!(ui->controller_iso->driver->connected)){
reinitUsbStage2();
Expand Down Expand Up @@ -1668,10 +1656,6 @@ void MainWindow::reinitUsbStage2(void){
connect(ui->debugButton3, SIGNAL(clicked()), ui->controller_iso->driver, SLOT(bootloaderJump()));
connect(ui->psuSlider, SIGNAL(voltageChanged(double)), ui->controller_iso->driver, SLOT(setPsu(double)));
connect(ui->controller_iso, SIGNAL(setGain(double)), ui->controller_iso->driver, SLOT(setGain(double)));
connect(ui->controller_iso, &isoDriver::setGain, this, [this](){
// Force a trigger refresh when gain changes (issue #233)
ui->controller_iso->setTriggerLevel(ui->triggerLevelValue->value());
});
connect(ui->controller_fg, &functionGenControl::functionGenToUpdate, ui->controller_iso->driver, &genericUsbDriver::setFunctionGen);
connect(ui->bufferDisplay, SIGNAL(modeChange(int)), ui->controller_iso->driver, SLOT(setDeviceMode(int)));
connect(ui->bufferDisplay, &bufferControl::modeChange, this, [this](){
Expand Down Expand Up @@ -2078,10 +2062,10 @@ void MainWindow::on_actionCalibrate_triggered()
ui->controller_iso->internalBuffer750->m_frontendGain = R4/(R3+R4);
ui->controller_iso->internalBuffer375_CH2->m_frontendGain = R4/(R3+R4);

writeSettings("CalibrateVrefCH1", 1.65);
writeSettings("CalibrateVrefCH2", 1.65);
writeSettings("CalibrateGainCH1", R4/(R3+R4));
writeSettings("CalibrateGainCH2", R4/(R3+R4));
settings->setValue("CalibrateVrefCH1", 1.65);
settings->setValue("CalibrateVrefCH2", 1.65);
settings->setValue("CalibrateGainCH1", R4/(R3+R4));
settings->setValue("CalibrateGainCH2", R4/(R3+R4));

qDebug() << "Calibration routine beginning!";
calibrationMessages = new QMessageBox();
Expand Down Expand Up @@ -2120,8 +2104,8 @@ void MainWindow::calibrateStage2(){
ui->controller_iso->internalBuffer750->m_voltage_ref = 3.3 - vref_CH1;
ui->controller_iso->internalBuffer375_CH2->m_voltage_ref = 3.3 - vref_CH2;

writeSettings("CalibrateVrefCH1", vref_CH1);
writeSettings("CalibrateVrefCH2", vref_CH2);
settings->setValue("CalibrateVrefCH1", vref_CH1);
settings->setValue("CalibrateVrefCH2", vref_CH2);

calibrationMessages = new QMessageBox();
calibrationMessages->setAttribute(Qt::WA_DeleteOnClose);
Expand Down Expand Up @@ -2165,8 +2149,8 @@ void MainWindow::calibrateStage3(){
ui->controller_iso->internalBuffer375_CH1->m_frontendGain = (vref_CH1 - vMeasured_CH1)*(ui->controller_iso->frontendGain_CH1)/vref_CH1;
ui->controller_iso->internalBuffer750->m_frontendGain = (vref_CH1 - vMeasured_CH1)*(ui->controller_iso->frontendGain_CH1)/vref_CH1;
ui->controller_iso->internalBuffer375_CH2->m_frontendGain = (vref_CH2 - vMeasured_CH2)*(ui->controller_iso->frontendGain_CH2)/vref_CH2;
writeSettings("CalibrateGainCH1", ui->controller_iso->frontendGain_CH1);
writeSettings("CalibrateGainCH2", ui->controller_iso->frontendGain_CH2);
settings->setValue("CalibrateGainCH1", ui->controller_iso->frontendGain_CH1);
settings->setValue("CalibrateGainCH2", ui->controller_iso->frontendGain_CH2);
calibrationMessages = new QMessageBox();
calibrationMessages->setAttribute(Qt::WA_DeleteOnClose);
connect(ui->controller_iso->driver, SIGNAL(killMe()), calibrationMessages, SLOT(reject()));
Expand Down Expand Up @@ -2235,21 +2219,21 @@ void MainWindow::multimeterStateChange(bool enabled){
void MainWindow::on_actionLo_bw_triggered()
{
expected_variant = 1;
writeSettings("ConnectionType", 0);
settings->setValue("ConnectionType", 0);
if(ui->controller_iso->driver->connected) reinitUsb();
}

void MainWindow::on_actionSingle_ep_msync_triggered()
{
expected_variant = 2;
writeSettings("ConnectionType", 1);
settings->setValue("ConnectionType", 1);
if(ui->controller_iso->driver->connected) reinitUsb();
}

void MainWindow::on_actionSingle_ep_async_triggered()
{
expected_variant = 2;
writeSettings("ConnectionType", 2);
settings->setValue("ConnectionType", 2);
if(ui->controller_iso->driver->connected) reinitUsb();
}

Expand Down Expand Up @@ -2503,8 +2487,8 @@ void MainWindow::daq_updatedMaxFileSize(qulonglong newVal){

void MainWindow::daq_saveButtonPressed(){
qDebug() << "MainWindow::daq_saveButtonPressed";
writeSettings("daq_defaultAverage", daq_num_to_average);
writeSettings("daq_defaultFileSize", daq_max_file_size);
settings->setValue("daq_defaultAverage", daq_num_to_average);
settings->setValue("daq_defaultFileSize", daq_max_file_size);
}

void MainWindow::on_actionAbout_triggered()
Expand Down Expand Up @@ -2688,7 +2672,7 @@ void MainWindow::calibrate_psu_stage3()
}

psu_voltage_calibration_offset = ((PSU5 - 5) + (PSU10 - 10)) / 2.0;
writeSettings("CalibratePsu", psu_voltage_calibration_offset);
settings->setValue("CalibratePsu", psu_voltage_calibration_offset);
ui->controller_iso->driver->psu_offset = psu_voltage_calibration_offset;

calibrationMessages = new QMessageBox();
Expand Down Expand Up @@ -2730,7 +2714,7 @@ void MainWindow::on_actionShow_Range_Dialog_on_Main_Page_triggered(bool checked)
connect(ui->controller_iso, SIGNAL(delayUpdated(double)), scopeRangeSwitch, SLOT(delayChanged(double)));
}
qDebug() << "on_actionShow_Range_Dialog_on_Main_Page_triggered" << checked;
writeSettings("ShowRangeDialog", checked);
settings->setValue("ShowRangeDialog", checked);
scopeRangeSwitch->setVisible(checked);
#endif

Expand Down Expand Up @@ -2884,7 +2868,8 @@ void MainWindow::setDarkMode(bool dark)
qApp->setPalette(defaultPalette);
}

writeSettings("DarkModeEnabled", dark);
QSettings settings;
settings.setValue("DarkModeEnabled", dark);
}


Expand Down
2 changes: 1 addition & 1 deletion Desktop_Interface/mainwindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,7 @@ private slots:
int defaultNumberPrecision = 6;
QString defaultNumberFormat;

QSettings *settings;
bool calibrationCanceled = false;

QPalette defaultPalette;
Expand All @@ -266,7 +267,6 @@ private slots:
void menuSetup();
void initShortcuts();
void readSettingsFile();
void writeSettings(const QString &key, const QVariant &value);
void setDarkMode(bool dark);
std::vector<uint8_t> uartEncode(const QString& line, UartParity parity);
std::vector<uint8_t> resampler(std::vector<uint8_t>, int input_baudRate, int output_baudRate);
Expand Down
Loading
Loading