Index: CloudConnect/CloudConnectController.cpp =================================================================== diff -u -rcaca75be9a284ac5f98c078ec47c2e826ac5e980 -rc6a4b63a37f3beb1e8a51702ec3a56a1c32cfe8f --- CloudConnect/CloudConnectController.cpp (.../CloudConnectController.cpp) (revision caca75be9a284ac5f98c078ec47c2e826ac5e980) +++ CloudConnect/CloudConnectController.cpp (.../CloudConnectController.cpp) (revision c6a4b63a37f3beb1e8a51702ec3a56a1c32cfe8f) @@ -11,6 +11,7 @@ * */ #include +#include #include #include "CloudConnectController.h" @@ -86,53 +87,64 @@ void CloudConnectController::loadMsgHandling(const QString &msgHandlingPath) { static const QHash actionMap = { - { QStringLiteral("send_always"), MsgAction::SendAlways }, - { QStringLiteral("send_delta"), MsgAction::SendDelta }, - { QStringLiteral("drop"), MsgAction::Drop }, + { QStringLiteral("SendAlways"), MsgAction::SendAlways }, + { QStringLiteral("SendDelta"), MsgAction::SendDelta }, + { QStringLiteral("Drop"), MsgAction::Drop }, }; - static const QHash topicMap = { - { QStringLiteral("ClinicalData"), CloudConnectFrame::MsgId::ClinicalData }, - { QStringLiteral("Diagnostic"), CloudConnectFrame::MsgId::Diagnostic }, - { QStringLiteral("Ack"), CloudConnectFrame::MsgId::Ack }, - { QStringLiteral("Alarms"), CloudConnectFrame::MsgId::Alarms }, - { QStringLiteral("Audit"), CloudConnectFrame::MsgId::Audit }, - { QStringLiteral("DeviceLogFile"), CloudConnectFrame::MsgId::DeviceLogFile }, - { QStringLiteral("TreatmentLogFile"), CloudConnectFrame::MsgId::TreatmentLogFile }, - { QStringLiteral("CloudSyncLogFile"), CloudConnectFrame::MsgId::CloudSyncLogFile }, + static const QHash topicMap = { + { QStringLiteral("HighPriority"), CloudConnectFrame::Type::HighPriority }, + { QStringLiteral("NormalPriority"), CloudConnectFrame::Type::NormalPriority }, + { QStringLiteral("DeviceLogFile"), CloudConnectFrame::Type::DeviceLogFile }, + { QStringLiteral("TreatmentLogFile"), CloudConnectFrame::Type::TreatmentLogFile }, + { QStringLiteral("CloudSyncLogFile"), CloudConnectFrame::Type::CloudSyncLogFile }, }; + if (! QFile::exists(msgHandlingPath)) { + qWarning().noquote() << "CloudConnect: handling INI" << msgHandlingPath << "does not exist"; + return; + } + QSettings msgHandlingIni(msgHandlingPath, QSettings::IniFormat); if (msgHandlingIni.status() != QSettings::NoError) { qWarning().noquote() << "CloudConnect: could not read message handling INI" << msgHandlingPath << "— all messages will be dropped"; return; } - int loaded = 0; + int msgCount = 0; for (const QString &group : msgHandlingIni.childGroups()) { bool ok = false; const Can::MsgId msgId = static_cast(group.toUInt(&ok, 16)); if (!ok) { + qWarning().noquote() << QString("CloudConnect: could not convert group \"%1\" to MsgId").arg(group); continue; } msgHandlingIni.beginGroup(group); - const QString actionStr = msgHandlingIni.value(QStringLiteral("action"), QStringLiteral("drop")).toString().trimmed(); + const QString msgIdStr = msgHandlingIni.value(QStringLiteral("msg_id")).toString(); + const QString actionStr = msgHandlingIni.value(QStringLiteral("action")).toString().trimmed(); const QString topicStr = msgHandlingIni.value(QStringLiteral("topic")).toString().trimmed(); + qInfo().noquote() << QString("%1 (0x%2): action=%3, topic=%4") + .arg(msgIdStr).arg(QString("%1").arg(quint16(msgId), 4, 16, QChar('0')).toUpper()).arg(actionStr).arg(topicStr); msgHandlingIni.endGroup(); MsgHandling msgHandling; msgHandling.action = actionMap.value(actionStr, MsgAction::Drop); - msgHandling.topic = topicMap.value(topicStr, CloudConnectFrame::MsgId::ClinicalData); + msgHandling.topic = topicMap.value(topicStr, CloudConnectFrame::Type::NormalPriority); - if (!actionMap.contains(actionStr)) { - qWarning().noquote() << QString("CloudConnect: unknown message action \"%1\" for msgId=0x%2 — defaulting to drop") - .arg(actionStr).arg(msgId, 4, 16, QChar('0')); + if (actionStr.length() > 0 && !actionMap.contains(actionStr)) { + qWarning().noquote() << QString("CloudConnect: unknown message action \"%1\" for msgId=0x%2 — defaulting to Drop") + .arg(actionStr).arg(QString("%1").arg(quint16(msgId), 4, 16, QChar('0').toUpper())); } + if (topicStr.length() > 0 && !topicMap.contains(topicStr)) { + qWarning().noquote() << QString("CloudConnect: unknown message topic \"%1\" for msgId=0x%2 — defaulting to NormalPriority") + .arg(topicStr).arg(QString("%1").arg(quint16(msgId), 4, 16, QChar('0').toUpper())); + } + _msgHandling.insert(msgId, msgHandling); - loaded++; + msgCount++; } - qInfo().noquote() << QString("CloudConnect: loaded message handling %1 (%2 entries)").arg(msgHandlingPath).arg(loaded); + qInfo().noquote() << QString("CloudConnect: loaded message handling %1 (%2 entries)").arg(msgHandlingPath).arg(msgCount); } /*!