4#include "statuscommand.h"
9#include <QJsonDocument>
82 qCWarning(lc).noquote() <<
tr(
"Failed to parse device information");
96 const std::optional<StatusService::TorchStatus> torchStatus =
service->torchStatus();
97 const std::optional<StatusService::ButtonStatus> buttonStatus =
service->buttonPress();
107 std::cout << qUtf8Printable(
tr(
"device_name,device_status,firmware_version,maximum_voltage,"
108 "maximum_current,maximum_resistance,maximum_sampling_rate,"
109 "sampling_buffer_size,capability_mask,mac_address,battery_voltage,"
110 "battery_status,torch_status,button_status,switch_position,charging_status\n"));
111 std::cout << qUtf8Printable(
QString::fromLatin1(
"%1,%2,%3,%4,%5,%6,%7,%8,%9,%10,%11,%12,%13,%14,%15,%16\n")
123 if (!batteryLabel.
isNull()) {
124 battery.insert(u
"status"_s, batteryLabel);
127 { u
"deviceName"_s, deviceName },
141 { u
"label"_s, statusLabel },
143 { u
"battery"_s, battery },
147 { u
"code"_s, (quint8)*torchStatus },
148 { u
"label"_s, torchLabel },
153 { u
"code"_s, (quint8)*buttonStatus },
154 { u
"label"_s, buttonLabel },
160 { u
"label"_s, switchLabel },
166 { u
"label"_s, chargingLabel },
172 std::cout << qUtf8Printable(
tr(
"Device name: %1\n").arg(deviceName));
174 std::cout << qUtf8Printable(
tr(
"Maximum voltage: %1\n").arg(chrs.
maximumVoltage));
175 std::cout << qUtf8Printable(
tr(
"Maximum current: %1\n").arg(chrs.
maximumCurrent));
179 std::cout << qUtf8Printable(
tr(
"Capability mask: %1\n").arg(chrs.
capabilityMask));
181 std::cout << qUtf8Printable(
tr(
"Device status: %1 (%2)\n").arg(statusLabel)
183 std::cout << qUtf8Printable(
tr(
"Battery voltage: %1\n").arg(status.
batteryVoltage));
184 std::cout << qUtf8Printable(
tr(
"Battery status: %1 (%2)\n")
188 std::cout << qUtf8Printable(
tr(
"Switch position: %1 (%2)\n")
192 std::cout << qUtf8Printable(
tr(
"Charging status: %1 (%2)\n")
virtual QStringList supportedOptions(const QCommandLineParser &parser) const
Returns a list of CLI option names supported by this command.
OutputFormat format
Selected output format.
@ Text
Plain unstructured text.
@ Csv
RFC 4180 compliant CSV text.
@ Json
RFC 8259 compliant JSON text.
virtual QStringList processOptions(const QCommandLineParser &parser)
Processes the relevant options from the command line parser.
static QString escapeCsvField(const QString &field)
Returns an RFC 4180 compliant version of field.
virtual QStringList requiredOptions(const QCommandLineParser &parser) const
Returns a list of CLI option names required by this command.
The AbstractPokitService class provides a common base for Pokit services classes.
PokitDevice * device
Pokit Bluetooth device (if any) this command interacts with.
DeviceCommand(QObject *const parent=nullptr)
Construct a new DeviceCommand object with parent.
virtual void serviceDetailsDiscovered()
Handles service detail discovery events.
void disconnect(int exitCode=EXIT_SUCCESS)
Disconnects the underlying Pokit device, and sets exitCode to be return to the OS once the disconnect...
QStringList supportedOptions(const QCommandLineParser &parser) const override
Returns a list of CLI option names supported by this command.
QStringList requiredOptions(const QCommandLineParser &parser) const override
Returns a list of CLI option names required by this command.
QStringList processOptions(const QCommandLineParser &parser) override
Processes the relevant options from the command line parser.
StatusService * service
Bluetooth service this command interacts with.
StatusCommand(QObject *const parent=nullptr)
Construct a new StatusCommand object with parent.
AbstractPokitService * getService() override
Returns a Pokit service object for the derived command class.
void outputDeviceStatus(const StatusService::DeviceCharacteristics &chrs)
Outputs the Pokit device's details, including chrs, in the selected format.
void serviceDetailsDiscovered() override
Handles service detail discovery events.
static QString toString(const StatusService::DeviceStatus &status)
Returns a string version of the status enum label.
Declares the PokitDevice class.
QString toString() const const
std::string toStdString() const const
void exit(int returnCode)
QByteArray toJson() const const
bool isEmpty() const const
QObject * parent() const const
QString tr(const char *sourceText, const char *disambiguation, int n)
QString arg(qlonglong a, int fieldWidth, int base, QChar fillChar) const const
QString fromLatin1(const char *str, int size)
bool isNull() const const
QString toLower() const const
bool isNull() const const
int majorVersion() const const
int minorVersion() const const
QString toString() const const
Declares the DOKIT_USE_STRINGLITERALS macro, and related functions.
#define DOKIT_USE_STRINGLITERALS
Internal macro for using either official Qt string literals (added in Qt 6.4), or our own equivalent ...
Attributes included in the Device Characteristics characteristic.
quint16 maximumCurrent
Device's maximum input current.
quint16 maximumSamplingRate
Device's maximum sampling rate.
quint16 samplingBufferSize
Device's sampling buffer size.
quint16 maximumVoltage
Device's maximum input voltage.
quint16 capabilityMask
Reserved.
QBluetoothAddress macAddress
Device's MAC address.
quint16 maximumResistance
Device's maximum input resistance.
QVersionNumber firmwareVersion
Device's major and minor firmware version.
Attributes included in the Status characteristic.
float batteryVoltage
Current battery voltage level.
std::optional< ChargingStatus > chargingStatus
Current charging status, if supported by the device.
DeviceStatus deviceStatus
Current Pokit device status.
BatteryStatus batteryStatus
Logical interpretation the battery voltage level.
std::optional< SwitchPosition > switchPosition
Position of the Pokit device's physical mode switch.