Rename Package to packet and fix connections

master
Simon Stürz 2022-02-21 09:36:07 +01:00
parent c8bf9dd471
commit b6e9d7a1a1
7 changed files with 52 additions and 52 deletions

View File

@ -257,11 +257,11 @@ void IntegrationPluginSma::setupThing(ThingSetupInfo *info)
return;
}
connect(meter, &SpeedwireMeter::reachableChanged, this, [=](bool reachable){
connect(meter, &SpeedwireMeter::reachableChanged, thing, [=](bool reachable){
thing->setStateValue(speedwireMeterConnectedStateTypeId, reachable);
});
connect(meter, &SpeedwireMeter::valuesUpdated, this, [=](){
connect(meter, &SpeedwireMeter::valuesUpdated, thing, [=](){
thing->setStateValue(speedwireMeterConnectedStateTypeId, true);
thing->setStateValue(speedwireMeterCurrentPowerStateTypeId, meter->currentPower());
thing->setStateValue(speedwireMeterCurrentPowerPhaseAStateTypeId, meter->currentPowerPhaseA());
@ -331,11 +331,11 @@ void IntegrationPluginSma::setupThing(ThingSetupInfo *info)
// Runtime connections
connect(inverter, &SpeedwireInverter::reachableChanged, this, [=](bool reachable){
connect(inverter, &SpeedwireInverter::reachableChanged, thing, [=](bool reachable){
thing->setStateValue(speedwireInverterConnectedStateTypeId, reachable);
});
connect(inverter, &SpeedwireInverter::valuesUpdated, this, [=](){
connect(inverter, &SpeedwireInverter::valuesUpdated, thing, [=](){
thing->setStateValue(speedwireInverterTotalEnergyProducedStateTypeId, inverter->totalEnergyProduced());
thing->setStateValue(speedwireInverterEnergyProducedTodayStateTypeId, inverter->todayEnergyProduced());
thing->setStateValue(speedwireInverterCurrentPowerStateTypeId, -inverter->totalAcPower());

View File

@ -95,7 +95,7 @@ public:
}
};
typedef struct InverterPackage {
typedef struct InverterPacket {
quint8 wordCount = 0;
quint8 control = 0;
quint16 destinationModelId = 0;
@ -108,7 +108,7 @@ public:
quint16 fragmentId = 0;
quint16 packetId = 0;
quint32 command = 0;
} InverterPackage;
} InverterPacket;
Speedwire() = default;
@ -259,23 +259,23 @@ public:
return header;
};
static Speedwire::InverterPackage parseInverterPackage(QDataStream &stream) {
static Speedwire::InverterPacket parseInverterPacket(QDataStream &stream) {
// Make sure the data stream is little endian
stream.setByteOrder(QDataStream::LittleEndian);
InverterPackage package;
stream >> package.wordCount;
stream >> package.control;
stream >> package.destinationModelId;
stream >> package.destinationSerialNumber;
stream >> package.destinationControl;
stream >> package.sourceModelId;
stream >> package.sourceSerialNumber;
stream >> package.sourceControl;
stream >> package.errorCode;
stream >> package.fragmentId;
stream >> package.packetId;
stream >> package.command;
return package;
InverterPacket packet;
stream >> packet.wordCount;
stream >> packet.control;
stream >> packet.destinationModelId;
stream >> packet.destinationSerialNumber;
stream >> packet.destinationControl;
stream >> packet.sourceModelId;
stream >> packet.sourceSerialNumber;
stream >> packet.sourceControl;
stream >> packet.errorCode;
stream >> packet.fragmentId;
stream >> packet.packetId;
stream >> packet.command;
return packet;
};
};
@ -285,14 +285,14 @@ inline QDebug operator<<(QDebug debug, const Speedwire::Header &header)
return debug.maybeSpace();
}
inline QDebug operator<<(QDebug debug, const Speedwire::InverterPackage &package)
inline QDebug operator<<(QDebug debug, const Speedwire::InverterPacket &packet)
{
debug.nospace() << "InverterPackage(" << package.sourceSerialNumber;
debug.nospace() << ", Model ID: " << package.sourceModelId;
debug.nospace() << ", command: " << package.command;
debug.nospace() << ", error: " << package.errorCode;
debug.nospace() << ", fragment: " << package.fragmentId;
debug.nospace() << ", package ID: " << package.fragmentId;
debug.nospace() << "InverterPacket(" << packet.sourceSerialNumber;
debug.nospace() << ", Model ID: " << packet.sourceModelId;
debug.nospace() << ", command: " << packet.command;
debug.nospace() << ", error: " << packet.errorCode;
debug.nospace() << ", fragment: " << packet.fragmentId;
debug.nospace() << ", packet ID: " << packet.fragmentId;
debug.nospace() << ")";
return debug.maybeSpace();
}

View File

@ -294,9 +294,9 @@ void SpeedwireDiscovery::processDatagram(const QHostAddress &senderAddress, quin
m_results[senderAddress].modelId = modelId;
m_results[senderAddress].serialNumber = serialNumber;
} else if (header.protocolId == Speedwire::ProtocolIdInverter) {
Speedwire::InverterPackage inverterPackage = Speedwire::parseInverterPackage(stream);
Speedwire::InverterPacket inverterPacket = Speedwire::parseInverterPacket(stream);
// Response from inverter 534d4100 0004 02a0 0000 0001 004e 0010 6065 1390 7d00 52be283a 0000 b500 c2c12e12 0000 0000 00000 1800102000000000000000000000003000000ff0000ecd5ff1f0100b500c2c12e1200000a000c00000000000000030000000101000000000000
qCDebug(dcSma()) << "SpeedwireDiscovery:" << inverterPackage;
qCDebug(dcSma()) << "SpeedwireDiscovery:" << inverterPacket;
if (!m_results.contains(senderAddress)) {
SpeedwireDiscoveryResult result;
@ -309,8 +309,8 @@ void SpeedwireDiscovery::processDatagram(const QHostAddress &senderAddress, quin
m_results[senderAddress].networkDeviceInfo = m_networkDeviceInfos.get(senderAddress);
}
m_results[senderAddress].modelId = inverterPackage.sourceModelId;
m_results[senderAddress].serialNumber = inverterPackage.sourceSerialNumber;
m_results[senderAddress].modelId = inverterPacket.sourceModelId;
m_results[senderAddress].serialNumber = inverterPacket.sourceSerialNumber;
} else {
qCWarning(dcSma()) << "SpeedwireDiscovery: Unhandled data received" << datagram.toHex();
return;

View File

@ -177,7 +177,7 @@ SpeedwireInverterReply *SpeedwireInverter::sendLoginRequest(const QString &passw
Speedwire::Command command = Speedwire::CommandLogin;
// The payload is little endian encoded
buildPackage(stream, command, packetId);
buildPacket(stream, command, packetId);
// User type: 7 = user, a = installer
stream << (loginAsUser ? static_cast<quint32>(0x00000007) : static_cast<quint32>(0x0000000a));
@ -279,7 +279,7 @@ SpeedwireInverterReply *SpeedwireInverter::sendSoftwareVersionRequest()
Speedwire::Command command = Speedwire::CommandQueryDevice;
// The payload is little endian encoded
buildPackage(stream, command, packetId);
buildPacket(stream, command, packetId);
// First and last word
stream << static_cast<quint32>(0x00823400);
@ -309,7 +309,7 @@ SpeedwireInverterReply *SpeedwireInverter::sendDeviceTypeRequest()
Speedwire::Command command = Speedwire::CommandQueryDevice;
// The payload is little endian encoded
buildPackage(stream, command, packetId);
buildPacket(stream, command, packetId);
// 2 words
stream << static_cast<quint32>(0x00821e00);
@ -354,7 +354,7 @@ void SpeedwireInverter::sendNextReply()
// Pick the next reply and send request
m_currentReply = m_replyQueue.dequeue();
qCDebug(dcSma()) << "Inverter: --> Sending" << m_currentReply->request().command() << "package ID:" << m_currentReply->request().packetId();
qCDebug(dcSma()) << "Inverter: --> Sending" << m_currentReply->request().command() << "packet ID:" << m_currentReply->request().packetId();
m_interface->sendData(m_currentReply->request().requestData());
m_currentReply->startWaiting();
}
@ -403,9 +403,9 @@ void SpeedwireInverter::buildDefaultHeader(QDataStream &stream, quint16 payloadS
stream << control;
}
void SpeedwireInverter::buildPackage(QDataStream &stream, quint32 command, quint16 packetId)
void SpeedwireInverter::buildPacket(QDataStream &stream, quint32 command, quint16 packetId)
{
// ========= package header (little endian)
// ========= packet header (little endian)
// == 7a01842a71b30001
// 7a01 : destination model id
@ -492,7 +492,7 @@ SpeedwireInverterReply *SpeedwireInverter::sendQueryRequest(Speedwire::Command c
quint16 packetId = m_packetId++ | 0x8000;
// The payload is little endian encoded
buildPackage(stream, command, packetId);
buildPacket(stream, command, packetId);
// First and second word
stream << firstWord;
@ -995,19 +995,19 @@ void SpeedwireInverter::processData(const QByteArray &data)
return;
}
Speedwire::InverterPackage package = Speedwire::parseInverterPackage(stream);
if (package.sourceModelId != m_modelId || package.sourceSerialNumber != m_serialNumber) {
qCWarning(dcSma()) << "Inverter: Received datagram from different inverter" << package.sourceSerialNumber << "Ignoring data...";
Speedwire::InverterPacket packet = Speedwire::parseInverterPacket(stream);
if (packet.sourceModelId != m_modelId || packet.sourceSerialNumber != m_serialNumber) {
qCWarning(dcSma()) << "Inverter: Received datagram from different inverter" << packet.sourceSerialNumber << "Ignoring data...";
return;
}
qCDebug(dcSma()) << "Inverter: <-- Received" << static_cast<Speedwire::Command>(package.command) << "Packet ID:" << package.packetId;
qCDebug(dcSma()) << "Inverter: <-- Received" << static_cast<Speedwire::Command>(packet.command) << "Packet ID:" << packet.packetId;
//qCDebug(dcSma()) << "Inverter:" << data.toHex();
if (m_currentReply && m_currentReply->request().packetId() == package.packetId) {
if (m_currentReply && m_currentReply->request().packetId() == packet.packetId) {
qCDebug(dcSma()) << "Inverter: Received response for current reply" << static_cast<Speedwire::Command>(m_currentReply->request().command()) << "Packet ID:" << m_currentReply->request().packetId();
m_currentReply->m_responseData = data;
m_currentReply->m_responseHeader = header;
m_currentReply->m_responsePackage = package;
m_currentReply->m_responsePacket = packet;
// Set the payload
while (!stream.atEnd()) {
quint8 byte;
@ -1015,7 +1015,7 @@ void SpeedwireInverter::processData(const QByteArray &data)
m_currentReply->m_responsePayload.append(byte);
}
if (package.errorCode != 0) {
if (packet.errorCode != 0) {
m_currentReply->finishReply(SpeedwireInverterReply::ErrorInverterError);
} else {
m_currentReply->finishReply(SpeedwireInverterReply::ErrorNoError);
@ -1027,7 +1027,7 @@ void SpeedwireInverter::processData(const QByteArray &data)
qCWarning(dcSma()) << "Inverter: Received unexpected data: not waiting for any response.";
}
qCWarning(dcSma()) << "Inverter:" << header;
qCWarning(dcSma()) << "Inverter:" << package;
qCWarning(dcSma()) << "Inverter:" << packet;
qCWarning(dcSma()) << "Inverter:" << data.toHex();
}
}

View File

@ -169,7 +169,7 @@ private:
// Request builder function
void buildDefaultHeader(QDataStream &stream, quint16 payloadSize = 38, quint8 control = 0xa0);
void buildPackage(QDataStream &stream, quint32 command, quint16 packetId);
void buildPacket(QDataStream &stream, quint32 command, quint16 packetId);
// Send generic request for internal use
SpeedwireInverterReply *sendQueryRequest(Speedwire::Command command, quint32 firstWord, quint32 secondWord);

View File

@ -62,9 +62,9 @@ Speedwire::Header SpeedwireInverterReply::responseHeader() const
return m_responseHeader;
}
Speedwire::InverterPackage SpeedwireInverterReply::responsePackage() const
Speedwire::InverterPacket SpeedwireInverterReply::responsePacket() const
{
return m_responsePackage;
return m_responsePacket;
}
QByteArray SpeedwireInverterReply::responsePayload() const

View File

@ -58,7 +58,7 @@ public:
// Response
QByteArray responseData() const;
Speedwire::Header responseHeader() const;
Speedwire::InverterPackage responsePackage() const;
Speedwire::InverterPacket responsePacket() const;
QByteArray responsePayload() const;
signals:
@ -77,7 +77,7 @@ private:
QByteArray m_responseData;
Speedwire::Header m_responseHeader;
Speedwire::InverterPackage m_responsePackage;
Speedwire::InverterPacket m_responsePacket;
QByteArray m_responsePayload;