mDNS Support (#1452)

* Allow build, if no grabbers are enabled

* Align available functions to right Qt version

* Update to next development version

* Align available functions to right Qt version

* fix workflows (apt/nightly)

* Disable QNetworkConfigurationManager deprecation warnings

* Initial go on Smart Pointers

* Add Deallocation

* Correct QT_WARNING_DISABLE_DEPRECATED (available since 5.9)

* Cluster Build Variables

* Hyperion Light

* Address build warnings

* Hyperion Light - UI

* Update Protobuf to latest master

* Removed compiler warnings

* Added restart ability to systray

* Correct Protobuf

* Ignore 'no-return' warning on protobuf build

* hyperion-remote: Fix auto discovery of hyperion server

* Fix Qt version override

* Update changelog

* Remove Grabber Components, if no Grabber exists

* Standalone Grabber - Fix fps default

* Remote Control - Have Source Selction accrosswhole screen

* Enable Blackborder detection only, if relevant input sources available

* Enable Blackborder detection only, if relevant input sources available

* Remote UI - rearrange containers

* Checkout

* Fix compilation on windows

* Re-added qmdnsengine template cmake

* chrono added for linux

* Removed existing AVAHI/Bonjour, allow to enable/disable mDNS

* hyperiond macos typo fix

* Fix macOS Bundle build

* Fix macOS bundle info details

* Correct CMake files

* Removed existing AVAHI/Bonjour (2)

* Share hyperion's services via mDNS

* Add mDNS Browser and mDNS for LED-Devices

* Support mDNS discovery for standalone grabbers

* Remove ZLib Dependency & Cleanup

* mDNS - hanle 2.local2 an ".local." domains equally

* Hue - Link discovery to bridge class, workaround port 443 for mDNS discovery

* Fix save button state when switching between devices

* Removed sessions (of other hyperions)

* mDNS Publisher - Simplify service naming

* mDNS refactoring & Forwarder discovery

* mDNS Updates to use device service name

* Consistency of standalone grabbers with mDNS Service Registry

* Merge branch 'hyperion-project:master' into mDNS

* Start JSON and WebServers only after Instance 0 is available

* Remove bespoke qDebug Output again

* MDNS updates and refactor Forwarder

* Minor updates

* Upgrade to CMake 3.1

* typo

* macOS fix

* Correct merge

* - Remove dynamic linker flag from standalone dispmanX Grabber
- Added ability to use system qmdns libs

* Cec handler library will load at runtime

* typo fix

* protobuf changes

* mDNS changes for Windows/macOS

* test window build qmdnsengine

* absolute path to protobuf cmake dir

* Rework Hue Wizard supporting mDNS

* LED-Devices - Retry support + Refactoring (excl. Hue)

* LED-Devices - Refactoring/Retry support Hue + additional alignments

* Address LGTM findings

* Fix CI-Build, revert test changes

* Build Windows in Release mode to avoid python problem

* Correct that WebServerObject is available earlier

* Ensure that instance name in logs for one instance are presented

* Update content LEDs

* Rework mDNS Address lookup

* Fix LED UI

* Fix for non mDNS Services (ignore default port)

* Disbale device when now input is available

* Revert back some updates, ensure last color is updated when switched on

* Handle reopening case and changed IP, port for API-calls

* Add UPD-DDP Device

* WLED support for DDP

* Fix printout

* LEDDevice - Allow more retries, udapte defaults

* LED-Net Devices - Select Custom device, if configured

Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>
Co-authored-by: Paulchen Panther <Paulchen-Panter@protonmail.com>
This commit is contained in:
LordGrey
2022-05-01 19:42:47 +02:00
committed by GitHub
parent 3ef4ebc1a4
commit e9936e131b
148 changed files with 5885 additions and 4459 deletions

View File

@@ -41,7 +41,3 @@ endif()
if(ENABLE_FORWARDER)
target_link_libraries(hyperion forwarder)
endif()
if (ENABLE_AVAHI)
target_link_libraries(hyperion bonjour)
endif ()

View File

@@ -149,6 +149,7 @@ void Hyperion::start()
if (_instIndex == 0)
{
_messageForwarder = new MessageForwarder(this);
_messageForwarder->handleSettingsUpdate(settings::NETFORWARD, getSetting(settings::NETFORWARD));
}
#endif
@@ -698,7 +699,6 @@ void Hyperion::update()
// Smoothing is disabled
if (! _deviceSmooth->enabled())
{
//std::cout << "Hyperion::update()> Non-Smoothing - "; LedDevice::printLedValues ( _ledBuffer);
emit ledDeviceData(_ledBuffer);
}
else
@@ -710,11 +710,4 @@ void Hyperion::update()
}
}
}
#if 0
else
{
//LEDDevice is disabled
Debug(_log, "LEDDevice is disabled - no update required");
}
#endif
}

View File

