/*---------------------------------------------------------*\ | LEDStripController.h | | | | Driver for serial LED strips | | | | Adam Honse (calcprogrammer1@gmail.com) Dec 11 2016 | | | | This file is part of the OpenRGB project | | SPDX-License-Identifier: GPL-2.0-or-later | \*---------------------------------------------------------*/ #pragma once #include #include "RGBController.h" #include "i2c_smbus.h" #include "serial_port.h" #include "net_port.h" #ifndef TRUE #define TRUE true #define FALSE false #endif #ifndef WIN32 #define LPSTR char * #define strtok_s strtok_r #endif typedef unsigned int led_protocol; enum { LED_PROTOCOL_KEYBOARD_VISUALIZER, LED_PROTOCOL_ADALIGHT, LED_PROTOCOL_TPM2, LED_PROTOCOL_BASIC_I2C }; struct LEDStripDevice { std::string name; std::string port; unsigned int baud = 0; unsigned int num_leds = 0; led_protocol protocol; }; class LEDStripController { public: LEDStripController(std::string dev_name); ~LEDStripController(); void Initialize(char* ledstring, led_protocol proto); void InitializeI2C(char* i2cname); void InitializeSerial(char* portname, int baud); void InitializeUDP(char* clientname, char* port); char* GetLEDString(); std::string GetLocation(); std::string GetName(); void SetLEDs(std::vector colors); void SetLEDsKeyboardVisualizer(std::vector colors); void SetLEDsAdalight(std::vector colors); void SetLEDsTPM2(std::vector colors); void SetLEDsBasicI2C(std::vector colors); int num_leds; private: int baud_rate; char led_string[1024]; std::string port_name; std::string client_name; std::string name; serial_port *serialport; net_port *udpport; i2c_smbus_interface *i2cport; unsigned char i2c_addr; led_protocol protocol; };