| /**************************************************************************** |
| ** |
| ** 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$ |
| ** |
| ****************************************************************************/ |
| |
| #ifndef QBLUETOOTHUUID_H |
| #define QBLUETOOTHUUID_H |
| |
| #include <QtBluetooth/qtbluetoothglobal.h> |
| |
| #include <QtCore/QtGlobal> |
| #include <QtCore/QMetaType> |
| #include <QtCore/QUuid> |
| |
| #include <QtCore/QDebug> |
| |
| QT_BEGIN_NAMESPACE |
| |
| struct quint128 |
| { |
| quint8 data[16]; |
| }; |
| |
| class Q_BLUETOOTH_EXPORT QBluetoothUuid : public QUuid |
| { |
| public: |
| //TODO Qt 6: Convert enums to scoped enums (see QTBUG-65831) |
| enum ProtocolUuid { |
| Sdp = 0x0001, |
| Udp = 0x0002, |
| Rfcomm = 0x0003, |
| Tcp = 0x0004, |
| TcsBin = 0x0005, |
| TcsAt = 0x0006, |
| Att = 0x0007, |
| Obex = 0x0008, |
| Ip = 0x0009, |
| Ftp = 0x000A, |
| Http = 0x000C, |
| Wsp = 0x000E, |
| Bnep = 0x000F, |
| Upnp = 0x0010, |
| Hidp = 0x0011, |
| HardcopyControlChannel = 0x0012, |
| HardcopyDataChannel = 0x0014, |
| HardcopyNotification = 0x0016, |
| Avctp = 0x0017, |
| Avdtp = 0x0019, |
| Cmtp = 0x001B, |
| UdiCPlain = 0x001D, |
| McapControlChannel = 0x001E, |
| McapDataChannel = 0x001F, |
| L2cap = 0x0100 |
| }; |
| |
| enum ServiceClassUuid { |
| ServiceDiscoveryServer = 0x1000, |
| BrowseGroupDescriptor = 0x1001, |
| PublicBrowseGroup = 0x1002, |
| SerialPort = 0x1101, |
| LANAccessUsingPPP = 0x1102, |
| DialupNetworking = 0x1103, |
| IrMCSync = 0x1104, |
| ObexObjectPush = 0x1105, |
| OBEXFileTransfer = 0x1106, |
| IrMCSyncCommand = 0x1107, |
| Headset = 0x1108, |
| AudioSource = 0x110a, |
| AudioSink = 0x110b, |
| AV_RemoteControlTarget = 0x110c, |
| AdvancedAudioDistribution = 0x110d, |
| AV_RemoteControl = 0x110e, |
| AV_RemoteControlController = 0x110f, |
| HeadsetAG = 0x1112, |
| PANU = 0x1115, |
| NAP = 0x1116, |
| GN = 0x1117, |
| DirectPrinting = 0x1118, |
| ReferencePrinting = 0x1119, |
| BasicImage = 0x111a, |
| ImagingResponder = 0x111b, |
| ImagingAutomaticArchive = 0x111c, |
| ImagingReferenceObjects = 0x111d, |
| Handsfree = 0x111e, |
| HandsfreeAudioGateway = 0x111f, |
| DirectPrintingReferenceObjectsService = 0x1120, |
| ReflectedUI = 0x1121, |
| BasicPrinting = 0x1122, |
| PrintingStatus = 0x1123, |
| HumanInterfaceDeviceService = 0x1124, |
| HardcopyCableReplacement = 0x1125, |
| HCRPrint = 0x1126, |
| HCRScan = 0x1127, |
| SIMAccess = 0x112d, |
| PhonebookAccessPCE = 0x112e, |
| PhonebookAccessPSE = 0x112f, |
| PhonebookAccess = 0x1130, |
| HeadsetHS = 0x1131, |
| MessageAccessServer = 0x1132, |
| MessageNotificationServer = 0x1133, |
| MessageAccessProfile = 0x1134, |
| GNSS = 0x1135, |
| GNSSServer = 0x1136, |
| Display3D = 0x1137, |
| Glasses3D = 0x1138, |
| Synchronization3D = 0x1139, |
| MPSProfile = 0x113a, |
| MPSService = 0x113b, |
| PnPInformation = 0x1200, |
| GenericNetworking = 0x1201, |
| GenericFileTransfer = 0x1202, |
| GenericAudio = 0x1203, |
| GenericTelephony = 0x1204, |
| VideoSource = 0x1303, |
| VideoSink = 0x1304, |
| VideoDistribution = 0x1305, |
| HDP = 0x1400, |
| HDPSource = 0x1401, |
| HDPSink = 0x1402, |
| GenericAccess = 0x1800, |
| GenericAttribute = 0x1801, |
| ImmediateAlert = 0x1802, |
| LinkLoss = 0x1803, |
| TxPower = 0x1804, |
| CurrentTimeService = 0x1805, |
| ReferenceTimeUpdateService = 0x1806, |
| NextDSTChangeService = 0x1807, |
| Glucose = 0x1808, |
| HealthThermometer = 0x1809, |
| DeviceInformation = 0x180a, |
| HeartRate = 0x180d, |
| PhoneAlertStatusService = 0x180e, |
| BatteryService = 0x180f, |
| BloodPressure = 0x1810, |
| AlertNotificationService = 0x1811, |
| HumanInterfaceDevice = 0x1812, |
| ScanParameters = 0x1813, |
| RunningSpeedAndCadence = 0x1814, |
| CyclingSpeedAndCadence = 0x1816, |
| CyclingPower = 0x1818, |
| LocationAndNavigation = 0x1819, |
| EnvironmentalSensing = 0x181a, |
| BodyComposition = 0x181b, |
| UserData = 0x181c, |
| WeightScale = 0x181d, |
| BondManagement = 0x181e, |
| ContinuousGlucoseMonitoring = 0x181f |
| }; |
| |
| enum CharacteristicType { |
| DeviceName = 0x2a00, |
| Appearance = 0x2a01, |
| PeripheralPrivacyFlag = 0x2a02, |
| ReconnectionAddress = 0x2a03, |
| PeripheralPreferredConnectionParameters = 0x2a04, |
| ServiceChanged = 0x2a05, |
| AlertLevel = 0x2a06, |
| TxPowerLevel = 0x2a07, |
| DateTime = 0x2a08, |
| DayOfWeek = 0x2a09, |
| DayDateTime = 0x2a0a, |
| /* 0x2a0b not defined */ |
| ExactTime256 = 0x2a0c, |
| DSTOffset = 0x2a0d, |
| TimeZone = 0x2a0e, |
| LocalTimeInformation = 0x2a0f, |
| /* 0x2a10 not defined */ |
| TimeWithDST = 0x2a11, |
| TimeAccuracy = 0x2a12, |
| TimeSource = 0x2a13, |
| ReferenceTimeInformation = 0x2a14, |
| /* 0x2a15 not defined */ |
| TimeUpdateControlPoint = 0x2a16, |
| TimeUpdateState = 0x2a17, |
| GlucoseMeasurement = 0x2a18, |
| BatteryLevel = 0x2a19, |
| /* 0x2a1a not defined */ |
| /* 0x2a1b not defined */ |
| TemperatureMeasurement = 0x2a1c, |
| TemperatureType = 0x2a1d, |
| IntermediateTemperature = 0x2a1e, |
| /* 0x2a1f not defined */ |
| /* 0x2a20 not defined */ |
| MeasurementInterval = 0x2a21, |
| BootKeyboardInputReport = 0x2a22, |
| SystemID = 0x2a23, |
| ModelNumberString = 0x2a24, |
| SerialNumberString = 0x2a25, |
| FirmwareRevisionString = 0x2a26, |
| HardwareRevisionString = 0x2a27, |
| SoftwareRevisionString = 0x2a28, |
| ManufacturerNameString = 0x2a29, |
| IEEE1107320601RegulatoryCertificationDataList = 0x2a2a, |
| CurrentTime = 0x2a2b, |
| MagneticDeclination = 0x2a2c, |
| /* 0x2a2d not defined */ |
| /* 0x2a2e not defined */ |
| /* 0x2a2f not defined */ |
| /* 0x2a30 not defined */ |
| ScanRefresh = 0x2a31, |
| BootKeyboardOutputReport = 0x2a32, |
| BootMouseInputReport = 0x2a33, |
| GlucoseMeasurementContext = 0x2a34, |
| BloodPressureMeasurement = 0x2a35, |
| IntermediateCuffPressure = 0x2a36, |
| HeartRateMeasurement = 0x2a37, |
| BodySensorLocation = 0x2a38, |
| HeartRateControlPoint = 0x2a39, |
| /* 0x2a3a not defined */ |
| /* 0x2a3b not defined */ |
| /* 0x2a3c not defined */ |
| /* 0x2a3d not defined */ |
| /* 0x2a3e not defined */ |
| AlertStatus = 0x2a3f, |
| RingerControlPoint = 0x2a40, |
| RingerSetting = 0x2a41, |
| AlertCategoryIDBitMask = 0x2a42, |
| AlertCategoryID = 0x2a43, |
| AlertNotificationControlPoint = 0x2a44, |
| UnreadAlertStatus = 0x2a45, |
| NewAlert = 0x2a46, |
| SupportedNewAlertCategory = 0x2a47, |
| SupportedUnreadAlertCategory = 0x2a48, |
| BloodPressureFeature = 0x2a49, |
| HIDInformation = 0x2a4a, |
| ReportMap = 0x2a4b, |
| HIDControlPoint = 0x2a4c, |
| Report = 0x2a4d, |
| ProtocolMode = 0x2a4e, |
| ScanIntervalWindow = 0x2a4f, |
| PnPID = 0x2a50, |
| GlucoseFeature = 0x2a51, |
| RecordAccessControlPoint = 0x2a52, |
| RSCMeasurement = 0x2a53, |
| RSCFeature = 0x2a54, |
| SCControlPoint = 0x2a55, |
| /* 0x2a56 not defined */ |
| /* 0x2a57 not defined */ |
| /* 0x2a58 not defined */ |
| /* 0x2a59 not defined */ |
| /* 0x2a5a not defined */ |
| CSCMeasurement = 0x2a5b, |
| CSCFeature = 0x2a5c, |
| SensorLocation = 0x2a5d, |
| /* 0x2a5e not defined */ |
| /* 0x2a5f not defined */ |
| /* 0x2a60 not defined */ |
| /* 0x2a61 not defined */ |
| /* 0x2a62 not defined */ |
| CyclingPowerMeasurement = 0x2a63, |
| CyclingPowerVector = 0x2a64, |
| CyclingPowerFeature = 0x2a65, |
| CyclingPowerControlPoint = 0x2a66, |
| LocationAndSpeed = 0x2a67, |
| Navigation = 0x2a68, |
| PositionQuality = 0x2a69, |
| LNFeature = 0x2a6a, |
| LNControlPoint = 0x2a6b, |
| Elevation = 0x2a6c, |
| Pressure = 0x2a6d, |
| Temperature = 0x2a6e, |
| Humidity = 0x2a6f, |
| TrueWindSpeed = 0x2a70, |
| TrueWindDirection = 0x2a71, |
| ApparentWindSpeed = 0x2a72, |
| ApparentWindDirection = 0x2a73, |
| GustFactor = 0x2a74, |
| PollenConcentration = 0x2a75, |
| UVIndex = 0x2a76, |
| Irradiance = 0x2a77, |
| Rainfall = 0x2a78, |
| WindChill = 0x2a79, |
| HeatIndex = 0x2a7a, |
| DewPoint = 0x2a7b, |
| /* 0x2a7c not defined */ |
| DescriptorValueChanged = 0x2a7d, |
| AerobicHeartRateLowerLimit = 0x2a7e, |
| AerobicThreshold = 0x2a7f, |
| Age = 0x2a80, |
| AnaerobicHeartRateLowerLimit = 0x2a81, |
| AnaerobicHeartRateUpperLimit = 0x2a82, |
| AnaerobicThreshold = 0x2a83, |
| AerobicHeartRateUpperLimit = 0x2a84, |
| DateOfBirth = 0x2a85, |
| DateOfThresholdAssessment = 0x2a86, |
| EmailAddress = 0x2a87, |
| FatBurnHeartRateLowerLimit = 0x2a88, |
| FatBurnHeartRateUpperLimit = 0x2a89, |
| FirstName = 0x2a8a, |
| FiveZoneHeartRateLimits = 0x2a8b, |
| Gender = 0x2a8c, |
| HeartRateMax = 0x2a8d, |
| Height = 0x2a8e, |
| HipCircumference = 0x2a8f, |
| LastName = 0x2a90, |
| MaximumRecommendedHeartRate = 0x2a91, |
| RestingHeartRate = 0x2a92, |
| SportTypeForAerobicAnaerobicThresholds = 0x2a93, |
| ThreeZoneHeartRateLimits = 0x2a94, |
| TwoZoneHeartRateLimits = 0x2a95, |
| VO2Max = 0x2a96, |
| WaistCircumference = 0x2a97, |
| Weight = 0x2a98, |
| DatabaseChangeIncrement = 0x2a99, |
| UserIndex = 0x2a9a, |
| BodyCompositionFeature = 0x2a9b, |
| BodyCompositionMeasurement = 0x2a9c, |
| WeightMeasurement = 0x2a9d, |
| WeightScaleFeature = 0x2a9e, |
| UserControlPoint = 0x2a9f, |
| MagneticFluxDensity2D = 0x2aa0, |
| MagneticFluxDensity3D = 0x2aa1, |
| Language = 0x2aa2, |
| BarometricPressureTrend = 0x2aa3 |
| }; |
| |
| enum DescriptorType { |
| UnknownDescriptorType = 0x0, |
| CharacteristicExtendedProperties = 0x2900, |
| CharacteristicUserDescription = 0x2901, |
| ClientCharacteristicConfiguration = 0x2902, |
| ServerCharacteristicConfiguration = 0x2903, |
| CharacteristicPresentationFormat = 0x2904, |
| CharacteristicAggregateFormat = 0x2905, |
| ValidRange = 0x2906, |
| ExternalReportReference = 0x2907, |
| ReportReference = 0x2908, |
| /* 0x2909 not defined */ |
| /* 0x290a not defined */ |
| EnvironmentalSensingConfiguration = 0x290b, |
| EnvironmentalSensingMeasurement = 0x290c, |
| EnvironmentalSensingTriggerSetting = 0x290d |
| }; |
| |
| QBluetoothUuid(); |
| QBluetoothUuid(ProtocolUuid uuid); |
| QBluetoothUuid(ServiceClassUuid uuid); |
| QBluetoothUuid(CharacteristicType uuid); |
| QBluetoothUuid(DescriptorType uuid); |
| explicit QBluetoothUuid(quint16 uuid); |
| explicit QBluetoothUuid(quint32 uuid); |
| explicit QBluetoothUuid(quint128 uuid); |
| explicit QBluetoothUuid(const QString &uuid); |
| QBluetoothUuid(const QBluetoothUuid &uuid); |
| QBluetoothUuid(const QUuid &uuid); |
| ~QBluetoothUuid(); |
| |
| bool operator==(const QBluetoothUuid &other) const; |
| bool operator!=(const QBluetoothUuid &other) const { return !operator==(other); } |
| |
| QBluetoothUuid &operator=(const QBluetoothUuid &other) = default; |
| |
| int minimumSize() const; |
| |
| quint16 toUInt16(bool *ok = nullptr) const; |
| quint32 toUInt32(bool *ok = nullptr) const; |
| quint128 toUInt128() const; |
| |
| static QString serviceClassToString(ServiceClassUuid uuid); |
| static QString protocolToString(ProtocolUuid uuid); |
| static QString characteristicToString(CharacteristicType uuid); |
| static QString descriptorToString(DescriptorType uuid); |
| }; |
| |
| #ifndef QT_NO_DATASTREAM |
| inline QDataStream &operator<<(QDataStream &s, const QBluetoothUuid &uuid) |
| { |
| return s << static_cast<const QUuid &>(uuid); |
| } |
| |
| inline QDataStream &operator>>(QDataStream &s, QBluetoothUuid &uuid) |
| { |
| return s >> static_cast<QUuid &>(uuid); |
| } |
| #endif |
| |
| #ifndef QT_NO_DEBUG_STREAM |
| /// TODO: Move implementation to .cpp, uninline and add Q_BLUETOOTH_EXPORT for Qt 6 |
| inline QDebug operator<<(QDebug debug, const QBluetoothUuid &uuid) |
| { |
| debug << uuid.toString(); |
| return debug; |
| } |
| #endif |
| |
| QT_END_NAMESPACE |
| |
| Q_DECLARE_METATYPE(QBluetoothUuid) |
| |
| #endif |