diff options
Diffstat (limited to 'src/bluetooth/qlowenergydescriptordata.cpp')
-rw-r--r-- | src/bluetooth/qlowenergydescriptordata.cpp | 225 |
1 files changed, 225 insertions, 0 deletions
diff --git a/src/bluetooth/qlowenergydescriptordata.cpp b/src/bluetooth/qlowenergydescriptordata.cpp new file mode 100644 index 00000000..f5836cdc --- /dev/null +++ b/src/bluetooth/qlowenergydescriptordata.cpp @@ -0,0 +1,225 @@ +/*************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtBluetooth module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qlowenergydescriptordata.h" + +#include <QtCore/qbytearray.h> + +QT_BEGIN_NAMESPACE + +struct QLowEnergyDescriptorDataPrivate : public QSharedData +{ + QLowEnergyDescriptorDataPrivate() : readable(true), writable(true) {} + + QBluetoothUuid uuid; + QByteArray value; + QBluetooth::AttAccessConstraints readConstraints; + QBluetooth::AttAccessConstraints writeConstraints; + bool readable; + bool writable; +}; + +/*! + \since 5.7 + \class QLowEnergyDescriptorData + \brief The QLowEnergyDescriptorData class is used to create GATT service data. + \inmodule QtBluetooth + \ingroup shared + + An object of this class provides a descriptor to be added to a + \l QLowEnergyCharacteristicData object via \l QLowEnergyCharacteristicData::addDescriptor(). + + \note The member functions related to access permissions are only applicable to those + types of descriptors for which the Bluetooth specification does not prescribe if + and how their values can be accessed. + + \sa QLowEnergyCharacteristicData + \sa QLowEnergyServiceData + \sa QLowEnergyController::addService +*/ + +/*! Creates a new invalid object of this class. */ +QLowEnergyDescriptorData::QLowEnergyDescriptorData() : d(new QLowEnergyDescriptorDataPrivate) +{ +} + +/*! + Creates a new object of this class with UUID and value being provided by \a uuid and \a value, + respectively. + */ +QLowEnergyDescriptorData::QLowEnergyDescriptorData(const QBluetoothUuid &uuid, + const QByteArray &value) + : d(new QLowEnergyDescriptorDataPrivate) +{ + setUuid(uuid); + setValue(value); +} + +/*! Constructs a new object of this class that is a copy of \a other. */ +QLowEnergyDescriptorData::QLowEnergyDescriptorData(const QLowEnergyDescriptorData &other) + : d(other.d) +{ +} + +/*! Destroys this object. */ +QLowEnergyDescriptorData::~QLowEnergyDescriptorData() +{ +} + +/*! Makes this object a copy of \a other and returns the new value of this object. */ +QLowEnergyDescriptorData &QLowEnergyDescriptorData::operator=(const QLowEnergyDescriptorData &other) +{ + d = other.d; + return *this; +} + +/*! Returns the value of this descriptor. */ +QByteArray QLowEnergyDescriptorData::value() const +{ + return d->value; +} + +/*! + Sets the value of this descriptor to \a value. It will be sent to a peer device + exactly the way it is provided here, so callers need to take care of things such as endianness. + */ +void QLowEnergyDescriptorData::setValue(const QByteArray &value) +{ + d->value = value; +} + +/*! Returns the UUID of this descriptor. */ +QBluetoothUuid QLowEnergyDescriptorData::uuid() const +{ + return d->uuid; +} + +/*! Sets the UUID of this descriptor to \a uuid. */ +void QLowEnergyDescriptorData::setUuid(const QBluetoothUuid &uuid) +{ + d->uuid = uuid; +} + +/*! Returns true if and only if this object has a non-null UUID. */ +bool QLowEnergyDescriptorData::isValid() const +{ + return !uuid().isNull(); +} + +/*! + Specifies whether the value of this descriptor is \a readable and if so, under which + \a constraints. + \sa setWritePermissions() + */ +void QLowEnergyDescriptorData::setReadPermissions(bool readable, + QBluetooth::AttAccessConstraints constraints) +{ + d->readable = readable; + d->readConstraints = constraints; +} + +/*! Returns \c true if the value of this descriptor is readable and \c false otherwise. */ +bool QLowEnergyDescriptorData::isReadable() const +{ + return d->readable; +} + +/*! + Returns the constraints under which the value of this descriptor can be read. This value + is only relevant if \l isReadable() returns \c true. + */ +QBluetooth::AttAccessConstraints QLowEnergyDescriptorData::readConstraints() const +{ + return d->readConstraints; +} + +/*! + Specifies whether the value of this descriptor is \a writable and if so, under which + \a constraints. + \sa setReadPermissions() + */ +void QLowEnergyDescriptorData::setWritePermissions(bool writable, + QBluetooth::AttAccessConstraints constraints) +{ + d->writable = writable; + d->writeConstraints = constraints; +} + +/*! Returns \c true if the value of this descriptor is writable and \c false otherwise. */ +bool QLowEnergyDescriptorData::isWritable() const +{ + return d->writable; +} + +/*! + Returns the constraints under which the value of this descriptor can be written. This value + is only relevant if \l isWritable() returns \c true. + */ +QBluetooth::AttAccessConstraints QLowEnergyDescriptorData::writeConstraints() const +{ + return d->writeConstraints; +} + +/*! + \fn void QLowEnergyDescriptorData::swap(QLowEnergyDescriptorData &other) + Swaps this object with \a other. + */ + +/*! + Returns \c true if \a d1 and \a d2 are equal with respect to their public state, + otherwise returns \c false. + */ +bool operator==(const QLowEnergyDescriptorData &d1, const QLowEnergyDescriptorData &d2) +{ + return d1.d == d2.d || ( + d1.uuid() == d2.uuid() + && d1.value() == d2.value() + && d1.isReadable() == d2.isReadable() + && d1.isWritable() == d2.isWritable() + && d1.readConstraints() == d2.readConstraints() + && d1.writeConstraints() == d2.writeConstraints()); +} + +/*! + \fn bool operator!=(const QLowEnergyDescriptorData &d1, const QLowEnergyDescriptorData &d2) + Returns \c true if \a d1 and \a d2 are not equal with respect to their public state, + otherwise returns \c false. + */ + +QT_END_NAMESPACE |