Merge pull request #318 from bobbycar-graz/new-boardcomputer
This commit is contained in:
4
.github/workflows/workflow.yml
vendored
4
.github/workflows/workflow.yml
vendored
@ -154,7 +154,7 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
node: [feedc0de, comred, peter, mick, nofeatures, seatbot, gernot]
|
||||
node: [feedc0de, comred, comred_new, peter, mick, nofeatures, seatbot, gernot]
|
||||
name: ${{ matrix.node }}
|
||||
needs:
|
||||
- checkout
|
||||
@ -198,7 +198,7 @@ jobs:
|
||||
- name: Unpack ignore folder
|
||||
env:
|
||||
GPG_KEY: ${{ secrets.GPG_KEY }}
|
||||
if: ${{ matrix.node == 'comred' || matrix.node == 'peter' || matrix.node == 'mick' }}
|
||||
if: ${{ matrix.node == 'comred' || matrix.node == 'peter' || matrix.node == 'mick' || matrix.node == 'comred_new' }}
|
||||
run: |
|
||||
echo Unpacking ignore folder...
|
||||
cd repository
|
||||
|
@ -77,4 +77,5 @@ set(BOBBYCAR_BUILDFLAGS
|
||||
-DPINS_DPAD_6WIRESW_IN4=19
|
||||
-DPINS_DPAD_6WIRESW_IN5=26
|
||||
-DFEATURE_GSCHISSENE_DIODE
|
||||
# -DDPAD_BOARDCOMPUTER_V2
|
||||
)
|
||||
|
@ -77,6 +77,7 @@ set(BOBBYCAR_BUILDFLAGS
|
||||
-DPINS_DPAD_6WIRESW_IN4=19
|
||||
-DPINS_DPAD_6WIRESW_IN5=26
|
||||
-DFEATURE_GSCHISSENE_DIODE
|
||||
# -DDPAD_BOARDCOMPUTER_V2
|
||||
)
|
||||
|
||||
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/ignore/lockscreen_plugin.cmake")
|
||||
|
93
config_comred_new.cmake
Normal file
93
config_comred_new.cmake
Normal file
@ -0,0 +1,93 @@
|
||||
set(BOBBY_APP_NAME bobbyquad_comred_new)
|
||||
|
||||
add_definitions(
|
||||
-DUSER_SETUP_LOADED=1
|
||||
-DLOAD_GLCD=1
|
||||
-DLOAD_FONT2=1
|
||||
-DLOAD_FONT4=1
|
||||
-DLOAD_FONT7=1
|
||||
-DILI9341_DRIVER=1
|
||||
-DTFT_MOSI=13
|
||||
-DTFT_SCLK=15
|
||||
-DTFT_CS=14
|
||||
-DTFT_DC=12
|
||||
-DTFT_RST=2
|
||||
-DSPI_FREQUENCY=40000000
|
||||
)
|
||||
|
||||
set(BOBBYCAR_BUILDFLAGS
|
||||
# Pins
|
||||
-DPINS_GAS=34
|
||||
-DPINS_BREMS=35
|
||||
# -DFEATURE_JOYSTICK
|
||||
# -DPINS_RX1=4
|
||||
# -DPINS_TX1=5
|
||||
# -DPINS_RX2=22
|
||||
# -DPINS_TX2=23
|
||||
# -DPINS_MOSFET0=18
|
||||
# -DPINS_MOSFET1=19
|
||||
# -DPINS_MOSFET2=21
|
||||
# -DPINS_GAMETRAKX=34
|
||||
# -DPINS_GAMETRAKY=39
|
||||
# -DPINS_GAMETRAKDIST=36
|
||||
-DPINS_LEDBACKLIGHT=23
|
||||
-DPINS_LEDSTRIP=33
|
||||
|
||||
# Config flags
|
||||
-DFEATURE_ADC_IN
|
||||
-DFEATURE_CAN
|
||||
# -DFEATURE_SERIAL
|
||||
# -DFEATURE_MOSFETS
|
||||
# -DFEATURE_BLUETOOTH
|
||||
# -DFEATURE_BMS
|
||||
# -DFEATURE_GAMETRAK
|
||||
# -DFEATURE_POWERSUPPLY
|
||||
-DFEATURE_LEDBACKLIGHT
|
||||
|
||||
-DLEDBACKLIGHT_INVERTED
|
||||
# -DLEDSTRIP_WRONG_DIRECTION
|
||||
-DHEAP_LRGST_CRASH_TEXT_FIX
|
||||
|
||||
# Default values
|
||||
-DDEFAULT_SWAPSCREENBYTES=false
|
||||
-DDEFAULT_INVERTFRONTLEFT=false
|
||||
-DDEFAULT_INVERTFRONTRIGHT=true
|
||||
-DDEFAULT_INVERTBACKLEFT=false
|
||||
-DDEFAULT_INVERTBACKRIGHT=true
|
||||
-DDEFAULT_WHEELDIAMETER=200
|
||||
-DDEFAULT_IMOTMAX=28
|
||||
-DDEFAULT_IDCMAX=30
|
||||
-DDEFAULT_NMOTMAX=2000
|
||||
-DDEFAULT_FIELDWEAKMAX=17
|
||||
-DDEFAULT_FIELDADVMAX=40
|
||||
|
||||
# DPAD
|
||||
# -DFEATURE_DPAD_5WIRESW
|
||||
# -DPINS_DPAD_5WIRESW_OUT=4
|
||||
# -DPINS_DPAD_5WIRESW_IN1=5
|
||||
# -DPINS_DPAD_5WIRESW_IN2=27
|
||||
# -DPINS_DPAD_5WIRESW_IN3=18
|
||||
# -DPINS_DPAD_5WIRESW_IN4=19
|
||||
# -DPINS_DPAD_EXTRASW_IN5=25
|
||||
# -DFEATURE_DPAD_6WIRESW
|
||||
# -DPINS_DPAD_6WIRESW_OUT=4
|
||||
# -DPINS_DPAD_6WIRESW_IN1=5
|
||||
# -DPINS_DPAD_6WIRESW_IN2=27
|
||||
# -DPINS_DPAD_6WIRESW_IN3=18
|
||||
# -DPINS_DPAD_6WIRESW_IN4=19
|
||||
# -DPINS_DPAD_6WIRESW_IN5=26
|
||||
# -DFEATURE_GSCHISSENE_DIODE
|
||||
-DDPAD_BOARDCOMPUTER_V2
|
||||
-DPINS_DPAD_BOARDCOMPUTER_V2_OUT1=19
|
||||
-DPINS_DPAD_BOARDCOMPUTER_V2_OUT2=5
|
||||
-DPINS_DPAD_BOARDCOMPUTER_V2_IN1=4
|
||||
-DPINS_DPAD_BOARDCOMPUTER_V2_IN2=18
|
||||
-DPINS_DPAD_BOARDCOMPUTER_V2_IN3=27
|
||||
-DPINS_DPAD_BOARDCOMPUTER_V2_IN4=16
|
||||
# -DDPAD_BOARDCOMPUTER_V2_DEBUG
|
||||
)
|
||||
|
||||
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/ignore/lockscreen_plugin.cmake")
|
||||
include("${CMAKE_CURRENT_SOURCE_DIR}/ignore/lockscreen_plugin.cmake")
|
||||
message(WARNING "Including plugins")
|
||||
endif()
|
@ -76,4 +76,5 @@ set(BOBBYCAR_BUILDFLAGS
|
||||
# -DPINS_DPAD_6WIRESW_IN4=19
|
||||
# -DPINS_DPAD_6WIRESW_IN5=26
|
||||
# -DFEATURE_GSCHISSENE_DIODE
|
||||
# -DDPAD_BOARDCOMPUTER_V2
|
||||
)
|
||||
|
@ -76,6 +76,7 @@ set(BOBBYCAR_BUILDFLAGS
|
||||
# -DPINS_DPAD_6WIRESW_IN4=19
|
||||
# -DPINS_DPAD_6WIRESW_IN5=26
|
||||
# -DFEATURE_GSCHISSENE_DIODE
|
||||
# -DDPAD_BOARDCOMPUTER_V2
|
||||
)
|
||||
|
||||
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/ignore/lockscreen_plugin.cmake")
|
||||
|
@ -68,6 +68,7 @@ set(BOBBYCAR_BUILDFLAGS
|
||||
-DPINS_DPAD_5WIRESW_IN1=27
|
||||
-DPINS_DPAD_5WIRESW_IN2=19
|
||||
-DPINS_DPAD_5WIRESW_IN3=18
|
||||
# -DDPAD_BOARDCOMPUTER_V2
|
||||
)
|
||||
|
||||
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/ignore/lockscreen_plugin.cmake")
|
||||
|
@ -76,6 +76,7 @@ set(BOBBYCAR_BUILDFLAGS
|
||||
# -DPINS_DPAD_6WIRESW_IN4=19
|
||||
# -DPINS_DPAD_6WIRESW_IN5=26
|
||||
# -DFEATURE_GSCHISSENE_DIODE
|
||||
# -DDPAD_BOARDCOMPUTER_V2
|
||||
)
|
||||
|
||||
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/ignore/lockscreen_plugin.cmake")
|
||||
|
@ -76,4 +76,5 @@ set(BOBBYCAR_BUILDFLAGS
|
||||
# -DPINS_DPAD_6WIRESW_IN4=19
|
||||
# -DPINS_DPAD_6WIRESW_IN5=26
|
||||
# -DFEATURE_GSCHISSENE_DIODE
|
||||
# -DDPAD_BOARDCOMPUTER_V2
|
||||
)
|
||||
|
@ -76,6 +76,7 @@ set(BOBBYCAR_BUILDFLAGS
|
||||
# -DPINS_DPAD_6WIRESW_IN4=19
|
||||
# -DPINS_DPAD_6WIRESW_IN5=26
|
||||
# -DFEATURE_GSCHISSENE_DIODE
|
||||
# -DDPAD_BOARDCOMPUTER_V2
|
||||
)
|
||||
|
||||
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/ignore/lockscreen_plugin.cmake")
|
||||
|
@ -68,6 +68,7 @@ set(BOBBYCAR_BUILDFLAGS
|
||||
-DPINS_DPAD_5WIRESW_IN1=18
|
||||
-DPINS_DPAD_5WIRESW_IN2=19
|
||||
-DPINS_DPAD_5WIRESW_IN3=27
|
||||
# -DDPAD_BOARDCOMPUTER_V2
|
||||
)
|
||||
|
||||
#if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/ignore/lockscreen_plugin.cmake")
|
||||
|
@ -163,6 +163,7 @@ set(headers
|
||||
dpad5wire.h
|
||||
dpad5wire_2out.h
|
||||
dpad6wire.h
|
||||
dpad_boardcomputer_v2.h
|
||||
drivingstatistics.h
|
||||
espnowfunctions.h
|
||||
esptexthelpers.h
|
||||
@ -400,6 +401,7 @@ set(sources
|
||||
dpad5wire.cpp
|
||||
dpad5wire_2out.cpp
|
||||
dpad6wire.cpp
|
||||
dpad_boardcomputer_v2.cpp
|
||||
drivingstatistics.cpp
|
||||
espnowfunctions.cpp
|
||||
esptexthelpers.cpp
|
||||
|
@ -105,7 +105,7 @@ struct GasMinAccessor : public NewSettingsAccessor<int16_t> { ConfigWrapper<int1
|
||||
struct GasMaxAccessor : public NewSettingsAccessor<int16_t> { ConfigWrapper<int16_t> &getConfig() const override { return configs.gasMax; } };
|
||||
struct BremsMinAccessor : public NewSettingsAccessor<int16_t> { ConfigWrapper<int16_t> &getConfig() const override { return configs.bremsMin; } };
|
||||
struct BremsMaxAccessor : public NewSettingsAccessor<int16_t> { ConfigWrapper<int16_t> &getConfig() const override { return configs.bremsMax; } };
|
||||
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) || defined(FEATURE_DPAD_5WIRESW) || defined(FEATURE_DPAD_5WIRESW_2OUT) || defined (FEATURE_DPAD_6WIRESW)
|
||||
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) || defined(FEATURE_DPAD_5WIRESW) || defined(FEATURE_DPAD_5WIRESW_2OUT) || defined (FEATURE_DPAD_6WIRESW) || defined (DPAD_BOARDCOMPUTER_V2)
|
||||
struct DPadDebounceAccessor : public NewSettingsAccessor<uint8_t> { ConfigWrapper<uint8_t> &getConfig() const override { return configs.dpadDebounce; } };
|
||||
struct ButtonDelayAccessor : public NewSettingsAccessor<uint16_t> { ConfigWrapper<uint16_t> &getConfig() const override { return configs.buttonReadDelay; } };
|
||||
#endif
|
||||
@ -236,6 +236,11 @@ struct ButtonProfile1Accessor : public NewSettingsAccessor<uint8_t> { ConfigWrap
|
||||
struct ButtonProfile2Accessor : public NewSettingsAccessor<uint8_t> { ConfigWrapper<uint8_t> &getConfig() const override { return configs.dpadMappingProfile2; } };
|
||||
struct ButtonProfile3Accessor : public NewSettingsAccessor<uint8_t> { ConfigWrapper<uint8_t> &getConfig() const override { return configs.dpadMappingProfile3; } };
|
||||
|
||||
struct ButtonExtra1Accessor : public NewSettingsAccessor<uint8_t> { ConfigWrapper<uint8_t> &getConfig() const override { return configs.dpadMappingExtra1; } };
|
||||
struct ButtonExtra2Accessor : public NewSettingsAccessor<uint8_t> { ConfigWrapper<uint8_t> &getConfig() const override { return configs.dpadMappingExtra2; } };
|
||||
struct ButtonExtra3Accessor : public NewSettingsAccessor<uint8_t> { ConfigWrapper<uint8_t> &getConfig() const override { return configs.dpadMappingExtra3; } };
|
||||
struct ButtonExtra4Accessor : public NewSettingsAccessor<uint8_t> { ConfigWrapper<uint8_t> &getConfig() const override { return configs.dpadMappingExtra4; } };
|
||||
|
||||
// Can
|
||||
struct CanResetOnErrorAccessor : public NewSettingsAccessor<bool> { ConfigWrapper<bool> &getConfig() const override { return configs.canResetOnError; } };
|
||||
struct CanReinstallDriverAccessor : public NewSettingsAccessor<bool> { ConfigWrapper<bool> &getConfig() const override { return configs.canUninstallOnReset; } };
|
||||
@ -245,3 +250,7 @@ struct QuickActionLeft2Accessor : public NewSettingsAccessor<BobbyQuickActions>
|
||||
struct QuickActionRight2Accessor : public NewSettingsAccessor<BobbyQuickActions> { ConfigWrapper<BobbyQuickActions> &getConfig() const override { return configs.quickActionRight2; } };
|
||||
struct QuickActionUp2Accessor : public NewSettingsAccessor<BobbyQuickActions> { ConfigWrapper<BobbyQuickActions> &getConfig() const override { return configs.quickActionUp2; } };
|
||||
struct QuickActionDown2Accessor : public NewSettingsAccessor<BobbyQuickActions> { ConfigWrapper<BobbyQuickActions> &getConfig() const override { return configs.quickActionDown2; } };
|
||||
struct QuickActionExtra1Accessor : public NewSettingsAccessor<BobbyQuickActions> { ConfigWrapper<BobbyQuickActions> &getConfig() const override { return configs.quickActionExtra1; } };
|
||||
struct QuickActionExtra2Accessor : public NewSettingsAccessor<BobbyQuickActions> { ConfigWrapper<BobbyQuickActions> &getConfig() const override { return configs.quickActionExtra2; } };
|
||||
struct QuickActionExtra3Accessor : public NewSettingsAccessor<BobbyQuickActions> { ConfigWrapper<BobbyQuickActions> &getConfig() const override { return configs.quickActionExtra3; } };
|
||||
struct QuickActionExtra4Accessor : public NewSettingsAccessor<BobbyQuickActions> { ConfigWrapper<BobbyQuickActions> &getConfig() const override { return configs.quickActionExtra4; } };
|
||||
|
@ -47,6 +47,14 @@ constexpr const char TAG[] = "BUTTONS";
|
||||
return Button(BobbyButton::Up2);
|
||||
if (configs.dpadMappingDown2.value == button)
|
||||
return Button(BobbyButton::Down2);
|
||||
if (configs.dpadMappingExtra1.value == button)
|
||||
return Button(BobbyButton::Extra1);
|
||||
if (configs.dpadMappingExtra2.value == button)
|
||||
return Button(BobbyButton::Extra2);
|
||||
if (configs.dpadMappingExtra3.value == button)
|
||||
return Button(BobbyButton::Extra3);
|
||||
if (configs.dpadMappingExtra4.value == button)
|
||||
return Button(BobbyButton::Extra4);
|
||||
|
||||
ESP_LOGW(TAG, "unknown raw button %hhu", button);
|
||||
|
||||
@ -74,6 +82,10 @@ void buttonPressedCommon(espgui::Button button)
|
||||
case BobbyButton::Right2:
|
||||
case BobbyButton::Up2:
|
||||
case BobbyButton::Down2:
|
||||
case BobbyButton::Extra1:
|
||||
case BobbyButton::Extra2:
|
||||
case BobbyButton::Extra3:
|
||||
case BobbyButton::Extra4:
|
||||
quickactions::handle_bobby_quickaction(button);
|
||||
break;
|
||||
default:;
|
||||
@ -88,6 +100,10 @@ void buttonReleasedCommon(espgui::Button button)
|
||||
case BobbyButton::Right2:
|
||||
case BobbyButton::Up2:
|
||||
case BobbyButton::Down2:
|
||||
case BobbyButton::Extra1:
|
||||
case BobbyButton::Extra2:
|
||||
case BobbyButton::Extra3:
|
||||
case BobbyButton::Extra4:
|
||||
quickactions::handle_bobby_quickaction(button, false);
|
||||
break;
|
||||
default:;
|
||||
|
@ -16,6 +16,10 @@ enum BobbyButton
|
||||
Right2,
|
||||
Up2,
|
||||
Down2,
|
||||
Extra1,
|
||||
Extra2,
|
||||
Extra3,
|
||||
Extra4,
|
||||
Confirm = espgui::Button::Right,
|
||||
Back = espgui::Button::Left
|
||||
};
|
||||
|
@ -27,6 +27,18 @@ void handle_bobby_quickaction(espgui::Button button, bool pressed)
|
||||
case Down2:
|
||||
config = &configs.quickActionDown2;
|
||||
break;
|
||||
case Extra1:
|
||||
config = &configs.quickActionExtra1;
|
||||
break;
|
||||
case Extra2:
|
||||
config = &configs.quickActionExtra2;
|
||||
break;
|
||||
case Extra3:
|
||||
config = &configs.quickActionExtra3;
|
||||
break;
|
||||
case Extra4:
|
||||
config = &configs.quickActionExtra4;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
@ -110,7 +110,7 @@ using BremsMaxChangeScreen = espgui::makeComponent<
|
||||
>;
|
||||
|
||||
|
||||
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) || defined(FEATURE_DPAD_5WIRESW) || defined(FEATURE_DPAD_5WIRESW_2OUT) || defined (FEATURE_DPAD_6WIRESW)
|
||||
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) || defined(FEATURE_DPAD_5WIRESW) || defined(FEATURE_DPAD_5WIRESW_2OUT) || defined (FEATURE_DPAD_6WIRESW) || defined (DPAD_BOARDCOMPUTER_V2)
|
||||
using DPadDebounceChangeScreen = espgui::makeComponent<
|
||||
BobbyChangeValueDisplay<uint8_t>,
|
||||
espgui::StaticText<TEXT_DPADDEBOUNCE>,
|
||||
@ -205,7 +205,7 @@ BoardcomputerHardwareSettingsMenu::BoardcomputerHardwareSettingsMenu()
|
||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_GASMAX, GasMaxAccessor>, PushScreenAction<GasMaxChangeScreen>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_BREMSMIN, BremsMinAccessor>, PushScreenAction<BremsMinChangeScreen>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_BREMSMAX, BremsMaxAccessor>, PushScreenAction<BremsMaxChangeScreen>>>();
|
||||
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) || defined(FEATURE_DPAD_5WIRESW) || defined(FEATURE_DPAD_5WIRESW_2OUT) || defined (FEATURE_DPAD_6WIRESW)
|
||||
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) || defined(FEATURE_DPAD_5WIRESW) || defined(FEATURE_DPAD_5WIRESW_2OUT) || defined (FEATURE_DPAD_6WIRESW) || defined (DPAD_BOARDCOMPUTER_V2)
|
||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_DPADDEBOUNCE, DPadDebounceAccessor>, PushScreenAction<DPadDebounceChangeScreen>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_BUTTONDELAY, ButtonDelayAccessor>, PushScreenAction<ButtonDelayChangeScreen>>>();
|
||||
#endif
|
||||
|
@ -32,6 +32,11 @@ constexpr char TEXT_BUTTON_PROFILE1[] = "Profile1";
|
||||
constexpr char TEXT_BUTTON_PROFILE2[] = "Profile2";
|
||||
constexpr char TEXT_BUTTON_PROFILE3[] = "Profile3";
|
||||
|
||||
constexpr char TEXT_BUTTON_EXTRA1[] = "Extra1";
|
||||
constexpr char TEXT_BUTTON_EXTRA2[] = "Extra2";
|
||||
constexpr char TEXT_BUTTON_EXTRA3[] = "Extra3";
|
||||
constexpr char TEXT_BUTTON_EXTRA4[] = "Extra4";
|
||||
|
||||
constexpr char TEXT_BACK[] = "Back";
|
||||
|
||||
template<const char *Tprefix, typename Taccessor, Status status>
|
||||
@ -82,6 +87,11 @@ ExtraButtonCalibrateMenu::ExtraButtonCalibrateMenu()
|
||||
constructMenuItem<ButtonCalibrateMenuItem<TEXT_BUTTON_PROFILE2, ButtonProfile2Accessor, Status::WaitingProfile2>>();
|
||||
constructMenuItem<ButtonCalibrateMenuItem<TEXT_BUTTON_PROFILE3, ButtonProfile3Accessor, Status::WaitingProfile3>>();
|
||||
|
||||
constructMenuItem<ButtonCalibrateMenuItem<TEXT_BUTTON_EXTRA1, ButtonExtra1Accessor, Status::WaitingExtra1>>();
|
||||
constructMenuItem<ButtonCalibrateMenuItem<TEXT_BUTTON_EXTRA2, ButtonExtra2Accessor, Status::WaitingExtra2>>();
|
||||
constructMenuItem<ButtonCalibrateMenuItem<TEXT_BUTTON_EXTRA3, ButtonExtra3Accessor, Status::WaitingExtra3>>();
|
||||
constructMenuItem<ButtonCalibrateMenuItem<TEXT_BUTTON_EXTRA4, ButtonExtra4Accessor, Status::WaitingExtra4>>();
|
||||
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<BoardcomputerHardwareSettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
|
||||
}
|
||||
|
||||
@ -172,6 +182,34 @@ void ExtraButtonCalibrateMenu::rawButtonPressed(uint8_t button)
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case WaitingExtra1:
|
||||
if (auto result = configs.write_config(configs.dpadMappingExtra1, button); !result)
|
||||
{
|
||||
BobbyErrorHandler{}.errorOccured(std::move(result).error());
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case WaitingExtra2:
|
||||
if (auto result = configs.write_config(configs.dpadMappingExtra2, button); !result)
|
||||
{
|
||||
BobbyErrorHandler{}.errorOccured(std::move(result).error());
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case WaitingExtra3:
|
||||
if (auto result = configs.write_config(configs.dpadMappingExtra3, button); !result)
|
||||
{
|
||||
BobbyErrorHandler{}.errorOccured(std::move(result).error());
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case WaitingExtra4:
|
||||
if (auto result = configs.write_config(configs.dpadMappingExtra4, button); !result)
|
||||
{
|
||||
BobbyErrorHandler{}.errorOccured(std::move(result).error());
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -16,7 +16,11 @@ enum Status : uint8_t
|
||||
WaitingProfile0,
|
||||
WaitingProfile1,
|
||||
WaitingProfile2,
|
||||
WaitingProfile3
|
||||
WaitingProfile3,
|
||||
WaitingExtra1,
|
||||
WaitingExtra2,
|
||||
WaitingExtra3,
|
||||
WaitingExtra4,
|
||||
};
|
||||
} // namespace
|
||||
|
||||
|
@ -20,6 +20,10 @@ constexpr char TEXT_SETUPLEFT2[] = "&sSetup Left2";
|
||||
constexpr char TEXT_SETUPRIGHT2[] = "&sSetup Right2";
|
||||
constexpr char TEXT_SETUPUP2[] = "&sSetup Up2";
|
||||
constexpr char TEXT_SETUPDOWN2[] = "&sSetup Down2";
|
||||
constexpr char TEXT_SETUPEXTRA1[] = "&sSetup Extra1";
|
||||
constexpr char TEXT_SETUPEXTRA2[] = "&sSetup Extra2";
|
||||
constexpr char TEXT_SETUPEXTRA3[] = "&sSetup Extra3";
|
||||
constexpr char TEXT_SETUPEXTRA4[] = "&sSetup Extra4";
|
||||
constexpr char TEXT_BACK[] = "Back";
|
||||
|
||||
template<typename Tvalue, const char* TEXT, typename Accessor, typename Screen>
|
||||
@ -38,6 +42,10 @@ SetupQuickActionsMenu::SetupQuickActionsMenu()
|
||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPRIGHT2, QuickActionRight2Accessor>, SwitchScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPRIGHT2, QuickActionRight2Accessor, SetupQuickActionsMenu>>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPUP2, QuickActionUp2Accessor>, SwitchScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPUP2, QuickActionUp2Accessor, SetupQuickActionsMenu>>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPDOWN2, QuickActionDown2Accessor>, SwitchScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPDOWN2, QuickActionDown2Accessor, SetupQuickActionsMenu>>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPEXTRA1, QuickActionExtra1Accessor>, SwitchScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPEXTRA1, QuickActionExtra1Accessor, SetupQuickActionsMenu>>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPEXTRA2, QuickActionExtra2Accessor>, SwitchScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPEXTRA2, QuickActionExtra2Accessor, SetupQuickActionsMenu>>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPEXTRA3, QuickActionExtra3Accessor>, SwitchScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPEXTRA3, QuickActionExtra3Accessor, SetupQuickActionsMenu>>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SETUPEXTRA4, QuickActionExtra4Accessor>, SwitchScreenAction<QuickActionChangeValueDisplay<BobbyQuickActions, TEXT_SETUPEXTRA4, QuickActionExtra4Accessor, SetupQuickActionsMenu>>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<BoardcomputerHardwareSettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
|
||||
}
|
||||
|
||||
|
199
main/dpad_boardcomputer_v2.cpp
Normal file
199
main/dpad_boardcomputer_v2.cpp
Normal file
@ -0,0 +1,199 @@
|
||||
#include "dpad_boardcomputer_v2.h"
|
||||
|
||||
// system includes
|
||||
#include <array>
|
||||
|
||||
// Arduino includes
|
||||
#include <Arduino.h>
|
||||
|
||||
// 3rdparty lib includes
|
||||
#include <espchrono.h>
|
||||
#include <tickchrono.h>
|
||||
#include <screenmanager.h>
|
||||
|
||||
// local includes
|
||||
#include "types.h"
|
||||
#include "globals.h"
|
||||
#include "newsettings.h"
|
||||
#include "bobbybuttons.h"
|
||||
|
||||
namespace {
|
||||
template<pin_t OUT1, pin_t OUT2, pin_t IN1, pin_t IN2, pin_t IN3, pin_t IN4>
|
||||
class Helper
|
||||
{
|
||||
public:
|
||||
static constexpr auto Out1Pin = OUT1;
|
||||
static constexpr auto Out2Pin = OUT2;
|
||||
static constexpr auto In1Pin = IN1;
|
||||
static constexpr auto In2Pin = IN2;
|
||||
static constexpr auto In3Pin = IN3;
|
||||
static constexpr auto In4Pin = IN4;
|
||||
|
||||
void begin();
|
||||
|
||||
std::array<bool, 16> read();
|
||||
};
|
||||
|
||||
template<pin_t OUT1, pin_t OUT2, pin_t IN1, pin_t IN2, pin_t IN3, pin_t IN4>
|
||||
void Helper<OUT1, OUT2, IN1, IN2, IN3, IN4>::begin()
|
||||
{
|
||||
pinMode(OUT1, OUTPUT);
|
||||
pinMode(OUT2, OUTPUT);
|
||||
}
|
||||
|
||||
template<pin_t OUT1, pin_t OUT2, pin_t IN1, pin_t IN2, pin_t IN3, pin_t IN4>
|
||||
std::array<bool, 16> Helper<OUT1, OUT2, IN1, IN2, IN3, IN4>::read()
|
||||
{
|
||||
std::array<bool, 16> result;
|
||||
|
||||
pinMode(OUT1, OUTPUT);
|
||||
pinMode(OUT2, INPUT);
|
||||
|
||||
digitalWrite(OUT1, LOW);
|
||||
|
||||
pinMode(IN1, INPUT_PULLUP);
|
||||
pinMode(IN2, INPUT_PULLUP);
|
||||
pinMode(IN3, INPUT_PULLUP);
|
||||
pinMode(IN4, INPUT_PULLUP);
|
||||
|
||||
if (configs.buttonReadDelay.value != 0) {
|
||||
delayMicroseconds(configs.buttonReadDelay.value);
|
||||
} else {
|
||||
vPortYield();
|
||||
}
|
||||
|
||||
result[0] = digitalRead(IN1)==LOW;
|
||||
result[1] = digitalRead(IN2)==LOW;
|
||||
result[2] = digitalRead(IN3)==LOW;
|
||||
result[3] = digitalRead(IN4)==LOW;
|
||||
|
||||
digitalWrite(OUT1, HIGH);
|
||||
|
||||
pinMode(IN1, INPUT_PULLDOWN);
|
||||
pinMode(IN2, INPUT_PULLDOWN);
|
||||
pinMode(IN3, INPUT_PULLDOWN);
|
||||
pinMode(IN4, INPUT_PULLDOWN);
|
||||
|
||||
if (configs.buttonReadDelay.value != 0) {
|
||||
delayMicroseconds(configs.buttonReadDelay.value);
|
||||
} else {
|
||||
vPortYield();
|
||||
}
|
||||
|
||||
result[4] = digitalRead(IN1);
|
||||
result[5] = digitalRead(IN2);
|
||||
result[6] = digitalRead(IN3);
|
||||
result[7] = digitalRead(IN4);
|
||||
|
||||
digitalWrite(OUT1, LOW);
|
||||
pinMode(OUT1, INPUT);
|
||||
pinMode(OUT2, OUTPUT);
|
||||
|
||||
digitalWrite(OUT2, LOW);
|
||||
|
||||
pinMode(IN1, INPUT_PULLUP);
|
||||
pinMode(IN2, INPUT_PULLUP);
|
||||
pinMode(IN3, INPUT_PULLUP);
|
||||
pinMode(IN4, INPUT_PULLUP);
|
||||
|
||||
if (configs.buttonReadDelay.value != 0) {
|
||||
delayMicroseconds(configs.buttonReadDelay.value);
|
||||
} else {
|
||||
vPortYield();
|
||||
}
|
||||
|
||||
result[8] = digitalRead(IN1)==LOW;
|
||||
result[9] = digitalRead(IN2)==LOW;
|
||||
result[10] = digitalRead(IN3)==LOW;
|
||||
result[11] = digitalRead(IN4)==LOW;
|
||||
|
||||
digitalWrite(OUT2, HIGH);
|
||||
|
||||
pinMode(IN1, INPUT_PULLDOWN);
|
||||
pinMode(IN2, INPUT_PULLDOWN);
|
||||
pinMode(IN3, INPUT_PULLDOWN);
|
||||
pinMode(IN4, INPUT_PULLDOWN);
|
||||
|
||||
if (configs.buttonReadDelay.value != 0) {
|
||||
delayMicroseconds(configs.buttonReadDelay.value);
|
||||
} else {
|
||||
vPortYield();
|
||||
}
|
||||
|
||||
result[12] = digitalRead(IN1);
|
||||
result[13] = digitalRead(IN2);
|
||||
result[14] = digitalRead(IN3);
|
||||
result[15] = digitalRead(IN4);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
#ifdef DPAD_BOARDCOMPUTER_V2
|
||||
Helper<PINS_DPAD_BOARDCOMPUTER_V2_OUT1, PINS_DPAD_BOARDCOMPUTER_V2_OUT2, PINS_DPAD_BOARDCOMPUTER_V2_IN1, PINS_DPAD_BOARDCOMPUTER_V2_IN2, PINS_DPAD_BOARDCOMPUTER_V2_IN3, PINS_DPAD_BOARDCOMPUTER_V2_IN4> helper;
|
||||
std::array<bool, 16> lastState;
|
||||
std::array<espchrono::millis_clock::time_point, 16> debounce;
|
||||
#endif
|
||||
} // namespace
|
||||
|
||||
#ifdef DPAD_BOARDCOMPUTER_V2
|
||||
namespace dpad_boardcomputer_v2 {
|
||||
|
||||
void init()
|
||||
{
|
||||
helper.begin();
|
||||
std::fill(std::begin(lastState), std::end(lastState), false);
|
||||
std::fill(std::begin(debounce), std::end(debounce), espchrono::millis_clock::now());
|
||||
}
|
||||
|
||||
void update()
|
||||
{
|
||||
const auto newState = helper.read();
|
||||
|
||||
#ifdef DPAD_BOARDCOMPUTER_V2_DEBUG
|
||||
|
||||
if (newState != lastState) {
|
||||
ESP_LOGI("DPAD_BOARDCOMPUTER_V2", "new state: %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
|
||||
newState[0] ? "1" : "0",
|
||||
newState[1] ? "1" : "0",
|
||||
newState[2] ? "1" : "0",
|
||||
newState[3] ? "1" : "0",
|
||||
newState[4] ? "1" : "0",
|
||||
newState[5] ? "1" : "0",
|
||||
newState[6] ? "1" : "0",
|
||||
newState[7] ? "1" : "0",
|
||||
newState[8] ? "1" : "0",
|
||||
newState[9] ? "1" : "0",
|
||||
newState[10] ? "1" : "0",
|
||||
newState[11] ? "1" : "0",
|
||||
newState[12] ? "1" : "0",
|
||||
newState[13] ? "1" : "0",
|
||||
newState[14] ? "1" : "0",
|
||||
newState[15] ? "1" : "0");
|
||||
}
|
||||
|
||||
lastState = newState;
|
||||
return;
|
||||
#endif
|
||||
|
||||
const auto now = espchrono::millis_clock::now();
|
||||
|
||||
const std::chrono::milliseconds dpadDebounce{configs.dpadDebounce.value};
|
||||
|
||||
for (auto i = 0; i < newState.size(); i++)
|
||||
if (lastState[i] != newState[i] && now - debounce[i] > dpadDebounce)
|
||||
{
|
||||
lastState[i] = newState[i];
|
||||
if (espgui::currentDisplay)
|
||||
{
|
||||
if (newState[i])
|
||||
espgui::currentDisplay->rawButtonPressed(i);
|
||||
else
|
||||
espgui::currentDisplay->rawButtonReleased(i);
|
||||
}
|
||||
debounce[i] = now;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace dpad_boardcomputer_v2
|
||||
|
||||
#endif
|
8
main/dpad_boardcomputer_v2.h
Normal file
8
main/dpad_boardcomputer_v2.h
Normal file
@ -0,0 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
#ifdef DPAD_BOARDCOMPUTER_V2
|
||||
namespace dpad_boardcomputer_v2 {
|
||||
void init();
|
||||
void update();
|
||||
} // namespace dpad_boardcomputer_v2
|
||||
#endif
|
@ -185,11 +185,19 @@ public:
|
||||
ConfigWrapper<uint8_t> dpadMappingRight2 {INPUT_MAPPING_NONE, DoReset, {}, "dpadMapRight2" };
|
||||
ConfigWrapper<uint8_t> dpadMappingUp2 {INPUT_MAPPING_NONE, DoReset, {}, "dpadMapUp2" };
|
||||
ConfigWrapper<uint8_t> dpadMappingDown2 {INPUT_MAPPING_NONE, DoReset, {}, "dpadMapDown2" };
|
||||
ConfigWrapper<uint8_t> dpadMappingExtra1 {INPUT_MAPPING_NONE, DoReset, {}, "dpadMapExtra1" };
|
||||
ConfigWrapper<uint8_t> dpadMappingExtra2 {INPUT_MAPPING_NONE, DoReset, {}, "dpadMapExtra2" };
|
||||
ConfigWrapper<uint8_t> dpadMappingExtra3 {INPUT_MAPPING_NONE, DoReset, {}, "dpadMapExtra3" };
|
||||
ConfigWrapper<uint8_t> dpadMappingExtra4 {INPUT_MAPPING_NONE, DoReset, {}, "dpadMapExtra4" };
|
||||
|
||||
ConfigWrapper<BobbyQuickActions> quickActionLeft2{ BobbyQuickActions::BLINK_LEFT, DoReset, {}, "quickActleft2" };
|
||||
ConfigWrapper<BobbyQuickActions> quickActionRight2{ BobbyQuickActions::BLINK_RIGHT, DoReset, {}, "quickActright2" };
|
||||
ConfigWrapper<BobbyQuickActions> quickActionUp2{ BobbyQuickActions::NONE, DoReset, {}, "quickActup2" };
|
||||
ConfigWrapper<BobbyQuickActions> quickActionDown2{ BobbyQuickActions::HANDBREMSE, DoReset, {}, "quickActdown2" };
|
||||
ConfigWrapper<BobbyQuickActions> quickActionExtra1{ BobbyQuickActions::NONE, DoReset, {}, "quickActextra1" };
|
||||
ConfigWrapper<BobbyQuickActions> quickActionExtra2{ BobbyQuickActions::NONE, DoReset, {}, "quickActextra2" };
|
||||
ConfigWrapper<BobbyQuickActions> quickActionExtra3{ BobbyQuickActions::NONE, DoReset, {}, "quickActextra3" };
|
||||
ConfigWrapper<BobbyQuickActions> quickActionExtra4{ BobbyQuickActions::NONE, DoReset, {}, "quickActextra4" };
|
||||
|
||||
std::array<WirelessDoorsConfig, 5> wireless_door_configs {
|
||||
WirelessDoorsConfig { "door_id0", "door_token0" },
|
||||
@ -514,11 +522,19 @@ public:
|
||||
x(dpadMappingRight2) \
|
||||
x(dpadMappingUp2) \
|
||||
x(dpadMappingDown2) \
|
||||
x(dpadMappingExtra1) \
|
||||
x(dpadMappingExtra2) \
|
||||
x(dpadMappingExtra3) \
|
||||
x(dpadMappingExtra4) \
|
||||
\
|
||||
x(quickActionLeft2) \
|
||||
x(quickActionRight2) \
|
||||
x(quickActionUp2) \
|
||||
x(quickActionDown2) \
|
||||
x(quickActionExtra1) \
|
||||
x(quickActionExtra2) \
|
||||
x(quickActionExtra3) \
|
||||
x(quickActionExtra4) \
|
||||
\
|
||||
x(wireless_door_configs[0].doorId) \
|
||||
x(wireless_door_configs[0].doorToken) \
|
||||
@ -637,7 +653,11 @@ public:
|
||||
x(lockscreen.pin[0]) \
|
||||
x(lockscreen.pin[1]) \
|
||||
x(lockscreen.pin[2]) \
|
||||
x(lockscreen.pin[3]) \
|
||||
x(lockscreen.pin[3])\
|
||||
x(lockscreen.pin2[0]) \
|
||||
x(lockscreen.pin2[1]) \
|
||||
x(lockscreen.pin2[2]) \
|
||||
x(lockscreen.pin2[3]) \
|
||||
\
|
||||
x(savedStatistics.totalCentimeters) \
|
||||
\
|
||||
|
@ -23,6 +23,9 @@
|
||||
#ifdef FEATURE_DPAD_6WIRESW
|
||||
#include "dpad6wire.h"
|
||||
#endif
|
||||
#ifdef DPAD_BOARDCOMPUTER_V2
|
||||
#include "dpad_boardcomputer_v2.h"
|
||||
#endif
|
||||
#ifdef FEATURE_ROTARY
|
||||
#include "rotary.h"
|
||||
#endif
|
||||
@ -80,6 +83,9 @@ BobbySchedulerTask schedulerTasksArr[] {
|
||||
#ifdef FEATURE_DPAD_6WIRESW
|
||||
BobbySchedulerTask { "dpad6wire", dpad6wire::init, dpad6wire::update, 20ms },
|
||||
#endif
|
||||
#ifdef DPAD_BOARDCOMPUTER_V2
|
||||
BobbySchedulerTask { "dpad_boardcomputer_v2", dpad_boardcomputer_v2::init, dpad_boardcomputer_v2::update, 20ms },
|
||||
#endif
|
||||
#ifdef FEATURE_ROTARY
|
||||
BobbySchedulerTask { "rotary", initRotary, updateRotary, 20ms },
|
||||
#endif
|
||||
|
1812
sdkconfig_comred_new
Normal file
1812
sdkconfig_comred_new
Normal file
File diff suppressed because it is too large
Load Diff
@ -10,6 +10,7 @@ VALID_CONFIGS=(
|
||||
"allfeatures"
|
||||
"seatbot"
|
||||
"gernot"
|
||||
"comred_new"
|
||||
)
|
||||
|
||||
print_usage() {
|
||||
|
Reference in New Issue
Block a user