// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once #include namespace hal::key_input { class LinuxKeyInput : public AbstractKeyInput { using KeyEvents = std::vector; static constexpr auto keyDataSize = 2U; using KeyData = std::array; public: LinuxKeyInput(); void init(xQueueHandle qHandle) final; void deinit() final; std::vector getKeyEvents(KeyNotificationSource) final; private: void worker(); void addKeyEvent(KeyData data); void consumeBytes(std::uint8_t *buff, std::size_t size); std::optional translateSliderEvent(KeyData key); bool shouldRun{true}; KeyEvents keyEvents; xQueueHandle queueHandle{}; TaskHandle_t taskHandle{}; }; } // namespace hal::key_input