mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2023-10-10 13:36:59 +02:00
efc2046ab5
* LedDevice - Address clang findings * Fix Windows Warnings * Ensure newInput is initialised * Clean-up unused elements for Plaform Capture * Fix initialization problem and spellings * Address clang findings and spelling corrections * LedDevice clean-ups * Cleanups * Align that getLedCount is int * Have "display" as default for Grabbers * Fix config during start-up for missing elements * Framegrabber Clean-up - Remove non supported grabbers from selection, filter valid options * Typo * Framegrabber.json - Fix property numbering * Preselect active Grabbertype * Sort Grabbernames * Align options with selected element * Fix deletion of pointer to incomplete type 'BonjourBrowserWrapper' * Address macOS compile warnings * Have default layout = 1 LED only to avoid errors as in #673 * Address lgtm findings * Address finding that params passed to LedDevice discovery were not considered * Cleanups after merging with latest master * Update Changelog * Address lgtm findings * Fix comment * Test Fix * Fix Python Warning * Handle Dummy Device assignment correctly * Address delete called on non-final 'commandline::Option' that has virtual functions but non-virtual destructor * Correct that QTimer.start accepts only int * Have Release Python GIL & reset threat state chnage downward compatible * Correct format specifier * LedDevice - add assertions * Readonly DB - Fix merge issue * Smoothing - Fix wrong defaults * LedDevice - correct assertion * Show smoothing config set# in debug and related values. * Suppress error on windows, if default file is "/dev/null" * CMAKE - Allow to define QT_BASE_DIR dynamically via environment-variable * Ignore Visual Studio specific files Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>
54 lines
1.2 KiB
C++
54 lines
1.2 KiB
C++
// Stl includes
|
|
#include <exception>
|
|
#include <map>
|
|
|
|
// Build configuration
|
|
#include <HyperionConfig.h>
|
|
|
|
// Leddevice includes
|
|
#include <leddevice/LedDeviceFactory.h>
|
|
#include <leddevice/LedDeviceWrapper.h>
|
|
#include <utils/Logger.h>
|
|
#include <leddevice/LedDevice.h>
|
|
|
|
// autogen
|
|
#include "LedDevice_headers.h"
|
|
|
|
LedDevice * LedDeviceFactory::construct(const QJsonObject & deviceConfig)
|
|
{
|
|
Logger * log = Logger::getInstance("LEDDEVICE");
|
|
QJsonDocument config(deviceConfig);
|
|
|
|
QString type = deviceConfig["type"].toString("UNSPECIFIED").toLower();
|
|
|
|
const LedDeviceRegistry& devList = LedDeviceWrapper::getDeviceMap();
|
|
LedDevice* device = nullptr;
|
|
try
|
|
{
|
|
for ( auto dev: devList)
|
|
{
|
|
if (dev.first == type)
|
|
{
|
|
device = dev.second(deviceConfig);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (device == nullptr)
|
|
{
|
|
throw std::runtime_error("unknown device");
|
|
}
|
|
}
|
|
catch(std::exception& e)
|
|
{
|
|
QString dummyDeviceType = "file";
|
|
Error(log, "Dummy device type (%s) used, because configured device '%s' throws error '%s'", QSTRING_CSTR(dummyDeviceType), QSTRING_CSTR(type), e.what());
|
|
|
|
QJsonObject dummyDeviceConfig;
|
|
dummyDeviceConfig.insert("type",dummyDeviceType);
|
|
device = LedDeviceFile::construct(dummyDeviceConfig);
|
|
}
|
|
|
|
return device;
|
|
}
|