Moved buzzer settings into newSettings

This commit is contained in:
2021-12-29 03:32:01 +01:00
parent 309e829f1f
commit eedecad2a0
5 changed files with 46 additions and 35 deletions

View File

@ -21,11 +21,31 @@ struct AutoConnectBmsAccessor : public RefAccessorSaveSettings<bool> { bool &get
#endif #endif
// Buzzer // Buzzer
struct ReverseBeepAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.buzzer.reverseBeep; } }; struct ReverseBeepAccessor : public virtual espgui::AccessorInterface<bool>
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; } }; bool getValue() const override { return configs.reverseBeep.value; }
struct ReverseBeepDuration0Accessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.buzzer.reverseBeepDuration0; } }; void setValue(bool value) override { configs.write_config(configs.reverseBeep, value); }
struct ReverseBeepDuration1Accessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.buzzer.reverseBeepDuration1; } }; };
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 // Limits
struct IMotMaxAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.limits.iMotMax; } }; 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<uint8_t> wifiApChannel {1, DoReset, {}, "wifiApChannel" };
ConfigWrapper<wifi_auth_mode_t> wifiApAuthmode{WIFI_AUTH_WPA2_PSK, DoReset, {}, "wifiApAuthmode" }; 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<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) \ #define NEW_SETTINGS(x) \
x(baseMacAddressOverride) \ x(baseMacAddressOverride) \
x(hostname) \ x(hostname) \
@ -198,7 +204,13 @@ public:
\ \
x(canBusResetOnError) \ x(canBusResetOnError) \
\ \
//x(bluetoothName) x(bluetoothName) \
\
x(reverseBeep) \
x(reverseBeepFreq0) \
x(reverseBeepFreq1) \
x(reverseBeepDuration0) \
//x(reverseBeepDuration1)
template<typename T> template<typename T>
void callForEveryConfig(T &&callback) void callForEveryConfig(T &&callback)
@ -206,7 +218,7 @@ public:
#define HELPER(x) callback(x); #define HELPER(x) callback(x);
NEW_SETTINGS(HELPER) NEW_SETTINGS(HELPER)
#undef HELPER #undef HELPER
callback(bluetoothName); callback(reverseBeepDuration1);
} }
auto getAllConfigParams() auto getAllConfigParams()
@ -215,7 +227,7 @@ public:
#define HELPER(x) std::ref<ConfigWrapperInterface>(x), #define HELPER(x) std::ref<ConfigWrapperInterface>(x),
NEW_SETTINGS(HELPER) NEW_SETTINGS(HELPER)
#undef HELPER #undef HELPER
std::ref<ConfigWrapperInterface>(bluetoothName) std::ref<ConfigWrapperInterface>(reverseBeepDuration1)
); );
} }
}; };

View File

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

View File

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

View File

@ -2,6 +2,7 @@
// local includes // local includes
#include "globals.h" #include "globals.h"
#include "newsettings.h"
using namespace std::chrono_literals; using namespace std::chrono_literals;
@ -108,7 +109,7 @@ void fixCommonParams()
motor.phaseAdvMax = settings.limits.phaseAdvMax; motor.phaseAdvMax = settings.limits.phaseAdvMax;
} }
if (settings.buzzer.reverseBeep) if (configs.reverseBeep.value)
{ {
const auto x = motors(); 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; }); 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; reverseBeepToggle = true;
lastReverseBeepToggle = espchrono::millis_clock::now(); lastReverseBeepToggle = espchrono::millis_clock::now();
for (auto &controller : controllers) for (auto &controller : controllers)
controller.command.buzzer = {.freq=settings.buzzer.reverseBeepFreq0, .pattern=0}; controller.command.buzzer = {.freq=configs.reverseBeepFreq0.value, .pattern=0};
} }
else else
for (auto &controller : controllers) for (auto &controller : controllers)
@ -128,12 +129,12 @@ void fixCommonParams()
currentlyReverseBeeping = shouldBeep; 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; reverseBeepToggle = !reverseBeepToggle;
for (auto &controller : controllers) 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(); lastReverseBeepToggle = espchrono::millis_clock::now();
} }