/* * Copyright 2023 jacqueline * * SPDX-License-Identifier: GPL-3.0-only */ #pragma once #include #include #include #include #include "core/lv_group.h" #include "feedback_device.hpp" #include "gpios.hpp" #include "hal/lv_hal_indev.h" #include "input_device.hpp" #include "nvs.hpp" #include "service_locator.hpp" #include "touchwheel.hpp" namespace input { /* * Implementation of an LVGL input device. This class composes multiple * IInputDevice and IFeedbackDevice instances together into a single LVGL * device. */ class LvglInputDriver { public: LvglInputDriver(std::shared_ptr); auto read(lv_indev_data_t* data) -> void; auto feedback(uint8_t) -> void; auto registration() -> lv_indev_t* { return registration_; } auto lock(bool l) -> void { is_locked_ = l; } private: std::shared_ptr services_; lv_indev_drv_t driver_; lv_indev_t* registration_; std::vector> inputs_; std::vector> feedbacks_; bool is_locked_; }; } // namespace input