summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Blasche <alexander.blasche@qt.io>2017-04-06 10:55:48 +0200
committerAlex Blasche <alexander.blasche@qt.io>2017-04-07 06:58:49 +0000
commite83df9ffb98981bad53cf077faa3cfde8f0eb5b1 (patch)
tree0d78068e79ac005bfb37c4d899cb447d3d320fdc
parent2274719da5e5cade5dcfc8838d7b65bc04099da9 (diff)
Use heartrate-game example for snippets in BTLE overview
heartlistener example will be removed. Change-Id: Iaa5c5f629cf351b97c18f61b4fab2cbbd8d0744c Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
-rw-r--r--examples/bluetooth/heartrate-game/devicefinder.cpp9
-rw-r--r--examples/bluetooth/heartrate-game/devicehandler.cpp12
-rw-r--r--src/bluetooth/doc/src/bluetooth-le-overview.qdoc27
3 files changed, 34 insertions, 14 deletions
diff --git a/examples/bluetooth/heartrate-game/devicefinder.cpp b/examples/bluetooth/heartrate-game/devicefinder.cpp
index 4ff967eb..aed47b6c 100644
--- a/examples/bluetooth/heartrate-game/devicefinder.cpp
+++ b/examples/bluetooth/heartrate-game/devicefinder.cpp
@@ -46,6 +46,7 @@ DeviceFinder::DeviceFinder(DeviceHandler *handler, QObject *parent):
BluetoothBaseClass(parent),
m_deviceHandler(handler)
{
+ //! [devicediscovery-1]
m_deviceDiscoveryAgent = new QBluetoothDeviceDiscoveryAgent(this);
m_deviceDiscoveryAgent->setLowEnergyDiscoveryTimeout(5000);
@@ -55,6 +56,7 @@ DeviceFinder::DeviceFinder(DeviceHandler *handler, QObject *parent):
connect(m_deviceDiscoveryAgent, &QBluetoothDeviceDiscoveryAgent::finished, this, &DeviceFinder::scanFinished);
connect(m_deviceDiscoveryAgent, &QBluetoothDeviceDiscoveryAgent::canceled, this, &DeviceFinder::scanFinished);
+ //! [devicediscovery-1]
#ifdef SIMULATOR
@@ -82,21 +84,28 @@ void DeviceFinder::startSearch()
#ifdef SIMULATOR
m_demoTimer.start();
#else
+ //! [devicediscovery-2]
m_deviceDiscoveryAgent->start(QBluetoothDeviceDiscoveryAgent::LowEnergyMethod);
+ //! [devicediscovery-2]
#endif
emit scanningChanged();
setInfo(tr("Scanning for devices..."));
}
+//! [devicediscovery-3]
void DeviceFinder::addDevice(const QBluetoothDeviceInfo &device)
{
// If device is LowEnergy-device, add it to the list
if (device.coreConfigurations() & QBluetoothDeviceInfo::LowEnergyCoreConfiguration) {
m_devices.append(new DeviceInfo(device));
setInfo(tr("Low Energy device found. Scanning more..."));
+//! [devicediscovery-3]
emit devicesChanged();
+//! [devicediscovery-4]
}
+ //...
}
+//! [devicediscovery-4]
void DeviceFinder::scanError(QBluetoothDeviceDiscoveryAgent::Error error)
{
diff --git a/examples/bluetooth/heartrate-game/devicehandler.cpp b/examples/bluetooth/heartrate-game/devicehandler.cpp
index 153a99fb..dfc514b5 100644
--- a/examples/bluetooth/heartrate-game/devicehandler.cpp
+++ b/examples/bluetooth/heartrate-game/devicehandler.cpp
@@ -103,8 +103,11 @@ void DeviceHandler::setDevice(DeviceInfo *device)
if (m_currentDevice) {
// Make connections
+ //! [Connect-Signals-1]
m_control = new QLowEnergyController(m_currentDevice->getDevice(), this);
+ //! [Connect-Signals-1]
m_control->setRemoteAddressType(m_addressType);
+ //! [Connect-Signals-2]
connect(m_control, &QLowEnergyController::serviceDiscovered,
this, &DeviceHandler::serviceDiscovered);
connect(m_control, &QLowEnergyController::discoveryFinished,
@@ -125,6 +128,7 @@ void DeviceHandler::setDevice(DeviceInfo *device)
// Connect
m_control->connectToDevice();
+ //! [Connect-Signals-2]
}
}
@@ -149,6 +153,7 @@ void DeviceHandler::stopMeasurement()
emit measuringChanged();
}
+//! [Filter HeartRate service 1]
void DeviceHandler::serviceDiscovered(const QBluetoothUuid &gatt)
{
if (gatt == QBluetoothUuid(QBluetoothUuid::HeartRate)) {
@@ -156,6 +161,7 @@ void DeviceHandler::serviceDiscovered(const QBluetoothUuid &gatt)
m_foundHeartRateService = true;
}
}
+//! [Filter HeartRate service 1]
void DeviceHandler::serviceScanDone()
{
@@ -167,6 +173,7 @@ void DeviceHandler::serviceScanDone()
m_service = 0;
}
+//! [Filter HeartRate service 2]
// If heartRateService found, create new service
if (m_foundHeartRateService)
m_service = m_control->createServiceObject(QBluetoothUuid(QBluetoothUuid::HeartRate), this);
@@ -179,9 +186,11 @@ void DeviceHandler::serviceScanDone()
} else {
setError("Heart Rate Service not found.");
}
+//! [Filter HeartRate service 2]
}
// Service functions
+//! [Find HRM characteristic]
void DeviceHandler::serviceStateChanged(QLowEnergyService::ServiceState s)
{
switch (s) {
@@ -211,7 +220,9 @@ void DeviceHandler::serviceStateChanged(QLowEnergyService::ServiceState s)
emit aliveChanged();
}
+//! [Find HRM characteristic]
+//! [Reading value]
void DeviceHandler::updateHeartRateValue(const QLowEnergyCharacteristic &c, const QByteArray &value)
{
// ignore any other characteristic change -> shouldn't really happen though
@@ -230,6 +241,7 @@ void DeviceHandler::updateHeartRateValue(const QLowEnergyCharacteristic &c, cons
addMeasurement(hrvalue);
}
+//! [Reading value]
#ifdef SIMULATOR
void DeviceHandler::updateDemoHR()
diff --git a/src/bluetooth/doc/src/bluetooth-le-overview.qdoc b/src/bluetooth/doc/src/bluetooth-le-overview.qdoc
index a2fb10d9..a29f88d0 100644
--- a/src/bluetooth/doc/src/bluetooth-le-overview.qdoc
+++ b/src/bluetooth/doc/src/bluetooth-le-overview.qdoc
@@ -165,7 +165,7 @@ Low Energy devices.
their services, as well as reading and writing data stored on the device.
On the server side, it allows to set up services, advertise them, and get notified when the
client writes characteristics.
- The example code below is taken from the \l {heartlistener}{Heart Listener} and
+ The example code below is taken from the \l {heartrate-game}{Heart Rate Game} and
\l {heartrate-server}{Heart Rate Server} examples.
\section2 Establishing a Connection
@@ -176,15 +176,15 @@ Low Energy devices.
\l QBluetoothDeviceDiscoveryAgent class. We connect to its \l {QBluetoothDeviceDiscoveryAgent::deviceDiscovered()}
signal and start the search with \l {QBluetoothDeviceDiscoveryAgent::start()}{start()}:
- \snippet heartlistener/heartrate.cpp devicediscovery-1
- \snippet heartlistener/heartrate.cpp devicediscovery-2
+ \snippet heartrate-game/devicefinder.cpp devicediscovery-1
+ \snippet heartrate-game/devicefinder.cpp devicediscovery-2
Since we are only interested in Low Energy devices we filter the device type within the
receiving slot. The device type can be ascertained using the \l QBluetoothDeviceInfo::coreConfigurations()
flag:
- \snippet heartlistener/heartrate.cpp devicediscovery-3
- \snippet heartlistener/heartrate.cpp devicediscovery-4
+ \snippet heartrate-game/devicefinder.cpp devicediscovery-3
+ \snippet heartrate-game/devicefinder.cpp devicediscovery-4
Once the address of the peripheral device is known we use the \l QLowEnergyController class.
This class is the entry point for all Bluetooth Low Energy development. The constructor of the class
@@ -192,20 +192,20 @@ Low Energy devices.
directly connect to the device using
\l {QLowEnergyController::connectToDevice()}{connectToDevice()}:
- \snippet heartlistener/heartrate.cpp Connect signals
+ \snippet heartrate-game/devicehandler.cpp Connect-Signals-1
+ \snippet heartrate-game/devicehandler.cpp Connect-Signals-2
\section2 Service Search
- As soon as the connection is established we initiate the service discovery:
-
- \snippet heartlistener/heartrate.cpp Connecting to service
+ The above code snippet how the application initiates the service discovery once the connection has
+ been established.
The \c serviceDiscovered() slot below is triggered as a result of the
\l {QLowEnergyController::serviceDiscovered()} signal and provides an intermittent progress report.
Since we are talking about the heart listener app which monitors HeartRate devices in the vicinity
we ignore any service that is not of type \l QBluetoothUuid::HeartRate.
- \snippet heartlistener/heartrate.cpp Filter HeartRate service 1
+ \snippet heartrate-game/devicehandler.cpp Filter HeartRate service 1
Eventually the \l {QLowEnergyController::discoveryFinished()} signal is emitted to indicate
the successful completion of the service discovery. Provided a HeartRate service was found,
@@ -213,14 +213,14 @@ Low Energy devices.
provides the required signals for update notifications and the discovery of service details
is triggered using \l QLowEnergyService::discoverDetails():
- \snippet heartlistener/heartrate.cpp Filter HeartRate service 2
+ \snippet heartrate-game/devicehandler.cpp Filter HeartRate service 2
During the detail search the service's \l {QLowEnergyService::state()}{state()} transitions
from \l {QLowEnergyService::DiscoveryRequired}{DiscoveryRequired} to
\l {QLowEnergyService::DiscoveringServices}{DiscoveringServices} and eventually ends with
\l {QLowEnergyService::ServiceDiscovered}{ServiceDiscovered}:
- \snippet heartlistener/heartrate.cpp Find HRM characteristic
+ \snippet heartrate-game/devicehandler.cpp Find HRM characteristic
\section2 Interaction with the Peripheral Device
@@ -235,8 +235,7 @@ Low Energy devices.
Finally, we process the value of the HeartRate characteristic, as per Bluetooth Low Energy standard:
- \snippet heartlistener/heartrate.cpp Reading value 1
- \snippet heartlistener/heartrate.cpp Reading value 2
+ \snippet heartrate-game/devicehandler.cpp Reading value
In general a characteristic value is a series of bytes. The precise interpretation of
those bytes depends on the characteristic type and value structure.