#include "CoPrtCnvCentralTelegram.hpp" #include namespace N_CoPrtCnv { void CoPrtCnvCentralTelegram::setData(const QByteArray &data) { m_data = data; m_json = QJsonObject(); } QByteArray CoPrtCnvCentralTelegram::data() { ensureByteArray(); return m_data; } QJsonObject CoPrtCnvCentralTelegram::json() { ensureJson(); return m_json; } QJsonObject CoPrtCnvCentralTelegram::jsonData() { return json()[QStringLiteral("data")].toObject(); } TrainingAreaBase::TetraIcd::TelegramId CoPrtCnvCentralTelegram::telegramId() { if (m_telegramId != TrainingAreaBase::TetraIcd::UNKNOWN) return m_telegramId; ensureJson(); m_telegramId = static_cast(m_json[QStringLiteral("typeId")].toInt()); return m_telegramId; } void CoPrtCnvCentralTelegram::setCounter(qint32 counter) { if (m_json.isEmpty()) m_json = QJsonDocument::fromJson(m_data).object(); m_json[QStringLiteral("counter")] = counter; m_data.clear(); } qint32 CoPrtCnvCentralTelegram::counter() { ensureJson(); const QString key(QStringLiteral("counter")); const QJsonValue sendCounter(m_json[key]); if (!sendCounter.isDouble()) throw TrainingAreaBase::TetraIcd::JsonException(m_json, key); return sendCounter.toInt(-1); } void CoPrtCnvCentralTelegram::ensureJson() { if (m_json.isEmpty()) { if (m_data.isEmpty()) return; m_json = QJsonDocument::fromJson(m_data).object(); } } void CoPrtCnvCentralTelegram::ensureByteArray() { if (m_data.isEmpty()) { if (m_json.isEmpty()) return; m_data = QJsonDocument(m_json).toJson(QJsonDocument::Compact); } } }