Implemented dpad5wire
This commit is contained in:
@ -129,11 +129,20 @@ build_flags =
|
|||||||
-DAP_PASSWORD=Passwort_123
|
-DAP_PASSWORD=Passwort_123
|
||||||
-DFEATURE_WEBSERVER
|
-DFEATURE_WEBSERVER
|
||||||
-DFEATURE_DPAD_5WIRESW
|
-DFEATURE_DPAD_5WIRESW
|
||||||
-DPINS_DPAD_5WIRESW_OUT=0
|
-DPINS_DPAD_5WIRESW_OUT=32
|
||||||
-DPINS_DPAD_5WIRESW_IN1=16
|
-DPINS_DPAD_5WIRESW_IN1=25
|
||||||
-DPINS_DPAD_5WIRESW_IN2=27
|
-DPINS_DPAD_5WIRESW_IN2=26
|
||||||
-DPINS_DPAD_5WIRESW_IN3=16
|
-DPINS_DPAD_5WIRESW_IN3=27
|
||||||
-DPINS_DPAD_5WIRESW_IN4=27
|
-DPINS_DPAD_5WIRESW_IN4=21
|
||||||
|
-DDPAD_5WIRESW_UP=4
|
||||||
|
-DDPAD_5WIRESW_DOWN=3
|
||||||
|
-DDPAD_5WIRESW_CONFIRM=7
|
||||||
|
-DDPAD_5WIRESW_BACK=0
|
||||||
|
-DDPAD_5WIRESW_PROFILE0=1
|
||||||
|
-DDPAD_5WIRESW_PROFILE1=5
|
||||||
|
-DDPAD_5WIRESW_PROFILE2=2
|
||||||
|
-DDPAD_5WIRESW_PROFILE3=6
|
||||||
|
; -DDPAD_5WIRESW_DEBUG
|
||||||
-DDEFAULT_GASMIN=850
|
-DDEFAULT_GASMIN=850
|
||||||
-DDEFAULT_GASMAX=3700
|
-DDEFAULT_GASMAX=3700
|
||||||
-DDEFAULT_BREMSMIN=1300
|
-DDEFAULT_BREMSMIN=1300
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
#include "actioninterface.h"
|
#include "actioninterface.h"
|
||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
|
#include "presets.h"
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
template<uint8_t profile>
|
template<uint8_t profile>
|
||||||
@ -12,6 +13,8 @@ class SwitchProfileAction : public virtual ActionInterface
|
|||||||
public:
|
public:
|
||||||
void triggered() override
|
void triggered() override
|
||||||
{
|
{
|
||||||
|
settings = presets::defaultSettings;
|
||||||
|
|
||||||
if (settingsPersister.openProfile(profile))
|
if (settingsPersister.openProfile(profile))
|
||||||
{
|
{
|
||||||
if (!settingsPersister.load(settings))
|
if (!settingsPersister.load(settings))
|
||||||
|
54
src/displays/dpad5wiredebugdisplay.h
Normal file
54
src/displays/dpad5wiredebugdisplay.h
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "display.h"
|
||||||
|
#include "globals.h"
|
||||||
|
#include "widgets/label.h"
|
||||||
|
#include "dpad5wire.h"
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
#ifdef FEATURE_DPAD_5WIRESW
|
||||||
|
class DPad5WireDebugDisplay : public Display, public virtual DummyConfirm, public virtual DummyBack
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void initScreen() override;
|
||||||
|
void redraw() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Label m_label0{30, 100};
|
||||||
|
Label m_label1{30, 125};
|
||||||
|
Label m_label2{30, 150};
|
||||||
|
};
|
||||||
|
|
||||||
|
void DPad5WireDebugDisplay::initScreen()
|
||||||
|
{
|
||||||
|
tft.fillScreen(TFT_BLACK);
|
||||||
|
tft.setTextFont(4);
|
||||||
|
tft.setTextColor(TFT_YELLOW);
|
||||||
|
|
||||||
|
tft.drawString("DPad 5wire debug", 5, 5);
|
||||||
|
|
||||||
|
tft.fillRect(0, 34, tft.width(), 3, TFT_WHITE);
|
||||||
|
|
||||||
|
tft.setTextColor(TFT_WHITE, TFT_BLACK);
|
||||||
|
|
||||||
|
m_label0.start();
|
||||||
|
m_label1.start();
|
||||||
|
m_label2.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
void DPad5WireDebugDisplay::redraw()
|
||||||
|
{
|
||||||
|
m_label0.redraw(String{} +
|
||||||
|
(std::get<0>(dpad5wire::lastState) ? '1' : '0') + ' ' +
|
||||||
|
(std::get<1>(dpad5wire::lastState) ? '1' : '0') + ' ' +
|
||||||
|
(std::get<2>(dpad5wire::lastState) ? '1' : '0') + ' ' +
|
||||||
|
(std::get<3>(dpad5wire::lastState) ? '1' : '0') + ' ' +
|
||||||
|
(std::get<4>(dpad5wire::lastState) ? '1' : '0') + ' ' +
|
||||||
|
(std::get<5>(dpad5wire::lastState) ? '1' : '0') + ' ' +
|
||||||
|
(std::get<6>(dpad5wire::lastState) ? '1' : '0') + ' ' +
|
||||||
|
(std::get<7>(dpad5wire::lastState) ? '1' : '0'));
|
||||||
|
m_label1.redraw(String{raw_gas});
|
||||||
|
m_label2.redraw(String{raw_brems});
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
@ -4,7 +4,7 @@
|
|||||||
#include "menudisplay.h"
|
#include "menudisplay.h"
|
||||||
#include "staticmenudefinition.h"
|
#include "staticmenudefinition.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
#include "actions/dummyaction.h"
|
#include "actions/multiaction.h"
|
||||||
#include "actions/switchscreenaction.h"
|
#include "actions/switchscreenaction.h"
|
||||||
#include "icons/back.h"
|
#include "icons/back.h"
|
||||||
#include "texts.h"
|
#include "texts.h"
|
||||||
@ -77,17 +77,17 @@ class PresetsMenu :
|
|||||||
public StaticText<TEXT_PRESETS>,
|
public StaticText<TEXT_PRESETS>,
|
||||||
public BackActionInterface<SwitchScreenAction<MainMenu>>,
|
public BackActionInterface<SwitchScreenAction<MainMenu>>,
|
||||||
public StaticMenuDefinition<
|
public StaticMenuDefinition<
|
||||||
makeComponent<MenuItem, StaticText<TEXT_DEFAULTEVERYTHING>, ApplySettingsPresetAction<&presets::defaultSettings>>,
|
makeComponent<MenuItem, StaticText<TEXT_DEFAULTEVERYTHING>, MultiAction<ApplySettingsPresetAction<&presets::defaultSettings>, SwitchScreenAction<MainMenu>>>,
|
||||||
makeComponent<MenuItem, StaticText<TEXT_DEFAULTLIMITS>, ApplyLimitsPresetAction<&presets::defaultLimits>>,
|
makeComponent<MenuItem, StaticText<TEXT_DEFAULTLIMITS>, MultiAction<ApplyLimitsPresetAction<&presets::defaultLimits>, SwitchScreenAction<MainMenu>>>,
|
||||||
makeComponent<MenuItem, StaticText<TEXT_KIDSLIMITS>, ApplyLimitsPresetAction<&presets::kidsLimits>>,
|
makeComponent<MenuItem, StaticText<TEXT_KIDSLIMITS>, MultiAction<ApplyLimitsPresetAction<&presets::kidsLimits>, SwitchScreenAction<MainMenu>>>,
|
||||||
makeComponent<MenuItem, StaticText<TEXT_DEFAULTCONTROLLERHARDWARE>, ApplyControllerHardwarePresetAction<&presets::defaultControllerHardware>>,
|
makeComponent<MenuItem, StaticText<TEXT_DEFAULTCONTROLLERHARDWARE>, MultiAction<ApplyControllerHardwarePresetAction<&presets::defaultControllerHardware>, SwitchScreenAction<MainMenu>>>,
|
||||||
makeComponent<MenuItem, StaticText<TEXT_MOSFETSOFFCONTROLLERHARDWARE>, ApplyControllerHardwarePresetAction<&presets::mosfetsOffControllerHardware>>,
|
makeComponent<MenuItem, StaticText<TEXT_MOSFETSOFFCONTROLLERHARDWARE>, MultiAction<ApplyControllerHardwarePresetAction<&presets::mosfetsOffControllerHardware>, SwitchScreenAction<MainMenu>>>,
|
||||||
makeComponent<MenuItem, StaticText<TEXT_SPINNERCONTROLLERHARDWARE>, ApplyControllerHardwarePresetAction<&presets::spinnerControllerHardware>>,
|
makeComponent<MenuItem, StaticText<TEXT_SPINNERCONTROLLERHARDWARE>, MultiAction<ApplyControllerHardwarePresetAction<&presets::spinnerControllerHardware>, SwitchScreenAction<MainMenu>>>,
|
||||||
makeComponent<MenuItem, StaticText<TEXT_DEFAULTBOARDCOMPUTERHARDWARE>, ApplyBoardcomputerHardwarePresetAction<&presets::defaultBoardcomputerHardware>>,
|
makeComponent<MenuItem, StaticText<TEXT_DEFAULTBOARDCOMPUTERHARDWARE>, MultiAction<ApplyBoardcomputerHardwarePresetAction<&presets::defaultBoardcomputerHardware>, SwitchScreenAction<MainMenu>>>,
|
||||||
makeComponent<MenuItem, StaticText<TEXT_DEFAULTDEFAULTMODE>, ApplyDefaultModePresetAction<&presets::defaultDefaultMode>>,
|
makeComponent<MenuItem, StaticText<TEXT_DEFAULTDEFAULTMODE>, MultiAction<ApplyDefaultModePresetAction<&presets::defaultDefaultMode>, SwitchScreenAction<MainMenu>>>,
|
||||||
makeComponent<MenuItem, StaticText<TEXT_SINUSOIDALDEFAULTMODE>, ApplyDefaultModePresetAction<&presets::sinusoidalDefaultMode>>,
|
makeComponent<MenuItem, StaticText<TEXT_SINUSOIDALDEFAULTMODE>, MultiAction<ApplyDefaultModePresetAction<&presets::sinusoidalDefaultMode>, SwitchScreenAction<MainMenu>>>,
|
||||||
makeComponent<MenuItem, StaticText<TEXT_DEFAULTTEMPOMATMODE>, ApplyTempomatModePresetAction<&presets::defaultTempomatMode>>,
|
makeComponent<MenuItem, StaticText<TEXT_DEFAULTTEMPOMATMODE>, MultiAction<ApplyTempomatModePresetAction<&presets::defaultTempomatMode>, SwitchScreenAction<MainMenu>>>,
|
||||||
makeComponent<MenuItem, StaticText<TEXT_DEFAULTLARSMMODE>, ApplyLarsmModePresetAction<&presets::defaultLarsmMode>>,
|
makeComponent<MenuItem, StaticText<TEXT_DEFAULTLARSMMODE>, MultiAction<ApplyLarsmModePresetAction<&presets::defaultLarsmMode>, SwitchScreenAction<MainMenu>>>,
|
||||||
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>>
|
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>>
|
||||||
>
|
>
|
||||||
{};
|
{};
|
||||||
|
@ -13,15 +13,15 @@ class MainMenu;
|
|||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
class ProfilesMenu :
|
class ProfilesMenu :
|
||||||
public MenuDisplay,
|
public MenuDisplay,
|
||||||
public StaticText<TEXT_PROFILES>,
|
public StaticText<TEXT_PROFILES>,
|
||||||
public BackActionInterface<SwitchScreenAction<MainMenu>>,
|
public BackActionInterface<SwitchScreenAction<MainMenu>>,
|
||||||
public StaticMenuDefinition<
|
public StaticMenuDefinition<
|
||||||
makeComponent<MenuItem, StaticText<TEXT_PROFILE0>, SwitchProfileAction<0>>,
|
makeComponent<MenuItem, StaticText<TEXT_PROFILE0>, SwitchProfileAction<0>>,
|
||||||
makeComponent<MenuItem, StaticText<TEXT_PROFILE1>, SwitchProfileAction<1>>,
|
makeComponent<MenuItem, StaticText<TEXT_PROFILE1>, SwitchProfileAction<1>>,
|
||||||
makeComponent<MenuItem, StaticText<TEXT_PROFILE2>, SwitchProfileAction<2>>,
|
makeComponent<MenuItem, StaticText<TEXT_PROFILE2>, SwitchProfileAction<2>>,
|
||||||
makeComponent<MenuItem, StaticText<TEXT_PROFILE3>, SwitchProfileAction<3>>,
|
makeComponent<MenuItem, StaticText<TEXT_PROFILE3>, SwitchProfileAction<3>>,
|
||||||
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>>
|
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>>
|
||||||
>
|
>
|
||||||
{};
|
{};
|
||||||
}
|
}
|
||||||
|
107
src/dpad5wire.h
107
src/dpad5wire.h
@ -3,10 +3,10 @@
|
|||||||
#include <tuple>
|
#include <tuple>
|
||||||
|
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include <HardwareSerial.h>
|
|
||||||
|
|
||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
#include "actions/switchprofileaction.h"
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
namespace dpad5wire
|
namespace dpad5wire
|
||||||
@ -53,10 +53,10 @@ State Helper<OUT, IN1, IN2, IN3, IN4>::read()
|
|||||||
|
|
||||||
digitalWrite(OUT, HIGH);
|
digitalWrite(OUT, HIGH);
|
||||||
|
|
||||||
pinMode(IN1, INPUT_PULLUP);
|
pinMode(IN1, INPUT_PULLDOWN);
|
||||||
pinMode(IN2, INPUT_PULLUP);
|
pinMode(IN2, INPUT_PULLDOWN);
|
||||||
pinMode(IN3, INPUT_PULLUP);
|
pinMode(IN3, INPUT_PULLDOWN);
|
||||||
pinMode(IN4, INPUT_PULLUP);
|
pinMode(IN4, INPUT_PULLDOWN);
|
||||||
|
|
||||||
delay(1);
|
delay(1);
|
||||||
|
|
||||||
@ -82,103 +82,74 @@ void init()
|
|||||||
void update()
|
void update()
|
||||||
{
|
{
|
||||||
const auto state = helper.read();
|
const auto state = helper.read();
|
||||||
|
|
||||||
|
#ifdef DPAD_5WIRESW_DEBUG
|
||||||
|
lastState = state;
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
|
||||||
const auto now = millis();
|
const auto now = millis();
|
||||||
|
|
||||||
enum {
|
if (std::get<DPAD_5WIRESW_UP>(lastState) != std::get<DPAD_5WIRESW_UP>(state) && now-debounceUp > settings.boardcomputerHardware.dpadDebounce)
|
||||||
ButtonUp = 3,
|
|
||||||
ButtonDown = 0,
|
|
||||||
ButtonConfirm = 1,
|
|
||||||
ButtonBack = 2,
|
|
||||||
ButtonProfile0 = 4,
|
|
||||||
ButtonProfile1 = 5,
|
|
||||||
ButtonProfile2 = 6,
|
|
||||||
ButtonProfile3 = 7,
|
|
||||||
};
|
|
||||||
|
|
||||||
if (std::get<ButtonUp>(lastState) != std::get<ButtonUp>(state) && now-debounceUp > settings.boardcomputerHardware.dpadDebounce)
|
|
||||||
{
|
{
|
||||||
if (std::get<ButtonUp>(state))
|
if (std::get<DPAD_5WIRESW_UP>(state))
|
||||||
InputDispatcher::rotate(-1);
|
InputDispatcher::rotate(-1);
|
||||||
std::get<ButtonUp>(lastState) = std::get<ButtonUp>(state);
|
std::get<DPAD_5WIRESW_UP>(lastState) = std::get<DPAD_5WIRESW_UP>(state);
|
||||||
debounceUp = now;
|
debounceUp = now;
|
||||||
}
|
}
|
||||||
if (std::get<ButtonDown>(lastState) != std::get<ButtonDown>(state) && now-debounceDown > settings.boardcomputerHardware.dpadDebounce)
|
if (std::get<DPAD_5WIRESW_DOWN>(lastState) != std::get<DPAD_5WIRESW_DOWN>(state) && now-debounceDown > settings.boardcomputerHardware.dpadDebounce)
|
||||||
{
|
{
|
||||||
if (std::get<ButtonDown>(state))
|
if (std::get<DPAD_5WIRESW_DOWN>(state))
|
||||||
InputDispatcher::rotate(1);
|
InputDispatcher::rotate(1);
|
||||||
std::get<ButtonDown>(lastState) = std::get<ButtonDown>(state);
|
std::get<DPAD_5WIRESW_DOWN>(lastState) = std::get<DPAD_5WIRESW_DOWN>(state);
|
||||||
debounceDown = now;
|
debounceDown = now;
|
||||||
}
|
}
|
||||||
if (std::get<ButtonConfirm>(lastState) != std::get<ButtonConfirm>(state) && now-debounceConfirm > settings.boardcomputerHardware.dpadDebounce)
|
if (std::get<DPAD_5WIRESW_CONFIRM>(lastState) != std::get<DPAD_5WIRESW_CONFIRM>(state) && now-debounceConfirm > settings.boardcomputerHardware.dpadDebounce)
|
||||||
{
|
{
|
||||||
InputDispatcher::confirmButton(std::get<ButtonConfirm>(state));
|
InputDispatcher::confirmButton(std::get<DPAD_5WIRESW_CONFIRM>(state));
|
||||||
std::get<ButtonConfirm>(lastState) = std::get<ButtonConfirm>(state);
|
std::get<DPAD_5WIRESW_CONFIRM>(lastState) = std::get<DPAD_5WIRESW_CONFIRM>(state);
|
||||||
debounceConfirm = now;
|
debounceConfirm = now;
|
||||||
}
|
}
|
||||||
if (std::get<ButtonBack>(lastState) != std::get<ButtonBack>(state) && now-debounceBack > settings.boardcomputerHardware.dpadDebounce)
|
if (std::get<DPAD_5WIRESW_BACK>(lastState) != std::get<DPAD_5WIRESW_BACK>(state) && now-debounceBack > settings.boardcomputerHardware.dpadDebounce)
|
||||||
{
|
{
|
||||||
InputDispatcher::backButton(std::get<ButtonBack>(state));
|
InputDispatcher::backButton(std::get<DPAD_5WIRESW_BACK>(state));
|
||||||
std::get<ButtonBack>(lastState) = std::get<ButtonBack>(state);
|
std::get<DPAD_5WIRESW_BACK>(lastState) = std::get<DPAD_5WIRESW_BACK>(state);
|
||||||
debounceBack = now;
|
debounceBack = now;
|
||||||
}
|
}
|
||||||
if (std::get<ButtonProfile0>(lastState) != std::get<ButtonProfile0>(state) && now-debounceProfile0 > settings.boardcomputerHardware.dpadDebounce)
|
if (std::get<DPAD_5WIRESW_PROFILE0>(lastState) != std::get<DPAD_5WIRESW_PROFILE0>(state) && now-debounceProfile0 > settings.boardcomputerHardware.dpadDebounce)
|
||||||
{
|
{
|
||||||
if (std::get<ButtonProfile0>(state))
|
if (std::get<DPAD_5WIRESW_PROFILE0>(state))
|
||||||
{
|
{
|
||||||
if (settingsPersister.openProfile(0))
|
SwitchProfileAction<0>{}.triggered();
|
||||||
{
|
|
||||||
if (!settingsPersister.load(settings))
|
|
||||||
Serial.println("dpad5wire::update() load 0 failed");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
Serial.println("dpad5wire::update() openProfile 0 failed");
|
|
||||||
}
|
}
|
||||||
std::get<ButtonProfile0>(lastState) = std::get<ButtonProfile0>(state);
|
std::get<DPAD_5WIRESW_PROFILE0>(lastState) = std::get<DPAD_5WIRESW_PROFILE0>(state);
|
||||||
debounceProfile0 = now;
|
debounceProfile0 = now;
|
||||||
}
|
}
|
||||||
if (std::get<ButtonProfile1>(lastState) != std::get<ButtonProfile1>(state) && now-debounceProfile1 > settings.boardcomputerHardware.dpadDebounce)
|
if (std::get<DPAD_5WIRESW_PROFILE1>(lastState) != std::get<DPAD_5WIRESW_PROFILE1>(state) && now-debounceProfile1 > settings.boardcomputerHardware.dpadDebounce)
|
||||||
{
|
{
|
||||||
if (std::get<ButtonProfile1>(state))
|
if (std::get<DPAD_5WIRESW_PROFILE1>(state))
|
||||||
{
|
{
|
||||||
if (settingsPersister.openProfile(1))
|
SwitchProfileAction<1>{}.triggered();
|
||||||
{
|
|
||||||
if (!settingsPersister.load(settings))
|
|
||||||
Serial.println("dpad5wire::update() load 1 failed");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
Serial.println("dpad5wire::update() openProfile 1 failed");
|
|
||||||
}
|
}
|
||||||
std::get<ButtonProfile1>(lastState) = std::get<ButtonProfile1>(state);
|
std::get<DPAD_5WIRESW_PROFILE1>(lastState) = std::get<DPAD_5WIRESW_PROFILE1>(state);
|
||||||
debounceProfile1 = now;
|
debounceProfile1 = now;
|
||||||
}
|
}
|
||||||
if (std::get<ButtonProfile2>(lastState) != std::get<ButtonProfile2>(state) && now-debounceProfile2 > settings.boardcomputerHardware.dpadDebounce)
|
if (std::get<DPAD_5WIRESW_PROFILE2>(lastState) != std::get<DPAD_5WIRESW_PROFILE2>(state) && now-debounceProfile2 > settings.boardcomputerHardware.dpadDebounce)
|
||||||
{
|
{
|
||||||
if (std::get<ButtonProfile2>(state))
|
if (std::get<DPAD_5WIRESW_PROFILE2>(state))
|
||||||
{
|
{
|
||||||
if (settingsPersister.openProfile(2))
|
SwitchProfileAction<2>{}.triggered();
|
||||||
{
|
|
||||||
if (!settingsPersister.load(settings))
|
|
||||||
Serial.println("dpad5wire::update() load 2 failed");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
Serial.println("dpad5wire::update() openProfile 2 failed");
|
|
||||||
}
|
}
|
||||||
std::get<ButtonProfile2>(lastState) = std::get<ButtonProfile2>(state);
|
std::get<DPAD_5WIRESW_PROFILE2>(lastState) = std::get<DPAD_5WIRESW_PROFILE2>(state);
|
||||||
debounceProfile2 = now;
|
debounceProfile2 = now;
|
||||||
}
|
}
|
||||||
if (std::get<ButtonProfile3>(lastState) != std::get<ButtonProfile3>(state) && now-debounceProfile3 > settings.boardcomputerHardware.dpadDebounce)
|
if (std::get<DPAD_5WIRESW_PROFILE3>(lastState) != std::get<DPAD_5WIRESW_PROFILE3>(state) && now-debounceProfile3 > settings.boardcomputerHardware.dpadDebounce)
|
||||||
{
|
{
|
||||||
if (std::get<ButtonProfile3>(state))
|
if (std::get<DPAD_5WIRESW_PROFILE3>(state))
|
||||||
{
|
{
|
||||||
if (settingsPersister.openProfile(3))
|
SwitchProfileAction<3>{}.triggered();
|
||||||
{
|
|
||||||
if (!settingsPersister.load(settings))
|
|
||||||
Serial.println("dpad5wire::update() load 3 failed");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
Serial.println("dpad5wire::update() openProfile 3 failed");
|
|
||||||
}
|
}
|
||||||
std::get<ButtonProfile3>(lastState) = std::get<ButtonProfile3>(state);
|
std::get<DPAD_5WIRESW_PROFILE3>(lastState) = std::get<DPAD_5WIRESW_PROFILE3>(state);
|
||||||
debounceProfile3 = now;
|
debounceProfile3 = now;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
#include "modes/defaultmode.h"
|
#include "modes/defaultmode.h"
|
||||||
#include "modes/tempomatmode.h"
|
#include "modes/tempomatmode.h"
|
||||||
|
#include "displays/dpad5wiredebugdisplay.h"
|
||||||
#include "screens.h"
|
#include "screens.h"
|
||||||
#include "dpad.h"
|
#include "dpad.h"
|
||||||
#include "dpad3wire.h"
|
#include "dpad3wire.h"
|
||||||
@ -167,6 +168,11 @@ void setup()
|
|||||||
bootLabel.redraw("potis");
|
bootLabel.redraw("potis");
|
||||||
readPotis();
|
readPotis();
|
||||||
|
|
||||||
|
#if defined(FEATURE_DPAD_5WIRESW) && defined(DPAD_5WIRESW_DEBUG)
|
||||||
|
switchScreen<DPad5WireDebugDisplay>();
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (gas > 200.f || brems > 200.f)
|
if (gas > 200.f || brems > 200.f)
|
||||||
switchScreen<CalibrateDisplay>(true);
|
switchScreen<CalibrateDisplay>(true);
|
||||||
else
|
else
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
#include "displays/menus/wifisettingsmenu.h"
|
#include "displays/menus/wifisettingsmenu.h"
|
||||||
#include "displays/bmsdisplay.h"
|
#include "displays/bmsdisplay.h"
|
||||||
#include "displays/calibratedisplay.h"
|
#include "displays/calibratedisplay.h"
|
||||||
|
#include "displays/dpad5wiredebugdisplay.h"
|
||||||
#include "displays/gameoflifedisplay.h"
|
#include "displays/gameoflifedisplay.h"
|
||||||
#include "displays/gametrakcalibratedisplay.h"
|
#include "displays/gametrakcalibratedisplay.h"
|
||||||
#include "displays/lockscreen.h"
|
#include "displays/lockscreen.h"
|
||||||
@ -114,6 +115,9 @@ union X {
|
|||||||
BmsDisplay bmsDisplay;
|
BmsDisplay bmsDisplay;
|
||||||
#endif
|
#endif
|
||||||
CalibrateDisplay calibrateDisplay;
|
CalibrateDisplay calibrateDisplay;
|
||||||
|
#if defined(FEATURE_DPAD_5WIRESW) && defined(DPAD_5WIRESW_DEBUG)
|
||||||
|
DPad5WireDebugDisplay dPad5WireDebugDisplay;
|
||||||
|
#endif
|
||||||
GameOfLifeDisplay gameOfLifeDisplay;
|
GameOfLifeDisplay gameOfLifeDisplay;
|
||||||
#ifdef FEATURE_GAMETRAK
|
#ifdef FEATURE_GAMETRAK
|
||||||
GametrakCalibrateDisplay gametrakCalibrateDisplay;
|
GametrakCalibrateDisplay gametrakCalibrateDisplay;
|
||||||
@ -270,6 +274,9 @@ template<> decltype(displays.wifiSettingsMenu) &
|
|||||||
template<> decltype(displays.bmsDisplay) &getRefByType<decltype(displays.bmsDisplay)>() { return displays.bmsDisplay; }
|
template<> decltype(displays.bmsDisplay) &getRefByType<decltype(displays.bmsDisplay)>() { return displays.bmsDisplay; }
|
||||||
#endif
|
#endif
|
||||||
template<> decltype(displays.calibrateDisplay) &getRefByType<decltype(displays.calibrateDisplay)>() { return displays.calibrateDisplay; }
|
template<> decltype(displays.calibrateDisplay) &getRefByType<decltype(displays.calibrateDisplay)>() { return displays.calibrateDisplay; }
|
||||||
|
#if defined(FEATURE_DPAD_5WIRESW) && defined(DPAD_5WIRESW_DEBUG)
|
||||||
|
template<> decltype(displays.dPad5WireDebugDisplay) &getRefByType<decltype(displays.dPad5WireDebugDisplay)>() { return displays.dPad5WireDebugDisplay; }
|
||||||
|
#endif
|
||||||
template<> decltype(displays.gameOfLifeDisplay) &getRefByType<decltype(displays.gameOfLifeDisplay)>() { return displays.gameOfLifeDisplay; }
|
template<> decltype(displays.gameOfLifeDisplay) &getRefByType<decltype(displays.gameOfLifeDisplay)>() { return displays.gameOfLifeDisplay; }
|
||||||
#ifdef FEATURE_GAMETRAK
|
#ifdef FEATURE_GAMETRAK
|
||||||
template<> decltype(displays.gametrakCalibrateDisplay) &getRefByType<decltype(displays.gametrakCalibrateDisplay)>() { return displays.gametrakCalibrateDisplay; }
|
template<> decltype(displays.gametrakCalibrateDisplay) &getRefByType<decltype(displays.gametrakCalibrateDisplay)>() { return displays.gametrakCalibrateDisplay; }
|
||||||
|
Reference in New Issue
Block a user