/usr/share/qt5/doc/qtbluetooth/qlowenergycontroller.html is in qtconnectivity5-doc-html 5.7.1~20161021-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 | <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- qlowenergycontroller.cpp -->
<title>QLowEnergyController Class | Qt Bluetooth 5.7</title>
<link rel="stylesheet" type="text/css" href="style/offline-simple.css" />
<script type="text/javascript">
window.onload = function(){document.getElementsByTagName("link").item(0).setAttribute("href", "style/offline.css");};
</script>
</head>
<body>
<div class="header" id="qtdocheader">
<div class="main">
<div class="main-rounded">
<div class="navigationbar">
<table><tr>
<td >Qt 5.7</td><td ><a href="qtbluetooth-index.html">Qt Bluetooth</a></td><td ><a href="qtbluetooth-module.html">C++ Classes</a></td><td >QLowEnergyController</td></tr></table><table class="buildversion"><tr>
<td id="buildversion" width="100%" align="right">Qt 5.7.1 Reference Documentation</td>
</tr></table>
</div>
</div>
<div class="content">
<div class="line">
<div class="content mainContent">
<div class="sidebar">
<div class="toc">
<h3><a name="toc">Contents</a></h3>
<ul>
<li class="level1"><a href="#public-types">Public Types</a></li>
<li class="level1"><a href="#public-functions">Public Functions</a></li>
<li class="level1"><a href="#signals">Signals</a></li>
<li class="level1"><a href="#static-public-members">Static Public Members</a></li>
<li class="level1"><a href="#details">Detailed Description</a></li>
</ul>
</div>
<div class="sidebar-content" id="sidebar-content"></div></div>
<h1 class="title">QLowEnergyController Class</h1>
<!-- $$$QLowEnergyController-brief -->
<p>The <a href="qlowenergycontroller.html">QLowEnergyController</a> class provides access to Bluetooth Low Energy Devices. <a href="#details">More...</a></p>
<!-- @@@QLowEnergyController -->
<div class="table"><table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> Header:</td><td class="memItemRight bottomAlign"> <span class="preprocessor">#include <QLowEnergyController></span>
</td></tr><tr><td class="memItemLeft rightAlign topAlign"> qmake:</td><td class="memItemRight bottomAlign"> QT += bluetooth</td></tr><tr><td class="memItemLeft rightAlign topAlign"> Since:</td><td class="memItemRight bottomAlign"> Qt 5.4</td></tr><tr><td class="memItemLeft rightAlign topAlign"> Inherits:</td><td class="memItemRight bottomAlign"> <a href="../qtcore/qobject.html">QObject</a></td></tr></table></div><ul>
<li><a href="qlowenergycontroller-members.html">List of all members, including inherited members</a></li>
<li><a href="qlowenergycontroller-obsolete.html">Obsolete members</a></li>
</ul>
<a name="public-types"></a>
<h2 id="public-types">Public Types</h2>
<div class="table"><table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> enum </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#ControllerState-enum">ControllerState</a></b> { UnconnectedState, ConnectingState, ConnectedState, DiscoveringState, ..., AdvertisingState }</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> enum </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#Error-enum">Error</a></b> { NoError, UnknownError, UnknownRemoteDeviceError, NetworkError, ..., AdvertisingError }</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> enum </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#RemoteAddressType-enum">RemoteAddressType</a></b> { PublicAddress, RandomAddress }</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> enum </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#Role-enum">Role</a></b> { CentralRole, PeripheralRole }</td></tr>
</table></div>
<a name="public-functions"></a>
<h2 id="public-functions">Public Functions</h2>
<div class="table"><table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#dtor.QLowEnergyController">~QLowEnergyController</a></b>()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QLowEnergyService *</td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#addService">addService</a></b>(const QLowEnergyServiceData &<i>service</i>, QObject *<i>parent</i> = nullptr)</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#connectToDevice">connectToDevice</a></b>()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QLowEnergyService *</td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#createServiceObject">createServiceObject</a></b>(const QBluetoothUuid &<i>serviceUuid</i>, QObject *<i>parent</i> = Q_NULLPTR)</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#disconnectFromDevice">disconnectFromDevice</a></b>()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#discoverServices">discoverServices</a></b>()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> Error </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#error">error</a></b>() const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QString </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#errorString">errorString</a></b>() const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QBluetoothAddress </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#localAddress">localAddress</a></b>() const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QBluetoothAddress </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#remoteAddress">remoteAddress</a></b>() const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> RemoteAddressType </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#remoteAddressType">remoteAddressType</a></b>() const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QString </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#remoteName">remoteName</a></b>() const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#requestConnectionUpdate">requestConnectionUpdate</a></b>(const QLowEnergyConnectionParameters &<i>parameters</i>)</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> Role </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#role">role</a></b>() const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QList<QBluetoothUuid> </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#services">services</a></b>() const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#setRemoteAddressType">setRemoteAddressType</a></b>(RemoteAddressType <i>type</i>)</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#startAdvertising">startAdvertising</a></b>(const QLowEnergyAdvertisingParameters &<i>parameters</i>, const QLowEnergyAdvertisingData &<i>advertisingData</i>, const QLowEnergyAdvertisingData &<i>scanResponseData</i> = QLowEnergyAdvertisingData())</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> ControllerState </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#state">state</a></b>() const</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#stopAdvertising">stopAdvertising</a></b>()</td></tr>
</table></div>
<ul>
<li class="fn">31 public functions inherited from <a href="../qtcore/qobject.html#public-functions">QObject</a></li>
</ul>
<a name="signals"></a>
<h2 id="signals">Signals</h2>
<div class="table"><table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#connected">connected</a></b>()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#connectionUpdated">connectionUpdated</a></b>(const QLowEnergyConnectionParameters &<i>newParameters</i>)</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#disconnected">disconnected</a></b>()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#discoveryFinished">discoveryFinished</a></b>()</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#error-1">error</a></b>(QLowEnergyController::Error <i>newError</i>)</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#serviceDiscovered">serviceDiscovered</a></b>(const QBluetoothUuid &<i>newService</i>)</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> void </td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#stateChanged">stateChanged</a></b>(QLowEnergyController::ControllerState <i>state</i>)</td></tr>
</table></div>
<ul>
<li class="fn">2 signals inherited from <a href="../qtcore/qobject.html#signals">QObject</a></li>
</ul>
<a name="static-public-members"></a>
<h2 id="static-public-members">Static Public Members</h2>
<div class="table"><table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> QLowEnergyController *</td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#createCentral">createCentral</a></b>(const QBluetoothDeviceInfo &<i>remoteDevice</i>, QObject *<i>parent</i> = nullptr)</td></tr>
<tr><td class="memItemLeft rightAlign topAlign"> QLowEnergyController *</td><td class="memItemRight bottomAlign"><b><a href="qlowenergycontroller.html#createPeripheral">createPeripheral</a></b>(QObject *<i>parent</i> = nullptr)</td></tr>
</table></div>
<ul>
<li class="fn">10 static public members inherited from <a href="../qtcore/qobject.html#static-public-members">QObject</a></li>
</ul>
<h3>Additional Inherited Members</h3>
<ul>
<li class="fn">1 property inherited from <a href="../qtcore/qobject.html#properties">QObject</a></li>
<li class="fn">1 public slot inherited from <a href="../qtcore/qobject.html#public-slots">QObject</a></li>
<li class="fn">1 public variable inherited from <a href="../qtcore/qobject.html#public-variables">QObject</a></li>
<li class="fn">9 protected functions inherited from <a href="../qtcore/qobject.html#protected-functions">QObject</a></li>
<li class="fn">2 protected variables inherited from <a href="../qtcore/qobject.html#protected-variables">QObject</a></li>
</ul>
<a name="details"></a>
<!-- $$$QLowEnergyController-description -->
<div class="descr">
<h2 id="details">Detailed Description</h2>
<p>The <a href="qlowenergycontroller.html">QLowEnergyController</a> class provides access to Bluetooth Low Energy Devices.</p>
<p><a href="qlowenergycontroller.html">QLowEnergyController</a> acts as the entry point for Bluetooth Low Energy development.</p>
<p>Bluetooth Low Energy defines two types of devices; the peripheral and the central. Each role performs a different task. The peripheral device provides data which is utilized by central devices. An example might be a humidity sensor which measures the moisture in a winter garden. A device such as a mobile phone might read the sensor's value and display it to the user in the greater context of all sensors in the same environment. In this case the sensor is the peripheral device and the mobile phone acts as the central device.</p>
<p>A controller in the central role is created via the <a href="qlowenergycontroller.html#createCentral">createCentral</a>() factory method. Such an object essentially acts as a placeholder towards a remote Low Energy peripheral device, enabling features such as service discovery and state tracking.</p>
<p>After having created a controller object in the central role, the first step is to establish a connection via <a href="qlowenergycontroller.html#connectToDevice">connectToDevice</a>(). Once the connection has been established, the controller's <a href="qlowenergycontroller.html#state">state</a>() changes to <a href="qlowenergycontroller.html#ControllerState-enum">QLowEnergyController::ConnectedState</a> and the <a href="qlowenergycontroller.html#connected">connected</a>() signal is emitted. It is important to mention that some platforms such as a BlueZ based Linux cannot maintain two connected instances of <a href="qlowenergycontroller.html">QLowEnergyController</a> to the same remote device. In such cases the second call to <a href="qlowenergycontroller.html#connectToDevice">connectToDevice</a>() may fail. This limitation may disappear at some stage in the future. The <a href="qlowenergycontroller.html#disconnectFromDevice">disconnectFromDevice</a>() function is used to break the existing connection.</p>
<p>The second step after establishing the connection is to discover the services offered by the remote peripheral device. This process is started via <a href="qlowenergycontroller.html#discoverServices">discoverServices</a>() and has finished once the <a href="qlowenergycontroller.html#discoveryFinished">discoveryFinished</a>() signal has been emitted. The discovered services can be enumerated via <a href="qlowenergycontroller.html#services">services</a>().</p>
<p>The last step is to create service objects. The <a href="qlowenergycontroller.html#createServiceObject">createServiceObject</a>() function acts as factory for each service object and expects the service UUID as parameter. The calling context should take ownership of the returned <a href="qlowenergyservice.html">QLowEnergyService</a> instance.</p>
<p>Any <a href="qlowenergyservice.html">QLowEnergyService</a>, <a href="qlowenergycharacteristic.html">QLowEnergyCharacteristic</a> or <a href="qlowenergydescriptor.html">QLowEnergyDescriptor</a> instance which is later created from this controller's connection becomes invalid as soon as the controller disconnects from the remote Bluetooth Low Energy device.</p>
<p>A controller in the peripheral role is created via the <a href="qlowenergycontroller.html#createPeripheral">createPeripheral</a>() factory method. Such an object acts as a peripheral device itself, enabling features such as advertising services and allowing clients to get notified about changes to characteristic values.</p>
<p>After having created a controller object in the peripheral role, the first step is to populate the set of GATT services offered to client devices via calls to <a href="qlowenergycontroller.html#addService">addService</a>(). Afterwards, one would call <a href="qlowenergycontroller.html#startAdvertising">startAdvertising</a>() to let the device broadcast some data and, depending on the type of advertising being done, also listen for incoming connections from GATT clients.</p>
</div>
<p><b>See also </b><a href="qlowenergyservice.html">QLowEnergyService</a>, <a href="qlowenergycharacteristic.html">QLowEnergyCharacteristic</a>, <a href="qlowenergydescriptor.html">QLowEnergyDescriptor</a>, <a href="qlowenergyadvertisingparameters.html">QLowEnergyAdvertisingParameters</a>, and <a href="qlowenergyadvertisingdata.html">QLowEnergyAdvertisingData</a>.</p>
<!-- @@@QLowEnergyController -->
<div class="types">
<h2>Member Type Documentation</h2>
<!-- $$$ControllerState$$$UnconnectedState$$$ConnectingState$$$ConnectedState$$$DiscoveringState$$$DiscoveredState$$$ClosingState$$$AdvertisingState -->
<h3 class="fn" id="ControllerState-enum"><a name="ControllerState-enum"></a>enum QLowEnergyController::<span class="name">ControllerState</span></h3>
<p>Indicates the state of the controller object.</p>
<div class="table"><table class="valuelist"><tr valign="top" class="odd"><th class="tblConst">Constant</th><th class="tblval">Value</th><th class="tbldscr">Description</th></tr>
<tr><td class="topAlign"><code>QLowEnergyController::UnconnectedState</code></td><td class="topAlign tblval"><code>0</code></td><td class="topAlign">The controller is not connected to a remote device.</td></tr>
<tr><td class="topAlign"><code>QLowEnergyController::ConnectingState</code></td><td class="topAlign tblval"><code>1</code></td><td class="topAlign">The controller is attempting to connect to a remote device.</td></tr>
<tr><td class="topAlign"><code>QLowEnergyController::ConnectedState</code></td><td class="topAlign tblval"><code>2</code></td><td class="topAlign">The controller is connected to a remote device.</td></tr>
<tr><td class="topAlign"><code>QLowEnergyController::DiscoveringState</code></td><td class="topAlign tblval"><code>3</code></td><td class="topAlign">The controller is retrieving the list of services offered by the remote device.</td></tr>
<tr><td class="topAlign"><code>QLowEnergyController::DiscoveredState</code></td><td class="topAlign tblval"><code>4</code></td><td class="topAlign">The controller has discovered all services offered by the remote device.</td></tr>
<tr><td class="topAlign"><code>QLowEnergyController::ClosingState</code></td><td class="topAlign tblval"><code>5</code></td><td class="topAlign">The controller is about to be disconnected from the remote device.</td></tr>
<tr><td class="topAlign"><code>QLowEnergyController::AdvertisingState</code></td><td class="topAlign tblval"><code>6</code></td><td class="topAlign">The controller is currently advertising data. This value was introduced by Qt 5.7.</td></tr>
</table></div>
<!-- @@@ControllerState -->
<!-- $$$Error$$$NoError$$$UnknownError$$$UnknownRemoteDeviceError$$$NetworkError$$$InvalidBluetoothAdapterError$$$ConnectionError$$$AdvertisingError -->
<h3 class="fn" id="Error-enum"><a name="Error-enum"></a>enum QLowEnergyController::<span class="name">Error</span></h3>
<p>Indicates all possible error conditions found during the controller's existence.</p>
<div class="table"><table class="valuelist"><tr valign="top" class="odd"><th class="tblConst">Constant</th><th class="tblval">Value</th><th class="tbldscr">Description</th></tr>
<tr><td class="topAlign"><code>QLowEnergyController::NoError</code></td><td class="topAlign tblval"><code>0</code></td><td class="topAlign">No error has occurred.</td></tr>
<tr><td class="topAlign"><code>QLowEnergyController::UnknownError</code></td><td class="topAlign tblval"><code>1</code></td><td class="topAlign">An unknown error has occurred.</td></tr>
<tr><td class="topAlign"><code>QLowEnergyController::UnknownRemoteDeviceError</code></td><td class="topAlign tblval"><code>2</code></td><td class="topAlign">The remote Bluetooth Low Energy device with the address passed to the constructor of this class cannot be found.</td></tr>
<tr><td class="topAlign"><code>QLowEnergyController::NetworkError</code></td><td class="topAlign tblval"><code>3</code></td><td class="topAlign">The attempt to read from or write to the remote device failed.</td></tr>
<tr><td class="topAlign"><code>QLowEnergyController::InvalidBluetoothAdapterError</code></td><td class="topAlign tblval"><code>4</code></td><td class="topAlign">The local Bluetooth device with the address passed to the constructor of this class cannot be found or there is no local Bluetooth device.</td></tr>
<tr><td class="topAlign"><code>QLowEnergyController::ConnectionError</code></td><td class="topAlign tblval"><code>5</code></td><td class="topAlign">The attempt to connect to the remote device failed. This value was introduced by Qt 5.5.</td></tr>
<tr><td class="topAlign"><code>QLowEnergyController::AdvertisingError</code></td><td class="topAlign tblval"><code>6</code></td><td class="topAlign">The attempt to start advertising failed. This value was introduced by Qt 5.7.</td></tr>
</table></div>
<!-- @@@Error -->
<!-- $$$RemoteAddressType$$$PublicAddress$$$RandomAddress -->
<h3 class="fn" id="RemoteAddressType-enum"><a name="RemoteAddressType-enum"></a>enum QLowEnergyController::<span class="name">RemoteAddressType</span></h3>
<p>Indicates what type of Bluetooth address the remote device uses.</p>
<div class="table"><table class="valuelist"><tr valign="top" class="odd"><th class="tblConst">Constant</th><th class="tblval">Value</th><th class="tbldscr">Description</th></tr>
<tr><td class="topAlign"><code>QLowEnergyController::PublicAddress</code></td><td class="topAlign tblval"><code>0</code></td><td class="topAlign">The remote device uses a public Bluetooth address.</td></tr>
<tr><td class="topAlign"><code>QLowEnergyController::RandomAddress</code></td><td class="topAlign tblval"><code>1</code></td><td class="topAlign">A random address is a Bluetooth Low Energy security feature. Peripherals using such addresses may frequently change their Bluetooth address. This information is needed when trying to connect to a peripheral.</td></tr>
</table></div>
<!-- @@@RemoteAddressType -->
<!-- $$$Role$$$CentralRole$$$PeripheralRole -->
<h3 class="fn" id="Role-enum"><a name="Role-enum"></a>enum QLowEnergyController::<span class="name">Role</span></h3>
<p>Indicates the role of the controller object.</p>
<div class="table"><table class="valuelist"><tr valign="top" class="odd"><th class="tblConst">Constant</th><th class="tblval">Value</th><th class="tbldscr">Description</th></tr>
<tr><td class="topAlign"><code>QLowEnergyController::CentralRole</code></td><td class="topAlign tblval"><code>0</code></td><td class="topAlign">The controller acts as a client interacting with a remote device which is in the peripheral role. The controller can initiate connections, discover services and read and write characteristics.</td></tr>
<tr><td class="topAlign"><code>QLowEnergyController::PeripheralRole</code></td><td class="topAlign tblval"><code>1</code></td><td class="topAlign">The controller can be used to advertise services and handle incoming connections and client requests, acting as a GATT server. A remote device connected to the controller is in the central role.</td></tr>
</table></div>
<p><b>Note: </b>The peripheral role is currently only supported on Linux. In addition, handling the "Signed Write" ATT command on the server side requires BlueZ 5 and kernel version 3.7 or newer.</p><p>This enum was introduced or modified in Qt 5.7.</p>
<p><b>See also </b><a href="qlowenergycontroller.html#createCentral">QLowEnergyController::createCentral</a>() and <a href="qlowenergycontroller.html#createPeripheral">QLowEnergyController::createPeripheral</a>().</p>
<!-- @@@Role -->
</div>
<div class="func">
<h2>Member Function Documentation</h2>
<!-- $$$~QLowEnergyController[overload1]$$$~QLowEnergyController -->
<h3 class="fn" id="dtor.QLowEnergyController"><a name="dtor.QLowEnergyController"></a>QLowEnergyController::<span class="name">~QLowEnergyController</span>()</h3>
<p>Destroys the <a href="qlowenergycontroller.html">QLowEnergyController</a> instance.</p>
<!-- @@@~QLowEnergyController -->
<!-- $$$addService[overload1]$$$addServiceconstQLowEnergyServiceData&QObject* -->
<h3 class="fn" id="addService"><a name="addService"></a><span class="type"><a href="qlowenergyservice.html">QLowEnergyService</a></span> *QLowEnergyController::<span class="name">addService</span>(const <span class="type"><a href="qlowenergyservicedata.html">QLowEnergyServiceData</a></span> &<i>service</i>, <span class="type"><a href="../qtcore/qobject.html#QObject">QObject</a></span> *<i>parent</i> = nullptr)</h3>
<p>Constructs and returns a <a href="qlowenergyservice.html">QLowEnergyService</a> object with <i>parent</i> from <i>service</i>. The controller must be in the <a href="qlowenergycontroller.html#Role-enum">PeripheralRole</a> and in the <a href="qlowenergycontroller.html#ControllerState-enum">UnconnectedState</a>. The <i>service</i> object must be valid.</p>
<p>This function was introduced in Qt 5.7.</p>
<p><b>See also </b><a href="qlowenergyservicedata.html#addIncludedService">QLowEnergyServiceData::addIncludedService</a>.</p>
<!-- @@@addService -->
<!-- $$$connectToDevice[overload1]$$$connectToDevice -->
<h3 class="fn" id="connectToDevice"><a name="connectToDevice"></a><span class="type">void</span> QLowEnergyController::<span class="name">connectToDevice</span>()</h3>
<p>Connects to the remote Bluetooth Low Energy device.</p>
<p>This function does nothing if the controller's <a href="qlowenergycontroller.html#state">state</a>() is not equal to <a href="qlowenergycontroller.html#ControllerState-enum">UnconnectedState</a>. The <a href="qlowenergycontroller.html#connected">connected</a>() signal is emitted once the connection is successfully established.</p>
<p>On Linux/BlueZ systems, it is not possible to connect to the same remote device using two instances of this class. The second call to this function may fail with an error. This limitation may be removed in future releases.</p>
<p><b>See also </b><a href="qlowenergycontroller.html#disconnectFromDevice">disconnectFromDevice</a>().</p>
<!-- @@@connectToDevice -->
<!-- $$$connected[overload1]$$$connected -->
<h3 class="fn" id="connected"><a name="connected"></a><code>[signal] </code><span class="type">void</span> QLowEnergyController::<span class="name">connected</span>()</h3>
<p>This signal is emitted when the controller successfully connects to the remote Low Energy device (if the controller is in the <a href="qlowenergycontroller.html#Role-enum">CentralRole</a>) or if a remote Low Energy device connected to the controller (if the controller is in the <a href="qlowenergycontroller.html#Role-enum">PeripheralRole</a>).</p>
<!-- @@@connected -->
<!-- $$$connectionUpdated[overload1]$$$connectionUpdatedconstQLowEnergyConnectionParameters& -->
<h3 class="fn" id="connectionUpdated"><a name="connectionUpdated"></a><code>[signal] </code><span class="type">void</span> QLowEnergyController::<span class="name">connectionUpdated</span>(const <span class="type"><a href="qlowenergyconnectionparameters.html">QLowEnergyConnectionParameters</a></span> &<i>newParameters</i>)</h3>
<p>This signal is emitted when the connection parameters change. This can happen as a result of calling <a href="qlowenergycontroller.html#requestConnectionUpdate">requestConnectionUpdate</a>() or due to other reasons, for instance because the other side of the connection requested new parameters. The new values can be retrieved from <i>newParameters</i>.</p>
<p>This function was introduced in Qt 5.7.</p>
<p><b>See also </b><a href="qlowenergycontroller.html#requestConnectionUpdate">requestConnectionUpdate</a>().</p>
<!-- @@@connectionUpdated -->
<!-- $$$createCentral[overload1]$$$createCentralconstQBluetoothDeviceInfo&QObject* -->
<h3 class="fn" id="createCentral"><a name="createCentral"></a><code>[static] </code><span class="type"><a href="qlowenergycontroller-obsolete.html#QLowEnergyController">QLowEnergyController</a></span> *QLowEnergyController::<span class="name">createCentral</span>(const <span class="type"><a href="qbluetoothdeviceinfo.html">QBluetoothDeviceInfo</a></span> &<i>remoteDevice</i>, <span class="type"><a href="../qtcore/qobject.html#QObject">QObject</a></span> *<i>parent</i> = nullptr)</h3>
<p>Returns a new object of this class that is in the <a href="qlowenergycontroller.html#Role-enum">CentralRole</a> and has the parent object <i>parent</i>. The <i>remoteDevice</i> refers to the device that a connection will be established to later.</p>
<p>The controller uses the local default Bluetooth adapter for the connection management.</p>
<p>This function was introduced in Qt 5.7.</p>
<p><b>See also </b><a href="qlowenergycontroller.html#Role-enum">QLowEnergyController::CentralRole</a>.</p>
<!-- @@@createCentral -->
<!-- $$$createPeripheral[overload1]$$$createPeripheralQObject* -->
<h3 class="fn" id="createPeripheral"><a name="createPeripheral"></a><code>[static] </code><span class="type"><a href="qlowenergycontroller-obsolete.html#QLowEnergyController">QLowEnergyController</a></span> *QLowEnergyController::<span class="name">createPeripheral</span>(<span class="type"><a href="../qtcore/qobject.html#QObject">QObject</a></span> *<i>parent</i> = nullptr)</h3>
<p>Returns a new object of this class that is in the <a href="qlowenergycontroller.html#Role-enum">PeripheralRole</a> and has the parent object <i>parent</i>. Typically, the next step is to call <a href="qlowenergycontroller.html#startAdvertising">startAdvertising</a>() on the returned object.</p>
<p>The controller uses the local default Bluetooth adapter for the connection management.</p>
<p>This function was introduced in Qt 5.7.</p>
<p><b>See also </b><a href="qlowenergycontroller.html#Role-enum">QLowEnergyController::PeripheralRole</a>.</p>
<!-- @@@createPeripheral -->
<!-- $$$createServiceObject[overload1]$$$createServiceObjectconstQBluetoothUuid&QObject* -->
<h3 class="fn" id="createServiceObject"><a name="createServiceObject"></a><span class="type"><a href="qlowenergyservice.html">QLowEnergyService</a></span> *QLowEnergyController::<span class="name">createServiceObject</span>(const <span class="type"><a href="qbluetoothuuid.html">QBluetoothUuid</a></span> &<i>serviceUuid</i>, <span class="type"><a href="../qtcore/qobject.html#QObject">QObject</a></span> *<i>parent</i> = Q_NULLPTR)</h3>
<p>Creates an instance of the service represented by <i>serviceUuid</i>. The <i>serviceUuid</i> parameter must have been obtained via <a href="qlowenergycontroller.html#services">services</a>().</p>
<p>The caller takes ownership of the returned pointer and may pass a <i>parent</i> parameter as default owner.</p>
<p>This function returns a null pointer if no service with <i>serviceUuid</i> can be found on the remote device or the controller is disconnected.</p>
<p>This function can return instances for secondary services too. The include relationships between services can be expressed via <a href="qlowenergyservice.html#includedServices">QLowEnergyService::includedServices</a>().</p>
<p>If this function is called multiple times using the same service UUID, the returned <a href="qlowenergyservice.html">QLowEnergyService</a> instances share their internal data. Therefore if one of the instances initiates the discovery of the service details, the other instances automatically transition into the discovery state too.</p>
<p><b>See also </b><a href="qlowenergycontroller.html#services">services</a>().</p>
<!-- @@@createServiceObject -->
<!-- $$$disconnectFromDevice[overload1]$$$disconnectFromDevice -->
<h3 class="fn" id="disconnectFromDevice"><a name="disconnectFromDevice"></a><span class="type">void</span> QLowEnergyController::<span class="name">disconnectFromDevice</span>()</h3>
<p>Disconnects from the remote device.</p>
<p>Any <a href="qlowenergyservice.html">QLowEnergyService</a>, <a href="qlowenergycharacteristic.html">QLowEnergyCharacteristic</a> or <a href="qlowenergydescriptor.html">QLowEnergyDescriptor</a> instance that resulted from the current connection is automatically invalidated. Once any of those objects become invalid they remain invalid even if this controller object reconnects.</p>
<p>This function does nothing if the controller is in the <a href="qlowenergycontroller.html#ControllerState-enum">UnconnectedState</a>.</p>
<p><b>See also </b><a href="qlowenergycontroller.html#connectToDevice">connectToDevice</a>().</p>
<!-- @@@disconnectFromDevice -->
<!-- $$$disconnected[overload1]$$$disconnected -->
<h3 class="fn" id="disconnected"><a name="disconnected"></a><code>[signal] </code><span class="type">void</span> QLowEnergyController::<span class="name">disconnected</span>()</h3>
<p>This signal is emitted when the controller disconnects from the remote Low Energy device or vice versa.</p>
<!-- @@@disconnected -->
<!-- $$$discoverServices[overload1]$$$discoverServices -->
<h3 class="fn" id="discoverServices"><a name="discoverServices"></a><span class="type">void</span> QLowEnergyController::<span class="name">discoverServices</span>()</h3>
<p>Initiates the service discovery process.</p>
<p>The discovery progress is indicated via the <a href="qlowenergycontroller.html#serviceDiscovered">serviceDiscovered</a>() signal. The <a href="qlowenergycontroller.html#discoveryFinished">discoveryFinished</a>() signal is emitted when the process has finished.</p>
<p>If the controller instance is not connected or the controller has performed the service discovery already this function will do nothing.</p>
<p><b>Note: </b>Some platforms internally cache the service list of a device which was discovered in the past. This can be problematic if the remote device changed its list of services or their inclusion tree. If this behavior is a problem, the best workaround is to temporarily turn Bluetooth off. This causes a reset of the cache data. Currently Android exhibits such a cache behavior.</p><!-- @@@discoverServices -->
<!-- $$$discoveryFinished[overload1]$$$discoveryFinished -->
<h3 class="fn" id="discoveryFinished"><a name="discoveryFinished"></a><code>[signal] </code><span class="type">void</span> QLowEnergyController::<span class="name">discoveryFinished</span>()</h3>
<p>This signal is emitted when the running service discovery finishes. The signal is not emitted if the discovery process finishes with an error.</p>
<p>This signal can only be emitted if the controller is in the <a href="qlowenergycontroller.html#Role-enum">CentralRole</a>.</p>
<p><b>See also </b><a href="qlowenergycontroller.html#discoverServices">discoverServices</a>() and <a href="qlowenergycontroller.html#error">error</a>().</p>
<!-- @@@discoveryFinished -->
<!-- $$$error[overload1]$$$error -->
<h3 class="fn" id="error"><a name="error"></a><span class="type"><a href="qlowenergycontroller.html#Error-enum">Error</a></span> QLowEnergyController::<span class="name">error</span>() const</h3>
<p>Returns the last occurred error or <a href="qlowenergycontroller.html#Error-enum">NoError</a>.</p>
<!-- @@@error -->
<!-- $$$error$$$errorQLowEnergyController::Error -->
<h3 class="fn" id="error-1"><a name="error-1"></a><code>[signal] </code><span class="type">void</span> QLowEnergyController::<span class="name">error</span>(<span class="type"><a href="qlowenergycontroller.html#Error-enum">QLowEnergyController::Error</a></span> <i>newError</i>)</h3>
<p>This signal is emitted when an error occurs. The <i>newError</i> parameter describes the error that occurred.</p>
<p><b>Note:</b> Signal <i>error</i> is overloaded in this class. To connect to this one using the function pointer syntax, you must specify the signal type in a static cast, as shown in this example:<pre class="cpp">
connect(lowEnergyController<span class="operator">,</span> <span class="keyword">static_cast</span><span class="operator"><</span><span class="type">void</span>(<span class="type"><a href="qlowenergycontroller-obsolete.html#QLowEnergyController">QLowEnergyController</a></span><span class="operator">::</span><span class="operator">*</span>)(<span class="type"><a href="qlowenergycontroller-obsolete.html#QLowEnergyController">QLowEnergyController</a></span><span class="operator">::</span>Error)<span class="operator">></span>(<span class="operator">&</span><span class="type"><a href="qlowenergycontroller-obsolete.html#QLowEnergyController">QLowEnergyController</a></span><span class="operator">::</span>error)<span class="operator">,</span>
<span class="operator">[</span><span class="operator">=</span><span class="operator">]</span>(<span class="type"><a href="qlowenergycontroller-obsolete.html#QLowEnergyController">QLowEnergyController</a></span><span class="operator">::</span>Error newError){ <span class="comment">/* ... */</span> });
</pre>
<p><b>See also </b><a href="qlowenergycontroller.html#error">error</a>() and <a href="qlowenergycontroller.html#errorString">errorString</a>().</p>
<!-- @@@error -->
<!-- $$$errorString[overload1]$$$errorString -->
<h3 class="fn" id="errorString"><a name="errorString"></a><span class="type"><a href="../qtcore/qstring.html">QString</a></span> QLowEnergyController::<span class="name">errorString</span>() const</h3>
<p>Returns a textual representation of the last occurred error. The string is translated.</p>
<!-- @@@errorString -->
<!-- $$$localAddress[overload1]$$$localAddress -->
<h3 class="fn" id="localAddress"><a name="localAddress"></a><span class="type"><a href="qbluetoothaddress.html">QBluetoothAddress</a></span> QLowEnergyController::<span class="name">localAddress</span>() const</h3>
<p>Returns the address of the local Bluetooth adapter being used for the communication.</p>
<p>If this class instance was requested to use the default adapter but there was no default adapter when creating this class instance, the returned <a href="qbluetoothaddress.html">QBluetoothAddress</a> will be null.</p>
<p><b>See also </b><a href="qbluetoothaddress.html#isNull">QBluetoothAddress::isNull</a>().</p>
<!-- @@@localAddress -->
<!-- $$$remoteAddress[overload1]$$$remoteAddress -->
<h3 class="fn" id="remoteAddress"><a name="remoteAddress"></a><span class="type"><a href="qbluetoothaddress.html">QBluetoothAddress</a></span> QLowEnergyController::<span class="name">remoteAddress</span>() const</h3>
<p>Returns the address of the remote Bluetooth Low Energy device.</p>
<p>For a controller in the <a href="qlowenergycontroller.html#Role-enum">CentralRole</a>, this value will always be the one passed in when the controller object was created. For a controller in the <a href="qlowenergycontroller.html#Role-enum">PeripheralRole</a>, this value is the address of the currently connected client device. In particular, this address will be invalid if the controller is not currently in the <a href="qlowenergycontroller.html#ControllerState-enum">ConnectedState</a>.</p>
<!-- @@@remoteAddress -->
<!-- $$$remoteAddressType[overload1]$$$remoteAddressType -->
<h3 class="fn" id="remoteAddressType"><a name="remoteAddressType"></a><span class="type"><a href="qlowenergycontroller.html#RemoteAddressType-enum">RemoteAddressType</a></span> QLowEnergyController::<span class="name">remoteAddressType</span>() const</h3>
<p>Returns the type of <a href="qlowenergycontroller.html#remoteAddress">remoteAddress</a>(). By default, this value is initialized to <a href="qlowenergycontroller.html#RemoteAddressType-enum">PublicAddress</a>.</p>
<p><b>See also </b><a href="qlowenergycontroller.html#setRemoteAddressType">setRemoteAddressType</a>().</p>
<!-- @@@remoteAddressType -->
<!-- $$$remoteName[overload1]$$$remoteName -->
<h3 class="fn" id="remoteName"><a name="remoteName"></a><span class="type"><a href="../qtcore/qstring.html">QString</a></span> QLowEnergyController::<span class="name">remoteName</span>() const</h3>
<p>Returns the name of the remote Bluetooth Low Energy device, if the controller is in the <a href="qlowenergycontroller.html#Role-enum">CentralRole</a>. Otherwise the result is unspecified.</p>
<p>This function was introduced in Qt 5.5.</p>
<!-- @@@remoteName -->
<!-- $$$requestConnectionUpdate[overload1]$$$requestConnectionUpdateconstQLowEnergyConnectionParameters& -->
<h3 class="fn" id="requestConnectionUpdate"><a name="requestConnectionUpdate"></a><span class="type">void</span> QLowEnergyController::<span class="name">requestConnectionUpdate</span>(const <span class="type"><a href="qlowenergyconnectionparameters.html">QLowEnergyConnectionParameters</a></span> &<i>parameters</i>)</h3>
<p>Requests the controller to update the connection according to <i>parameters</i>. If the request is successful, the <a href="qlowenergycontroller.html#connectionUpdated">connectionUpdated</a>() signal will be emitted with the actual new parameters. See the <a href="qlowenergyconnectionparameters.html">QLowEnergyConnectionParameters</a> class for more information on connection parameters.</p>
<p><b>Note: </b>Currently, this functionality is only implemented on Linux.</p><p>This function was introduced in Qt 5.7.</p>
<!-- @@@requestConnectionUpdate -->
<!-- $$$role[overload1]$$$role -->
<h3 class="fn" id="role"><a name="role"></a><span class="type"><a href="qlowenergycontroller.html#Role-enum">Role</a></span> QLowEnergyController::<span class="name">role</span>() const</h3>
<p>Returns the role that this controller object is in.</p>
<p>The role is determined when constructing a <a href="qlowenergycontroller.html">QLowEnergyController</a> instance using <a href="qlowenergycontroller.html#createCentral">createCentral</a>() or <a href="qlowenergycontroller.html#createPeripheral">createPeripheral</a>().</p>
<p>This function was introduced in Qt 5.7.</p>
<!-- @@@role -->
<!-- $$$serviceDiscovered[overload1]$$$serviceDiscoveredconstQBluetoothUuid& -->
<h3 class="fn" id="serviceDiscovered"><a name="serviceDiscovered"></a><code>[signal] </code><span class="type">void</span> QLowEnergyController::<span class="name">serviceDiscovered</span>(const <span class="type"><a href="qbluetoothuuid.html">QBluetoothUuid</a></span> &<i>newService</i>)</h3>
<p>This signal is emitted each time a new service is discovered. The <i>newService</i> parameter contains the UUID of the found service.</p>
<p>This signal can only be emitted if the controller is in the <code>CentralRole</code>.</p>
<p><b>See also </b><a href="qlowenergycontroller.html#discoverServices">discoverServices</a>() and <a href="qlowenergycontroller.html#discoveryFinished">discoveryFinished</a>().</p>
<!-- @@@serviceDiscovered -->
<!-- $$$services[overload1]$$$services -->
<h3 class="fn" id="services"><a name="services"></a><span class="type"><a href="../qtcore/qlist.html">QList</a></span><<span class="type"><a href="qbluetoothuuid.html">QBluetoothUuid</a></span>> QLowEnergyController::<span class="name">services</span>() const</h3>
<p>Returns the list of services offered by the remote device, if the controller is in the <a href="qlowenergycontroller.html#Role-enum">CentralRole</a>. Otherwise, the result is unspecified.</p>
<p>The list contains all primary and secondary services.</p>
<p><b>See also </b><a href="qlowenergycontroller.html#createServiceObject">createServiceObject</a>().</p>
<!-- @@@services -->
<!-- $$$setRemoteAddressType[overload1]$$$setRemoteAddressTypeRemoteAddressType -->
<h3 class="fn" id="setRemoteAddressType"><a name="setRemoteAddressType"></a><span class="type">void</span> QLowEnergyController::<span class="name">setRemoteAddressType</span>(<span class="type"><a href="qlowenergycontroller.html#RemoteAddressType-enum">RemoteAddressType</a></span> <i>type</i>)</h3>
<p>Sets the remote address <i>type</i>. The type is required to connect to the remote Bluetooth Low Energy device.</p>
<p><b>See also </b><a href="qlowenergycontroller.html#remoteAddressType">remoteAddressType</a>().</p>
<!-- @@@setRemoteAddressType -->
<!-- $$$startAdvertising[overload1]$$$startAdvertisingconstQLowEnergyAdvertisingParameters&constQLowEnergyAdvertisingData&constQLowEnergyAdvertisingData& -->
<h3 class="fn" id="startAdvertising"><a name="startAdvertising"></a><span class="type">void</span> QLowEnergyController::<span class="name">startAdvertising</span>(const <span class="type"><a href="qlowenergyadvertisingparameters.html">QLowEnergyAdvertisingParameters</a></span> &<i>parameters</i>, const <span class="type"><a href="qlowenergyadvertisingdata.html">QLowEnergyAdvertisingData</a></span> &<i>advertisingData</i>, const <span class="type"><a href="qlowenergyadvertisingdata.html">QLowEnergyAdvertisingData</a></span> &<i>scanResponseData</i> = QLowEnergyAdvertisingData())</h3>
<p>Starts advertising the data given in <i>advertisingData</i> and <i>scanResponseData</i>, using the parameters set in <i>parameters</i>. The controller has to be in the <a href="qlowenergycontroller.html#Role-enum">PeripheralRole</a>. If <i>parameters</i> indicates that the advertisement should be connectable, then this function also starts listening for incoming client connections.</p>
<p>Providing <i>scanResponseData</i> is not required, as it is not applicable for certain configurations of <code>parameters</code>.</p>
<p>If this object is currently not in the <a href="qlowenergycontroller.html#ControllerState-enum">UnconnectedState</a>, nothing happens.</p>
<p><b>Note: </b>Advertising will stop automatically once a client connects to the local device.</p><p>This function was introduced in Qt 5.7.</p>
<p><b>See also </b><a href="qlowenergycontroller.html#stopAdvertising">stopAdvertising</a>().</p>
<!-- @@@startAdvertising -->
<!-- $$$state[overload1]$$$state -->
<h3 class="fn" id="state"><a name="state"></a><span class="type"><a href="qlowenergycontroller.html#ControllerState-enum">ControllerState</a></span> QLowEnergyController::<span class="name">state</span>() const</h3>
<p>Returns the current state of the controller.</p>
<p><b>See also </b><a href="qlowenergycontroller.html#stateChanged">stateChanged</a>().</p>
<!-- @@@state -->
<!-- $$$stateChanged[overload1]$$$stateChangedQLowEnergyController::ControllerState -->
<h3 class="fn" id="stateChanged"><a name="stateChanged"></a><code>[signal] </code><span class="type">void</span> QLowEnergyController::<span class="name">stateChanged</span>(<span class="type"><a href="qlowenergycontroller.html#ControllerState-enum">QLowEnergyController::ControllerState</a></span> <i>state</i>)</h3>
<p>This signal is emitted when the controller's state changes. The new <i>state</i> can also be retrieved via <a href="qlowenergycontroller.html#state">state</a>().</p>
<p><b>See also </b><a href="qlowenergycontroller.html#state">state</a>().</p>
<!-- @@@stateChanged -->
<!-- $$$stopAdvertising[overload1]$$$stopAdvertising -->
<h3 class="fn" id="stopAdvertising"><a name="stopAdvertising"></a><span class="type">void</span> QLowEnergyController::<span class="name">stopAdvertising</span>()</h3>
<p>Stops advertising, if this object is currently in the advertising state.</p>
<p>This function was introduced in Qt 5.7.</p>
<p><b>See also </b><a href="qlowenergycontroller.html#startAdvertising">startAdvertising</a>().</p>
<!-- @@@stopAdvertising -->
</div>
</div>
</div>
</div>
</div>
</div>
<div class="footer">
<p>
<acronym title="Copyright">©</acronym> 2016 The Qt Company Ltd.
Documentation contributions included herein are the copyrights of
their respective owners.<br> The documentation provided herein is licensed under the terms of the <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation License version 1.3</a> as published by the Free Software Foundation.<br> Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property
of their respective owners. </p>
</div>
</body>
</html>
|