mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2023-10-10 13:36:59 +02:00
* Do not limit priorities for Boblight (#1269) * Boblight - Allow to exclude component from build * Fix merge * Amlogic - Correct Pixelformat reference * Remove "wrong" Amlogic ifdef, which was not working before
This commit is contained in:
parent
8a785e70c8
commit
da49f25b4e
@ -42,11 +42,15 @@ endif()
|
||||
|
||||
# Set build variables
|
||||
SET ( DEFAULT_AMLOGIC OFF )
|
||||
SET ( DEFAULT_BOBLIGHT ON )
|
||||
SET ( DEFAULT_DISPMANX OFF )
|
||||
SET ( DEFAULT_DX OFF )
|
||||
SET ( DEFAULT_MF OFF )
|
||||
SET ( DEFAULT_OSX OFF )
|
||||
SET ( DEFAULT_QT ON )
|
||||
SET ( DEFAULT_X11 OFF )
|
||||
SET ( DEFAULT_XCB OFF )
|
||||
SET ( DEFAULT_V4L2 OFF )
|
||||
SET ( DEFAULT_WS281XPWM OFF )
|
||||
SET ( DEFAULT_AVAHI ON )
|
||||
SET ( DEFAULT_USE_SHARED_AVAHI_LIBS ON )
|
||||
@ -55,7 +59,7 @@ SET ( DEFAULT_USE_SYSTEM_PROTO_LIBS OFF )
|
||||
SET ( DEFAULT_USE_SYSTEM_MBEDTLS_LIBS OFF )
|
||||
SET ( DEFAULT_TESTS OFF )
|
||||
SET ( DEFAULT_EXPERIMENTAL OFF )
|
||||
SET ( DEFAULT_MF OFF )
|
||||
SET ( DEFAULT_CEC OFF )
|
||||
SET ( DEFAULT_DEPLOY_DEPENDENCIES ON )
|
||||
|
||||
IF ( ${CMAKE_SYSTEM} MATCHES "Linux" )
|
||||
@ -159,6 +163,10 @@ STRING( REPLACE "-DEV" "" PLATFORM_DEFINE "${PLATFORM_DEFINE}" )
|
||||
ADD_DEFINITIONS( ${PLATFORM_DEFINE} )
|
||||
|
||||
# set the build options
|
||||
|
||||
option(ENABLE_BOBLIGHT "Enable BOBLIGHT server" ${DEFAULT_BOBLIGHT} )
|
||||
message(STATUS "ENABLE_BOBLIGHT = ${ENABLE_BOBLIGHT}")
|
||||
|
||||
option(ENABLE_AMLOGIC "Enable the AMLOGIC video grabber" ${DEFAULT_AMLOGIC} )
|
||||
message(STATUS "ENABLE_AMLOGIC = ${ENABLE_AMLOGIC}")
|
||||
|
||||
|
@ -45,6 +45,9 @@
|
||||
// Define to enable CEC
|
||||
#cmakedefine ENABLE_CEC
|
||||
|
||||
// Define to enable boblight server
|
||||
#cmakedefine ENABLE_BOBLIGHT
|
||||
|
||||
// Define to enable the USB / HID devices
|
||||
#cmakedefine ENABLE_USB_HID
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
$(document).ready( function() {
|
||||
$(document).ready(function () {
|
||||
performTranslation();
|
||||
|
||||
var BOBLIGHT_ENABLED = window.comps.find(element => element.name == "BOBLIGHTSERVER");
|
||||
|
||||
var conf_editor_net = null;
|
||||
var conf_editor_json = null;
|
||||
var conf_editor_proto = null;
|
||||
@ -8,8 +10,7 @@ $(document).ready( function() {
|
||||
var conf_editor_bobl = null;
|
||||
var conf_editor_forw = null;
|
||||
|
||||
if(window.showOptHelp)
|
||||
{
|
||||
if (window.showOptHelp) {
|
||||
//network
|
||||
$('#conf_cont').append(createRow('conf_cont_net'))
|
||||
$('#conf_cont_net').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_net_heading_title"), 'editor_container_net', 'btn_submit_net', 'panel-system'));
|
||||
@ -23,28 +24,28 @@ $(document).ready( function() {
|
||||
//flatbufserver
|
||||
$('#conf_cont').append(createRow('conf_cont_flatbuf'))
|
||||
$('#conf_cont_flatbuf').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fbs_heading_title"), 'editor_container_fbserver', 'btn_submit_fbserver', 'panel-system'));
|
||||
$('#conf_cont_flatbuf').append(createHelpTable(window.schema.flatbufServer.properties, $.i18n("edt_conf_fbs_heading_title"),"flatbufServerHelpPanelId"));
|
||||
$('#conf_cont_flatbuf').append(createHelpTable(window.schema.flatbufServer.properties, $.i18n("edt_conf_fbs_heading_title"), "flatbufServerHelpPanelId"));
|
||||
|
||||
//protoserver
|
||||
$('#conf_cont').append(createRow('conf_cont_proto'))
|
||||
$('#conf_cont_proto').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_pbs_heading_title"), 'editor_container_protoserver', 'btn_submit_protoserver', 'panel-system'));
|
||||
$('#conf_cont_proto').append(createHelpTable(window.schema.protoServer.properties, $.i18n("edt_conf_pbs_heading_title"),"protoServerHelpPanelId"));
|
||||
$('#conf_cont_proto').append(createHelpTable(window.schema.protoServer.properties, $.i18n("edt_conf_pbs_heading_title"), "protoServerHelpPanelId"));
|
||||
|
||||
//boblight
|
||||
if (BOBLIGHT_ENABLED) {
|
||||
$('#conf_cont').append(createRow('conf_cont_bobl'))
|
||||
$('#conf_cont_bobl').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_bobls_heading_title"), 'editor_container_boblightserver', 'btn_submit_boblightserver', 'panel-system'));
|
||||
$('#conf_cont_bobl').append(createHelpTable(window.schema.boblightServer.properties, $.i18n("edt_conf_bobls_heading_title"), "boblightServerHelpPanelId"));
|
||||
}
|
||||
|
||||
//forwarder
|
||||
if(storedAccess != 'default')
|
||||
{
|
||||
if (storedAccess != 'default') {
|
||||
$('#conf_cont').append(createRow('conf_cont_fw'))
|
||||
$('#conf_cont_fw').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fw_heading_title"), 'editor_container_forwarder', 'btn_submit_forwarder', 'panel-system'));
|
||||
$('#conf_cont_fw').append(createHelpTable(window.schema.forwarder.properties, $.i18n("edt_conf_fw_heading_title"),"forwarderHelpPanelId"));
|
||||
$('#conf_cont_fw').append(createHelpTable(window.schema.forwarder.properties, $.i18n("edt_conf_fw_heading_title"), "forwarderHelpPanelId"));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
$('#conf_cont').addClass('row');
|
||||
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_net_heading_title"), 'editor_container_net', 'btn_submit_net'));
|
||||
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_js_heading_title"), 'editor_container_jsonserver', 'btn_submit_jsonserver'));
|
||||
@ -58,33 +59,33 @@ $(document).ready( function() {
|
||||
|
||||
// net
|
||||
conf_editor_net = createJsonEditor('editor_container_net', {
|
||||
network : window.schema.network
|
||||
network: window.schema.network
|
||||
}, true, true);
|
||||
|
||||
conf_editor_net.on('change',function() {
|
||||
conf_editor_net.on('change', function () {
|
||||
conf_editor_net.validate().length || window.readOnlyMode ? $('#btn_submit_net').attr('disabled', true) : $('#btn_submit_net').attr('disabled', false);
|
||||
});
|
||||
|
||||
$('#btn_submit_net').off().on('click',function() {
|
||||
$('#btn_submit_net').off().on('click', function () {
|
||||
requestWriteConfig(conf_editor_net.getValue());
|
||||
});
|
||||
|
||||
//json
|
||||
conf_editor_json = createJsonEditor('editor_container_jsonserver', {
|
||||
jsonServer : window.schema.jsonServer
|
||||
jsonServer: window.schema.jsonServer
|
||||
}, true, true);
|
||||
|
||||
conf_editor_json.on('change',function() {
|
||||
conf_editor_json.on('change', function () {
|
||||
conf_editor_json.validate().length || window.readOnlyMode ? $('#btn_submit_jsonserver').attr('disabled', true) : $('#btn_submit_jsonserver').attr('disabled', false);
|
||||
});
|
||||
|
||||
$('#btn_submit_jsonserver').off().on('click',function() {
|
||||
$('#btn_submit_jsonserver').off().on('click', function () {
|
||||
requestWriteConfig(conf_editor_json.getValue());
|
||||
});
|
||||
|
||||
//flatbuffer
|
||||
conf_editor_fbs = createJsonEditor('editor_container_fbserver', {
|
||||
flatbufServer : window.schema.flatbufServer
|
||||
flatbufServer: window.schema.flatbufServer
|
||||
}, true, true);
|
||||
|
||||
conf_editor_fbs.on('change', function () {
|
||||
@ -99,13 +100,13 @@ $(document).ready( function() {
|
||||
conf_editor_fbs.validate().length || window.readOnlyMode ? $('#btn_submit_fbserver').attr('disabled', true) : $('#btn_submit_fbserver').attr('disabled', false);
|
||||
});
|
||||
|
||||
$('#btn_submit_fbserver').off().on('click',function() {
|
||||
$('#btn_submit_fbserver').off().on('click', function () {
|
||||
requestWriteConfig(conf_editor_fbs.getValue());
|
||||
});
|
||||
|
||||
//protobuffer
|
||||
conf_editor_proto = createJsonEditor('editor_container_protoserver', {
|
||||
protoServer : window.schema.protoServer
|
||||
protoServer: window.schema.protoServer
|
||||
}, true, true);
|
||||
|
||||
conf_editor_proto.on('change', function () {
|
||||
@ -120,13 +121,14 @@ $(document).ready( function() {
|
||||
conf_editor_proto.validate().length || window.readOnlyMode ? $('#btn_submit_protoserver').attr('disabled', true) : $('#btn_submit_protoserver').attr('disabled', false);
|
||||
});
|
||||
|
||||
$('#btn_submit_protoserver').off().on('click',function() {
|
||||
$('#btn_submit_protoserver').off().on('click', function () {
|
||||
requestWriteConfig(conf_editor_proto.getValue());
|
||||
});
|
||||
|
||||
//boblight
|
||||
if (BOBLIGHT_ENABLED) {
|
||||
conf_editor_bobl = createJsonEditor('editor_container_boblightserver', {
|
||||
boblightServer : window.schema.boblightServer
|
||||
boblightServer: window.schema.boblightServer
|
||||
}, true, true);
|
||||
|
||||
conf_editor_bobl.on('change', function () {
|
||||
@ -144,12 +146,12 @@ $(document).ready( function() {
|
||||
$('#btn_submit_boblightserver').off().on('click', function () {
|
||||
requestWriteConfig(conf_editor_bobl.getValue());
|
||||
});
|
||||
}
|
||||
|
||||
if(storedAccess != 'default')
|
||||
{
|
||||
if (storedAccess != 'default') {
|
||||
//forwarder
|
||||
conf_editor_forw = createJsonEditor('editor_container_forwarder', {
|
||||
forwarder : window.schema.forwarder
|
||||
forwarder: window.schema.forwarder
|
||||
}, true, true);
|
||||
|
||||
conf_editor_forw.on('change', function () {
|
||||
@ -164,33 +166,32 @@ $(document).ready( function() {
|
||||
conf_editor_forw.validate().length || window.readOnlyMode ? $('#btn_submit_forwarder').attr('disabled', true) : $('#btn_submit_forwarder').attr('disabled', false);
|
||||
});
|
||||
|
||||
$('#btn_submit_forwarder').off().on('click',function() {
|
||||
$('#btn_submit_forwarder').off().on('click', function () {
|
||||
requestWriteConfig(conf_editor_forw.getValue());
|
||||
});
|
||||
}
|
||||
|
||||
//create introduction
|
||||
if(window.showOptHelp)
|
||||
{
|
||||
if (window.showOptHelp) {
|
||||
createHint("intro", $.i18n('conf_network_net_intro'), "editor_container_net");
|
||||
createHint("intro", $.i18n('conf_network_json_intro'), "editor_container_jsonserver");
|
||||
createHint("intro", $.i18n('conf_network_fbs_intro'), "editor_container_fbserver");
|
||||
createHint("intro", $.i18n('conf_network_proto_intro'), "editor_container_protoserver");
|
||||
if (BOBLIGHT_ENABLED) {
|
||||
createHint("intro", $.i18n('conf_network_bobl_intro'), "editor_container_boblightserver");
|
||||
}
|
||||
createHint("intro", $.i18n('conf_network_forw_intro'), "editor_container_forwarder");
|
||||
createHint("intro", $.i18n('conf_network_tok_intro'), "tok_desc_cont");
|
||||
}
|
||||
|
||||
// Token handling
|
||||
function buildTokenList()
|
||||
{
|
||||
function buildTokenList() {
|
||||
$('.tktbody').html("");
|
||||
for(var key in tokenList)
|
||||
{
|
||||
for (var key in tokenList) {
|
||||
var lastUse = (tokenList[key].last_use) ? tokenList[key].last_use : "-";
|
||||
var btn = '<button id="tok'+tokenList[key].id+'" type="button" class="btn btn-danger">'+$.i18n('general_btn_delete')+'</button>';
|
||||
var btn = '<button id="tok' + tokenList[key].id + '" type="button" class="btn btn-danger">' + $.i18n('general_btn_delete') + '</button>';
|
||||
$('.tktbody').append(createTableRow([tokenList[key].comment, lastUse, btn], false, true));
|
||||
$('#tok'+tokenList[key].id).off().on('click', handleDeleteToken);
|
||||
$('#tok' + tokenList[key].id).off().on('click', handleDeleteToken);
|
||||
}
|
||||
}
|
||||
|
||||
@ -198,32 +199,31 @@ $(document).ready( function() {
|
||||
$('.tkthead').html(createTableRow([$.i18n('conf_network_tok_cidhead'), $.i18n('conf_network_tok_lastuse'), $.i18n('general_btn_delete')], true, true));
|
||||
buildTokenList();
|
||||
|
||||
function handleDeleteToken(e)
|
||||
{
|
||||
var key = e.currentTarget.id.replace("tok","");
|
||||
function handleDeleteToken(e) {
|
||||
var key = e.currentTarget.id.replace("tok", "");
|
||||
requestTokenDelete(key);
|
||||
$('#tok'+key).parent().parent().remove();
|
||||
$('#tok' + key).parent().parent().remove();
|
||||
// rm deleted token id
|
||||
tokenList = tokenList.filter(function( obj ) {
|
||||
tokenList = tokenList.filter(function (obj) {
|
||||
return obj.id !== key;
|
||||
});
|
||||
}
|
||||
|
||||
$('#btn_create_tok').off().on('click',function() {
|
||||
$('#btn_create_tok').off().on('click', function () {
|
||||
requestToken(encodeHTML($('#tok_comment').val()))
|
||||
$('#tok_comment').val("")
|
||||
$('#btn_create_tok').attr('disabled', true)
|
||||
});
|
||||
$('#tok_comment').off().on('input',function(e) {
|
||||
$('#tok_comment').off().on('input', function (e) {
|
||||
(e.currentTarget.value.length >= 10) ? $('#btn_create_tok').attr('disabled', false) : $('#btn_create_tok').attr('disabled', true);
|
||||
if(10-e.currentTarget.value.length >= 1 && 10-e.currentTarget.value.length <= 9)
|
||||
$('#tok_chars_needed').html(10-e.currentTarget.value.length + " " + $.i18n('general_chars_needed'))
|
||||
if (10 - e.currentTarget.value.length >= 1 && 10 - e.currentTarget.value.length <= 9)
|
||||
$('#tok_chars_needed').html(10 - e.currentTarget.value.length + " " + $.i18n('general_chars_needed'))
|
||||
else
|
||||
$('#tok_chars_needed').html("<br />")
|
||||
});
|
||||
$(window.hyperion).off("cmd-authorize-createToken").on("cmd-authorize-createToken", function(event) {
|
||||
$(window.hyperion).off("cmd-authorize-createToken").on("cmd-authorize-createToken", function (event) {
|
||||
var val = event.response.info;
|
||||
showInfoDialog("newToken",$.i18n('conf_network_tok_diaTitle'),$.i18n('conf_network_tok_diaMsg')+'<br><div style="font-weight:bold">'+val.token+'</div>')
|
||||
showInfoDialog("newToken", $.i18n('conf_network_tok_diaTitle'), $.i18n('conf_network_tok_diaMsg') + '<br><div style="font-weight:bold">' + val.token + '</div>')
|
||||
tokenList.push(val)
|
||||
buildTokenList()
|
||||
});
|
||||
@ -231,9 +231,8 @@ $(document).ready( function() {
|
||||
//Reorder hardcoded token div after the general token setting div
|
||||
$("#conf_cont_tok").insertAfter("#conf_cont_net");
|
||||
|
||||
function checkApiTokenState(state)
|
||||
{
|
||||
if(state == false)
|
||||
function checkApiTokenState(state) {
|
||||
if (state == false)
|
||||
$("#conf_cont_tok").attr('style', 'display:none')
|
||||
else
|
||||
$("#conf_cont_tok").removeAttr('style')
|
||||
@ -248,3 +247,4 @@ $(document).ready( function() {
|
||||
|
||||
removeOverlay();
|
||||
});
|
||||
|
||||
|
@ -46,7 +46,9 @@ class ColorAdjustment;
|
||||
class SettingsManager;
|
||||
class BGEffectHandler;
|
||||
class CaptureCont;
|
||||
#if defined(ENABLE_BOBLIGHT)
|
||||
class BoblightServer;
|
||||
#endif
|
||||
class LedDeviceWrapper;
|
||||
class Logger;
|
||||
|
||||
@ -545,8 +547,10 @@ private:
|
||||
|
||||
VideoMode _currVideoMode = VideoMode::VIDEO_2D;
|
||||
|
||||
#if defined(ENABLE_BOBLIGHT)
|
||||
/// Boblight instance
|
||||
BoblightServer* _boblightServer;
|
||||
#endif
|
||||
|
||||
bool _readOnlyMode;
|
||||
};
|
||||
|
@ -1,6 +1,8 @@
|
||||
#pragma once
|
||||
#include <QString>
|
||||
|
||||
#include "HyperionConfig.h"
|
||||
|
||||
namespace hyperion
|
||||
{
|
||||
|
||||
@ -14,7 +16,9 @@ enum Components
|
||||
COMP_SMOOTHING,
|
||||
COMP_BLACKBORDER,
|
||||
COMP_FORWARDER,
|
||||
#if defined(ENABLE_BOBLIGHT)
|
||||
COMP_BOBLIGHTSERVER,
|
||||
#endif
|
||||
COMP_GRABBER,
|
||||
COMP_V4L,
|
||||
COMP_COLOR,
|
||||
@ -33,7 +37,9 @@ inline const char* componentToString(Components c)
|
||||
case COMP_SMOOTHING: return "Smoothing";
|
||||
case COMP_BLACKBORDER: return "Blackborder detector";
|
||||
case COMP_FORWARDER: return "Json/Proto forwarder";
|
||||
#if defined(ENABLE_BOBLIGHT)
|
||||
case COMP_BOBLIGHTSERVER:return "Boblight server";
|
||||
#endif
|
||||
case COMP_GRABBER: return "Framegrabber";
|
||||
case COMP_V4L: return "V4L capture device";
|
||||
case COMP_COLOR: return "Solid color";
|
||||
@ -54,7 +60,9 @@ inline const char* componentToIdString(Components c)
|
||||
case COMP_SMOOTHING: return "SMOOTHING";
|
||||
case COMP_BLACKBORDER: return "BLACKBORDER";
|
||||
case COMP_FORWARDER: return "FORWARDER";
|
||||
#if defined(ENABLE_BOBLIGHT)
|
||||
case COMP_BOBLIGHTSERVER:return "BOBLIGHTSERVER";
|
||||
#endif
|
||||
case COMP_GRABBER: return "GRABBER";
|
||||
case COMP_V4L: return "V4L";
|
||||
case COMP_COLOR: return "COLOR";
|
||||
@ -74,7 +82,9 @@ inline Components stringToComponent(const QString& component)
|
||||
if (cmp == "SMOOTHING") return COMP_SMOOTHING;
|
||||
if (cmp == "BLACKBORDER") return COMP_BLACKBORDER;
|
||||
if (cmp == "FORWARDER") return COMP_FORWARDER;
|
||||
#if defined(ENABLE_BOBLIGHT)
|
||||
if (cmp == "BOBLIGHTSERVER")return COMP_BOBLIGHTSERVER;
|
||||
#endif
|
||||
if (cmp == "GRABBER") return COMP_GRABBER;
|
||||
if (cmp == "V4L") return COMP_V4L;
|
||||
if (cmp == "COLOR") return COMP_COLOR;
|
||||
|
@ -10,7 +10,9 @@ add_subdirectory(jsonserver)
|
||||
add_subdirectory(flatbufserver)
|
||||
add_subdirectory(protoserver)
|
||||
add_subdirectory(ssdp)
|
||||
add_subdirectory(boblightserver)
|
||||
if(ENABLE_BOBLIGHT)
|
||||
add_subdirectory(boblightserver)
|
||||
endif()
|
||||
add_subdirectory(leddevice)
|
||||
add_subdirectory(utils)
|
||||
add_subdirectory(effectengine)
|
||||
|
@ -21,11 +21,19 @@
|
||||
#include "HyperionConfig.h"
|
||||
#include <hyperion/Hyperion.h>
|
||||
#include <utils/QStringUtils.h>
|
||||
#include <hyperion/PriorityMuxer.h>
|
||||
|
||||
// project includes
|
||||
#include "BoblightClientConnection.h"
|
||||
|
||||
BoblightClientConnection::BoblightClientConnection(Hyperion* hyperion, QTcpSocket *socket, int priority)
|
||||
// Constants
|
||||
namespace {
|
||||
const int BOBLIGHT_DEFAULT_PRIORITY = 128;
|
||||
const int BOBLIGHT_MIN_PRIORITY = PriorityMuxer::FG_PRIORITY+1;
|
||||
const int BOBLIGHT_MAX_PRIORITY = PriorityMuxer::BG_PRIORITY-1;
|
||||
} //End of constants
|
||||
|
||||
BoblightClientConnection::BoblightClientConnection(Hyperion* hyperion, QTcpSocket* socket, int priority)
|
||||
: QObject()
|
||||
, _locale(QLocale::C)
|
||||
, _socket(socket)
|
||||
@ -48,7 +56,7 @@ BoblightClientConnection::BoblightClientConnection(Hyperion* hyperion, QTcpSocke
|
||||
BoblightClientConnection::~BoblightClientConnection()
|
||||
{
|
||||
// clear the current channel
|
||||
if (_priority != 0 && _priority >= 128 && _priority < 254)
|
||||
if (_priority != 0 && _priority >= BOBLIGHT_MIN_PRIORITY && _priority <= BOBLIGHT_MAX_PRIORITY)
|
||||
_hyperion->clear(_priority);
|
||||
|
||||
delete _socket;
|
||||
@ -59,7 +67,7 @@ void BoblightClientConnection::readData()
|
||||
_receiveBuffer.append(_socket->readAll());
|
||||
|
||||
int bytes = _receiveBuffer.indexOf('\n') + 1;
|
||||
while(bytes > 0)
|
||||
while (bytes > 0)
|
||||
{
|
||||
// create message string (strip the newline)
|
||||
const QString message = readMessage(_receiveBuffer.data(), bytes);
|
||||
@ -71,7 +79,7 @@ void BoblightClientConnection::readData()
|
||||
_receiveBuffer.remove(0, bytes);
|
||||
|
||||
// drop messages if the buffer is too full
|
||||
if (_receiveBuffer.size() > 100*1024)
|
||||
if (_receiveBuffer.size() > 100 * 1024)
|
||||
{
|
||||
Debug(_log, "server drops messages (buffer full)");
|
||||
_receiveBuffer.clear();
|
||||
@ -82,9 +90,9 @@ void BoblightClientConnection::readData()
|
||||
}
|
||||
}
|
||||
|
||||
QString BoblightClientConnection::readMessage(const char *data, const size_t size) const
|
||||
QString BoblightClientConnection::readMessage(const char* data, const size_t size) const
|
||||
{
|
||||
char *end = (char *)data + size - 1;
|
||||
char* end = (char*)data + size - 1;
|
||||
|
||||
// Trim left
|
||||
while (data < end && std::isspace(*data))
|
||||
@ -110,14 +118,14 @@ QString BoblightClientConnection::readMessage(const char *data, const size_t siz
|
||||
void BoblightClientConnection::socketClosed()
|
||||
{
|
||||
// clear the current channel
|
||||
if (_priority >= 128 && _priority < 254)
|
||||
if (_priority >= BOBLIGHT_MIN_PRIORITY && _priority <= BOBLIGHT_MAX_PRIORITY)
|
||||
_hyperion->clear(_priority);
|
||||
|
||||
emit connectionClosed(this);
|
||||
}
|
||||
|
||||
|
||||
void BoblightClientConnection::handleMessage(const QString & message)
|
||||
void BoblightClientConnection::handleMessage(const QString& message)
|
||||
{
|
||||
//std::cout << "boblight message: " << message.toStdString() << std::endl;
|
||||
const QVector<QStringRef> messageParts = QStringUtils::splitRef(message, ' ', QStringUtils::SplitBehavior::SkipEmptyParts);
|
||||
@ -166,16 +174,16 @@ void BoblightClientConnection::handleMessage(const QString & message)
|
||||
|
||||
if (rc1 && rc2 && rc3)
|
||||
{
|
||||
ColorRgb & rgb = _ledColors[ledIndex];
|
||||
ColorRgb& rgb = _ledColors[ledIndex];
|
||||
rgb.red = red;
|
||||
rgb.green = green;
|
||||
rgb.blue = blue;
|
||||
|
||||
if (_priority == 0 || _priority < 128 || _priority >= 254)
|
||||
if (_priority == 0 || _priority < BOBLIGHT_MIN_PRIORITY || _priority > BOBLIGHT_MAX_PRIORITY)
|
||||
return;
|
||||
|
||||
// send current color values to hyperion if this is the last led assuming leds values are send in order of id
|
||||
if (ledIndex == _ledColors.size() -1)
|
||||
if (ledIndex == _ledColors.size() - 1)
|
||||
{
|
||||
_hyperion->setInput(_priority, _ledColors);
|
||||
}
|
||||
@ -183,7 +191,7 @@ void BoblightClientConnection::handleMessage(const QString & message)
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if(messageParts[3] == "speed" ||
|
||||
else if (messageParts[3] == "speed" ||
|
||||
messageParts[3] == "interpolation" ||
|
||||
messageParts[3] == "use" ||
|
||||
messageParts[3] == "singlechange")
|
||||
@ -202,16 +210,17 @@ void BoblightClientConnection::handleMessage(const QString & message)
|
||||
if (_priority != 0 && _hyperion->getPriorityInfo(_priority).componentId == hyperion::COMP_BOBLIGHTSERVER)
|
||||
_hyperion->clear(_priority);
|
||||
|
||||
if (prio < 128 || prio >= 254)
|
||||
if (prio < BOBLIGHT_MIN_PRIORITY || prio > BOBLIGHT_MAX_PRIORITY)
|
||||
{
|
||||
_priority = 128;
|
||||
_priority = BOBLIGHT_DEFAULT_PRIORITY;
|
||||
while (_hyperion->getActivePriorities().contains(_priority))
|
||||
{
|
||||
_priority += 1;
|
||||
}
|
||||
|
||||
// warn against invalid priority
|
||||
Warning(_log, "The priority %i is not in the priority range between 128 and 253. Priority %i is used instead.", prio, _priority);
|
||||
Warning(_log, "The priority %i is not in the priority range of [%d-%d]. Priority %i is used instead.",
|
||||
prio, BOBLIGHT_MIN_PRIORITY, BOBLIGHT_MAX_PRIORITY, _priority);
|
||||
// register new priority (previously modified)
|
||||
_hyperion->registerInput(_priority, hyperion::COMP_BOBLIGHTSERVER, QString("Boblight@%1").arg(_socket->peerAddress().toString()));
|
||||
}
|
||||
@ -228,7 +237,7 @@ void BoblightClientConnection::handleMessage(const QString & message)
|
||||
}
|
||||
else if (messageParts[0] == "sync")
|
||||
{
|
||||
if ( _priority >= 128 && _priority < 254)
|
||||
if (_priority >= BOBLIGHT_MIN_PRIORITY && _priority <= BOBLIGHT_MAX_PRIORITY)
|
||||
_hyperion->setInput(_priority, _ledColors); // send current color values to hyperion
|
||||
|
||||
return;
|
||||
@ -248,9 +257,9 @@ const float ipows[] = {
|
||||
1.0f / 100000.0f,
|
||||
1.0f / 1000000.0f,
|
||||
1.0f / 10000000.0f,
|
||||
1.0f / 100000000.0f};
|
||||
1.0f / 100000000.0f };
|
||||
|
||||
float BoblightClientConnection::parseFloat(const QStringRef& s, bool *ok) const
|
||||
float BoblightClientConnection::parseFloat(const QStringRef& s, bool* ok) const
|
||||
{
|
||||
// We parse radix 10
|
||||
const char MIN_DIGIT = '0';
|
||||
@ -331,7 +340,7 @@ float BoblightClientConnection::parseFloat(const QStringRef& s, bool *ok) const
|
||||
return f;
|
||||
}
|
||||
|
||||
unsigned BoblightClientConnection::parseUInt(const QStringRef& s, bool *ok) const
|
||||
unsigned BoblightClientConnection::parseUInt(const QStringRef& s, bool* ok) const
|
||||
{
|
||||
// We parse radix 10
|
||||
const char MIN_DIGIT = '0';
|
||||
@ -363,7 +372,7 @@ unsigned BoblightClientConnection::parseUInt(const QStringRef& s, bool *ok) cons
|
||||
return n;
|
||||
}
|
||||
|
||||
uint8_t BoblightClientConnection::parseByte(const QStringRef& s, bool *ok) const
|
||||
uint8_t BoblightClientConnection::parseByte(const QStringRef& s, bool* ok) const
|
||||
{
|
||||
const int LO = 0;
|
||||
const int HI = 255;
|
||||
@ -389,7 +398,7 @@ void BoblightClientConnection::sendLightMessage()
|
||||
for (int i = 0; i < _hyperion->getLedCount(); ++i)
|
||||
{
|
||||
_imageProcessor->getScanParameters(i, h0, h1, v0, v1);
|
||||
n = snprintf(buffer, sizeof(buffer), "light %03d scan %f %f %f %f\n", i, 100*v0, 100*v1, 100*h0, 100*h1);
|
||||
n = snprintf(buffer, sizeof(buffer), "light %03d scan %f %f %f %f\n", i, 100 * v0, 100 * v1, 100 * h0, 100 * h1);
|
||||
sendMessage(QByteArray(buffer, n));
|
||||
}
|
||||
}
|
||||
|
@ -176,13 +176,8 @@ bool FramebufferFrameGrabber::getScreenInfo()
|
||||
break;
|
||||
case 24: _pixelFormat = PixelFormat::BGR24;
|
||||
break;
|
||||
#ifdef ENABLE_AMLOGIC
|
||||
case 32: _pixelFormat = PixelFormat::PIXELFORMAT_RGB32;
|
||||
break;
|
||||
#else
|
||||
case 32: _pixelFormat = PixelFormat::BGR32;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
rc= false;
|
||||
QString errorReason = QString ("Unknown pixel format: %1 bits per pixel").arg(static_cast<int>(_varInfo.bits_per_pixel));
|
||||
|
@ -22,12 +22,15 @@ target_link_libraries(hyperion
|
||||
flatbufserver
|
||||
flatbuffers
|
||||
leddevice
|
||||
boblightserver
|
||||
effectengine
|
||||
database
|
||||
${QT_LIBRARIES}
|
||||
)
|
||||
|
||||
if(ENABLE_BOBLIGHT)
|
||||
target_link_libraries(hyperion boblightserver)
|
||||
endif()
|
||||
|
||||
if (ENABLE_AVAHI)
|
||||
target_link_libraries(hyperion bonjour)
|
||||
endif ()
|
||||
|
@ -11,7 +11,12 @@ ComponentRegister::ComponentRegister(Hyperion* hyperion)
|
||||
{
|
||||
// init all comps to false
|
||||
QVector<hyperion::Components> vect;
|
||||
vect << COMP_ALL << COMP_SMOOTHING << COMP_BLACKBORDER << COMP_FORWARDER << COMP_BOBLIGHTSERVER << COMP_GRABBER << COMP_V4L << COMP_LEDDEVICE;
|
||||
vect << COMP_ALL << COMP_SMOOTHING << COMP_BLACKBORDER << COMP_FORWARDER << COMP_GRABBER << COMP_V4L << COMP_LEDDEVICE;
|
||||
|
||||
#if defined(ENABLE_BOBLIGHT)
|
||||
vect << COMP_BOBLIGHTSERVER;
|
||||
#endif
|
||||
|
||||
for(auto e : vect)
|
||||
{
|
||||
_componentStates.emplace(e, (e == COMP_ALL));
|
||||
|
@ -37,7 +37,9 @@
|
||||
#include <hyperion/CaptureCont.h>
|
||||
|
||||
// Boblight
|
||||
#if defined(ENABLE_BOBLIGHT)
|
||||
#include <boblightserver/BoblightServer.h>
|
||||
#endif
|
||||
|
||||
Hyperion::Hyperion(quint8 instance, bool readonlyMode)
|
||||
: QObject()
|
||||
@ -58,7 +60,9 @@ Hyperion::Hyperion(quint8 instance, bool readonlyMode)
|
||||
, _BGEffectHandler(nullptr)
|
||||
, _captureCont(nullptr)
|
||||
, _ledBuffer(_ledString.leds().size(), ColorRgb::BLACK)
|
||||
#if defined(ENABLE_BOBLIGHT)
|
||||
, _boblightServer(nullptr)
|
||||
#endif
|
||||
, _readOnlyMode(readonlyMode)
|
||||
{
|
||||
|
||||
@ -148,9 +152,11 @@ void Hyperion::start()
|
||||
// if there is no startup / background effect and no sending capture interface we probably want to push once BLACK (as PrioMuxer won't emit a priority change)
|
||||
update();
|
||||
|
||||
#if defined(ENABLE_BOBLIGHT)
|
||||
// boblight, can't live in global scope as it depends on layout
|
||||
_boblightServer = new BoblightServer(this, getSetting(settings::BOBLSERVER));
|
||||
connect(this, &Hyperion::settingsChanged, _boblightServer, &BoblightServer::handleSettingsUpdate);
|
||||
#endif
|
||||
|
||||
// instance initiated, enter thread event loop
|
||||
emit started();
|
||||
@ -168,7 +174,9 @@ void Hyperion::freeObjects()
|
||||
clear(-1,true);
|
||||
|
||||
// delete components on exit of hyperion core
|
||||
#if defined(ENABLE_BOBLIGHT)
|
||||
delete _boblightServer;
|
||||
#endif
|
||||
delete _captureCont;
|
||||
delete _effectEngine;
|
||||
delete _raw2ledAdjustment;
|
||||
|
@ -23,8 +23,8 @@
|
||||
{
|
||||
"type" : "integer",
|
||||
"title" : "edt_conf_general_priority_title",
|
||||
"minimum" : 100,
|
||||
"maximum" : 254,
|
||||
"minimum" : 2,
|
||||
"maximum" : 253,
|
||||
"default" : 128,
|
||||
"propertyOrder" : 3
|
||||
}
|
||||
|
@ -108,7 +108,7 @@ public:
|
||||
///
|
||||
/// Enable/Disable components during runtime
|
||||
///
|
||||
/// @param component The component [SMOOTHING, BLACKBORDER, FORWARDER, BOBLIGHT_SERVER, GRABBER]
|
||||
/// @param component The component [SMOOTHING, BLACKBORDER, FORWARDER, BOBLIGHTSERVER, GRABBER]
|
||||
/// @param state The state of the component [true | false]
|
||||
///
|
||||
void setComponentState(const QString & component, bool state);
|
||||
|
@ -103,8 +103,8 @@ int main(int argc, char * argv[])
|
||||
BooleanOption & argSysInfo = parser.add<BooleanOption>('s', "sysinfo" , "show system info");
|
||||
BooleanOption & argClear = parser.add<BooleanOption>('x', "clear" , "Clear data for the priority channel provided by the -p option");
|
||||
BooleanOption & argClearAll = parser.add<BooleanOption>(0x0, "clearall" , "Clear data for all active priority channels");
|
||||
Option & argEnableComponent = parser.add<Option> ('E', "enable" , "Enable the Component with the given name. Available Components are [SMOOTHING, BLACKBORDER, FORWARDER, BOBLIGHT_SERVER, GRABBER, V4L, LEDDEVICE]");
|
||||
Option & argDisableComponent = parser.add<Option> ('D', "disable" , "Disable the Component with the given name. Available Components are [SMOOTHING, BLACKBORDER, FORWARDER, BOBLIGHT_SERVER, GRABBER, V4L, LEDDEVICE]");
|
||||
Option & argEnableComponent = parser.add<Option> ('E', "enable" , "Enable the Component with the given name. Available Components are [SMOOTHING, BLACKBORDER, FORWARDER, BOBLIGHTSERVER, GRABBER, V4L, LEDDEVICE]");
|
||||
Option & argDisableComponent = parser.add<Option> ('D', "disable" , "Disable the Component with the given name. Available Components are [SMOOTHING, BLACKBORDER, FORWARDER, BOBLIGHTSERVER, GRABBER, V4L, LEDDEVICE]");
|
||||
Option & argId = parser.add<Option> ('q', "qualifier" , "Identifier(qualifier) of the adjustment to set");
|
||||
IntOption & argBrightness = parser.add<IntOption> ('L', "brightness" , "Set the brightness gain of the LEDs");
|
||||
IntOption & argBrightnessC = parser.add<IntOption> (0x0, "brightnessCompensation" , "Set the brightness compensation");
|
||||
|
Loading…
Reference in New Issue
Block a user