diff --git a/Platformio/.vscode/settings.json b/Platformio/.vscode/settings.json index bd2f082..df05048 100644 --- a/Platformio/.vscode/settings.json +++ b/Platformio/.vscode/settings.json @@ -53,5 +53,6 @@ "typeinfo": "cpp" }, "cmake.sourceDirectory": "${workspaceFolder}/.pio/libdeps/esp32/Adafruit BusIO", - "editor.formatOnSave": false + "editor.formatOnSave": false, + "idf.portWin": "COM8" } \ No newline at end of file diff --git a/Platformio/src/HardwareRevX.cpp b/Platformio/src/HardwareRevX.cpp index dfffa64..82df3e3 100644 --- a/Platformio/src/HardwareRevX.cpp +++ b/Platformio/src/HardwareRevX.cpp @@ -62,49 +62,46 @@ HardwareRevX::WakeReason getWakeReason() { } void HardwareRevX::init() { - // Make sure ESP32 is running at full speed setCpuFrequencyMhz(240); - Serial.begin(115200); wakeup_reason = getWakeReason(); - setupTouchScreen(); - - slowDisplayWakeup(); - initIO(); - restorePreferences(); setupBacklight(); + Serial.begin(115200); + restorePreferences(); + slowDisplayWakeup(); setupTFT(); + setupTouchScreen(); + initLVGL(); + setupWifi(); setupIMU(); setupIR(); - initLVGL(); + debugPrint(std::string("Finished Hardware Setup in %d",millis())); } void HardwareRevX::initLVGL() { - { - lv_init(); + lv_init(); - lv_disp_draw_buf_init(&mdraw_buf, mbufA, mbufB, - SCREEN_WIDTH * SCREEN_HEIGHT / 10); + lv_disp_draw_buf_init(&mdraw_buf, mbufA, mbufB, + SCREEN_WIDTH * SCREEN_HEIGHT / 10); - // Initialize the display driver - static lv_disp_drv_t disp_drv; - lv_disp_drv_init(&disp_drv); - disp_drv.hor_res = SCREEN_WIDTH; - disp_drv.ver_res = SCREEN_HEIGHT; - disp_drv.flush_cb = &HardwareRevX::displayFlushImpl; - disp_drv.draw_buf = &mdraw_buf; - lv_disp_drv_register(&disp_drv); + // Initialize the display driver + static lv_disp_drv_t disp_drv; + lv_disp_drv_init(&disp_drv); + disp_drv.hor_res = SCREEN_WIDTH; + disp_drv.ver_res = SCREEN_HEIGHT; + disp_drv.flush_cb = &HardwareRevX::displayFlushImpl; + disp_drv.draw_buf = &mdraw_buf; + lv_disp_drv_register(&disp_drv); - // Initialize the touchscreen driver - static lv_indev_drv_t indev_drv; - lv_indev_drv_init(&indev_drv); - indev_drv.type = LV_INDEV_TYPE_POINTER; - indev_drv.read_cb = &HardwareRevX::touchPadReadImpl; - lv_indev_drv_register(&indev_drv); - } + // Initialize the touchscreen driver + static lv_indev_drv_t indev_drv; + lv_indev_drv_init(&indev_drv); + indev_drv.type = LV_INDEV_TYPE_POINTER; + indev_drv.read_cb = &HardwareRevX::touchPadReadImpl; + lv_indev_drv_register(&indev_drv); } void HardwareRevX::displayFlush(lv_disp_drv_t *disp, const lv_area_t *area, @@ -174,7 +171,6 @@ void HardwareRevX::activityDetection() { accZold = accZ; } -// Enter Sleep Mode void HardwareRevX::enterSleep() { // Save settings to internal flash memory preferences.putBool("wkpByIMU", wakeupByIMUEnabled); @@ -398,7 +394,7 @@ void HardwareRevX::setupWifi(){ #endif } -void HardwareRevX::handleLoop(){ +void HardwareRevX::loopHandler(){ // Update Backlight brightness static int fadeInTimer = millis(); // fadeInTimer = time after setup if (millis() < diff --git a/Platformio/src/HardwareRevX.hpp b/Platformio/src/HardwareRevX.hpp index 508c002..842286b 100644 --- a/Platformio/src/HardwareRevX.hpp +++ b/Platformio/src/HardwareRevX.hpp @@ -35,7 +35,7 @@ public: HardwareRevX() : HardwareAbstractionInterface(){}; - virtual void debugPrint(std::string aDebugMessage) override {} + virtual void debugPrint(std::string aDebugMessage) override {Serial.print(aDebugMessage.c_str());} virtual void sendIR() override {} @@ -43,43 +43,35 @@ public: virtual void init(); - void handleLoop(); + void loopHandler(); protected: - virtual void initLVGL(); - + // Init Functions to setup hardware void initIO(); + void setupBacklight(); + void restorePreferences(); + void slowDisplayWakeup(); + void setupTFT(); + void setupTouchScreen(); + void initLVGL(); + void setupIMU(); + void setupIR(); + void setupWifi(); + void activityDetection(); + void enterSleep(); + void configIMUInterrupts(); + + // UI/UX Handlers void displayFlush(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p); void touchPadRead(lv_indev_drv_t *indev_driver, lv_indev_data_t *data); - void activityDetection(); - - void enterSleep(); - - void configIMUInterrupts(); - - void setupBacklight(); - - void restorePreferences(); - - void setupTFT(); - - void setupTouchScreen(); - - void setupIMU(); - - void slowDisplayWakeup(); - - void setupWifi(); - - void setupIR(); - void handleWifiEvent(WiFiEvent_t event); private: + // Static Wrappers Needed to Satisfy C APIs static void WiFiEvent(WiFiEvent_t event){ mInstance->handleWifiEvent(event); } @@ -154,10 +146,5 @@ private: byte virtualKeyMapTechnisat[10] = {0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0x0}; - - - - - static std::shared_ptr mInstance; }; \ No newline at end of file diff --git a/Platformio/src/main.cpp b/Platformio/src/main.cpp index bd62623..aa4110d 100644 --- a/Platformio/src/main.cpp +++ b/Platformio/src/main.cpp @@ -27,7 +27,7 @@ void setup() { void loop() { - HardwareRevX::getInstance()->handleLoop(); + HardwareRevX::getInstance()->loopHandler(); // IR Test // tft.drawString("IR Command: ", 10, 90, 1); // decode_results results;