summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@theqtcompany.com>2015-12-14 11:19:30 +0100
committerAlex Blasche <alexander.blasche@theqtcompany.com>2015-12-15 06:45:24 +0000
commitc3f9fdeb39804b94f70016a9e48f0e4faea22d09 (patch)
treef57cbc95619d88a1796f16e80216e688fbfa643e /examples
parentcd81e43c26ea998aa009ea452e5723059ded8595 (diff)
Bluetooth: Fix undefined behavior in example.
Change-Id: I85312373f8feca9f117faf8c4b0f0f517c33e9f3 Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/bluetooth/heartlistener/heartrate.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/examples/bluetooth/heartlistener/heartrate.cpp b/examples/bluetooth/heartlistener/heartrate.cpp
index fe53a740..08433195 100644
--- a/examples/bluetooth/heartlistener/heartrate.cpp
+++ b/examples/bluetooth/heartlistener/heartrate.cpp
@@ -41,6 +41,8 @@
#include "heartrate.h"
+#include <QtEndian>
+
HeartRate::HeartRate():
m_currentDevice(QBluetoothDeviceInfo()), foundHeartRateService(false),
m_max(0), m_min(0), calories(0), m_control(0), timer(0),
@@ -301,16 +303,16 @@ void HeartRate::updateHeartRateValue(const QLowEnergyCharacteristic &c,
return;
- const char *data = value.constData();
+ const quint8 *data = reinterpret_cast<const quint8 *>(value.constData());
quint8 flags = data[0];
//Heart Rate
if (flags & 0x1) { // HR 16 bit? otherwise 8 bit
- quint16 *heartRate = (quint16 *) &data[1];
- //qDebug() << "16 bit HR value:" << *heartRate;
- m_measurements.append(*heartRate);
+ const quint16 heartRate = qFromLittleEndian<quint16>(data[1]);
+ //qDebug() << "16 bit HR value:" << heartRate;
+ m_measurements.append(heartRate);
} else {
- quint8 *heartRate = (quint8 *) &data[1];
+ const quint8 *heartRate = &data[1];
m_measurements.append(*heartRate);
//qDebug() << "8 bit HR value:" << *heartRate;
}
@@ -318,8 +320,8 @@ void HeartRate::updateHeartRateValue(const QLowEnergyCharacteristic &c,
//Energy Expended
if (flags & 0x8) {
int index = (flags & 0x1) ? 5 : 3;
- quint16 *energy = (quint16 *) &data[index];
- qDebug() << "Used Energy:" << *energy;
+ const quint16 energy = qFromLittleEndian<quint16>(data[index]);
+ qDebug() << "Used Energy:" << energy;
}
//! [Reading value 1]