Line data Source code
1 : // SPDX-FileCopyrightText: 2022-2023 Paul Colby <git@colby.id.au> 2 : // SPDX-License-Identifier: LGPL-3.0-or-later 3 : 4 : /*! 5 : * \file 6 : * Declares the AbstractPokitService class. 7 : */ 8 : 9 : #ifndef QTPOKIT_ABSTRACTPOKITSERVICE_H 10 : #define QTPOKIT_ABSTRACTPOKITSERVICE_H 11 : 12 : #include "qtpokit_global.h" 13 : #include "pokitproducts.h" 14 : 15 : #include <QLowEnergyService> 16 : #include <QObject> 17 : 18 : #include <optional> 19 : 20 : class QLowEnergyController; 21 : 22 : QTPOKIT_BEGIN_NAMESPACE 23 : 24 : class AbstractPokitServicePrivate; 25 : 26 : class QTPOKIT_EXPORT AbstractPokitService : public QObject 27 : { 28 18 : Q_OBJECT 29 : 30 : public: 31 : AbstractPokitService() = delete; 32 : virtual ~AbstractPokitService(); 33 : 34 : virtual bool readCharacteristics() = 0; 35 : 36 : bool autoDiscover() const; 37 : void setAutoDiscover(const bool discover = true); 38 : 39 : std::optional<PokitProduct> pokitProduct() const; 40 : void setPokitProduct(const PokitProduct product); 41 : 42 : QLowEnergyService * service(); 43 : const QLowEnergyService * service() const; 44 : 45 : signals: 46 : void serviceDetailsDiscovered(); 47 : void serviceErrorOccurred(QLowEnergyService::ServiceError newError); 48 : 49 : protected: 50 : /// \cond internal 51 : AbstractPokitServicePrivate * d_ptr; ///< Internal d-pointer. 52 : AbstractPokitService(AbstractPokitServicePrivate * const d, QObject * const parent); 53 : /// \endcond 54 : 55 : private: 56 9882 : Q_DECLARE_PRIVATE(AbstractPokitService) 57 : Q_DISABLE_COPY(AbstractPokitService) 58 : friend class TestAbstractPokitService; 59 : }; 60 : 61 : QTPOKIT_END_NAMESPACE 62 : 63 : #endif // QTPOKIT_ABSTRACTPOKITSERVICE_H