diff --git a/OpenAuraSDK/AuraController.cpp b/OpenAuraSDK/AuraController.cpp index 21bef64a..b76c8926 100644 --- a/OpenAuraSDK/AuraController.cpp +++ b/OpenAuraSDK/AuraController.cpp @@ -60,6 +60,7 @@ AuraController::AuraController(i2c_smbus_interface* bus, aura_dev_id dev) led_count = 5; } + UpdateRGBController(); } AuraController::~AuraController() @@ -175,4 +176,54 @@ void AuraController::AuraRegisterWriteBlock(aura_register reg, unsigned char * d //Write Aura block data bus->i2c_smbus_write_block_data(dev, 0x03, sz, data); +} + +void AuraController::UpdateRGBController() +{ + rgb.name = device_name; + + mode aura_modes[AURA_NUMBER_MODES]; + + aura_modes[0].name = "Off"; + aura_modes[1].name = "Static"; + aura_modes[2].name = "Breathing"; + aura_modes[3].name = "Flashing"; + aura_modes[4].name = "Spectrum Cycle"; + aura_modes[5].name = "Rainbow"; + aura_modes[6].name = "Spectrum Cycle Breathing"; + aura_modes[7].name = "Chase Fade"; + aura_modes[8].name = "Spectrum Cycle Chase Fade"; + aura_modes[9].name = "Chase"; + aura_modes[10].name = "Spectrum Cycle Chase"; + aura_modes[11].name = "Spectrum Cycle Wave"; + aura_modes[12].name = "Chase Rainbow Pulse"; + aura_modes[13].name = "Random Flicker"; + + for (int i = 0; i < AURA_NUMBER_MODES; i++) + { + rgb.modes.push_back(aura_modes[i]); + } + + for (int i = 0; i < led_count; i++) + { + led* new_led = new led(); + + new_led->name = "Aura LED"; + + rgb.leds.push_back(*new_led); + } + + zone new_zone; + + new_zone.name = "Aura Zone"; + new_zone.type = ZONE_TYPE_LINEAR; + + std::vector zone_row; + + for (int i = 0; i < led_count; i++) + { + zone_row.push_back(i); + } + + new_zone.map.push_back(zone_row); } \ No newline at end of file diff --git a/OpenAuraSDK/AuraController.h b/OpenAuraSDK/AuraController.h index 3ba06da9..a4311705 100644 --- a/OpenAuraSDK/AuraController.h +++ b/OpenAuraSDK/AuraController.h @@ -8,6 +8,7 @@ \*-----------------------------------------*/ #include "i2c_smbus.h" +#include "RGBController.h" #pragma once @@ -46,6 +47,7 @@ enum AURA_MODE_SPECTRUM_CYCLE_WAVE = 11, /* Wave effect mode */ AURA_MODE_CHASE_RAINBOW_PULSE = 12, /* Chase with Rainbow Pulse effect mode*/ AURA_MODE_RANDOM_FLICKER = 13, /* Random flicker effect mode */ + AURA_NUMBER_MODES /* Number of Aura modes */ }; class AuraController @@ -77,5 +79,6 @@ private: i2c_smbus_interface * bus; aura_dev_id dev; - + RGBController rgb; + void UpdateRGBController(); }; \ No newline at end of file diff --git a/OpenAuraSDK/OpenAuraSDK.vcxproj b/OpenAuraSDK/OpenAuraSDK.vcxproj index 9922f313..b6c90f3a 100644 --- a/OpenAuraSDK/OpenAuraSDK.vcxproj +++ b/OpenAuraSDK/OpenAuraSDK.vcxproj @@ -186,6 +186,7 @@ + diff --git a/OpenAuraSDK/OpenAuraSDK.vcxproj.filters b/OpenAuraSDK/OpenAuraSDK.vcxproj.filters index 34e09051..59b828df 100644 --- a/OpenAuraSDK/OpenAuraSDK.vcxproj.filters +++ b/OpenAuraSDK/OpenAuraSDK.vcxproj.filters @@ -45,6 +45,9 @@ Header Files + + Header Files + diff --git a/OpenAuraSDK/RGBController.h b/OpenAuraSDK/RGBController.h new file mode 100644 index 00000000..e046529a --- /dev/null +++ b/OpenAuraSDK/RGBController.h @@ -0,0 +1,49 @@ +/*-----------------------------------------*\ +| RGBController.h | +| | +| Definitions and types for generic RGB | +| lighting controller interface | +| | +| Adam Honse (CalcProgrammer1) 6/2/2019 | +\*-----------------------------------------*/ + +#pragma once + +#include +#include + +typedef struct +{ + std::string name; /* LED name */ +} led; + +typedef struct +{ + std::string name; /* Mode name */ +} mode; + +typedef int zone_type; + +enum +{ + ZONE_TYPE_SINGLE, + ZONE_TYPE_LINEAR, + ZONE_TYPE_MATRIX +}; + +typedef struct +{ + std::string name; /* Zone name */ + zone_type type; /* Zone type */ + std::vector> + map; /* LED index map */ +} zone; + +class RGBController +{ +public: + std::string name; /* controller name */ + std::vector leds; /* LEDs */ + std::vector zones; /* Zones */ + std::vector modes; /* Modes */ +}; \ No newline at end of file