From c496d26866fe9f33fbb469ba4b9641580b8f4566 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=BCrz?= Date: Sun, 21 Jun 2015 15:44:32 +0200 Subject: [PATCH] add debug categories for plugins and update man page --- debian/guhd.1 | 53 ++++ libguh/loggingcategorys.cpp | 31 +- libguh/loggingcategorys.h | 26 ++ plugins/deviceplugins/boblight/bobclient.cpp | 22 +- .../boblight/devicepluginboblight.cpp | 3 +- .../deviceplugincommandlauncher.cpp | 7 +- .../conrad/devicepluginconrad.cpp | 9 +- .../deviceplugins/elro/devicepluginelro.cpp | 13 +- .../deviceplugins/eq-3/deviceplugineq-3.cpp | 7 +- plugins/deviceplugins/eq-3/maxcube.cpp | 279 +++++++++--------- .../intertechno/devicepluginintertechno.cpp | 7 +- .../leynew/devicepluginleynew.cpp | 5 +- .../lgsmarttv/devicepluginlgsmarttv.cpp | 3 +- plugins/deviceplugins/lgsmarttv/tvdevice.cpp | 24 +- .../lgsmarttv/tveventhandler.cpp | 8 +- .../deviceplugins/lircd/devicepluginlircd.cpp | 5 +- plugins/deviceplugins/lircd/lircdclient.cpp | 17 +- .../devicepluginmailnotification.cpp | 1 + .../mailnotification/smtpclient.cpp | 3 +- .../deviceplugins/mock/devicepluginmock.cpp | 13 +- plugins/deviceplugins/mock/httpdaemon.cpp | 3 +- .../devicepluginopenweathermap.cpp | 32 +- .../philipshue/devicepluginphilipshue.cpp | 37 +-- .../deviceplugins/tune/deviceplugintune.cpp | 3 +- plugins/deviceplugins/tune/jsonrpcserver.cpp | 15 +- plugins/deviceplugins/tune/tunemanager.cpp | 13 +- .../udpcommander/devicepluginudpcommander.cpp | 7 +- .../unitec/devicepluginunitec.cpp | 22 +- .../wakeonlan/devicepluginwakeonlan.cpp | 32 +- .../deviceplugins/wemo/devicepluginwemo.cpp | 5 +- .../wifidetector/devicepluginwifidetector.cpp | 4 +- server/main.cpp | 38 ++- 32 files changed, 438 insertions(+), 309 deletions(-) diff --git a/debian/guhd.1 b/debian/guhd.1 index 29c6a2de..19fd530e 100644 --- a/debian/guhd.1 +++ b/debian/guhd.1 @@ -21,6 +21,59 @@ Displays version information. .TP \fB\-n\fR, \fB\-\-no\-daemon\fR Run guhd in the foreground, not as daemon. +.TP +\fB\-d\fR, \fB\-\-debug\fR, \fB\<[No\]DebugCategory>\fR +Debug categories to enable. Prefix with \"No\" to disable. Warnings from all +categories will be printed unless explicitly muted with "NoWarnings". +.RS +.TP +Categories are: +.IP \fIApplication\fR\ (default\ enabled) +Print the debug messages from the core application. +.IP \fICommandLauncher\fR\ (default\ disabled) +Print the debug messages from the command launcher device plugin. +.IP \fIConnection\fR\ (default\ enabled) +Print the debug messages from the TCP connections in guh. +.IP \fIDeviceManager\fR\ (default\ enabled) +Print the debug messages from the device manager. +.IP \fIEQ-3\fR\ (default\ disabled) +Print the debug messages from eQ-3 device plugin. +.IP \fIHardware\fR\ (default\ disabled) +Print the debug messages from hardware resources in guh. +.IP \fIJsonRpc\fR\ (default\ disabled) +Print the debug messages from JSON-RPC interface. +.IP \fILgSmartTv\fR\ (default\ disabled) +Print the debug messages from Lg Smart Tv device plugin. +.IP \fILircd\fR\ (default\ disabled) +Print the debug messages from lircd device plugin. +.IP \fILogEngine\fR\ (default\ disabled) +Print the debug messages from logging engine. +.IP \fIMailNotification\fR\ (default\ disabled) +Print the debug messages from the mail notification device plugin. +.IP \fIMock\fR\ (default\ disabled) +Print the debug messages from the mock device plugin. +.IP \fIOpenweahtermap\fR\ (default\ disabled) +Print the debug messages from the open weathermap device plugin. +.IP \fIPhilipsHue\fR\ (default\ disabled) +Print the debug messages from the Philips Hue device plugin. +.IP \fIRF433\fR\ (default\ disabled) +Print the debug messages from the RF 433 MHz plugins. Each plugin which uses the RF 433 MHz +hardware resource is in this debug caterogry. +.IP \fIRuleEngine\fR\ (default\ enabled) +Print the debug messages from the rule engine. +.IP \fITune\fR\ (default\ disabled) +Print the debug messages from the tune device plugin. +.IP \fIUdpCommander\fR\ (default\ disabled) +Print the debug messages from the UPD commander device plugin. +.IP \fIWakeOnLan\fR\ (default\ disabled) +Print the debug messages from the wake on lan device plugin. +.IP \fIWarnings\fR\ (default\ enabled) +Print warnings of all categories. +.IP \fIWemo\fR\ (default\ disabled) +Print the debug messages from the wemo device plugin. +.IP \fIWifiDetector\fR\ (default\ disabled) +Print the debug messages from the WiFi detector device plugin. + .SH SEE ALSO Full developer documentation at: .br diff --git a/libguh/loggingcategorys.cpp b/libguh/loggingcategorys.cpp index 539a05a8..e9b33e80 100644 --- a/libguh/loggingcategorys.cpp +++ b/libguh/loggingcategorys.cpp @@ -21,10 +21,29 @@ #include "loggingcategorys.h" Q_LOGGING_CATEGORY(dcApplication, "Application") -Q_LOGGING_CATEGORY(dcDeviceManager,"DeviceManager") -Q_LOGGING_CATEGORY(dcRuleEngine,"RuleEngine") -Q_LOGGING_CATEGORY(dcHardware,"Hardware") -Q_LOGGING_CATEGORY(dcConnection,"Connection") -Q_LOGGING_CATEGORY(dcJsonRpc,"JsonRpc") -Q_LOGGING_CATEGORY(dcLogEngine,"LogEngine") +Q_LOGGING_CATEGORY(dcDeviceManager, "DeviceManager") +Q_LOGGING_CATEGORY(dcRuleEngine, "RuleEngine") +Q_LOGGING_CATEGORY(dcHardware, "Hardware") +Q_LOGGING_CATEGORY(dcConnection, "Connection") +Q_LOGGING_CATEGORY(dcJsonRpc, "JsonRpc") +Q_LOGGING_CATEGORY(dcLogEngine, "LogEngine") +// Plugins +#ifdef boblight +Q_LOGGING_CATEGORY(dcBoblight, "Boblight") +#endif + +Q_LOGGING_CATEGORY(dcCommandLauncher, "CommandLauncher") +Q_LOGGING_CATEGORY(dcRF433, "RF433") +Q_LOGGING_CATEGORY(dcEQ3, "EQ-3") +Q_LOGGING_CATEGORY(dcLgSmartTv, "LgSmartTv") +Q_LOGGING_CATEGORY(dcLircd, "Lircd") +Q_LOGGING_CATEGORY(dcMailNotification, "MailNotification") +Q_LOGGING_CATEGORY(dcMock, "Mock") +Q_LOGGING_CATEGORY(dcOpenweathermap, "Openweahtermap") +Q_LOGGING_CATEGORY(dcPhilipsHue, "PhilipsHue") +Q_LOGGING_CATEGORY(dcTune, "Tune") +Q_LOGGING_CATEGORY(dcUdpCommander, "UdpCommander") +Q_LOGGING_CATEGORY(dcWakeOnLan, "WakeOnLan") +Q_LOGGING_CATEGORY(dcWemo, "Wemo") +Q_LOGGING_CATEGORY(dcWifiDetector, "WifiDetector") diff --git a/libguh/loggingcategorys.h b/libguh/loggingcategorys.h index ad8c979d..9cf2a85e 100644 --- a/libguh/loggingcategorys.h +++ b/libguh/loggingcategorys.h @@ -23,6 +23,7 @@ #include +// Core / libguh Q_DECLARE_LOGGING_CATEGORY(dcApplication) Q_DECLARE_LOGGING_CATEGORY(dcDeviceManager) Q_DECLARE_LOGGING_CATEGORY(dcRuleEngine) @@ -31,4 +32,29 @@ Q_DECLARE_LOGGING_CATEGORY(dcConnection) Q_DECLARE_LOGGING_CATEGORY(dcJsonRpc) Q_DECLARE_LOGGING_CATEGORY(dcLogEngine) +// Plugins + +#ifdef boblight +Q_DECLARE_LOGGING_CATEGORY(dcBoblight) +#endif + +Q_DECLARE_LOGGING_CATEGORY(dcCommandLauncher) +Q_DECLARE_LOGGING_CATEGORY(dcRF433) +Q_DECLARE_LOGGING_CATEGORY(dcEQ3) +Q_DECLARE_LOGGING_CATEGORY(dcLgSmartTv) +Q_DECLARE_LOGGING_CATEGORY(dcLircd) +Q_DECLARE_LOGGING_CATEGORY(dcMailNotification) +Q_DECLARE_LOGGING_CATEGORY(dcMock) +Q_DECLARE_LOGGING_CATEGORY(dcOpenweathermap) +Q_DECLARE_LOGGING_CATEGORY(dcPhilipsHue) +Q_DECLARE_LOGGING_CATEGORY(dcTune) +Q_DECLARE_LOGGING_CATEGORY(dcUdpCommander) +Q_DECLARE_LOGGING_CATEGORY(dcWakeOnLan) +Q_DECLARE_LOGGING_CATEGORY(dcWemo) +Q_DECLARE_LOGGING_CATEGORY(dcWifiDetector) + + + + + #endif // LOGGINGCATEGORYS_H diff --git a/plugins/deviceplugins/boblight/bobclient.cpp b/plugins/deviceplugins/boblight/bobclient.cpp index 19d2824d..2574299b 100644 --- a/plugins/deviceplugins/boblight/bobclient.cpp +++ b/plugins/deviceplugins/boblight/bobclient.cpp @@ -21,6 +21,7 @@ #include "bobclient.h" +#include "loggingcategorys.h" #include "libboblight/boblight.h" @@ -41,19 +42,19 @@ BobClient::BobClient(QObject *parent) : bool BobClient::connect(const QString &hostname, int port) { - qDebug() << "Connecting to boblightd\n"; + qCDebug(dcBoblight) << "Connecting to boblightd\n"; m_boblight = boblight_init(); //try to connect, if we can't then bitch to stderr and destroy boblight if (!boblight_connect(m_boblight, hostname.toLatin1().data(), port, 5000000) || !boblight_setpriority(m_boblight, 1)) { - qDebug() << "Failed to connect:" << boblight_geterror(m_boblight); + qCWarning(dcBoblight) << "Failed to connect:" << boblight_geterror(m_boblight); boblight_destroy(m_boblight); m_connected = false; return false; } - qDebug() << "Connection to boblightd opened\n"; + qCDebug(dcBoblight) << "Connection to boblightd opened\n"; m_hostname = hostname; m_port = port; m_connected = true; @@ -67,8 +68,8 @@ bool BobClient::connected() const void BobClient::setPriority(int priority) { - qDebug() << "setting new priority:" << priority; - qDebug() << "setting priority to" << priority << boblight_setpriority(m_boblight, priority); + qCDebug(dcBoblight) << "setting new priority:" << priority; + qCDebug(dcBoblight) << "setting priority to" << priority << boblight_setpriority(m_boblight, priority); } void BobClient::setColor(int channel, QColor color) @@ -79,14 +80,14 @@ void BobClient::setColor(int channel, QColor color) } } else { m_colors[channel] = color; -// qDebug() << "set channel" << channel << "to color" << color; + qCDebug(dcBoblight) << "set channel" << channel << "to color" << color; } } void BobClient::sync() { if(!m_connected) { - qDebug() << "Not connected to boblight. Cannot sync"; + qCWarning(dcBoblight) << "Not connected to boblight. Cannot sync"; return; } if(m_lastSyncTime.addMSecs(50) > QTime::currentTime()) { @@ -95,7 +96,7 @@ void BobClient::sync() } return; } - //qDebug() << "syncing"; + qCDebug(dcBoblight) << "syncing"; m_lastSyncTime = QTime::currentTime(); for(int i = 0; i < lightsCount(); ++i) { @@ -104,7 +105,7 @@ void BobClient::sync() rgb[0] = m_colors[i].red() * m_colors[i].alphaF(); rgb[1] = m_colors[i].green() * m_colors[i].alphaF(); rgb[2] = m_colors[i].blue() * m_colors[i].alphaF(); -// qDebug() << "set color" << rgb[0] << rgb[1] << rgb[2]; + qCDebug(dcBoblight) << "set color" << rgb[0] << rgb[1] << rgb[2]; //set all lights to the color we want and send it boblight_addpixel(m_boblight, i, rgb); @@ -113,8 +114,7 @@ void BobClient::sync() if (!boblight_sendrgb(m_boblight, 1, NULL)) //some error happened, probably connection broken, so bitch and try again { - qDebug() << "Boblight connection error!"; - qDebug() << boblight_geterror(m_boblight); + qCWarning(dcBoblight) << "Boblight connection error:" << boblight_geterror(m_boblight); boblight_destroy(m_boblight); m_connected = false; connect(m_hostname, m_port); diff --git a/plugins/deviceplugins/boblight/devicepluginboblight.cpp b/plugins/deviceplugins/boblight/devicepluginboblight.cpp index d333401b..ff5779b6 100644 --- a/plugins/deviceplugins/boblight/devicepluginboblight.cpp +++ b/plugins/deviceplugins/boblight/devicepluginboblight.cpp @@ -50,6 +50,7 @@ #include "plugin/device.h" #include "devicemanager.h" +#include "loggingcategorys.h" #include "bobclient.h" #include "plugininfo.h" @@ -126,7 +127,7 @@ QPair DevicePluginBoblight::executeAction(D if (!newColor.isValid()) { return report(DeviceManager::DeviceErrorActionParameterError, "color"); } - qDebug() << "executing boblight action" << newColor; + qCDebug(dcBoblight) << "executing boblight action" << newColor; m_bobClient->setColor(device->paramValue("channel").toInt(), newColor); m_bobClient->sync(); diff --git a/plugins/deviceplugins/commandlauncher/deviceplugincommandlauncher.cpp b/plugins/deviceplugins/commandlauncher/deviceplugincommandlauncher.cpp index d92bdf8d..5f6a5bd1 100644 --- a/plugins/deviceplugins/commandlauncher/deviceplugincommandlauncher.cpp +++ b/plugins/deviceplugins/commandlauncher/deviceplugincommandlauncher.cpp @@ -105,6 +105,7 @@ #include "plugin/device.h" #include "devicemanager.h" #include "plugininfo.h" +#include "loggingcategorys.h" #include @@ -126,15 +127,15 @@ DeviceManager::DeviceSetupStatus DevicePluginCommandLauncher::setupDevice(Device // check if script exists and if it is executable QFileInfo fileInfo(scriptArguments.first()); if (!fileInfo.exists()) { - qWarning() << "ERROR: script " << scriptArguments.first() << "does not exist."; + qCWarning(dcCommandLauncher) << "script " << scriptArguments.first() << "does not exist."; return DeviceManager::DeviceSetupStatusFailure; } if (!fileInfo.isExecutable()) { - qWarning() << "ERROR: script " << scriptArguments.first() << "is not executable. Please check the permissions."; + qCWarning(dcCommandLauncher) << "script " << scriptArguments.first() << "is not executable. Please check the permissions."; return DeviceManager::DeviceSetupStatusFailure; } if (!fileInfo.isReadable()) { - qWarning() << "ERROR: script " << scriptArguments.first() << "is not readable. Please check the permissions."; + qCWarning(dcCommandLauncher) << "script " << scriptArguments.first() << "is not readable. Please check the permissions."; return DeviceManager::DeviceSetupStatusFailure; } diff --git a/plugins/deviceplugins/conrad/devicepluginconrad.cpp b/plugins/deviceplugins/conrad/devicepluginconrad.cpp index 5e55d197..4720c4d8 100644 --- a/plugins/deviceplugins/conrad/devicepluginconrad.cpp +++ b/plugins/deviceplugins/conrad/devicepluginconrad.cpp @@ -50,6 +50,7 @@ #include "plugin/device.h" #include "devicemanager.h" #include "plugininfo.h" +#include "loggingcategorys.h" #include #include @@ -128,10 +129,10 @@ DeviceManager::DeviceError DevicePluginConrad::executeAction(Device *device, con // ======================================= // send data to driver if(transmitData(delay, rawData, repetitions)){ - qDebug() << "action" << pluginName() << device->name() << action.actionTypeId(); + qCDebug(dcRF433) << "transmitted successfully" << pluginName() << device->name() << action.actionTypeId(); return DeviceManager::DeviceErrorNoError; }else{ - qDebug() << "could not transmitt" << pluginName() << device->name() << action.actionTypeId(); + qCWarning(dcRF433) << "could not transmitt" << pluginName() << device->name() << action.actionTypeId(); return DeviceManager::DeviceErrorHardwareNotAvailable; } } @@ -143,7 +144,7 @@ void DevicePluginConrad::radioData(const QList &rawData) return; } - // qDebug() << rawData; + qCDebug(dcRF433) << rawData; int delay = rawData.first()/10; QByteArray binCode; @@ -186,5 +187,5 @@ void DevicePluginConrad::radioData(const QList &rawData) return; } - qDebug() << "CONRAD: " << binCode.left(binCode.length() - 24) << " ID = " << binCode.right(24); + qCDebug(dcRF433) << "Conrad: " << binCode.left(binCode.length() - 24) << " ID = " << binCode.right(24); } diff --git a/plugins/deviceplugins/elro/devicepluginelro.cpp b/plugins/deviceplugins/elro/devicepluginelro.cpp index 9721fb07..920d013a 100644 --- a/plugins/deviceplugins/elro/devicepluginelro.cpp +++ b/plugins/deviceplugins/elro/devicepluginelro.cpp @@ -47,6 +47,7 @@ #include "devicepluginelro.h" #include "devicemanager.h" #include "plugininfo.h" +#include "loggingcategorys.h" #include #include @@ -152,10 +153,10 @@ DeviceManager::DeviceError DevicePluginElro::executeAction(Device *device, const // send data to hardware resource if (transmitData(delay, rawData)) { - qDebug() << "transmitted" << pluginName() << device->name() << "power: " << action.param("power").value().toBool(); + qCDebug(dcRF433) << "transmitted" << pluginName() << device->name() << "power: " << action.param("power").value().toBool(); return DeviceManager::DeviceErrorNoError; } else { - qDebug() << "could not transmitt" << pluginName() << device->name() << "power: " << action.param("power").value().toBool(); + qCWarning(dcRF433) << "could not transmitt" << pluginName() << device->name() << "power: " << action.param("power").value().toBool(); return DeviceManager::DeviceErrorHardwareNotAvailable; } } @@ -207,13 +208,13 @@ void DevicePluginElro::radioData(const QList &rawData) return; } - qDebug() << "ELRO understands this protocol: " << binCode; + qCDebug(dcRF433) << "ELRO understands this protocol: " << binCode; if (binCode.left(20) == "00000100000000000001") { if (binCode.right(4) == "0100") { - qDebug() << "Motion Detector OFF"; + qCDebug(dcRF433) << "Motion Detector OFF"; } else { - qDebug() << "Motion Detector ON"; + qCDebug(dcRF433) << "Motion Detector ON"; } } @@ -257,5 +258,5 @@ void DevicePluginElro::radioData(const QList &rawData) return; } - qDebug() << "ELRO:" << group << buttonCode << power; + qCDebug(dcRF433) << "Elro:" << group << buttonCode << power; } diff --git a/plugins/deviceplugins/eq-3/deviceplugineq-3.cpp b/plugins/deviceplugins/eq-3/deviceplugineq-3.cpp index 750f4dfe..2f00fd46 100644 --- a/plugins/deviceplugins/eq-3/deviceplugineq-3.cpp +++ b/plugins/deviceplugins/eq-3/deviceplugineq-3.cpp @@ -72,6 +72,7 @@ #include "devicemanager.h" #include "types/param.h" #include "plugininfo.h" +#include "loggingcategorys.h" #include @@ -110,12 +111,12 @@ void DevicePluginEQ3::startMonitoringAutoDevices() DeviceManager::DeviceSetupStatus DevicePluginEQ3::setupDevice(Device *device) { - qDebug() << "setupDevice" << device->params(); + qCDebug(dcEQ3) << "setupDevice" << device->params(); if(device->deviceClassId() == cubeDeviceClassId){ foreach (MaxCube *cube, m_cubes.keys()) { if(cube->serialNumber() == device->paramValue("serial number").toString()){ - qDebug() << cube->serialNumber() << " already exists..."; + qCDebug(dcEQ3) << cube->serialNumber() << " already exists..."; return DeviceManager::DeviceSetupStatusFailure; } } @@ -150,7 +151,7 @@ void DevicePluginEQ3::deviceRemoved(Device *device) MaxCube *cube = m_cubes.key(device); cube->disconnectFromCube(); - qDebug() << "remove cube " << cube->serialNumber(); + qCDebug(dcEQ3) << "remove cube " << cube->serialNumber(); m_cubes.remove(cube); cube->deleteLater(); } diff --git a/plugins/deviceplugins/eq-3/maxcube.cpp b/plugins/deviceplugins/eq-3/maxcube.cpp index 738ec4d2..9f1117f0 100644 --- a/plugins/deviceplugins/eq-3/maxcube.cpp +++ b/plugins/deviceplugins/eq-3/maxcube.cpp @@ -19,6 +19,7 @@ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #include "maxcube.h" +#include "loggingcategorys.h" MaxCube::MaxCube(QObject *parent, QString serialNumber, QHostAddress hostAdress, quint16 port): QTcpSocket(parent), m_serialNumber(serialNumber), m_hostAddress(hostAdress), m_port(port) @@ -153,25 +154,25 @@ void MaxCube::decodeHelloMessage(QByteArray data) m_rfAddress = list.at(1); m_firmware = list.at(2).toInt(); - // qDebug() << "===================================================="; - // qDebug() << " HELLO message:"; - // qDebug() << "===================================================="; - // qDebug() << " serial number | " << m_serialNumber; - // qDebug() << " RF address (hex) | " << m_rfAddress; - // qDebug() << " firmware | " << m_firmware; - // qDebug() << " Cube date | " << m_cubeDateTime.date().toString("dd.MM.yyyy"); - // qDebug() << " Cube time | " << m_cubeDateTime.time().toString("HH:mm"); - // qDebug() << " State Cube Time | " << list.at(9); - // qDebug() << " NTP counter | " << list.at(10); + qCDebug(dcEQ3) << "===================================================="; + qCDebug(dcEQ3) << " HELLO message:"; + qCDebug(dcEQ3) << "===================================================="; + qCDebug(dcEQ3) << " serial number | " << m_serialNumber; + qCDebug(dcEQ3) << " RF address (hex) | " << m_rfAddress; + qCDebug(dcEQ3) << " firmware | " << m_firmware; + qCDebug(dcEQ3) << " Cube date | " << m_cubeDateTime.date().toString("dd.MM.yyyy"); + qCDebug(dcEQ3) << " Cube time | " << m_cubeDateTime.time().toString("HH:mm"); + qCDebug(dcEQ3) << " State Cube Time | " << list.at(9); + qCDebug(dcEQ3) << " NTP counter | " << list.at(10); } void MaxCube::decodeMetadataMessage(QByteArray data) { QList list = data.left(data.length()-2).split(','); QByteArray dataDecoded = QByteArray::fromBase64(list.at(2)); - // qDebug() << "===================================================="; - // qDebug() << " METADATA message:"; - // qDebug() << "===================================================="; + qCDebug(dcEQ3) << "===================================================="; + qCDebug(dcEQ3) << " METADATA message:"; + qCDebug(dcEQ3) << "===================================================="; // parse room list int roomCount = dataDecoded.toHex().mid(4,2).toInt(0,16); @@ -188,24 +189,24 @@ void MaxCube::decodeMetadataMessage(QByteArray data) m_roomList.append(room); roomRawData = roomRawData.right(roomRawData.length() - ((roomNameLength*2) + 10)); } - // qDebug() << "-------------------------|-------------------------"; - // qDebug() << "found " << m_roomList.count() << "rooms"; - // qDebug() << "-------------------------|-------------------------"; + qCDebug(dcEQ3) << "-------------------------|-------------------------"; + qCDebug(dcEQ3) << "found " << m_roomList.count() << "rooms"; + qCDebug(dcEQ3) << "-------------------------|-------------------------"; - // foreach (Room *room, m_roomList) { - // qDebug() << " Room Name | " << room->roomName(); - // qDebug() << " Room ID | " << room->roomId(); - // qDebug() << " Group RF Address | " << room->groupRfAddress(); - // qDebug() << "-------------------------|-------------------------"; - // } + foreach (Room *room, m_roomList) { + qCDebug(dcEQ3) << " Room Name | " << room->roomName(); + qCDebug(dcEQ3) << " Room ID | " << room->roomId(); + qCDebug(dcEQ3) << " Group RF Address | " << room->groupRfAddress(); + qCDebug(dcEQ3) << "-------------------------|-------------------------"; + } // parse device list int deviceCount = roomRawData.left(2).toInt(0,16); QByteArray deviceRawData = roomRawData.right(roomRawData.length() - 2); - // qDebug() << "-------------------------|-------------------------"; - // qDebug() << "found " << deviceCount << "devices"; - // qDebug() << "-------------------------|-------------------------"; + qCDebug(dcEQ3) << "-------------------------|-------------------------"; + qCDebug(dcEQ3) << "found " << deviceCount << "devices"; + qCDebug(dcEQ3) << "-------------------------|-------------------------"; for(int i = 0; i < deviceCount; i++){ int deviceType = deviceRawData.left(2).toInt(0,16); @@ -228,13 +229,13 @@ void MaxCube::decodeMetadataMessage(QByteArray data) } m_radiatorThermostatList.append(device); - // qDebug() << " Device Name | " << device->deviceName(); - // qDebug() << " Serial Number| " << device->serialNumber(); - // qDebug() << " Device Type String | " << device->deviceTypeString(); - // qDebug() << " RF address (hex) | " << device->rfAddress(); - // qDebug() << " Room ID | " << device->roomId(); - // qDebug() << " Room Name | " << device->roomName(); - // qDebug() << "-------------------------|-------------------------"; + qCDebug(dcEQ3) << " Device Name | " << device->deviceName(); + qCDebug(dcEQ3) << " Serial Number| " << device->serialNumber(); + qCDebug(dcEQ3) << " Device Type String | " << device->deviceTypeString(); + qCDebug(dcEQ3) << " RF address (hex) | " << device->rfAddress(); + qCDebug(dcEQ3) << " Room ID | " << device->roomId(); + qCDebug(dcEQ3) << " Room Name | " << device->roomName(); + qCDebug(dcEQ3) << "-------------------------|-------------------------"; break; } case MaxDevice::DeviceWallThermostat:{ @@ -255,13 +256,13 @@ void MaxCube::decodeMetadataMessage(QByteArray data) } m_wallThermostatList.append(device); - // qDebug() << " Device Name | " << device->deviceName(); - // qDebug() << " Serial Number| " << device->serialNumber(); - // qDebug() << " Device Type String | " << device->deviceTypeString(); - // qDebug() << " RF address (hex) | " << device->rfAddress(); - // qDebug() << " Room ID | " << device->roomId(); - // qDebug() << " Room Name | " << device->roomName(); - // qDebug() << "-------------------------|-------------------------"; + qCDebug(dcEQ3) << " Device Name | " << device->deviceName(); + qCDebug(dcEQ3) << " Serial Number| " << device->serialNumber(); + qCDebug(dcEQ3) << " Device Type String | " << device->deviceTypeString(); + qCDebug(dcEQ3) << " RF address (hex) | " << device->rfAddress(); + qCDebug(dcEQ3) << " Room ID | " << device->roomId(); + qCDebug(dcEQ3) << " Room Name | " << device->roomName(); + qCDebug(dcEQ3) << "-------------------------|-------------------------"; break; } default: @@ -280,32 +281,32 @@ void MaxCube::decodeConfigMessage(QByteArray data) } QByteArray rfAddress = list.at(0); QByteArray dataRaw = QByteArray::fromBase64(list.at(1)).toHex(); - //int lengthData = dataRaw.left(2).toInt(0,16); + int lengthData = dataRaw.left(2).toInt(0,16); if(rfAddress != dataRaw.mid(2,6)){ - qDebug() << "ERROR: rf addresses not equal!"; + qCWarning(dcEQ3) << "RF addresses not equal!"; } int deviceType = dataRaw.mid(8,2).toInt(0,16); //QByteArray unknown = dataRaw.mid(12,6); QByteArray serialNumber = QByteArray::fromHex(dataRaw.mid(16,20)); - // qDebug() << "===================================================="; - // qDebug() << " CONFIG message:"; - // qDebug() << "===================================================="; - // qDebug() << " Serial Number | " << serialNumber; - // qDebug() << " device Type | " << deviceTypeString(deviceType); - // qDebug() << " RF address (hex) | " << rfAddress; - // qDebug() << " data length | " << lengthData; - // qDebug() << "-------------------------|-------------------------"; + qCDebug(dcEQ3) << "===================================================="; + qCDebug(dcEQ3) << " CONFIG message:"; + qCDebug(dcEQ3) << "===================================================="; + qCDebug(dcEQ3) << " Serial Number | " << serialNumber; + qCDebug(dcEQ3) << " device Type | " << deviceTypeString(deviceType); + qCDebug(dcEQ3) << " RF address (hex) | " << rfAddress; + qCDebug(dcEQ3) << " data length | " << lengthData; + qCDebug(dcEQ3) << "-------------------------|-------------------------"; switch (deviceType) { case MaxDevice::DeviceCube:{ m_portalEnabeld = (bool)dataRaw.mid(36,2).toInt(0,16); - // qDebug() << " portal enabled | " << m_portalEnabeld; - // qDebug() << " portal URL | " << QString(QByteArray::fromHex(dataRaw.mid(170,68))); - // qDebug() << " time zone | " << QString(QByteArray::fromHex(dataRaw.mid(428,6))); - // qDebug() << " summer/winter time | " << QString(QByteArray::fromHex(dataRaw.mid(452,8))); + qCDebug(dcEQ3) << " portal enabled | " << m_portalEnabeld; + qCDebug(dcEQ3) << " portal URL | " << QString(QByteArray::fromHex(dataRaw.mid(170,68))); + qCDebug(dcEQ3) << " time zone | " << QString(QByteArray::fromHex(dataRaw.mid(428,6))); + qCDebug(dcEQ3) << " summer/winter time | " << QString(QByteArray::fromHex(dataRaw.mid(452,8))); emit cubeConfigReady(); break; } @@ -314,7 +315,7 @@ void MaxCube::decodeConfigMessage(QByteArray data) if(device->rfAddress() == rfAddress){ //int roomId = dataRaw.mid(10,2).toInt(0,16); - //int firmware = dataRaw.mid(12,2).toInt(0,16); + int firmware = dataRaw.mid(12,2).toInt(0,16); device->setComfortTemp((double)dataRaw.mid(36,2).toInt(0,16) / 2.0); device->setEcoTemp((double)dataRaw.mid(38,2).toInt(0,16) / 2.0); device->setMaxSetPointTemp((double)dataRaw.mid(40,2).toInt(0,16) / 2.0); @@ -335,21 +336,21 @@ void MaxCube::decodeConfigMessage(QByteArray data) device->setValveMaximumSettings((double)dataRaw.mid(54,2).toInt(0,16)*(double)100.0/255.0); device->setValveOffset((double)dataRaw.mid(56,2).toInt(0,16)*100.0/255.0); - // qDebug() << " Room ID | " << device->roomId(); - // qDebug() << " firmware | " << firmware; - // qDebug() << " Confort Temp. | " << device->confortTemp() << "C"; - // qDebug() << " Eco Temp. | " << device->ecoTemp() << "C"; - // qDebug() << " Max. Set Point Temp. | " << device->maxSetPointTemp() << "C"; - // qDebug() << " Min. Set Point Temp. | " << device->minSetPointTemp() << "C"; - // qDebug() << " Temp. Offset | " << device->offsetTemp() << "C"; - // qDebug() << " Window Open Temp. | " << device->windowOpenTemp() << "C"; - // qDebug() << " Window Open Duration | " << device->windowOpenDuration() << "min"; - // qDebug() << " Boost Duration | " << device->boostDuration() << "min"; - // qDebug() << " Valve value | " << device->boostValveValue() << "%"; - // qDebug() << " disclaiming run day | " << device->discalcingWeekDay(); - // qDebug() << " disclaiming run time | " << device->discalcingTime().toString("HH:mm"); - // qDebug() << " Valve Maximum Settings | " << device->valveMaximumSettings() << "%"; - // qDebug() << " Valve Offset | " << device->valveOffset() << "%"; + qCDebug(dcEQ3) << " Room ID | " << device->roomId(); + qCDebug(dcEQ3) << " firmware | " << firmware; + //qCDebug(dcEQ3) << " Confort Temp. | " << device->confortTemp() << "C"; + qCDebug(dcEQ3) << " Eco Temp. | " << device->ecoTemp() << "C"; + qCDebug(dcEQ3) << " Max. Set Point Temp. | " << device->maxSetPointTemp() << "C"; + qCDebug(dcEQ3) << " Min. Set Point Temp. | " << device->minSetPointTemp() << "C"; + qCDebug(dcEQ3) << " Temp. Offset | " << device->offsetTemp() << "C"; + qCDebug(dcEQ3) << " Window Open Temp. | " << device->windowOpenTemp() << "C"; + qCDebug(dcEQ3) << " Window Open Duration | " << device->windowOpenDuration() << "min"; + qCDebug(dcEQ3) << " Boost Duration | " << device->boostDuration() << "min"; + qCDebug(dcEQ3) << " Valve value | " << device->boostValveValue() << "%"; + qCDebug(dcEQ3) << " disclaiming run day | " << device->discalcingWeekDay(); + qCDebug(dcEQ3) << " disclaiming run time | " << device->discalcingTime().toString("HH:mm"); + qCDebug(dcEQ3) << " Valve Maximum Settings | " << device->valveMaximumSettings() << "%"; + qCDebug(dcEQ3) << " Valve Offset | " << device->valveOffset() << "%"; parseWeeklyProgram(dataRaw.right(dataRaw.length() - 58)); emit radiatorThermostatFound(); } @@ -362,18 +363,18 @@ void MaxCube::decodeConfigMessage(QByteArray data) foreach (WallThermostat* device, m_wallThermostatList) { if(device->rfAddress() == rfAddress){ //int roomId = dataRaw.mid(10,2).toInt(0,16); - //int firmware = dataRaw.mid(12,2).toInt(0,16); + int firmware = dataRaw.mid(12,2).toInt(0,16); device->setComfortTemp((double)dataRaw.mid(36,2).toInt(0,16) / 2.0); device->setEcoTemp((double)dataRaw.mid(38,2).toInt(0,16)/2.0); device->setMaxSetPointTemp((double)dataRaw.mid(40,2).toInt(0,16)/2.0); device->setMinSetPointTemp((double)dataRaw.mid(42,2).toInt(0,16)/2.0); - // qDebug() << " Room ID | " << device->roomId(); - // qDebug() << " firmware | " << firmware; - // qDebug() << " Confort Temp. | " << device->confortTemp(); - // qDebug() << " Eco Temp. | " << device->ecoTemp(); - // qDebug() << " Max. Set Point Temp. | " << device->maxSetPointTemp(); - // qDebug() << " Min. Set Point Temp. | " << device->minSetPointTemp(); + qCDebug(dcEQ3) << " Room ID | " << device->roomId(); + qCDebug(dcEQ3) << " firmware | " << firmware; + //qCDebug(dcEQ3) << " Confort Temp. | " << device->confortTemp(); + qCDebug(dcEQ3) << " Eco Temp. | " << device->ecoTemp(); + qCDebug(dcEQ3) << " Max. Set Point Temp. | " << device->maxSetPointTemp(); + qCDebug(dcEQ3) << " Min. Set Point Temp. | " << device->minSetPointTemp(); parseWeeklyProgram(dataRaw.right(dataRaw.length() - 44)); emit wallThermostatFound(); @@ -386,16 +387,16 @@ void MaxCube::decodeConfigMessage(QByteArray data) case MaxDevice::DeviceWindowContact: break; default: - qWarning() << "unknown device type: " << deviceType; + qCWarning(dcEQ3) << "unknown device type: " << deviceType; break; } } void MaxCube::decodeDevicelistMessage(QByteArray data) { - // qDebug() << "===================================================="; - // qDebug() << " LIVE message:"; - // qDebug() << "===================================================="; + qCDebug(dcEQ3) << "===================================================="; + qCDebug(dcEQ3) << " LIVE message:"; + qCDebug(dcEQ3) << "===================================================="; QByteArray rawDataAll = QByteArray::fromBase64(data).toHex(); QList deviceMessageList = splitMessage(rawDataAll); @@ -435,24 +436,24 @@ void MaxCube::decodeDevicelistMessage(QByteArray data) device->setCurrentTemperatre((double)rawData.right(2).toInt(0,16) / 10.0); } -// qDebug() << " raw data | " << rawData; -// qDebug() << " device type | " << device->deviceTypeString(); -// qDebug() << " device name | " << device->deviceName(); -// qDebug() << " RF address (hex) | " << device->rfAddress(); -// qDebug() << " initCode | " << initCode; -// qDebug() << " information valid | " << device->informationValid(); -// qDebug() << " error occured | " << device->errorOccured(); -// qDebug() << " is answere to a command | " << device->isAnswereToCommand(); -// qDebug() << " initialized | " << device->initialized(); -// qDebug() << " battery low | " << device->batteryLow(); -// qDebug() << " link status OK | " << device->linkStatusOK(); -// qDebug() << " panel locked | " << device->panelLocked(); -// qDebug() << " gateway known | " << device->gatewayKnown(); -// qDebug() << " DST settings active | " << device->dtsActive(); -// qDebug() << " device mode | " << device->deviceModeString(); -// qDebug() << " Temperatur Setpoint | " << device->setpointTemperature(); -// qDebug() << " Current Temp | " << device->currentTemperature(); -// qDebug() << "-------------------------|-------------------------"; + qCDebug(dcEQ3) << " raw data | " << rawData; + qCDebug(dcEQ3) << " device type | " << device->deviceTypeString(); + qCDebug(dcEQ3) << " device name | " << device->deviceName(); + qCDebug(dcEQ3) << " RF address (hex) | " << device->rfAddress(); + qCDebug(dcEQ3) << " initCode | " << initCode; + qCDebug(dcEQ3) << " information valid | " << device->informationValid(); + qCDebug(dcEQ3) << " error occured | " << device->errorOccured(); + qCDebug(dcEQ3) << " is answere to a command | " << device->isAnswereToCommand(); + qCDebug(dcEQ3) << " initialized | " << device->initialized(); + qCDebug(dcEQ3) << " battery low | " << device->batteryLow(); + qCDebug(dcEQ3) << " link status OK | " << device->linkStatusOK(); + qCDebug(dcEQ3) << " panel locked | " << device->panelLocked(); + qCDebug(dcEQ3) << " gateway known | " << device->gatewayKnown(); + qCDebug(dcEQ3) << " DST settings active | " << device->dtsActive(); + qCDebug(dcEQ3) << " device mode | " << device->deviceModeString(); + qCDebug(dcEQ3) << " Temperatur Setpoint | " << device->setpointTemperature(); + qCDebug(dcEQ3) << " Current Temp | " << device->currentTemperature(); + qCDebug(dcEQ3) << "-------------------------|-------------------------"; emit wallThermostatDataUpdated(); } @@ -480,22 +481,22 @@ void MaxCube::decodeDevicelistMessage(QByteArray data) device->setValvePosition((double)rawData.mid(12,2).toInt(0,16)); device->setSetpointTemperatre((double)rawData.mid(14,2).toInt(0,16)/ 2.0); -// qDebug() << " device type | " << device->deviceTypeString(); -// qDebug() << " device name | " << device->deviceName(); -// qDebug() << " RF address (hex) | " << device->rfAddress(); -// qDebug() << " information valid | " << device->informationValid(); -// qDebug() << " error occured | " << device->errorOccured(); -// qDebug() << " is answere to a command | " << device->isAnswereToCommand(); -// qDebug() << " initialized | " << device->initialized(); -// qDebug() << " battery low | " << device->batteryLow(); -// qDebug() << " link status OK | " << device->linkStatusOK(); -// qDebug() << " panel locked | " << device->panelLocked(); -// qDebug() << " gateway known | " << device->gatewayKnown(); -// qDebug() << " DST settings active | " << device->dtsActive(); -// qDebug() << " device mode | " << device->deviceModeString(); -// qDebug() << " valve position | " << device->valvePosition() << "%"; -// qDebug() << " Temperatur Setpoint | " << device->setpointTemperature() << " deg C"; -// qDebug() << "-------------------------|-------------------------"; + qCDebug(dcEQ3) << " device type | " << device->deviceTypeString(); + qCDebug(dcEQ3) << " device name | " << device->deviceName(); + qCDebug(dcEQ3) << " RF address (hex) | " << device->rfAddress(); + qCDebug(dcEQ3) << " information valid | " << device->informationValid(); + qCDebug(dcEQ3) << " error occured | " << device->errorOccured(); + qCDebug(dcEQ3) << " is answere to a command | " << device->isAnswereToCommand(); + qCDebug(dcEQ3) << " initialized | " << device->initialized(); + qCDebug(dcEQ3) << " battery low | " << device->batteryLow(); + qCDebug(dcEQ3) << " link status OK | " << device->linkStatusOK(); + qCDebug(dcEQ3) << " panel locked | " << device->panelLocked(); + qCDebug(dcEQ3) << " gateway known | " << device->gatewayKnown(); + qCDebug(dcEQ3) << " DST settings active | " << device->dtsActive(); + qCDebug(dcEQ3) << " device mode | " << device->deviceModeString(); + qCDebug(dcEQ3) << " valve position | " << device->valvePosition() << "%"; + qCDebug(dcEQ3) << " Temperatur Setpoint | " << device->setpointTemperature() << " deg C"; + qCDebug(dcEQ3) << "-------------------------|-------------------------"; emit radiatorThermostatDataUpdated(); } @@ -506,12 +507,12 @@ void MaxCube::decodeDevicelistMessage(QByteArray data) //QByteArray windowOpenRawData = fillBin(QByteArray::number(rawData.mid(10,2).toInt(0,16),2),8); //bool windowOpen = (bool)windowOpenRawData.mid(5,1).toInt(); - // qDebug() << " raw data | " << rawData; - // qDebug() << " device type name | " << "Window Contact"; - // qDebug() << " RF address (hex) | " << rfAddress; - // qDebug() << " window open code | " << windowOpenRawData; - // qDebug() << " window open | " << windowOpen; - // qDebug() << "-------------------------|-------------------------"; + // qCDebug(dcEQ3) << " raw data | " << rawData; + // qCDebug(dcEQ3) << " device type name | " << "Window Contact"; + // qCDebug(dcEQ3) << " RF address (hex) | " << rfAddress; + // qCDebug(dcEQ3) << " window open code | " << windowOpenRawData; + // qCDebug(dcEQ3) << " window open | " << windowOpen; + // qCDebug(dcEQ3) << "-------------------------|-------------------------"; break; } default: @@ -535,19 +536,19 @@ void MaxCube::parseWeeklyProgram(QByteArray data) { for(int i=0; i < 7; i++){ QByteArray dayData = data.left(52); - //qDebug() << weekDayString(i); + //qCDebug(dcEQ3) << weekDayString(i); for(int i = 0; i < 52; i+=4){ QByteArray element = fillBin(QByteArray::number(dayData.mid(i,4).toInt(0,16),2),16); //int minutes = element.right(9).toInt(0,2) * 5; //int hours = (minutes / 60) % 24; //minutes = minutes % 60; //QTime time = QTime(hours,minutes); - //qDebug() << (double)element.left(7).toInt(0,2) / 2 << "\t" << "deg. until" << "\t" << time.toString("HH:mm"); + //qCDebug(dcEQ3) << (double)element.left(7).toInt(0,2) / 2 << "\t" << "deg. until" << "\t" << time.toString("HH:mm"); } data = data.right(data.length() - 52); } if(!data.isEmpty()){ - //qDebug() << " ? | " << data; + //qCDebug(dcEQ3) << " ? | " << data; } } @@ -557,10 +558,10 @@ void MaxCube::decodeNewDeviceFoundMessage(QByteArray data) return; } - // qDebug() << "===================================================="; - // qDebug() << " NEW DEVICE message:"; - // qDebug() << "===================================================="; - // qDebug() << " Serial Number | " << QByteArray::fromBase64(data); + qCDebug(dcEQ3) << "===================================================="; + qCDebug(dcEQ3) << " NEW DEVICE message:"; + qCDebug(dcEQ3) << "===================================================="; + qCDebug(dcEQ3) << " Serial Number | " << QByteArray::fromBase64(data); } @@ -657,7 +658,7 @@ QList MaxCube::splitMessage(QByteArray data) messageList.append(data.mid(2,length)); data = data.right(data.length() - (length+2)); } - //qDebug() << messageList; + //qCDebug(dcEQ3) << messageList; return messageList; } @@ -681,12 +682,12 @@ void MaxCube::connectionStateChanged(const QAbstractSocket::SocketState &socketS { switch (socketState) { case QAbstractSocket::ConnectedState: - qDebug() << "-> connected to cube " << m_serialNumber << m_hostAddress.toString(); + qCDebug(dcEQ3) << "connected to cube " << m_serialNumber << m_hostAddress.toString(); emit cubeConnectionStatusChanged(true); break; case QAbstractSocket::UnconnectedState: m_cubeInitialized = false; - qDebug() << "-> disconnected from cube " << m_serialNumber << m_hostAddress.toString(); + qCDebug(dcEQ3) << "disconnected from cube " << m_serialNumber << m_hostAddress.toString(); emit cubeConnectionStatusChanged(false); break; default: @@ -696,7 +697,7 @@ void MaxCube::connectionStateChanged(const QAbstractSocket::SocketState &socketS void MaxCube::error(QAbstractSocket::SocketError error) { - qDebug() << "connection error (" << m_serialNumber << "): " << error; + qCWarning(dcEQ3) << "connection error (" << m_serialNumber << "): " << error; emit cubeConnectionStatusChanged(false); } @@ -712,7 +713,7 @@ void MaxCube::readData() void MaxCube::processCubeData(const QByteArray &data) { - //qDebug() << "data" << data; + //qCDebug(dcEQ3) << "data" << data; if(data.startsWith("H")){ decodeHelloMessage(data.right(data.length() -2 )); return; @@ -752,22 +753,22 @@ void MaxCube::processCubeData(const QByteArray &data) } // ACK message if(data.startsWith("A")){ - qDebug() << "cube ACK!"; + qCDebug(dcEQ3) << "cube ACK!"; emit cubeACK(); return; } - qDebug() << " -> unknown message!!!!!!! from cube:" << data; + qCWarning(dcEQ3) << " -> unknown message!!!!!!! from cube:" << data; } void MaxCube::enablePairingMode() { - qDebug() << "-------> enable pairing mode! press the boost button for min. 3 seconds"; + qCDebug(dcEQ3) << "-------> enable pairing mode! press the boost button for min. 3 seconds"; write("n:003c\r\n"); } void MaxCube::disablePairingMode() { - qDebug() << " ----> disable pairing mode!"; + qCDebug(dcEQ3) << " ----> disable pairing mode!"; write("x:\r\n"); } @@ -781,7 +782,7 @@ void MaxCube::refresh() void MaxCube::customRequest(QByteArray data) { - qDebug() << " ----> custom request" << data; + qCDebug(dcEQ3) << " ----> custom request" << data; write(data + "\r\n"); } @@ -816,7 +817,7 @@ void MaxCube::setDeviceSetpointTemp(QByteArray rfAddress, int roomId, double tem // add date/time until (000000 = forever) data.append("000000"); - qDebug() << "sending command " << temperatureData << data; + qCDebug(dcEQ3) << "sending command " << temperatureData << data; write("s:" + QByteArray::fromHex(data).toBase64() + "\r\n"); } @@ -840,7 +841,7 @@ void MaxCube::setDeviceAutoMode(QByteArray rfAddress, int roomId, ActionId actio temperatureData.append("00000000"); data.append("000000"); - qDebug() << "sending command " << temperatureData << data; + qCDebug(dcEQ3) << "sending command " << temperatureData << data; write("s:" + QByteArray::fromHex(data).toBase64() + "\r\n"); } diff --git a/plugins/deviceplugins/intertechno/devicepluginintertechno.cpp b/plugins/deviceplugins/intertechno/devicepluginintertechno.cpp index 7e1b9af4..73a33326 100644 --- a/plugins/deviceplugins/intertechno/devicepluginintertechno.cpp +++ b/plugins/deviceplugins/intertechno/devicepluginintertechno.cpp @@ -49,6 +49,7 @@ #include "plugin/device.h" #include "devicemanager.h" #include "plugininfo.h" +#include "loggingcategorys.h" #include #include @@ -180,10 +181,10 @@ DeviceManager::DeviceError DevicePluginIntertechno::executeAction(Device *device // ======================================= // send data to hardware resource if (transmitData(delay, rawData)) { - qDebug() << "transmitted" << pluginName() << device->name() << "power: " << action.param("power").value().toBool(); + qCDebug(dcRF433) << "transmitted" << pluginName() << device->name() << "power: " << action.param("power").value().toBool(); return DeviceManager::DeviceErrorNoError; } else { - qWarning() << "ERROR: could not transmitt" << pluginName() << device->name() << "power: " << action.param("power").value().toBool(); + qCWarning(dcRF433) << "could not transmitt" << pluginName() << device->name() << "power: " << action.param("power").value().toBool(); return DeviceManager::DeviceErrorHardwareNotAvailable; } } @@ -383,6 +384,6 @@ void DevicePluginIntertechno::radioData(const QList &rawData) return; } - qDebug() << "INTERTECHNO: family code = " << familyCode << "button code =" << buttonCode << power; + qCDebug(dcRF433) << "Intertechno: family code = " << familyCode << "button code =" << buttonCode << power; } diff --git a/plugins/deviceplugins/leynew/devicepluginleynew.cpp b/plugins/deviceplugins/leynew/devicepluginleynew.cpp index 36818a52..1e43be00 100644 --- a/plugins/deviceplugins/leynew/devicepluginleynew.cpp +++ b/plugins/deviceplugins/leynew/devicepluginleynew.cpp @@ -53,6 +53,7 @@ #include "devicepluginleynew.h" #include "devicemanager.h" #include "plugininfo.h" +#include "loggingcategorys.h" #include #include @@ -174,10 +175,10 @@ DeviceManager::DeviceError DevicePluginLeynew::executeAction(Device *device, con // ======================================= // send data to hardware resource if(transmitData(delay, rawData, repetitions)){ - qDebug() << "transmitted" << pluginName() << device->name() << action.id(); + qCDebug(dcRF433) << "transmitted" << pluginName() << device->name() << action.id(); return DeviceManager::DeviceErrorNoError; }else{ - qDebug() << "could not transmitt" << pluginName() << device->name() << action.id(); + qCWarning(dcRF433) << "could not transmitt" << pluginName() << device->name() << action.id(); return DeviceManager::DeviceErrorHardwareNotAvailable; } } diff --git a/plugins/deviceplugins/lgsmarttv/devicepluginlgsmarttv.cpp b/plugins/deviceplugins/lgsmarttv/devicepluginlgsmarttv.cpp index f2cb8259..185affbe 100644 --- a/plugins/deviceplugins/lgsmarttv/devicepluginlgsmarttv.cpp +++ b/plugins/deviceplugins/lgsmarttv/devicepluginlgsmarttv.cpp @@ -49,6 +49,7 @@ #include "plugin/device.h" #include "devicemanager.h" #include "plugininfo.h" +#include "loggingcategorys.h" #include @@ -218,7 +219,7 @@ void DevicePluginLgSmartTv::deviceRemoved(Device *device) } TvDevice *tvDevice= m_tvList.key(device); - qDebug() << "remove LG SmartTv " << tvDevice->modelName(); + qCDebug(dcLgSmartTv) << "remove LG SmartTv " << tvDevice->modelName(); tvDevice->endPairing(); m_tvList.remove(tvDevice); delete tvDevice; diff --git a/plugins/deviceplugins/lgsmarttv/tvdevice.cpp b/plugins/deviceplugins/lgsmarttv/tvdevice.cpp index 8092838f..0a2f6189 100644 --- a/plugins/deviceplugins/lgsmarttv/tvdevice.cpp +++ b/plugins/deviceplugins/lgsmarttv/tvdevice.cpp @@ -19,6 +19,7 @@ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #include "tvdevice.h" +#include "loggingcategorys.h" TvDevice::TvDevice(QObject *parent, UpnpDeviceDescriptor upnpDeviceDescriptor) : UpnpDevice(parent, upnpDeviceDescriptor) @@ -171,7 +172,7 @@ void TvDevice::sendCommand(TvDevice::RemoteKey key, ActionId actionId) void TvDevice::setupEventHandler() { - //qDebug() << "set up event handler " << m_hostAddress.toString() << m_port; + qCDebug(dcLgSmartTv) << "set up event handler " << hostAddress().toString() << port(); m_eventHandler = new TvEventHandler(this, hostAddress(), port()); connect(m_eventHandler, &TvEventHandler::eventOccured, this, &TvDevice::eventOccured); } @@ -214,7 +215,7 @@ void TvDevice::queryChannelInformation() void TvDevice::parseVolumeInformation(const QByteArray &data) { - //qDebug() << printXmlData(data); + qCDebug(dcLgSmartTv) << printXmlData(data); QXmlStreamReader xml(data); while(!xml.atEnd() && !xml.hasError()) { @@ -232,7 +233,7 @@ void TvDevice::parseVolumeInformation(const QByteArray &data) void TvDevice::parseChannelInformation(const QByteArray &data) { - //qDebug() << printXmlData(data); + qCDebug(dcLgSmartTv) << printXmlData(data); QXmlStreamReader xml(data); while(!xml.atEnd() && !xml.hasError()) { @@ -274,8 +275,7 @@ QString TvDevice::printXmlData(QByteArray data) } } if(reader.hasError()) { - qDebug() << "ERROR reading XML device information: " << reader.errorString(); - qDebug() << "--------------------------------------------"; + qCWarning(dcLgSmartTv) << "error reading XML device information: " << reader.errorString(); } return xmlOut; } @@ -292,7 +292,7 @@ void TvDevice::replyFinished(QNetworkReply *reply) if(reply == m_showKeyReplay) { if(status != 200) { - //qWarning() << "ERROR: could not request to show pairing key on screen " << status; + qCWarning(dcLgSmartTv) << "ERROR: could not request to show pairing key on screen " << status; } m_showKeyReplay->deleteLater(); } @@ -300,10 +300,10 @@ void TvDevice::replyFinished(QNetworkReply *reply) if(status != 200) { m_pairingStatus = false; emit pairingFinished(false); - //qWarning() << "ERROR: could not pair with device" << status; + qCWarning(dcLgSmartTv) << "could not pair with device" << status; } else { m_pairingStatus = true; - //qDebug() << "successfully paired with tv " << modelName(); + qCDebug(dcLgSmartTv) << "successfully paired with tv " << modelName(); emit pairingFinished(true); } m_requestPairingReplay->deleteLater(); @@ -312,7 +312,7 @@ void TvDevice::replyFinished(QNetworkReply *reply) if(reply == m_finishingPairingReplay) { if(status == 200) { m_pairingStatus = false; - //qDebug() << "successfully unpaired from tv " << modelName(); + qCDebug(dcLgSmartTv) << "successfully unpaired from tv " << modelName(); } m_finishingPairingReplay->deleteLater(); } @@ -320,10 +320,10 @@ void TvDevice::replyFinished(QNetworkReply *reply) if(reply == m_sendCommandReplay) { if (status != 200) { emit sendCommandFinished(false,m_actionId); - qWarning() << "ERROR: could not send comand" << status; + qCWarning(dcLgSmartTv) << "ERROR: could not send comand" << status; } else { m_pairingStatus = true; - //qDebug() << "successfully sent command to tv " << modelName(); + qCDebug(dcLgSmartTv) << "successfully sent command to tv " << modelName(); emit sendCommandFinished(true,m_actionId); refresh(); } @@ -352,7 +352,7 @@ void TvDevice::eventOccured(const QByteArray &data) // if the tv suspends, it will send a byebye message, which means // the pairing will be closed. if(data.contains("api type=\"pairing\"") && data.contains("byebye")) { - qDebug() << "--> tv ended pairing"; + qCDebug(dcLgSmartTv) << "--> tv ended pairing"; m_pairingStatus = false; m_reachable = false; emit statusChanged(); diff --git a/plugins/deviceplugins/lgsmarttv/tveventhandler.cpp b/plugins/deviceplugins/lgsmarttv/tveventhandler.cpp index 56024983..881c458b 100644 --- a/plugins/deviceplugins/lgsmarttv/tveventhandler.cpp +++ b/plugins/deviceplugins/lgsmarttv/tveventhandler.cpp @@ -19,6 +19,7 @@ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #include "tveventhandler.h" +#include "loggingcategorys.h" TvEventHandler::TvEventHandler(QObject *parent, QHostAddress host, int port) : QTcpServer(parent),m_host(host),m_port(port) @@ -41,7 +42,7 @@ void TvEventHandler::incomingConnection(qintptr socket) connect(tcpSocket, &QTcpSocket::disconnected, this, &TvEventHandler::discardClient); tcpSocket->setSocketDescriptor(socket); - //qDebug() << "incomming connection" << s->peerAddress().toString() << s->peerName(); + qCDebug(dcLgSmartTv) << "incomming connection" << tcpSocket->peerAddress().toString() << tcpSocket->peerName(); } void TvEventHandler::readClient() @@ -86,9 +87,8 @@ void TvEventHandler::readClient() // check if we got header if (data.startsWith("POST") && !m_expectingData) { m_expectingData = true; -// QStringList tokens = QString(data).split(QRegExp("[ \r\n][ \r\n]*")); -// qDebug() << "=================================="; -// qDebug() << "event occured" << "http://" << m_host.toString() << ":" << m_port << tokens[1]; + QStringList tokens = QString(data).split(QRegExp("[ \r\n][ \r\n]*")); + qCDebug(dcLgSmartTv) << "event occured" << "http://" << m_host.toString() << ":" << m_port << tokens[1]; } } } diff --git a/plugins/deviceplugins/lircd/devicepluginlircd.cpp b/plugins/deviceplugins/lircd/devicepluginlircd.cpp index 16767ed8..07a35c51 100644 --- a/plugins/deviceplugins/lircd/devicepluginlircd.cpp +++ b/plugins/deviceplugins/lircd/devicepluginlircd.cpp @@ -50,6 +50,7 @@ #include "plugin/device.h" #include "devicemanager.h" +#include "loggingcategorys.h" #include "lircdclient.h" @@ -83,11 +84,11 @@ void DevicePluginLircd::buttonPressed(const QString &remoteName, const QString & } } if (!remote) { - qDebug() << "Unhandled remote" << remoteName << buttonName; + qCWarning(dcLircd) << "Unhandled remote" << remoteName << buttonName; return; } - qDebug() << "found remote" << remoteName << supportedDevices().first().eventTypes().count(); + qCDebug(dcLircd) << "found remote" << remoteName << supportedDevices().first().eventTypes().count(); ParamList params; Param buttonParam("button", buttonName); params.append(buttonParam); diff --git a/plugins/deviceplugins/lircd/lircdclient.cpp b/plugins/deviceplugins/lircd/lircdclient.cpp index 8c8226b5..3c5546ad 100644 --- a/plugins/deviceplugins/lircd/lircdclient.cpp +++ b/plugins/deviceplugins/lircd/lircdclient.cpp @@ -19,6 +19,7 @@ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #include "lircdclient.h" +#include "loggingcategorys.h" #include #include @@ -34,22 +35,22 @@ bool LircClient::connect() { m_socket->connectToServer("/var/run/lirc/lircd", QIODevice::ReadWrite); if (!m_socket->isOpen()) { - qWarning() << "--> Lirc daemon NOT available."; + qCWarning(dcLircd) << "--> Lirc daemon NOT available."; return false; } m_socket->write("LIST\n"); - qDebug() << "--> Lirc daemon available."; + qCDebug(dcLircd) << "--> Lirc daemon available."; return true; } void LircClient::readyRead() { -// qDebug() << "got data" << m_socket->readAll(); + qCDebug(dcLircd) << "got data" << m_socket->readAll(); bool inBlock = false; while (m_socket->canReadLine()) { QByteArray line = m_socket->readLine().trimmed(); - //qDebug() << "got line:" << line; + qCDebug(dcLircd) << "got line:" << line; if (line == "BEGIN") { inBlock = true; continue; @@ -58,7 +59,7 @@ void LircClient::readyRead() if (m_socket->readLine().trimmed() == "SUCCESS") { readRemotes(); } else { - qWarning() << "Error reading remotes from Lircd"; + qCWarning(dcLircd) << "Error reading remotes from Lircd"; } continue; } @@ -70,10 +71,10 @@ void LircClient::readyRead() if (!inBlock) { QList parts = line.split(' '); if (parts.count() != 4) { - qWarning() << "Don't understand IR command. ignoring..."; + qCWarning(dcLircd) << "Don't understand IR command. ignoring..."; continue; } - qDebug() << "emitting buttonpress"; + qCDebug(dcLircd) << "emitting buttonpress"; emit buttonPressed(QString(parts.at(3)), QString(parts.at(2)), parts.at(1).toInt()); } } @@ -83,7 +84,7 @@ void LircClient::readRemotes() { m_socket->readLine(); // IGNORE DATA int remoteCount = m_socket->readLine().trimmed().toInt(); - qDebug() << "found" << remoteCount << "lirc remotes"; + qCDebug(dcLircd) << "found" << remoteCount << "lirc remotes"; for (int i = 0; i < remoteCount; i++) { QByteArray line = m_socket->readLine().trimmed(); m_remotes.append(line); diff --git a/plugins/deviceplugins/mailnotification/devicepluginmailnotification.cpp b/plugins/deviceplugins/mailnotification/devicepluginmailnotification.cpp index 8b48f25c..94865d15 100644 --- a/plugins/deviceplugins/mailnotification/devicepluginmailnotification.cpp +++ b/plugins/deviceplugins/mailnotification/devicepluginmailnotification.cpp @@ -67,6 +67,7 @@ #include "plugin/device.h" #include "devicemanager.h" #include "plugininfo.h" +#include "loggingcategorys.h" #include #include diff --git a/plugins/deviceplugins/mailnotification/smtpclient.cpp b/plugins/deviceplugins/mailnotification/smtpclient.cpp index 8b79a32a..9582e803 100644 --- a/plugins/deviceplugins/mailnotification/smtpclient.cpp +++ b/plugins/deviceplugins/mailnotification/smtpclient.cpp @@ -19,6 +19,7 @@ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #include "smtpclient.h" +#include "loggingcategorys.h" SmtpClient::SmtpClient(QObject *parent): QObject(parent) @@ -293,7 +294,7 @@ void SmtpClient::setRecipient(const QString &rcpt) void SmtpClient::socketError(QAbstractSocket::SocketError error) { - qWarning() << "ERROR: mail socket -> " << error << m_socket->errorString(); + qCWarning(dcMailNotification) << "ERROR: mail socket -> " << error << m_socket->errorString(); } void SmtpClient::send(const QString &data) diff --git a/plugins/deviceplugins/mock/devicepluginmock.cpp b/plugins/deviceplugins/mock/devicepluginmock.cpp index 655eccca..16cd6d9f 100644 --- a/plugins/deviceplugins/mock/devicepluginmock.cpp +++ b/plugins/deviceplugins/mock/devicepluginmock.cpp @@ -25,6 +25,7 @@ #include "plugin/device.h" #include "devicemanager.h" #include "plugininfo.h" +#include "loggingcategorys.h" #include #include @@ -46,7 +47,7 @@ DeviceManager::HardwareResources DevicePluginMock::requiredHardware() const DeviceManager::DeviceError DevicePluginMock::discoverDevices(const DeviceClassId &deviceClassId, const ParamList ¶ms) { Q_UNUSED(deviceClassId) - qDebug() << "starting mock discovery:" << params; + qCDebug(dcMock) << "starting mock discovery:" << params; m_discoveredDeviceCount = params.paramValue("resultCount").toInt(); QTimer::singleShot(1000, this, SLOT(emitDevicesDiscovered())); return DeviceManager::DeviceErrorAsync; @@ -54,14 +55,14 @@ DeviceManager::DeviceError DevicePluginMock::discoverDevices(const DeviceClassId DeviceManager::DeviceSetupStatus DevicePluginMock::setupDevice(Device *device) { - qDebug() << "Mockdevice created returning true" + qCDebug(dcMock) << "Mockdevice created returning true" << device->paramValue("name").toString() << device->paramValue("httpport").toInt() << device->paramValue("async").toBool() << device->paramValue("broken").toBool(); if (device->paramValue("broken").toBool()) { - qWarning() << "This device is intentionally broken."; + qCWarning(dcMock) << "This device is intentionally broken."; return DeviceManager::DeviceSetupStatusFailure; } @@ -69,7 +70,7 @@ DeviceManager::DeviceSetupStatus DevicePluginMock::setupDevice(Device *device) m_daemons.insert(device, daemon); if (!daemon->isListening()) { - qWarning() << "HTTP port opening failed."; + qCWarning(dcMock) << "HTTP port opening failed."; return DeviceManager::DeviceSetupStatusFailure; } @@ -167,7 +168,7 @@ void DevicePluginMock::triggerEvent(const EventTypeId &id) Event event(id, device->id()); - qDebug() << "Emitting event " << event.eventTypeId(); + qCDebug(dcMock) << "Emitting event " << event.eventTypeId(); emit emitEvent(event); } @@ -202,7 +203,7 @@ void DevicePluginMock::emitDevicesDiscovered() void DevicePluginMock::emitDeviceSetupFinished() { - qDebug() << "emitting setup finised"; + qCDebug(dcMock) << "emitting setup finised"; Device *device = m_asyncSetupDevices.takeFirst(); if (device->paramValue("broken").toBool()) { emit deviceSetupFinished(device, DeviceManager::DeviceSetupStatusFailure); diff --git a/plugins/deviceplugins/mock/httpdaemon.cpp b/plugins/deviceplugins/mock/httpdaemon.cpp index 96618bca..8837332b 100644 --- a/plugins/deviceplugins/mock/httpdaemon.cpp +++ b/plugins/deviceplugins/mock/httpdaemon.cpp @@ -25,6 +25,7 @@ #include "plugin/deviceclass.h" #include "plugin/deviceplugin.h" #include "types/statetype.h" +#include "loggingcategorys.h" #include #include @@ -113,7 +114,7 @@ void HttpDaemon::discardClient() QTcpSocket* socket = (QTcpSocket*)sender(); socket->deleteLater(); - qDebug() << "Connection closed"; + qCDebug(dcMock) << "Connection closed"; } QString HttpDaemon::generateHeader() diff --git a/plugins/deviceplugins/openweathermap/devicepluginopenweathermap.cpp b/plugins/deviceplugins/openweathermap/devicepluginopenweathermap.cpp index 83f652bf..d5ad29e2 100644 --- a/plugins/deviceplugins/openweathermap/devicepluginopenweathermap.cpp +++ b/plugins/deviceplugins/openweathermap/devicepluginopenweathermap.cpp @@ -56,6 +56,7 @@ #include "plugin/device.h" #include "devicemanager.h" #include "plugininfo.h" +#include "loggingcategorys.h" #include #include @@ -95,13 +96,6 @@ DeviceManager::DeviceSetupStatus DevicePluginOpenweathermap::setupDevice(Device return DeviceManager::DeviceSetupStatusFailure; } - // foreach (Device *d, myDevices()) { - // if(d->paramValue("id").toString() == device->paramValue("id").toString()){ - // qWarning() << QString("ERROR: Location " + d->paramValue("location").toString() + " with id " + d->paramValue("id").toString() + ") " + " already added: "); - // return DeviceManager::DeviceSetupStatusFailure; - // } - // } - device->setName("Weather from OpenWeatherMap (" + device->paramValue("location").toString() + ")"); update(device); @@ -242,15 +236,15 @@ void DevicePluginOpenweathermap::processAutodetectResponse(QByteArray data) if (dataMap.contains("lon") && dataMap.contains("lat")) { m_longitude = dataMap.value("lon").toDouble(); m_latitude = dataMap.value("lat").toDouble(); - qDebug() << "----------------------------------------"; - qDebug() << "Autodetection of location: "; - qDebug() << "----------------------------------------"; - qDebug() << " name:" << m_cityName; - qDebug() << " country:" << m_country; - qDebug() << " WAN IP:" << m_wanIp.toString(); - qDebug() << " latitude:" << m_latitude; - qDebug() << " longitude:" << m_longitude; - qDebug() << "----------------------------------------"; + qCDebug(dcOpenweathermap) << "----------------------------------------"; + qCDebug(dcOpenweathermap) << "Autodetection of location: "; + qCDebug(dcOpenweathermap) << "----------------------------------------"; + qCDebug(dcOpenweathermap) << " name:" << m_cityName; + qCDebug(dcOpenweathermap) << " country:" << m_country; + qCDebug(dcOpenweathermap) << " WAN IP:" << m_wanIp.toString(); + qCDebug(dcOpenweathermap) << " latitude:" << m_latitude; + qCDebug(dcOpenweathermap) << " longitude:" << m_longitude; + qCDebug(dcOpenweathermap) << "----------------------------------------"; searchGeoLocation(m_latitude, m_longitude); } } @@ -261,7 +255,7 @@ void DevicePluginOpenweathermap::processSearchResponse(QByteArray data) QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &error); if(error.error != QJsonParseError::NoError) { - qWarning() << "failed to parse data" << data << ":" << error.errorString(); + qCWarning(dcOpenweathermap) << "failed to parse data" << data << ":" << error.errorString(); } QVariantMap dataMap = jsonDoc.toVariant().toMap(); @@ -286,7 +280,7 @@ void DevicePluginOpenweathermap::processGeoSearchResponse(QByteArray data) QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &error); if(error.error != QJsonParseError::NoError) { - qWarning() << "failed to parse data" << data << ":" << error.errorString(); + qCWarning(dcOpenweathermap) << "failed to parse data" << data << ":" << error.errorString(); } QVariantMap dataMap = jsonDoc.toVariant().toMap(); @@ -333,7 +327,7 @@ void DevicePluginOpenweathermap::processWeatherData(const QByteArray &data, Devi QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &error); if (error.error != QJsonParseError::NoError) { - qWarning() << "failed to parse weather data for device " << device->name() << ": " << data << ":" << error.errorString(); + qCWarning(dcOpenweathermap) << "failed to parse weather data for device " << device->name() << ": " << data << ":" << error.errorString(); return; } diff --git a/plugins/deviceplugins/philipshue/devicepluginphilipshue.cpp b/plugins/deviceplugins/philipshue/devicepluginphilipshue.cpp index 4aeb08e9..fdec96f7 100644 --- a/plugins/deviceplugins/philipshue/devicepluginphilipshue.cpp +++ b/plugins/deviceplugins/philipshue/devicepluginphilipshue.cpp @@ -51,6 +51,7 @@ #include "plugin/device.h" #include "types/param.h" #include "plugininfo.h" +#include "loggingcategorys.h" #include #include @@ -246,7 +247,7 @@ void DevicePluginPhilipsHue::networkManagerReplyReady(QNetworkReply *reply) // check HTTP status code if (status != 200) { - qWarning() << "Request error:" << status << reply->errorString(); + qCWarning(dcPhilipsHue) << "Request error:" << status << reply->errorString(); reply->deleteLater(); return; } @@ -257,7 +258,7 @@ void DevicePluginPhilipsHue::networkManagerReplyReady(QNetworkReply *reply) // check HTTP status code if (status != 200) { - qWarning() << "Request error:" << status << reply->errorString(); + qCWarning(dcPhilipsHue) << "Request error:" << status << reply->errorString(); reply->deleteLater(); return; } @@ -269,7 +270,7 @@ void DevicePluginPhilipsHue::networkManagerReplyReady(QNetworkReply *reply) // check HTTP status code if (status != 200) { - qWarning() << "Refresh Hue Light request error:" << status << reply->errorString(); + qCWarning(dcPhilipsHue) << "Refresh Hue Light request error:" << status << reply->errorString(); onBridgeError(device); reply->deleteLater(); return; @@ -282,7 +283,7 @@ void DevicePluginPhilipsHue::networkManagerReplyReady(QNetworkReply *reply) // check HTTP status code if (status != 200) { - qWarning() << "Refresh Hue Bridge request error:" << status << reply->errorString(); + qCWarning(dcPhilipsHue) << "Refresh Hue Bridge request error:" << status << reply->errorString(); onBridgeError(device); reply->deleteLater(); return; @@ -295,7 +296,7 @@ void DevicePluginPhilipsHue::networkManagerReplyReady(QNetworkReply *reply) // check HTTP status code if (status != 200) { - qWarning() << "Refresh Hue Light request error:" << status << reply->errorString(); + qCWarning(dcPhilipsHue) << "Refresh Hue Light request error:" << status << reply->errorString(); onBridgeError(actionInfo.first); emit actionExecutionFinished(actionInfo.second, DeviceManager::DeviceErrorHardwareNotAvailable); reply->deleteLater(); @@ -310,7 +311,7 @@ void DevicePluginPhilipsHue::networkManagerReplyReady(QNetworkReply *reply) // check HTTP status code if (status != 200) { - qWarning() << "Set name of Hue Light request error:" << status << reply->errorString(); + qCWarning(dcPhilipsHue) << "Set name of Hue Light request error:" << status << reply->errorString(); reply->deleteLater(); return; } @@ -432,13 +433,13 @@ void DevicePluginPhilipsHue::processLightRefreshResponse(Device *device, const Q // check JSON error if (error.error != QJsonParseError::NoError) { - qWarning() << "Hue Bridge json error in response" << error.errorString(); + qCWarning(dcPhilipsHue) << "Hue Bridge json error in response" << error.errorString(); return; } // check response error if (data.contains("error")) { - qWarning() << "Failed to refresh Hue Light:" << jsonDoc.toVariant().toList().first().toMap().value("error").toMap().value("description").toString(); + qCWarning(dcPhilipsHue) << "Failed to refresh Hue Light:" << jsonDoc.toVariant().toList().first().toMap().value("error").toMap().value("description").toString(); return; } @@ -453,13 +454,13 @@ void DevicePluginPhilipsHue::processBridgeRefreshResponse(Device *device, const // check JSON error if (error.error != QJsonParseError::NoError) { - qWarning() << "Hue Bridge json error in response" << error.errorString(); + qCWarning(dcPhilipsHue) << "Hue Bridge json error in response" << error.errorString(); return; } // check response error if (data.contains("error")) { - qWarning() << "Failed to refresh Hue Bridge:" << jsonDoc.toVariant().toList().first().toMap().value("error").toMap().value("description").toString(); + qCWarning(dcPhilipsHue) << "Failed to refresh Hue Bridge:" << jsonDoc.toVariant().toList().first().toMap().value("error").toMap().value("description").toString(); return; } @@ -485,14 +486,14 @@ void DevicePluginPhilipsHue::processSetNameResponse(Device *device, const QByteA // check JSON error if (error.error != QJsonParseError::NoError) { - qWarning() << "Hue Bridge json error in response" << error.errorString(); + qCWarning(dcPhilipsHue) << "Hue Bridge json error in response" << error.errorString(); emit deviceSetupFinished(device, DeviceManager::DeviceSetupStatusFailure); return; } // check response error if (data.contains("error")) { - qWarning() << "Failed to set name of Hue:" << jsonDoc.toVariant().toList().first().toMap().value("error").toMap().value("description").toString(); + qCWarning(dcPhilipsHue) << "Failed to set name of Hue:" << jsonDoc.toVariant().toList().first().toMap().value("error").toMap().value("description").toString(); emit deviceSetupFinished(device, DeviceManager::DeviceSetupStatusFailure); return; } @@ -511,14 +512,14 @@ void DevicePluginPhilipsHue::processPairingResponse(const DevicePluginPhilipsHue // check JSON error if (error.error != QJsonParseError::NoError) { - qWarning() << "Hue Bridge json error in response" << error.errorString(); + qCWarning(dcPhilipsHue) << "Hue Bridge json error in response" << error.errorString(); emit pairingFinished(pairingInfo.pairingTransactionId, DeviceManager::DeviceSetupStatusFailure); return; } // check response error if (data.contains("error")) { - qWarning() << "Failed to pair Hue Bridge:" << jsonDoc.toVariant().toList().first().toMap().value("error").toMap().value("description").toString(); + qCWarning(dcPhilipsHue) << "Failed to pair Hue Bridge:" << jsonDoc.toVariant().toList().first().toMap().value("error").toMap().value("description").toString(); emit pairingFinished(pairingInfo.pairingTransactionId, DeviceManager::DeviceSetupStatusFailure); return; } @@ -538,7 +539,7 @@ void DevicePluginPhilipsHue::processInformationResponse(const DevicePluginPhilip // check JSON error if (error.error != QJsonParseError::NoError) { - qWarning() << "Hue Bridge json error in response" << error.errorString(); + qCWarning(dcPhilipsHue) << "Hue Bridge json error in response" << error.errorString(); emit pairingFinished(pairingInfo.pairingTransactionId, DeviceManager::DeviceSetupStatusFailure); return; } @@ -547,7 +548,7 @@ void DevicePluginPhilipsHue::processInformationResponse(const DevicePluginPhilip // check response error if (response.contains("error")) { - qWarning() << "Failed to get information from Hue Bridge:" << response.value("error").toMap().value("description").toString(); + qCWarning(dcPhilipsHue) << "Failed to get information from Hue Bridge:" << response.value("error").toMap().value("description").toString(); emit pairingFinished(pairingInfo.pairingTransactionId, DeviceManager::DeviceSetupStatusFailure); return; } @@ -592,14 +593,14 @@ void DevicePluginPhilipsHue::processActionResponse(Device *device, const ActionI // check JSON error if (error.error != QJsonParseError::NoError) { - qWarning() << "Hue Bridge json error in response" << error.errorString(); + qCWarning(dcPhilipsHue) << "Hue Bridge json error in response" << error.errorString(); emit actionExecutionFinished(actionId, DeviceManager::DeviceErrorHardwareNotAvailable); return; } // check response error if (data.contains("error")) { - qWarning() << "Failed to execute Hue action:" << jsonDoc.toVariant().toList().first().toMap().value("error").toMap().value("description").toString(); + qCWarning(dcPhilipsHue) << "Failed to execute Hue action:" << jsonDoc.toVariant().toList().first().toMap().value("error").toMap().value("description").toString(); emit actionExecutionFinished(actionId, DeviceManager::DeviceErrorHardwareNotAvailable); return; } diff --git a/plugins/deviceplugins/tune/deviceplugintune.cpp b/plugins/deviceplugins/tune/deviceplugintune.cpp index 8f982d92..d056c72a 100644 --- a/plugins/deviceplugins/tune/deviceplugintune.cpp +++ b/plugins/deviceplugins/tune/deviceplugintune.cpp @@ -25,6 +25,7 @@ #include "deviceplugintune.h" #include "devicemanager.h" #include "plugininfo.h" +#include "loggingcategorys.h" DevicePluginTune::DevicePluginTune() { @@ -151,7 +152,7 @@ void DevicePluginTune::tuneConnectionStatusChanged(const bool &connected) void DevicePluginTune::updateMood(const QVariantMap &message) { QVariantMap mood = message.value("mood").toMap(); - //qDebug () << QJsonDocument::fromVariant(message).toJson(); + qCDebug(dcTune) << QJsonDocument::fromVariant(message).toJson(); Device *device = deviceManager()->findConfiguredDevice(DeviceId(mood.value("deviceId").toString())); if (device) { QVariantMap states = mood.value("states").toMap(); diff --git a/plugins/deviceplugins/tune/jsonrpcserver.cpp b/plugins/deviceplugins/tune/jsonrpcserver.cpp index 79fcf9df..07afb1d8 100644 --- a/plugins/deviceplugins/tune/jsonrpcserver.cpp +++ b/plugins/deviceplugins/tune/jsonrpcserver.cpp @@ -19,6 +19,7 @@ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #include "jsonrpcserver.h" +#include "loggingcategorys.h" extern PluginId pluginId; extern DeviceClassId moodDeviceClassId; @@ -103,7 +104,7 @@ bool JsonRpcServer::sync(QList deviceList) m_requests.insert(m_id, message); QJsonDocument jsonDoc = QJsonDocument::fromVariant(message); - qDebug() << jsonDoc.toJson(); + qCDebug(dcTune) << jsonDoc.toJson(); m_manager->sendData(jsonDoc.toJson(QJsonDocument::Compact)); return true; } @@ -143,7 +144,7 @@ void JsonRpcServer::executeAction(Device *device, const Action &action) m_requests.insert(m_id, message); QJsonDocument jsonDoc = QJsonDocument::fromVariant(message); - qDebug() << jsonDoc.toJson(); + qCDebug(dcTune) << jsonDoc.toJson(); m_manager->sendData(jsonDoc.toJson(QJsonDocument::Compact)); } @@ -172,7 +173,7 @@ void JsonRpcServer::handleResponse(const QVariantMap &response) int responseId = response.value("id").toInt(); if (!m_requests.contains(responseId)) { - qWarning() << "ERROR: got a response without a corresponding request!!!!"; + qCWarning(dcTune) << "got a response without a corresponding request!!!!"; return; } @@ -181,7 +182,7 @@ void JsonRpcServer::handleResponse(const QVariantMap &response) // Note: maby we have to do something if any request fails if (!response.value("success").toBool()) { - qWarning() << "ERROR: for request:" << request << response.value("error").toString(); + qCWarning(dcTune) << "error for request:" << request << response.value("error").toString(); } // check if this is a response to an action execution @@ -196,7 +197,7 @@ void JsonRpcServer::processData(const QByteArray &data) QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &error); if(error.error != QJsonParseError::NoError) { - qDebug() << "failed to parse data" << data << ":" << error.errorString(); + qCWarning(dcTune) << "failed to parse data" << data << ":" << error.errorString(); return; } @@ -204,7 +205,7 @@ void JsonRpcServer::processData(const QByteArray &data) // check if the message has an id if (!message.contains("id")) { - qWarning() << "ERROR: message does not contain a valid id" << message; + qCWarning(dcTune) << "message does not contain a valid id" << message; return; } @@ -216,7 +217,7 @@ void JsonRpcServer::processData(const QByteArray &data) // otherwise we need a method if (!message.contains("method")) { - qWarning() << "ERROR: message does not contain a valid method" << message; + qCWarning(dcTune) << "message does not contain a valid method" << message; return; } diff --git a/plugins/deviceplugins/tune/tunemanager.cpp b/plugins/deviceplugins/tune/tunemanager.cpp index 32997ccd..1049ebc9 100644 --- a/plugins/deviceplugins/tune/tunemanager.cpp +++ b/plugins/deviceplugins/tune/tunemanager.cpp @@ -19,6 +19,7 @@ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #include "tunemanager.h" +#include "loggingcategorys.h" TuneManager::TuneManager(int port, QObject *parent) : QObject(parent), @@ -48,7 +49,7 @@ void TuneManager::tuneConnected() QTcpSocket *socket = m_server->nextPendingConnection(); if (m_tune) { - qWarning() << "--> ATTENTION: tune already connected! connection refused."; + qCWarning(dcTune) << "tune already connected! connection refused."; socket->disconnect(); delete socket; return; @@ -59,14 +60,14 @@ void TuneManager::tuneConnected() connect(m_tune, &QTcpSocket::readyRead, this, &TuneManager::readData); connect(m_tune, &QTcpSocket::disconnected, this, &TuneManager::tuneDisconnected); - qDebug() << " --> tune connected:" << m_tune->peerAddress().toString() << m_port; + qCDebug(dcTune) << "Tune connected:" << m_tune->peerAddress().toString() << m_port; m_connected = true; emit tuneConnectionStatusChanged(true); } void TuneManager::tuneDisconnected() { - qWarning() << " --> tune disconnected:" << m_tune->peerAddress().toString(); + qCWarning(dcTune) << "Tune disconnected:" << m_tune->peerAddress().toString(); m_connected = false; emit tuneConnectionStatusChanged(false); delete m_tune; @@ -96,18 +97,18 @@ bool TuneManager::start() QHostAddress localhost = QHostAddress(QHostAddress::LocalHost); if(!m_server->listen(localhost, m_port)) { - qWarning() << "ERROR: Tune server can not listen on" << localhost << m_port; + qCWarning(dcTune) << "Tune server can not listen on" << localhost << m_port; delete m_server; return false; } - qDebug() << "--> Tune server started" << localhost << m_port; + qCDebug(dcTune) << "Tune server started" << localhost << m_port; connect(m_server, &QTcpServer::newConnection, this, &TuneManager::tuneConnected); return true; } void TuneManager::stop() { - qDebug() << "--> close Tune server" << m_server->serverAddress().toString(); + qCDebug(dcTune) << "close Tune server" << m_server->serverAddress().toString(); m_server->close(); delete m_server; m_server = 0; diff --git a/plugins/deviceplugins/udpcommander/devicepluginudpcommander.cpp b/plugins/deviceplugins/udpcommander/devicepluginudpcommander.cpp index 551227a7..d91332b6 100644 --- a/plugins/deviceplugins/udpcommander/devicepluginudpcommander.cpp +++ b/plugins/deviceplugins/udpcommander/devicepluginudpcommander.cpp @@ -65,6 +65,7 @@ #include "devicepluginudpcommander.h" #include "plugin/device.h" #include "plugininfo.h" +#include "loggingcategorys.h" DevicePluginUdpCommander::DevicePluginUdpCommander() { @@ -82,14 +83,14 @@ DeviceManager::DeviceSetupStatus DevicePluginUdpCommander::setupDevice(Device *d bool portOk = false; int port = device->paramValue("port").toInt(&portOk); if (!portOk || port <= 0 || port > 65535) { - qWarning() << "ERROR: UDP commander" << device->paramValue("name") << ": invalid port:" << device->paramValue("port").toString() << "."; + qCWarning(dcUdpCommander) << device->paramValue("name") << ": invalid port:" << device->paramValue("port").toString() << "."; return DeviceManager::DeviceSetupStatusFailure; } QUdpSocket *udpSocket = new QUdpSocket(this); if (!udpSocket->bind(QHostAddress::Any, port)) { - qWarning() << "ERROR: UDP commander" << device->paramValue("name") << "can't bind to port" << port << "."; + qCWarning(dcUdpCommander) << device->paramValue("name") << "can't bind to port" << port << "."; delete udpSocket; return DeviceManager::DeviceSetupStatusFailure; } @@ -125,7 +126,7 @@ void DevicePluginUdpCommander::readPendingDatagrams() if (datagram == device->paramValue("command").toByteArray() || datagram == device->paramValue("command").toByteArray() + "\n") { - qDebug() << device->paramValue("name").toString() << " got command from" << sender.toString() << senderPort; + qCDebug(dcUdpCommander) << device->paramValue("name").toString() << " got command from" << sender.toString() << senderPort; emit emitEvent(Event(commandReceivedEventTypeId, device->id())); socket->writeDatagram("OK\n", sender, senderPort); } diff --git a/plugins/deviceplugins/unitec/devicepluginunitec.cpp b/plugins/deviceplugins/unitec/devicepluginunitec.cpp index c2db340f..44e61a42 100644 --- a/plugins/deviceplugins/unitec/devicepluginunitec.cpp +++ b/plugins/deviceplugins/unitec/devicepluginunitec.cpp @@ -47,6 +47,7 @@ #include "devicepluginunitec.h" #include "devicemanager.h" #include "plugininfo.h" +#include "loggingcategorys.h" #include #include @@ -60,6 +61,23 @@ DeviceManager::HardwareResources DevicePluginUnitec::requiredHardware() const return DeviceManager::HardwareResourceRadio433; } +DeviceManager::DeviceSetupStatus DevicePluginUnitec::setupDevice(Device *device) +{ + if (device->deviceClassId() != switchDeviceClassId) { + return DeviceManager::DeviceSetupStatusFailure; + } + + foreach (Device* d, myDevices()) { + if (d->paramValue("Channel").toString() == device->paramValue("Channel").toString()) { + qCWarning(dcRF433) << "Unitec switch with channel " << device->paramValue("Channel").toString() << "already added."; + return DeviceManager::DeviceSetupStatusFailure; + } + } + + device->setName("Unitec switch 48111 (" + device->paramValue("Channel").toString() + ")"); + return DeviceManager::DeviceSetupStatusSuccess; +} + DeviceManager::DeviceError DevicePluginUnitec::executeAction(Device *device, const Action &action) { QList rawData; @@ -111,10 +129,10 @@ DeviceManager::DeviceError DevicePluginUnitec::executeAction(Device *device, con // ======================================= // send data to hardware resource if(transmitData(delay, rawData)){ - qDebug() << "transmitted" << pluginName() << device->name() << "power: " << action.param("power").value().toBool(); + qCDebug(dcRF433) << "transmitted" << pluginName() << device->name() << "power: " << action.param("power").value().toBool(); return DeviceManager::DeviceErrorNoError; }else{ - qDebug() << "could not transmitt" << pluginName() << device->name() << "power: " << action.param("power").value().toBool(); + qCWarning(dcRF433) << "could not transmitt" << pluginName() << device->name() << "power: " << action.param("power").value().toBool(); return DeviceManager::DeviceErrorHardwareNotAvailable; } } diff --git a/plugins/deviceplugins/wakeonlan/devicepluginwakeonlan.cpp b/plugins/deviceplugins/wakeonlan/devicepluginwakeonlan.cpp index 571da6f2..6c16595d 100644 --- a/plugins/deviceplugins/wakeonlan/devicepluginwakeonlan.cpp +++ b/plugins/deviceplugins/wakeonlan/devicepluginwakeonlan.cpp @@ -53,6 +53,7 @@ #include "plugin/device.h" #include "devicemanager.h" #include "plugininfo.h" +#include "loggingcategorys.h" #include #include @@ -62,32 +63,6 @@ DevicePluginWakeOnLan::DevicePluginWakeOnLan() { } -//QList DevicePluginWakeOnLan::supportedDevices() const -//{ -// QList ret; - -// DeviceClass deviceClassWakeOnLan(pluginId(), supportedVendors().first().id(), wolDeviceClassId); -// deviceClassWakeOnLan.setName("Wake On Lan"); - -// QList wolParams; -// ParamType nameParam("name", QVariant::String); -// wolParams.append(nameParam); -// ParamType wolParam("mac", QVariant::String); -// wolParams.append(wolParam); - - -// QList wolActions; -// ActionType wolAction(wolActionTypeId); -// wolAction.setName("wakeup"); -// wolActions.append(wolAction); - -// deviceClassWakeOnLan.setParamTypes(wolParams); -// deviceClassWakeOnLan.setActions(wolActions); - -// ret.append(deviceClassWakeOnLan); -// return ret; -//} - DeviceManager::HardwareResources DevicePluginWakeOnLan::requiredHardware() const { return DeviceManager::HardwareResourceNone; @@ -95,8 +70,8 @@ DeviceManager::HardwareResources DevicePluginWakeOnLan::requiredHardware() const DeviceManager::DeviceError DevicePluginWakeOnLan::executeAction(Device *device, const Action &action) { - qDebug() << "execute action " << action.actionTypeId().toString(); if(action.actionTypeId() == wolActionTypeId){ + qCDebug(dcWakeOnLan) << "wake up" << device->name(); wakeup(device->paramValue("mac").toString()); } return DeviceManager::DeviceErrorNoError; @@ -109,9 +84,8 @@ void DevicePluginWakeOnLan::wakeup(QString mac) for(int i = 0; i < 16; ++i) { packet.append(QByteArray::fromHex(mac.remove(':').toLocal8Bit())); } - qDebug() << "created magic packet:" << packet.toHex(); + qCDebug(dcWakeOnLan) << "created magic packet:" << packet.toHex(); QUdpSocket udpSocket; udpSocket.writeDatagram(packet.data(), packet.size(), QHostAddress::Broadcast, 9); - } diff --git a/plugins/deviceplugins/wemo/devicepluginwemo.cpp b/plugins/deviceplugins/wemo/devicepluginwemo.cpp index c954984b..17f6c276 100644 --- a/plugins/deviceplugins/wemo/devicepluginwemo.cpp +++ b/plugins/deviceplugins/wemo/devicepluginwemo.cpp @@ -53,6 +53,7 @@ #include "plugin/device.h" #include "devicemanager.h" #include "plugininfo.h" +#include "loggingcategorys.h" #include #include @@ -150,7 +151,7 @@ void DevicePluginWemo::networkManagerReplyReady(QNetworkReply *reply) if (reply->error()) { // give only error if we don't already know that is unreachable if (device->stateValue(reachableStateTypeId).toBool()) { - qWarning() << "ERROR: WeMo reply error: " << reply->errorString(); + qCWarning(dcWemo) << "WeMo reply error: " << reply->errorString(); } device->setStateValue(reachableStateTypeId, false); } else { @@ -163,7 +164,7 @@ void DevicePluginWemo::networkManagerReplyReady(QNetworkReply *reply) if (reply->error()) { // give only error if we don't already know that is unreachable if (device->stateValue(reachableStateTypeId).toBool()) { - qWarning() << "ERROR: WeMo reply error: " << reply->errorString(); + qCWarning(dcWemo) << "WeMo reply error: " << reply->errorString(); } device->setStateValue(reachableStateTypeId, false); } else { diff --git a/plugins/deviceplugins/wifidetector/devicepluginwifidetector.cpp b/plugins/deviceplugins/wifidetector/devicepluginwifidetector.cpp index 730b3080..4fbfaa8c 100644 --- a/plugins/deviceplugins/wifidetector/devicepluginwifidetector.cpp +++ b/plugins/deviceplugins/wifidetector/devicepluginwifidetector.cpp @@ -52,6 +52,7 @@ #include "plugin/device.h" #include "devicemanager.h" #include "plugininfo.h" +#include "loggingcategorys.h" #include #include @@ -78,8 +79,7 @@ void DevicePluginWifiDetector::processFinished(int exitCode, QProcess::ExitStatu p->deleteLater(); if (exitCode != 0 || exitStatus != QProcess::NormalExit) { - qWarning() << "error performing network scan:"; - qWarning() << p->readAllStandardError(); + qCWarning(dcWifiDetector) << "error performing network scan:" << p->readAllStandardError(); return; } diff --git a/server/main.cpp b/server/main.cpp index 0d61f171..e91f7a9d 100644 --- a/server/main.cpp +++ b/server/main.cpp @@ -52,6 +52,7 @@ int main(int argc, char *argv[]) application.setApplicationName("guhd"); application.setApplicationVersion(GUH_VERSION_STRING); + // filter for core and libguh s_loggingFilters.insert("Application", true); s_loggingFilters.insert("Warnings", true); s_loggingFilters.insert("DeviceManager", true); @@ -61,28 +62,51 @@ int main(int argc, char *argv[]) s_loggingFilters.insert("Hardware", false); s_loggingFilters.insert("LogEngine", false); + // plugins + #ifdef boblight + s_loggingFilters.insert("Boblight", false); + #endif + s_loggingFilters.insert("CommandLauncher", false); + s_loggingFilters.insert("RF433", false); + s_loggingFilters.insert("EQ-3", false); + s_loggingFilters.insert("LgSmartTv", false); + s_loggingFilters.insert("Lircd", false); + s_loggingFilters.insert("MailNotification", false); + s_loggingFilters.insert("Mock", false); + s_loggingFilters.insert("Openweahtermap", false); + s_loggingFilters.insert("PhilipsHue", false); + s_loggingFilters.insert("Tune", false); + s_loggingFilters.insert("UdpCommander", false); + s_loggingFilters.insert("WakeOnLan", false); + s_loggingFilters.insert("Wemo", false); + s_loggingFilters.insert("WifiDetector", false); + + QCommandLineParser parser; parser.addHelpOption(); parser.addVersionOption(); QString applicationDescription = QString("\nguh ( /[guːh]/ ) is an open source home automation server, which allows to\n" - "control a lot of different devices from many different manufacturers.\n" + "control a lot of different devices from many different manufacturers.\n\n" "guhd %1 (C) 2014-2015 guh\n" "Released under the GNU GENERAL PUBLIC LICENSE Version 2.").arg(GUH_VERSION_STRING); parser.setApplicationDescription(applicationDescription); - QString debugDescription = QString("Debug categories to enable. Prefix with \"No\" to disable. Warnings from all categories will be printed unless explicitly muted with \"NoWarnings\". \nCategories are:"); - foreach (const QString &filterName, s_loggingFilters.keys()) { - debugDescription += "\n" + filterName + " (" + (s_loggingFilters.value(filterName) ? "yes" : "no") + ")"; + QCommandLineOption foregroundOption(QStringList() << "n" << "no-daemon", QCoreApplication::translate("main", "Run guhd in the foreground, not as daemon.")); + parser.addOption(foregroundOption); + + QString debugDescription = QString("Debug categories to enable. Prefix with \"No\" to disable. Warnings from all categories will be printed unless explicitly muted with \"NoWarnings\". \n\nCategories are:"); + QStringList sortedFilterList = QStringList(s_loggingFilters.keys()); + sortedFilterList.sort(); + foreach (const QString &filterName, sortedFilterList) { + debugDescription += "\n- " + filterName + " (" + (s_loggingFilters.value(filterName) ? "yes" : "no") + ")"; } QCommandLineOption debugOption(QStringList() << "d" << "debug", debugDescription, "[No]DebugCategory"); parser.addOption(debugOption); - QCommandLineOption foregroundOption(QStringList() << "n" << "no-daemon", QCoreApplication::translate("main", "Run guhd in the foreground, not as daemon.")); - parser.addOption(foregroundOption); - parser.process(application); + // check debug area foreach (QString debugArea, parser.values(debugOption)) { bool enable = !debugArea.startsWith("No"); debugArea.remove(QRegExp("^No"));