@@ -22,11 +22,16 @@ HyperionIManager::HyperionIManager(const QString& rootPath, QObject* parent, boo
Hyperion* HyperionIManager::getHyperionInstance(quint8 instance)
{
Hyperion* pInstance {nullptr};
if(_runningInstances.contains(instance))
return _runningInstances.value(instance);
Warning(_log,"The requested instance index '%d' with name '%s' isn't running, return main instance", instance, QSTRING_CSTR(_instanceTable->getNamebyIndex(instance)));
return _runningInstances.value(0);
if (!_runningInstances.isEmpty())
{
Warning(_log,"The requested instance index '%d' with name '%s' isn't running, return main instance", instance, QSTRING_CSTR(_instanceTable->getNamebyIndex(instance)));
pInstance = _runningInstances.value(0);
}
return pInstance;
}
QVector<QVariantMap> HyperionIManager::getInstanceData() const

View File

@@ -22,15 +22,15 @@ const int PriorityMuxer::ENDLESS = -1;
PriorityMuxer::PriorityMuxer(int ledCount, QObject * parent)
: QObject(parent)
, _log(nullptr)
, _currentPriority(PriorityMuxer::LOWEST_PRIORITY)
, _previousPriority(_currentPriority)
, _manualSelectedPriority(MANUAL_SELECTED_PRIORITY)
, _prevVisComp (hyperion::Components::COMP_COLOR)
, _sourceAutoSelectEnabled(true)
, _updateTimer(new QTimer(this))
, _timer(new QTimer(this))
, _blockTimer(new QTimer(this))
, _log(nullptr)
, _currentPriority(PriorityMuxer::LOWEST_PRIORITY)
, _previousPriority(_currentPriority)
, _manualSelectedPriority(MANUAL_SELECTED_PRIORITY)
, _prevVisComp (hyperion::Components::COMP_COLOR)
, _sourceAutoSelectEnabled(true)
, _updateTimer(new QTimer(this))
, _timer(new QTimer(this))
, _blockTimer(new QTimer(this))
{
QString subComponent = parent->property("instance").toString();
_log= Logger::getInstance("MUXER", subComponent);

View File

@@ -41,6 +41,33 @@
},
"access": "advanced",
"propertyOrder": 4
},
"enableAttempts": {
"type": "integer",
"title": "edt_dev_general_enableAttempts_title",
"minimum": 0,
"maximum": 120,
"default": 12,
"required": true,
"options": {
"infoText": "edt_dev_general_enableAttempts_title_info"
},
"access": "advanced",
"propertyOrder": 5
},
"enableAttemptsInterval": {
"type": "integer",
"title": "edt_dev_general_enableAttemptsInterval_title",
"minimum": 5,
"maximum": 120,
"default": 15,
"required": true,
"append": "edt_append_s",
"options": {
"infoText": "edt_dev_general_enableAttemptsInterval_title_info"
},
"access": "advanced",
"propertyOrder": 6
}
},
"dependencies": {

View File

@@ -1,77 +1,106 @@
{
"type" : "object",
"title" : "edt_conf_fw_heading_title",
"required" : true,
"properties": {
"enable": {
"type": "boolean",
"title": "edt_conf_general_enable_title",
"required": true,
"default": false,
"propertyOrder": 1
},
"json": {
"type": "array",
"title": "edt_conf_fw_json_title",
"propertyOrder": 2,
"uniqueItems": true,
"items": {
"type": "object",
"title": "edt_conf_fw_json_itemtitle",
"required": true,
"properties": {
"host": {
"type": "string",
"format": "hostname_or_ip",
"minLength": 7,
"title": "edt_dev_spec_targetIpHost_title",
"required": true,
"propertyOrder": 1
},
"port": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"default": 19444,
"title": "edt_dev_spec_port_title",
"required": true,
"access": "expert",
"propertyOrder": 2
}
}
}
},
"flat": {
"type": "array",
"title": "edt_conf_fw_flat_title",
"propertyOrder": 3,
"uniqueItems": true,
"items": {
"type": "object",
"title": "edt_conf_fw_flat_itemtitle",
"required": true,
"properties": {
"host": {
"type": "string",
"format": "hostname_or_ip",
"minLength": 7,
"title": "edt_dev_spec_targetIpHost_title",
"required": true,
"propertyOrder": 1
},
"port": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"default": 19400,
"title": "edt_dev_spec_port_title",
"required": true,
"access": "expert",
"propertyOrder": 2
}
}
}
}
},
"additionalProperties": false
}
"type": "object",
"title": "edt_conf_fw_heading_title",
"required": true,
"properties": {
"enable": {
"type": "boolean",
"title": "edt_conf_general_enable_title",
"required": true,
"default": false,
"propertyOrder": 1
},
"jsonapiselect": {
"type": "array",
"uniqueItems": true,
"format": "select",
"title": "edt_conf_fw_json_services_discovered_title",
"propertyOrder": 2
},
"jsonapi": {
"type": "array",
"title": "edt_conf_fw_json_title",
"uniqueItems": true,
"access": "expert",
"items": {
"type": "object",
"title": "edt_conf_fw_json_itemtitle",
"properties": {
"name": {
"type": "string",
"title": "edt_conf_fw_service_name_title",
"required": true,
"access": "expert",
"propertyOrder": 1
},
"host": {
"type": "string",
"format": "hostname_or_ip",
"minLength": 7,
"title": "edt_dev_spec_targetIpHost_title",
"required": true,
"access": "expert",
"propertyOrder": 2
},
"port": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"title": "edt_dev_spec_port_title",
"required": true,
"access": "expert",
"propertyOrder": 3
}
}
},
"propertyOrder": 3
},
"flatbufferselect": {
"type": "array",
"uniqueItems": true,
"format": "select",
"title": "edt_conf_fw_flat_services_discovered_title",
"propertyOrder": 4
},
"flatbuffer": {
"type": "array",
"title": "edt_conf_fw_flat_title",
"uniqueItems": true,
"access": "expert",
"items": {
"type": "object",
"title": "edt_conf_fw_flat_itemtitle",
"properties": {
"name": {
"type": "string",
"title": "edt_conf_fw_service_name_title",
"access": "expert",
"propertyOrder": 1
},
"host": {
"type": "string",
"format": "hostname_or_ip",
"minLength": 7,
"title": "edt_dev_spec_targetIpHost_title",
"required": true,
"access": "expert",
"propertyOrder": 2
},
"port": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"default": 19400,
"title": "edt_dev_spec_port_title",
"required": true,
"access": "expert",
"propertyOrder": 3
}
}
},
"propertyOrder": 5
}
},
"additionalProperties": false
}