Bike service
Fork of BLE_API by
ble/BLE.h@716:11b41f651697, 2015-07-02 (annotated)
- Committer:
- rgrover1
- Date:
- Thu Jul 02 09:06:11 2015 +0100
- Revision:
- 716:11b41f651697
- Child:
- 728:997ba5e7b3b6
Synchronized with git rev d80fec88
Author: Rohit Grover
Release 0.4.0
=============
This is a major release which introduces the GATT Client functionality. It
also aligns BLE_API with builds using our new package manager: yotta
(https://github.com/armmbed/yotta).
Many APIs have seen some redesign. We encourage our users to pay attention to
the changes and migrate appropriately over time. We've also taken care to
ensure that existing code continues to work the same way. There's more
documentation in the form of comment headers for APIs to explain proper usage;
in many cases comment headers suggest alternative use of APIs.
Enhancements
~~~~~~~~~~~~
* Introduce GattClient. This includes functionality for service-discovery,
connections, and attribute-reads and writes. You'll find a demo program for
LEDBlinker on the mbed.org Bluetooth team page to use the new APIs. Some of
the GATT client functionality hasn't been implemented yet, but the APIs have
been added.
* Most APIs in the abstract base classes like Gap and GattServer return
BLE_ERROR_NOT_IMPLEMENTED. Previously many APIs were pure-virtual, which did
not permit partial ports to compile.
* We've added a new abstract base class for SecurityManager. All security
related APIs have been moved into that.
* BLEDevice has been renamed as BLE. A deprecated alias for BLEDevice is
available to support existing code.
* There has been a major cleanup of APIs under BLE. APIs have now been
categorized as belonging to Gap, GattServer, GattClient, or SecurityManager.
There are accessors to get references for Gap, GattServer, GattClient, and
SecurityManager. A former call to ble.setAddress(...) is now expected to be
achieved with ble.gap().setAddress(...).
* We've cleaned up our APIs, and this has resulted in dropping some APIs like
BLE::reset().
* We've also dropped GattServer::initializeGattDatabase(). THis was added at
some point to support controllers where a commit point was needed to
indicate when the application had finished constructing the GATT database.
This API would get called internally before Gap::startAdvertising(). We now
expect the underlying port to do the equivalent of initializeGattDatabase()
implicitly upon Gap::startAdvertising().
* The callback for BLE.onTimeout() now receives a TimeoutSource_t to indicate
the cause of the timeout. This is perhaps the only breaking API change. We
expect it to have very little disruptive effect.
* We've added a version of Gap::disconnect() which takes a connection handle.
The previous API (which did not take a connection handle) has been
deprecated; it will still work for situations where there's only a single
active connection. We hold on to that API to allow existing code to migrate
to the new API.
Bugfixes
~~~~~~~~
* None.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rgrover1 | 716:11b41f651697 | 1 | /* mbed Microcontroller Library |
rgrover1 | 716:11b41f651697 | 2 | * Copyright (c) 2006-2013 ARM Limited |
rgrover1 | 716:11b41f651697 | 3 | * |
rgrover1 | 716:11b41f651697 | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
rgrover1 | 716:11b41f651697 | 5 | * you may not use this file except in compliance with the License. |
rgrover1 | 716:11b41f651697 | 6 | * You may obtain a copy of the License at |
rgrover1 | 716:11b41f651697 | 7 | * |
rgrover1 | 716:11b41f651697 | 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
rgrover1 | 716:11b41f651697 | 9 | * |
rgrover1 | 716:11b41f651697 | 10 | * Unless required by applicable law or agreed to in writing, software |
rgrover1 | 716:11b41f651697 | 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
rgrover1 | 716:11b41f651697 | 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
rgrover1 | 716:11b41f651697 | 13 | * See the License for the specific language governing permissions and |
rgrover1 | 716:11b41f651697 | 14 | * limitations under the License. |
rgrover1 | 716:11b41f651697 | 15 | */ |
rgrover1 | 716:11b41f651697 | 16 | |
rgrover1 | 716:11b41f651697 | 17 | #ifndef __BLE_H__ |
rgrover1 | 716:11b41f651697 | 18 | #define __BLE_H__ |
rgrover1 | 716:11b41f651697 | 19 | |
rgrover1 | 716:11b41f651697 | 20 | #include "blecommon.h" |
rgrover1 | 716:11b41f651697 | 21 | #include "Gap.h" |
rgrover1 | 716:11b41f651697 | 22 | #include "GattServer.h" |
rgrover1 | 716:11b41f651697 | 23 | #include "GattClient.h" |
rgrover1 | 716:11b41f651697 | 24 | #include "BLEInstanceBase.h" |
rgrover1 | 716:11b41f651697 | 25 | |
rgrover1 | 716:11b41f651697 | 26 | /** |
rgrover1 | 716:11b41f651697 | 27 | * The base class used to abstract away BLE capable radio transceivers or SOCs, |
rgrover1 | 716:11b41f651697 | 28 | * to enable this BLE API to work with any radio transparently. |
rgrover1 | 716:11b41f651697 | 29 | */ |
rgrover1 | 716:11b41f651697 | 30 | class BLE |
rgrover1 | 716:11b41f651697 | 31 | { |
rgrover1 | 716:11b41f651697 | 32 | public: |
rgrover1 | 716:11b41f651697 | 33 | /** |
rgrover1 | 716:11b41f651697 | 34 | * Initialize the BLE controller. This should be called before using |
rgrover1 | 716:11b41f651697 | 35 | * anything else in the BLE_API. |
rgrover1 | 716:11b41f651697 | 36 | * |
rgrover1 | 716:11b41f651697 | 37 | * init() hands control to the underlying BLE module to accomplish |
rgrover1 | 716:11b41f651697 | 38 | * initialization. This initialization may tacitly depend on other hardware |
rgrover1 | 716:11b41f651697 | 39 | * setup (such as clocks or power-modes) which happens early on during |
rgrover1 | 716:11b41f651697 | 40 | * system startup. It may not be safe to call init() from global static |
rgrover1 | 716:11b41f651697 | 41 | * context where ordering is compiler specific and can't be guaranteed--it |
rgrover1 | 716:11b41f651697 | 42 | * is safe to call BLE::init() from within main(). |
rgrover1 | 716:11b41f651697 | 43 | */ |
rgrover1 | 716:11b41f651697 | 44 | ble_error_t init(); |
rgrover1 | 716:11b41f651697 | 45 | |
rgrover1 | 716:11b41f651697 | 46 | /** |
rgrover1 | 716:11b41f651697 | 47 | * Purge the BLE stack of GATT and GAP state. init() must be called |
rgrover1 | 716:11b41f651697 | 48 | * afterwards to re-instate services and GAP state. This API offers a way to |
rgrover1 | 716:11b41f651697 | 49 | * repopulate the GATT database with new services and characteristics. |
rgrover1 | 716:11b41f651697 | 50 | */ |
rgrover1 | 716:11b41f651697 | 51 | ble_error_t shutdown(void) { |
rgrover1 | 716:11b41f651697 | 52 | clearAdvertisingPayload(); |
rgrover1 | 716:11b41f651697 | 53 | return transport->shutdown(); |
rgrover1 | 716:11b41f651697 | 54 | } |
rgrover1 | 716:11b41f651697 | 55 | |
rgrover1 | 716:11b41f651697 | 56 | /** |
rgrover1 | 716:11b41f651697 | 57 | * This call allows the application to get the BLE stack version information. |
rgrover1 | 716:11b41f651697 | 58 | * |
rgrover1 | 716:11b41f651697 | 59 | * @return A pointer to a const string representing the version. |
rgrover1 | 716:11b41f651697 | 60 | * Note: The string is owned by the BLE_API. |
rgrover1 | 716:11b41f651697 | 61 | */ |
rgrover1 | 716:11b41f651697 | 62 | const char *getVersion(void) { |
rgrover1 | 716:11b41f651697 | 63 | return transport->getVersion(); |
rgrover1 | 716:11b41f651697 | 64 | } |
rgrover1 | 716:11b41f651697 | 65 | |
rgrover1 | 716:11b41f651697 | 66 | /* |
rgrover1 | 716:11b41f651697 | 67 | * Accessors to GAP. Please refer to Gap.h. All GAP related functionality requires |
rgrover1 | 716:11b41f651697 | 68 | * going through this accessor. |
rgrover1 | 716:11b41f651697 | 69 | */ |
rgrover1 | 716:11b41f651697 | 70 | const Gap &gap() const { |
rgrover1 | 716:11b41f651697 | 71 | return transport->getGap(); |
rgrover1 | 716:11b41f651697 | 72 | } |
rgrover1 | 716:11b41f651697 | 73 | Gap &gap() { |
rgrover1 | 716:11b41f651697 | 74 | return transport->getGap(); |
rgrover1 | 716:11b41f651697 | 75 | } |
rgrover1 | 716:11b41f651697 | 76 | |
rgrover1 | 716:11b41f651697 | 77 | /* |
rgrover1 | 716:11b41f651697 | 78 | * Accessors to GATT Server. Please refer to GattServer.h. All GATTServer related |
rgrover1 | 716:11b41f651697 | 79 | * functionality requires going through this accessor. |
rgrover1 | 716:11b41f651697 | 80 | */ |
rgrover1 | 716:11b41f651697 | 81 | const GattServer& gattServer() const { |
rgrover1 | 716:11b41f651697 | 82 | return transport->getGattServer(); |
rgrover1 | 716:11b41f651697 | 83 | } |
rgrover1 | 716:11b41f651697 | 84 | GattServer& gattServer() { |
rgrover1 | 716:11b41f651697 | 85 | return transport->getGattServer(); |
rgrover1 | 716:11b41f651697 | 86 | } |
rgrover1 | 716:11b41f651697 | 87 | |
rgrover1 | 716:11b41f651697 | 88 | /* |
rgrover1 | 716:11b41f651697 | 89 | * Accessors to GATT Client. Please refer to GattClient.h. All GATTClient related |
rgrover1 | 716:11b41f651697 | 90 | * functionality requires going through this accessor. |
rgrover1 | 716:11b41f651697 | 91 | */ |
rgrover1 | 716:11b41f651697 | 92 | const GattClient& gattClient() const { |
rgrover1 | 716:11b41f651697 | 93 | return transport->getGattClient(); |
rgrover1 | 716:11b41f651697 | 94 | } |
rgrover1 | 716:11b41f651697 | 95 | GattClient& gattClient() { |
rgrover1 | 716:11b41f651697 | 96 | return transport->getGattClient(); |
rgrover1 | 716:11b41f651697 | 97 | } |
rgrover1 | 716:11b41f651697 | 98 | |
rgrover1 | 716:11b41f651697 | 99 | /* |
rgrover1 | 716:11b41f651697 | 100 | * Accessors to Security Manager. Please refer to SecurityManager.h. All |
rgrover1 | 716:11b41f651697 | 101 | * SecurityManager related functionality requires going through this |
rgrover1 | 716:11b41f651697 | 102 | * accessor. |
rgrover1 | 716:11b41f651697 | 103 | */ |
rgrover1 | 716:11b41f651697 | 104 | const SecurityManager& securityManager() const { |
rgrover1 | 716:11b41f651697 | 105 | return transport->getSecurityManager(); |
rgrover1 | 716:11b41f651697 | 106 | } |
rgrover1 | 716:11b41f651697 | 107 | SecurityManager& securityManager() { |
rgrover1 | 716:11b41f651697 | 108 | return transport->getSecurityManager(); |
rgrover1 | 716:11b41f651697 | 109 | } |
rgrover1 | 716:11b41f651697 | 110 | |
rgrover1 | 716:11b41f651697 | 111 | /** |
rgrover1 | 716:11b41f651697 | 112 | * Yield control to the BLE stack or to other tasks waiting for events. This |
rgrover1 | 716:11b41f651697 | 113 | * is a sleep function which will return when there is an application |
rgrover1 | 716:11b41f651697 | 114 | * specific interrupt, but the MCU might wake up several times before |
rgrover1 | 716:11b41f651697 | 115 | * returning (to service the stack). This is not always interchangeable with |
rgrover1 | 716:11b41f651697 | 116 | * WFE(). |
rgrover1 | 716:11b41f651697 | 117 | */ |
rgrover1 | 716:11b41f651697 | 118 | void waitForEvent(void) { |
rgrover1 | 716:11b41f651697 | 119 | transport->waitForEvent(); |
rgrover1 | 716:11b41f651697 | 120 | } |
rgrover1 | 716:11b41f651697 | 121 | |
rgrover1 | 716:11b41f651697 | 122 | /* |
rgrover1 | 716:11b41f651697 | 123 | * Deprecation alert! |
rgrover1 | 716:11b41f651697 | 124 | * All of the following are deprecated and may be dropped in a future |
rgrover1 | 716:11b41f651697 | 125 | * release. Documentation should refer to alternative APIs. |
rgrover1 | 716:11b41f651697 | 126 | */ |
rgrover1 | 716:11b41f651697 | 127 | |
rgrover1 | 716:11b41f651697 | 128 | /* GAP specific APIs. */ |
rgrover1 | 716:11b41f651697 | 129 | public: |
rgrover1 | 716:11b41f651697 | 130 | /** |
rgrover1 | 716:11b41f651697 | 131 | * Set the BTLE MAC address and type. |
rgrover1 | 716:11b41f651697 | 132 | * @return BLE_ERROR_NONE on success. |
rgrover1 | 716:11b41f651697 | 133 | * |
rgrover1 | 716:11b41f651697 | 134 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 135 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 136 | * ble.setAddress(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 137 | * ble.gap().setAddress(...). |
rgrover1 | 716:11b41f651697 | 138 | */ |
rgrover1 | 716:11b41f651697 | 139 | ble_error_t setAddress(Gap::AddressType_t type, const Gap::Address_t address) { |
rgrover1 | 716:11b41f651697 | 140 | return gap().setAddress(type, address); |
rgrover1 | 716:11b41f651697 | 141 | } |
rgrover1 | 716:11b41f651697 | 142 | |
rgrover1 | 716:11b41f651697 | 143 | /** |
rgrover1 | 716:11b41f651697 | 144 | * Fetch the BTLE MAC address and type. |
rgrover1 | 716:11b41f651697 | 145 | * @return BLE_ERROR_NONE on success. |
rgrover1 | 716:11b41f651697 | 146 | * |
rgrover1 | 716:11b41f651697 | 147 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 148 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 149 | * ble.getAddress(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 150 | * ble.gap().getAddress(...). |
rgrover1 | 716:11b41f651697 | 151 | */ |
rgrover1 | 716:11b41f651697 | 152 | ble_error_t getAddress(Gap::AddressType_t *typeP, Gap::Address_t address) { |
rgrover1 | 716:11b41f651697 | 153 | return gap().getAddress(typeP, address); |
rgrover1 | 716:11b41f651697 | 154 | } |
rgrover1 | 716:11b41f651697 | 155 | |
rgrover1 | 716:11b41f651697 | 156 | /** |
rgrover1 | 716:11b41f651697 | 157 | * Set the GAP advertising mode to use for this device. |
rgrover1 | 716:11b41f651697 | 158 | * |
rgrover1 | 716:11b41f651697 | 159 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 160 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 161 | * ble.setAdvertisingType(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 162 | * ble.gap().setAdvertisingType(...). |
rgrover1 | 716:11b41f651697 | 163 | */ |
rgrover1 | 716:11b41f651697 | 164 | void setAdvertisingType(GapAdvertisingParams::AdvertisingType advType) { |
rgrover1 | 716:11b41f651697 | 165 | gap().setAdvertisingType(advType); |
rgrover1 | 716:11b41f651697 | 166 | } |
rgrover1 | 716:11b41f651697 | 167 | |
rgrover1 | 716:11b41f651697 | 168 | /** |
rgrover1 | 716:11b41f651697 | 169 | * @param[in] interval |
rgrover1 | 716:11b41f651697 | 170 | * Advertising interval in units of milliseconds. Advertising |
rgrover1 | 716:11b41f651697 | 171 | * is disabled if interval is 0. If interval is smaller than |
rgrover1 | 716:11b41f651697 | 172 | * the minimum supported value, then the minimum supported |
rgrover1 | 716:11b41f651697 | 173 | * value is used instead. This minimum value can be discovered |
rgrover1 | 716:11b41f651697 | 174 | * using getMinAdvertisingInterval(). |
rgrover1 | 716:11b41f651697 | 175 | * |
rgrover1 | 716:11b41f651697 | 176 | * This field must be set to 0 if connectionMode is equal |
rgrover1 | 716:11b41f651697 | 177 | * to ADV_CONNECTABLE_DIRECTED. |
rgrover1 | 716:11b41f651697 | 178 | * |
rgrover1 | 716:11b41f651697 | 179 | * @note: Decreasing this value will allow central devices to detect a |
rgrover1 | 716:11b41f651697 | 180 | * peripheral faster at the expense of more power being used by the radio |
rgrover1 | 716:11b41f651697 | 181 | * due to the higher data transmit rate. |
rgrover1 | 716:11b41f651697 | 182 | * |
rgrover1 | 716:11b41f651697 | 183 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 184 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 185 | * ble.setAdvertisingInterval(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 186 | * ble.gap().setAdvertisingInterval(...). |
rgrover1 | 716:11b41f651697 | 187 | * |
rgrover1 | 716:11b41f651697 | 188 | * @note: [WARNING] This API previously used 0.625ms as the unit for its |
rgrover1 | 716:11b41f651697 | 189 | * 'interval' argument. That required an explicit conversion from |
rgrover1 | 716:11b41f651697 | 190 | * milliseconds using Gap::MSEC_TO_GAP_DURATION_UNITS(). This conversion is |
rgrover1 | 716:11b41f651697 | 191 | * no longer required as the new units are milliseconds. Any application |
rgrover1 | 716:11b41f651697 | 192 | * code depending on the old semantics would need to be updated accordingly. |
rgrover1 | 716:11b41f651697 | 193 | */ |
rgrover1 | 716:11b41f651697 | 194 | void setAdvertisingInterval(uint16_t interval) { |
rgrover1 | 716:11b41f651697 | 195 | gap().setAdvertisingInterval(interval); |
rgrover1 | 716:11b41f651697 | 196 | } |
rgrover1 | 716:11b41f651697 | 197 | |
rgrover1 | 716:11b41f651697 | 198 | /** |
rgrover1 | 716:11b41f651697 | 199 | * @return Minimum Advertising interval in milliseconds. |
rgrover1 | 716:11b41f651697 | 200 | * |
rgrover1 | 716:11b41f651697 | 201 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 202 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 203 | * ble.getMinAdvertisingInterval(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 204 | * ble.gap().getMinAdvertisingInterval(...). |
rgrover1 | 716:11b41f651697 | 205 | */ |
rgrover1 | 716:11b41f651697 | 206 | uint16_t getMinAdvertisingInterval(void) const { |
rgrover1 | 716:11b41f651697 | 207 | return gap().getMinAdvertisingInterval(); |
rgrover1 | 716:11b41f651697 | 208 | } |
rgrover1 | 716:11b41f651697 | 209 | |
rgrover1 | 716:11b41f651697 | 210 | /** |
rgrover1 | 716:11b41f651697 | 211 | * @return Minimum Advertising interval in milliseconds for non-connectible mode. |
rgrover1 | 716:11b41f651697 | 212 | * |
rgrover1 | 716:11b41f651697 | 213 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 214 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 215 | * ble.getMinNonConnectableAdvertisingInterval(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 216 | * ble.gap().getMinNonConnectableAdvertisingInterval(...). |
rgrover1 | 716:11b41f651697 | 217 | */ |
rgrover1 | 716:11b41f651697 | 218 | uint16_t getMinNonConnectableAdvertisingInterval(void) const { |
rgrover1 | 716:11b41f651697 | 219 | return gap().getMinNonConnectableAdvertisingInterval(); |
rgrover1 | 716:11b41f651697 | 220 | } |
rgrover1 | 716:11b41f651697 | 221 | |
rgrover1 | 716:11b41f651697 | 222 | /** |
rgrover1 | 716:11b41f651697 | 223 | * @return Maximum Advertising interval in milliseconds. |
rgrover1 | 716:11b41f651697 | 224 | * |
rgrover1 | 716:11b41f651697 | 225 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 226 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 227 | * ble.getMaxAdvertisingInterval(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 228 | * ble.gap().getMaxAdvertisingInterval(...). |
rgrover1 | 716:11b41f651697 | 229 | */ |
rgrover1 | 716:11b41f651697 | 230 | uint16_t getMaxAdvertisingInterval(void) const { |
rgrover1 | 716:11b41f651697 | 231 | return gap().getMaxAdvertisingInterval(); |
rgrover1 | 716:11b41f651697 | 232 | } |
rgrover1 | 716:11b41f651697 | 233 | |
rgrover1 | 716:11b41f651697 | 234 | /** |
rgrover1 | 716:11b41f651697 | 235 | * @param[in] timeout |
rgrover1 | 716:11b41f651697 | 236 | * Advertising timeout (in seconds) between 0x1 and 0x3FFF (1 |
rgrover1 | 716:11b41f651697 | 237 | * and 16383). Use 0 to disable the advertising timeout. |
rgrover1 | 716:11b41f651697 | 238 | * |
rgrover1 | 716:11b41f651697 | 239 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 240 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 241 | * ble.setAdvertisingTimeout(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 242 | * ble.gap().setAdvertisingTimeout(...). |
rgrover1 | 716:11b41f651697 | 243 | */ |
rgrover1 | 716:11b41f651697 | 244 | void setAdvertisingTimeout(uint16_t timeout) { |
rgrover1 | 716:11b41f651697 | 245 | gap().setAdvertisingTimeout(timeout); |
rgrover1 | 716:11b41f651697 | 246 | } |
rgrover1 | 716:11b41f651697 | 247 | |
rgrover1 | 716:11b41f651697 | 248 | /** |
rgrover1 | 716:11b41f651697 | 249 | * Setup a particular, user-constructed set of advertisement parameters for |
rgrover1 | 716:11b41f651697 | 250 | * the underlying stack. It would be uncommon for this API to be used |
rgrover1 | 716:11b41f651697 | 251 | * directly; there are other APIs to tweak advertisement parameters |
rgrover1 | 716:11b41f651697 | 252 | * individually (see above). |
rgrover1 | 716:11b41f651697 | 253 | * |
rgrover1 | 716:11b41f651697 | 254 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 255 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 256 | * ble.setAdvertisingParams(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 257 | * ble.gap().setAdvertisingParams(...). |
rgrover1 | 716:11b41f651697 | 258 | */ |
rgrover1 | 716:11b41f651697 | 259 | void setAdvertisingParams(const GapAdvertisingParams &advParams) { |
rgrover1 | 716:11b41f651697 | 260 | gap().setAdvertisingParams(advParams); |
rgrover1 | 716:11b41f651697 | 261 | } |
rgrover1 | 716:11b41f651697 | 262 | |
rgrover1 | 716:11b41f651697 | 263 | /** |
rgrover1 | 716:11b41f651697 | 264 | * @return Read back advertising parameters. Useful for storing and |
rgrover1 | 716:11b41f651697 | 265 | * restoring parameters rapidly. |
rgrover1 | 716:11b41f651697 | 266 | * |
rgrover1 | 716:11b41f651697 | 267 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 268 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 269 | * ble.getAdvertisingParams(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 270 | * ble.gap().getAdvertisingParams(...). |
rgrover1 | 716:11b41f651697 | 271 | */ |
rgrover1 | 716:11b41f651697 | 272 | const GapAdvertisingParams &getAdvertisingParams(void) const { |
rgrover1 | 716:11b41f651697 | 273 | return gap().getAdvertisingParams(); |
rgrover1 | 716:11b41f651697 | 274 | } |
rgrover1 | 716:11b41f651697 | 275 | |
rgrover1 | 716:11b41f651697 | 276 | /** |
rgrover1 | 716:11b41f651697 | 277 | * Accumulate an AD structure in the advertising payload. Please note that |
rgrover1 | 716:11b41f651697 | 278 | * the payload is limited to 31 bytes. The SCAN_RESPONSE message may be used |
rgrover1 | 716:11b41f651697 | 279 | * as an additional 31 bytes if the advertising payload proves to be too |
rgrover1 | 716:11b41f651697 | 280 | * small. |
rgrover1 | 716:11b41f651697 | 281 | * |
rgrover1 | 716:11b41f651697 | 282 | * @param[in] flags |
rgrover1 | 716:11b41f651697 | 283 | * The flags to be added. Please refer to |
rgrover1 | 716:11b41f651697 | 284 | * GapAdvertisingData::Flags for valid flags. Multiple |
rgrover1 | 716:11b41f651697 | 285 | * flags may be specified in combination. |
rgrover1 | 716:11b41f651697 | 286 | * |
rgrover1 | 716:11b41f651697 | 287 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 288 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 289 | * ble.accumulateAdvertisingPayload(flags) should be replaced with |
rgrover1 | 716:11b41f651697 | 290 | * ble.gap().accumulateAdvertisingPayload(flags). |
rgrover1 | 716:11b41f651697 | 291 | */ |
rgrover1 | 716:11b41f651697 | 292 | ble_error_t accumulateAdvertisingPayload(uint8_t flags) { |
rgrover1 | 716:11b41f651697 | 293 | return gap().accumulateAdvertisingPayload(flags); |
rgrover1 | 716:11b41f651697 | 294 | } |
rgrover1 | 716:11b41f651697 | 295 | |
rgrover1 | 716:11b41f651697 | 296 | /** |
rgrover1 | 716:11b41f651697 | 297 | * Accumulate an AD structure in the advertising payload. Please note that |
rgrover1 | 716:11b41f651697 | 298 | * the payload is limited to 31 bytes. The SCAN_RESPONSE message may be used |
rgrover1 | 716:11b41f651697 | 299 | * as an additional 31 bytes if the advertising payload proves to be too |
rgrover1 | 716:11b41f651697 | 300 | * small. |
rgrover1 | 716:11b41f651697 | 301 | * |
rgrover1 | 716:11b41f651697 | 302 | * @param[in] app |
rgrover1 | 716:11b41f651697 | 303 | * The appearance of the peripheral. |
rgrover1 | 716:11b41f651697 | 304 | * |
rgrover1 | 716:11b41f651697 | 305 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 306 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 307 | * ble.accumulateAdvertisingPayload(appearance) should be replaced with |
rgrover1 | 716:11b41f651697 | 308 | * ble.gap().accumulateAdvertisingPayload(appearance). |
rgrover1 | 716:11b41f651697 | 309 | */ |
rgrover1 | 716:11b41f651697 | 310 | ble_error_t accumulateAdvertisingPayload(GapAdvertisingData::Appearance app) { |
rgrover1 | 716:11b41f651697 | 311 | return gap().accumulateAdvertisingPayload(app); |
rgrover1 | 716:11b41f651697 | 312 | } |
rgrover1 | 716:11b41f651697 | 313 | |
rgrover1 | 716:11b41f651697 | 314 | /** |
rgrover1 | 716:11b41f651697 | 315 | * Accumulate an AD structure in the advertising payload. Please note that |
rgrover1 | 716:11b41f651697 | 316 | * the payload is limited to 31 bytes. The SCAN_RESPONSE message may be used |
rgrover1 | 716:11b41f651697 | 317 | * as an additional 31 bytes if the advertising payload proves to be too |
rgrover1 | 716:11b41f651697 | 318 | * small. |
rgrover1 | 716:11b41f651697 | 319 | * |
rgrover1 | 716:11b41f651697 | 320 | * @param[in] app |
rgrover1 | 716:11b41f651697 | 321 | * The max transmit power to be used by the controller. This |
rgrover1 | 716:11b41f651697 | 322 | * is only a hint. |
rgrover1 | 716:11b41f651697 | 323 | * |
rgrover1 | 716:11b41f651697 | 324 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 325 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 326 | * ble.accumulateAdvertisingPayloadTxPower(txPower) should be replaced with |
rgrover1 | 716:11b41f651697 | 327 | * ble.gap().accumulateAdvertisingPayloadTxPower(txPower). |
rgrover1 | 716:11b41f651697 | 328 | */ |
rgrover1 | 716:11b41f651697 | 329 | ble_error_t accumulateAdvertisingPayloadTxPower(int8_t power) { |
rgrover1 | 716:11b41f651697 | 330 | return gap().accumulateAdvertisingPayloadTxPower(power); |
rgrover1 | 716:11b41f651697 | 331 | } |
rgrover1 | 716:11b41f651697 | 332 | |
rgrover1 | 716:11b41f651697 | 333 | /** |
rgrover1 | 716:11b41f651697 | 334 | * Accumulate a variable length byte-stream as an AD structure in the |
rgrover1 | 716:11b41f651697 | 335 | * advertising payload. Please note that the payload is limited to 31 bytes. |
rgrover1 | 716:11b41f651697 | 336 | * The SCAN_RESPONSE message may be used as an additional 31 bytes if the |
rgrover1 | 716:11b41f651697 | 337 | * advertising payload proves to be too small. |
rgrover1 | 716:11b41f651697 | 338 | * |
rgrover1 | 716:11b41f651697 | 339 | * @param type The type which describes the variable length data. |
rgrover1 | 716:11b41f651697 | 340 | * @param data data bytes. |
rgrover1 | 716:11b41f651697 | 341 | * @param len length of data. |
rgrover1 | 716:11b41f651697 | 342 | * |
rgrover1 | 716:11b41f651697 | 343 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 344 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 345 | * ble.accumulateAdvertisingPayload(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 346 | * ble.gap().accumulateAdvertisingPayload(...). |
rgrover1 | 716:11b41f651697 | 347 | */ |
rgrover1 | 716:11b41f651697 | 348 | ble_error_t accumulateAdvertisingPayload(GapAdvertisingData::DataType type, const uint8_t *data, uint8_t len) { |
rgrover1 | 716:11b41f651697 | 349 | return gap().accumulateAdvertisingPayload(type, data, len); |
rgrover1 | 716:11b41f651697 | 350 | } |
rgrover1 | 716:11b41f651697 | 351 | |
rgrover1 | 716:11b41f651697 | 352 | /** |
rgrover1 | 716:11b41f651697 | 353 | * Setup a particular, user-constructed advertisement payload for the |
rgrover1 | 716:11b41f651697 | 354 | * underlying stack. It would be uncommon for this API to be used directly; |
rgrover1 | 716:11b41f651697 | 355 | * there are other APIs to build an advertisement payload (see above). |
rgrover1 | 716:11b41f651697 | 356 | * |
rgrover1 | 716:11b41f651697 | 357 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 358 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 359 | * ble.setAdvertisingData(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 360 | * ble.gap().setAdvertisingPayload(...). |
rgrover1 | 716:11b41f651697 | 361 | */ |
rgrover1 | 716:11b41f651697 | 362 | ble_error_t setAdvertisingData(const GapAdvertisingData &advData) { |
rgrover1 | 716:11b41f651697 | 363 | return gap().setAdvertisingPayload(advData); |
rgrover1 | 716:11b41f651697 | 364 | } |
rgrover1 | 716:11b41f651697 | 365 | |
rgrover1 | 716:11b41f651697 | 366 | /** |
rgrover1 | 716:11b41f651697 | 367 | * @return Read back advertising data. Useful for storing and |
rgrover1 | 716:11b41f651697 | 368 | * restoring payload. |
rgrover1 | 716:11b41f651697 | 369 | * |
rgrover1 | 716:11b41f651697 | 370 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 371 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 372 | * ble.getAdvertisingData(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 373 | * ble.gap().getAdvertisingPayload()(...). |
rgrover1 | 716:11b41f651697 | 374 | */ |
rgrover1 | 716:11b41f651697 | 375 | const GapAdvertisingData &getAdvertisingData(void) const { |
rgrover1 | 716:11b41f651697 | 376 | return gap().getAdvertisingPayload(); |
rgrover1 | 716:11b41f651697 | 377 | } |
rgrover1 | 716:11b41f651697 | 378 | |
rgrover1 | 716:11b41f651697 | 379 | /** |
rgrover1 | 716:11b41f651697 | 380 | * Reset any advertising payload prepared from prior calls to |
rgrover1 | 716:11b41f651697 | 381 | * accumulateAdvertisingPayload(). This automatically propagates the re- |
rgrover1 | 716:11b41f651697 | 382 | * initialized adv payload to the underlying stack. |
rgrover1 | 716:11b41f651697 | 383 | * |
rgrover1 | 716:11b41f651697 | 384 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 385 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 386 | * ble.clearAdvertisingPayload(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 387 | * ble.gap().clearAdvertisingPayload(...). |
rgrover1 | 716:11b41f651697 | 388 | */ |
rgrover1 | 716:11b41f651697 | 389 | void clearAdvertisingPayload(void) { |
rgrover1 | 716:11b41f651697 | 390 | gap().clearAdvertisingPayload(); |
rgrover1 | 716:11b41f651697 | 391 | } |
rgrover1 | 716:11b41f651697 | 392 | |
rgrover1 | 716:11b41f651697 | 393 | /** |
rgrover1 | 716:11b41f651697 | 394 | * This API is *deprecated* and resolves to a no-operation. It is left here |
rgrover1 | 716:11b41f651697 | 395 | * to allow older code to compile. Please avoid using this API in new code. |
rgrover1 | 716:11b41f651697 | 396 | * This API will be dropped in a future release. |
rgrover1 | 716:11b41f651697 | 397 | * |
rgrover1 | 716:11b41f651697 | 398 | * Formerly, it would be used to dynamically reset the accumulated advertising |
rgrover1 | 716:11b41f651697 | 399 | * payload and scanResponse; to do this, the application would clear and re- |
rgrover1 | 716:11b41f651697 | 400 | * accumulate a new advertising payload (and scanResponse) before using this |
rgrover1 | 716:11b41f651697 | 401 | * API. Updates to the underlying advertisement payload now happen |
rgrover1 | 716:11b41f651697 | 402 | * implicitly. |
rgrover1 | 716:11b41f651697 | 403 | */ |
rgrover1 | 716:11b41f651697 | 404 | ble_error_t setAdvertisingPayload(void) { |
rgrover1 | 716:11b41f651697 | 405 | return BLE_ERROR_NONE; |
rgrover1 | 716:11b41f651697 | 406 | } |
rgrover1 | 716:11b41f651697 | 407 | |
rgrover1 | 716:11b41f651697 | 408 | /** |
rgrover1 | 716:11b41f651697 | 409 | * Accumulate a variable length byte-stream as an AD structure in the |
rgrover1 | 716:11b41f651697 | 410 | * scanResponse payload. |
rgrover1 | 716:11b41f651697 | 411 | * |
rgrover1 | 716:11b41f651697 | 412 | * @param[in] type The type which describes the variable length data. |
rgrover1 | 716:11b41f651697 | 413 | * @param[in] data data bytes. |
rgrover1 | 716:11b41f651697 | 414 | * @param[in] len length of data. |
rgrover1 | 716:11b41f651697 | 415 | * |
rgrover1 | 716:11b41f651697 | 416 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 417 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 418 | * ble.accumulateScanResponse(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 419 | * ble.gap().accumulateScanResponse(...). |
rgrover1 | 716:11b41f651697 | 420 | */ |
rgrover1 | 716:11b41f651697 | 421 | ble_error_t accumulateScanResponse(GapAdvertisingData::DataType type, const uint8_t *data, uint8_t len) { |
rgrover1 | 716:11b41f651697 | 422 | return gap().accumulateScanResponse(type, data, len); |
rgrover1 | 716:11b41f651697 | 423 | } |
rgrover1 | 716:11b41f651697 | 424 | |
rgrover1 | 716:11b41f651697 | 425 | /** |
rgrover1 | 716:11b41f651697 | 426 | * Reset any scan response prepared from prior calls to |
rgrover1 | 716:11b41f651697 | 427 | * accumulateScanResponse(). |
rgrover1 | 716:11b41f651697 | 428 | * |
rgrover1 | 716:11b41f651697 | 429 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 430 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 431 | * ble.clearScanResponse(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 432 | * ble.gap().clearScanResponse(...). |
rgrover1 | 716:11b41f651697 | 433 | */ |
rgrover1 | 716:11b41f651697 | 434 | void clearScanResponse(void) { |
rgrover1 | 716:11b41f651697 | 435 | gap().clearScanResponse(); |
rgrover1 | 716:11b41f651697 | 436 | } |
rgrover1 | 716:11b41f651697 | 437 | |
rgrover1 | 716:11b41f651697 | 438 | /** |
rgrover1 | 716:11b41f651697 | 439 | * Start advertising. |
rgrover1 | 716:11b41f651697 | 440 | * |
rgrover1 | 716:11b41f651697 | 441 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 442 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 443 | * ble.startAdvertising(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 444 | * ble.gap().startAdvertising(...). |
rgrover1 | 716:11b41f651697 | 445 | */ |
rgrover1 | 716:11b41f651697 | 446 | ble_error_t startAdvertising(void) { |
rgrover1 | 716:11b41f651697 | 447 | return gap().startAdvertising(); |
rgrover1 | 716:11b41f651697 | 448 | } |
rgrover1 | 716:11b41f651697 | 449 | |
rgrover1 | 716:11b41f651697 | 450 | /** |
rgrover1 | 716:11b41f651697 | 451 | * Stop advertising. |
rgrover1 | 716:11b41f651697 | 452 | * |
rgrover1 | 716:11b41f651697 | 453 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 454 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 455 | * ble.stopAdvertising(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 456 | * ble.gap().stopAdvertising(...). |
rgrover1 | 716:11b41f651697 | 457 | */ |
rgrover1 | 716:11b41f651697 | 458 | ble_error_t stopAdvertising(void) { |
rgrover1 | 716:11b41f651697 | 459 | return gap().stopAdvertising(); |
rgrover1 | 716:11b41f651697 | 460 | } |
rgrover1 | 716:11b41f651697 | 461 | |
rgrover1 | 716:11b41f651697 | 462 | /** |
rgrover1 | 716:11b41f651697 | 463 | * Setup parameters for GAP scanning--i.e. observer mode. |
rgrover1 | 716:11b41f651697 | 464 | * @param[in] interval |
rgrover1 | 716:11b41f651697 | 465 | * Scan interval (in milliseconds) [valid values lie between 2.5ms and 10.24s]. |
rgrover1 | 716:11b41f651697 | 466 | * @param[in] window |
rgrover1 | 716:11b41f651697 | 467 | * Scan Window (in milliseconds) [valid values lie between 2.5ms and 10.24s]. |
rgrover1 | 716:11b41f651697 | 468 | * @param[in] timeout |
rgrover1 | 716:11b41f651697 | 469 | * Scan timeout (in seconds) between 0x0001 and 0xFFFF, 0x0000 disables timeout. |
rgrover1 | 716:11b41f651697 | 470 | * @param[in] activeScanning |
rgrover1 | 716:11b41f651697 | 471 | * Set to True if active-scanning is required. This is used to fetch the |
rgrover1 | 716:11b41f651697 | 472 | * scan response from a peer if possible. |
rgrover1 | 716:11b41f651697 | 473 | * |
rgrover1 | 716:11b41f651697 | 474 | * The scanning window divided by the interval determines the duty cycle for |
rgrover1 | 716:11b41f651697 | 475 | * scanning. For example, if the interval is 100ms and the window is 10ms, |
rgrover1 | 716:11b41f651697 | 476 | * then the controller will scan for 10 percent of the time. It is possible |
rgrover1 | 716:11b41f651697 | 477 | * to have the interval and window set to the same value. In this case, |
rgrover1 | 716:11b41f651697 | 478 | * scanning is continuous, with a change of scanning frequency once every |
rgrover1 | 716:11b41f651697 | 479 | * interval. |
rgrover1 | 716:11b41f651697 | 480 | * |
rgrover1 | 716:11b41f651697 | 481 | * Once the scanning parameters have been configured, scanning can be |
rgrover1 | 716:11b41f651697 | 482 | * enabled by using startScan(). |
rgrover1 | 716:11b41f651697 | 483 | * |
rgrover1 | 716:11b41f651697 | 484 | * @Note: The scan interval and window are recommendations to the BLE stack. |
rgrover1 | 716:11b41f651697 | 485 | * |
rgrover1 | 716:11b41f651697 | 486 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 487 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 488 | * ble.setScanParams(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 489 | * ble.gap().setScanParams(...). |
rgrover1 | 716:11b41f651697 | 490 | */ |
rgrover1 | 716:11b41f651697 | 491 | ble_error_t setScanParams(uint16_t interval = GapScanningParams::SCAN_INTERVAL_MAX, |
rgrover1 | 716:11b41f651697 | 492 | uint16_t window = GapScanningParams::SCAN_WINDOW_MAX, |
rgrover1 | 716:11b41f651697 | 493 | uint16_t timeout = 0, |
rgrover1 | 716:11b41f651697 | 494 | bool activeScanning = false) { |
rgrover1 | 716:11b41f651697 | 495 | return gap().setScanParams(interval, window, timeout, activeScanning); |
rgrover1 | 716:11b41f651697 | 496 | } |
rgrover1 | 716:11b41f651697 | 497 | |
rgrover1 | 716:11b41f651697 | 498 | /** |
rgrover1 | 716:11b41f651697 | 499 | * Setup the scanInterval parameter for GAP scanning--i.e. observer mode. |
rgrover1 | 716:11b41f651697 | 500 | * @param[in] interval |
rgrover1 | 716:11b41f651697 | 501 | * Scan interval (in milliseconds) [valid values lie between 2.5ms and 10.24s]. |
rgrover1 | 716:11b41f651697 | 502 | * |
rgrover1 | 716:11b41f651697 | 503 | * The scanning window divided by the interval determines the duty cycle for |
rgrover1 | 716:11b41f651697 | 504 | * scanning. For example, if the interval is 100ms and the window is 10ms, |
rgrover1 | 716:11b41f651697 | 505 | * then the controller will scan for 10 percent of the time. It is possible |
rgrover1 | 716:11b41f651697 | 506 | * to have the interval and window set to the same value. In this case, |
rgrover1 | 716:11b41f651697 | 507 | * scanning is continuous, with a change of scanning frequency once every |
rgrover1 | 716:11b41f651697 | 508 | * interval. |
rgrover1 | 716:11b41f651697 | 509 | * |
rgrover1 | 716:11b41f651697 | 510 | * Once the scanning parameters have been configured, scanning can be |
rgrover1 | 716:11b41f651697 | 511 | * enabled by using startScan(). |
rgrover1 | 716:11b41f651697 | 512 | * |
rgrover1 | 716:11b41f651697 | 513 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 514 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 515 | * ble.setScanInterval(interval) should be replaced with |
rgrover1 | 716:11b41f651697 | 516 | * ble.gap().setScanInterval(interval). |
rgrover1 | 716:11b41f651697 | 517 | */ |
rgrover1 | 716:11b41f651697 | 518 | ble_error_t setScanInterval(uint16_t interval) { |
rgrover1 | 716:11b41f651697 | 519 | return gap().setScanInterval(interval); |
rgrover1 | 716:11b41f651697 | 520 | } |
rgrover1 | 716:11b41f651697 | 521 | |
rgrover1 | 716:11b41f651697 | 522 | /** |
rgrover1 | 716:11b41f651697 | 523 | * Setup the scanWindow parameter for GAP scanning--i.e. observer mode. |
rgrover1 | 716:11b41f651697 | 524 | * @param[in] window |
rgrover1 | 716:11b41f651697 | 525 | * Scan Window (in milliseconds) [valid values lie between 2.5ms and 10.24s]. |
rgrover1 | 716:11b41f651697 | 526 | * |
rgrover1 | 716:11b41f651697 | 527 | * The scanning window divided by the interval determines the duty cycle for |
rgrover1 | 716:11b41f651697 | 528 | * scanning. For example, if the interval is 100ms and the window is 10ms, |
rgrover1 | 716:11b41f651697 | 529 | * then the controller will scan for 10 percent of the time. It is possible |
rgrover1 | 716:11b41f651697 | 530 | * to have the interval and window set to the same value. In this case, |
rgrover1 | 716:11b41f651697 | 531 | * scanning is continuous, with a change of scanning frequency once every |
rgrover1 | 716:11b41f651697 | 532 | * interval. |
rgrover1 | 716:11b41f651697 | 533 | * |
rgrover1 | 716:11b41f651697 | 534 | * Once the scanning parameters have been configured, scanning can be |
rgrover1 | 716:11b41f651697 | 535 | * enabled by using startScan(). |
rgrover1 | 716:11b41f651697 | 536 | * |
rgrover1 | 716:11b41f651697 | 537 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 538 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 539 | * ble.setScanWindow(window) should be replaced with |
rgrover1 | 716:11b41f651697 | 540 | * ble.gap().setScanWindow(window). |
rgrover1 | 716:11b41f651697 | 541 | */ |
rgrover1 | 716:11b41f651697 | 542 | ble_error_t setScanWindow(uint16_t window) { |
rgrover1 | 716:11b41f651697 | 543 | return gap().setScanWindow(window); |
rgrover1 | 716:11b41f651697 | 544 | } |
rgrover1 | 716:11b41f651697 | 545 | |
rgrover1 | 716:11b41f651697 | 546 | /** |
rgrover1 | 716:11b41f651697 | 547 | * Setup parameters for GAP scanning--i.e. observer mode. |
rgrover1 | 716:11b41f651697 | 548 | * @param[in] timeout |
rgrover1 | 716:11b41f651697 | 549 | * Scan timeout (in seconds) between 0x0001 and 0xFFFF, 0x0000 disables timeout. |
rgrover1 | 716:11b41f651697 | 550 | * |
rgrover1 | 716:11b41f651697 | 551 | * The scanning window divided by the interval determines the duty cycle for |
rgrover1 | 716:11b41f651697 | 552 | * scanning. For example, if the interval is 100ms and the window is 10ms, |
rgrover1 | 716:11b41f651697 | 553 | * then the controller will scan for 10 percent of the time. It is possible |
rgrover1 | 716:11b41f651697 | 554 | * to have the interval and window set to the same value. In this case, |
rgrover1 | 716:11b41f651697 | 555 | * scanning is continuous, with a change of scanning frequency once every |
rgrover1 | 716:11b41f651697 | 556 | * interval. |
rgrover1 | 716:11b41f651697 | 557 | * |
rgrover1 | 716:11b41f651697 | 558 | * Once the scanning parameters have been configured, scanning can be |
rgrover1 | 716:11b41f651697 | 559 | * enabled by using startScan(). |
rgrover1 | 716:11b41f651697 | 560 | * |
rgrover1 | 716:11b41f651697 | 561 | * @Note: The scan interval and window are recommendations to the BLE stack. |
rgrover1 | 716:11b41f651697 | 562 | * |
rgrover1 | 716:11b41f651697 | 563 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 564 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 565 | * ble.setScanTimeout(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 566 | * ble.gap().setScanTimeout(...). |
rgrover1 | 716:11b41f651697 | 567 | */ |
rgrover1 | 716:11b41f651697 | 568 | ble_error_t setScanTimeout(uint16_t timeout) { |
rgrover1 | 716:11b41f651697 | 569 | return gap().setScanTimeout(timeout); |
rgrover1 | 716:11b41f651697 | 570 | } |
rgrover1 | 716:11b41f651697 | 571 | |
rgrover1 | 716:11b41f651697 | 572 | /** |
rgrover1 | 716:11b41f651697 | 573 | * Setup parameters for GAP scanning--i.e. observer mode. |
rgrover1 | 716:11b41f651697 | 574 | * @param[in] activeScanning |
rgrover1 | 716:11b41f651697 | 575 | * Set to True if active-scanning is required. This is used to fetch the |
rgrover1 | 716:11b41f651697 | 576 | * scan response from a peer if possible. |
rgrover1 | 716:11b41f651697 | 577 | * |
rgrover1 | 716:11b41f651697 | 578 | * Once the scanning parameters have been configured, scanning can be |
rgrover1 | 716:11b41f651697 | 579 | * enabled by using startScan(). |
rgrover1 | 716:11b41f651697 | 580 | * |
rgrover1 | 716:11b41f651697 | 581 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 582 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 583 | * ble.setActiveScan(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 584 | * ble.gap().setActiveScanning(...). |
rgrover1 | 716:11b41f651697 | 585 | */ |
rgrover1 | 716:11b41f651697 | 586 | void setActiveScan(bool activeScanning) { |
rgrover1 | 716:11b41f651697 | 587 | gap().setActiveScanning(activeScanning); |
rgrover1 | 716:11b41f651697 | 588 | } |
rgrover1 | 716:11b41f651697 | 589 | |
rgrover1 | 716:11b41f651697 | 590 | /** |
rgrover1 | 716:11b41f651697 | 591 | * Start scanning (Observer Procedure) based on the parameters currently in |
rgrover1 | 716:11b41f651697 | 592 | * effect. |
rgrover1 | 716:11b41f651697 | 593 | * |
rgrover1 | 716:11b41f651697 | 594 | * @param[in] callback |
rgrover1 | 716:11b41f651697 | 595 | * The application specific callback to be invoked upon |
rgrover1 | 716:11b41f651697 | 596 | * receiving every advertisement report. This can be passed in |
rgrover1 | 716:11b41f651697 | 597 | * as NULL, in which case scanning may not be enabled at all. |
rgrover1 | 716:11b41f651697 | 598 | * |
rgrover1 | 716:11b41f651697 | 599 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 600 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 601 | * ble.startScan(callback) should be replaced with |
rgrover1 | 716:11b41f651697 | 602 | * ble.gap().startScan(callback). |
rgrover1 | 716:11b41f651697 | 603 | */ |
rgrover1 | 716:11b41f651697 | 604 | ble_error_t startScan(void (*callback)(const Gap::AdvertisementCallbackParams_t *params)) { |
rgrover1 | 716:11b41f651697 | 605 | return gap().startScan(callback); |
rgrover1 | 716:11b41f651697 | 606 | } |
rgrover1 | 716:11b41f651697 | 607 | |
rgrover1 | 716:11b41f651697 | 608 | /** |
rgrover1 | 716:11b41f651697 | 609 | * Same as above, but this takes an (object, method) pair for a callback. |
rgrover1 | 716:11b41f651697 | 610 | * |
rgrover1 | 716:11b41f651697 | 611 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 612 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 613 | * ble.startScan(callback) should be replaced with |
rgrover1 | 716:11b41f651697 | 614 | * ble.gap().startScan(object, callback). |
rgrover1 | 716:11b41f651697 | 615 | */ |
rgrover1 | 716:11b41f651697 | 616 | template<typename T> |
rgrover1 | 716:11b41f651697 | 617 | ble_error_t startScan(T *object, void (T::*memberCallback)(const Gap::AdvertisementCallbackParams_t *params)); |
rgrover1 | 716:11b41f651697 | 618 | |
rgrover1 | 716:11b41f651697 | 619 | /** |
rgrover1 | 716:11b41f651697 | 620 | * Stop scanning. The current scanning parameters remain in effect. |
rgrover1 | 716:11b41f651697 | 621 | * |
rgrover1 | 716:11b41f651697 | 622 | * @retval BLE_ERROR_NONE if successfully stopped scanning procedure. |
rgrover1 | 716:11b41f651697 | 623 | * |
rgrover1 | 716:11b41f651697 | 624 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 625 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 626 | * ble.stopScan() should be replaced with |
rgrover1 | 716:11b41f651697 | 627 | * ble.gap().stopScan(). |
rgrover1 | 716:11b41f651697 | 628 | */ |
rgrover1 | 716:11b41f651697 | 629 | ble_error_t stopScan(void) { |
rgrover1 | 716:11b41f651697 | 630 | return gap().stopScan(); |
rgrover1 | 716:11b41f651697 | 631 | } |
rgrover1 | 716:11b41f651697 | 632 | |
rgrover1 | 716:11b41f651697 | 633 | /** |
rgrover1 | 716:11b41f651697 | 634 | * Create a connection (GAP Link Establishment). |
rgrover1 | 716:11b41f651697 | 635 | * @param peerAddr |
rgrover1 | 716:11b41f651697 | 636 | * 48-bit address, LSB format. |
rgrover1 | 716:11b41f651697 | 637 | * @param peerAddrType |
rgrover1 | 716:11b41f651697 | 638 | * Address type of the peer. |
rgrover1 | 716:11b41f651697 | 639 | * @param connectionParams |
rgrover1 | 716:11b41f651697 | 640 | * Connection parameters. |
rgrover1 | 716:11b41f651697 | 641 | * @param scanParams |
rgrover1 | 716:11b41f651697 | 642 | * Paramters to be used while scanning for the peer. |
rgrover1 | 716:11b41f651697 | 643 | * @return BLE_ERROR_NONE if connection establishment procedure is started |
rgrover1 | 716:11b41f651697 | 644 | * successfully. The onConnection callback (if set) will be invoked upon |
rgrover1 | 716:11b41f651697 | 645 | * a connection event. |
rgrover1 | 716:11b41f651697 | 646 | * |
rgrover1 | 716:11b41f651697 | 647 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 648 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 649 | * ble.connect(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 650 | * ble.gap().connect(...). |
rgrover1 | 716:11b41f651697 | 651 | */ |
rgrover1 | 716:11b41f651697 | 652 | ble_error_t connect(const Gap::Address_t peerAddr, |
rgrover1 | 716:11b41f651697 | 653 | Gap::AddressType_t peerAddrType = Gap::ADDR_TYPE_RANDOM_STATIC, |
rgrover1 | 716:11b41f651697 | 654 | const Gap::ConnectionParams_t *connectionParams = NULL, |
rgrover1 | 716:11b41f651697 | 655 | const GapScanningParams *scanParams = NULL) { |
rgrover1 | 716:11b41f651697 | 656 | return gap().connect(peerAddr, peerAddrType, connectionParams, scanParams); |
rgrover1 | 716:11b41f651697 | 657 | } |
rgrover1 | 716:11b41f651697 | 658 | |
rgrover1 | 716:11b41f651697 | 659 | /** |
rgrover1 | 716:11b41f651697 | 660 | * This call initiates the disconnection procedure, and its completion will |
rgrover1 | 716:11b41f651697 | 661 | * be communicated to the application with an invocation of the |
rgrover1 | 716:11b41f651697 | 662 | * onDisconnection callback. |
rgrover1 | 716:11b41f651697 | 663 | * |
rgrover1 | 716:11b41f651697 | 664 | * @param[in] connectionHandle |
rgrover1 | 716:11b41f651697 | 665 | * @param[in] reason |
rgrover1 | 716:11b41f651697 | 666 | * The reason for disconnection to be sent back to the peer. |
rgrover1 | 716:11b41f651697 | 667 | */ |
rgrover1 | 716:11b41f651697 | 668 | ble_error_t disconnect(Gap::Handle_t connectionHandle, Gap::DisconnectionReason_t reason) { |
rgrover1 | 716:11b41f651697 | 669 | return gap().disconnect(connectionHandle, reason); |
rgrover1 | 716:11b41f651697 | 670 | } |
rgrover1 | 716:11b41f651697 | 671 | |
rgrover1 | 716:11b41f651697 | 672 | /** |
rgrover1 | 716:11b41f651697 | 673 | * This call initiates the disconnection procedure, and its completion will |
rgrover1 | 716:11b41f651697 | 674 | * be communicated to the application with an invocation of the |
rgrover1 | 716:11b41f651697 | 675 | * onDisconnection callback. |
rgrover1 | 716:11b41f651697 | 676 | * |
rgrover1 | 716:11b41f651697 | 677 | * @param reason |
rgrover1 | 716:11b41f651697 | 678 | * The reason for disconnection to be sent back to the peer. |
rgrover1 | 716:11b41f651697 | 679 | * |
rgrover1 | 716:11b41f651697 | 680 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 681 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 682 | * ble.disconnect(reason) should be replaced with |
rgrover1 | 716:11b41f651697 | 683 | * ble.gap().disconnect(reason). |
rgrover1 | 716:11b41f651697 | 684 | * |
rgrover1 | 716:11b41f651697 | 685 | * @note: this version of disconnect() doesn't take a connection handle. It |
rgrover1 | 716:11b41f651697 | 686 | * will work reliably only for stacks which are limited to a single |
rgrover1 | 716:11b41f651697 | 687 | * connection. This API should be considered *deprecated* in favour of the |
rgrover1 | 716:11b41f651697 | 688 | * alternative which takes a connection handle. It will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 689 | */ |
rgrover1 | 716:11b41f651697 | 690 | ble_error_t disconnect(Gap::DisconnectionReason_t reason) { |
rgrover1 | 716:11b41f651697 | 691 | return gap().disconnect(reason); |
rgrover1 | 716:11b41f651697 | 692 | } |
rgrover1 | 716:11b41f651697 | 693 | |
rgrover1 | 716:11b41f651697 | 694 | /** |
rgrover1 | 716:11b41f651697 | 695 | * Returns the current GAP state of the device using a bitmask which |
rgrover1 | 716:11b41f651697 | 696 | * describes whether the device is advertising and/or connected. |
rgrover1 | 716:11b41f651697 | 697 | * |
rgrover1 | 716:11b41f651697 | 698 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 699 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 700 | * ble.getGapState() should be replaced with |
rgrover1 | 716:11b41f651697 | 701 | * ble.gap().getState(). |
rgrover1 | 716:11b41f651697 | 702 | */ |
rgrover1 | 716:11b41f651697 | 703 | Gap::GapState_t getGapState(void) const { |
rgrover1 | 716:11b41f651697 | 704 | return gap().getState(); |
rgrover1 | 716:11b41f651697 | 705 | } |
rgrover1 | 716:11b41f651697 | 706 | |
rgrover1 | 716:11b41f651697 | 707 | /** |
rgrover1 | 716:11b41f651697 | 708 | * Get the GAP peripheral preferred connection parameters. These are the |
rgrover1 | 716:11b41f651697 | 709 | * defaults that the peripheral would like to have in a connection. The |
rgrover1 | 716:11b41f651697 | 710 | * choice of the connection parameters is eventually up to the central. |
rgrover1 | 716:11b41f651697 | 711 | * |
rgrover1 | 716:11b41f651697 | 712 | * @param[out] params |
rgrover1 | 716:11b41f651697 | 713 | * The structure where the parameters will be stored. Memory |
rgrover1 | 716:11b41f651697 | 714 | * for this is owned by the caller. |
rgrover1 | 716:11b41f651697 | 715 | * |
rgrover1 | 716:11b41f651697 | 716 | * @return BLE_ERROR_NONE if the parameters were successfully filled into |
rgrover1 | 716:11b41f651697 | 717 | * the given structure pointed to by params. |
rgrover1 | 716:11b41f651697 | 718 | * |
rgrover1 | 716:11b41f651697 | 719 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 720 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 721 | * ble.getPreferredConnectionParams() should be replaced with |
rgrover1 | 716:11b41f651697 | 722 | * ble.gap().getPreferredConnectionParams(). |
rgrover1 | 716:11b41f651697 | 723 | */ |
rgrover1 | 716:11b41f651697 | 724 | ble_error_t getPreferredConnectionParams(Gap::ConnectionParams_t *params) { |
rgrover1 | 716:11b41f651697 | 725 | return gap().getPreferredConnectionParams(params); |
rgrover1 | 716:11b41f651697 | 726 | } |
rgrover1 | 716:11b41f651697 | 727 | |
rgrover1 | 716:11b41f651697 | 728 | /** |
rgrover1 | 716:11b41f651697 | 729 | * Set the GAP peripheral preferred connection parameters. These are the |
rgrover1 | 716:11b41f651697 | 730 | * defaults that the peripheral would like to have in a connection. The |
rgrover1 | 716:11b41f651697 | 731 | * choice of the connection parameters is eventually up to the central. |
rgrover1 | 716:11b41f651697 | 732 | * |
rgrover1 | 716:11b41f651697 | 733 | * @param[in] params |
rgrover1 | 716:11b41f651697 | 734 | * The structure containing the desired parameters. |
rgrover1 | 716:11b41f651697 | 735 | * |
rgrover1 | 716:11b41f651697 | 736 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 737 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 738 | * ble.setPreferredConnectionParams() should be replaced with |
rgrover1 | 716:11b41f651697 | 739 | * ble.gap().setPreferredConnectionParams(). |
rgrover1 | 716:11b41f651697 | 740 | */ |
rgrover1 | 716:11b41f651697 | 741 | ble_error_t setPreferredConnectionParams(const Gap::ConnectionParams_t *params) { |
rgrover1 | 716:11b41f651697 | 742 | return gap().setPreferredConnectionParams(params); |
rgrover1 | 716:11b41f651697 | 743 | } |
rgrover1 | 716:11b41f651697 | 744 | |
rgrover1 | 716:11b41f651697 | 745 | /** |
rgrover1 | 716:11b41f651697 | 746 | * Update connection parameters while in the peripheral role. |
rgrover1 | 716:11b41f651697 | 747 | * @details In the peripheral role, this will send the corresponding L2CAP request to the connected peer and wait for |
rgrover1 | 716:11b41f651697 | 748 | * the central to perform the procedure. |
rgrover1 | 716:11b41f651697 | 749 | * @param[in] handle |
rgrover1 | 716:11b41f651697 | 750 | * Connection Handle |
rgrover1 | 716:11b41f651697 | 751 | * @param[in] params |
rgrover1 | 716:11b41f651697 | 752 | * Pointer to desired connection parameters. If NULL is provided on a peripheral role, |
rgrover1 | 716:11b41f651697 | 753 | * the parameters in the PPCP characteristic of the GAP service will be used instead. |
rgrover1 | 716:11b41f651697 | 754 | * |
rgrover1 | 716:11b41f651697 | 755 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 756 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 757 | * ble.updateConnectionParams() should be replaced with |
rgrover1 | 716:11b41f651697 | 758 | * ble.gap().updateConnectionParams(). |
rgrover1 | 716:11b41f651697 | 759 | */ |
rgrover1 | 716:11b41f651697 | 760 | ble_error_t updateConnectionParams(Gap::Handle_t handle, const Gap::ConnectionParams_t *params) { |
rgrover1 | 716:11b41f651697 | 761 | return gap().updateConnectionParams(handle, params); |
rgrover1 | 716:11b41f651697 | 762 | } |
rgrover1 | 716:11b41f651697 | 763 | |
rgrover1 | 716:11b41f651697 | 764 | /** |
rgrover1 | 716:11b41f651697 | 765 | * Set the device name characteristic in the GAP service. |
rgrover1 | 716:11b41f651697 | 766 | * @param[in] deviceName |
rgrover1 | 716:11b41f651697 | 767 | * The new value for the device-name. This is a UTF-8 encoded, <b>NULL-terminated</b> string. |
rgrover1 | 716:11b41f651697 | 768 | * |
rgrover1 | 716:11b41f651697 | 769 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 770 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 771 | * ble.setDeviceName() should be replaced with |
rgrover1 | 716:11b41f651697 | 772 | * ble.gap().setDeviceName(). |
rgrover1 | 716:11b41f651697 | 773 | */ |
rgrover1 | 716:11b41f651697 | 774 | ble_error_t setDeviceName(const uint8_t *deviceName) { |
rgrover1 | 716:11b41f651697 | 775 | return gap().setDeviceName(deviceName); |
rgrover1 | 716:11b41f651697 | 776 | } |
rgrover1 | 716:11b41f651697 | 777 | |
rgrover1 | 716:11b41f651697 | 778 | /** |
rgrover1 | 716:11b41f651697 | 779 | * Get the value of the device name characteristic in the GAP service. |
rgrover1 | 716:11b41f651697 | 780 | * @param[out] deviceName |
rgrover1 | 716:11b41f651697 | 781 | * Pointer to an empty buffer where the UTF-8 *non NULL- |
rgrover1 | 716:11b41f651697 | 782 | * terminated* string will be placed. Set this |
rgrover1 | 716:11b41f651697 | 783 | * value to NULL in order to obtain the deviceName-length |
rgrover1 | 716:11b41f651697 | 784 | * from the 'length' parameter. |
rgrover1 | 716:11b41f651697 | 785 | * |
rgrover1 | 716:11b41f651697 | 786 | * @param[in/out] lengthP |
rgrover1 | 716:11b41f651697 | 787 | * (on input) Length of the buffer pointed to by deviceName; |
rgrover1 | 716:11b41f651697 | 788 | * (on output) the complete device name length (without the |
rgrover1 | 716:11b41f651697 | 789 | * null terminator). |
rgrover1 | 716:11b41f651697 | 790 | * |
rgrover1 | 716:11b41f651697 | 791 | * @note If the device name is longer than the size of the supplied buffer, |
rgrover1 | 716:11b41f651697 | 792 | * length will return the complete device name length, and not the |
rgrover1 | 716:11b41f651697 | 793 | * number of bytes actually returned in deviceName. The application may |
rgrover1 | 716:11b41f651697 | 794 | * use this information to retry with a suitable buffer size. |
rgrover1 | 716:11b41f651697 | 795 | * |
rgrover1 | 716:11b41f651697 | 796 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 797 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 798 | * ble.getDeviceName() should be replaced with |
rgrover1 | 716:11b41f651697 | 799 | * ble.gap().getDeviceName(). |
rgrover1 | 716:11b41f651697 | 800 | */ |
rgrover1 | 716:11b41f651697 | 801 | ble_error_t getDeviceName(uint8_t *deviceName, unsigned *lengthP) { |
rgrover1 | 716:11b41f651697 | 802 | return gap().getDeviceName(deviceName, lengthP); |
rgrover1 | 716:11b41f651697 | 803 | } |
rgrover1 | 716:11b41f651697 | 804 | |
rgrover1 | 716:11b41f651697 | 805 | /** |
rgrover1 | 716:11b41f651697 | 806 | * Set the appearance characteristic in the GAP service. |
rgrover1 | 716:11b41f651697 | 807 | * @param[in] appearance |
rgrover1 | 716:11b41f651697 | 808 | * The new value for the device-appearance. |
rgrover1 | 716:11b41f651697 | 809 | * |
rgrover1 | 716:11b41f651697 | 810 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 811 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 812 | * ble.setAppearance() should be replaced with |
rgrover1 | 716:11b41f651697 | 813 | * ble.gap().setAppearance(). |
rgrover1 | 716:11b41f651697 | 814 | */ |
rgrover1 | 716:11b41f651697 | 815 | ble_error_t setAppearance(GapAdvertisingData::Appearance appearance) { |
rgrover1 | 716:11b41f651697 | 816 | return gap().setAppearance(appearance); |
rgrover1 | 716:11b41f651697 | 817 | } |
rgrover1 | 716:11b41f651697 | 818 | |
rgrover1 | 716:11b41f651697 | 819 | /** |
rgrover1 | 716:11b41f651697 | 820 | * Get the appearance characteristic in the GAP service. |
rgrover1 | 716:11b41f651697 | 821 | * @param[out] appearance |
rgrover1 | 716:11b41f651697 | 822 | * The new value for the device-appearance. |
rgrover1 | 716:11b41f651697 | 823 | * |
rgrover1 | 716:11b41f651697 | 824 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 825 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 826 | * ble.getAppearance() should be replaced with |
rgrover1 | 716:11b41f651697 | 827 | * ble.gap().getAppearance(). |
rgrover1 | 716:11b41f651697 | 828 | */ |
rgrover1 | 716:11b41f651697 | 829 | ble_error_t getAppearance(GapAdvertisingData::Appearance *appearanceP) { |
rgrover1 | 716:11b41f651697 | 830 | return gap().getAppearance(appearanceP); |
rgrover1 | 716:11b41f651697 | 831 | } |
rgrover1 | 716:11b41f651697 | 832 | |
rgrover1 | 716:11b41f651697 | 833 | /** |
rgrover1 | 716:11b41f651697 | 834 | * Set the radio's transmit power. |
rgrover1 | 716:11b41f651697 | 835 | * @param[in] txPower Radio transmit power in dBm. |
rgrover1 | 716:11b41f651697 | 836 | * |
rgrover1 | 716:11b41f651697 | 837 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 838 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 839 | * ble.setTxPower() should be replaced with |
rgrover1 | 716:11b41f651697 | 840 | * ble.gap().setTxPower(). |
rgrover1 | 716:11b41f651697 | 841 | */ |
rgrover1 | 716:11b41f651697 | 842 | ble_error_t setTxPower(int8_t txPower) { |
rgrover1 | 716:11b41f651697 | 843 | return gap().setTxPower(txPower); |
rgrover1 | 716:11b41f651697 | 844 | } |
rgrover1 | 716:11b41f651697 | 845 | |
rgrover1 | 716:11b41f651697 | 846 | /** |
rgrover1 | 716:11b41f651697 | 847 | * Query the underlying stack for permitted arguments for setTxPower(). |
rgrover1 | 716:11b41f651697 | 848 | * |
rgrover1 | 716:11b41f651697 | 849 | * @param[out] valueArrayPP |
rgrover1 | 716:11b41f651697 | 850 | * Out parameter to receive the immutable array of Tx values. |
rgrover1 | 716:11b41f651697 | 851 | * @param[out] countP |
rgrover1 | 716:11b41f651697 | 852 | * Out parameter to receive the array's size. |
rgrover1 | 716:11b41f651697 | 853 | * |
rgrover1 | 716:11b41f651697 | 854 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 855 | * You should use the parallel API from Gap directly. A former call to |
rgrover1 | 716:11b41f651697 | 856 | * ble.getPermittedTxPowerValues() should be replaced with |
rgrover1 | 716:11b41f651697 | 857 | * ble.gap().getPermittedTxPowerValues(). |
rgrover1 | 716:11b41f651697 | 858 | */ |
rgrover1 | 716:11b41f651697 | 859 | void getPermittedTxPowerValues(const int8_t **valueArrayPP, size_t *countP) { |
rgrover1 | 716:11b41f651697 | 860 | gap().getPermittedTxPowerValues(valueArrayPP, countP); |
rgrover1 | 716:11b41f651697 | 861 | } |
rgrover1 | 716:11b41f651697 | 862 | |
rgrover1 | 716:11b41f651697 | 863 | /** |
rgrover1 | 716:11b41f651697 | 864 | * Add a service declaration to the local server ATT table. Also add the |
rgrover1 | 716:11b41f651697 | 865 | * characteristics contained within. |
rgrover1 | 716:11b41f651697 | 866 | * |
rgrover1 | 716:11b41f651697 | 867 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 868 | * You should use the parallel API from GattServer directly. A former call |
rgrover1 | 716:11b41f651697 | 869 | * to ble.addService() should be replaced with |
rgrover1 | 716:11b41f651697 | 870 | * ble.gattServer().addService(). |
rgrover1 | 716:11b41f651697 | 871 | */ |
rgrover1 | 716:11b41f651697 | 872 | ble_error_t addService(GattService &service) { |
rgrover1 | 716:11b41f651697 | 873 | return gattServer().addService(service); |
rgrover1 | 716:11b41f651697 | 874 | } |
rgrover1 | 716:11b41f651697 | 875 | |
rgrover1 | 716:11b41f651697 | 876 | /** |
rgrover1 | 716:11b41f651697 | 877 | * Read the value of a characteristic from the local GattServer |
rgrover1 | 716:11b41f651697 | 878 | * @param[in] attributeHandle |
rgrover1 | 716:11b41f651697 | 879 | * Attribute handle for the value attribute of the characteristic. |
rgrover1 | 716:11b41f651697 | 880 | * @param[out] buffer |
rgrover1 | 716:11b41f651697 | 881 | * A buffer to hold the value being read. |
rgrover1 | 716:11b41f651697 | 882 | * @param[in/out] lengthP |
rgrover1 | 716:11b41f651697 | 883 | * Length of the buffer being supplied. If the attribute |
rgrover1 | 716:11b41f651697 | 884 | * value is longer than the size of the supplied buffer, |
rgrover1 | 716:11b41f651697 | 885 | * this variable will hold upon return the total attribute value length |
rgrover1 | 716:11b41f651697 | 886 | * (excluding offset). The application may use this |
rgrover1 | 716:11b41f651697 | 887 | * information to allocate a suitable buffer size. |
rgrover1 | 716:11b41f651697 | 888 | * |
rgrover1 | 716:11b41f651697 | 889 | * @return BLE_ERROR_NONE if a value was read successfully into the buffer. |
rgrover1 | 716:11b41f651697 | 890 | * |
rgrover1 | 716:11b41f651697 | 891 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 892 | * You should use the parallel API from GattServer directly. A former call |
rgrover1 | 716:11b41f651697 | 893 | * to ble.readCharacteristicValue() should be replaced with |
rgrover1 | 716:11b41f651697 | 894 | * ble.gattServer().read(). |
rgrover1 | 716:11b41f651697 | 895 | */ |
rgrover1 | 716:11b41f651697 | 896 | ble_error_t readCharacteristicValue(GattAttribute::Handle_t attributeHandle, uint8_t *buffer, uint16_t *lengthP) { |
rgrover1 | 716:11b41f651697 | 897 | return gattServer().read(attributeHandle, buffer, lengthP); |
rgrover1 | 716:11b41f651697 | 898 | } |
rgrover1 | 716:11b41f651697 | 899 | |
rgrover1 | 716:11b41f651697 | 900 | /** |
rgrover1 | 716:11b41f651697 | 901 | * Read the value of a characteristic from the local GattServer |
rgrover1 | 716:11b41f651697 | 902 | * @param[in] connectionHandle |
rgrover1 | 716:11b41f651697 | 903 | * Connection Handle. |
rgrover1 | 716:11b41f651697 | 904 | * @param[in] attributeHandle |
rgrover1 | 716:11b41f651697 | 905 | * Attribute handle for the value attribute of the characteristic. |
rgrover1 | 716:11b41f651697 | 906 | * @param[out] buffer |
rgrover1 | 716:11b41f651697 | 907 | * A buffer to hold the value being read. |
rgrover1 | 716:11b41f651697 | 908 | * @param[in/out] lengthP |
rgrover1 | 716:11b41f651697 | 909 | * Length of the buffer being supplied. If the attribute |
rgrover1 | 716:11b41f651697 | 910 | * value is longer than the size of the supplied buffer, |
rgrover1 | 716:11b41f651697 | 911 | * this variable will hold upon return the total attribute value length |
rgrover1 | 716:11b41f651697 | 912 | * (excluding offset). The application may use this |
rgrover1 | 716:11b41f651697 | 913 | * information to allocate a suitable buffer size. |
rgrover1 | 716:11b41f651697 | 914 | * |
rgrover1 | 716:11b41f651697 | 915 | * @return BLE_ERROR_NONE if a value was read successfully into the buffer. |
rgrover1 | 716:11b41f651697 | 916 | * |
rgrover1 | 716:11b41f651697 | 917 | * @note This API is a version of above with an additional connection handle |
rgrover1 | 716:11b41f651697 | 918 | * parameter to allow fetches for connection-specific multivalued |
rgrover1 | 716:11b41f651697 | 919 | * attribtues (such as the CCCDs). |
rgrover1 | 716:11b41f651697 | 920 | * |
rgrover1 | 716:11b41f651697 | 921 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 922 | * You should use the parallel API from GattServer directly. A former call |
rgrover1 | 716:11b41f651697 | 923 | * to ble.readCharacteristicValue() should be replaced with |
rgrover1 | 716:11b41f651697 | 924 | * ble.gattServer().read(). |
rgrover1 | 716:11b41f651697 | 925 | */ |
rgrover1 | 716:11b41f651697 | 926 | ble_error_t readCharacteristicValue(Gap::Handle_t connectionHandle, GattAttribute::Handle_t attributeHandle, uint8_t *buffer, uint16_t *lengthP) { |
rgrover1 | 716:11b41f651697 | 927 | return gattServer().read(connectionHandle, attributeHandle, buffer, lengthP); |
rgrover1 | 716:11b41f651697 | 928 | } |
rgrover1 | 716:11b41f651697 | 929 | |
rgrover1 | 716:11b41f651697 | 930 | /** |
rgrover1 | 716:11b41f651697 | 931 | * Update the value of a characteristic on the local GattServer. |
rgrover1 | 716:11b41f651697 | 932 | * |
rgrover1 | 716:11b41f651697 | 933 | * @param[in] attributeHandle |
rgrover1 | 716:11b41f651697 | 934 | * Handle for the value attribute of the Characteristic. |
rgrover1 | 716:11b41f651697 | 935 | * @param[in] value |
rgrover1 | 716:11b41f651697 | 936 | * A pointer to a buffer holding the new value |
rgrover1 | 716:11b41f651697 | 937 | * @param[in] size |
rgrover1 | 716:11b41f651697 | 938 | * Size of the new value (in bytes). |
rgrover1 | 716:11b41f651697 | 939 | * @param[in] localOnly |
rgrover1 | 716:11b41f651697 | 940 | * Should this update be kept on the local |
rgrover1 | 716:11b41f651697 | 941 | * GattServer regardless of the state of the |
rgrover1 | 716:11b41f651697 | 942 | * notify/indicate flag in the CCCD for this |
rgrover1 | 716:11b41f651697 | 943 | * Characteristic? If set to true, no notification |
rgrover1 | 716:11b41f651697 | 944 | * or indication is generated. |
rgrover1 | 716:11b41f651697 | 945 | * |
rgrover1 | 716:11b41f651697 | 946 | * @return BLE_ERROR_NONE if we have successfully set the value of the attribute. |
rgrover1 | 716:11b41f651697 | 947 | * |
rgrover1 | 716:11b41f651697 | 948 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 949 | * You should use the parallel API from GattServer directly. A former call |
rgrover1 | 716:11b41f651697 | 950 | * to ble.updateCharacteristicValue() should be replaced with |
rgrover1 | 716:11b41f651697 | 951 | * ble.gattServer().write(). |
rgrover1 | 716:11b41f651697 | 952 | */ |
rgrover1 | 716:11b41f651697 | 953 | ble_error_t updateCharacteristicValue(GattAttribute::Handle_t attributeHandle, |
rgrover1 | 716:11b41f651697 | 954 | const uint8_t *value, |
rgrover1 | 716:11b41f651697 | 955 | uint16_t size, |
rgrover1 | 716:11b41f651697 | 956 | bool localOnly = false) { |
rgrover1 | 716:11b41f651697 | 957 | return gattServer().write(attributeHandle, value, size, localOnly); |
rgrover1 | 716:11b41f651697 | 958 | } |
rgrover1 | 716:11b41f651697 | 959 | |
rgrover1 | 716:11b41f651697 | 960 | /** |
rgrover1 | 716:11b41f651697 | 961 | * Update the value of a characteristic on the local GattServer. A version |
rgrover1 | 716:11b41f651697 | 962 | * of the same as above with connection handle parameter to allow updates |
rgrover1 | 716:11b41f651697 | 963 | * for connection-specific multivalued attribtues (such as the CCCDs). |
rgrover1 | 716:11b41f651697 | 964 | * |
rgrover1 | 716:11b41f651697 | 965 | * @param[in] connectionHandle |
rgrover1 | 716:11b41f651697 | 966 | * Connection Handle. |
rgrover1 | 716:11b41f651697 | 967 | * @param[in] attributeHandle |
rgrover1 | 716:11b41f651697 | 968 | * Handle for the value attribute of the Characteristic. |
rgrover1 | 716:11b41f651697 | 969 | * @param[in] value |
rgrover1 | 716:11b41f651697 | 970 | * A pointer to a buffer holding the new value |
rgrover1 | 716:11b41f651697 | 971 | * @param[in] size |
rgrover1 | 716:11b41f651697 | 972 | * Size of the new value (in bytes). |
rgrover1 | 716:11b41f651697 | 973 | * @param[in] localOnly |
rgrover1 | 716:11b41f651697 | 974 | * Should this update be kept on the local |
rgrover1 | 716:11b41f651697 | 975 | * GattServer regardless of the state of the |
rgrover1 | 716:11b41f651697 | 976 | * notify/indicate flag in the CCCD for this |
rgrover1 | 716:11b41f651697 | 977 | * Characteristic? If set to true, no notification |
rgrover1 | 716:11b41f651697 | 978 | * or indication is generated. |
rgrover1 | 716:11b41f651697 | 979 | * |
rgrover1 | 716:11b41f651697 | 980 | * @return BLE_ERROR_NONE if we have successfully set the value of the attribute. |
rgrover1 | 716:11b41f651697 | 981 | * |
rgrover1 | 716:11b41f651697 | 982 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 983 | * You should use the parallel API from GattServer directly. A former call |
rgrover1 | 716:11b41f651697 | 984 | * to ble.updateCharacteristicValue() should be replaced with |
rgrover1 | 716:11b41f651697 | 985 | * ble.gattServer().write(). |
rgrover1 | 716:11b41f651697 | 986 | */ |
rgrover1 | 716:11b41f651697 | 987 | ble_error_t updateCharacteristicValue(Gap::Handle_t connectionHandle, |
rgrover1 | 716:11b41f651697 | 988 | GattAttribute::Handle_t attributeHandle, |
rgrover1 | 716:11b41f651697 | 989 | const uint8_t *value, |
rgrover1 | 716:11b41f651697 | 990 | uint16_t size, |
rgrover1 | 716:11b41f651697 | 991 | bool localOnly = false) { |
rgrover1 | 716:11b41f651697 | 992 | return gattServer().write(connectionHandle, attributeHandle, value, size, localOnly); |
rgrover1 | 716:11b41f651697 | 993 | } |
rgrover1 | 716:11b41f651697 | 994 | |
rgrover1 | 716:11b41f651697 | 995 | /** |
rgrover1 | 716:11b41f651697 | 996 | * Enable the BLE stack's Security Manager. The Security Manager implements |
rgrover1 | 716:11b41f651697 | 997 | * the actual cryptographic algorithms and protocol exchanges that allow two |
rgrover1 | 716:11b41f651697 | 998 | * devices to securely exchange data and privately detect each other. |
rgrover1 | 716:11b41f651697 | 999 | * Calling this API is a prerequisite for encryption and pairing (bonding). |
rgrover1 | 716:11b41f651697 | 1000 | * |
rgrover1 | 716:11b41f651697 | 1001 | * @param[in] enableBonding Allow for bonding. |
rgrover1 | 716:11b41f651697 | 1002 | * @param[in] requireMITM Require protection for man-in-the-middle attacks. |
rgrover1 | 716:11b41f651697 | 1003 | * @param[in] iocaps To specify IO capabilities of this peripheral, |
rgrover1 | 716:11b41f651697 | 1004 | * such as availability of a display or keyboard to |
rgrover1 | 716:11b41f651697 | 1005 | * support out-of-band exchanges of security data. |
rgrover1 | 716:11b41f651697 | 1006 | * @param[in] passkey To specify a static passkey. |
rgrover1 | 716:11b41f651697 | 1007 | * |
rgrover1 | 716:11b41f651697 | 1008 | * @return BLE_ERROR_NONE on success. |
rgrover1 | 716:11b41f651697 | 1009 | * |
rgrover1 | 716:11b41f651697 | 1010 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 1011 | * You should use the parallel API from SecurityManager directly. A former |
rgrover1 | 716:11b41f651697 | 1012 | * call to ble.initializeSecurity(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 1013 | * ble.securityManager().init(...). |
rgrover1 | 716:11b41f651697 | 1014 | */ |
rgrover1 | 716:11b41f651697 | 1015 | ble_error_t initializeSecurity(bool enableBonding = true, |
rgrover1 | 716:11b41f651697 | 1016 | bool requireMITM = true, |
rgrover1 | 716:11b41f651697 | 1017 | SecurityManager::SecurityIOCapabilities_t iocaps = SecurityManager::IO_CAPS_NONE, |
rgrover1 | 716:11b41f651697 | 1018 | const SecurityManager::Passkey_t passkey = NULL) { |
rgrover1 | 716:11b41f651697 | 1019 | return securityManager().init(enableBonding, requireMITM, iocaps, passkey); |
rgrover1 | 716:11b41f651697 | 1020 | } |
rgrover1 | 716:11b41f651697 | 1021 | |
rgrover1 | 716:11b41f651697 | 1022 | /** |
rgrover1 | 716:11b41f651697 | 1023 | * Get the security status of a connection. |
rgrover1 | 716:11b41f651697 | 1024 | * |
rgrover1 | 716:11b41f651697 | 1025 | * @param[in] connectionHandle Handle to identify the connection. |
rgrover1 | 716:11b41f651697 | 1026 | * @param[out] securityStatusP security status. |
rgrover1 | 716:11b41f651697 | 1027 | * |
rgrover1 | 716:11b41f651697 | 1028 | * @return BLE_SUCCESS Or appropriate error code indicating reason for failure. |
rgrover1 | 716:11b41f651697 | 1029 | * |
rgrover1 | 716:11b41f651697 | 1030 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 1031 | * You should use the parallel API from SecurityManager directly. A former |
rgrover1 | 716:11b41f651697 | 1032 | * call to ble.getLinkSecurity(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 1033 | * ble.securityManager().getLinkSecurity(...). |
rgrover1 | 716:11b41f651697 | 1034 | */ |
rgrover1 | 716:11b41f651697 | 1035 | ble_error_t getLinkSecurity(Gap::Handle_t connectionHandle, SecurityManager::LinkSecurityStatus_t *securityStatusP) { |
rgrover1 | 716:11b41f651697 | 1036 | return securityManager().getLinkSecurity(connectionHandle, securityStatusP); |
rgrover1 | 716:11b41f651697 | 1037 | } |
rgrover1 | 716:11b41f651697 | 1038 | |
rgrover1 | 716:11b41f651697 | 1039 | /** |
rgrover1 | 716:11b41f651697 | 1040 | * Delete all peer device context and all related bonding information from |
rgrover1 | 716:11b41f651697 | 1041 | * the database within the security manager. |
rgrover1 | 716:11b41f651697 | 1042 | * |
rgrover1 | 716:11b41f651697 | 1043 | * @retval BLE_ERROR_NONE On success, else an error code indicating reason for failure. |
rgrover1 | 716:11b41f651697 | 1044 | * @retval BLE_ERROR_INVALID_STATE If the API is called without module initialization and/or |
rgrover1 | 716:11b41f651697 | 1045 | * application registration. |
rgrover1 | 716:11b41f651697 | 1046 | * |
rgrover1 | 716:11b41f651697 | 1047 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 1048 | * You should use the parallel API from SecurityManager directly. A former |
rgrover1 | 716:11b41f651697 | 1049 | * call to ble.purgeAllBondingState() should be replaced with |
rgrover1 | 716:11b41f651697 | 1050 | * ble.securityManager().purgeAllBondingState(). |
rgrover1 | 716:11b41f651697 | 1051 | */ |
rgrover1 | 716:11b41f651697 | 1052 | ble_error_t purgeAllBondingState(void) { |
rgrover1 | 716:11b41f651697 | 1053 | return securityManager().purgeAllBondingState(); |
rgrover1 | 716:11b41f651697 | 1054 | } |
rgrover1 | 716:11b41f651697 | 1055 | |
rgrover1 | 716:11b41f651697 | 1056 | /** |
rgrover1 | 716:11b41f651697 | 1057 | * Setup a callback for timeout events. Refer to Gap::TimeoutSource_t for |
rgrover1 | 716:11b41f651697 | 1058 | * possible event types. |
rgrover1 | 716:11b41f651697 | 1059 | * |
rgrover1 | 716:11b41f651697 | 1060 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 1061 | * You should use the parallel API from GattServer directly. A former call |
rgrover1 | 716:11b41f651697 | 1062 | * to ble.onTimeout(callback) should be replaced with |
rgrover1 | 716:11b41f651697 | 1063 | * ble.gap().onTimeout(callback). |
rgrover1 | 716:11b41f651697 | 1064 | */ |
rgrover1 | 716:11b41f651697 | 1065 | void onTimeout(Gap::TimeoutEventCallback_t timeoutCallback) { |
rgrover1 | 716:11b41f651697 | 1066 | gap().onTimeout(timeoutCallback); |
rgrover1 | 716:11b41f651697 | 1067 | } |
rgrover1 | 716:11b41f651697 | 1068 | |
rgrover1 | 716:11b41f651697 | 1069 | /** |
rgrover1 | 716:11b41f651697 | 1070 | * Setup a callback for connection events. Refer to Gap::ConnectionEventCallback_t. |
rgrover1 | 716:11b41f651697 | 1071 | * |
rgrover1 | 716:11b41f651697 | 1072 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 1073 | * You should use the parallel API from GattServer directly. A former call |
rgrover1 | 716:11b41f651697 | 1074 | * to ble.onConnection(callback) should be replaced with |
rgrover1 | 716:11b41f651697 | 1075 | * ble.gap().onConnection(callback). |
rgrover1 | 716:11b41f651697 | 1076 | */ |
rgrover1 | 716:11b41f651697 | 1077 | void onConnection(Gap::ConnectionEventCallback_t connectionCallback) { |
rgrover1 | 716:11b41f651697 | 1078 | gap().onConnection(connectionCallback); |
rgrover1 | 716:11b41f651697 | 1079 | } |
rgrover1 | 716:11b41f651697 | 1080 | |
rgrover1 | 716:11b41f651697 | 1081 | /** |
rgrover1 | 716:11b41f651697 | 1082 | * Used to setup a callback for GAP disconnection. |
rgrover1 | 716:11b41f651697 | 1083 | * |
rgrover1 | 716:11b41f651697 | 1084 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 1085 | * You should use the parallel API from GattServer directly. A former call |
rgrover1 | 716:11b41f651697 | 1086 | * to ble.onDisconnection(callback) should be replaced with |
rgrover1 | 716:11b41f651697 | 1087 | * ble.gap().onDisconnection(callback). |
rgrover1 | 716:11b41f651697 | 1088 | */ |
rgrover1 | 716:11b41f651697 | 1089 | void onDisconnection(Gap::DisconnectionEventCallback_t disconnectionCallback) { |
rgrover1 | 716:11b41f651697 | 1090 | gap().onDisconnection(disconnectionCallback); |
rgrover1 | 716:11b41f651697 | 1091 | } |
rgrover1 | 716:11b41f651697 | 1092 | |
rgrover1 | 716:11b41f651697 | 1093 | /** |
rgrover1 | 716:11b41f651697 | 1094 | * Append to a chain of callbacks to be invoked upon disconnection; these |
rgrover1 | 716:11b41f651697 | 1095 | * callbacks receive no context and are therefore different from the |
rgrover1 | 716:11b41f651697 | 1096 | * onDisconnection callback. |
rgrover1 | 716:11b41f651697 | 1097 | * |
rgrover1 | 716:11b41f651697 | 1098 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 1099 | * You should use the parallel API from GattServer directly. A former call |
rgrover1 | 716:11b41f651697 | 1100 | * to ble.addToDisconnectionCallchain(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 1101 | * ble.gap().addToDisconnectionCallchain(...). |
rgrover1 | 716:11b41f651697 | 1102 | */ |
rgrover1 | 716:11b41f651697 | 1103 | template<typename T> |
rgrover1 | 716:11b41f651697 | 1104 | void addToDisconnectionCallChain(T *tptr, void (T::*mptr)(void)) { |
rgrover1 | 716:11b41f651697 | 1105 | gap().addToDisconnectionCallChain(tptr, mptr); |
rgrover1 | 716:11b41f651697 | 1106 | } |
rgrover1 | 716:11b41f651697 | 1107 | |
rgrover1 | 716:11b41f651697 | 1108 | /** |
rgrover1 | 716:11b41f651697 | 1109 | * Radio Notification is a feature that enables ACTIVE and INACTIVE |
rgrover1 | 716:11b41f651697 | 1110 | * (nACTIVE) signals from the stack that notify the application when the |
rgrover1 | 716:11b41f651697 | 1111 | * radio is in use. The signal is sent using software interrupt. |
rgrover1 | 716:11b41f651697 | 1112 | * |
rgrover1 | 716:11b41f651697 | 1113 | * The ACTIVE signal is sent before the Radio Event starts. The nACTIVE |
rgrover1 | 716:11b41f651697 | 1114 | * signal is sent at the end of the Radio Event. These signals can be used |
rgrover1 | 716:11b41f651697 | 1115 | * by the application programmer to synchronize application logic with radio |
rgrover1 | 716:11b41f651697 | 1116 | * activity. For example, the ACTIVE signal can be used to shut off external |
rgrover1 | 716:11b41f651697 | 1117 | * devices to manage peak current drawn during periods when the radio is on, |
rgrover1 | 716:11b41f651697 | 1118 | * or to trigger sensor data collection for transmission in the Radio Event. |
rgrover1 | 716:11b41f651697 | 1119 | * |
rgrover1 | 716:11b41f651697 | 1120 | * @param callback |
rgrover1 | 716:11b41f651697 | 1121 | * The application handler to be invoked in response to a radio |
rgrover1 | 716:11b41f651697 | 1122 | * ACTIVE/INACTIVE event. |
rgrover1 | 716:11b41f651697 | 1123 | * |
rgrover1 | 716:11b41f651697 | 1124 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 1125 | * You should use the parallel API from GattServer directly. A former call |
rgrover1 | 716:11b41f651697 | 1126 | * to ble.onRadioNotification(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 1127 | * ble.gap().onRadioNotification(...). |
rgrover1 | 716:11b41f651697 | 1128 | */ |
rgrover1 | 716:11b41f651697 | 1129 | void onRadioNotification(Gap::RadioNotificationEventCallback_t callback) { |
rgrover1 | 716:11b41f651697 | 1130 | gap().onRadioNotification(callback); |
rgrover1 | 716:11b41f651697 | 1131 | } |
rgrover1 | 716:11b41f651697 | 1132 | |
rgrover1 | 716:11b41f651697 | 1133 | /** |
rgrover1 | 716:11b41f651697 | 1134 | * Add a callback for the GATT event DATA_SENT (which is triggered when |
rgrover1 | 716:11b41f651697 | 1135 | * updates are sent out by GATT in the form of notifications). |
rgrover1 | 716:11b41f651697 | 1136 | * |
rgrover1 | 716:11b41f651697 | 1137 | * @Note: it is possible to chain together multiple onDataSent callbacks |
rgrover1 | 716:11b41f651697 | 1138 | * (potentially from different modules of an application) to receive updates |
rgrover1 | 716:11b41f651697 | 1139 | * to characteristics. |
rgrover1 | 716:11b41f651697 | 1140 | * |
rgrover1 | 716:11b41f651697 | 1141 | * @Note: it is also possible to setup a callback into a member function of |
rgrover1 | 716:11b41f651697 | 1142 | * some object. |
rgrover1 | 716:11b41f651697 | 1143 | * |
rgrover1 | 716:11b41f651697 | 1144 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 1145 | * You should use the parallel API from GattServer directly. A former call |
rgrover1 | 716:11b41f651697 | 1146 | * to ble.onDataSent(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 1147 | * ble.gattServer().onDataSent(...). |
rgrover1 | 716:11b41f651697 | 1148 | */ |
rgrover1 | 716:11b41f651697 | 1149 | void onDataSent(void (*callback)(unsigned count)) { |
rgrover1 | 716:11b41f651697 | 1150 | gattServer().onDataSent(callback); |
rgrover1 | 716:11b41f651697 | 1151 | } |
rgrover1 | 716:11b41f651697 | 1152 | template <typename T> void onDataSent(T * objPtr, void (T::*memberPtr)(unsigned count)) { |
rgrover1 | 716:11b41f651697 | 1153 | gattServer().onDataSent(objPtr, memberPtr); |
rgrover1 | 716:11b41f651697 | 1154 | } |
rgrover1 | 716:11b41f651697 | 1155 | |
rgrover1 | 716:11b41f651697 | 1156 | /** |
rgrover1 | 716:11b41f651697 | 1157 | * Setup a callback for when an attribute has its value updated by or at the |
rgrover1 | 716:11b41f651697 | 1158 | * connected peer. For a peripheral, this callback triggered when the local |
rgrover1 | 716:11b41f651697 | 1159 | * GATT server has an attribute updated by a write command from the peer. |
rgrover1 | 716:11b41f651697 | 1160 | * For a Central, this callback is triggered when a response is received for |
rgrover1 | 716:11b41f651697 | 1161 | * a write request. |
rgrover1 | 716:11b41f651697 | 1162 | * |
rgrover1 | 716:11b41f651697 | 1163 | * @Note: it is possible to chain together multiple onDataWritten callbacks |
rgrover1 | 716:11b41f651697 | 1164 | * (potentially from different modules of an application) to receive updates |
rgrover1 | 716:11b41f651697 | 1165 | * to characteristics. Many services, such as DFU and UART add their own |
rgrover1 | 716:11b41f651697 | 1166 | * onDataWritten callbacks behind the scenes to trap interesting events. |
rgrover1 | 716:11b41f651697 | 1167 | * |
rgrover1 | 716:11b41f651697 | 1168 | * @Note: it is also possible to setup a callback into a member function of |
rgrover1 | 716:11b41f651697 | 1169 | * some object. |
rgrover1 | 716:11b41f651697 | 1170 | * |
rgrover1 | 716:11b41f651697 | 1171 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 1172 | * You should use the parallel API from GattServer directly. A former call |
rgrover1 | 716:11b41f651697 | 1173 | * to ble.onDataWritten(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 1174 | * ble.gattServer().onDataWritten(...). |
rgrover1 | 716:11b41f651697 | 1175 | */ |
rgrover1 | 716:11b41f651697 | 1176 | void onDataWritten(void (*callback)(const GattWriteCallbackParams *eventDataP)) { |
rgrover1 | 716:11b41f651697 | 1177 | gattServer().onDataWritten(callback); |
rgrover1 | 716:11b41f651697 | 1178 | } |
rgrover1 | 716:11b41f651697 | 1179 | template <typename T> void onDataWritten(T * objPtr, void (T::*memberPtr)(const GattWriteCallbackParams *context)) { |
rgrover1 | 716:11b41f651697 | 1180 | gattServer().onDataWritten(objPtr, memberPtr); |
rgrover1 | 716:11b41f651697 | 1181 | } |
rgrover1 | 716:11b41f651697 | 1182 | |
rgrover1 | 716:11b41f651697 | 1183 | /** |
rgrover1 | 716:11b41f651697 | 1184 | * Setup a callback to be invoked on the peripheral when an attribute is |
rgrover1 | 716:11b41f651697 | 1185 | * being read by a remote client. |
rgrover1 | 716:11b41f651697 | 1186 | * |
rgrover1 | 716:11b41f651697 | 1187 | * @Note: this functionality may not be available on all underlying stacks. |
rgrover1 | 716:11b41f651697 | 1188 | * You could use GattCharacteristic::setReadAuthorizationCallback() as an |
rgrover1 | 716:11b41f651697 | 1189 | * alternative. |
rgrover1 | 716:11b41f651697 | 1190 | * |
rgrover1 | 716:11b41f651697 | 1191 | * @Note: it is possible to chain together multiple onDataRead callbacks |
rgrover1 | 716:11b41f651697 | 1192 | * (potentially from different modules of an application) to receive updates |
rgrover1 | 716:11b41f651697 | 1193 | * to characteristics. Services may add their own onDataRead callbacks |
rgrover1 | 716:11b41f651697 | 1194 | * behind the scenes to trap interesting events. |
rgrover1 | 716:11b41f651697 | 1195 | * |
rgrover1 | 716:11b41f651697 | 1196 | * @Note: it is also possible to setup a callback into a member function of |
rgrover1 | 716:11b41f651697 | 1197 | * some object. |
rgrover1 | 716:11b41f651697 | 1198 | * |
rgrover1 | 716:11b41f651697 | 1199 | * @return BLE_ERROR_NOT_IMPLEMENTED if this functionality isn't available; |
rgrover1 | 716:11b41f651697 | 1200 | * else BLE_ERROR_NONE. |
rgrover1 | 716:11b41f651697 | 1201 | * |
rgrover1 | 716:11b41f651697 | 1202 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 1203 | * You should use the parallel API from GattServer directly. A former call |
rgrover1 | 716:11b41f651697 | 1204 | * to ble.onDataRead(...) should be replaced with |
rgrover1 | 716:11b41f651697 | 1205 | * ble.gattServer().onDataRead(...). |
rgrover1 | 716:11b41f651697 | 1206 | */ |
rgrover1 | 716:11b41f651697 | 1207 | ble_error_t onDataRead(void (*callback)(const GattReadCallbackParams *eventDataP)) { |
rgrover1 | 716:11b41f651697 | 1208 | return gattServer().onDataRead(callback); |
rgrover1 | 716:11b41f651697 | 1209 | } |
rgrover1 | 716:11b41f651697 | 1210 | template <typename T> ble_error_t onDataRead(T * objPtr, void (T::*memberPtr)(const GattReadCallbackParams *context)) { |
rgrover1 | 716:11b41f651697 | 1211 | return gattServer().onDataRead(objPtr, memberPtr); |
rgrover1 | 716:11b41f651697 | 1212 | } |
rgrover1 | 716:11b41f651697 | 1213 | |
rgrover1 | 716:11b41f651697 | 1214 | /** |
rgrover1 | 716:11b41f651697 | 1215 | * Setup a callback for when notifications/indications are enabled for a |
rgrover1 | 716:11b41f651697 | 1216 | * characteristic on the local GattServer. |
rgrover1 | 716:11b41f651697 | 1217 | * |
rgrover1 | 716:11b41f651697 | 1218 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 1219 | * You should use the parallel API from GattServer directly. A former call |
rgrover1 | 716:11b41f651697 | 1220 | * to ble.onUpdatesEnabled(callback) should be replaced with |
rgrover1 | 716:11b41f651697 | 1221 | * ble.gattServer().onUpdatesEnabled(callback). |
rgrover1 | 716:11b41f651697 | 1222 | */ |
rgrover1 | 716:11b41f651697 | 1223 | void onUpdatesEnabled(GattServer::EventCallback_t callback) { |
rgrover1 | 716:11b41f651697 | 1224 | gattServer().onUpdatesEnabled(callback); |
rgrover1 | 716:11b41f651697 | 1225 | } |
rgrover1 | 716:11b41f651697 | 1226 | |
rgrover1 | 716:11b41f651697 | 1227 | /** |
rgrover1 | 716:11b41f651697 | 1228 | * Setup a callback for when notifications/indications are disabled for a |
rgrover1 | 716:11b41f651697 | 1229 | * characteristic on the local GattServer. |
rgrover1 | 716:11b41f651697 | 1230 | * |
rgrover1 | 716:11b41f651697 | 1231 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 1232 | * You should use the parallel API from GattServer directly. A former call |
rgrover1 | 716:11b41f651697 | 1233 | * to ble.onUpdatesEnabled(callback) should be replaced with |
rgrover1 | 716:11b41f651697 | 1234 | * ble.gattServer().onUpdatesEnabled(callback). |
rgrover1 | 716:11b41f651697 | 1235 | */ |
rgrover1 | 716:11b41f651697 | 1236 | void onUpdatesDisabled(GattServer::EventCallback_t callback) { |
rgrover1 | 716:11b41f651697 | 1237 | gattServer().onUpdatesDisabled(callback); |
rgrover1 | 716:11b41f651697 | 1238 | } |
rgrover1 | 716:11b41f651697 | 1239 | |
rgrover1 | 716:11b41f651697 | 1240 | /** |
rgrover1 | 716:11b41f651697 | 1241 | * Setup a callback for when the GATT server receives a response for an |
rgrover1 | 716:11b41f651697 | 1242 | * indication event sent previously. |
rgrover1 | 716:11b41f651697 | 1243 | * |
rgrover1 | 716:11b41f651697 | 1244 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 1245 | * You should use the parallel API from GattServer directly. A former call |
rgrover1 | 716:11b41f651697 | 1246 | * to ble.onConfirmationReceived(callback) should be replaced with |
rgrover1 | 716:11b41f651697 | 1247 | * ble.gattServer().onConfirmationReceived(callback). |
rgrover1 | 716:11b41f651697 | 1248 | */ |
rgrover1 | 716:11b41f651697 | 1249 | void onConfirmationReceived(GattServer::EventCallback_t callback) { |
rgrover1 | 716:11b41f651697 | 1250 | gattServer().onConfirmationReceived(callback); |
rgrover1 | 716:11b41f651697 | 1251 | } |
rgrover1 | 716:11b41f651697 | 1252 | |
rgrover1 | 716:11b41f651697 | 1253 | /** |
rgrover1 | 716:11b41f651697 | 1254 | * Setup a callback for when the security setup procedure (key generation |
rgrover1 | 716:11b41f651697 | 1255 | * and exchange) for a link has started. This will be skipped for bonded |
rgrover1 | 716:11b41f651697 | 1256 | * devices. The callback is passed in parameters received from the peer's |
rgrover1 | 716:11b41f651697 | 1257 | * security request: bool allowBonding, bool requireMITM, and |
rgrover1 | 716:11b41f651697 | 1258 | * SecurityIOCapabilities_t. |
rgrover1 | 716:11b41f651697 | 1259 | * |
rgrover1 | 716:11b41f651697 | 1260 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 1261 | * You should use the parallel API from SecurityManager directly. A former |
rgrover1 | 716:11b41f651697 | 1262 | * call to ble.onSecuritySetupInitiated(callback) should be replaced with |
rgrover1 | 716:11b41f651697 | 1263 | * ble.securityManager().onSecuritySetupInitiated(callback). |
rgrover1 | 716:11b41f651697 | 1264 | */ |
rgrover1 | 716:11b41f651697 | 1265 | void onSecuritySetupInitiated(SecurityManager::SecuritySetupInitiatedCallback_t callback) { |
rgrover1 | 716:11b41f651697 | 1266 | securityManager().onSecuritySetupInitiated(callback); |
rgrover1 | 716:11b41f651697 | 1267 | } |
rgrover1 | 716:11b41f651697 | 1268 | |
rgrover1 | 716:11b41f651697 | 1269 | /** |
rgrover1 | 716:11b41f651697 | 1270 | * Setup a callback for when the security setup procedure (key generation |
rgrover1 | 716:11b41f651697 | 1271 | * and exchange) for a link has completed. This will be skipped for bonded |
rgrover1 | 716:11b41f651697 | 1272 | * devices. The callback is passed in the success/failure status of the |
rgrover1 | 716:11b41f651697 | 1273 | * security setup procedure. |
rgrover1 | 716:11b41f651697 | 1274 | * |
rgrover1 | 716:11b41f651697 | 1275 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 1276 | * You should use the parallel API from SecurityManager directly. A former |
rgrover1 | 716:11b41f651697 | 1277 | * call to ble.onSecuritySetupCompleted(callback) should be replaced with |
rgrover1 | 716:11b41f651697 | 1278 | * ble.securityManager().onSecuritySetupCompleted(callback). |
rgrover1 | 716:11b41f651697 | 1279 | */ |
rgrover1 | 716:11b41f651697 | 1280 | void onSecuritySetupCompleted(SecurityManager::SecuritySetupCompletedCallback_t callback) { |
rgrover1 | 716:11b41f651697 | 1281 | securityManager().onSecuritySetupCompleted(callback); |
rgrover1 | 716:11b41f651697 | 1282 | } |
rgrover1 | 716:11b41f651697 | 1283 | |
rgrover1 | 716:11b41f651697 | 1284 | /** |
rgrover1 | 716:11b41f651697 | 1285 | * Setup a callback for when a link with the peer is secured. For bonded |
rgrover1 | 716:11b41f651697 | 1286 | * devices, subsequent reconnections with bonded peer will result only in |
rgrover1 | 716:11b41f651697 | 1287 | * this callback when the link is secured and setup procedures will not |
rgrover1 | 716:11b41f651697 | 1288 | * occur unless the bonding information is either lost or deleted on either |
rgrover1 | 716:11b41f651697 | 1289 | * or both sides. The callback is passed in a SecurityManager::SecurityMode_t according |
rgrover1 | 716:11b41f651697 | 1290 | * to the level of security in effect for the secured link. |
rgrover1 | 716:11b41f651697 | 1291 | * |
rgrover1 | 716:11b41f651697 | 1292 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 1293 | * You should use the parallel API from SecurityManager directly. A former |
rgrover1 | 716:11b41f651697 | 1294 | * call to ble.onLinkSecured(callback) should be replaced with |
rgrover1 | 716:11b41f651697 | 1295 | * ble.securityManager().onLinkSecured(callback). |
rgrover1 | 716:11b41f651697 | 1296 | */ |
rgrover1 | 716:11b41f651697 | 1297 | void onLinkSecured(SecurityManager::LinkSecuredCallback_t callback) { |
rgrover1 | 716:11b41f651697 | 1298 | securityManager().onLinkSecured(callback); |
rgrover1 | 716:11b41f651697 | 1299 | } |
rgrover1 | 716:11b41f651697 | 1300 | |
rgrover1 | 716:11b41f651697 | 1301 | /** |
rgrover1 | 716:11b41f651697 | 1302 | * Setup a callback for successful bonding; i.e. that link-specific security |
rgrover1 | 716:11b41f651697 | 1303 | * context is stored persistently for a peer device. |
rgrover1 | 716:11b41f651697 | 1304 | * |
rgrover1 | 716:11b41f651697 | 1305 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 1306 | * You should use the parallel API from SecurityManager directly. A former |
rgrover1 | 716:11b41f651697 | 1307 | * call to ble.onSecurityContextStored(callback) should be replaced with |
rgrover1 | 716:11b41f651697 | 1308 | * ble.securityManager().onSecurityContextStored(callback). |
rgrover1 | 716:11b41f651697 | 1309 | */ |
rgrover1 | 716:11b41f651697 | 1310 | void onSecurityContextStored(SecurityManager::HandleSpecificEvent_t callback) { |
rgrover1 | 716:11b41f651697 | 1311 | securityManager().onSecurityContextStored(callback); |
rgrover1 | 716:11b41f651697 | 1312 | } |
rgrover1 | 716:11b41f651697 | 1313 | |
rgrover1 | 716:11b41f651697 | 1314 | /** |
rgrover1 | 716:11b41f651697 | 1315 | * Setup a callback for when the passkey needs to be displayed on a |
rgrover1 | 716:11b41f651697 | 1316 | * peripheral with DISPLAY capability. This happens when security is |
rgrover1 | 716:11b41f651697 | 1317 | * configured to prevent Man-In-The-Middle attacks, and a PIN (or passkey) |
rgrover1 | 716:11b41f651697 | 1318 | * needs to be exchanged between the peers to authenticate the connection |
rgrover1 | 716:11b41f651697 | 1319 | * attempt. |
rgrover1 | 716:11b41f651697 | 1320 | * |
rgrover1 | 716:11b41f651697 | 1321 | * @note: This API is now *deprecated* and will be dropped in the future. |
rgrover1 | 716:11b41f651697 | 1322 | * You should use the parallel API from SecurityManager directly. A former |
rgrover1 | 716:11b41f651697 | 1323 | * call to ble.onPasskeyDisplay(callback) should be replaced with |
rgrover1 | 716:11b41f651697 | 1324 | * ble.securityManager().onPasskeyDisplay(callback). |
rgrover1 | 716:11b41f651697 | 1325 | */ |
rgrover1 | 716:11b41f651697 | 1326 | void onPasskeyDisplay(SecurityManager::PasskeyDisplayCallback_t callback) { |
rgrover1 | 716:11b41f651697 | 1327 | return securityManager().onPasskeyDisplay(callback); |
rgrover1 | 716:11b41f651697 | 1328 | } |
rgrover1 | 716:11b41f651697 | 1329 | |
rgrover1 | 716:11b41f651697 | 1330 | public: |
rgrover1 | 716:11b41f651697 | 1331 | BLE() : transport(createBLEInstance()) { |
rgrover1 | 716:11b41f651697 | 1332 | /* empty */ |
rgrover1 | 716:11b41f651697 | 1333 | } |
rgrover1 | 716:11b41f651697 | 1334 | |
rgrover1 | 716:11b41f651697 | 1335 | private: |
rgrover1 | 716:11b41f651697 | 1336 | BLEInstanceBase *const transport; /* the device specific backend */ |
rgrover1 | 716:11b41f651697 | 1337 | }; |
rgrover1 | 716:11b41f651697 | 1338 | |
rgrover1 | 716:11b41f651697 | 1339 | typedef BLE BLEDevice; /* DEPRECATED. This type alias is retained for the sake of compatibility with older |
rgrover1 | 716:11b41f651697 | 1340 | * code. Will be dropped at some point soon.*/ |
rgrover1 | 716:11b41f651697 | 1341 | |
rgrover1 | 716:11b41f651697 | 1342 | #endif // ifndef __BLE_H__ |