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 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 38 : 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 : Q_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 20862 : 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
|