improbed debug output

This commit is contained in:
Boernsman 2021-01-18 13:58:19 +01:00
parent 8247e33a03
commit 6a1cf29dc9
3 changed files with 105 additions and 64 deletions

View File

@ -73,6 +73,7 @@ void IntegrationPluginUniPi::discoverThings(ThingDiscoveryInfo *info)
ThingClassId ThingClassId = info->thingClassId(); ThingClassId ThingClassId = info->thingClassId();
if (ThingClassId == digitalInputThingClassId) { if (ThingClassId == digitalInputThingClassId) {
qCDebug(dcUniPi()) << "Discovering digital inputs";
foreach(Thing *parent, myThings()) { foreach(Thing *parent, myThings()) {
if (((parent->thingClassId() == uniPi1ThingClassId) || (parent->thingClassId() == uniPi1LiteThingClassId)) && m_unipi) { if (((parent->thingClassId() == uniPi1ThingClassId) || (parent->thingClassId() == uniPi1LiteThingClassId)) && m_unipi) {
foreach (QString circuit, m_unipi->digitalInputs()) { foreach (QString circuit, m_unipi->digitalInputs()) {
@ -130,6 +131,7 @@ void IntegrationPluginUniPi::discoverThings(ThingDiscoveryInfo *info)
} }
return info->finish(Thing::ThingErrorNoError); return info->finish(Thing::ThingErrorNoError);
} else if (ThingClassId == digitalOutputThingClassId) { } else if (ThingClassId == digitalOutputThingClassId) {
qCDebug(dcUniPi()) << "Discovering digital outputs";
foreach(Thing *parent, myThings()) { foreach(Thing *parent, myThings()) {
if (((parent->thingClassId() == uniPi1ThingClassId) || (parent->thingClassId() == uniPi1LiteThingClassId)) && m_unipi) { if (((parent->thingClassId() == uniPi1ThingClassId) || (parent->thingClassId() == uniPi1LiteThingClassId)) && m_unipi) {
foreach (QString circuit, m_unipi->digitalOutputs()) { foreach (QString circuit, m_unipi->digitalOutputs()) {
@ -187,6 +189,7 @@ void IntegrationPluginUniPi::discoverThings(ThingDiscoveryInfo *info)
} }
return info->finish(Thing::ThingErrorNoError); return info->finish(Thing::ThingErrorNoError);
} else if (ThingClassId == analogInputThingClassId) { } else if (ThingClassId == analogInputThingClassId) {
qCDebug(dcUniPi()) << "Discovering analog inputs";
foreach(Thing *parent, myThings()) { foreach(Thing *parent, myThings()) {
if (((parent->thingClassId() == uniPi1ThingClassId) || (parent->thingClassId() == uniPi1LiteThingClassId)) && m_unipi) { if (((parent->thingClassId() == uniPi1ThingClassId) || (parent->thingClassId() == uniPi1LiteThingClassId)) && m_unipi) {
foreach (QString circuit, m_unipi->analogInputs()) { foreach (QString circuit, m_unipi->analogInputs()) {
@ -244,6 +247,7 @@ void IntegrationPluginUniPi::discoverThings(ThingDiscoveryInfo *info)
} }
return info->finish(Thing::ThingErrorNoError); return info->finish(Thing::ThingErrorNoError);
} else if (ThingClassId == analogOutputThingClassId) { } else if (ThingClassId == analogOutputThingClassId) {
qCDebug(dcUniPi()) << "Discovering analog outputs";
foreach(Thing *parent, myThings()) { foreach(Thing *parent, myThings()) {
if (((parent->thingClassId() == uniPi1ThingClassId) || (parent->thingClassId() == uniPi1LiteThingClassId)) && m_unipi) { if (((parent->thingClassId() == uniPi1ThingClassId) || (parent->thingClassId() == uniPi1LiteThingClassId)) && m_unipi) {
foreach (QString circuit, m_unipi->analogOutputs()) { foreach (QString circuit, m_unipi->analogOutputs()) {
@ -301,6 +305,7 @@ void IntegrationPluginUniPi::discoverThings(ThingDiscoveryInfo *info)
} }
return info->finish(Thing::ThingErrorNoError); return info->finish(Thing::ThingErrorNoError);
} else if (ThingClassId == userLEDThingClassId) { } else if (ThingClassId == userLEDThingClassId) {
qCDebug(dcUniPi()) << "Discovering user LEDs";
QList<ThingDescriptor> ThingDescriptors; QList<ThingDescriptor> ThingDescriptors;
foreach (NeuronExtension *neuronExtension, m_neuronExtensions) { foreach (NeuronExtension *neuronExtension, m_neuronExtensions) {
ThingId parentId = m_neuronExtensions.key(neuronExtension); ThingId parentId = m_neuronExtensions.key(neuronExtension);
@ -351,8 +356,12 @@ void IntegrationPluginUniPi::setupThing(ThingSetupInfo *info)
if(thing->thingClassId() == uniPi1ThingClassId if(thing->thingClassId() == uniPi1ThingClassId
|| thing->thingClassId() == uniPi1LiteThingClassId) { || 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 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) { if(thing->thingClassId() == uniPi1ThingClassId) {
m_unipi = new UniPi(hardwareManager()->i2cManager(), UniPi::UniPiType::UniPi1, this); 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::analogInputStatusChanged, this, &IntegrationPluginUniPi::onUniPiAnalogInputStatusChanged);
connect(m_unipi, &UniPi::analogOutputStatusChanged, this, &IntegrationPluginUniPi::onUniPiAnalogOutputStatusChanged); connect(m_unipi, &UniPi::analogOutputStatusChanged, this, &IntegrationPluginUniPi::onUniPiAnalogOutputStatusChanged);
thing->setStateValue(m_connectionStateTypeIds.value(thing->thingClassId()), true); thing->setStateValue(m_connectionStateTypeIds.value(thing->thingClassId()), true);
return info->finish(Thing::ThingErrorNoError); return info->finish(Thing::ThingErrorNoError);
} else if(thing->thingClassId() == neuronS103ThingClassId || } else if(thing->thingClassId() == neuronS103ThingClassId ||
thing->thingClassId() == neuronM103ThingClassId || thing->thingClassId() == neuronM103ThingClassId ||
thing->thingClassId() == neuronM203ThingClassId || thing->thingClassId() == neuronM203ThingClassId ||
@ -383,9 +392,12 @@ void IntegrationPluginUniPi::setupThing(ThingSetupInfo *info)
thing->thingClassId() == neuronL403ThingClassId || thing->thingClassId() == neuronL403ThingClassId ||
thing->thingClassId() == neuronL503ThingClassId || thing->thingClassId() == neuronL503ThingClassId ||
thing->thingClassId() == neuronL513ThingClassId) { 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.")); return info->finish(Thing::ThingErrorSetupFailed, QT_TR_NOOP("Error setting up Neuron."));
}
Neuron *neuron; Neuron *neuron;
if (thing->thingClassId() == neuronS103ThingClassId) { if (thing->thingClassId() == neuronS103ThingClassId) {
@ -411,6 +423,7 @@ void IntegrationPluginUniPi::setupThing(ThingSetupInfo *info)
} else if (thing->thingClassId() == neuronL513ThingClassId) { } else if (thing->thingClassId() == neuronL513ThingClassId) {
neuron = new Neuron(Neuron::NeuronTypes::L513, m_modbusTCPMaster, this); neuron = new Neuron(Neuron::NeuronTypes::L513, m_modbusTCPMaster, this);
} else { } else {
qCWarning(dcUniPi()) << "Neuron type not supported";
return info->finish(Thing::ThingErrorSetupFailed, QT_TR_NOOP("Error unrecognized Neuron type.")); 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); connect(neuron, &Neuron::userLEDStatusChanged, this, &IntegrationPluginUniPi::onNeuronUserLEDStatusChanged);
thing->setStateValue(m_connectionStateTypeIds.value(thing->thingClassId()), (m_modbusTCPMaster->state() == QModbusDevice::ConnectedState)); thing->setStateValue(m_connectionStateTypeIds.value(thing->thingClassId()), (m_modbusTCPMaster->state() == QModbusDevice::ConnectedState));
return info->finish(Thing::ThingErrorNoError); return info->finish(Thing::ThingErrorNoError);
} else if(thing->thingClassId() == neuronXS10ThingClassId || } else if(thing->thingClassId() == neuronXS10ThingClassId ||
thing->thingClassId() == neuronXS20ThingClassId || thing->thingClassId() == neuronXS20ThingClassId ||
thing->thingClassId() == neuronXS30ThingClassId || thing->thingClassId() == neuronXS30ThingClassId ||
@ -440,9 +453,11 @@ void IntegrationPluginUniPi::setupThing(ThingSetupInfo *info)
thing->thingClassId() == neuronXS50ThingClassId || thing->thingClassId() == neuronXS50ThingClassId ||
thing->thingClassId() == neuronXS11ThingClassId || thing->thingClassId() == neuronXS11ThingClassId ||
thing->thingClassId() == neuronXS51ThingClassId) { 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.")); return info->finish(Thing::ThingErrorSetupFailed, QT_TR_NOOP("Error setting up Neuron."));
}
int slaveAddress; int slaveAddress;
NeuronExtension *neuronExtension; NeuronExtension *neuronExtension;
@ -508,9 +523,10 @@ void IntegrationPluginUniPi::setupThing(ThingSetupInfo *info)
void IntegrationPluginUniPi::postSetupThing(Thing *thing) void IntegrationPluginUniPi::postSetupThing(Thing *thing)
{ {
Q_UNUSED(thing) qCDebug(dcUniPi()) << "Post setup" << thing->name();
if (!m_reconnectTimer) { if (!m_reconnectTimer) {
qCDebug(dcUniPi()) << "Creating reconnect timer";
m_reconnectTimer = new QTimer(this); m_reconnectTimer = new QTimer(this);
m_reconnectTimer->setSingleShot(true); m_reconnectTimer->setSingleShot(true);
connect(m_reconnectTimer, &QTimer::timeout, this, &IntegrationPluginUniPi::onReconnectTimer); connect(m_reconnectTimer, &QTimer::timeout, this, &IntegrationPluginUniPi::onReconnectTimer);
@ -556,7 +572,7 @@ void IntegrationPluginUniPi::executeAction(ThingActionInfo *info)
} }
return; return;
} else { } else {
qCWarning(dcUniPi()) << "Hardware not initilized" << thing->name(); qCWarning(dcUniPi()) << "Hardware not initialized" << thing->name();
return info->finish(Thing::ThingErrorHardwareFailure); return info->finish(Thing::ThingErrorHardwareFailure);
} }
} else { } else {
@ -596,7 +612,7 @@ void IntegrationPluginUniPi::executeAction(ThingActionInfo *info)
} }
return; return;
} else { } else {
qCWarning(dcUniPi()) << "Hardware not initilized" << thing->name(); qCWarning(dcUniPi()) << "Hardware not initialized" << thing->name();
return info->finish(Thing::ThingErrorHardwareFailure); return info->finish(Thing::ThingErrorHardwareFailure);
} }
} else { } else {
@ -644,6 +660,7 @@ void IntegrationPluginUniPi::executeAction(ThingActionInfo *info)
void IntegrationPluginUniPi::thingRemoved(Thing *thing) void IntegrationPluginUniPi::thingRemoved(Thing *thing)
{ {
qCDebug(dcUniPi()) << "Deleting thing" << thing->name();
if(m_neurons.contains(thing->id())) { if(m_neurons.contains(thing->id())) {
Neuron *neuron = m_neurons.take(thing->id()); Neuron *neuron = m_neurons.take(thing->id());
neuron->deleteLater(); neuron->deleteLater();
@ -658,6 +675,7 @@ void IntegrationPluginUniPi::thingRemoved(Thing *thing)
} }
if (myThings().isEmpty()) { if (myThings().isEmpty()) {
qCDebug(dcUniPi()) << "Stopping timers";
if (m_reconnectTimer) { if (m_reconnectTimer) {
m_reconnectTimer->stop(); m_reconnectTimer->stop();
m_reconnectTimer->deleteLater(); m_reconnectTimer->deleteLater();
@ -723,6 +741,7 @@ void IntegrationPluginUniPi::onNeuronConnectionStateChanged(bool state)
qCWarning(dcUniPi()) << "Could not find any Thing associated to Neuron obejct"; qCWarning(dcUniPi()) << "Could not find any Thing associated to Neuron obejct";
return; return;
} }
qCDebug(dcUniPi()) << "Neuron connection state changed" << thing->name() << state;
thing->setStateValue(m_connectionStateTypeIds.value(thing->thingClassId()), 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"; qCWarning(dcUniPi()) << "Could not find any Thing associated to NeuronExtension obejct";
return; return;
} }
qCDebug(dcUniPi()) << "Neuron extension connection state changed" << thing->name() << state;
thing->setStateValue(m_connectionStateTypeIds.value(thing->thingClassId()), state); thing->setStateValue(m_connectionStateTypeIds.value(thing->thingClassId()), state);
} }
void IntegrationPluginUniPi::onRequestExecuted(const QUuid &requestId, bool success) void IntegrationPluginUniPi::onRequestExecuted(const QUuid &requestId, bool success)
{ {
qCDebug(dcUniPi()) << "Request executed, pending requests:" << m_asyncActions.size();
if (m_asyncActions.contains(requestId)){ if (m_asyncActions.contains(requestId)){
ThingActionInfo *info = m_asyncActions.take(requestId); ThingActionInfo *info = m_asyncActions.take(requestId);
if (success){ if (success){
@ -885,6 +907,7 @@ void IntegrationPluginUniPi::onRequestExecuted(const QUuid &requestId, bool succ
void IntegrationPluginUniPi::onRequestError(const QUuid &requestId, const QString &error) void IntegrationPluginUniPi::onRequestError(const QUuid &requestId, const QString &error)
{ {
qCDebug(dcUniPi()) << "Request error:" << error;
if (m_asyncActions.contains(requestId)){ if (m_asyncActions.contains(requestId)){
ThingActionInfo *info = m_asyncActions.take(requestId); ThingActionInfo *info = m_asyncActions.take(requestId);
info->finish(Thing::ThingErrorHardwareNotAvailable, error); info->finish(Thing::ThingErrorHardwareNotAvailable, error);
@ -910,16 +933,20 @@ void IntegrationPluginUniPi::onReconnectTimer()
{ {
if(m_modbusRTUMaster) { if(m_modbusRTUMaster) {
if (!m_modbusRTUMaster->connectDevice()) { if (!m_modbusRTUMaster->connectDevice()) {
qCWarning(dcUniPi()) << "Reconnecing to modbus RTU master failed, trying again in 10 seconds"; qCWarning(dcUniPi()) << "Reconnecing to modbus RTU master failed";
if (m_reconnectTimer) if (m_reconnectTimer) {
qCDebug(dcUniPi()) << " - Starting reconnect timer";
m_reconnectTimer->start(10000); m_reconnectTimer->start(10000);
}
} }
} }
if(m_modbusTCPMaster) { if(m_modbusTCPMaster) {
if (!m_modbusTCPMaster->connectDevice()) { if (!m_modbusTCPMaster->connectDevice()) {
qCWarning(dcUniPi()) << "Reconnecing to modbus TCP master failed, trying again in 10 seconds"; 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); m_reconnectTimer->start(10000);
}
} }
} }
} }
@ -927,25 +954,29 @@ void IntegrationPluginUniPi::onReconnectTimer()
void IntegrationPluginUniPi::onModbusTCPStateChanged(QModbusDevice::State state) void IntegrationPluginUniPi::onModbusTCPStateChanged(QModbusDevice::State state)
{ {
bool connected = (state == QModbusDevice::State::ConnectedState); bool connected = (state == QModbusDevice::State::ConnectedState);
qCDebug(dcUniPi()) << "Modbus TCP status changed:" << state;
if (!connected) { if (!connected) {
//try to reconnect in 10 seconds //try to reconnect in 10 seconds
if (m_reconnectTimer) if (m_reconnectTimer) {
qCDebug(dcUniPi()) << " - Starting reconnect timer";
m_reconnectTimer->start(10000); m_reconnectTimer->start(10000);
}
} }
qCDebug(dcUniPi()) << "Connection status changed:" << connected;
} }
void IntegrationPluginUniPi::onModbusRTUStateChanged(QModbusDevice::State state) void IntegrationPluginUniPi::onModbusRTUStateChanged(QModbusDevice::State state)
{ {
bool connected = (state == QModbusDevice::State::ConnectedState); bool connected = (state == QModbusDevice::State::ConnectedState);
qCDebug(dcUniPi()) << "Modbus RTU status changed:" << state;
if (!connected) { if (!connected) {
//try to reconnect in 10 seconds //try to reconnect in 10 seconds
if (m_reconnectTimer) if (m_reconnectTimer) {
qCDebug(dcUniPi()) << " - Starting reconnect timer";
m_reconnectTimer->start(10000); m_reconnectTimer->start(10000);
}
} }
qCDebug(dcUniPi()) << "Connection status changed:" << connected;
} }
void IntegrationPluginUniPi::onUniPiDigitalInputStatusChanged(const QString &circuit, bool value) void IntegrationPluginUniPi::onUniPiDigitalInputStatusChanged(const QString &circuit, bool value)
@ -993,6 +1024,7 @@ void IntegrationPluginUniPi::onUniPiAnalogOutputStatusChanged(double value)
bool IntegrationPluginUniPi::neuronDeviceInit() bool IntegrationPluginUniPi::neuronDeviceInit()
{ {
qCDebug(dcUniPi()) << "Neuron device init, creating Modbus TCP Master";
if(!m_modbusTCPMaster) { if(!m_modbusTCPMaster) {
int port = configValue(uniPiPluginPortParamTypeId).toInt();; int port = configValue(uniPiPluginPortParamTypeId).toInt();;
QHostAddress ipAddress = QHostAddress(configValue(uniPiPluginAddressParamTypeId).toString()); QHostAddress ipAddress = QHostAddress(configValue(uniPiPluginAddressParamTypeId).toString());
@ -1011,12 +1043,15 @@ bool IntegrationPluginUniPi::neuronDeviceInit()
m_modbusTCPMaster = nullptr; m_modbusTCPMaster = nullptr;
return false; return false;
} }
} else {
qCDebug(dcUniPi()) << "Neuron Modbus TCP Master is already created";
} }
return true; return true;
} }
bool IntegrationPluginUniPi::neuronExtensionInterfaceInit() bool IntegrationPluginUniPi::neuronExtensionInterfaceInit()
{ {
qCDebug(dcUniPi()) << "Neuron extension interface init, creating Modbus RTU Master";
if(!m_modbusRTUMaster) { if(!m_modbusRTUMaster) {
QString serialPort = configValue(uniPiPluginSerialPortParamTypeId).toString(); QString serialPort = configValue(uniPiPluginSerialPortParamTypeId).toString();
int baudrate = configValue(uniPiPluginBaudrateParamTypeId).toInt(); int baudrate = configValue(uniPiPluginBaudrateParamTypeId).toInt();
@ -1043,6 +1078,8 @@ bool IntegrationPluginUniPi::neuronExtensionInterfaceInit()
m_modbusRTUMaster = nullptr; m_modbusRTUMaster = nullptr;
return false; return false;
} }
} else {
qCDebug(dcUniPi()) << "Neuron Extension Modbus RTU Master is already created";
} }
return true; return true;
} }

View File

@ -166,6 +166,8 @@ QList<QString> Neuron::userLEDs()
bool Neuron::loadModbusMap() bool Neuron::loadModbusMap()
{ {
qCDebug(dcUniPi()) << "Neuron Extension: load modbus map";
QStringList fileCoilList; QStringList fileCoilList;
QStringList fileRegisterList; QStringList fileRegisterList;
@ -236,7 +238,7 @@ bool Neuron::loadModbusMap()
foreach(QString relativeFilePath, fileCoilList) { foreach(QString relativeFilePath, fileCoilList) {
QString absoluteFilePath = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation).last() + "/nymea/modbus" + relativeFilePath; 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); QFile *csvFile = new QFile(absoluteFilePath);
if (!csvFile->open(QIODevice::ReadOnly | QIODevice::Text)) { if (!csvFile->open(QIODevice::ReadOnly | QIODevice::Text)) {
qCWarning(dcUniPi()) << csvFile->errorString() << "Path:" << absoluteFilePath; qCWarning(dcUniPi()) << csvFile->errorString() << "Path:" << absoluteFilePath;
@ -248,7 +250,7 @@ bool Neuron::loadModbusMap()
QString line = textStream->readLine(); QString line = textStream->readLine();
QStringList list = line.split(','); QStringList list = line.split(',');
if (list.length() <= 4) { if (list.length() <= 4) {
qCWarning(dcUniPi()) << "currupted CSV file:" << csvFile->fileName(); qCWarning(dcUniPi()) << "Neuron: Currupted CSV file:" << csvFile->fileName();
csvFile->deleteLater(); csvFile->deleteLater();
return false; return false;
} }
@ -256,16 +258,16 @@ bool Neuron::loadModbusMap()
QString circuit = list[3].split(" ").last(); QString circuit = list[3].split(" ").last();
if (list[3].contains("Digital Input", Qt::CaseSensitivity::CaseInsensitive)) { if (list[3].contains("Digital Input", Qt::CaseSensitivity::CaseInsensitive)) {
m_modbusDigitalInputRegisters.insert(circuit, list[0].toInt()); 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)) { } else if (list[3].contains("Digital Output", Qt::CaseSensitivity::CaseInsensitive)) {
m_modbusDigitalOutputRegisters.insert(circuit, list[0].toInt()); 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)) { } else if (list[3].contains("Relay Output", Qt::CaseSensitivity::CaseInsensitive)) {
m_modbusDigitalOutputRegisters.insert(circuit, list[0].toInt()); 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)) { } else if (list[3].contains("User Programmable LED", Qt::CaseSensitivity::CaseInsensitive)) {
m_modbusUserLEDRegisters.insert(circuit, list[0].toInt()); 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) { foreach (QString relativeFilePath, fileRegisterList) {
QString absoluteFilePath = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation).last() + "/nymea/modbus" + relativeFilePath; 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); QFile *csvFile = new QFile(absoluteFilePath);
if (!csvFile->open(QIODevice::ReadOnly | QIODevice::Text)) { if (!csvFile->open(QIODevice::ReadOnly | QIODevice::Text)) {
qCWarning(dcUniPi()) << csvFile->errorString() << "Path:" << absoluteFilePath; qCWarning(dcUniPi()) << "Neuron:" << csvFile->errorString() << "Path:" << absoluteFilePath;
csvFile->deleteLater(); csvFile->deleteLater();
return false; return false;
} }
@ -351,7 +353,7 @@ bool Neuron::loadModbusMap()
QString line = textStream->readLine(); QString line = textStream->readLine();
QStringList list = line.split(','); QStringList list = line.split(',');
if (list.length() <= 5) { if (list.length() <= 5) {
qCWarning(dcUniPi()) << "currupted CSV file:" << csvFile->fileName(); qCWarning(dcUniPi()) << "Neuron: Currupted CSV file:" << csvFile->fileName();
csvFile->deleteLater(); csvFile->deleteLater();
return false; return false;
} }
@ -359,10 +361,10 @@ bool Neuron::loadModbusMap()
QString circuit = list[5].split(" ").last(); QString circuit = list[5].split(" ").last();
if (list[5].contains("Analog Input Value", Qt::CaseSensitivity::CaseInsensitive)) { if (list[5].contains("Analog Input Value", Qt::CaseSensitivity::CaseInsensitive)) {
m_modbusAnalogInputRegisters.insert(circuit, list[0].toInt()); 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)) { } else if (list[5].contains("Analog Output Value", Qt::CaseSensitivity::CaseInsensitive)) {
m_modbusAnalogOutputRegisters.insert(circuit, list[0].toInt()); 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 { } else {
requestExecuted(request.id, false); 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()); emit requestError(request.id, reply->errorString());
} }
}); });
@ -413,7 +415,7 @@ bool Neuron::modbusWriteRequest(const Request &request)
return false; return false;
} }
} else { } else {
qCWarning(dcUniPi()) << "Read error: " << m_modbusInterface->errorString(); qCWarning(dcUniPi()) << "Neuron: Read error: " << m_modbusInterface->errorString();
return false; return false;
} }
return true; return true;
@ -462,7 +464,7 @@ bool Neuron::modbusReadRequest(const QModbusDataUnit &request)
circuit = m_modbusUserLEDRegisters.key(modbusAddress); circuit = m_modbusUserLEDRegisters.key(modbusAddress);
emit userLEDStatusChanged(circuit, unit.value(i)); emit userLEDStatusChanged(circuit, unit.value(i));
} else { } else {
qCWarning(dcUniPi()) << "Received unrecorgnised modbus register" << modbusAddress; qCWarning(dcUniPi()) << "Neuron: Received unrecorgnised modbus register" << modbusAddress;
} }
break; break;
@ -471,7 +473,7 @@ bool Neuron::modbusReadRequest(const QModbusDataUnit &request)
circuit = m_modbusAnalogOutputRegisters.key(modbusAddress); circuit = m_modbusAnalogOutputRegisters.key(modbusAddress);
emit analogOutputStatusChanged(circuit, (unit.value(i) << 16 | unit.value(i+1))); emit analogOutputStatusChanged(circuit, (unit.value(i) << 16 | unit.value(i+1)));
} else { } else {
qCWarning(dcUniPi()) << "Received unrecognised modbus register" << modbusAddress; qCWarning(dcUniPi()) << "Neuron: Received unrecognised modbus register" << modbusAddress;
} }
break; break;
case QModbusDataUnit::RegisterType::InputRegisters: case QModbusDataUnit::RegisterType::InputRegisters:
@ -479,19 +481,19 @@ bool Neuron::modbusReadRequest(const QModbusDataUnit &request)
circuit = m_modbusAnalogInputRegisters.key(modbusAddress); circuit = m_modbusAnalogInputRegisters.key(modbusAddress);
emit analogInputStatusChanged(circuit, (unit.value(i) << 16 | unit.value(i+1))); emit analogInputStatusChanged(circuit, (unit.value(i) << 16 | unit.value(i+1)));
} else { } else {
qCWarning(dcUniPi()) << "Received unrecognised modbus register" << modbusAddress; qCWarning(dcUniPi()) << "Neuron: Received unrecognised modbus register" << modbusAddress;
} }
break; break;
case QModbusDataUnit::RegisterType::DiscreteInputs: case QModbusDataUnit::RegisterType::DiscreteInputs:
case QModbusDataUnit::RegisterType::Invalid: case QModbusDataUnit::RegisterType::Invalid:
qCWarning(dcUniPi()) << "Invalide register type"; qCWarning(dcUniPi()) << "Neuron: Invalide register type";
break; break;
} }
} }
} else if (reply->error() == QModbusDevice::ProtocolError) { } 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 { } 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); QTimer::singleShot(m_responseTimeoutTime, reply, &QModbusReply::deleteLater);
@ -500,7 +502,7 @@ bool Neuron::modbusReadRequest(const QModbusDataUnit &request)
return false; return false;
} }
} else { } else {
qCWarning(dcUniPi()) << "Read error: " << m_modbusInterface->errorString(); qCWarning(dcUniPi()) << "Neuron: Read error: " << m_modbusInterface->errorString();
return false; return false;
} }
return true; return true;
@ -539,7 +541,7 @@ bool Neuron::getInputRegisters(QList<int> registerList)
if (m_readRequestQueue.isEmpty()) { if (m_readRequestQueue.isEmpty()) {
modbusReadRequest(request); modbusReadRequest(request);
} else if (m_readRequestQueue.length() > 100) { } else if (m_readRequestQueue.length() > 100) {
qCWarning(dcUniPi()) << "Neuron extension: too many pending read requests"; qCWarning(dcUniPi()) << "Neuron: Too many pending read requests";
} else { } else {
m_readRequestQueue.append(request); m_readRequestQueue.append(request);
} }
@ -614,7 +616,7 @@ bool Neuron::getCoils(QList<int> registerList)
if (m_readRequestQueue.isEmpty()) { if (m_readRequestQueue.isEmpty()) {
modbusReadRequest(request); modbusReadRequest(request);
} else if (m_readRequestQueue.length() > 100) { } else if (m_readRequestQueue.length() > 100) {
qCWarning(dcUniPi()) << "Neuron extension: too many pending read requests"; qCWarning(dcUniPi()) << "Neuron: Too many pending read requests";
} else { } else {
m_readRequestQueue.append(request); m_readRequestQueue.append(request);
} }
@ -626,7 +628,7 @@ bool Neuron::getCoils(QList<int> registerList)
bool Neuron::getAllDigitalInputs() bool Neuron::getAllDigitalInputs()
{ {
if (!m_modbusInterface) { if (!m_modbusInterface) {
qCWarning(dcUniPi()) << "Neuron modbus interface not initialized"; qCWarning(dcUniPi()) << "Neuron: ;Ḿodbus interface not initialized";
return false; return false;
} }
return getCoils(m_modbusDigitalInputRegisters.values()); return getCoils(m_modbusDigitalInputRegisters.values());
@ -635,7 +637,7 @@ bool Neuron::getAllDigitalInputs()
bool Neuron::getAllDigitalOutputs() bool Neuron::getAllDigitalOutputs()
{ {
if (!m_modbusInterface) { if (!m_modbusInterface) {
qCWarning(dcUniPi()) << "Neuron modbus interface not initialized"; qCWarning(dcUniPi()) << "Neuron: Modbus interface not initialized";
return false; return false;
} }
return getCoils(m_modbusDigitalOutputRegisters.values()); return getCoils(m_modbusDigitalOutputRegisters.values());
@ -656,7 +658,7 @@ bool Neuron::getAllAnalogInputs()
bool Neuron::getAllAnalogOutputs() bool Neuron::getAllAnalogOutputs()
{ {
if (!m_modbusInterface) { if (!m_modbusInterface) {
qCWarning(dcUniPi()) << "Neuron modbus interface not initialized"; qCWarning(dcUniPi()) << "Neuron: Modbus interface not initialized";
return false; return false;
} }
foreach(QString circuit, m_modbusAnalogOutputRegisters.keys()) { foreach(QString circuit, m_modbusAnalogOutputRegisters.keys()) {
@ -668,7 +670,7 @@ bool Neuron::getAllAnalogOutputs()
bool Neuron::getDigitalInput(const QString &circuit) bool Neuron::getDigitalInput(const QString &circuit)
{ {
int modbusAddress = m_modbusDigitalInputRegisters.value(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) if (!m_modbusInterface)
return false; return false;
@ -677,7 +679,7 @@ bool Neuron::getDigitalInput(const QString &circuit)
if (m_readRequestQueue.isEmpty()) { if (m_readRequestQueue.isEmpty()) {
//return modbusReadRequest(request); //return modbusReadRequest(request);
} else if (m_readRequestQueue.length() > 100) { } 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; return false;
} else { } else {
//m_readRequestQueue.append(request); //FIXME //m_readRequestQueue.append(request); //FIXME
@ -688,7 +690,7 @@ bool Neuron::getDigitalInput(const QString &circuit)
bool Neuron::getAnalogOutput(const QString &circuit) bool Neuron::getAnalogOutput(const QString &circuit)
{ {
int modbusAddress = m_modbusAnalogInputRegisters.value(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) if (!m_modbusInterface)
return false; return false;
@ -709,7 +711,7 @@ bool Neuron::getAnalogOutput(const QString &circuit)
QUuid Neuron::setDigitalOutput(const QString &circuit, bool value) QUuid Neuron::setDigitalOutput(const QString &circuit, bool value)
{ {
int modbusAddress = m_modbusDigitalOutputRegisters.value(circuit); 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 request;
request.data = QModbusDataUnit(QModbusDataUnit::RegisterType::Coils, modbusAddress, 1); request.data = QModbusDataUnit(QModbusDataUnit::RegisterType::Coils, modbusAddress, 1);
@ -739,7 +741,7 @@ bool Neuron::getDigitalOutput(const QString &circuit)
if (m_readRequestQueue.isEmpty()) { if (m_readRequestQueue.isEmpty()) {
return modbusReadRequest(request); return modbusReadRequest(request);
} else if (m_readRequestQueue.length() > 100) { } 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; return false;
} else { } else {
m_readRequestQueue.append(request); m_readRequestQueue.append(request);
@ -751,7 +753,7 @@ bool Neuron::getDigitalOutput(const QString &circuit)
QUuid Neuron::setAnalogOutput(const QString &circuit, double value) QUuid Neuron::setAnalogOutput(const QString &circuit, double value)
{ {
int modbusAddress = m_modbusAnalogOutputRegisters.value(circuit); int modbusAddress = m_modbusAnalogOutputRegisters.value(circuit);
qDebug(dcUniPi()) << "Writing analog Output" << circuit << modbusAddress; qDebug(dcUniPi()) << "Neuron: Writing analog Output" << circuit << modbusAddress;
if (!m_modbusInterface) if (!m_modbusInterface)
return ""; return "";
@ -777,7 +779,7 @@ QUuid Neuron::setAnalogOutput(const QString &circuit, double value)
bool Neuron::getAnalogInput(const QString &circuit) bool Neuron::getAnalogInput(const QString &circuit)
{ {
int modbusAddress = m_modbusAnalogInputRegisters.value(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) if (!m_modbusInterface)
return false; return false;
@ -786,7 +788,7 @@ bool Neuron::getAnalogInput(const QString &circuit)
if (m_readRequestQueue.isEmpty()) { if (m_readRequestQueue.isEmpty()) {
return modbusReadRequest(request); return modbusReadRequest(request);
} else if (m_readRequestQueue.length() > 100) { } 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; return false;
} else { } else {
m_readRequestQueue.append(request); m_readRequestQueue.append(request);
@ -797,7 +799,7 @@ bool Neuron::getAnalogInput(const QString &circuit)
QUuid Neuron::setUserLED(const QString &circuit, bool value) QUuid Neuron::setUserLED(const QString &circuit, bool value)
{ {
int modbusAddress = m_modbusUserLEDRegisters.value(circuit); 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) if (!m_modbusInterface)
return ""; return "";
@ -823,7 +825,7 @@ QUuid Neuron::setUserLED(const QString &circuit, bool value)
bool Neuron::getUserLED(const QString &circuit) bool Neuron::getUserLED(const QString &circuit)
{ {
int modbusAddress = m_modbusUserLEDRegisters.value(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) if (!m_modbusInterface)
return false; return false;
@ -832,7 +834,7 @@ bool Neuron::getUserLED(const QString &circuit)
if (m_readRequestQueue.isEmpty()) { if (m_readRequestQueue.isEmpty()) {
//return modbusReadRequest(request); //return modbusReadRequest(request);
} else if (m_readRequestQueue.length() > 100) { } 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; return false;
} else { } else {
//m_readRequestQueue.append(request); //m_readRequestQueue.append(request);

View File

@ -164,6 +164,8 @@ QList<QString> NeuronExtension::userLEDs()
bool NeuronExtension::loadModbusMap() bool NeuronExtension::loadModbusMap()
{ {
qCDebug(dcUniPi()) << "Neuron Extension: load modbus map";
QStringList fileCoilList; QStringList fileCoilList;
QStringList fileRegisterList; QStringList fileRegisterList;
@ -193,7 +195,7 @@ bool NeuronExtension::loadModbusMap()
foreach (QString relativeFilePath, fileCoilList) { foreach (QString relativeFilePath, fileCoilList) {
QString absoluteFilePath = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation).last() + "/nymea/modbus" + relativeFilePath; 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); QFile *csvFile = new QFile(absoluteFilePath);
if (!csvFile->open(QIODevice::ReadOnly | QIODevice::Text)) { if (!csvFile->open(QIODevice::ReadOnly | QIODevice::Text)) {
qCWarning(dcUniPi()) << csvFile->errorString() << absoluteFilePath; qCWarning(dcUniPi()) << csvFile->errorString() << absoluteFilePath;
@ -205,7 +207,7 @@ bool NeuronExtension::loadModbusMap()
QString line = textStream->readLine(); QString line = textStream->readLine();
QStringList list = line.split(','); QStringList list = line.split(',');
if (list.length() <= 4) { if (list.length() <= 4) {
qCWarning(dcUniPi()) << "currupted CSV file:" << csvFile->fileName(); qCWarning(dcUniPi()) << "Neuron Extension: currupted CSV file:" << csvFile->fileName();
csvFile->deleteLater(); csvFile->deleteLater();
return false; return false;
} }
@ -256,7 +258,7 @@ bool NeuronExtension::loadModbusMap()
foreach (QString relativeFilePath, fileRegisterList) { foreach (QString relativeFilePath, fileRegisterList) {
QString absoluteFilePath = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation).last() + "/nymea/modbus" + relativeFilePath; 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); QFile *csvFile = new QFile(absoluteFilePath);
if (!csvFile->open(QIODevice::ReadOnly | QIODevice::Text)) { if (!csvFile->open(QIODevice::ReadOnly | QIODevice::Text)) {
qCWarning(dcUniPi()) << csvFile->errorString() << absoluteFilePath; qCWarning(dcUniPi()) << csvFile->errorString() << absoluteFilePath;
@ -268,13 +270,13 @@ bool NeuronExtension::loadModbusMap()
QString line = textStream->readLine(); QString line = textStream->readLine();
QStringList list = line.split(','); QStringList list = line.split(',');
if (list.length() <= 5) { if (list.length() <= 5) {
qCWarning(dcUniPi()) << "currupted CSV file:" << csvFile->fileName(); qCWarning(dcUniPi()) << "Neuron Extension: Currupted CSV file:" << csvFile->fileName();
csvFile->deleteLater(); csvFile->deleteLater();
return false; return false;
} }
if (list.last() == "Basic" && list[5].split(" ").length() > 3) { if (list.last() == "Basic" && list[5].split(" ").length() > 3) {
if (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(); csvFile->deleteLater();
return false; return false;
} }
@ -284,7 +286,7 @@ bool NeuronExtension::loadModbusMap()
qDebug(dcUniPi()) << "Found analog input register" << circuit << list[0].toInt(); qDebug(dcUniPi()) << "Found analog input register" << circuit << list[0].toInt();
} else if (list[5].contains("Analog Output Value", Qt::CaseSensitivity::CaseInsensitive)) { } else if (list[5].contains("Analog Output Value", Qt::CaseSensitivity::CaseInsensitive)) {
m_modbusAnalogOutputRegisters.insert(circuit, list[0].toInt()); 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(); const QModbusDataUnit unit = reply->result();
for (int i = 0; i < static_cast<int>(unit.valueCount()); i++) { for (int i = 0; i < static_cast<int>(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; modbusAddress = unit.startAddress() + i;
if (m_previousModbusRegisterValue.contains(modbusAddress)) { if (m_previousModbusRegisterValue.contains(modbusAddress)) {
@ -360,15 +362,15 @@ bool NeuronExtension::modbusReadRequest(const QModbusDataUnit &request)
break; break;
case QModbusDataUnit::RegisterType::DiscreteInputs: case QModbusDataUnit::RegisterType::DiscreteInputs:
case QModbusDataUnit::RegisterType::Invalid: case QModbusDataUnit::RegisterType::Invalid:
qCWarning(dcUniPi()) << "Invalide register type"; qCWarning(dcUniPi()) << "Neuron Extension: Invalide register type";
break; break;
} }
} }
} else if (reply->error() == QModbusDevice::ProtocolError) { } 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 { } else {
qCWarning(dcUniPi()) << "Read response error:" << reply->error(); qCWarning(dcUniPi()) << "Neuron Extension: Read response error:" << reply->error();
} }
}); });
QTimer::singleShot(m_responseTimeoutTime, reply, &QModbusReply::deleteLater); QTimer::singleShot(m_responseTimeoutTime, reply, &QModbusReply::deleteLater);
@ -377,7 +379,7 @@ bool NeuronExtension::modbusReadRequest(const QModbusDataUnit &request)
return false; return false;
} }
} else { } else {
qCWarning(dcUniPi()) << "Read error: " << m_modbusInterface->errorString(); qCWarning(dcUniPi()) << "Neuron Extension: Read error: " << m_modbusInterface->errorString();
return false; return false;
} }
return true; return true;
@ -414,7 +416,7 @@ bool NeuronExtension::modbusWriteRequest(const Request &request)
} }
} else { } else {
requestExecuted(request.id, false); 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()); emit requestError(request.id, reply->errorString());
} }
}); });
@ -424,7 +426,7 @@ bool NeuronExtension::modbusWriteRequest(const Request &request)
return false; return false;
} }
} else { } else {
qCWarning(dcUniPi()) << "Read error: " << m_modbusInterface->errorString(); qCWarning(dcUniPi()) << "Neuron Extension: Read error: " << m_modbusInterface->errorString();
return false; return false;
} }
return true; return true;