diff --git a/OpenAuraSDK/CorsairController.cpp b/OpenAuraSDK/CorsairController.cpp new file mode 100644 index 00000000..708b8710 --- /dev/null +++ b/OpenAuraSDK/CorsairController.cpp @@ -0,0 +1,44 @@ +/*-----------------------------------------*\ +| CorsairController.h | +| | +| Driver for Corsair Vengeance RGB RAM | +| lighting controller | +| | +| Adam Honse (CalcProgrammer1) 3/8/2019 | +\*-----------------------------------------*/ + +#include "CorsairController.h" +#include + +CorsairController::CorsairController(i2c_smbus_interface* bus, corsair_dev_id dev) +{ + this->bus = bus; + this->dev = dev; + + strcpy(device_name, "Corsair Vengeance RGB"); + led_count = 1; +} + +CorsairController::~CorsairController() +{ + +} + +char * CorsairController::GetDeviceName() +{ + return(device_name); +} + +unsigned int CorsairController::GetLEDCount() +{ + return(led_count); +} + +void CorsairController::SetAllColorsDirect(unsigned char red, unsigned char green, unsigned char blue) +{ + bus->i2c_smbus_write_byte_data(dev, CORSAIR_VENGEANCE_RGB_CMD_FADE_TIME, 0x00); + bus->i2c_smbus_write_byte_data(dev, CORSAIR_VENGEANCE_RGB_CMD_RED_VAL, red); + bus->i2c_smbus_write_byte_data(dev, CORSAIR_VENGEANCE_RGB_CMD_GREEN_VAL, green); + bus->i2c_smbus_write_byte_data(dev, CORSAIR_VENGEANCE_RGB_CMD_BLUE_VAL, blue); + bus->i2c_smbus_write_byte_data(dev, CORSAIR_VENGEANCE_RGB_CMD_MODE, CORSAIR_VENGEANCE_RGB_MODE_SINGLE); +} \ No newline at end of file diff --git a/OpenAuraSDK/CorsairController.h b/OpenAuraSDK/CorsairController.h new file mode 100644 index 00000000..91ab5508 --- /dev/null +++ b/OpenAuraSDK/CorsairController.h @@ -0,0 +1,51 @@ +/*-----------------------------------------*\ +| CorsairController.h | +| | +| Definitions and types for Corsair | +| Vengeance RGB RAM lighting controller | +| | +| Adam Honse (CalcProgrammer1) 3/8/2019 | +\*-----------------------------------------*/ + +#include "i2c_smbus.h" + +#pragma once + +typedef unsigned char corsair_dev_id; +typedef unsigned char corsair_cmd; + +enum +{ + CORSAIR_VENGEANCE_RGB_CMD_FADE_TIME = 0xA4, /* Fade Time, 0 for Static */ + CORSAIR_VENGEANCE_RGB_CMD_HOLD_TIME = 0xA5, /* Hold Time */ + CORSAIR_VENGEANCE_RGB_CMD_MODE = 0xA6, /* Mode Control Value */ + CORSAIR_VENGEANCE_RGB_CMD_RED_VAL = 0xB0, /* Red Color Value */ + CORSAIR_VENGEANCE_RGB_CMD_GREEN_VAL = 0xB1, /* Green Color Value */ + CORSAIR_VENGEANCE_RGB_CMD_BLUE_VAL = 0xB2, /* Blue Color Value */ +}; + +enum +{ + CORSAIR_VENGEANCE_RGB_MODE_SINGLE = 0x00, /* Single Color Effect Mode */ + CORSAIR_VENGEANCE_RGB_MODE_FADE = 0x01, /* Fade Through Colors */ + CORSAIR_VENGEANCE_RGB_MODE_PULSE = 0x02, /* Pulse Through Colors */ +}; + +class CorsairController +{ +public: + CorsairController(i2c_smbus_interface* bus, corsair_dev_id dev); + ~CorsairController(); + + char* GetDeviceName(); + unsigned int GetLEDCount(); + + void SetAllColorsDirect(unsigned char red, unsigned char green, unsigned char blue); + +private: + char device_name[32]; + unsigned int led_count; + i2c_smbus_interface * bus; + corsair_dev_id dev; + +}; \ No newline at end of file