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 : /*! 5 : * \file 6 : * Declares the DeviceInfoService class. 7 : */ 8 : 9 : #ifndef QTPOKIT_INFOSERVICE_H 10 : #define QTPOKIT_INFOSERVICE_H 11 : 12 : #include "abstractpokitservice.h" 13 : 14 : #include <QBluetoothAddress> 15 : #include <QBluetoothUuid> 16 : #include <QVersionNumber> 17 : 18 : QTPOKIT_BEGIN_NAMESPACE 19 : 20 : class DeviceInfoServicePrivate; 21 : 22 : class QTPOKIT_EXPORT DeviceInfoService : public AbstractPokitService 23 : { 24 20 : Q_OBJECT 25 : 26 : public: 27 : /// UUID of the "Device Info" service. 28 : static inline const QBluetoothUuid serviceUuid 29 : { QBluetoothUuid::ServiceClassUuid::DeviceInformation }; 30 : 31 : /// Characteristics available via the `Device Info` service. 32 : struct QTPOKIT_EXPORT CharacteristicUuids { 33 : /// UUID of the `Device Info` service's `Manufacturer Name String` characterstic. 34 : static inline const QBluetoothUuid manufacturerName 35 : { QBluetoothUuid::CharacteristicType::ManufacturerNameString }; 36 : 37 : /// UUID of the `Device Info` service's `Model Number String` characterstic. 38 : static inline const QBluetoothUuid modelNumber 39 : { QBluetoothUuid::CharacteristicType::ModelNumberString }; 40 : 41 : /// UUID of the `Device Info` service's `Firmware Revision String` characterstic. 42 : static inline const QBluetoothUuid firmwareRevision 43 : { QBluetoothUuid::CharacteristicType::FirmwareRevisionString }; 44 : 45 : /// UUID of the `Device Info` service's `Hardware Revision String` characterstic. 46 : static inline const QBluetoothUuid hardwareRevision 47 : { QBluetoothUuid::CharacteristicType::HardwareRevisionString }; 48 : 49 : /// UUID of the `Device Info` service's `Software Revision String` characterstic. 50 : static inline const QBluetoothUuid softwareRevision 51 : { QBluetoothUuid::CharacteristicType::SoftwareRevisionString }; 52 : 53 : /// UUID of the `Device Info` service's `Serial Number String` characterstic. 54 : static inline const QBluetoothUuid serialNumber 55 : { QBluetoothUuid::CharacteristicType::SerialNumberString }; 56 : }; 57 : 58 : DeviceInfoService(QLowEnergyController * const pokitDevice, QObject * parent = nullptr); 59 : ~DeviceInfoService() override; 60 : 61 : bool readCharacteristics() override; 62 : bool readFirmwareRevisionCharacteristic(); 63 : bool readHardwareRevisionCharacteristic(); 64 : bool readManufacturerCharacteristics(); 65 : bool readModelNumberCharacteristic(); 66 : bool readSoftwareRevisionCharacteristic(); 67 : bool readSerialNumberCharacteristic(); 68 : 69 : // All Device Info characteristics are read-only, single values. 70 : QString manufacturer() const; 71 : QString modelNumber() const; 72 : QString hardwareRevision() const; 73 : QString firmwareRevision() const; 74 : QString softwareRevision() const; 75 : QString serialNumber() const; 76 : 77 : Q_SIGNALS: 78 : void manufacturerRead(const QString &name); 79 : void modelNumberRead(const QString &model); 80 : void hardwareRevisionRead(const QString &revision); 81 : void firmwareRevisionRead(const QString &revision); 82 : void softwareRevisionRead(const QString &revision); 83 : void serialNumberRead(const QString &serialNumber); 84 : 85 : protected: 86 : /// \cond internal 87 : DeviceInfoService(DeviceInfoServicePrivate * const d, QObject * const parent); 88 : /// \endcond 89 : 90 : private: 91 2496 : Q_DECLARE_PRIVATE(DeviceInfoService) 92 : Q_DISABLE_COPY(DeviceInfoService) 93 : friend class TestDeviceInfoService; 94 : }; 95 : 96 : QTPOKIT_END_NAMESPACE 97 : 98 : #endif // QTPOKIT_INFOSERVICE_H