Merge pull request #192 from bobbycar-graz/buzzer-newsettings

Moved buzzer settings into newSettings
This commit is contained in:
2021-12-29 03:46:18 +01:00
committed by GitHub
5 changed files with 46 additions and 35 deletions

View File

@ -21,11 +21,31 @@ struct AutoConnectBmsAccessor : public RefAccessorSaveSettings<bool> { bool &get
#endif
// Buzzer
struct ReverseBeepAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.buzzer.reverseBeep; } };
struct ReverseBeepFreq0Accessor : public RefAccessorSaveSettings<uint8_t> { uint8_t &getRef() const override { return settings.buzzer.reverseBeepFreq0; } };
struct ReverseBeepFreq1Accessor : public RefAccessorSaveSettings<uint8_t> { uint8_t &getRef() const override { return settings.buzzer.reverseBeepFreq1; } };
struct ReverseBeepDuration0Accessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.buzzer.reverseBeepDuration0; } };
struct ReverseBeepDuration1Accessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.buzzer.reverseBeepDuration1; } };
struct ReverseBeepAccessor : public virtual espgui::AccessorInterface<bool>
{
bool getValue() const override { return configs.reverseBeep.value; }
void setValue(bool value) override { configs.write_config(configs.reverseBeep, value); }
};
struct ReverseBeepFreq0Accessor : public virtual espgui::AccessorInterface<uint8_t>
{
uint8_t getValue() const override { return configs.reverseBeepFreq0.value; }
void setValue(uint8_t value) override { configs.write_config(configs.reverseBeepFreq0, value); }
};
struct ReverseBeepFreq1Accessor : public virtual espgui::AccessorInterface<uint8_t>
{
uint8_t getValue() const override { return configs.reverseBeepFreq1.value; }
void setValue(uint8_t value) override { configs.write_config(configs.reverseBeepFreq1, value); }
};
struct ReverseBeepDuration0Accessor : public virtual espgui::AccessorInterface<int16_t>
{
int16_t getValue() const override { return configs.reverseBeepDuration0.value; }
void setValue(int16_t value) override { configs.write_config(configs.reverseBeepDuration0, value); }
};
struct ReverseBeepDuration1Accessor : public virtual espgui::AccessorInterface<int16_t>
{
int16_t getValue() const override { return configs.reverseBeepDuration1.value; }
void setValue(int16_t value) override { configs.write_config(configs.reverseBeepDuration1, value); }
};
// Limits
struct IMotMaxAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.limits.iMotMax; } };

View File

@ -78,10 +78,16 @@ public:
ConfigWrapper<uint8_t> wifiApChannel {1, DoReset, {}, "wifiApChannel" };
ConfigWrapper<wifi_auth_mode_t> wifiApAuthmode{WIFI_AUTH_WPA2_PSK, DoReset, {}, "wifiApAuthmode" };
ConfigWrapper<bool> canBusResetOnError {false, DoReset, {}, "canBusRstErr" };
ConfigWrapper<bool> canBusResetOnError {false, DoReset, {}, "canBusRstErr" };
ConfigWrapper<std::string> bluetoothName {defaultHostname, DoReset, StringMinMaxSize<4, 32>, "bluetoothName" };
ConfigWrapper<bool> reverseBeep {false, DoReset, {}, "reverseBeep" };
ConfigWrapper<uint8_t> reverseBeepFreq0 {3, DoReset, {}, "revBeepFreq0" };
ConfigWrapper<uint8_t> reverseBeepFreq1 {0, DoReset, {}, "revBeepFreq1" };
ConfigWrapper<int16_t> reverseBeepDuration0{500, DoReset, {}, "revBeepDur0" };
ConfigWrapper<int16_t> reverseBeepDuration1{500, DoReset, {}, "revBeepDur1" };
#define NEW_SETTINGS(x) \
x(baseMacAddressOverride) \
x(hostname) \
@ -198,7 +204,13 @@ public:
\
x(canBusResetOnError) \
\
//x(bluetoothName)
x(bluetoothName) \
\
x(reverseBeep) \
x(reverseBeepFreq0) \
x(reverseBeepFreq1) \
x(reverseBeepDuration0) \
//x(reverseBeepDuration1)
template<typename T>
void callForEveryConfig(T &&callback)
@ -206,7 +218,7 @@ public:
#define HELPER(x) callback(x);
NEW_SETTINGS(HELPER)
#undef HELPER
callback(bluetoothName);
callback(reverseBeepDuration1);
}
auto getAllConfigParams()
@ -215,7 +227,7 @@ public:
#define HELPER(x) std::ref<ConfigWrapperInterface>(x),
NEW_SETTINGS(HELPER)
#undef HELPER
std::ref<ConfigWrapperInterface>(bluetoothName)
std::ref<ConfigWrapperInterface>(reverseBeepDuration1)
);
}
};

