diff --git a/libnymea-sunspec/models/sunspecflowbatterymodel.cpp b/libnymea-sunspec/models/sunspecflowbatterymodel.cpp index 85161f3..57e8efa 100644 --- a/libnymea-sunspec/models/sunspecflowbatterymodel.cpp +++ b/libnymea-sunspec/models/sunspecflowbatterymodel.cpp @@ -172,12 +172,14 @@ void SunSpecFlowBatteryModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspecflowbatterymodel.h b/libnymea-sunspec/models/sunspecflowbatterymodel.h index 5dd3b15..a446136 100644 --- a/libnymea-sunspec/models/sunspecflowbatterymodel.h +++ b/libnymea-sunspec/models/sunspecflowbatterymodel.h @@ -44,7 +44,7 @@ class SunSpecFlowBatteryModelRepeatingBlock : public SunSpecModelRepeatingBlock Q_OBJECT public: - explicit SunSpecFlowBatteryModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecFlowBatteryModel *parent); + explicit SunSpecFlowBatteryModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecFlowBatteryModel *parent = nullptr); ~SunSpecFlowBatteryModelRepeatingBlock() override = default; SunSpecFlowBatteryModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspecflowbatterymodulemodel.cpp b/libnymea-sunspec/models/sunspecflowbatterymodulemodel.cpp index 52abef7..63f9ece 100644 --- a/libnymea-sunspec/models/sunspecflowbatterymodulemodel.cpp +++ b/libnymea-sunspec/models/sunspecflowbatterymodulemodel.cpp @@ -172,12 +172,14 @@ void SunSpecFlowBatteryModuleModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspecflowbatterymodulemodel.h b/libnymea-sunspec/models/sunspecflowbatterymodulemodel.h index 3433a7b..4a1a969 100644 --- a/libnymea-sunspec/models/sunspecflowbatterymodulemodel.h +++ b/libnymea-sunspec/models/sunspecflowbatterymodulemodel.h @@ -44,7 +44,7 @@ class SunSpecFlowBatteryModuleModelRepeatingBlock : public SunSpecModelRepeating Q_OBJECT public: - explicit SunSpecFlowBatteryModuleModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecFlowBatteryModuleModel *parent); + explicit SunSpecFlowBatteryModuleModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecFlowBatteryModuleModel *parent = nullptr); ~SunSpecFlowBatteryModuleModelRepeatingBlock() override = default; SunSpecFlowBatteryModuleModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspecflowbatterystackmodel.cpp b/libnymea-sunspec/models/sunspecflowbatterystackmodel.cpp index 8e00796..d507e46 100644 --- a/libnymea-sunspec/models/sunspecflowbatterystackmodel.cpp +++ b/libnymea-sunspec/models/sunspecflowbatterystackmodel.cpp @@ -172,12 +172,14 @@ void SunSpecFlowBatteryStackModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspecflowbatterystackmodel.h b/libnymea-sunspec/models/sunspecflowbatterystackmodel.h index fb4ce83..bfb0faf 100644 --- a/libnymea-sunspec/models/sunspecflowbatterystackmodel.h +++ b/libnymea-sunspec/models/sunspecflowbatterystackmodel.h @@ -44,7 +44,7 @@ class SunSpecFlowBatteryStackModelRepeatingBlock : public SunSpecModelRepeatingB Q_OBJECT public: - explicit SunSpecFlowBatteryStackModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecFlowBatteryStackModel *parent); + explicit SunSpecFlowBatteryStackModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecFlowBatteryStackModel *parent = nullptr); ~SunSpecFlowBatteryStackModelRepeatingBlock() override = default; SunSpecFlowBatteryStackModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspecflowbatterystringmodel.cpp b/libnymea-sunspec/models/sunspecflowbatterystringmodel.cpp index 2b3e240..73a55da 100644 --- a/libnymea-sunspec/models/sunspecflowbatterystringmodel.cpp +++ b/libnymea-sunspec/models/sunspecflowbatterystringmodel.cpp @@ -1129,12 +1129,14 @@ void SunSpecFlowBatteryStringModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspecflowbatterystringmodel.h b/libnymea-sunspec/models/sunspecflowbatterystringmodel.h index d326ab0..b649417 100644 --- a/libnymea-sunspec/models/sunspecflowbatterystringmodel.h +++ b/libnymea-sunspec/models/sunspecflowbatterystringmodel.h @@ -167,7 +167,7 @@ public: Q_DECLARE_FLAGS(Modevt2Flags, Modevt2) Q_FLAG(Modevt2) - explicit SunSpecFlowBatteryStringModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecFlowBatteryStringModel *parent); + explicit SunSpecFlowBatteryStringModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecFlowBatteryStringModel *parent = nullptr); ~SunSpecFlowBatteryStringModelRepeatingBlock() override = default; SunSpecFlowBatteryStringModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspecfreqwattmodel.cpp b/libnymea-sunspec/models/sunspecfreqwattmodel.cpp index d24c7f1..d8e180c 100644 --- a/libnymea-sunspec/models/sunspecfreqwattmodel.cpp +++ b/libnymea-sunspec/models/sunspecfreqwattmodel.cpp @@ -2079,12 +2079,14 @@ void SunSpecFreqWattModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspecfreqwattmodel.h b/libnymea-sunspec/models/sunspecfreqwattmodel.h index 447b3ab..9cbf3e3 100644 --- a/libnymea-sunspec/models/sunspecfreqwattmodel.h +++ b/libnymea-sunspec/models/sunspecfreqwattmodel.h @@ -50,7 +50,7 @@ public: }; Q_ENUM(Readonly) - explicit SunSpecFreqWattModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecFreqWattModel *parent); + explicit SunSpecFreqWattModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecFreqWattModel *parent = nullptr); ~SunSpecFreqWattModelRepeatingBlock() override = default; SunSpecFreqWattModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspechfrtcmodel.cpp b/libnymea-sunspec/models/sunspechfrtcmodel.cpp index 091f694..76b846d 100644 --- a/libnymea-sunspec/models/sunspechfrtcmodel.cpp +++ b/libnymea-sunspec/models/sunspechfrtcmodel.cpp @@ -1809,12 +1809,14 @@ void SunSpecHfrtcModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspechfrtcmodel.h b/libnymea-sunspec/models/sunspechfrtcmodel.h index 66b9564..f6bf4b9 100644 --- a/libnymea-sunspec/models/sunspechfrtcmodel.h +++ b/libnymea-sunspec/models/sunspechfrtcmodel.h @@ -50,7 +50,7 @@ public: }; Q_ENUM(Readonly) - explicit SunSpecHfrtcModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecHfrtcModel *parent); + explicit SunSpecHfrtcModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecHfrtcModel *parent = nullptr); ~SunSpecHfrtcModelRepeatingBlock() override = default; SunSpecHfrtcModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspechfrtmodel.cpp b/libnymea-sunspec/models/sunspechfrtmodel.cpp index 60f54df..6117cf8 100644 --- a/libnymea-sunspec/models/sunspechfrtmodel.cpp +++ b/libnymea-sunspec/models/sunspechfrtmodel.cpp @@ -1809,12 +1809,14 @@ void SunSpecHfrtModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspechfrtmodel.h b/libnymea-sunspec/models/sunspechfrtmodel.h index d4d9a61..0785e7c 100644 --- a/libnymea-sunspec/models/sunspechfrtmodel.h +++ b/libnymea-sunspec/models/sunspechfrtmodel.h @@ -50,7 +50,7 @@ public: }; Q_ENUM(Readonly) - explicit SunSpecHfrtModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecHfrtModel *parent); + explicit SunSpecHfrtModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecHfrtModel *parent = nullptr); ~SunSpecHfrtModelRepeatingBlock() override = default; SunSpecHfrtModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspechfrtxmodel.cpp b/libnymea-sunspec/models/sunspechfrtxmodel.cpp index cccb3ba..0af7dfb 100644 --- a/libnymea-sunspec/models/sunspechfrtxmodel.cpp +++ b/libnymea-sunspec/models/sunspechfrtxmodel.cpp @@ -1810,12 +1810,14 @@ void SunSpecHfrtxModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspechfrtxmodel.h b/libnymea-sunspec/models/sunspechfrtxmodel.h index 8a3f9d8..0706837 100644 --- a/libnymea-sunspec/models/sunspechfrtxmodel.h +++ b/libnymea-sunspec/models/sunspechfrtxmodel.h @@ -50,7 +50,7 @@ public: }; Q_ENUM(Readonly) - explicit SunSpecHfrtxModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecHfrtxModel *parent); + explicit SunSpecHfrtxModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecHfrtxModel *parent = nullptr); ~SunSpecHfrtxModelRepeatingBlock() override = default; SunSpecHfrtxModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspechvrtcmodel.cpp b/libnymea-sunspec/models/sunspechvrtcmodel.cpp index 4e256c6..7e0de8e 100644 --- a/libnymea-sunspec/models/sunspechvrtcmodel.cpp +++ b/libnymea-sunspec/models/sunspechvrtcmodel.cpp @@ -1809,12 +1809,14 @@ void SunSpecHvrtcModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspechvrtcmodel.h b/libnymea-sunspec/models/sunspechvrtcmodel.h index 66c1d63..adbc3f3 100644 --- a/libnymea-sunspec/models/sunspechvrtcmodel.h +++ b/libnymea-sunspec/models/sunspechvrtcmodel.h @@ -50,7 +50,7 @@ public: }; Q_ENUM(Readonly) - explicit SunSpecHvrtcModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecHvrtcModel *parent); + explicit SunSpecHvrtcModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecHvrtcModel *parent = nullptr); ~SunSpecHvrtcModelRepeatingBlock() override = default; SunSpecHvrtcModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspechvrtmodel.cpp b/libnymea-sunspec/models/sunspechvrtmodel.cpp index 20c5c6c..26cafca 100644 --- a/libnymea-sunspec/models/sunspechvrtmodel.cpp +++ b/libnymea-sunspec/models/sunspechvrtmodel.cpp @@ -1809,12 +1809,14 @@ void SunSpecHvrtModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspechvrtmodel.h b/libnymea-sunspec/models/sunspechvrtmodel.h index 7b9c165..e86472c 100644 --- a/libnymea-sunspec/models/sunspechvrtmodel.h +++ b/libnymea-sunspec/models/sunspechvrtmodel.h @@ -50,7 +50,7 @@ public: }; Q_ENUM(Readonly) - explicit SunSpecHvrtModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecHvrtModel *parent); + explicit SunSpecHvrtModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecHvrtModel *parent = nullptr); ~SunSpecHvrtModelRepeatingBlock() override = default; SunSpecHvrtModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspechvrtxmodel.cpp b/libnymea-sunspec/models/sunspechvrtxmodel.cpp index 48bd4a6..3349830 100644 --- a/libnymea-sunspec/models/sunspechvrtxmodel.cpp +++ b/libnymea-sunspec/models/sunspechvrtxmodel.cpp @@ -1810,12 +1810,14 @@ void SunSpecHvrtxModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspechvrtxmodel.h b/libnymea-sunspec/models/sunspechvrtxmodel.h index a08cc61..7bd6b1f 100644 --- a/libnymea-sunspec/models/sunspechvrtxmodel.h +++ b/libnymea-sunspec/models/sunspechvrtxmodel.h @@ -50,7 +50,7 @@ public: }; Q_ENUM(Readonly) - explicit SunSpecHvrtxModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecHvrtxModel *parent); + explicit SunSpecHvrtxModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecHvrtxModel *parent = nullptr); ~SunSpecHvrtxModelRepeatingBlock() override = default; SunSpecHvrtxModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspecirradiancemodel.cpp b/libnymea-sunspec/models/sunspecirradiancemodel.cpp index f886367..e0bc1b9 100644 --- a/libnymea-sunspec/models/sunspecirradiancemodel.cpp +++ b/libnymea-sunspec/models/sunspecirradiancemodel.cpp @@ -230,12 +230,14 @@ void SunSpecIrradianceModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspecirradiancemodel.h b/libnymea-sunspec/models/sunspecirradiancemodel.h index 5e148a6..5557d02 100644 --- a/libnymea-sunspec/models/sunspecirradiancemodel.h +++ b/libnymea-sunspec/models/sunspecirradiancemodel.h @@ -44,7 +44,7 @@ class SunSpecIrradianceModelRepeatingBlock : public SunSpecModelRepeatingBlock Q_OBJECT public: - explicit SunSpecIrradianceModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecIrradianceModel *parent); + explicit SunSpecIrradianceModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecIrradianceModel *parent = nullptr); ~SunSpecIrradianceModelRepeatingBlock() override = default; SunSpecIrradianceModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspeclfrtcmodel.cpp b/libnymea-sunspec/models/sunspeclfrtcmodel.cpp index 2d1f7d8..1d514f8 100644 --- a/libnymea-sunspec/models/sunspeclfrtcmodel.cpp +++ b/libnymea-sunspec/models/sunspeclfrtcmodel.cpp @@ -1809,12 +1809,14 @@ void SunSpecLfrtcModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspeclfrtcmodel.h b/libnymea-sunspec/models/sunspeclfrtcmodel.h index ebdf2ba..5f6a353 100644 --- a/libnymea-sunspec/models/sunspeclfrtcmodel.h +++ b/libnymea-sunspec/models/sunspeclfrtcmodel.h @@ -50,7 +50,7 @@ public: }; Q_ENUM(Readonly) - explicit SunSpecLfrtcModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecLfrtcModel *parent); + explicit SunSpecLfrtcModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecLfrtcModel *parent = nullptr); ~SunSpecLfrtcModelRepeatingBlock() override = default; SunSpecLfrtcModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspeclfrtmodel.cpp b/libnymea-sunspec/models/sunspeclfrtmodel.cpp index 2673eca..9b384f2 100644 --- a/libnymea-sunspec/models/sunspeclfrtmodel.cpp +++ b/libnymea-sunspec/models/sunspeclfrtmodel.cpp @@ -1809,12 +1809,14 @@ void SunSpecLfrtModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspeclfrtmodel.h b/libnymea-sunspec/models/sunspeclfrtmodel.h index 67795fd..c495925 100644 --- a/libnymea-sunspec/models/sunspeclfrtmodel.h +++ b/libnymea-sunspec/models/sunspeclfrtmodel.h @@ -50,7 +50,7 @@ public: }; Q_ENUM(Readonly) - explicit SunSpecLfrtModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecLfrtModel *parent); + explicit SunSpecLfrtModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecLfrtModel *parent = nullptr); ~SunSpecLfrtModelRepeatingBlock() override = default; SunSpecLfrtModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspeclfrtxmodel.cpp b/libnymea-sunspec/models/sunspeclfrtxmodel.cpp index 805b1a7..5a9938d 100644 --- a/libnymea-sunspec/models/sunspeclfrtxmodel.cpp +++ b/libnymea-sunspec/models/sunspeclfrtxmodel.cpp @@ -1810,12 +1810,14 @@ void SunSpecLfrtxModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspeclfrtxmodel.h b/libnymea-sunspec/models/sunspeclfrtxmodel.h index 3558675..ced07e7 100644 --- a/libnymea-sunspec/models/sunspeclfrtxmodel.h +++ b/libnymea-sunspec/models/sunspeclfrtxmodel.h @@ -50,7 +50,7 @@ public: }; Q_ENUM(Readonly) - explicit SunSpecLfrtxModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecLfrtxModel *parent); + explicit SunSpecLfrtxModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecLfrtxModel *parent = nullptr); ~SunSpecLfrtxModelRepeatingBlock() override = default; SunSpecLfrtxModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspeclithiumionbankmodel.cpp b/libnymea-sunspec/models/sunspeclithiumionbankmodel.cpp index 08e60bf..d5dff6d 100644 --- a/libnymea-sunspec/models/sunspeclithiumionbankmodel.cpp +++ b/libnymea-sunspec/models/sunspeclithiumionbankmodel.cpp @@ -1164,12 +1164,14 @@ void SunSpecLithiumIonBankModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspeclithiumionbankmodel.h b/libnymea-sunspec/models/sunspeclithiumionbankmodel.h index 772e196..5ba9a04 100644 --- a/libnymea-sunspec/models/sunspeclithiumionbankmodel.h +++ b/libnymea-sunspec/models/sunspeclithiumionbankmodel.h @@ -156,7 +156,7 @@ public: Q_DECLARE_FLAGS(Strevt1Flags, Strevt1) Q_FLAG(Strevt1) - explicit SunSpecLithiumIonBankModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecLithiumIonBankModel *parent); + explicit SunSpecLithiumIonBankModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecLithiumIonBankModel *parent = nullptr); ~SunSpecLithiumIonBankModelRepeatingBlock() override = default; SunSpecLithiumIonBankModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspeclithiumionmodulemodel.cpp b/libnymea-sunspec/models/sunspeclithiumionmodulemodel.cpp index ea2a061..aa9ec20 100644 --- a/libnymea-sunspec/models/sunspeclithiumionmodulemodel.cpp +++ b/libnymea-sunspec/models/sunspeclithiumionmodulemodel.cpp @@ -710,12 +710,14 @@ void SunSpecLithiumIonModuleModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspeclithiumionmodulemodel.h b/libnymea-sunspec/models/sunspeclithiumionmodulemodel.h index 3474887..79f9440 100644 --- a/libnymea-sunspec/models/sunspeclithiumionmodulemodel.h +++ b/libnymea-sunspec/models/sunspeclithiumionmodulemodel.h @@ -50,7 +50,7 @@ public: Q_DECLARE_FLAGS(CellstFlags, Cellst) Q_FLAG(Cellst) - explicit SunSpecLithiumIonModuleModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecLithiumIonModuleModel *parent); + explicit SunSpecLithiumIonModuleModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecLithiumIonModuleModel *parent = nullptr); ~SunSpecLithiumIonModuleModelRepeatingBlock() override = default; SunSpecLithiumIonModuleModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspeclithiumionstringmodel.cpp b/libnymea-sunspec/models/sunspeclithiumionstringmodel.cpp index 9c48ceb..b3e1781 100644 --- a/libnymea-sunspec/models/sunspeclithiumionstringmodel.cpp +++ b/libnymea-sunspec/models/sunspeclithiumionstringmodel.cpp @@ -1242,12 +1242,14 @@ void SunSpecLithiumIonStringModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspeclithiumionstringmodel.h b/libnymea-sunspec/models/sunspeclithiumionstringmodel.h index 584ddba..9337c6a 100644 --- a/libnymea-sunspec/models/sunspeclithiumionstringmodel.h +++ b/libnymea-sunspec/models/sunspeclithiumionstringmodel.h @@ -44,7 +44,7 @@ class SunSpecLithiumIonStringModelRepeatingBlock : public SunSpecModelRepeatingB Q_OBJECT public: - explicit SunSpecLithiumIonStringModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecLithiumIonStringModel *parent); + explicit SunSpecLithiumIonStringModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecLithiumIonStringModel *parent = nullptr); ~SunSpecLithiumIonStringModelRepeatingBlock() override = default; SunSpecLithiumIonStringModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspeclvrtcmodel.cpp b/libnymea-sunspec/models/sunspeclvrtcmodel.cpp index 9315452..87d00c2 100644 --- a/libnymea-sunspec/models/sunspeclvrtcmodel.cpp +++ b/libnymea-sunspec/models/sunspeclvrtcmodel.cpp @@ -1809,12 +1809,14 @@ void SunSpecLvrtcModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspeclvrtcmodel.h b/libnymea-sunspec/models/sunspeclvrtcmodel.h index 2b1399e..202111e 100644 --- a/libnymea-sunspec/models/sunspeclvrtcmodel.h +++ b/libnymea-sunspec/models/sunspeclvrtcmodel.h @@ -50,7 +50,7 @@ public: }; Q_ENUM(Readonly) - explicit SunSpecLvrtcModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecLvrtcModel *parent); + explicit SunSpecLvrtcModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecLvrtcModel *parent = nullptr); ~SunSpecLvrtcModelRepeatingBlock() override = default; SunSpecLvrtcModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspeclvrtmodel.cpp b/libnymea-sunspec/models/sunspeclvrtmodel.cpp index 85b1fea..cd7cb4c 100644 --- a/libnymea-sunspec/models/sunspeclvrtmodel.cpp +++ b/libnymea-sunspec/models/sunspeclvrtmodel.cpp @@ -1809,12 +1809,14 @@ void SunSpecLvrtModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspeclvrtmodel.h b/libnymea-sunspec/models/sunspeclvrtmodel.h index 2539472..0419f60 100644 --- a/libnymea-sunspec/models/sunspeclvrtmodel.h +++ b/libnymea-sunspec/models/sunspeclvrtmodel.h @@ -50,7 +50,7 @@ public: }; Q_ENUM(Readonly) - explicit SunSpecLvrtModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecLvrtModel *parent); + explicit SunSpecLvrtModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecLvrtModel *parent = nullptr); ~SunSpecLvrtModelRepeatingBlock() override = default; SunSpecLvrtModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspeclvrtxmodel.cpp b/libnymea-sunspec/models/sunspeclvrtxmodel.cpp index 3db7ad0..81f4304 100644 --- a/libnymea-sunspec/models/sunspeclvrtxmodel.cpp +++ b/libnymea-sunspec/models/sunspeclvrtxmodel.cpp @@ -1810,12 +1810,14 @@ void SunSpecLvrtxModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspeclvrtxmodel.h b/libnymea-sunspec/models/sunspeclvrtxmodel.h index c42038f..2617c62 100644 --- a/libnymea-sunspec/models/sunspeclvrtxmodel.h +++ b/libnymea-sunspec/models/sunspeclvrtxmodel.h @@ -50,7 +50,7 @@ public: }; Q_ENUM(Readonly) - explicit SunSpecLvrtxModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecLvrtxModel *parent); + explicit SunSpecLvrtxModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecLvrtxModel *parent = nullptr); ~SunSpecLvrtxModelRepeatingBlock() override = default; SunSpecLvrtxModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspecmpptmodel.cpp b/libnymea-sunspec/models/sunspecmpptmodel.cpp index 3948683..460f5e6 100644 --- a/libnymea-sunspec/models/sunspecmpptmodel.cpp +++ b/libnymea-sunspec/models/sunspecmpptmodel.cpp @@ -448,12 +448,14 @@ void SunSpecMpptModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspecmpptmodel.h b/libnymea-sunspec/models/sunspecmpptmodel.h index 4273021..07f8b2b 100644 --- a/libnymea-sunspec/models/sunspecmpptmodel.h +++ b/libnymea-sunspec/models/sunspecmpptmodel.h @@ -86,7 +86,7 @@ public: Q_DECLARE_FLAGS(DcevtFlags, Dcevt) Q_FLAG(Dcevt) - explicit SunSpecMpptModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecMpptModel *parent); + explicit SunSpecMpptModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecMpptModel *parent = nullptr); ~SunSpecMpptModelRepeatingBlock() override = default; SunSpecMpptModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspecschedulemodel.cpp b/libnymea-sunspec/models/sunspecschedulemodel.cpp index 7ca75c3..a1ae092 100644 --- a/libnymea-sunspec/models/sunspecschedulemodel.cpp +++ b/libnymea-sunspec/models/sunspecschedulemodel.cpp @@ -1248,12 +1248,14 @@ void SunSpecScheduleModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspecschedulemodel.h b/libnymea-sunspec/models/sunspecschedulemodel.h index 4b5f509..dbaa0b2 100644 --- a/libnymea-sunspec/models/sunspecschedulemodel.h +++ b/libnymea-sunspec/models/sunspecschedulemodel.h @@ -83,7 +83,7 @@ public: }; Q_ENUM(Ytyp) - explicit SunSpecScheduleModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecScheduleModel *parent); + explicit SunSpecScheduleModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecScheduleModel *parent = nullptr); ~SunSpecScheduleModelRepeatingBlock() override = default; SunSpecScheduleModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspecsecureacmeterselectedreadingsmodel.cpp b/libnymea-sunspec/models/sunspecsecureacmeterselectedreadingsmodel.cpp index 1e05764..6ea5e79 100644 --- a/libnymea-sunspec/models/sunspecsecureacmeterselectedreadingsmodel.cpp +++ b/libnymea-sunspec/models/sunspecsecureacmeterselectedreadingsmodel.cpp @@ -795,12 +795,14 @@ void SunSpecSecureAcMeterSelectedReadingsModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspecsecureacmeterselectedreadingsmodel.h b/libnymea-sunspec/models/sunspecsecureacmeterselectedreadingsmodel.h index 2eb3185..2e9a00c 100644 --- a/libnymea-sunspec/models/sunspecsecureacmeterselectedreadingsmodel.h +++ b/libnymea-sunspec/models/sunspecsecureacmeterselectedreadingsmodel.h @@ -44,7 +44,7 @@ class SunSpecSecureAcMeterSelectedReadingsModelRepeatingBlock : public SunSpecMo Q_OBJECT public: - explicit SunSpecSecureAcMeterSelectedReadingsModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecSecureAcMeterSelectedReadingsModel *parent); + explicit SunSpecSecureAcMeterSelectedReadingsModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecSecureAcMeterSelectedReadingsModel *parent = nullptr); ~SunSpecSecureAcMeterSelectedReadingsModelRepeatingBlock() override = default; SunSpecSecureAcMeterSelectedReadingsModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspecstringcombineradvancedmodel.cpp b/libnymea-sunspec/models/sunspecstringcombineradvancedmodel.cpp index 9480436..18d8274 100644 --- a/libnymea-sunspec/models/sunspecstringcombineradvancedmodel.cpp +++ b/libnymea-sunspec/models/sunspecstringcombineradvancedmodel.cpp @@ -748,12 +748,14 @@ void SunSpecStringCombinerAdvancedModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspecstringcombineradvancedmodel.h b/libnymea-sunspec/models/sunspecstringcombineradvancedmodel.h index 6fc3f80..ec72cc2 100644 --- a/libnymea-sunspec/models/sunspecstringcombineradvancedmodel.h +++ b/libnymea-sunspec/models/sunspecstringcombineradvancedmodel.h @@ -68,7 +68,7 @@ public: Q_DECLARE_FLAGS(InevtFlags, Inevt) Q_FLAG(Inevt) - explicit SunSpecStringCombinerAdvancedModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecStringCombinerAdvancedModel *parent); + explicit SunSpecStringCombinerAdvancedModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecStringCombinerAdvancedModel *parent = nullptr); ~SunSpecStringCombinerAdvancedModelRepeatingBlock() override = default; SunSpecStringCombinerAdvancedModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspecstringcombinercurrentmodel.cpp b/libnymea-sunspec/models/sunspecstringcombinercurrentmodel.cpp index 28618d0..22836c5 100644 --- a/libnymea-sunspec/models/sunspecstringcombinercurrentmodel.cpp +++ b/libnymea-sunspec/models/sunspecstringcombinercurrentmodel.cpp @@ -492,12 +492,14 @@ void SunSpecStringCombinerCurrentModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspecstringcombinercurrentmodel.h b/libnymea-sunspec/models/sunspecstringcombinercurrentmodel.h index ec189da..a4ab409 100644 --- a/libnymea-sunspec/models/sunspecstringcombinercurrentmodel.h +++ b/libnymea-sunspec/models/sunspecstringcombinercurrentmodel.h @@ -68,7 +68,7 @@ public: Q_DECLARE_FLAGS(InevtFlags, Inevt) Q_FLAG(Inevt) - explicit SunSpecStringCombinerCurrentModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecStringCombinerCurrentModel *parent); + explicit SunSpecStringCombinerCurrentModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecStringCombinerCurrentModel *parent = nullptr); ~SunSpecStringCombinerCurrentModelRepeatingBlock() override = default; SunSpecStringCombinerCurrentModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspectrackercontrollermodel.cpp b/libnymea-sunspec/models/sunspectrackercontrollermodel.cpp index 359942c..e21e633 100644 --- a/libnymea-sunspec/models/sunspectrackercontrollermodel.cpp +++ b/libnymea-sunspec/models/sunspectrackercontrollermodel.cpp @@ -606,12 +606,14 @@ void SunSpecTrackerControllerModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspectrackercontrollermodel.h b/libnymea-sunspec/models/sunspectrackercontrollermodel.h index 232f98b..8840fcc 100644 --- a/libnymea-sunspec/models/sunspectrackercontrollermodel.h +++ b/libnymea-sunspec/models/sunspectrackercontrollermodel.h @@ -59,7 +59,7 @@ public: Q_DECLARE_FLAGS(AlmFlags, Alm) Q_FLAG(Alm) - explicit SunSpecTrackerControllerModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecTrackerControllerModel *parent); + explicit SunSpecTrackerControllerModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecTrackerControllerModel *parent = nullptr); ~SunSpecTrackerControllerModelRepeatingBlock() override = default; SunSpecTrackerControllerModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspecvoltvarmodel.cpp b/libnymea-sunspec/models/sunspecvoltvarmodel.cpp index f512bf8..a57fb25 100644 --- a/libnymea-sunspec/models/sunspecvoltvarmodel.cpp +++ b/libnymea-sunspec/models/sunspecvoltvarmodel.cpp @@ -1922,12 +1922,14 @@ void SunSpecVoltVarModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspecvoltvarmodel.h b/libnymea-sunspec/models/sunspecvoltvarmodel.h index 7a7b6e7..d17ff3e 100644 --- a/libnymea-sunspec/models/sunspecvoltvarmodel.h +++ b/libnymea-sunspec/models/sunspecvoltvarmodel.h @@ -57,7 +57,7 @@ public: }; Q_ENUM(Readonly) - explicit SunSpecVoltVarModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecVoltVarModel *parent); + explicit SunSpecVoltVarModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecVoltVarModel *parent = nullptr); ~SunSpecVoltVarModelRepeatingBlock() override = default; SunSpecVoltVarModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspecvoltwattmodel.cpp b/libnymea-sunspec/models/sunspecvoltwattmodel.cpp index a549d0e..353aea8 100644 --- a/libnymea-sunspec/models/sunspecvoltwattmodel.cpp +++ b/libnymea-sunspec/models/sunspecvoltwattmodel.cpp @@ -1944,12 +1944,14 @@ void SunSpecVoltWattModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspecvoltwattmodel.h b/libnymea-sunspec/models/sunspecvoltwattmodel.h index a25209f..53aaa89 100644 --- a/libnymea-sunspec/models/sunspecvoltwattmodel.h +++ b/libnymea-sunspec/models/sunspecvoltwattmodel.h @@ -56,7 +56,7 @@ public: }; Q_ENUM(Readonly) - explicit SunSpecVoltWattModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecVoltWattModel *parent); + explicit SunSpecVoltWattModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecVoltWattModel *parent = nullptr); ~SunSpecVoltWattModelRepeatingBlock() override = default; SunSpecVoltWattModel *parentModel() const; diff --git a/libnymea-sunspec/models/sunspecwattpfmodel.cpp b/libnymea-sunspec/models/sunspecwattpfmodel.cpp index 31b03f4..a32ac1f 100644 --- a/libnymea-sunspec/models/sunspecwattpfmodel.cpp +++ b/libnymea-sunspec/models/sunspecwattpfmodel.cpp @@ -1928,12 +1928,14 @@ void SunSpecWattPfModel::setupRepeatingBlocks() const auto headerLength = 2; const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength; if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) { - qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" - << repeatingBlocksDataSize - << "(repeating block size:" - << m_repeatingBlockLength - << "), extra bytes:" - << repeatingBlocksDataSize % m_repeatingBlockLength; + qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:" + << repeatingBlocksDataSize + << "(repeating block size:" + << m_repeatingBlockLength + << ", extra bytes:" + << repeatingBlocksDataSize % m_repeatingBlockLength + << "). Repeating blocks will not be handled!"; + return; } const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength; const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength; diff --git a/libnymea-sunspec/models/sunspecwattpfmodel.h b/libnymea-sunspec/models/sunspecwattpfmodel.h index 1956df8..df5acc7 100644 --- a/libnymea-sunspec/models/sunspecwattpfmodel.h +++ b/libnymea-sunspec/models/sunspecwattpfmodel.h @@ -50,7 +50,7 @@ public: }; Q_ENUM(Readonly) - explicit SunSpecWattPfModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecWattPfModel *parent); + explicit SunSpecWattPfModelRepeatingBlock(quint16 blockIndex, quint16 blockSize, quint16 modbusStartRegister, SunSpecWattPfModel *parent = nullptr); ~SunSpecWattPfModelRepeatingBlock() override = default; SunSpecWattPfModel *parentModel() const; diff --git a/libnymea-sunspec/tools/generate-models.py b/libnymea-sunspec/tools/generate-models.py index fbf3041..f64e7e0 100644 --- a/libnymea-sunspec/tools/generate-models.py +++ b/libnymea-sunspec/tools/generate-models.py @@ -823,12 +823,14 @@ def writeSetupRepeatingBlocksImplementation(fileDescriptor, className): writeLine(fileDescriptor, ' const auto headerLength = 2;') writeLine(fileDescriptor, ' const auto repeatingBlocksDataSize = m_blockData.size() - headerLength - m_fixedBlockLength;') writeLine(fileDescriptor, ' if (repeatingBlocksDataSize % m_repeatingBlockLength != 0) {') - writeLine(fileDescriptor, ' qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:"') - writeLine(fileDescriptor, ' << repeatingBlocksDataSize') - writeLine(fileDescriptor, ' << "(repeating block size:"') - writeLine(fileDescriptor, ' << m_repeatingBlockLength') - writeLine(fileDescriptor, ' << "), extra bytes:"') - writeLine(fileDescriptor, ' << repeatingBlocksDataSize % m_repeatingBlockLength;') + writeLine(fileDescriptor, ' qCWarning(dcSunSpecModelData()) << "Unexpected repeating block data size:"') + writeLine(fileDescriptor, ' << repeatingBlocksDataSize') + writeLine(fileDescriptor, ' << "(repeating block size:"') + writeLine(fileDescriptor, ' << m_repeatingBlockLength') + writeLine(fileDescriptor, ' << ", extra bytes:"') + writeLine(fileDescriptor, ' << repeatingBlocksDataSize % m_repeatingBlockLength') + writeLine(fileDescriptor, ' << "). Repeating blocks will not be handled!";') + writeLine(fileDescriptor, ' return;') writeLine(fileDescriptor, ' }') writeLine(fileDescriptor, ' const auto numberOfBlocks = repeatingBlocksDataSize / m_repeatingBlockLength;') writeLine(fileDescriptor, ' const auto repeatingBlocksOffset = m_fixedBlockLength + headerLength;')