From 1a9a359b9bdee646cd964fd5af13b239da79f9c9 Mon Sep 17 00:00:00 2001 From: Alex Blasche Date: Wed, 4 Jun 2014 15:01:30 +0200 Subject: Provide means of translating descriptor types to user strings Also, this patch fixes the uninitialised m_type member in the QLowEnergyDescriptorInfo private implementation Change-Id: I6736d5f38738490bc4f0f53908f925361f1843bd Reviewed-by: Lars Knoll Reviewed-by: Alex Blasche --- src/bluetooth/qbluetoothuuid.cpp | 38 +++++++++++++++++++++++++- src/bluetooth/qbluetoothuuid.h | 1 + src/bluetooth/qlowenergycharacteristicinfo.cpp | 2 +- src/bluetooth/qlowenergydescriptorinfo.cpp | 32 ++++++---------------- src/bluetooth/qlowenergydescriptorinfo.h | 2 ++ src/bluetooth/qlowenergydescriptorinfo_p.h | 1 - 6 files changed, 50 insertions(+), 26 deletions(-) (limited to 'src/bluetooth') diff --git a/src/bluetooth/qbluetoothuuid.cpp b/src/bluetooth/qbluetoothuuid.cpp index 3c112775..b68e6e1f 100644 --- a/src/bluetooth/qbluetoothuuid.cpp +++ b/src/bluetooth/qbluetoothuuid.cpp @@ -754,7 +754,7 @@ QString QBluetoothUuid::protocolToString(QBluetoothUuid::ProtocolUuid uuid) } /*! - Returns a human-readable and translated name for the given characteristic + Returns a human-readable and translated name for the given characteristic type represented by \a uuid. \sa QBluetoothUuid::CharacteristicType @@ -872,6 +872,42 @@ QString QBluetoothUuid::characteristicToString(CharacteristicType uuid) return QString(); } +/*! + Returns a human-readable and translated name for the given descriptor type + represented by \a uuid. + + \sa QBluetoothUuid::CharacteristicType + + \since 5.4 +*/ +QString QBluetoothUuid::descriptorToString(QBluetoothUuid::DescriptorType uuid) +{ + switch (uuid) { + case QBluetoothUuid::CharacteristicExtendedProperties: + return QBluetoothServiceDiscoveryAgent::tr("Characteristic Extended Properties"); + case QBluetoothUuid::CharacteristicUserDescription: + return QBluetoothServiceDiscoveryAgent::tr("Characteristic User Description"); + case QBluetoothUuid::ClientCharacteristicConfiguration: + return QBluetoothServiceDiscoveryAgent::tr("Client Characteristic Configuration"); + case QBluetoothUuid::ServerCharacteristicConfiguration: + return QBluetoothServiceDiscoveryAgent::tr("Server Characteristic Configuratio"); + case QBluetoothUuid::CharacteristicPresentationFormat: + return QBluetoothServiceDiscoveryAgent::tr("Characteristic Presentation Format"); + case QBluetoothUuid::CharacteristicAggregateFormat: + return QBluetoothServiceDiscoveryAgent::tr("Characteristic Aggregate Format"); + case QBluetoothUuid::ValidRange: + return QBluetoothServiceDiscoveryAgent::tr("Valid Range"); + case QBluetoothUuid::ExternalReportReference: + return QBluetoothServiceDiscoveryAgent::tr("External Report Reference"); + case QBluetoothUuid::ReportReference: + return QBluetoothServiceDiscoveryAgent::tr("Report Reference"); + default: + break; + } + + return QString(); +} + /*! Returns true if \a other is equal to this Bluetooth UUID, otherwise false. */ diff --git a/src/bluetooth/qbluetoothuuid.h b/src/bluetooth/qbluetoothuuid.h index c5f9224c..66be1b18 100644 --- a/src/bluetooth/qbluetoothuuid.h +++ b/src/bluetooth/qbluetoothuuid.h @@ -296,6 +296,7 @@ public: static QString serviceClassToString(ServiceClassUuid uuid); static QString protocolToString(ProtocolUuid uuid); static QString characteristicToString(CharacteristicType uuid); + static QString descriptorToString(DescriptorType uuid); }; #ifndef QT_NO_DEBUG_STREAM diff --git a/src/bluetooth/qlowenergycharacteristicinfo.cpp b/src/bluetooth/qlowenergycharacteristicinfo.cpp index aea4be5e..0d2f8c81 100644 --- a/src/bluetooth/qlowenergycharacteristicinfo.cpp +++ b/src/bluetooth/qlowenergycharacteristicinfo.cpp @@ -118,7 +118,7 @@ QLowEnergyCharacteristicInfo::~QLowEnergyCharacteristicInfo() } /*! - Returns the name of the gatt characteristic. + Returns the name of the gatt characteristic type. */ QString QLowEnergyCharacteristicInfo::name() const { diff --git a/src/bluetooth/qlowenergydescriptorinfo.cpp b/src/bluetooth/qlowenergydescriptorinfo.cpp index b71d7b4b..430220fc 100644 --- a/src/bluetooth/qlowenergydescriptorinfo.cpp +++ b/src/bluetooth/qlowenergydescriptorinfo.cpp @@ -58,26 +58,9 @@ QT_BEGIN_NAMESPACE about the characteristic (data format, notification activation, etc). */ -QString parseDescriptorUuid(const QBluetoothUuid &uuid) -{ - static QHash uuidnames; - if ( uuidnames.isEmpty() ) { - uuidnames[0x2905] = QStringLiteral("Characteristic Aggregate Format"); - uuidnames[0x2900] = QStringLiteral("Characteristic Extended Properties"); - uuidnames[0x2904] = QStringLiteral("Characteristic Presentation Format"); - uuidnames[0x2901] = QStringLiteral("Characteristic User Description"); - uuidnames[0x2902] = QStringLiteral("Client Characteristic Configuration"); - uuidnames[0x2907] = QStringLiteral("External Report Reference"); - uuidnames[0x2908] = QStringLiteral("Report Reference"); - uuidnames[0x2903] = QStringLiteral("Server Characteristic Configuration"); - uuidnames[0x2906] = QStringLiteral("Valid Range"); - } - QString name = uuidnames.value(uuid.toUInt16(), QStringLiteral("Unknow Descriptor")); - return name; -} - QLowEnergyDescriptorInfoPrivate::QLowEnergyDescriptorInfoPrivate(const QBluetoothUuid &uuid, const QString &handle) - : m_uuid(uuid), m_handle(handle) + : m_uuid(uuid), m_handle(handle), + m_type(QBluetoothUuid::ClientCharacteristicConfiguration) //by default a notification { #ifdef QT_QNX_BLUETOOTH instance = -1; @@ -95,7 +78,6 @@ QLowEnergyDescriptorInfoPrivate::~QLowEnergyDescriptorInfoPrivate() QLowEnergyDescriptorInfo::QLowEnergyDescriptorInfo(const QBluetoothUuid &uuid): d_ptr(new QLowEnergyDescriptorInfoPrivate(uuid, QStringLiteral("0x0000"))) { - } /*! @@ -109,7 +91,6 @@ QLowEnergyDescriptorInfo::QLowEnergyDescriptorInfo(const QBluetoothUuid &uuid, d_ptr(new QLowEnergyDescriptorInfoPrivate(uuid, handle)) { d_ptr->m_type = type; - d_ptr->m_name = parseDescriptorUuid(uuid); } /*! @@ -157,11 +138,16 @@ QByteArray QLowEnergyDescriptorInfo::value() const } /*! - Returns the name of the descriptor. + Returns the name of the descriptor type. + + \sa type() */ +//TODO check that we really need this function. The static +// QBluetoothUuid::descriptorToString should actually be sufficient. QString QLowEnergyDescriptorInfo::name() const { - return d_ptr->m_name; + return QBluetoothUuid::descriptorToString( + static_cast(d_ptr->m_type)); } /*! diff --git a/src/bluetooth/qlowenergydescriptorinfo.h b/src/bluetooth/qlowenergydescriptorinfo.h index 64233776..f54e3662 100644 --- a/src/bluetooth/qlowenergydescriptorinfo.h +++ b/src/bluetooth/qlowenergydescriptorinfo.h @@ -57,6 +57,8 @@ class Q_BLUETOOTH_EXPORT QLowEnergyDescriptorInfo { friend class QLowEnergyControllerPrivate; public: + //TODO - add QLowEnergyDescriptorInfo() <- for invalid descriptor object + // - remove QLowEnergyDescriptorInfo(QBluetoothUuid) <- not really needed explicit QLowEnergyDescriptorInfo(const QBluetoothUuid &uuid); ~QLowEnergyDescriptorInfo(); diff --git a/src/bluetooth/qlowenergydescriptorinfo_p.h b/src/bluetooth/qlowenergydescriptorinfo_p.h index fb177dfe..3ec1cb26 100644 --- a/src/bluetooth/qlowenergydescriptorinfo_p.h +++ b/src/bluetooth/qlowenergydescriptorinfo_p.h @@ -55,7 +55,6 @@ public: QByteArray m_value; QBluetoothUuid m_uuid; QString m_handle; - QString m_name; QBluetoothUuid::DescriptorType m_type; #ifdef QT_QNX_BLUETOOTH int instance; -- cgit v1.2.3