View File

@ -26,14 +26,6 @@ constexpr Settings::Limits defaultLimits {
.phaseAdvMax = DEFAULT_FIELDADVMAX
};
constexpr Settings::Buzzer defaultBuzzer {
.reverseBeep = false,
.reverseBeepFreq0 = 3,
.reverseBeepFreq1 = 0,
.reverseBeepDuration0 = 500,
.reverseBeepDuration1 = 500,
};
constexpr Settings::Limits kidsLimits {
.iMotMax = 5,
.iDcMax = 7,
@ -314,7 +306,6 @@ constexpr Settings defaultSettings {
#ifdef FEATURE_BMS
.autoConnectBms = false,
#endif
.buzzer = defaultBuzzer,
.limits = defaultLimits,
#ifdef FEATURE_BLUETOOTH
.bluetoothSettings = defaultBluetoothSettings,

View File

@ -31,13 +31,6 @@ struct Settings
#ifdef FEATURE_BMS
bool autoConnectBms;
#endif
struct Buzzer {
bool reverseBeep;
uint8_t reverseBeepFreq0;
uint8_t reverseBeepFreq1;
int16_t reverseBeepDuration0;
int16_t reverseBeepDuration1;
} buzzer;
struct Limits {
int16_t iMotMax; // [A] Maximum motor current limit
@ -243,12 +236,6 @@ void Settings::executeForEveryCommonSetting(T &&callable)
callable("autoConnectBms", autoConnectBms);
#endif
callable("reverseBeep", buzzer.reverseBeep);
callable("revBeepFreq0", buzzer.reverseBeepFreq0);
callable("revBeepFreq1", buzzer.reverseBeepFreq1);
callable("revBeepDur0", buzzer.reverseBeepDuration0);
callable("revBeepDur1", buzzer.reverseBeepDuration1);
#ifdef FEATURE_BLUETOOTH
callable("autoBluetoothMo", bluetoothSettings.autoBluetoothMode);
#endif

View File

@ -2,6 +2,7 @@
// local includes
#include "globals.h"
#include "newsettings.h"
using namespace std::chrono_literals;
@ -108,7 +109,7 @@ void fixCommonParams()
motor.phaseAdvMax = settings.limits.phaseAdvMax;
}
if (settings.buzzer.reverseBeep)
if (configs.reverseBeep.value)
{
const auto x = motors();
const auto shouldBeep = std::all_of(std::begin(x), std::end(x), [](const bobbycar::protocol::serial::MotorState &motor){ return motor.pwm < 0; });
@ -120,7 +121,7 @@ void fixCommonParams()
reverseBeepToggle = true;
lastReverseBeepToggle = espchrono::millis_clock::now();
for (auto &controller : controllers)
controller.command.buzzer = {.freq=settings.buzzer.reverseBeepFreq0, .pattern=0};
controller.command.buzzer = {.freq=configs.reverseBeepFreq0.value, .pattern=0};
}
else
for (auto &controller : controllers)
@ -128,12 +129,12 @@ void fixCommonParams()
currentlyReverseBeeping = shouldBeep;
}
else if (shouldBeep && espchrono::millis_clock::now() - lastReverseBeepToggle >= std::chrono::milliseconds{reverseBeepToggle?settings.buzzer.reverseBeepDuration0:settings.buzzer.reverseBeepDuration1})
else if (shouldBeep && espchrono::millis_clock::now() - lastReverseBeepToggle >= std::chrono::milliseconds{reverseBeepToggle?configs.reverseBeepDuration0.value:configs.reverseBeepDuration1.value})
{
reverseBeepToggle = !reverseBeepToggle;
for (auto &controller : controllers)
controller.command.buzzer = {.freq=uint8_t(reverseBeepToggle?settings.buzzer.reverseBeepFreq0:settings.buzzer.reverseBeepFreq1), .pattern=0};
controller.command.buzzer = {.freq=uint8_t(reverseBeepToggle?configs.reverseBeepFreq0.value:configs.reverseBeepFreq1.value), .pattern=0};
lastReverseBeepToggle = espchrono::millis_clock::now();
}