Dokit
Internal development documentation
|
The DsoCommand class implements the dso
CLI command.
More...
Public Slots | |
QStringList | processOptions (const QCommandLineParser &parser) override |
Processes the relevant options from the command line parser. | |
Public Slots inherited from DeviceCommand | |
bool | start () override |
Begins scanning for the Pokit device. | |
Public Slots inherited from AbstractCommand | |
virtual QStringList | processOptions (const QCommandLineParser &parser) |
Processes the relevant options from the command line parser. | |
virtual bool | start ()=0 |
Begins the functionality of this command, and returns true if begun successfully, false otherwise. | |
Public Member Functions | |
DsoCommand (QObject *const parent=nullptr) | |
Construct a new DsoCommand object with parent. | |
QStringList | requiredOptions (const QCommandLineParser &parser) const override |
Returns a list of CLI option names required by this command. | |
QStringList | supportedOptions (const QCommandLineParser &parser) const override |
Returns a list of CLI option names supported by this command. | |
Public Member Functions inherited from DeviceCommand | |
DeviceCommand (QObject *const parent=nullptr) | |
Construct a new DeviceCommand object with parent. | |
Public Member Functions inherited from AbstractCommand | |
AbstractCommand (QObject *const parent=nullptr) | |
Constructs a new command with parent. | |
Public Member Functions inherited from QObject | |
virtual const QMetaObject * | metaObject () const const |
QObject (QObject *parent) | |
virtual bool | event (QEvent *e) |
virtual bool | eventFilter (QObject *watched, QEvent *event) |
QString | objectName () const const |
void | setObjectName (const QString &name) |
bool | isWidgetType () const const |
bool | isWindowType () const const |
bool | signalsBlocked () const const |
bool | blockSignals (bool block) |
QThread * | thread () const const |
void | moveToThread (QThread *targetThread) |
int | startTimer (int interval, Qt::TimerType timerType) |
int | startTimer (std::chrono::milliseconds time, Qt::TimerType timerType) |
void | killTimer (int id) |
T | findChild (const QString &name, Qt::FindChildOptions options) const const |
QList< T > | findChildren (const QString &name, Qt::FindChildOptions options) const const |
QList< T > | findChildren (const QRegExp ®Exp, Qt::FindChildOptions options) const const |
QList< T > | findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const |
const QObjectList & | children () const const |
void | setParent (QObject *parent) |
void | installEventFilter (QObject *filterObj) |
void | removeEventFilter (QObject *obj) |
QMetaObject::Connection | connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const const |
bool | disconnect (const char *signal, const QObject *receiver, const char *method) const const |
bool | disconnect (const QObject *receiver, const char *method) const const |
void | dumpObjectTree () |
void | dumpObjectInfo () |
void | dumpObjectTree () const const |
void | dumpObjectInfo () const const |
bool | setProperty (const char *name, const QVariant &value) |
QVariant | property (const char *name) const const |
QList< QByteArray > | dynamicPropertyNames () const const |
void | destroyed (QObject *obj) |
void | objectNameChanged (const QString &objectName) |
QObject * | parent () const const |
bool | inherits (const char *className) const const |
void | deleteLater () |
Q_DISABLE_COPY (Class) | |
Q_DISABLE_MOVE (Class) | |
Q_DISABLE_COPY_MOVE (Class) | |
T | qobject_cast (QObject *object) |
T | qobject_cast (const QObject *object) |
T | qFindChild (const QObject *obj, const QString &name) |
QList< T > | qFindChildren (const QObject *obj, const QString &name) |
QList< T > | qFindChildren (const QObject *obj, const QRegExp ®Exp) |
Q_CLASSINFO (Name, Value) | |
Q_INTERFACES (...) | |
Q_PROPERTY (...) | |
Q_ENUMS (...) | |
Q_FLAGS (...) | |
Q_ENUM (...) | |
Q_FLAG (...) | |
Q_ENUM_NS (...) | |
Q_FLAG_NS (...) | |
Q_OBJECT Q_OBJECT | |
Q_GADGET Q_GADGET | |
Q_NAMESPACE Q_NAMESPACE | |
Q_NAMESPACE_EXPORT (EXPORT_MACRO) | |
Q_SIGNALS Q_SIGNALS | |
Q_SIGNAL Q_SIGNAL | |
Q_SLOTS Q_SLOTS | |
Q_SLOT Q_SLOT | |
Q_EMIT Q_EMIT | |
Q_INVOKABLE Q_INVOKABLE | |
Q_REVISION Q_REVISION | |
Q_SET_OBJECT_NAME (Object) | |
QT_NO_NARROWING_CONVERSIONS_IN_CONNECT QT_NO_NARROWING_CONVERSIONS_IN_CONNECT | |
Protected Slots | |
void | serviceDetailsDiscovered () override |
Handles service detail discovery events. | |
Protected Slots inherited from DeviceCommand | |
virtual void | controllerError (const QLowEnergyController::Error error) |
Handles controller error events. | |
virtual void | deviceDisconnected () |
Handles devics disconnection events. | |
virtual void | serviceError (const QLowEnergyService::ServiceError error) |
Handles service error events. | |
virtual void | serviceDetailsDiscovered () |
Handles service detail discovery events. | |
Protected Slots inherited from AbstractCommand | |
virtual void | deviceDiscovered (const QBluetoothDeviceInfo &info)=0 |
Handles PokitDiscoveryAgent::pokitDeviceDiscovered signal. | |
virtual void | deviceDiscoveryFinished ()=0 |
Handles PokitDiscoveryAgent::deviceDiscoveryFinished signal. | |
Protected Member Functions | |
AbstractPokitService * | getService () override |
Returns a Pokit service object for the derived command class. | |
Protected Member Functions inherited from DeviceCommand | |
void | disconnect (int exitCode=EXIT_SUCCESS) |
Disconnects the underlying Pokit device, and sets exitCode to be return to the OS once the disconnection has taken place. | |
Protected Member Functions inherited from QObject | |
QObject * | sender () const const |
int | senderSignalIndex () const const |
int | receivers (const char *signal) const const |
bool | isSignalConnected (const QMetaMethod &signal) const const |
virtual void | timerEvent (QTimerEvent *event) |
virtual void | childEvent (QChildEvent *event) |
virtual void | customEvent (QEvent *event) |
virtual void | connectNotify (const QMetaMethod &signal) |
virtual void | disconnectNotify (const QMetaMethod &signal) |
Private Slots | |
void | settingsWritten () |
Invoked when the DSO settings have been written. | |
void | metadataRead (const DsoService::Metadata &data) |
Invoked when metadata has been received from the DSO. | |
void | outputSamples (const DsoService::Samples &samples) |
Outputs DSO samples in the selected ouput format. | |
Private Attributes | |
quint8(* | minRangeFunc )(const PokitProduct product, const quint32 maxValue) |
Pointer to function for converting rangeOptionValue to a Pokit device's range enumerator. | |
quint32 | rangeOptionValue { 0 } |
The parsed value of range option. | |
DsoService * | service { nullptr } |
Bluetooth service this command interracts with. | |
DsoService::Settings | settings |
Settings for the Pokit device's DSO mode. | |
DsoService::Metadata | metadata |
Most recent DSO metadata. | |
qint32 | samplesToGo { 0 } |
Number of samples we're expecting in the current window. | |
bool | showCsvHeader { true } |
Whether or not to show a header as the first line of CSV output. | |
Friends | |
class | TestDsoCommand |
Additional Inherited Members | |
Public Types inherited from AbstractCommand | |
enum class | OutputFormat { Csv , Json , Text } |
Supported output formats. More... | |
Static Public Member Functions inherited from AbstractCommand | |
static QString | escapeCsvField (const QString &field) |
Returns an RFC 4180 compliant version of field. | |
template<typename R > | |
static quint32 | parseNumber (const QString &value, const QString &unit, const quint32 sensibleMinimum=0) |
Returns value as an integer multiple of the ratio R. | |
Static Public Member Functions inherited from QObject | |
QString | tr (const char *sourceText, const char *disambiguation, int n) |
QString | trUtf8 (const char *sourceText, const char *disambiguation, int n) |
QMetaObject::Connection | connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type) |
QMetaObject::Connection | connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type) |
QMetaObject::Connection | connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type) |
QMetaObject::Connection | connect (const QObject *sender, PointerToMemberFunction signal, Functor functor) |
QMetaObject::Connection | connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type) |
bool | disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method) |
bool | disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method) |
bool | disconnect (const QMetaObject::Connection &connection) |
bool | disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method) |
Public Attributes inherited from QObject | |
typedef | QObjectList |
Static Protected Member Functions inherited from DeviceCommand | |
template<typename T > | |
static T | minRange (const quint32 maxValue) |
static quint8 | minCapacitanceRange (const PokitProduct product, const quint32 maxValue) |
Returns the product's lowest capacitance range that can measure at least up to maxValue (nF), or AutoRange if no such range is available. | |
static quint8 | minCurrentRange (const PokitProduct product, const quint32 maxValue) |
Returns the product's lowest current range that can measure at least up to maxValue (µA), or AutoRange if no such range is available. | |
static quint8 | minResistanceRange (const PokitProduct product, const quint32 maxValue) |
Returns the product's lowest resistance range that can measure at least up to maxValue (Ω), or AutoRange if no such range is available. | |
static quint8 | minVoltageRange (const PokitProduct product, const quint32 maxValue) |
t Returns the product's lowest voltage range that can measure at least up to maxValue (mV), or AutoRange if no such range is available. | |
Static Protected Member Functions inherited from AbstractCommand | |
static | Q_LOGGING_CATEGORY (lc, "dokit.cli.command", QtInfoMsg) |
Logging category for UI commands. | |
Protected Attributes inherited from DeviceCommand | |
PokitDevice * | device { nullptr } |
Pokit Bluetooth device (if any) this command interracts with. | |
int | exitCodeOnDisconnect { EXIT_FAILURE } |
Exit code to return on device disconnection. | |
Protected Attributes inherited from AbstractCommand | |
QString | deviceToScanFor |
Device (if any) that were passed to processOptions(). | |
PokitDiscoveryAgent * | discoveryAgent |
Agent for Pokit device descovery. | |
OutputFormat | format { OutputFormat::Text } |
Selected output format. | |
Properties inherited from QObject | |
objectName | |
The DsoCommand class implements the dso
CLI command.
Definition at line 10 of file dsocommand.h.
|
explicit |
Construct a new DsoCommand object with parent.
Definition at line 22 of file dsocommand.cpp.
|
overrideprotectedvirtual |
Returns a Pokit service object for the derived command class.
This override returns a pointer to a DsoService object.
Implements DeviceCommand.
Definition at line 169 of file dsocommand.cpp.
References QObject::connect(), DeviceCommand::device, PokitDevice::dso(), service, settingsWritten(), and DsoService::settingsWritten().
|
privateslot |
Invoked when metadata has been received from the DSO.
Definition at line 227 of file dsocommand.cpp.
References metadata, DsoService::Metadata::mode, DsoService::Metadata::numberOfSamples, DsoService::Metadata::range, samplesToGo, DsoService::Metadata::samplingRate, DsoService::Metadata::samplingWindow, DsoService::Metadata::scale, service, DsoService::Metadata::status, and DsoService::toString().
Referenced by settingsWritten().
|
privateslot |
Outputs DSO samples in the selected ouput format.
Definition at line 243 of file dsocommand.cpp.
References DsoService::AcCurrent, DsoService::AcVoltage, QString::arg(), AbstractCommand::Csv, DsoService::DcCurrent, DsoService::DcVoltage, DeviceCommand::device, DeviceCommand::disconnect(), AbstractCommand::format, QString::fromLatin1(), AbstractCommand::Json, metadata, DsoService::Metadata::mode, DsoService::Metadata::numberOfSamples, DsoService::Metadata::range, samplesToGo, DsoService::Metadata::scale, service, showCsvHeader, AbstractCommand::Text, DsoService::toString(), and QObject::tr().
Referenced by settingsWritten().
|
overrideslot |
Processes the relevant options from the command line parser.
This implementation extends DeviceCommand::processOptions to process additional CLI options supported (or required) by this command.
Definition at line 51 of file dsocommand.cpp.
References DsoService::AcCurrent, DsoService::AcVoltage, QList::append(), QString::arg(), DsoService::Settings::command, DsoService::DcCurrent, DsoService::DcVoltage, DsoService::FallingEdgeTrigger, DsoService::FreeRunning, DsoService::Idle, QList::isEmpty(), QString::isEmpty(), QCommandLineParser::isSet(), DeviceCommand::minCurrentRange(), minRangeFunc, DeviceCommand::minVoltageRange(), DsoService::Settings::mode, DsoService::Settings::numberOfSamples, AbstractCommand::parseNumber(), AbstractCommand::processOptions(), rangeOptionValue, DsoService::RisingEdgeTrigger, DsoService::Settings::samplingWindow, settings, QString::startsWith(), QString::toLower(), QObject::tr(), DsoService::Settings::triggerLevel, and QCommandLineParser::value().
|
overridevirtual |
Returns a list of CLI option names required by this command.
The main console appication may use this list to output an eror (and exit) if any of the returned names are not found in the parsed CLI options.
The (already parsed) parser may be used adjust the returned required options depending on the value of other options. For example, the logger
command only requires the --mode
option if the --command
option is start
.
This base implementation simply returns an empty list. Derived classes should override this function to include any required options.
Reimplemented from AbstractCommand.
Definition at line 27 of file dsocommand.cpp.
References AbstractCommand::requiredOptions().
|
overrideprotectedslot |
Handles service detail discovery events.
This override fetches the current device's status, and outputs it in the selected format.
Definition at line 186 of file dsocommand.cpp.
References QString::arg(), QString::fromLatin1(), QString::isNull(), minRangeFunc, DsoService::Settings::mode, DsoService::Settings::numberOfSamples, AbstractPokitService::pokitProduct(), DsoService::Settings::range, rangeOptionValue, DsoService::Settings::samplingWindow, service, DeviceCommand::serviceDetailsDiscovered(), DsoService::setSettings(), settings, DsoService::toString(), and QObject::tr().
|
privateslot |
Invoked when the DSO settings have been written.
Definition at line 214 of file dsocommand.cpp.
References QObject::connect(), DsoService::enableMetadataNotifications(), DsoService::enableReadingNotifications(), metadataRead(), DsoService::metadataRead(), outputSamples(), DsoService::samplesRead(), service, and QObject::tr().
Referenced by getService().
|
overridevirtual |
Returns a list of CLI option names supported by this command.
The main console appication may use this list to output a warning for any parsed CLI options not included in the returned list.
The (already parsed) parser may be used adjust the returned supported options depending on the value of other options. For example, the logger
command only supported the --timestamp
option if the --command
option is start
.
This base implementation simply returns requiredOptions(). Derived classes should override this function to include optional options, such as:
Reimplemented from AbstractCommand.
Definition at line 35 of file dsocommand.cpp.
References AbstractCommand::supportedOptions().
|
friend |
Definition at line 46 of file dsocommand.h.
|
private |
Most recent DSO metadata.
Definition at line 37 of file dsocommand.h.
Referenced by metadataRead(), and outputSamples().
|
inlineprivate |
Pointer to function for converting rangeOptionValue to a Pokit device's range enumerator.
This function pointer is assigned during the command line parsing, but is not invoked until after the device's services are discovere, because prior to that discovery, we don't know which product (Meter vs Pro vs Clamp, etc) we're talking to and thus which enumerator list to be using.
If the current mode does not support ranges (eg diode, and continuity modes), then this member will be nullptr
.
Definition at line 30 of file dsocommand.h.
Referenced by processOptions(), and serviceDetailsDiscovered().
|
private |
The parsed value of range option.
Definition at line 31 of file dsocommand.h.
Referenced by processOptions(), and serviceDetailsDiscovered().
|
private |
Number of samples we're expecting in the current window.
Definition at line 38 of file dsocommand.h.
Referenced by metadataRead(), and outputSamples().
|
private |
Bluetooth service this command interracts with.
Definition at line 32 of file dsocommand.h.
Referenced by getService(), metadataRead(), outputSamples(), serviceDetailsDiscovered(), and settingsWritten().
|
private |
Settings for the Pokit device's DSO mode.
Definition at line 33 of file dsocommand.h.
Referenced by processOptions(), and serviceDetailsDiscovered().
|
private |
Whether or not to show a header as the first line of CSV output.
Definition at line 39 of file dsocommand.h.
Referenced by outputSamples().