From 4f0cf752f5c123137cc482e86f3b6895e21904ac Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Thu, 13 Aug 2020 22:19:14 -0500 Subject: [PATCH] Add e131.txt parser for matrix configuration. --- RGBController/E131ControllerDetect.cpp | 47 ++++++++++++++++++++++++++ RGBController/RGBController_E131.h | 45 ++++++++++++++++-------- 2 files changed, 78 insertions(+), 14 deletions(-) diff --git a/RGBController/E131ControllerDetect.cpp b/RGBController/E131ControllerDetect.cpp index 86c2b8394..fbeb9dcab 100644 --- a/RGBController/E131ControllerDetect.cpp +++ b/RGBController/E131ControllerDetect.cpp @@ -136,6 +136,53 @@ void DetectE131Controllers(std::vector &rgb_controllers) dev.rgb_order = atoi(value); } } + else if(strcmp(argument, "matrix_order") == 0) + { + if(strcmp(value, "HORIZONTAL_TOP_LEFT") == 0) + { + dev.matrix_order = E131_MATRIX_ORDER_HORIZONTAL_TOP_LEFT; + } + else if(strcmp(value, "HORIZONTAL_TOP_RIGHT") == 0) + { + dev.matrix_order = E131_MATRIX_ORDER_HORIZONTAL_TOP_RIGHT; + } + else if(strcmp(value, "HORIZONTAL_BOTTOM_LEFT") == 0) + { + dev.matrix_order = E131_MATRIX_ORDER_HORIZONTAL_BOTTOM_LEFT; + } + else if(strcmp(value, "HORIZONTAL_BOTTOM_RIGHT") == 0) + { + dev.matrix_order = E131_MATRIX_ORDER_HORIZONTAL_BOTTOM_RIGHT; + } + else if(strcmp(value, "VERTICAL_TOP_LEFT") == 0) + { + dev.matrix_order = E131_MATRIX_ORDER_VERTICAL_TOP_LEFT; + } + else if(strcmp(value, "VERTICAL_TOP_RIGHT") == 0) + { + dev.matrix_order = E131_MATRIX_ORDER_VERTICAL_TOP_RIGHT; + } + else if(strcmp(value, "VERTICAL_BOTTOM_LEFT") == 0) + { + dev.matrix_order = E131_MATRIX_ORDER_VERTICAL_BOTTOM_LEFT; + } + else if(strcmp(value, "VERTICAL_BOTTOM_RIGHT") == 0) + { + dev.matrix_order = E131_MATRIX_ORDER_VERTICAL_BOTTOM_RIGHT; + } + else + { + dev.matrix_order = atoi(value); + } + } + else if(strcmp(argument, "matrix_width") == 0) + { + dev.matrix_width = atoi(value); + } + else if(strcmp(argument, "matrix_height") == 0) + { + dev.matrix_height = atoi(value); + } else if(strcmp(argument, "type") == 0) { if(strcmp(value, "SINGLE") == 0) diff --git a/RGBController/RGBController_E131.h b/RGBController/RGBController_E131.h index c1cf0f899..660f911e1 100644 --- a/RGBController/RGBController_E131.h +++ b/RGBController/RGBController_E131.h @@ -14,23 +14,40 @@ typedef unsigned int e131_rgb_order; enum - { - E131_RGB_ORDER_RGB, - E131_RGB_ORDER_RBG, - E131_RGB_ORDER_GRB, - E131_RGB_ORDER_GBR, - E131_RGB_ORDER_BRG, - E131_RGB_ORDER_BGR - }; +{ + E131_RGB_ORDER_RGB, + E131_RGB_ORDER_RBG, + E131_RGB_ORDER_GRB, + E131_RGB_ORDER_GBR, + E131_RGB_ORDER_BRG, + E131_RGB_ORDER_BGR +}; + +enum +{ + E131_MATRIX_ORDER_HORIZONTAL_TOP_LEFT, + E131_MATRIX_ORDER_HORIZONTAL_TOP_RIGHT, + E131_MATRIX_ORDER_HORIZONTAL_BOTTOM_LEFT, + E131_MATRIX_ORDER_HORIZONTAL_BOTTOM_RIGHT, + E131_MATRIX_ORDER_VERTICAL_TOP_LEFT, + E131_MATRIX_ORDER_VERTICAL_TOP_RIGHT, + E131_MATRIX_ORDER_VERTICAL_BOTTOM_LEFT, + E131_MATRIX_ORDER_VERTICAL_BOTTOM_RIGHT +}; + +typedef unsigned int e131_matrix_order; struct E131Device { - std::string name; - unsigned int num_leds; - unsigned int start_universe; - unsigned int start_channel; - e131_rgb_order rgb_order; - zone_type type; + std::string name; + unsigned int num_leds; + unsigned int start_universe; + unsigned int start_channel; + e131_rgb_order rgb_order; + zone_type type; + unsigned int matrix_width; + unsigned int matrix_height; + e131_matrix_order matrix_order; }; class RGBController_E131 : public RGBController