diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 46983f1..04d7236 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -167,6 +167,7 @@ set(headers modes/motortestmode.h modes/remotecontrolmode.h modes/tempomatmode.h + mosfets.h newsettings.h ota.h presets.h @@ -368,6 +369,7 @@ set(sources modes/motortestmode.cpp modes/remotecontrolmode.cpp modes/tempomatmode.cpp + mosfets.cpp newsettings.cpp ota.cpp presets.cpp diff --git a/main/buttons.cpp b/main/buttons.cpp index 5879359..a9c2670 100644 --- a/main/buttons.cpp +++ b/main/buttons.cpp @@ -16,6 +16,11 @@ int upPressRepeat{}; std::optional downPressedSince; int downPressRepeat{}; +void InputDispatcher::init() +{ + +} + void InputDispatcher::update() { if (upPressedSince && espchrono::ago(*upPressedSince) > (upPressRepeat > 2 ? 50ms : 400ms)) diff --git a/main/buttons.h b/main/buttons.h index c01876d..90eb642 100644 --- a/main/buttons.h +++ b/main/buttons.h @@ -32,6 +32,8 @@ extern int downPressRepeat; class InputDispatcher { public: + static void init(); + static void update(); static void rotate(int offset); diff --git a/main/main.cpp b/main/main.cpp index c8ca1a1..85ba933 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -8,7 +8,6 @@ constexpr const char * const TAG = "BOBBY"; #include // esp-idf includes -#include #include // Arduino includes @@ -26,22 +25,6 @@ using namespace std::chrono_literals; #include "macros_bobbycar.h" #include "globals.h" #include "screens.h" -#include "dpad.h" -#ifdef FEATURE_DPAD_3WIRESW -#include "dpad3wire.h" -#endif -#ifdef FEATURE_DPAD_5WIRESW -#include "dpad5wire.h" -#endif -#ifdef FEATURE_DPAD_5WIRESW_2OUT -#include "dpad5wire_2out.h" -#endif -#ifdef FEATURE_DPAD_6WIRESW -#include "dpad6wire.h" -#endif -#ifdef FEATURE_ROTARY -#include "rotary.h" -#endif #include "serialhandler.h" #ifdef FEATURE_OTA #include "ota.h" @@ -152,59 +135,12 @@ extern "C" void app_main() else ESP_LOGE("MAIN", "get_default_mac_addr() failed: %.*s", result.error().size(), result.error().data()); - for (const auto &task : schedulerTasks) { bootLabel.redraw(task.name()); task.setup(); } -#ifdef FEATURE_DPAD - bootLabel.redraw("dpad"); - dpad::init(); -#endif - -#ifdef FEATURE_DPAD_3WIRESW - bootLabel.redraw("dpad3wire"); - dpad3wire::init(); -#endif - -#ifdef FEATURE_DPAD_5WIRESW - bootLabel.redraw("dpad5wire"); - dpad5wire::init(); -#endif - -#ifdef FEATURE_DPAD_5WIRESW_2OUT - bootLabel.redraw("dpad5wire_2out"); - dpad5wire_2out::init(); -#endif - -#ifdef FEATURE_DPAD_6WIRESW - bootLabel.redraw("dpad6wire"); - dpad6wire::init(); -#endif - -#ifdef FEATURE_ROTARY - bootLabel.redraw("rotary"); - initRotary(); -#endif - -#ifdef FEATURE_MOSFETS - bootLabel.redraw("mosfets"); - pinMode(PINS_MOSFET0, OUTPUT); - pinMode(PINS_MOSFET1, OUTPUT); - pinMode(PINS_MOSFET2, OUTPUT); - - digitalWrite(PINS_MOSFET0, LOW); - digitalWrite(PINS_MOSFET1, LOW); - digitalWrite(PINS_MOSFET2, LOW); -#endif - -#ifdef FEATURE_SERIAL - bootLabel.redraw("swap front back"); - updateSwapFrontBack(); -#endif - #ifdef FEATURE_BLUETOOTH if (settings.bluetoothSettings.autoBluetoothMode == BluetoothMode::Master) { @@ -236,6 +172,9 @@ extern "C" void app_main() bootLabel.redraw("back Serial begin"); controllers.back.serial.get().begin(38400, SERIAL_8N1, PINS_RX2, PINS_TX2); + + bootLabel.redraw("swap front back"); + updateSwapFrontBack(); #endif #ifdef FEATURE_LEDSTRIP @@ -307,26 +246,6 @@ extern "C" void app_main() } - InputDispatcher::update(); - -#ifdef FEATURE_DPAD - dpad::update(); -#endif - -#ifdef FEATURE_DPAD_3WIRESW - dpad3wire::update(); -#endif - -#ifdef FEATURE_DPAD_5WIRESW - dpad5wire::update(); -#endif -#ifdef FEATURE_DPAD_5WIRESW_2OUT - dpad5wire_2out::update(); -#endif -#ifdef FEATURE_DPAD_6WIRESW - dpad6wire::update(); -#endif - if (!lastPotiRead || now - *lastPotiRead >= 1000ms/settings.boardcomputerHardware.timersSettings.potiReadRate) { readPotis(); diff --git a/main/mosfets.cpp b/main/mosfets.cpp new file mode 100644 index 0000000..0fd6f59 --- /dev/null +++ b/main/mosfets.cpp @@ -0,0 +1,22 @@ +#include "mosfets.h" + +// Arduino includes +#include + +#ifdef FEATURE_MOSFETS +void init_mosfets() +{ + pinMode(PINS_MOSFET0, OUTPUT); + pinMode(PINS_MOSFET1, OUTPUT); + pinMode(PINS_MOSFET2, OUTPUT); + + digitalWrite(PINS_MOSFET0, LOW); + digitalWrite(PINS_MOSFET1, LOW); + digitalWrite(PINS_MOSFET2, LOW); +} + +void update_mosfets() +{ + +} +#endif diff --git a/main/mosfets.h b/main/mosfets.h new file mode 100644 index 0000000..bda3578 --- /dev/null +++ b/main/mosfets.h @@ -0,0 +1,6 @@ +#pragma once + +#ifdef FEATURE_MOSFETS +void init_mosfets(); +void update_mosfets(); +#endif diff --git a/main/rotary.h b/main/rotary.h index 526d7a1..e1d7307 100644 --- a/main/rotary.h +++ b/main/rotary.h @@ -84,5 +84,10 @@ void initRotary() attachInterrupt(decltype(rotary)::ClkPin, updateRotate, CHANGE); attachInterrupt(decltype(rotary)::SwPin, updateSwitch, CHANGE); } + +void updateRotary() +{ + +} #endif } diff --git a/main/taskmanager.cpp b/main/taskmanager.cpp index 838ac8c..a5530cc 100644 --- a/main/taskmanager.cpp +++ b/main/taskmanager.cpp @@ -1,5 +1,7 @@ #include "taskmanager.h" +#include "sdkconfig.h" + // system includes #include #include @@ -12,6 +14,26 @@ // local includes #include "wifi_bobbycar.h" +#include "buttons.h" +#include "dpad.h" +#ifdef FEATURE_DPAD_3WIRESW +#include "dpad3wire.h" +#endif +#ifdef FEATURE_DPAD_5WIRESW +#include "dpad5wire.h" +#endif +#ifdef FEATURE_DPAD_5WIRESW_2OUT +#include "dpad5wire_2out.h" +#endif +#ifdef FEATURE_DPAD_6WIRESW +#include "dpad6wire.h" +#endif +#ifdef FEATURE_ROTARY +#include "rotary.h" +#endif +#ifdef FEATURE_MOSFETS +#include "mosfets.h" +#endif using namespace std::chrono_literals; @@ -19,7 +41,29 @@ namespace { constexpr const char * const TAG = "TASKS"; espcpputils::SchedulerTask schedulerTasksArr[] { - espcpputils::SchedulerTask { "wifi", wifi_begin, wifi_update, 100ms }, + espcpputils::SchedulerTask { "wifi", wifi_begin, wifi_update, 100ms }, + espcpputils::SchedulerTask { "input", InputDispatcher::init, InputDispatcher::update, {} }, +#ifdef FEATURE_DPAD + espcpputils::SchedulerTask { "dpad", dpad::init, dpad::update, {} }, +#endif +#ifdef FEATURE_DPAD_3WIRESW + espcpputils::SchedulerTask { "dpad3wire", dpad3wire::init, dpad3wire::update, {} }, +#endif +#ifdef FEATURE_DPAD_5WIRESW + espcpputils::SchedulerTask { "dpad5wire", dpad5wire::init, dpad5wire::update, {} }, +#endif +#ifdef FEATURE_DPAD_5WIRESW_2OUT + espcpputils::SchedulerTask { "dpad5wire_2out", dpad5wire_2out::init, dpad5wire_2out::update, {} }, +#endif +#ifdef FEATURE_DPAD_6WIRESW + espcpputils::SchedulerTask { "dpad6wire", dpad6wire::init, dpad6wire::update, {} }, +#endif +#ifdef FEATURE_ROTARY + espcpputils::SchedulerTask { "rotary", initRotary, updateRotary, {} }, +#endif +#ifdef FEATURE_MOSFETS + espcpputils::SchedulerTask { "mosfets", init_mosfets, update_mosfets, {} }, +#endif }; } // namespace