LCOV - code coverage report
Current view: top level - src/app - flashledcommand.cpp (source / functions) Hit Total Coverage
Project: QtPokit Lines: 21 32 65.6 %
Version: Functions: 6 8 75.0 %

          Line data    Source code
       1             : // SPDX-FileCopyrightText: 2022 Paul Colby <git@colby.id.au>
       2             : // SPDX-License-Identifier: LGPL-3.0-or-later
       3             : 
       4             : #include "flashledcommand.h"
       5             : 
       6             : #include <qtpokit/pokitdevice.h>
       7             : #include <qtpokit/statusservice.h>
       8             : 
       9             : #include <iostream>
      10             : 
      11             : /*!
      12             :  * \class FlashLedCommand
      13             :  *
      14             :  * The FlashLedCommand class implements the `flash-led` CLI command.
      15             :  */
      16             : 
      17             : /*!
      18             :  * Construct a new FlashLedCommand object with \a parent.
      19             :  */
      20         119 : FlashLedCommand::FlashLedCommand(QObject * const parent) : DeviceCommand(parent), service(nullptr)
      21             : {
      22             : 
      23         119 : }
      24             : 
      25          85 : QStringList FlashLedCommand::requiredOptions(const QCommandLineParser &parser) const
      26             : {
      27         170 :     return DeviceCommand::requiredOptions(parser) + QStringList{
      28         170 :     };
      29             : }
      30             : 
      31          34 : QStringList FlashLedCommand::supportedOptions(const QCommandLineParser &parser) const
      32             : {
      33          34 :     return DeviceCommand::supportedOptions(parser);
      34             : }
      35             : 
      36             : /*!
      37             :  * \copybrief DeviceCommand::processOptions
      38             :  *
      39             :  * This implementation extends DeviceCommand::processOptions to process additional CLI options
      40             :  * supported (or required) by this command.
      41             :  */
      42          17 : QStringList FlashLedCommand::processOptions(const QCommandLineParser &parser)
      43             : {
      44          17 :     QStringList errors = DeviceCommand::processOptions(parser);
      45             :     if (!errors.isEmpty()) {
      46             :         return errors;
      47             :     }
      48             : 
      49             :     return errors;
      50             : }
      51             : 
      52             : /*!
      53             :  * \copybrief DeviceCommand::getService
      54             :  *
      55             :  * This override returns a pointer to a StatusService object.
      56             :  */
      57           0 : AbstractPokitService * FlashLedCommand::getService()
      58             : {
      59             :     Q_ASSERT(device);
      60           0 :     if (!service) {
      61           0 :         service = device->status();
      62             :         Q_ASSERT(service);
      63           0 :         connect(service, &StatusService::deviceLedFlashed,
      64             :                 this, &FlashLedCommand::deviceLedFlashed);
      65             :     }
      66           0 :     return service;
      67             : }
      68             : 
      69             : /*!
      70             :  * \copybrief DeviceCommand::serviceDetailsDiscovered
      71             :  *
      72             :  * This override flashes the device's LED, via the Pokit Status service.
      73             :  */
      74           0 : void FlashLedCommand::serviceDetailsDiscovered()
      75             : {
      76           0 :     DeviceCommand::serviceDetailsDiscovered(); // Just logs consistently.
      77           0 :     qCInfo(lc).noquote() << tr("Flashing Pokit device LED...");
      78           0 :     if (!service->flashLed()) {
      79           0 :         QCoreApplication::exit(EXIT_FAILURE);
      80             :     }
      81           0 : }
      82             : 
      83             : /*!
      84             :  * Handles StatusService::deviceLedFlashed events, by outputting the result and exiting.
      85             :  */
      86          51 : void FlashLedCommand::deviceLedFlashed()
      87             : {
      88          51 :     switch (format) {
      89           6 :     case OutputFormat::Csv:
      90          20 :         std::cout << qUtf8Printable(tr("flash_led_result\nsuccess\n"));
      91          17 :         break;
      92             :     case OutputFormat::Json:
      93          23 :         std::cout << qUtf8Printable(QLatin1String("true\n"));
      94          17 :         break;
      95           6 :     case OutputFormat::Text:
      96          20 :         std::cout << qUtf8Printable(tr("Done.\n"));
      97          17 :         break;
      98             :     }
      99          51 :     if (device) disconnect(); // Will exit the application once disconnected.
     100          51 : }

Generated by: LCOV version 1.14