diff --git a/unipi/integrationpluginunipi.cpp b/unipi/integrationpluginunipi.cpp index da48307..074ab71 100644 --- a/unipi/integrationpluginunipi.cpp +++ b/unipi/integrationpluginunipi.cpp @@ -73,6 +73,7 @@ void IntegrationPluginUniPi::discoverThings(ThingDiscoveryInfo *info) ThingClassId ThingClassId = info->thingClassId(); if (ThingClassId == digitalInputThingClassId) { + qCDebug(dcUniPi()) << "Discovering digital inputs"; foreach(Thing *parent, myThings()) { if (((parent->thingClassId() == uniPi1ThingClassId) || (parent->thingClassId() == uniPi1LiteThingClassId)) && m_unipi) { foreach (QString circuit, m_unipi->digitalInputs()) { @@ -130,6 +131,7 @@ void IntegrationPluginUniPi::discoverThings(ThingDiscoveryInfo *info) } return info->finish(Thing::ThingErrorNoError); } else if (ThingClassId == digitalOutputThingClassId) { + qCDebug(dcUniPi()) << "Discovering digital outputs"; foreach(Thing *parent, myThings()) { if (((parent->thingClassId() == uniPi1ThingClassId) || (parent->thingClassId() == uniPi1LiteThingClassId)) && m_unipi) { foreach (QString circuit, m_unipi->digitalOutputs()) { @@ -187,6 +189,7 @@ void IntegrationPluginUniPi::discoverThings(ThingDiscoveryInfo *info) } return info->finish(Thing::ThingErrorNoError); } else if (ThingClassId == analogInputThingClassId) { + qCDebug(dcUniPi()) << "Discovering analog inputs"; foreach(Thing *parent, myThings()) { if (((parent->thingClassId() == uniPi1ThingClassId) || (parent->thingClassId() == uniPi1LiteThingClassId)) && m_unipi) { foreach (QString circuit, m_unipi->analogInputs()) { @@ -244,6 +247,7 @@ void IntegrationPluginUniPi::discoverThings(ThingDiscoveryInfo *info) } return info->finish(Thing::ThingErrorNoError); } else if (ThingClassId == analogOutputThingClassId) { + qCDebug(dcUniPi()) << "Discovering analog outputs"; foreach(Thing *parent, myThings()) { if (((parent->thingClassId() == uniPi1ThingClassId) || (parent->thingClassId() == uniPi1LiteThingClassId)) && m_unipi) { foreach (QString circuit, m_unipi->analogOutputs()) { @@ -301,6 +305,7 @@ void IntegrationPluginUniPi::discoverThings(ThingDiscoveryInfo *info) } return info->finish(Thing::ThingErrorNoError); } else if (ThingClassId == userLEDThingClassId) { + qCDebug(dcUniPi()) << "Discovering user LEDs"; QList ThingDescriptors; foreach (NeuronExtension *neuronExtension, m_neuronExtensions) { ThingId parentId = m_neuronExtensions.key(neuronExtension); @@ -351,8 +356,12 @@ void IntegrationPluginUniPi::setupThing(ThingSetupInfo *info) if(thing->thingClassId() == uniPi1ThingClassId || thing->thingClassId() == uniPi1LiteThingClassId) { - if (m_unipi) + qCDebug(dcUniPi()) << "Setting up UniPi 1 thing" << thing->name(); + + if (m_unipi) { + qCWarning(dcUniPi()) << "UniPi 1 already setted up, only one thing allowed"; return info->finish(Thing::ThingErrorSetupFailed, QT_TR_NOOP("There is already a UniPi gateway in the system.")); //only one parent Thing allowed + } if(thing->thingClassId() == uniPi1ThingClassId) { m_unipi = new UniPi(hardwareManager()->i2cManager(), UniPi::UniPiType::UniPi1, this); @@ -371,8 +380,8 @@ void IntegrationPluginUniPi::setupThing(ThingSetupInfo *info) connect(m_unipi, &UniPi::analogInputStatusChanged, this, &IntegrationPluginUniPi::onUniPiAnalogInputStatusChanged); connect(m_unipi, &UniPi::analogOutputStatusChanged, this, &IntegrationPluginUniPi::onUniPiAnalogOutputStatusChanged); thing->setStateValue(m_connectionStateTypeIds.value(thing->thingClassId()), true); - return info->finish(Thing::ThingErrorNoError); + } else if(thing->thingClassId() == neuronS103ThingClassId || thing->thingClassId() == neuronM103ThingClassId || thing->thingClassId() == neuronM203ThingClassId || @@ -383,9 +392,12 @@ void IntegrationPluginUniPi::setupThing(ThingSetupInfo *info) thing->thingClassId() == neuronL403ThingClassId || thing->thingClassId() == neuronL503ThingClassId || thing->thingClassId() == neuronL513ThingClassId) { + qCDebug(dcUniPi()) << "Setting up Neuron thing" << thing->name(); - if (!neuronDeviceInit()) + if (!neuronDeviceInit()) { + qCWarning(dcUniPi()) << "Error initializing neuron thing"; return info->finish(Thing::ThingErrorSetupFailed, QT_TR_NOOP("Error setting up Neuron.")); + } Neuron *neuron; if (thing->thingClassId() == neuronS103ThingClassId) { @@ -411,6 +423,7 @@ void IntegrationPluginUniPi::setupThing(ThingSetupInfo *info) } else if (thing->thingClassId() == neuronL513ThingClassId) { neuron = new Neuron(Neuron::NeuronTypes::L513, m_modbusTCPMaster, this); } else { + qCWarning(dcUniPi()) << "Neuron type not supported"; return info->finish(Thing::ThingErrorSetupFailed, QT_TR_NOOP("Error unrecognized Neuron type.")); } @@ -431,8 +444,8 @@ void IntegrationPluginUniPi::setupThing(ThingSetupInfo *info) connect(neuron, &Neuron::userLEDStatusChanged, this, &IntegrationPluginUniPi::onNeuronUserLEDStatusChanged); thing->setStateValue(m_connectionStateTypeIds.value(thing->thingClassId()), (m_modbusTCPMaster->state() == QModbusDevice::ConnectedState)); - return info->finish(Thing::ThingErrorNoError); + } else if(thing->thingClassId() == neuronXS10ThingClassId || thing->thingClassId() == neuronXS20ThingClassId || thing->thingClassId() == neuronXS30ThingClassId || @@ -440,9 +453,11 @@ void IntegrationPluginUniPi::setupThing(ThingSetupInfo *info) thing->thingClassId() == neuronXS50ThingClassId || thing->thingClassId() == neuronXS11ThingClassId || thing->thingClassId() == neuronXS51ThingClassId) { + qCDebug(dcUniPi()) << "Setting up Neuron extension thing" << thing->name(); - if (!neuronExtensionInterfaceInit()) + if (!neuronExtensionInterfaceInit()) { return info->finish(Thing::ThingErrorSetupFailed, QT_TR_NOOP("Error setting up Neuron.")); + } int slaveAddress; NeuronExtension *neuronExtension; @@ -508,9 +523,10 @@ void IntegrationPluginUniPi::setupThing(ThingSetupInfo *info) void IntegrationPluginUniPi::postSetupThing(Thing *thing) { - Q_UNUSED(thing) + qCDebug(dcUniPi()) << "Post setup" << thing->name(); if (!m_reconnectTimer) { + qCDebug(dcUniPi()) << "Creating reconnect timer"; m_reconnectTimer = new QTimer(this); m_reconnectTimer->setSingleShot(true); connect(m_reconnectTimer, &QTimer::timeout, this, &IntegrationPluginUniPi::onReconnectTimer); @@ -556,7 +572,7 @@ void IntegrationPluginUniPi::executeAction(ThingActionInfo *info) } return; } else { - qCWarning(dcUniPi()) << "Hardware not initilized" << thing->name(); + qCWarning(dcUniPi()) << "Hardware not initialized" << thing->name(); return info->finish(Thing::ThingErrorHardwareFailure); } } else { @@ -596,7 +612,7 @@ void IntegrationPluginUniPi::executeAction(ThingActionInfo *info) } return; } else { - qCWarning(dcUniPi()) << "Hardware not initilized" << thing->name(); + qCWarning(dcUniPi()) << "Hardware not initialized" << thing->name(); return info->finish(Thing::ThingErrorHardwareFailure); } } else { @@ -644,6 +660,7 @@ void IntegrationPluginUniPi::executeAction(ThingActionInfo *info) void IntegrationPluginUniPi::thingRemoved(Thing *thing) { + qCDebug(dcUniPi()) << "Deleting thing" << thing->name(); if(m_neurons.contains(thing->id())) { Neuron *neuron = m_neurons.take(thing->id()); neuron->deleteLater(); @@ -658,6 +675,7 @@ void IntegrationPluginUniPi::thingRemoved(Thing *thing) } if (myThings().isEmpty()) { + qCDebug(dcUniPi()) << "Stopping timers"; if (m_reconnectTimer) { m_reconnectTimer->stop(); m_reconnectTimer->deleteLater(); @@ -723,6 +741,7 @@ void IntegrationPluginUniPi::onNeuronConnectionStateChanged(bool state) qCWarning(dcUniPi()) << "Could not find any Thing associated to Neuron obejct"; return; } + qCDebug(dcUniPi()) << "Neuron connection state changed" << thing->name() << state; thing->setStateValue(m_connectionStateTypeIds.value(thing->thingClassId()), state); } @@ -868,11 +887,14 @@ void IntegrationPluginUniPi::onNeuronExtensionConnectionStateChanged(bool state) qCWarning(dcUniPi()) << "Could not find any Thing associated to NeuronExtension obejct"; return; } + qCDebug(dcUniPi()) << "Neuron extension connection state changed" << thing->name() << state; thing->setStateValue(m_connectionStateTypeIds.value(thing->thingClassId()), state); } void IntegrationPluginUniPi::onRequestExecuted(const QUuid &requestId, bool success) { + qCDebug(dcUniPi()) << "Request executed, pending requests:" << m_asyncActions.size(); + if (m_asyncActions.contains(requestId)){ ThingActionInfo *info = m_asyncActions.take(requestId); if (success){ @@ -885,6 +907,7 @@ void IntegrationPluginUniPi::onRequestExecuted(const QUuid &requestId, bool succ void IntegrationPluginUniPi::onRequestError(const QUuid &requestId, const QString &error) { + qCDebug(dcUniPi()) << "Request error:" << error; if (m_asyncActions.contains(requestId)){ ThingActionInfo *info = m_asyncActions.take(requestId); info->finish(Thing::ThingErrorHardwareNotAvailable, error); @@ -910,16 +933,20 @@ void IntegrationPluginUniPi::onReconnectTimer() { if(m_modbusRTUMaster) { if (!m_modbusRTUMaster->connectDevice()) { - qCWarning(dcUniPi()) << "Reconnecing to modbus RTU master failed, trying again in 10 seconds"; - if (m_reconnectTimer) + qCWarning(dcUniPi()) << "Reconnecing to modbus RTU master failed"; + if (m_reconnectTimer) { + qCDebug(dcUniPi()) << " - Starting reconnect timer"; m_reconnectTimer->start(10000); + } } } if(m_modbusTCPMaster) { if (!m_modbusTCPMaster->connectDevice()) { qCWarning(dcUniPi()) << "Reconnecing to modbus TCP master failed, trying again in 10 seconds"; - if (m_reconnectTimer) + if (m_reconnectTimer) { + qCDebug(dcUniPi()) << " - Starting reconnect timer"; m_reconnectTimer->start(10000); + } } } } @@ -927,25 +954,29 @@ void IntegrationPluginUniPi::onReconnectTimer() void IntegrationPluginUniPi::onModbusTCPStateChanged(QModbusDevice::State state) { bool connected = (state == QModbusDevice::State::ConnectedState); + qCDebug(dcUniPi()) << "Modbus TCP status changed:" << state; if (!connected) { //try to reconnect in 10 seconds - if (m_reconnectTimer) + if (m_reconnectTimer) { + qCDebug(dcUniPi()) << " - Starting reconnect timer"; m_reconnectTimer->start(10000); + } } - qCDebug(dcUniPi()) << "Connection status changed:" << connected; } void IntegrationPluginUniPi::onModbusRTUStateChanged(QModbusDevice::State state) { bool connected = (state == QModbusDevice::State::ConnectedState); + qCDebug(dcUniPi()) << "Modbus RTU status changed:" << state; if (!connected) { //try to reconnect in 10 seconds - if (m_reconnectTimer) + if (m_reconnectTimer) { + qCDebug(dcUniPi()) << " - Starting reconnect timer"; m_reconnectTimer->start(10000); + } } - qCDebug(dcUniPi()) << "Connection status changed:" << connected; } void IntegrationPluginUniPi::onUniPiDigitalInputStatusChanged(const QString &circuit, bool value) @@ -993,6 +1024,7 @@ void IntegrationPluginUniPi::onUniPiAnalogOutputStatusChanged(double value) bool IntegrationPluginUniPi::neuronDeviceInit() { + qCDebug(dcUniPi()) << "Neuron device init, creating Modbus TCP Master"; if(!m_modbusTCPMaster) { int port = configValue(uniPiPluginPortParamTypeId).toInt();; QHostAddress ipAddress = QHostAddress(configValue(uniPiPluginAddressParamTypeId).toString()); @@ -1011,12 +1043,15 @@ bool IntegrationPluginUniPi::neuronDeviceInit() m_modbusTCPMaster = nullptr; return false; } + } else { + qCDebug(dcUniPi()) << "Neuron Modbus TCP Master is already created"; } return true; } bool IntegrationPluginUniPi::neuronExtensionInterfaceInit() { + qCDebug(dcUniPi()) << "Neuron extension interface init, creating Modbus RTU Master"; if(!m_modbusRTUMaster) { QString serialPort = configValue(uniPiPluginSerialPortParamTypeId).toString(); int baudrate = configValue(uniPiPluginBaudrateParamTypeId).toInt(); @@ -1043,6 +1078,8 @@ bool IntegrationPluginUniPi::neuronExtensionInterfaceInit() m_modbusRTUMaster = nullptr; return false; } + } else { + qCDebug(dcUniPi()) << "Neuron Extension Modbus RTU Master is already created"; } return true; } diff --git a/unipi/neuron.cpp b/unipi/neuron.cpp index cca214d..f6160f7 100644 --- a/unipi/neuron.cpp +++ b/unipi/neuron.cpp @@ -166,6 +166,8 @@ QList Neuron::userLEDs() bool Neuron::loadModbusMap() { + qCDebug(dcUniPi()) << "Neuron Extension: load modbus map"; + QStringList fileCoilList; QStringList fileRegisterList; @@ -236,7 +238,7 @@ bool Neuron::loadModbusMap() foreach(QString relativeFilePath, fileCoilList) { QString absoluteFilePath = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation).last() + "/nymea/modbus" + relativeFilePath; - qDebug(dcUniPi()) << "Open CSV File:" << absoluteFilePath; + qDebug(dcUniPi()) << "Neuron: Open CSV File:" << absoluteFilePath; QFile *csvFile = new QFile(absoluteFilePath); if (!csvFile->open(QIODevice::ReadOnly | QIODevice::Text)) { qCWarning(dcUniPi()) << csvFile->errorString() << "Path:" << absoluteFilePath; @@ -248,7 +250,7 @@ bool Neuron::loadModbusMap() QString line = textStream->readLine(); QStringList list = line.split(','); if (list.length() <= 4) { - qCWarning(dcUniPi()) << "currupted CSV file:" << csvFile->fileName(); + qCWarning(dcUniPi()) << "Neuron: Currupted CSV file:" << csvFile->fileName(); csvFile->deleteLater(); return false; } @@ -256,16 +258,16 @@ bool Neuron::loadModbusMap() QString circuit = list[3].split(" ").last(); if (list[3].contains("Digital Input", Qt::CaseSensitivity::CaseInsensitive)) { m_modbusDigitalInputRegisters.insert(circuit, list[0].toInt()); - qDebug(dcUniPi()) << "Found input register" << circuit << list[0].toInt(); + qDebug(dcUniPi()) << "Neuron: Found input register" << circuit << list[0].toInt(); } else if (list[3].contains("Digital Output", Qt::CaseSensitivity::CaseInsensitive)) { m_modbusDigitalOutputRegisters.insert(circuit, list[0].toInt()); - qDebug(dcUniPi()) << "Found output register" << circuit << list[0].toInt(); + qDebug(dcUniPi()) << "Neuron: Found output register" << circuit << list[0].toInt(); } else if (list[3].contains("Relay Output", Qt::CaseSensitivity::CaseInsensitive)) { m_modbusDigitalOutputRegisters.insert(circuit, list[0].toInt()); - qDebug(dcUniPi()) << "Found relay register" << circuit << list[0].toInt(); + qDebug(dcUniPi()) << "Neuron: Found relay register" << circuit << list[0].toInt(); } else if (list[3].contains("User Programmable LED", Qt::CaseSensitivity::CaseInsensitive)) { m_modbusUserLEDRegisters.insert(circuit, list[0].toInt()); - qDebug(dcUniPi()) << "Found user programmable led" << circuit << list[0].toInt(); + qDebug(dcUniPi()) << "Neuron: Found user programmable led" << circuit << list[0].toInt(); } } } @@ -339,10 +341,10 @@ bool Neuron::loadModbusMap() } foreach (QString relativeFilePath, fileRegisterList) { QString absoluteFilePath = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation).last() + "/nymea/modbus" + relativeFilePath; - qDebug(dcUniPi()) << "Open CSV File:" << absoluteFilePath; + qDebug(dcUniPi()) << "Neuron: Open CSV File:" << absoluteFilePath; QFile *csvFile = new QFile(absoluteFilePath); if (!csvFile->open(QIODevice::ReadOnly | QIODevice::Text)) { - qCWarning(dcUniPi()) << csvFile->errorString() << "Path:" << absoluteFilePath; + qCWarning(dcUniPi()) << "Neuron:" << csvFile->errorString() << "Path:" << absoluteFilePath; csvFile->deleteLater(); return false; } @@ -351,7 +353,7 @@ bool Neuron::loadModbusMap() QString line = textStream->readLine(); QStringList list = line.split(','); if (list.length() <= 5) { - qCWarning(dcUniPi()) << "currupted CSV file:" << csvFile->fileName(); + qCWarning(dcUniPi()) << "Neuron: Currupted CSV file:" << csvFile->fileName(); csvFile->deleteLater(); return false; } @@ -359,10 +361,10 @@ bool Neuron::loadModbusMap() QString circuit = list[5].split(" ").last(); if (list[5].contains("Analog Input Value", Qt::CaseSensitivity::CaseInsensitive)) { m_modbusAnalogInputRegisters.insert(circuit, list[0].toInt()); - qDebug(dcUniPi()) << "Found analog input register" << circuit << list[0].toInt(); + qDebug(dcUniPi()) << "Neuron: Found analog input register" << circuit << list[0].toInt(); } else if (list[5].contains("Analog Output Value", Qt::CaseSensitivity::CaseInsensitive)) { m_modbusAnalogOutputRegisters.insert(circuit, list[0].toInt()); - qDebug(dcUniPi()) << "Found analog output register" << circuit << list[0].toInt(); + qDebug(dcUniPi()) << "Neuron: Found analog output register" << circuit << list[0].toInt(); } } } @@ -403,7 +405,7 @@ bool Neuron::modbusWriteRequest(const Request &request) } } else { requestExecuted(request.id, false); - qCWarning(dcUniPi()) << "Write response error:" << reply->error(); + qCWarning(dcUniPi()) << "Neuron: Write response error:" << reply->error(); emit requestError(request.id, reply->errorString()); } }); @@ -413,7 +415,7 @@ bool Neuron::modbusWriteRequest(const Request &request) return false; } } else { - qCWarning(dcUniPi()) << "Read error: " << m_modbusInterface->errorString(); + qCWarning(dcUniPi()) << "Neuron: Read error: " << m_modbusInterface->errorString(); return false; } return true; @@ -462,7 +464,7 @@ bool Neuron::modbusReadRequest(const QModbusDataUnit &request) circuit = m_modbusUserLEDRegisters.key(modbusAddress); emit userLEDStatusChanged(circuit, unit.value(i)); } else { - qCWarning(dcUniPi()) << "Received unrecorgnised modbus register" << modbusAddress; + qCWarning(dcUniPi()) << "Neuron: Received unrecorgnised modbus register" << modbusAddress; } break; @@ -471,7 +473,7 @@ bool Neuron::modbusReadRequest(const QModbusDataUnit &request) circuit = m_modbusAnalogOutputRegisters.key(modbusAddress); emit analogOutputStatusChanged(circuit, (unit.value(i) << 16 | unit.value(i+1))); } else { - qCWarning(dcUniPi()) << "Received unrecognised modbus register" << modbusAddress; + qCWarning(dcUniPi()) << "Neuron: Received unrecognised modbus register" << modbusAddress; } break; case QModbusDataUnit::RegisterType::InputRegisters: @@ -479,19 +481,19 @@ bool Neuron::modbusReadRequest(const QModbusDataUnit &request) circuit = m_modbusAnalogInputRegisters.key(modbusAddress); emit analogInputStatusChanged(circuit, (unit.value(i) << 16 | unit.value(i+1))); } else { - qCWarning(dcUniPi()) << "Received unrecognised modbus register" << modbusAddress; + qCWarning(dcUniPi()) << "Neuron: Received unrecognised modbus register" << modbusAddress; } break; case QModbusDataUnit::RegisterType::DiscreteInputs: case QModbusDataUnit::RegisterType::Invalid: - qCWarning(dcUniPi()) << "Invalide register type"; + qCWarning(dcUniPi()) << "Neuron: Invalide register type"; break; } } } else if (reply->error() == QModbusDevice::ProtocolError) { - qCWarning(dcUniPi()) << "Read response error:" << reply->errorString() << reply->rawResult().exceptionCode(); + qCWarning(dcUniPi()) << "Neuron: Read response error:" << reply->errorString() << reply->rawResult().exceptionCode(); } else { - qCWarning(dcUniPi()) << "Read response error:" << reply->error() << reply->errorString(); + qCWarning(dcUniPi()) << "Neuron: Read response error:" << reply->error() << reply->errorString(); } }); QTimer::singleShot(m_responseTimeoutTime, reply, &QModbusReply::deleteLater); @@ -500,7 +502,7 @@ bool Neuron::modbusReadRequest(const QModbusDataUnit &request) return false; } } else { - qCWarning(dcUniPi()) << "Read error: " << m_modbusInterface->errorString(); + qCWarning(dcUniPi()) << "Neuron: Read error: " << m_modbusInterface->errorString(); return false; } return true; @@ -539,7 +541,7 @@ bool Neuron::getInputRegisters(QList registerList) if (m_readRequestQueue.isEmpty()) { modbusReadRequest(request); } else if (m_readRequestQueue.length() > 100) { - qCWarning(dcUniPi()) << "Neuron extension: too many pending read requests"; + qCWarning(dcUniPi()) << "Neuron: Too many pending read requests"; } else { m_readRequestQueue.append(request); } @@ -614,7 +616,7 @@ bool Neuron::getCoils(QList registerList) if (m_readRequestQueue.isEmpty()) { modbusReadRequest(request); } else if (m_readRequestQueue.length() > 100) { - qCWarning(dcUniPi()) << "Neuron extension: too many pending read requests"; + qCWarning(dcUniPi()) << "Neuron: Too many pending read requests"; } else { m_readRequestQueue.append(request); } @@ -626,7 +628,7 @@ bool Neuron::getCoils(QList registerList) bool Neuron::getAllDigitalInputs() { if (!m_modbusInterface) { - qCWarning(dcUniPi()) << "Neuron modbus interface not initialized"; + qCWarning(dcUniPi()) << "Neuron: ;Ḿodbus interface not initialized"; return false; } return getCoils(m_modbusDigitalInputRegisters.values()); @@ -635,7 +637,7 @@ bool Neuron::getAllDigitalInputs() bool Neuron::getAllDigitalOutputs() { if (!m_modbusInterface) { - qCWarning(dcUniPi()) << "Neuron modbus interface not initialized"; + qCWarning(dcUniPi()) << "Neuron: Modbus interface not initialized"; return false; } return getCoils(m_modbusDigitalOutputRegisters.values()); @@ -656,7 +658,7 @@ bool Neuron::getAllAnalogInputs() bool Neuron::getAllAnalogOutputs() { if (!m_modbusInterface) { - qCWarning(dcUniPi()) << "Neuron modbus interface not initialized"; + qCWarning(dcUniPi()) << "Neuron: Modbus interface not initialized"; return false; } foreach(QString circuit, m_modbusAnalogOutputRegisters.keys()) { @@ -668,7 +670,7 @@ bool Neuron::getAllAnalogOutputs() bool Neuron::getDigitalInput(const QString &circuit) { int modbusAddress = m_modbusDigitalInputRegisters.value(circuit); - //qDebug(dcUniPi()) << "Reading digital Input" << circuit << modbusAddress; + //qDebug(dcUniPi()) << "Neuron: Reading digital Input" << circuit << modbusAddress; if (!m_modbusInterface) return false; @@ -677,7 +679,7 @@ bool Neuron::getDigitalInput(const QString &circuit) if (m_readRequestQueue.isEmpty()) { //return modbusReadRequest(request); } else if (m_readRequestQueue.length() > 100) { - qCWarning(dcUniPi()) << "Neuron extension: too many pending read requests"; + qCWarning(dcUniPi()) << "Neuron: Too many pending read requests"; return false; } else { //m_readRequestQueue.append(request); //FIXME @@ -688,7 +690,7 @@ bool Neuron::getDigitalInput(const QString &circuit) bool Neuron::getAnalogOutput(const QString &circuit) { int modbusAddress = m_modbusAnalogInputRegisters.value(circuit); - qDebug(dcUniPi()) << "Reading analog Input" << circuit << modbusAddress; + qDebug(dcUniPi()) << "Neuron: Reading analog input" << circuit << modbusAddress; if (!m_modbusInterface) return false; @@ -709,7 +711,7 @@ bool Neuron::getAnalogOutput(const QString &circuit) QUuid Neuron::setDigitalOutput(const QString &circuit, bool value) { int modbusAddress = m_modbusDigitalOutputRegisters.value(circuit); - //qDebug(dcUniPi()) << "Setting digital ouput" << circuit << modbusAddress << value; + //qDebug(dcUniPi()) << "Neuron: Setting digital ouput" << circuit << modbusAddress << value; Request request; request.data = QModbusDataUnit(QModbusDataUnit::RegisterType::Coils, modbusAddress, 1); @@ -739,7 +741,7 @@ bool Neuron::getDigitalOutput(const QString &circuit) if (m_readRequestQueue.isEmpty()) { return modbusReadRequest(request); } else if (m_readRequestQueue.length() > 100) { - qCWarning(dcUniPi()) << "Neuron extension: too many pending read requests"; + qCWarning(dcUniPi()) << "Neuron: Too many pending read requests"; return false; } else { m_readRequestQueue.append(request); @@ -751,7 +753,7 @@ bool Neuron::getDigitalOutput(const QString &circuit) QUuid Neuron::setAnalogOutput(const QString &circuit, double value) { int modbusAddress = m_modbusAnalogOutputRegisters.value(circuit); - qDebug(dcUniPi()) << "Writing analog Output" << circuit << modbusAddress; + qDebug(dcUniPi()) << "Neuron: Writing analog Output" << circuit << modbusAddress; if (!m_modbusInterface) return ""; @@ -777,7 +779,7 @@ QUuid Neuron::setAnalogOutput(const QString &circuit, double value) bool Neuron::getAnalogInput(const QString &circuit) { int modbusAddress = m_modbusAnalogInputRegisters.value(circuit); - qDebug(dcUniPi()) << "Reading analog Input" << circuit << modbusAddress; + qDebug(dcUniPi()) << "Neuron: Reading analog Input" << circuit << modbusAddress; if (!m_modbusInterface) return false; @@ -786,7 +788,7 @@ bool Neuron::getAnalogInput(const QString &circuit) if (m_readRequestQueue.isEmpty()) { return modbusReadRequest(request); } else if (m_readRequestQueue.length() > 100) { - qCWarning(dcUniPi()) << "Neuron extension: too many pending read requests"; + qCWarning(dcUniPi()) << "Neuron: Too many pending read requests"; return false; } else { m_readRequestQueue.append(request); @@ -797,7 +799,7 @@ bool Neuron::getAnalogInput(const QString &circuit) QUuid Neuron::setUserLED(const QString &circuit, bool value) { int modbusAddress = m_modbusUserLEDRegisters.value(circuit); - //qDebug(dcUniPi()) << "Setting digital ouput" << circuit << modbusAddress << value; + //qDebug(dcUniPi()) << "Neuron: Setting digital ouput" << circuit << modbusAddress << value; if (!m_modbusInterface) return ""; @@ -823,7 +825,7 @@ QUuid Neuron::setUserLED(const QString &circuit, bool value) bool Neuron::getUserLED(const QString &circuit) { int modbusAddress = m_modbusUserLEDRegisters.value(circuit); - //qDebug(dcUniPi()) << "Reading digital Output" << circuit << modbusAddress; + //qDebug(dcUniPi()) << "Neuron: Reading digital Output" << circuit << modbusAddress; if (!m_modbusInterface) return false; @@ -832,7 +834,7 @@ bool Neuron::getUserLED(const QString &circuit) if (m_readRequestQueue.isEmpty()) { //return modbusReadRequest(request); } else if (m_readRequestQueue.length() > 100) { - qCWarning(dcUniPi()) << "Neuron extension: too many pending read requests"; + qCWarning(dcUniPi()) << "Neuron: Too many pending read requests"; return false; } else { //m_readRequestQueue.append(request); diff --git a/unipi/neuronextension.cpp b/unipi/neuronextension.cpp index cf578da..bc9aaed 100644 --- a/unipi/neuronextension.cpp +++ b/unipi/neuronextension.cpp @@ -164,6 +164,8 @@ QList NeuronExtension::userLEDs() bool NeuronExtension::loadModbusMap() { + qCDebug(dcUniPi()) << "Neuron Extension: load modbus map"; + QStringList fileCoilList; QStringList fileRegisterList; @@ -193,7 +195,7 @@ bool NeuronExtension::loadModbusMap() foreach (QString relativeFilePath, fileCoilList) { QString absoluteFilePath = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation).last() + "/nymea/modbus" + relativeFilePath; - qDebug(dcUniPi()) << "Open CSV File:" << absoluteFilePath; + qDebug(dcUniPi()) << "Neuron Extension: Open CSV File:" << absoluteFilePath; QFile *csvFile = new QFile(absoluteFilePath); if (!csvFile->open(QIODevice::ReadOnly | QIODevice::Text)) { qCWarning(dcUniPi()) << csvFile->errorString() << absoluteFilePath; @@ -205,7 +207,7 @@ bool NeuronExtension::loadModbusMap() QString line = textStream->readLine(); QStringList list = line.split(','); if (list.length() <= 4) { - qCWarning(dcUniPi()) << "currupted CSV file:" << csvFile->fileName(); + qCWarning(dcUniPi()) << "Neuron Extension: currupted CSV file:" << csvFile->fileName(); csvFile->deleteLater(); return false; } @@ -256,7 +258,7 @@ bool NeuronExtension::loadModbusMap() foreach (QString relativeFilePath, fileRegisterList) { QString absoluteFilePath = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation).last() + "/nymea/modbus" + relativeFilePath; - qDebug(dcUniPi()) << "Open CSV File:" << absoluteFilePath; + qDebug(dcUniPi()) << "Neuron Extension: Open CSV File:" << absoluteFilePath; QFile *csvFile = new QFile(absoluteFilePath); if (!csvFile->open(QIODevice::ReadOnly | QIODevice::Text)) { qCWarning(dcUniPi()) << csvFile->errorString() << absoluteFilePath; @@ -268,13 +270,13 @@ bool NeuronExtension::loadModbusMap() QString line = textStream->readLine(); QStringList list = line.split(','); if (list.length() <= 5) { - qCWarning(dcUniPi()) << "currupted CSV file:" << csvFile->fileName(); + qCWarning(dcUniPi()) << "Neuron Extension: Currupted CSV file:" << csvFile->fileName(); csvFile->deleteLater(); return false; } if (list.last() == "Basic" && list[5].split(" ").length() > 3) { if (list[5].split(" ").length() <= 3) { - qCWarning(dcUniPi()) << "currupted CSV file:" << csvFile->fileName(); + qCWarning(dcUniPi()) << "Neuron Extension: Currupted CSV file:" << csvFile->fileName(); csvFile->deleteLater(); return false; } @@ -284,7 +286,7 @@ bool NeuronExtension::loadModbusMap() qDebug(dcUniPi()) << "Found analog input register" << circuit << list[0].toInt(); } else if (list[5].contains("Analog Output Value", Qt::CaseSensitivity::CaseInsensitive)) { m_modbusAnalogOutputRegisters.insert(circuit, list[0].toInt()); - qDebug(dcUniPi()) << "Found analog output register" << circuit << list[0].toInt(); + qDebug(dcUniPi()) << "FNeuron Extension: Found analog output register" << circuit << list[0].toInt(); } } } @@ -314,7 +316,7 @@ bool NeuronExtension::modbusReadRequest(const QModbusDataUnit &request) const QModbusDataUnit unit = reply->result(); for (int i = 0; i < static_cast(unit.valueCount()); i++) { - //qCDebug(dcUniPi()) << "Start Address:" << unit.startAddress() << "Register Type:" << unit.registerType() << "Value:" << unit.value(i); + //qCDebug(dcUniPi()) << "Neuron Extension: Start Address:" << unit.startAddress() << "Register Type:" << unit.registerType() << "Value:" << unit.value(i); modbusAddress = unit.startAddress() + i; if (m_previousModbusRegisterValue.contains(modbusAddress)) { @@ -360,15 +362,15 @@ bool NeuronExtension::modbusReadRequest(const QModbusDataUnit &request) break; case QModbusDataUnit::RegisterType::DiscreteInputs: case QModbusDataUnit::RegisterType::Invalid: - qCWarning(dcUniPi()) << "Invalide register type"; + qCWarning(dcUniPi()) << "Neuron Extension: Invalide register type"; break; } } } else if (reply->error() == QModbusDevice::ProtocolError) { - qCWarning(dcUniPi()) << "Read response error:" << reply->errorString() << reply->rawResult().exceptionCode(); + qCWarning(dcUniPi()) << "Neuron Extension: Read response error:" << reply->errorString() << reply->rawResult().exceptionCode(); } else { - qCWarning(dcUniPi()) << "Read response error:" << reply->error(); + qCWarning(dcUniPi()) << "Neuron Extension: Read response error:" << reply->error(); } }); QTimer::singleShot(m_responseTimeoutTime, reply, &QModbusReply::deleteLater); @@ -377,7 +379,7 @@ bool NeuronExtension::modbusReadRequest(const QModbusDataUnit &request) return false; } } else { - qCWarning(dcUniPi()) << "Read error: " << m_modbusInterface->errorString(); + qCWarning(dcUniPi()) << "Neuron Extension: Read error: " << m_modbusInterface->errorString(); return false; } return true; @@ -414,7 +416,7 @@ bool NeuronExtension::modbusWriteRequest(const Request &request) } } else { requestExecuted(request.id, false); - qCWarning(dcUniPi()) << "Read response error:" << reply->error(); + qCWarning(dcUniPi()) << "Neuron Extension: Read response error:" << reply->error(); emit requestError(request.id, reply->errorString()); } }); @@ -424,7 +426,7 @@ bool NeuronExtension::modbusWriteRequest(const Request &request) return false; } } else { - qCWarning(dcUniPi()) << "Read error: " << m_modbusInterface->errorString(); + qCWarning(dcUniPi()) << "Neuron Extension: Read error: " << m_modbusInterface->errorString(); return false; } return true;