/*---------------------------------------------------------*\ | RGBController_EVisionV2Keyboard.h | | | | RGBController for EVision V2 keyboard | | | | Le Philousophe 25 Dec 2022 | | | | This file is part of the OpenRGB project | | SPDX-License-Identifier: GPL-2.0-or-later | \*---------------------------------------------------------*/ #pragma once #include #include "LogManager.h" #include "RGBController.h" #include "EVisionV2KeyboardController.h" class RGBController_EVisionV2Keyboard : public RGBController { public: RGBController_EVisionV2Keyboard(EVisionV2KeyboardController* controller_ptr, EVisionV2KeyboardPart kb_part); ~RGBController_EVisionV2Keyboard(); void SetupZones(); void DeviceUpdateLEDs(); void DeviceUpdateZoneLEDs(int zone); void DeviceUpdateSingleLED(int led); void DeviceUpdateMode(); void DeviceSaveMode(); private: void SetupKeyboardModes(); void SetupLogoEdgeModes(); void SetupEdgeModes(); void LoadConfig(); void KeepaliveThread(); EVisionV2KeyboardController* controller; EVisionV2KeyboardPart part; EVisionV2KeyboardLayout layout; std::thread* keepalive_thread; std::atomic keepalive_thread_run; std::atomic has_color_set; std::chrono::time_point last_update_time; };