Files
bobbycar-boardcomputer-firm…/main/presets.h
2021-10-13 09:50:17 +02:00

328 lines
8.6 KiB
C++

#pragma once
// esp-idf includes
#ifdef FEATURE_NTP
#include <lwip/apps/snmp.h>
#include <esp_sntp.h>
#endif
// 3rdparty lib includes
#include <espchrono.h>
// local includes
#include "settings.h"
#include "stringsettings.h"
#include "ledstripdefines.h"
using namespace std::chrono_literals;
namespace presets {
constexpr Settings::Limits defaultLimits {
.iMotMax = DEFAULT_IMOTMAX,
.iDcMax = DEFAULT_IDCMAX,
.nMotMax = DEFAULT_NMOTMAX,
.fieldWeakMax = DEFAULT_FIELDWEAKMAX,
.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,
.nMotMax = 500,
.fieldWeakMax = 2,
.phaseAdvMax = 20
};
constexpr Settings::TimeSettings defaultTimeSettings {
.timezoneOffset = 60min,
.daylightSavingMode = espchrono::DayLightSavingMode::EuropeanSummerTime,
#ifdef FEATURE_NTP
.timeServerEnabled = true,
.timeSyncMode = SNTP_SYNC_MODE_IMMED,
.timeSyncInterval = espchrono::milliseconds32{CONFIG_LWIP_SNTP_UPDATE_DELAY},
#endif
};
constexpr Settings::ControllerHardware defaultControllerHardware {
.enableFrontLeft = true,
.enableFrontRight = true,
.enableBackLeft = true,
.enableBackRight = true,
.invertFrontLeft = DEFAULT_INVERTFRONTLEFT,
.invertFrontRight = DEFAULT_INVERTFRONTRIGHT,
.invertBackLeft = DEFAULT_INVERTBACKLEFT,
.invertBackRight = DEFAULT_INVERTBACKRIGHT,
.wheelDiameter = DEFAULT_WHEELDIAMETER,
.numMagnetPoles = 15,
.swapFrontBack = false,
#ifdef FEATURE_CAN
.sendFrontCanCmd = true,
.sendBackCanCmd = true,
.canTransmitTimeout = 200,
.canReceiveTimeout = 0,
#endif
};
constexpr Settings::ControllerHardware mosfetsOffControllerHardware {
.enableFrontLeft = false,
.enableFrontRight = false,
.enableBackLeft = false,
.enableBackRight = false,
.invertFrontLeft = DEFAULT_INVERTFRONTLEFT,
.invertFrontRight = DEFAULT_INVERTFRONTRIGHT,
.invertBackLeft = DEFAULT_INVERTBACKLEFT,
.invertBackRight = DEFAULT_INVERTBACKRIGHT,
.wheelDiameter = 165,
.numMagnetPoles = 15,
.swapFrontBack = false,
#ifdef FEATURE_CAN
.sendFrontCanCmd = true,
.sendBackCanCmd = true,
.canTransmitTimeout = 200,
.canReceiveTimeout = 0,
#endif
};
constexpr Settings::WifiSettings defaultWifiSettings {
.wifiEnabled = true
};
#ifdef FEATURE_BLUETOOTH
constexpr Settings::BluetoothSettings defaultBluetoothSettings {
.autoBluetoothMode = BluetoothMode::Master
};
#endif
#ifdef FEATURE_BLE
constexpr Settings::BleSettings defaultBleSettings {
.bleEnabled = true
};
#endif
constexpr Settings::ControllerHardware spinnerControllerHardware {
.enableFrontLeft = true,
.enableFrontRight = true,
.enableBackLeft = true,
.enableBackRight = true,
.invertFrontLeft = DEFAULT_INVERTFRONTLEFT,
.invertFrontRight = !DEFAULT_INVERTFRONTRIGHT,
.invertBackLeft = DEFAULT_INVERTBACKLEFT,
.invertBackRight = !DEFAULT_INVERTBACKRIGHT,
.wheelDiameter = 165,
.numMagnetPoles = 15,
.swapFrontBack = false,
#ifdef FEATURE_CAN
.sendFrontCanCmd = true,
.sendBackCanCmd = true,
.canTransmitTimeout = 200,
.canReceiveTimeout = 0,
#endif
};
constexpr Settings::BoardcomputerHardware::TimersSettings defaultTimersSettings {
.potiReadRate = 50,
.modeUpdateRate = 50,
.statsUpdateRate = 50,
.displayUpdateRate = 50,
.displayRedrawRate = 50,
#ifdef FEATURE_CAN
.canReceiveRate = 100,
#endif
#ifdef FEATURE_CLOUD
.cloudCollectRate = 100,
.cloudSendRate = 1,
#endif
};
constexpr Settings::BoardcomputerHardware defaultBoardcomputerHardware {
.sampleCount = 50,
.gasMin = DEFAULT_GASMIN,
.gasMax = DEFAULT_GASMAX,
.bremsMin = DEFAULT_BREMSMIN,
.bremsMax = DEFAULT_BREMSMAX,
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) || defined(FEATURE_DPAD_5WIRESW) || defined(FEATURE_DPAD_5WIRESW_2OUT) || defined (FEATURE_DPAD_6WIRESW)
.dpadDebounce = 25,
#endif
#ifdef FEATURE_GAMETRAK
.gametrakXMin = DEFAULT_GAMETRAKXMIN,
.gametrakXMax = DEFAULT_GAMETRAKXMAX,
.gametrakYMin = DEFAULT_GAMETRAKYMIN,
.gametrakYMax = DEFAULT_GAMETRAKYMAX,
.gametrakDistMin = DEFAULT_GAMETRAKDISTMIN,
.gametrakDistMax = DEFAULT_GAMETRAKDISTMAX,
#endif
.timersSettings = defaultTimersSettings
};
#ifdef FEATURE_CLOUD
constexpr Settings::CloudSettings defaultCloudSettings {
.cloudEnabled = false,
.cloudTransmitTimeout = 10
};
#endif
constexpr Settings::DefaultMode defaultDefaultMode {
.modelMode = UnifiedModelMode::FocTorque,
.squareGas = true,
.squareBrems = true,
.enableSmoothingUp = true,
.enableSmoothingDown = true,
.enableFieldWeakSmoothingUp = false,
.enableFieldWeakSmoothingDown = false,
.smoothing = 20,
.frontPercentage = 100,
.backPercentage = 100,
.add_schwelle = 750,
.gas1_wert = 1250,
.gas2_wert = 1250,
.brems1_wert = 250,
.brems2_wert = 750,
.fwSmoothLowerLimit = 800
};
constexpr Settings::DefaultMode sinusoidalDefaultMode {
.modelMode = UnifiedModelMode::Sinusoidal,
.squareGas = true,
.squareBrems = true,
.enableSmoothingUp = true,
.enableSmoothingDown = true,
.enableFieldWeakSmoothingUp = false,
.enableFieldWeakSmoothingDown = false,
.smoothing = 20,
.frontPercentage = 100,
.backPercentage = 100,
.add_schwelle = 500,
.gas1_wert = 1250,
.gas2_wert = 1250,
.brems1_wert = 150,
.brems2_wert = 1000,
.fwSmoothLowerLimit = 800
};
constexpr Settings::TempomatMode defaultTempomatMode {
.modelMode = UnifiedModelMode::FocSpeed
};
constexpr Settings::LarsmMode defaultLarsmMode {
.modelMode = UnifiedModelMode::Commutation,
.mode = LarsmModeMode::Mode4,
.iterations = 100
};
#ifdef FEATURE_LEDSTRIP
constexpr Settings::Ledstrip defaultLedstrip {
.enableLedAnimation = true,
.enableBrakeLights = true,
.ledsCount = LEDSTRIP_LENGTH,
.centerOffset = 1,
.smallOffset = 4,
.bigOffset = 10,
.deziampere = 30,
.enableBeepWhenBlink = false,
#ifdef LEDSTRIP_ANIMATION_DEFAULT
.animationType = LEDSTRIP_ANIMATION_DEFAULT,
#else
.animationType = LEDSTRIP_ANIMATION_TYPE_DEFAULTRAINBOW,
#endif
.enableFullBlink = false,
.enableStVO = false,
.stvoFrontOffset = 0,
.stvoFrontLength = 10,
.stvoFrontEnable = false,
.animationMultiplier = 10,
.brightness = 255
};
#endif
constexpr Settings::LockscreenSettings defaultLockscreen {
.allowPresetSwitch = true,
.pin = { 1, 2, 3, 4 }
};
constexpr Settings::Battery defaultBattery {
.cellsSeries = 12,
.cellsParallel = 4,
.cellType = 0,
.watthoursPerKilometer = 20,
.front30VoltCalibration = 30,
.back30VoltCalibration = 30,
.front50VoltCalibration = 50,
.back50VoltCalibration = 50
};
constexpr Settings defaultSettings {
#ifdef FEATURE_BMS
.autoConnectBms = false,
#endif
.buzzer = defaultBuzzer,
.limits = defaultLimits,
.wifiSettings = defaultWifiSettings,
#ifdef FEATURE_BLUETOOTH
.bluetoothSettings = defaultBluetoothSettings,
#endif
#ifdef FEATURE_BLE
.bleSettings = defaultBleSettings,
#endif
.timeSettings = defaultTimeSettings,
.controllerHardware = defaultControllerHardware,
.boardcomputerHardware = defaultBoardcomputerHardware,
#ifdef FEATURE_CLOUD
.cloudSettings = defaultCloudSettings,
#endif
.defaultMode = defaultDefaultMode,
.tempomatMode = defaultTempomatMode,
.larsmMode = defaultLarsmMode,
#ifdef FEATURE_LEDSTRIP
.ledstrip = defaultLedstrip,
#endif
.battery = defaultBattery,
.lockscreen = defaultLockscreen
};
StringSettings makeDefaultStringSettings()
{
using ConfiguredWifi = StringSettings::ConfiguredWifi;
return {
.wifis = std::array<ConfiguredWifi, 10> {
ConfiguredWifi { .ssid = {}, .key = {} },
ConfiguredWifi { .ssid = {}, .key = {} },
ConfiguredWifi { .ssid = {}, .key = {} },
ConfiguredWifi { .ssid = {}, .key = {} },
ConfiguredWifi { .ssid = {}, .key = {} },
ConfiguredWifi { .ssid = {}, .key = {} },
ConfiguredWifi { .ssid = {}, .key = {} },
ConfiguredWifi { .ssid = {}, .key = {} },
ConfiguredWifi { .ssid = {}, .key = {} },
ConfiguredWifi { .ssid = {}, .key = {} }
},
#ifdef FEATURE_CLOUD
.cloudUrl = {},
#endif
#ifdef FEATURE_OTA
.otaUrl = {},
#endif
#ifdef FEATURE_GARAGE
.garageUrl = {},
#endif
#ifdef FEATURE_NTP
.timeServer = "europe.pool.ntp.org",
#endif
};
}
}