mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
Added config file settings for XBMCVideoChecker
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
|
||||
// QT includes
|
||||
#include <QDateTime>
|
||||
#include <QResource>
|
||||
|
||||
// JsonSchema include
|
||||
#include <utils/jsonschema/JsonFactory.h>
|
||||
@@ -17,7 +16,7 @@
|
||||
#include <utils/ColorTransform.h>
|
||||
#include <utils/HsvTransform.h>
|
||||
|
||||
LedDevice* constructDevice(const Json::Value& deviceConfig)
|
||||
LedDevice* Hyperion::constructDevice(const Json::Value& deviceConfig)
|
||||
{
|
||||
std::cout << "Device configuration: " << deviceConfig << std::endl;
|
||||
LedDevice* device = nullptr;
|
||||
@@ -44,12 +43,12 @@ LedDevice* constructDevice(const Json::Value& deviceConfig)
|
||||
return device;
|
||||
}
|
||||
|
||||
HsvTransform * createHsvTransform(const Json::Value & hsvConfig)
|
||||
HsvTransform * Hyperion::createHsvTransform(const Json::Value & hsvConfig)
|
||||
{
|
||||
return new HsvTransform(hsvConfig["saturationGain"].asDouble(), hsvConfig["valueGain"].asDouble());
|
||||
}
|
||||
|
||||
ColorTransform* createColorTransform(const Json::Value& colorConfig)
|
||||
ColorTransform* Hyperion::createColorTransform(const Json::Value& colorConfig)
|
||||
{
|
||||
const double threshold = colorConfig["threshold"].asDouble();
|
||||
const double gamma = colorConfig["gamma"].asDouble();
|
||||
@@ -79,36 +78,6 @@ LedString Hyperion::createLedString(const Json::Value& ledsConfig)
|
||||
return ledString;
|
||||
}
|
||||
|
||||
Json::Value Hyperion::loadConfig(const std::string& configFile)
|
||||
{
|
||||
// make sure the resources are loaded (they may be left out after static linking)
|
||||
Q_INIT_RESOURCE(resource);
|
||||
|
||||
// read the json schema from the resource
|
||||
QResource schemaData(":/hyperion-schema");
|
||||
assert(schemaData.isValid());
|
||||
|
||||
Json::Reader jsonReader;
|
||||
Json::Value schemaJson;
|
||||
if (!jsonReader.parse(reinterpret_cast<const char *>(schemaData.data()), reinterpret_cast<const char *>(schemaData.data()) + schemaData.size(), schemaJson, false))
|
||||
{
|
||||
throw std::runtime_error("Schema error: " + jsonReader.getFormattedErrorMessages()) ;
|
||||
}
|
||||
JsonSchemaChecker schemaChecker;
|
||||
schemaChecker.setSchema(schemaJson);
|
||||
|
||||
const Json::Value jsonConfig = JsonFactory::readJson(configFile);
|
||||
schemaChecker.validate(jsonConfig);
|
||||
|
||||
return jsonConfig;
|
||||
}
|
||||
|
||||
Hyperion::Hyperion(const std::string& configFile) :
|
||||
Hyperion(loadConfig(configFile))
|
||||
{
|
||||
// empty
|
||||
}
|
||||
|
||||
Hyperion::Hyperion(const Json::Value &jsonConfig) :
|
||||
_ledString(createLedString(jsonConfig["leds"])),
|
||||
_muxer(_ledString.leds().size()),
|
||||
|
@@ -1,169 +1,190 @@
|
||||
{
|
||||
"type":"object",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"device": {
|
||||
"type":"object",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"name": {
|
||||
"type":"string",
|
||||
"required":true
|
||||
},
|
||||
"type": {
|
||||
"type":"string",
|
||||
"required":true
|
||||
},
|
||||
"output": {
|
||||
"type":"string",
|
||||
"required":true
|
||||
},
|
||||
"interval": {
|
||||
"type":"integer",
|
||||
"required":true
|
||||
},
|
||||
"rate": {
|
||||
"type":"integer",
|
||||
"required":true
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"color": {
|
||||
"type":"object",
|
||||
"required":true,
|
||||
"properties": {
|
||||
"hsv" : {
|
||||
"type" : "object",
|
||||
"required" : true,
|
||||
"properties" : {
|
||||
"saturationGain" : {
|
||||
"type" : "number",
|
||||
"required" : true,
|
||||
"minimum" : 0.0
|
||||
},
|
||||
"valueGain" : {
|
||||
"type" : "number",
|
||||
"required" : true,
|
||||
"minimum" : 0.0
|
||||
}
|
||||
},
|
||||
"additionalProperties" : false
|
||||
},
|
||||
"red": {
|
||||
"type":"object",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"gamma": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
},
|
||||
"blacklevel": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
},
|
||||
"whitelevel": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
},
|
||||
"threshold": {
|
||||
"type":"number",
|
||||
"required":true,
|
||||
"minimum" : 0.0,
|
||||
"maximum" : 1.0
|
||||
}
|
||||
}
|
||||
},
|
||||
"green": {
|
||||
"type":"object",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"gamma": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
},
|
||||
"blacklevel": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
},
|
||||
"whitelevel": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
},
|
||||
"threshold": {
|
||||
"type":"number",
|
||||
"required":true,
|
||||
"minimum" : 0.0,
|
||||
"maximum" : 1.0
|
||||
}
|
||||
}
|
||||
},
|
||||
"blue": {
|
||||
"type":"object",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"gamma": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
},
|
||||
"whitelevel": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
},
|
||||
"blacklevel": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
},
|
||||
"threshold": {
|
||||
"type":"number",
|
||||
"required":true,
|
||||
"minimum" : 0.0,
|
||||
"maximum" : 1.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"leds": {
|
||||
"type":"array",
|
||||
"required":true,
|
||||
"items": {
|
||||
"type":"object",
|
||||
"properties": {
|
||||
"index": {
|
||||
"type":"integer",
|
||||
"required":true
|
||||
},
|
||||
"hscan": {
|
||||
"type":"object",
|
||||
"required":true,
|
||||
"properties": {
|
||||
"minimum": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
},
|
||||
"maximum": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
}
|
||||
}
|
||||
},
|
||||
"vscan": {
|
||||
"type":"object",
|
||||
"required":true,
|
||||
"properties": {
|
||||
"minimum": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
},
|
||||
"maximum": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
"type":"object",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"device": {
|
||||
"type":"object",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"name": {
|
||||
"type":"string",
|
||||
"required":true
|
||||
},
|
||||
"type": {
|
||||
"type":"string",
|
||||
"required":true
|
||||
},
|
||||
"output": {
|
||||
"type":"string",
|
||||
"required":true
|
||||
},
|
||||
"interval": {
|
||||
"type":"integer",
|
||||
"required":true
|
||||
},
|
||||
"rate": {
|
||||
"type":"integer",
|
||||
"required":true
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"color": {
|
||||
"type":"object",
|
||||
"required":true,
|
||||
"properties": {
|
||||
"hsv" : {
|
||||
"type" : "object",
|
||||
"required" : true,
|
||||
"properties" : {
|
||||
"saturationGain" : {
|
||||
"type" : "number",
|
||||
"required" : true,
|
||||
"minimum" : 0.0
|
||||
},
|
||||
"valueGain" : {
|
||||
"type" : "number",
|
||||
"required" : true,
|
||||
"minimum" : 0.0
|
||||
}
|
||||
},
|
||||
"additionalProperties" : false
|
||||
},
|
||||
"red": {
|
||||
"type":"object",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"gamma": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
},
|
||||
"blacklevel": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
},
|
||||
"whitelevel": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
},
|
||||
"threshold": {
|
||||
"type":"number",
|
||||
"required":true,
|
||||
"minimum" : 0.0,
|
||||
"maximum" : 1.0
|
||||
}
|
||||
}
|
||||
},
|
||||
"green": {
|
||||
"type":"object",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"gamma": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
},
|
||||
"blacklevel": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
},
|
||||
"whitelevel": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
},
|
||||
"threshold": {
|
||||
"type":"number",
|
||||
"required":true,
|
||||
"minimum" : 0.0,
|
||||
"maximum" : 1.0
|
||||
}
|
||||
}
|
||||
},
|
||||
"blue": {
|
||||
"type":"object",
|
||||
"required":true,
|
||||
"properties":{
|
||||
"gamma": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
},
|
||||
"whitelevel": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
},
|
||||
"blacklevel": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
},
|
||||
"threshold": {
|
||||
"type":"number",
|
||||
"required":true,
|
||||
"minimum" : 0.0,
|
||||
"maximum" : 1.0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"leds": {
|
||||
"type":"array",
|
||||
"required":true,
|
||||
"items": {
|
||||
"type":"object",
|
||||
"properties": {
|
||||
"index": {
|
||||
"type":"integer",
|
||||
"required":true
|
||||
},
|
||||
"hscan": {
|
||||
"type":"object",
|
||||
"required":true,
|
||||
"properties": {
|
||||
"minimum": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
},
|
||||
"maximum": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
}
|
||||
}
|
||||
},
|
||||
"vscan": {
|
||||
"type":"object",
|
||||
"required":true,
|
||||
"properties": {
|
||||
"minimum": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
},
|
||||
"maximum": {
|
||||
"type":"number",
|
||||
"required":true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"xbmcVideoChecker" :
|
||||
{
|
||||
"type" : "object",
|
||||
"required" : true,
|
||||
"properties" : {
|
||||
"enable" : {
|
||||
"type" : "boolean",
|
||||
"required" : true
|
||||
},
|
||||
"xbmcAddress" : {
|
||||
"type" : "string",
|
||||
"required" : true
|
||||
},
|
||||
"xbmcTcpPort" : {
|
||||
"type" : "integer",
|
||||
"required" : true
|
||||
}
|
||||
},
|
||||
"additionalProperties" : false
|
||||
}
|
||||
},
|
||||
"additionalProperties" : false
|
||||
}
|
||||
|
@@ -3,9 +3,9 @@
|
||||
|
||||
#include <xbmcvideochecker/XBMCVideoChecker.h>
|
||||
|
||||
XBMCVideoChecker::XBMCVideoChecker(QString address, uint16_t port, uint64_t interval_ms, Hyperion * hyperion, int priority) :
|
||||
XBMCVideoChecker::XBMCVideoChecker(const std::string & address, uint16_t port, uint64_t interval_ms, Hyperion * hyperion, int priority) :
|
||||
QObject(),
|
||||
_address(address),
|
||||
_address(QString::fromStdString(address)),
|
||||
_port(port),
|
||||
_request("{\"jsonrpc\":\"2.0\",\"method\":\"Player.GetActivePlayers\",\"id\":1}"),
|
||||
_timer(),
|
||||
@@ -48,7 +48,7 @@ void XBMCVideoChecker::sendRequest()
|
||||
|
||||
void XBMCVideoChecker::receiveReply()
|
||||
{
|
||||
// expect that the reply is received as a single message. Probaly oke considering the size of the expected reply
|
||||
// expect that the reply is received as a single message. Probably oke considering the size of the expected reply
|
||||
QString reply(_socket.readAll());
|
||||
|
||||
if (reply.contains("playerid"))
|
||||
|
Reference in New Issue
Block a user