diff --git a/RGBController/RGBController.cpp b/RGBController/RGBController.cpp index e49472984..3a8d37829 100644 --- a/RGBController/RGBController.cpp +++ b/RGBController/RGBController.cpp @@ -58,6 +58,7 @@ zone::~zone() RGBController::RGBController() { + translation = NULL; DeviceThreadRunning = true; DeviceCallThread = new std::thread(&RGBController::DeviceCallThreadFunction, this); } @@ -74,6 +75,123 @@ RGBController::~RGBController() modes.clear(); } +std::string RGBController::GetName() +{ + if(translation != NULL) + { + if(translation->name != "") + { + return(translation->name); + } + } + + return(name); +} + +std::string RGBController::GetVendor() +{ + if(translation != NULL) + { + if(translation->vendor != "") + { + return(translation->vendor); + } + } + + return(vendor); +} + +std::string RGBController::GetDescription() +{ + if(translation != NULL) + { + if(translation->description != "") + { + return(translation->description); + } + } + + return(description); +} + +std::string RGBController::GetVersion() +{ + if(translation != NULL) + { + if(translation->version != "") + { + return(translation->version); + } + } + + return(version); +} + +std::string RGBController::GetSerial() +{ + if(translation != NULL) + { + if(translation->serial != "") + { + return(translation->serial); + } + } + + return(serial); +} + +std::string RGBController::GetLocation() +{ + if(translation != NULL) + { + if(translation->location != "") + { + return(translation->location); + } + } + + return(location); +} + +std::string RGBController::GetModeName(unsigned int mode) +{ + if(translation != NULL) + { + if(translation->modes[mode] != "") + { + return(translation->modes[mode]); + } + } + + return(modes[mode].name); +} + +std::string RGBController::GetZoneName(unsigned int zone) +{ + if(translation != NULL) + { + if(translation->zones[zone] != "") + { + return(translation->zones[zone]); + } + } + + return(zones[zone].name); +} + +std::string RGBController::GetLEDName(unsigned int led) +{ + if(translation != NULL) + { + if(translation->leds[led] != "") + { + return(translation->leds[led]); + } + } + + return(leds[led].name); +} + unsigned char * RGBController::GetDeviceDescription(unsigned int protocol_version) { unsigned int data_ptr = 0; diff --git a/RGBController/RGBController.h b/RGBController/RGBController.h index 208bdf3ff..cc6d9fb50 100644 --- a/RGBController/RGBController.h +++ b/RGBController/RGBController.h @@ -215,6 +215,26 @@ enum DEVICE_TYPE_UNKNOWN, }; +/*------------------------------------------------------------------*\ +| Translation Data Struct | +| Leave string empty if no translation provided | +| If translation data is used, modes/zones/leds vectors must be | +| resized to match the modes/zones/leds vectors in the main class | +\*------------------------------------------------------------------*/ + +typedef struct +{ + std::string name; /* controller name */ + std::string vendor; /* controller vendor */ + std::string description;/* controller description */ + std::string version; /* controller version */ + std::string serial; /* controller serial number */ + std::string location; /* controller location */ + std::vector modes; /* mode names */ + std::vector zones; /* zone names */ + std::vector leds; /* led names */ +} translation_data; + /*------------------------------------------------------------------*\ | RGBController Callback Types | \*------------------------------------------------------------------*/ @@ -228,6 +248,16 @@ public: virtual void SetupColors() = 0; virtual unsigned int GetLEDsInZone(unsigned int zone) = 0; + virtual std::string GetName() = 0; + virtual std::string GetVendor() = 0; + virtual std::string GetDescription() = 0; + virtual std::string GetVersion() = 0; + virtual std::string GetSerial() = 0; + virtual std::string GetLocation() = 0; + + virtual std::string GetModeName(unsigned int mode) = 0; + virtual std::string GetZoneName(unsigned int zone) = 0; + virtual std::string GetLEDName(unsigned int led) = 0; virtual RGBColor GetLED(unsigned int led) = 0; virtual void SetLED(unsigned int led, RGBColor color) = 0; @@ -298,6 +328,7 @@ public: std::vector colors; /* Color buffer */ device_type type; /* device type */ int active_mode = 0;/* active mode */ + translation_data* translation; /* optional translation data*/ /*---------------------------------------------------------*\ | RGBController base class constructor | @@ -311,6 +342,16 @@ public: void SetupColors(); unsigned int GetLEDsInZone(unsigned int zone); + std::string GetName(); + std::string GetVendor(); + std::string GetDescription(); + std::string GetVersion(); + std::string GetSerial(); + std::string GetLocation(); + + std::string GetModeName(unsigned int mode); + std::string GetZoneName(unsigned int zone); + std::string GetLEDName(unsigned int led); RGBColor GetLED(unsigned int led); void SetLED(unsigned int led, RGBColor color);