#pragma once #include #include #include #include #include #include "../../activities/Activity.h" #include "AppRunner.h" class AppActivity final : public Activity { TaskHandle_t displayTaskHandle = nullptr; TaskHandle_t appTaskHandle = nullptr; SemaphoreHandle_t renderingMutex = nullptr; bool updateRequired = false; const std::function onGoHome; static void taskTrampoline(void* param); static void taskAppTrampoline(void* param); [[noreturn]] void displayTaskLoop(); [[noreturn]] void appTaskLoop(); void render() const; void startProgram(std::string programName); public: explicit AppActivity(GfxRenderer& renderer, MappedInputManager& mappedInput, const std::function& onGoHome) : Activity("Settings", renderer, mappedInput), onGoHome(onGoHome) {} void onEnter() override; void onExit() override; void loop() override; GfxRenderer& getRenderer() { return renderer; } MappedInputManager& getMappedInput() { return mappedInput; } // state std::vector programs; size_t selectedIdx = 0; };