Update Json Interface (Active LED Color) (#664)

* add getCurrentPriority

* add getCurrentPriority

* Update active led color


Former-commit-id: 0e6b828991fdf51d2ec859d3836ce4f976dfd88c
This commit is contained in:
Paulchen-Panther 2016-05-30 22:39:12 +02:00 committed by brindosch
parent 71a4d0ba78
commit 23042ba07c
3 changed files with 69 additions and 12 deletions

View File

@ -79,6 +79,12 @@ public:
/// ///
unsigned getLedCount() const; unsigned getLedCount() const;
///
/// Returns the current priority
///
/// @return The current priority
///
int getCurrentPriority() const;
/// ///
/// Returns a list of active priorities /// Returns a list of active priorities
/// ///

View File

@ -819,6 +819,11 @@ void Hyperion::clearall()
_effectEngine->allChannelsCleared(); _effectEngine->allChannelsCleared();
} }
int Hyperion::getCurrentPriority() const
{
return _muxer.getCurrentPriority();
}
QList<int> Hyperion::getActivePriorities() const QList<int> Hyperion::getActivePriorities() const
{ {
return _muxer.getPriorities(); return _muxer.getPriorities();

View File

@ -1,6 +1,7 @@
// system includes // system includes
#include <stdexcept> #include <stdexcept>
#include <cassert> #include <cassert>
#include <iomanip>
// stl includes // stl includes
#include <iostream> #include <iostream>
@ -530,20 +531,65 @@ void JsonClientConnection::handleServerInfoCommand(const Json::Value &)
activeEffects.append(activeEffect); activeEffects.append(activeEffect);
} }
// collect active led colors ////////////////////////////////////
Json::Value & activeLedColors = info["activeLedColors"] = Json::Value(Json::arrayValue); // collect active static led color//
foreach (int priority, activePriorities) { ////////////////////////////////////
const Hyperion::InputInfo & priorityInfo = _hyperion->getPriorityInfo(priority);
int i=0; // create New JSON Array Value "activeLEDColor"
Json::Value & activeLedColors = info["activeLedColor"] = Json::Value(Json::arrayValue);
// get current Priority from Hyperion Muxer
const Hyperion::InputInfo & priorityInfo = _hyperion->getPriorityInfo(_hyperion->getCurrentPriority());
// check if current Priority exist
if (priorityInfo.priority != std::numeric_limits<int>::max())
{
Json::Value LEDcolor; Json::Value LEDcolor;
for (auto it = priorityInfo.ledColors.begin(); it!=priorityInfo.ledColors.end(); ++it, ++i) { // check if all LEDs has the same Color
LEDcolor[std::to_string(i)].append(it->red); if (std::all_of(priorityInfo.ledColors.begin(), priorityInfo.ledColors.end(), [&](ColorRgb color)
LEDcolor[std::to_string(i)].append(it->green); {
LEDcolor[std::to_string(i)].append(it->blue); return ((color.red == priorityInfo.ledColors.begin()->red) &&
} (color.green == priorityInfo.ledColors.begin()->green) &&
(color.blue == priorityInfo.ledColors.begin()->blue));
} ))
{
// check if LED Color not Black (0,0,0)
if ((priorityInfo.ledColors.begin()->red != 0) &&
(priorityInfo.ledColors.begin()->green != 0) &&
(priorityInfo.ledColors.begin()->blue != 0))
{
// add RGB Value to Array
LEDcolor["RGB Value"].append(priorityInfo.ledColors.begin()->red);
LEDcolor["RGB Value"].append(priorityInfo.ledColors.begin()->green);
LEDcolor["RGB Value"].append(priorityInfo.ledColors.begin()->blue);
uint16_t Hue;
float Saturation, Luminace;
// add HSL Value to Array
HslTransform::rgb2hsl(priorityInfo.ledColors.begin()->red,
priorityInfo.ledColors.begin()->green,
priorityInfo.ledColors.begin()->blue,
Hue, Saturation, Luminace);
LEDcolor["HSL Value"].append(Hue);
LEDcolor["HSL Value"].append(Saturation);
LEDcolor["HSL Value"].append(Luminace);
// add HEX Value to Array
std::stringstream hex;
hex << "0x"
<< std::uppercase << std::setw(2) << std::setfill('0')
<< std::hex << unsigned(priorityInfo.ledColors.begin()->red)
<< std::uppercase << std::setw(2) << std::setfill('0')
<< std::hex << unsigned(priorityInfo.ledColors.begin()->green)
<< std::uppercase << std::setw(2) << std::setfill('0')
<< std::hex << unsigned(priorityInfo.ledColors.begin()->blue);
LEDcolor["HEX Value"].append(hex.str());
activeLedColors.append(LEDcolor); activeLedColors.append(LEDcolor);
} }
}
}
// send the result // send the result
sendMessage(result); sendMessage(result);