Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
13 changes: 13 additions & 0 deletions firmware/src/src/basetrackersettings.h
Original file line number Diff line number Diff line change
Expand Up @@ -773,6 +773,16 @@ class BaseTrackerSettings {
inline const bool& getRstOnTlt() {return rstontlt;}
void setRstOnTlt(bool val=false) { rstontlt = val; }

// Delay to Reset in Seconds
inline const float& getRstDelay() {return rstdelay;}
bool setRstDelay(float val=0) {
if(val >= 0 && val <= 1) {
rstdelay = val;
return true;
}
return false;
}

// Reset on a double tap
inline const bool& getRstOnDbltTap() {return rstondblttap;}
void setRstOnDbltTap(bool val=false) { rstondblttap = val; }
Expand Down Expand Up @@ -1056,6 +1066,7 @@ class BaseTrackerSettings {
json["rstonwave"] = rstonwave;
json["butlngps"] = butlngps;
json["rstontlt"] = rstontlt;
json["rstdelay"] = rstdelay;
json["rstondblttap"] = rstondblttap;
json["rstondbltapthres"] = rstondbltapthres;
json["rstondbltapmin"] = rstondbltapmin;
Expand Down Expand Up @@ -1144,6 +1155,7 @@ class BaseTrackerSettings {
v = json["rstonwave"]; if(!v.isNull()) {setRstOnWave(v);}
v = json["butlngps"]; if(!v.isNull()) {setButLngPs(v);}
v = json["rstontlt"]; if(!v.isNull()) {setRstOnTlt(v);}
v = json["rstdelay"]; if(!v.isNull()) {setRstDelay(v);}
v = json["rstondblttap"]; if(!v.isNull()) {setRstOnDbltTap(v);}
v = json["rstondbltapthres"]; if(!v.isNull()) {setRstOnDblTapThres(v);}
v = json["rstondbltapmin"]; if(!v.isNull()) {setRstOnDblTapMin(v);}
Expand Down Expand Up @@ -1556,6 +1568,7 @@ class BaseTrackerSettings {
bool rstonwave = false; // Reset on Proximity Sense
bool butlngps = false; // Long Press on the Button to Enable/Disable Tilt Roll and Pan
bool rstontlt = false; // Reset Center on a Head Tilt
float rstdelay = 0; // Delay to Reset in Seconds
bool rstondblttap = false; // Reset on a double tap
float rstondbltapthres = 80; // Double Tap Threshold
float rstondbltapmin = 100; // Double Tap Min Time
Expand Down
14 changes: 12 additions & 2 deletions firmware/src/src/io.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
#include "soc_flash.h"
#include "trackersettings.h"

void rstTimerFunc(struct k_timer *timer_id);
K_TIMER_DEFINE(rstCenterTimer, rstTimerFunc, NULL);

#if defined(CONFIG_SOC_SERIES_NRF52X)
// TODO: Find how to do this in new version of Zephyr
Expand Down Expand Up @@ -181,8 +183,16 @@ bool wasButtonLongPressed()
return true;
}

// Reset Center
void pressButton() { k_sem_give(&button_sem); }
// Called after the reset center delay.
void rstTimerFunc(struct k_timer *timer_id) {
k_sem_give(&button_sem);
}

// Call reset center after delay
void pressButton() {
/* start a periodic timer that expires once every second */
k_timer_start(&rstCenterTimer, K_MSEC(static_cast<uint16_t>(trkset.getRstDelay()*1000.0f)), K_NO_WAIT);
}

void longPressButton() { k_sem_give(&lngbutton_sem); }

Expand Down
15 changes: 15 additions & 0 deletions gui/src/basetrackersettings.h
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ class BaseTrackerSettings : public QObject
_setting["rstonwave"] = false;
_setting["butlngps"] = false;
_setting["rstontlt"] = false;
_setting["rstdelay"] = 0;
_setting["rstondblttap"] = false;
_setting["rstondbltapthres"] = 80;
_setting["rstondbltapmin"] = 100;
Expand Down Expand Up @@ -262,6 +263,7 @@ class BaseTrackerSettings : public QObject
descriptions["rstonwave"] = tr("Reset on Proximity Sense");
descriptions["butlngps"] = tr("Long Press on the Button to Enable/Disable Tilt Roll and Pan");
descriptions["rstontlt"] = tr("Reset Center on a Head Tilt");
descriptions["rstdelay"] = tr("Delay to Reset in Seconds");
descriptions["rstondblttap"] = tr("Reset on a double tap");
descriptions["rstondbltapthres"] = tr("Double Tap Threshold");
descriptions["rstondbltapmin"] = tr("Double Tap Min Time");
Expand Down Expand Up @@ -1164,6 +1166,19 @@ class BaseTrackerSettings : public QObject
bool getRstOnTlt() {return _setting["rstontlt"].toBool();}
void setRstOnTlt(bool val=false) { _setting["rstontlt"] = val; }

// Delay to Reset in Seconds
float getRstDelay() {
return _setting["rstdelay"].toFloat();
}
bool setRstDelay(float val=0) {
if(val >= 0 && val <= 1) {
_setting["rstdelay"] = QString::number(val,'g',4);
return true;
}
return false;
}


// Reset on a double tap
bool getRstOnDbltTap() {return _setting["rstondblttap"].toBool();}
void setRstOnDbltTap(bool val=false) { _setting["rstondblttap"] = val; }
Expand Down
7 changes: 7 additions & 0 deletions gui/src/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ MainWindow::MainWindow(QWidget *parent)
connect(ui->spnRstDblTapMax, &QSpinBox::valueChanged, this, &MainWindow::updateFromUI);
connect(ui->spnRstDblTapMin, &QSpinBox::valueChanged, this, &MainWindow::updateFromUI);
connect(ui->spnRstDblTapThres, &QSpinBox::valueChanged, this, &MainWindow::updateFromUI);
connect(ui->spnResetDelay, &QDoubleSpinBox::valueChanged, this, &MainWindow::updateFromUI);

// Gain Sliders
connect(ui->til_gain, &GainSlider::valueChanged, this, &MainWindow::updateFromUI);
Expand Down Expand Up @@ -574,6 +575,9 @@ void MainWindow::updateToUI()
ui->spnA3Gain->setValue(trkset.getAn3Gain());
ui->spnA3Off->setValue(trkset.getAn3Off());

// Reset Delay
ui->spnResetDelay->setValue(trkset.getRstDelay());

ui->spnSBUSRate->setValue(trkset.getSbusTxRate());
ui->spnCRSFRate->setValue(trkset.getCrsfTxRate());

Expand Down Expand Up @@ -792,6 +796,9 @@ void MainWindow::updateFromUI()
ui->spnRstDblTapThres->setEnabled(false);
}

// Reset Delay
trkset.setRstDelay(ui->spnResetDelay->value());

trkset.setSbOutInv(ui->chkSbusOutInv->isChecked());
trkset.setSbusTxRate(ui->spnSBUSRate->value());
trkset.setCrsfTxRate(ui->spnCRSFRate->value());
Expand Down
Loading
Loading