4#include "statuscommand.h"
8#include <QJsonDocument>
79 qCWarning(lc).noquote() <<
tr(
"Failed to parse device information");
94 const std::optional<StatusService::ButtonStatus> buttonStatus =
service->
buttonPress();
104 std::cout << qUtf8Printable(
tr(
"device_name,device_status,firmware_version,maximum_voltage,"
105 "maximum_current,maximum_resistance,maximum_sampling_rate,"
106 "sampling_buffer_size,capability_mask,mac_address,battery_voltage,"
107 "battery_status,torch_status,button_status,switch_position,charging_status\n"));
108 std::cout << qUtf8Printable(
QString::fromLatin1(
"%1,%2,%3,%4,%5,%6,%7,%8,%9,%10,%11,%12,%13,%14,%15,%16\n")
120 if (!batteryLabel.
isNull()) {
143 object.insert(QStringLiteral(
"torchStatus"),
QJsonObject{
149 object.insert(QStringLiteral(
"buttonStatus"),
QJsonObject{
155 object.insert(QStringLiteral(
"switchStatus"),
QJsonObject{
161 object.insert(QStringLiteral(
"chargingStatus"),
QJsonObject{
169 std::cout << qUtf8Printable(
tr(
"Device name: %1\n").arg(deviceName));
171 std::cout << qUtf8Printable(
tr(
"Maximum voltage: %1\n").arg(chrs.
maximumVoltage));
172 std::cout << qUtf8Printable(
tr(
"Maximum current: %1\n").arg(chrs.
maximumCurrent));
176 std::cout << qUtf8Printable(
tr(
"Capability mask: %1\n").arg(chrs.
capabilityMask));
178 std::cout << qUtf8Printable(
tr(
"Device status: %1 (%2)\n").arg(statusLabel)
180 std::cout << qUtf8Printable(
tr(
"Battery voltage: %1\n").arg(status.
batteryVoltage));
181 std::cout << qUtf8Printable(
tr(
"Battery status: %1 (%2)\n")
185 std::cout << qUtf8Printable(
tr(
"Switch position: %1 (%2)\n")
189 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.
The AbstractCommand class extends AbstractCommand to add a PokitDevice instance.
PokitDevice * device
Pokit Bluetooth device (if any) this command interracts with.
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...
StatusService * status()
Returns a pointer to StatusService instance that uses this device's controller for access.
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 interracts 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.
DeviceCharacteristics deviceCharacteristics() const
Returns the most recent value of the Status service's Device Characteristics characteristic.
QString deviceName() const
Returns the most recent value of the Status services's Device Name characteristic.
std::optional< ButtonStatus > buttonPress() const
Returns the most recent value of the Status services's Button Press characteristic.
static QString toString(const StatusService::DeviceStatus &status)
Returns a string version of the status enum label.
std::optional< TorchStatus > torchStatus() const
Returns the most recent value of the Status services's Torch characteristic.
Status status() const
Returns the most recent value of the Status service's Status characteristic.
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
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
Attributes included in the Device Characteristics characterstic.
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 characterstic.
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.