From bf5ce6c2390fe153263734e7a432b9c6161cb088 Mon Sep 17 00:00:00 2001 From: Dracrius Date: Wed, 9 Mar 2022 19:49:04 +0000 Subject: [PATCH] Fixed an issue with the Philips Hue Entertainment Groups --- .../PhilipsHueControllerDetect.cpp | 14 +++++++++++++ .../RGBController_PhilipsHueEntertainment.cpp | 21 ++++++++++++++++--- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/Controllers/PhilipsHueController/PhilipsHueControllerDetect.cpp b/Controllers/PhilipsHueController/PhilipsHueControllerDetect.cpp index 90df6464..6678fa26 100644 --- a/Controllers/PhilipsHueController/PhilipsHueControllerDetect.cpp +++ b/Controllers/PhilipsHueController/PhilipsHueControllerDetect.cpp @@ -194,6 +194,20 @@ void DetectPhilipsHueControllers(std::vector& rgb_controllers) rgb_controllers.push_back(new_rgbcontroller); } } + + /*-------------------------------------------------*\ + | Loop through RGB Controllers to find the first | + | Entertainment group and Set it to "Connect", | + | as only one Stream can be open at a time. | + \*-------------------------------------------------*/ + for (unsigned int controller_idx = 0; controller_idx < rgb_controllers.size(); controller_idx++) + { + if (rgb_controllers[controller_idx]->description == "Philips Hue Entertainment Mode Device") + { + rgb_controllers[controller_idx]->SetMode(0); + break; + } + } } } diff --git a/Controllers/PhilipsHueController/RGBController_PhilipsHueEntertainment.cpp b/Controllers/PhilipsHueController/RGBController_PhilipsHueEntertainment.cpp index d0cf53d2..dd021bd3 100644 --- a/Controllers/PhilipsHueController/RGBController_PhilipsHueEntertainment.cpp +++ b/Controllers/PhilipsHueController/RGBController_PhilipsHueEntertainment.cpp @@ -8,6 +8,7 @@ \*-----------------------------------------*/ #include "RGBController_PhilipsHueEntertainment.h" +#include "ResourceManager.h" using namespace std::chrono_literals; @@ -38,8 +39,12 @@ RGBController_PhilipsHueEntertainment::RGBController_PhilipsHueEntertainment(Phi SetupZones(); - active_mode = 0; - light->Connect(); + /*-----------------------------------------------------------------------------------------------------*\ + | The Philips Hue Entertainment Mode only supports one stream at a time. So we must start Disconnected. | + | https://developers.meethue.com/develop/hue-entertainment/philips-hue-entertainment-api/ | + \*-----------------------------------------------------------------------------------------------------*/ + + active_mode = 1; /*-----------------------------------------------------*\ | The Philips Hue Entertainment Mode requires a packet | @@ -109,7 +114,17 @@ void RGBController_PhilipsHueEntertainment::DeviceUpdateMode() { if(active_mode == 0) { - light->Connect(); + std::vector rgb_controllers = ResourceManager::get()->GetRGBControllers(); + + for (unsigned int controller_idx = 0; controller_idx < rgb_controllers.size(); controller_idx++) + { + if (rgb_controllers[controller_idx] != this && rgb_controllers[controller_idx]->description == "Philips Hue Entertainment Mode Device" && rgb_controllers[controller_idx]->active_mode == 0) + { + rgb_controllers[controller_idx]->SetMode(1); + } + } + + light->Connect(); } else {