Line data Source code
1 : // SPDX-FileCopyrightText: 2022-2024 Paul Colby <git@colby.id.au>
2 : // SPDX-License-Identifier: LGPL-3.0-or-later
3 :
4 : #include "loggerstopcommand.h"
5 :
6 : #include <qtpokit/pokitdevice.h>
7 :
8 : #include <QJsonDocument>
9 : #include <QJsonObject>
10 :
11 : #include <iostream>
12 :
13 : /*!
14 : * \class LoggerStopCommand
15 : *
16 : * The LoggerStopCommand class implements the `logger stop` CLI command.
17 : */
18 :
19 : /*!
20 : * Construct a new LoggerStopCommand object with \a parent.
21 : */
22 216 : LoggerStopCommand::LoggerStopCommand(QObject * const parent) : DeviceCommand(parent)
23 176 : {
24 :
25 328 : }
26 :
27 : /*!
28 : * \copybrief DeviceCommand::getService
29 : *
30 : * This override returns a pointer to a DataLoggerService object.
31 : */
32 0 : AbstractPokitService * LoggerStopCommand::getService()
33 0 : {
34 0 : Q_ASSERT(device);
35 0 : if (!service) {
36 0 : service = device->dataLogger();
37 0 : Q_ASSERT(service);
38 0 : connect(service, &DataLoggerService::settingsWritten,
39 0 : this, &LoggerStopCommand::settingsWritten);
40 0 : }
41 0 : return service;
42 0 : }
43 :
44 : /*!
45 : * \copybrief DeviceCommand::serviceDetailsDiscovered
46 : *
47 : * This override stops the device's logger.
48 : */
49 0 : void LoggerStopCommand::serviceDetailsDiscovered()
50 0 : {
51 0 : DeviceCommand::serviceDetailsDiscovered(); // Just logs consistently.
52 0 : qCInfo(lc).noquote() << tr("Stopping logger.");
53 0 : service->stopLogger();
54 0 : }
55 :
56 : /*!
57 : * Invoked when the data logger settings have been written.
58 : */
59 114 : void LoggerStopCommand::settingsWritten()
60 132 : {
61 270 : qCDebug(lc).noquote() << tr("Settings written; data logger has stopped.");
62 246 : switch (format) {
63 82 : case OutputFormat::Csv:
64 82 : std::cout << qUtf8Printable(tr("logger_stop_result\nsuccess\n"));
65 82 : break;
66 44 : case OutputFormat::Json:
67 93 : std::cout << qUtf8Printable(QLatin1String("true\n"));
68 82 : break;
69 82 : case OutputFormat::Text:
70 82 : std::cout << qUtf8Printable(tr("Done.\n"));
71 82 : break;
72 132 : }
73 246 : if (device) disconnect(); // Will exit the application once disconnected.
74 246 : }
|