summaryrefslogtreecommitdiff
path: root/saltoqd/systemmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'saltoqd/systemmanager.cpp')
-rw-r--r--saltoqd/systemmanager.cpp55
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);
+}