diff options
Diffstat (limited to 'saltoqd/systemmanager.cpp')
-rw-r--r-- | saltoqd/systemmanager.cpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/saltoqd/systemmanager.cpp b/saltoqd/systemmanager.cpp new file mode 100644 index 0000000..4f74ea4 --- /dev/null +++ b/saltoqd/systemmanager.cpp @@ -0,0 +1,55 @@ +#include <QtCore/QDateTime> +#include <QtCore/QTimeZone> +#include "systemmanager.h" +#include "voicecallmanager.h" + +SystemManager::SystemManager(ToqManager *toq) : + QObject(toq), _toq(toq) +{ + _toq->setEndpointListener(ToqConnection::SystemEndpoint, this); +} + +void SystemManager::handleMessage(const ToqConnection::Message &msg) +{ + Q_ASSERT(msg.destination == ToqConnection::SystemEndpoint); + switch (msg.type) { + case 0: + handleGetTimeMessage(msg); + break; + case 7: + handleSilenceMessage(msg); + break; + default: + qWarning() << "Unknown system message" << msg.type; + break; + } +} + +void SystemManager::handleGetTimeMessage(const ToqConnection::Message &msg) +{ + QJsonObject reply, time; + QDateTime dt = QDateTime::currentDateTime(); + QTimeZone tz = dt.timeZone(); + + time.insert("epoch_time", qint64(dt.toTime_t())); + time.insert("time_zone", tz.standardTimeOffset(dt)); + time.insert("dst", tz.isDaylightTime(dt) ? 1 : 0); + + reply.insert("result", int(0)); + reply.insert("description", QLatin1String("current time")); + reply.insert("time", time); + + _toq->sendReply(msg, 0x4000, reply); +} + +void SystemManager::handleSilenceMessage(const ToqConnection::Message &msg) +{ + QJsonObject reply; + + reply.insert("result", int(0)); + reply.insert("description", QLatin1String("Set to Silence Mode Request received")); + + VoiceCallManager::setSilentMode(msg.payload.object()["silence_mode"].toInt()); + + _toq->sendReply(msg, 0x4007, reply); +} |