Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: TYBLE16_simple_data_logger TYBLE16_MP3_Air
features/FEATURE_BLE/ble/gap/Events.h@0:5b88d5760320, 2019-12-17 (annotated)
- Committer:
- kenjiArai
- Date:
- Tue Dec 17 23:23:45 2019 +0000
- Revision:
- 0:5b88d5760320
mbed-os5 only for TYBLE16
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kenjiArai | 0:5b88d5760320 | 1 | /* mbed Microcontroller Library |
kenjiArai | 0:5b88d5760320 | 2 | * Copyright (c) 2018-2018 ARM Limited |
kenjiArai | 0:5b88d5760320 | 3 | * |
kenjiArai | 0:5b88d5760320 | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
kenjiArai | 0:5b88d5760320 | 5 | * you may not use this file except in compliance with the License. |
kenjiArai | 0:5b88d5760320 | 6 | * You may obtain a copy of the License at |
kenjiArai | 0:5b88d5760320 | 7 | * |
kenjiArai | 0:5b88d5760320 | 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
kenjiArai | 0:5b88d5760320 | 9 | * |
kenjiArai | 0:5b88d5760320 | 10 | * Unless required by applicable law or agreed to in writing, software |
kenjiArai | 0:5b88d5760320 | 11 | * distributed under the License is distributed on an "AS IS" BASIS, |
kenjiArai | 0:5b88d5760320 | 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
kenjiArai | 0:5b88d5760320 | 13 | * See the License for the specific language governing permissions and |
kenjiArai | 0:5b88d5760320 | 14 | * limitations under the License. |
kenjiArai | 0:5b88d5760320 | 15 | */ |
kenjiArai | 0:5b88d5760320 | 16 | |
kenjiArai | 0:5b88d5760320 | 17 | #ifndef BLE_GAP_EVENTS_H |
kenjiArai | 0:5b88d5760320 | 18 | #define BLE_GAP_EVENTS_H |
kenjiArai | 0:5b88d5760320 | 19 | |
kenjiArai | 0:5b88d5760320 | 20 | #include "ble/blecommon.h" |
kenjiArai | 0:5b88d5760320 | 21 | #include "ble/BLETypes.h" |
kenjiArai | 0:5b88d5760320 | 22 | |
kenjiArai | 0:5b88d5760320 | 23 | namespace ble { |
kenjiArai | 0:5b88d5760320 | 24 | |
kenjiArai | 0:5b88d5760320 | 25 | /** |
kenjiArai | 0:5b88d5760320 | 26 | * @addtogroup ble |
kenjiArai | 0:5b88d5760320 | 27 | * @{ |
kenjiArai | 0:5b88d5760320 | 28 | * @addtogroup gap |
kenjiArai | 0:5b88d5760320 | 29 | * @{ |
kenjiArai | 0:5b88d5760320 | 30 | */ |
kenjiArai | 0:5b88d5760320 | 31 | |
kenjiArai | 0:5b88d5760320 | 32 | /** |
kenjiArai | 0:5b88d5760320 | 33 | * Event generated when an advertising packet is seen during passive scanning |
kenjiArai | 0:5b88d5760320 | 34 | * or a scan response is received during active scanning. |
kenjiArai | 0:5b88d5760320 | 35 | * |
kenjiArai | 0:5b88d5760320 | 36 | * @see ble::Gap::EventHandler::onPeriodicAdvertisingReport() |
kenjiArai | 0:5b88d5760320 | 37 | */ |
kenjiArai | 0:5b88d5760320 | 38 | struct AdvertisingReportEvent { |
kenjiArai | 0:5b88d5760320 | 39 | #if !defined(DOXYGEN_ONLY) |
kenjiArai | 0:5b88d5760320 | 40 | |
kenjiArai | 0:5b88d5760320 | 41 | /** Create an advertising report event. |
kenjiArai | 0:5b88d5760320 | 42 | * |
kenjiArai | 0:5b88d5760320 | 43 | * @param type Type of advertising used. |
kenjiArai | 0:5b88d5760320 | 44 | * @param peerAddressType Peer address type of advertiser. |
kenjiArai | 0:5b88d5760320 | 45 | * @param peerAddress Peer address of advertiser. |
kenjiArai | 0:5b88d5760320 | 46 | * @param primaryPhy PHY used on the primary channels. |
kenjiArai | 0:5b88d5760320 | 47 | * @param secondaryPhy PHY used on secondary channels. |
kenjiArai | 0:5b88d5760320 | 48 | * @param SID Set identification number. |
kenjiArai | 0:5b88d5760320 | 49 | * @param txPower Transmission power reported by the packet. |
kenjiArai | 0:5b88d5760320 | 50 | * @param rssi Measured signal strength. |
kenjiArai | 0:5b88d5760320 | 51 | * @param periodicInterval Interval of periodic advertising. |
kenjiArai | 0:5b88d5760320 | 52 | * @param directAddressType Directed advertising target address type. |
kenjiArai | 0:5b88d5760320 | 53 | * @param directAddress Directed advertising target address. |
kenjiArai | 0:5b88d5760320 | 54 | * @param advertisingData Advertising payload. |
kenjiArai | 0:5b88d5760320 | 55 | */ |
kenjiArai | 0:5b88d5760320 | 56 | AdvertisingReportEvent( |
kenjiArai | 0:5b88d5760320 | 57 | const advertising_event_t &type, |
kenjiArai | 0:5b88d5760320 | 58 | const peer_address_type_t &peerAddressType, |
kenjiArai | 0:5b88d5760320 | 59 | const address_t &peerAddress, |
kenjiArai | 0:5b88d5760320 | 60 | const phy_t &primaryPhy, |
kenjiArai | 0:5b88d5760320 | 61 | const phy_t &secondaryPhy, |
kenjiArai | 0:5b88d5760320 | 62 | advertising_sid_t SID, |
kenjiArai | 0:5b88d5760320 | 63 | advertising_power_t txPower, |
kenjiArai | 0:5b88d5760320 | 64 | rssi_t rssi, |
kenjiArai | 0:5b88d5760320 | 65 | uint16_t periodicInterval, |
kenjiArai | 0:5b88d5760320 | 66 | const peer_address_type_t &directAddressType, |
kenjiArai | 0:5b88d5760320 | 67 | const address_t &directAddress, |
kenjiArai | 0:5b88d5760320 | 68 | const mbed::Span<const uint8_t> &advertisingData |
kenjiArai | 0:5b88d5760320 | 69 | ) : |
kenjiArai | 0:5b88d5760320 | 70 | type(type), |
kenjiArai | 0:5b88d5760320 | 71 | peerAddressType(peerAddressType), |
kenjiArai | 0:5b88d5760320 | 72 | peerAddress(peerAddress), |
kenjiArai | 0:5b88d5760320 | 73 | primaryPhy(primaryPhy), |
kenjiArai | 0:5b88d5760320 | 74 | secondaryPhy(secondaryPhy), |
kenjiArai | 0:5b88d5760320 | 75 | SID(SID), |
kenjiArai | 0:5b88d5760320 | 76 | txPower(txPower), |
kenjiArai | 0:5b88d5760320 | 77 | rssi(rssi), |
kenjiArai | 0:5b88d5760320 | 78 | periodicInterval(periodicInterval), |
kenjiArai | 0:5b88d5760320 | 79 | directAddressType(directAddressType), |
kenjiArai | 0:5b88d5760320 | 80 | directAddress(directAddress), |
kenjiArai | 0:5b88d5760320 | 81 | advertisingData(advertisingData) |
kenjiArai | 0:5b88d5760320 | 82 | { |
kenjiArai | 0:5b88d5760320 | 83 | } |
kenjiArai | 0:5b88d5760320 | 84 | |
kenjiArai | 0:5b88d5760320 | 85 | #endif |
kenjiArai | 0:5b88d5760320 | 86 | |
kenjiArai | 0:5b88d5760320 | 87 | /** Get event type. */ |
kenjiArai | 0:5b88d5760320 | 88 | const advertising_event_t &getType() const |
kenjiArai | 0:5b88d5760320 | 89 | { |
kenjiArai | 0:5b88d5760320 | 90 | return type; |
kenjiArai | 0:5b88d5760320 | 91 | } |
kenjiArai | 0:5b88d5760320 | 92 | |
kenjiArai | 0:5b88d5760320 | 93 | /** Get peer address type. */ |
kenjiArai | 0:5b88d5760320 | 94 | const peer_address_type_t &getPeerAddressType() const |
kenjiArai | 0:5b88d5760320 | 95 | { |
kenjiArai | 0:5b88d5760320 | 96 | return peerAddressType; |
kenjiArai | 0:5b88d5760320 | 97 | } |
kenjiArai | 0:5b88d5760320 | 98 | |
kenjiArai | 0:5b88d5760320 | 99 | /** Get peer address. */ |
kenjiArai | 0:5b88d5760320 | 100 | const address_t &getPeerAddress() const |
kenjiArai | 0:5b88d5760320 | 101 | { |
kenjiArai | 0:5b88d5760320 | 102 | return peerAddress; |
kenjiArai | 0:5b88d5760320 | 103 | } |
kenjiArai | 0:5b88d5760320 | 104 | |
kenjiArai | 0:5b88d5760320 | 105 | /** Get primary PHY. */ |
kenjiArai | 0:5b88d5760320 | 106 | const phy_t &getPrimaryPhy() const |
kenjiArai | 0:5b88d5760320 | 107 | { |
kenjiArai | 0:5b88d5760320 | 108 | return primaryPhy; |
kenjiArai | 0:5b88d5760320 | 109 | } |
kenjiArai | 0:5b88d5760320 | 110 | |
kenjiArai | 0:5b88d5760320 | 111 | /** Get secondary PHY. */ |
kenjiArai | 0:5b88d5760320 | 112 | const phy_t &getSecondaryPhy() const |
kenjiArai | 0:5b88d5760320 | 113 | { |
kenjiArai | 0:5b88d5760320 | 114 | return secondaryPhy; |
kenjiArai | 0:5b88d5760320 | 115 | } |
kenjiArai | 0:5b88d5760320 | 116 | |
kenjiArai | 0:5b88d5760320 | 117 | /** Get advertising set identifier. */ |
kenjiArai | 0:5b88d5760320 | 118 | advertising_sid_t getSID() const |
kenjiArai | 0:5b88d5760320 | 119 | { |
kenjiArai | 0:5b88d5760320 | 120 | return SID; |
kenjiArai | 0:5b88d5760320 | 121 | } |
kenjiArai | 0:5b88d5760320 | 122 | |
kenjiArai | 0:5b88d5760320 | 123 | /** Get TX power. */ |
kenjiArai | 0:5b88d5760320 | 124 | advertising_power_t getTxPower() const |
kenjiArai | 0:5b88d5760320 | 125 | { |
kenjiArai | 0:5b88d5760320 | 126 | return txPower; |
kenjiArai | 0:5b88d5760320 | 127 | } |
kenjiArai | 0:5b88d5760320 | 128 | |
kenjiArai | 0:5b88d5760320 | 129 | /** Get received signal strength. */ |
kenjiArai | 0:5b88d5760320 | 130 | rssi_t getRssi() const |
kenjiArai | 0:5b88d5760320 | 131 | { |
kenjiArai | 0:5b88d5760320 | 132 | return rssi; |
kenjiArai | 0:5b88d5760320 | 133 | } |
kenjiArai | 0:5b88d5760320 | 134 | |
kenjiArai | 0:5b88d5760320 | 135 | /** Indicate if periodic interval is valid */ |
kenjiArai | 0:5b88d5760320 | 136 | bool isPeriodicIntervalPresent() const { |
kenjiArai | 0:5b88d5760320 | 137 | return periodicInterval != 0; |
kenjiArai | 0:5b88d5760320 | 138 | } |
kenjiArai | 0:5b88d5760320 | 139 | |
kenjiArai | 0:5b88d5760320 | 140 | /** Get interval. */ |
kenjiArai | 0:5b88d5760320 | 141 | periodic_interval_t getPeriodicInterval() const |
kenjiArai | 0:5b88d5760320 | 142 | { |
kenjiArai | 0:5b88d5760320 | 143 | return periodic_interval_t(periodicInterval); |
kenjiArai | 0:5b88d5760320 | 144 | } |
kenjiArai | 0:5b88d5760320 | 145 | |
kenjiArai | 0:5b88d5760320 | 146 | /** Get target address type in directed advertising. */ |
kenjiArai | 0:5b88d5760320 | 147 | const peer_address_type_t &getDirectAddressType() const |
kenjiArai | 0:5b88d5760320 | 148 | { |
kenjiArai | 0:5b88d5760320 | 149 | return directAddressType; |
kenjiArai | 0:5b88d5760320 | 150 | } |
kenjiArai | 0:5b88d5760320 | 151 | |
kenjiArai | 0:5b88d5760320 | 152 | /** Get target address in directed advertising. */ |
kenjiArai | 0:5b88d5760320 | 153 | const address_t &getDirectAddress() const |
kenjiArai | 0:5b88d5760320 | 154 | { |
kenjiArai | 0:5b88d5760320 | 155 | return directAddress; |
kenjiArai | 0:5b88d5760320 | 156 | } |
kenjiArai | 0:5b88d5760320 | 157 | |
kenjiArai | 0:5b88d5760320 | 158 | /** Get payload. */ |
kenjiArai | 0:5b88d5760320 | 159 | const mbed::Span<const uint8_t> &getPayload() const |
kenjiArai | 0:5b88d5760320 | 160 | { |
kenjiArai | 0:5b88d5760320 | 161 | return advertisingData; |
kenjiArai | 0:5b88d5760320 | 162 | } |
kenjiArai | 0:5b88d5760320 | 163 | |
kenjiArai | 0:5b88d5760320 | 164 | private: |
kenjiArai | 0:5b88d5760320 | 165 | advertising_event_t type; |
kenjiArai | 0:5b88d5760320 | 166 | peer_address_type_t peerAddressType; |
kenjiArai | 0:5b88d5760320 | 167 | address_t const &peerAddress; |
kenjiArai | 0:5b88d5760320 | 168 | phy_t primaryPhy; |
kenjiArai | 0:5b88d5760320 | 169 | phy_t secondaryPhy; |
kenjiArai | 0:5b88d5760320 | 170 | advertising_sid_t SID; |
kenjiArai | 0:5b88d5760320 | 171 | advertising_power_t txPower; |
kenjiArai | 0:5b88d5760320 | 172 | rssi_t rssi; |
kenjiArai | 0:5b88d5760320 | 173 | uint16_t periodicInterval; |
kenjiArai | 0:5b88d5760320 | 174 | peer_address_type_t directAddressType; |
kenjiArai | 0:5b88d5760320 | 175 | const address_t &directAddress; |
kenjiArai | 0:5b88d5760320 | 176 | mbed::Span<const uint8_t> advertisingData; |
kenjiArai | 0:5b88d5760320 | 177 | }; |
kenjiArai | 0:5b88d5760320 | 178 | |
kenjiArai | 0:5b88d5760320 | 179 | /** |
kenjiArai | 0:5b88d5760320 | 180 | * Event generated when a connection initiation ends (successfully or not). |
kenjiArai | 0:5b88d5760320 | 181 | * |
kenjiArai | 0:5b88d5760320 | 182 | * @see ble::Gap::EventHandler::onConnectionComplete(). |
kenjiArai | 0:5b88d5760320 | 183 | */ |
kenjiArai | 0:5b88d5760320 | 184 | struct ConnectionCompleteEvent { |
kenjiArai | 0:5b88d5760320 | 185 | #if !defined(DOXYGEN_ONLY) |
kenjiArai | 0:5b88d5760320 | 186 | |
kenjiArai | 0:5b88d5760320 | 187 | /** Create a connection complete event. |
kenjiArai | 0:5b88d5760320 | 188 | * |
kenjiArai | 0:5b88d5760320 | 189 | * @param success BLE_ERROR_NONE if connection succeeded. |
kenjiArai | 0:5b88d5760320 | 190 | * @param connectionHandle Connection handle if successful. |
kenjiArai | 0:5b88d5760320 | 191 | * @param ownRole Role of the local device. |
kenjiArai | 0:5b88d5760320 | 192 | * @param peerAddressType Peer address type. |
kenjiArai | 0:5b88d5760320 | 193 | * @param peerAddress Peer address. |
kenjiArai | 0:5b88d5760320 | 194 | * @param localResolvablePrivateAddress Local address type if privacy enabled. |
kenjiArai | 0:5b88d5760320 | 195 | * @param peerResolvablePrivateAddress Peer address type if privacy enabled. |
kenjiArai | 0:5b88d5760320 | 196 | * @param connectionInterval Connection interval. |
kenjiArai | 0:5b88d5760320 | 197 | * @param connectionLatency Connection latency in events. |
kenjiArai | 0:5b88d5760320 | 198 | * @param supervisionTimeout Supervision timeout. |
kenjiArai | 0:5b88d5760320 | 199 | * @param masterClockAccuracy Peer clock accuracy in parts per million. |
kenjiArai | 0:5b88d5760320 | 200 | */ |
kenjiArai | 0:5b88d5760320 | 201 | ConnectionCompleteEvent( |
kenjiArai | 0:5b88d5760320 | 202 | ble_error_t status, |
kenjiArai | 0:5b88d5760320 | 203 | connection_handle_t connectionHandle, |
kenjiArai | 0:5b88d5760320 | 204 | connection_role_t ownRole, |
kenjiArai | 0:5b88d5760320 | 205 | const peer_address_type_t &peerAddressType, |
kenjiArai | 0:5b88d5760320 | 206 | const address_t &peerAddress, |
kenjiArai | 0:5b88d5760320 | 207 | const address_t &localResolvablePrivateAddress, |
kenjiArai | 0:5b88d5760320 | 208 | const address_t &peerResolvablePrivateAddress, |
kenjiArai | 0:5b88d5760320 | 209 | conn_interval_t connectionInterval, |
kenjiArai | 0:5b88d5760320 | 210 | slave_latency_t connectionLatency, |
kenjiArai | 0:5b88d5760320 | 211 | supervision_timeout_t supervisionTimeout, |
kenjiArai | 0:5b88d5760320 | 212 | uint16_t masterClockAccuracy |
kenjiArai | 0:5b88d5760320 | 213 | ) : |
kenjiArai | 0:5b88d5760320 | 214 | status(status), |
kenjiArai | 0:5b88d5760320 | 215 | connectionHandle(connectionHandle), |
kenjiArai | 0:5b88d5760320 | 216 | ownRole(ownRole), |
kenjiArai | 0:5b88d5760320 | 217 | peerAddressType(peerAddressType), |
kenjiArai | 0:5b88d5760320 | 218 | peerAddress(peerAddress), |
kenjiArai | 0:5b88d5760320 | 219 | localResolvablePrivateAddress(localResolvablePrivateAddress), |
kenjiArai | 0:5b88d5760320 | 220 | peerResolvablePrivateAddress(peerResolvablePrivateAddress), |
kenjiArai | 0:5b88d5760320 | 221 | connectionInterval(connectionInterval), |
kenjiArai | 0:5b88d5760320 | 222 | connectionLatency(connectionLatency), |
kenjiArai | 0:5b88d5760320 | 223 | supervisionTimeout(supervisionTimeout), |
kenjiArai | 0:5b88d5760320 | 224 | masterClockAccuracy(masterClockAccuracy) |
kenjiArai | 0:5b88d5760320 | 225 | { |
kenjiArai | 0:5b88d5760320 | 226 | } |
kenjiArai | 0:5b88d5760320 | 227 | |
kenjiArai | 0:5b88d5760320 | 228 | #endif |
kenjiArai | 0:5b88d5760320 | 229 | |
kenjiArai | 0:5b88d5760320 | 230 | /** Get connection complete event status. */ |
kenjiArai | 0:5b88d5760320 | 231 | ble_error_t getStatus() const |
kenjiArai | 0:5b88d5760320 | 232 | { |
kenjiArai | 0:5b88d5760320 | 233 | return status; |
kenjiArai | 0:5b88d5760320 | 234 | } |
kenjiArai | 0:5b88d5760320 | 235 | |
kenjiArai | 0:5b88d5760320 | 236 | /** Get connection handle (valid only when successful). */ |
kenjiArai | 0:5b88d5760320 | 237 | connection_handle_t getConnectionHandle() const |
kenjiArai | 0:5b88d5760320 | 238 | { |
kenjiArai | 0:5b88d5760320 | 239 | return connectionHandle; |
kenjiArai | 0:5b88d5760320 | 240 | } |
kenjiArai | 0:5b88d5760320 | 241 | |
kenjiArai | 0:5b88d5760320 | 242 | /** Get own role. */ |
kenjiArai | 0:5b88d5760320 | 243 | connection_role_t getOwnRole() const |
kenjiArai | 0:5b88d5760320 | 244 | { |
kenjiArai | 0:5b88d5760320 | 245 | return ownRole; |
kenjiArai | 0:5b88d5760320 | 246 | } |
kenjiArai | 0:5b88d5760320 | 247 | |
kenjiArai | 0:5b88d5760320 | 248 | /** Get peer address type. */ |
kenjiArai | 0:5b88d5760320 | 249 | const peer_address_type_t &getPeerAddressType() const |
kenjiArai | 0:5b88d5760320 | 250 | { |
kenjiArai | 0:5b88d5760320 | 251 | return peerAddressType; |
kenjiArai | 0:5b88d5760320 | 252 | } |
kenjiArai | 0:5b88d5760320 | 253 | |
kenjiArai | 0:5b88d5760320 | 254 | /** Get peer address. */ |
kenjiArai | 0:5b88d5760320 | 255 | const address_t &getPeerAddress() const |
kenjiArai | 0:5b88d5760320 | 256 | { |
kenjiArai | 0:5b88d5760320 | 257 | return peerAddress; |
kenjiArai | 0:5b88d5760320 | 258 | } |
kenjiArai | 0:5b88d5760320 | 259 | |
kenjiArai | 0:5b88d5760320 | 260 | /** Get get local resolvable random address if privacy is used. */ |
kenjiArai | 0:5b88d5760320 | 261 | const address_t &getLocalResolvablePrivateAddress() const |
kenjiArai | 0:5b88d5760320 | 262 | { |
kenjiArai | 0:5b88d5760320 | 263 | return localResolvablePrivateAddress; |
kenjiArai | 0:5b88d5760320 | 264 | } |
kenjiArai | 0:5b88d5760320 | 265 | |
kenjiArai | 0:5b88d5760320 | 266 | /** Get peer resolvable private address if privacy is used. */ |
kenjiArai | 0:5b88d5760320 | 267 | const address_t &getPeerResolvablePrivateAddress() const |
kenjiArai | 0:5b88d5760320 | 268 | { |
kenjiArai | 0:5b88d5760320 | 269 | return peerResolvablePrivateAddress; |
kenjiArai | 0:5b88d5760320 | 270 | } |
kenjiArai | 0:5b88d5760320 | 271 | |
kenjiArai | 0:5b88d5760320 | 272 | /** Get connection interval. */ |
kenjiArai | 0:5b88d5760320 | 273 | conn_interval_t getConnectionInterval() const |
kenjiArai | 0:5b88d5760320 | 274 | { |
kenjiArai | 0:5b88d5760320 | 275 | return connectionInterval; |
kenjiArai | 0:5b88d5760320 | 276 | } |
kenjiArai | 0:5b88d5760320 | 277 | |
kenjiArai | 0:5b88d5760320 | 278 | /** Get connection latency. */ |
kenjiArai | 0:5b88d5760320 | 279 | slave_latency_t getConnectionLatency() const |
kenjiArai | 0:5b88d5760320 | 280 | { |
kenjiArai | 0:5b88d5760320 | 281 | return connectionLatency; |
kenjiArai | 0:5b88d5760320 | 282 | } |
kenjiArai | 0:5b88d5760320 | 283 | |
kenjiArai | 0:5b88d5760320 | 284 | /** Get supervision timeout. */ |
kenjiArai | 0:5b88d5760320 | 285 | supervision_timeout_t getSupervisionTimeout() const |
kenjiArai | 0:5b88d5760320 | 286 | { |
kenjiArai | 0:5b88d5760320 | 287 | return supervisionTimeout; |
kenjiArai | 0:5b88d5760320 | 288 | } |
kenjiArai | 0:5b88d5760320 | 289 | |
kenjiArai | 0:5b88d5760320 | 290 | /** Get clock accuracy in parts per million. */ |
kenjiArai | 0:5b88d5760320 | 291 | uint16_t getMasterClockAccuracy() const |
kenjiArai | 0:5b88d5760320 | 292 | { |
kenjiArai | 0:5b88d5760320 | 293 | return masterClockAccuracy; |
kenjiArai | 0:5b88d5760320 | 294 | } |
kenjiArai | 0:5b88d5760320 | 295 | |
kenjiArai | 0:5b88d5760320 | 296 | private: |
kenjiArai | 0:5b88d5760320 | 297 | ble_error_t status; |
kenjiArai | 0:5b88d5760320 | 298 | connection_handle_t connectionHandle; |
kenjiArai | 0:5b88d5760320 | 299 | connection_role_t ownRole; |
kenjiArai | 0:5b88d5760320 | 300 | peer_address_type_t peerAddressType; |
kenjiArai | 0:5b88d5760320 | 301 | const address_t &peerAddress; |
kenjiArai | 0:5b88d5760320 | 302 | const address_t &localResolvablePrivateAddress; |
kenjiArai | 0:5b88d5760320 | 303 | const address_t &peerResolvablePrivateAddress; |
kenjiArai | 0:5b88d5760320 | 304 | conn_interval_t connectionInterval; |
kenjiArai | 0:5b88d5760320 | 305 | slave_latency_t connectionLatency; |
kenjiArai | 0:5b88d5760320 | 306 | supervision_timeout_t supervisionTimeout; |
kenjiArai | 0:5b88d5760320 | 307 | uint16_t masterClockAccuracy; |
kenjiArai | 0:5b88d5760320 | 308 | }; |
kenjiArai | 0:5b88d5760320 | 309 | |
kenjiArai | 0:5b88d5760320 | 310 | /** |
kenjiArai | 0:5b88d5760320 | 311 | * Event generated when you first receive a periodic advertisement. |
kenjiArai | 0:5b88d5760320 | 312 | * |
kenjiArai | 0:5b88d5760320 | 313 | * @see ble::Gap::EventHandler::onPeriodicAdvertisingSyncEstablished(). |
kenjiArai | 0:5b88d5760320 | 314 | */ |
kenjiArai | 0:5b88d5760320 | 315 | struct PeriodicAdvertisingSyncEstablishedEvent { |
kenjiArai | 0:5b88d5760320 | 316 | #if !defined(DOXYGEN_ONLY) |
kenjiArai | 0:5b88d5760320 | 317 | |
kenjiArai | 0:5b88d5760320 | 318 | /** Create advertising sync event. |
kenjiArai | 0:5b88d5760320 | 319 | * |
kenjiArai | 0:5b88d5760320 | 320 | * @param success BLE_ERROR_NONE if synchronisation was achieved. |
kenjiArai | 0:5b88d5760320 | 321 | * @param syncHandle Advertising sync handle. |
kenjiArai | 0:5b88d5760320 | 322 | * @param sid Advertising set identifier. |
kenjiArai | 0:5b88d5760320 | 323 | * @param peerAddressType Peer address type. |
kenjiArai | 0:5b88d5760320 | 324 | * @param peerAddress Peer address. |
kenjiArai | 0:5b88d5760320 | 325 | * @param peerPhy PHY used for advertisements. |
kenjiArai | 0:5b88d5760320 | 326 | * @param advertisingInterval Periodic advertising interval. |
kenjiArai | 0:5b88d5760320 | 327 | * @param masterClockAccuracy Peer clock accuracy in parts per million. |
kenjiArai | 0:5b88d5760320 | 328 | */ |
kenjiArai | 0:5b88d5760320 | 329 | PeriodicAdvertisingSyncEstablishedEvent( |
kenjiArai | 0:5b88d5760320 | 330 | ble_error_t status, |
kenjiArai | 0:5b88d5760320 | 331 | periodic_sync_handle_t syncHandle, |
kenjiArai | 0:5b88d5760320 | 332 | advertising_sid_t sid, |
kenjiArai | 0:5b88d5760320 | 333 | const peer_address_type_t &peerAddressType, |
kenjiArai | 0:5b88d5760320 | 334 | const address_t &peerAddress, |
kenjiArai | 0:5b88d5760320 | 335 | const phy_t &peerPhy, |
kenjiArai | 0:5b88d5760320 | 336 | uint16_t advertisingInterval, |
kenjiArai | 0:5b88d5760320 | 337 | const clock_accuracy_t &peerClockAccuracy |
kenjiArai | 0:5b88d5760320 | 338 | ) : |
kenjiArai | 0:5b88d5760320 | 339 | status(status), |
kenjiArai | 0:5b88d5760320 | 340 | syncHandle(syncHandle), |
kenjiArai | 0:5b88d5760320 | 341 | sid(sid), |
kenjiArai | 0:5b88d5760320 | 342 | peerAddressType(peerAddressType), |
kenjiArai | 0:5b88d5760320 | 343 | peerAddress(peerAddress), |
kenjiArai | 0:5b88d5760320 | 344 | peerPhy(peerPhy), |
kenjiArai | 0:5b88d5760320 | 345 | advertisingInterval(advertisingInterval), |
kenjiArai | 0:5b88d5760320 | 346 | peerClockAccuracy(peerClockAccuracy) |
kenjiArai | 0:5b88d5760320 | 347 | { |
kenjiArai | 0:5b88d5760320 | 348 | } |
kenjiArai | 0:5b88d5760320 | 349 | |
kenjiArai | 0:5b88d5760320 | 350 | #endif |
kenjiArai | 0:5b88d5760320 | 351 | |
kenjiArai | 0:5b88d5760320 | 352 | /** Get sync establishment status. */ |
kenjiArai | 0:5b88d5760320 | 353 | ble_error_t getStatus() const |
kenjiArai | 0:5b88d5760320 | 354 | { |
kenjiArai | 0:5b88d5760320 | 355 | return status; |
kenjiArai | 0:5b88d5760320 | 356 | } |
kenjiArai | 0:5b88d5760320 | 357 | |
kenjiArai | 0:5b88d5760320 | 358 | /** Get periodic advertising sync handle. */ |
kenjiArai | 0:5b88d5760320 | 359 | periodic_sync_handle_t getSyncHandle() const |
kenjiArai | 0:5b88d5760320 | 360 | { |
kenjiArai | 0:5b88d5760320 | 361 | return syncHandle; |
kenjiArai | 0:5b88d5760320 | 362 | } |
kenjiArai | 0:5b88d5760320 | 363 | |
kenjiArai | 0:5b88d5760320 | 364 | /** Get advertising set identifier. */ |
kenjiArai | 0:5b88d5760320 | 365 | advertising_sid_t getSid() const |
kenjiArai | 0:5b88d5760320 | 366 | { |
kenjiArai | 0:5b88d5760320 | 367 | return sid; |
kenjiArai | 0:5b88d5760320 | 368 | } |
kenjiArai | 0:5b88d5760320 | 369 | |
kenjiArai | 0:5b88d5760320 | 370 | /** Get peer address type. */ |
kenjiArai | 0:5b88d5760320 | 371 | const peer_address_type_t &getPeerAddressType() const |
kenjiArai | 0:5b88d5760320 | 372 | { |
kenjiArai | 0:5b88d5760320 | 373 | return peerAddressType; |
kenjiArai | 0:5b88d5760320 | 374 | } |
kenjiArai | 0:5b88d5760320 | 375 | |
kenjiArai | 0:5b88d5760320 | 376 | /** Get peer address. */ |
kenjiArai | 0:5b88d5760320 | 377 | const address_t &getPeerAddress() const |
kenjiArai | 0:5b88d5760320 | 378 | { |
kenjiArai | 0:5b88d5760320 | 379 | return peerAddress; |
kenjiArai | 0:5b88d5760320 | 380 | } |
kenjiArai | 0:5b88d5760320 | 381 | |
kenjiArai | 0:5b88d5760320 | 382 | /** Get PHY used. */ |
kenjiArai | 0:5b88d5760320 | 383 | const phy_t &getPeerPhy() const |
kenjiArai | 0:5b88d5760320 | 384 | { |
kenjiArai | 0:5b88d5760320 | 385 | return peerPhy; |
kenjiArai | 0:5b88d5760320 | 386 | } |
kenjiArai | 0:5b88d5760320 | 387 | |
kenjiArai | 0:5b88d5760320 | 388 | /** Get interval. */ |
kenjiArai | 0:5b88d5760320 | 389 | uint16_t getAdvertisingInterval() const |
kenjiArai | 0:5b88d5760320 | 390 | { |
kenjiArai | 0:5b88d5760320 | 391 | return advertisingInterval; |
kenjiArai | 0:5b88d5760320 | 392 | } |
kenjiArai | 0:5b88d5760320 | 393 | |
kenjiArai | 0:5b88d5760320 | 394 | /** Get clock accuracy in parts per million. */ |
kenjiArai | 0:5b88d5760320 | 395 | const clock_accuracy_t &getPeerClockAccuracy() const |
kenjiArai | 0:5b88d5760320 | 396 | { |
kenjiArai | 0:5b88d5760320 | 397 | return peerClockAccuracy; |
kenjiArai | 0:5b88d5760320 | 398 | } |
kenjiArai | 0:5b88d5760320 | 399 | |
kenjiArai | 0:5b88d5760320 | 400 | private: |
kenjiArai | 0:5b88d5760320 | 401 | ble_error_t status; |
kenjiArai | 0:5b88d5760320 | 402 | periodic_sync_handle_t syncHandle; |
kenjiArai | 0:5b88d5760320 | 403 | advertising_sid_t sid; |
kenjiArai | 0:5b88d5760320 | 404 | peer_address_type_t peerAddressType; |
kenjiArai | 0:5b88d5760320 | 405 | const address_t &peerAddress; |
kenjiArai | 0:5b88d5760320 | 406 | phy_t peerPhy; |
kenjiArai | 0:5b88d5760320 | 407 | uint16_t advertisingInterval; |
kenjiArai | 0:5b88d5760320 | 408 | clock_accuracy_t peerClockAccuracy; |
kenjiArai | 0:5b88d5760320 | 409 | }; |
kenjiArai | 0:5b88d5760320 | 410 | |
kenjiArai | 0:5b88d5760320 | 411 | /** |
kenjiArai | 0:5b88d5760320 | 412 | * Event generated when periodic advertising packet is received. |
kenjiArai | 0:5b88d5760320 | 413 | * |
kenjiArai | 0:5b88d5760320 | 414 | * @see ble::Gap::EventHandler::onPeriodicAdvertisingReport(). |
kenjiArai | 0:5b88d5760320 | 415 | */ |
kenjiArai | 0:5b88d5760320 | 416 | struct PeriodicAdvertisingReportEvent { |
kenjiArai | 0:5b88d5760320 | 417 | #if !defined(DOXYGEN_ONLY) |
kenjiArai | 0:5b88d5760320 | 418 | |
kenjiArai | 0:5b88d5760320 | 419 | /** Create periodic advertising report event. |
kenjiArai | 0:5b88d5760320 | 420 | * |
kenjiArai | 0:5b88d5760320 | 421 | * @param syncHandle Periodic advertising sync handle |
kenjiArai | 0:5b88d5760320 | 422 | * @param txPower TX power. |
kenjiArai | 0:5b88d5760320 | 423 | * @param rssi Received signal strength. |
kenjiArai | 0:5b88d5760320 | 424 | * @param dataStatus Status to indicate the completeness of the payload. |
kenjiArai | 0:5b88d5760320 | 425 | * @param payload Periodic advertisement payload. |
kenjiArai | 0:5b88d5760320 | 426 | */ |
kenjiArai | 0:5b88d5760320 | 427 | PeriodicAdvertisingReportEvent( |
kenjiArai | 0:5b88d5760320 | 428 | periodic_sync_handle_t syncHandle, |
kenjiArai | 0:5b88d5760320 | 429 | advertising_power_t txPower, |
kenjiArai | 0:5b88d5760320 | 430 | rssi_t rssi, |
kenjiArai | 0:5b88d5760320 | 431 | advertising_data_status_t dataStatus, |
kenjiArai | 0:5b88d5760320 | 432 | const mbed::Span<const uint8_t> &payload |
kenjiArai | 0:5b88d5760320 | 433 | ) : |
kenjiArai | 0:5b88d5760320 | 434 | syncHandle(syncHandle), |
kenjiArai | 0:5b88d5760320 | 435 | txPower(txPower), |
kenjiArai | 0:5b88d5760320 | 436 | rssi(rssi), |
kenjiArai | 0:5b88d5760320 | 437 | dataStatus(dataStatus), |
kenjiArai | 0:5b88d5760320 | 438 | payload(payload) |
kenjiArai | 0:5b88d5760320 | 439 | { |
kenjiArai | 0:5b88d5760320 | 440 | } |
kenjiArai | 0:5b88d5760320 | 441 | |
kenjiArai | 0:5b88d5760320 | 442 | #endif |
kenjiArai | 0:5b88d5760320 | 443 | |
kenjiArai | 0:5b88d5760320 | 444 | /** Get periodic advertising sync handle. */ |
kenjiArai | 0:5b88d5760320 | 445 | periodic_sync_handle_t getSyncHandle() const |
kenjiArai | 0:5b88d5760320 | 446 | { |
kenjiArai | 0:5b88d5760320 | 447 | return syncHandle; |
kenjiArai | 0:5b88d5760320 | 448 | } |
kenjiArai | 0:5b88d5760320 | 449 | |
kenjiArai | 0:5b88d5760320 | 450 | /** Get TX power as reported by the advertising packet. */ |
kenjiArai | 0:5b88d5760320 | 451 | advertising_power_t getTxPower() const |
kenjiArai | 0:5b88d5760320 | 452 | { |
kenjiArai | 0:5b88d5760320 | 453 | return txPower; |
kenjiArai | 0:5b88d5760320 | 454 | } |
kenjiArai | 0:5b88d5760320 | 455 | |
kenjiArai | 0:5b88d5760320 | 456 | /** Get received signal strength. */ |
kenjiArai | 0:5b88d5760320 | 457 | rssi_t getRssi() const |
kenjiArai | 0:5b88d5760320 | 458 | { |
kenjiArai | 0:5b88d5760320 | 459 | return rssi; |
kenjiArai | 0:5b88d5760320 | 460 | } |
kenjiArai | 0:5b88d5760320 | 461 | |
kenjiArai | 0:5b88d5760320 | 462 | /** Get data completeness status. */ |
kenjiArai | 0:5b88d5760320 | 463 | const advertising_data_status_t &getDataStatus() const |
kenjiArai | 0:5b88d5760320 | 464 | { |
kenjiArai | 0:5b88d5760320 | 465 | return dataStatus; |
kenjiArai | 0:5b88d5760320 | 466 | } |
kenjiArai | 0:5b88d5760320 | 467 | |
kenjiArai | 0:5b88d5760320 | 468 | /** Get payload. */ |
kenjiArai | 0:5b88d5760320 | 469 | const mbed::Span<const uint8_t> &getPayload() const |
kenjiArai | 0:5b88d5760320 | 470 | { |
kenjiArai | 0:5b88d5760320 | 471 | return payload; |
kenjiArai | 0:5b88d5760320 | 472 | } |
kenjiArai | 0:5b88d5760320 | 473 | |
kenjiArai | 0:5b88d5760320 | 474 | private: |
kenjiArai | 0:5b88d5760320 | 475 | periodic_sync_handle_t syncHandle; |
kenjiArai | 0:5b88d5760320 | 476 | advertising_power_t txPower; |
kenjiArai | 0:5b88d5760320 | 477 | rssi_t rssi; |
kenjiArai | 0:5b88d5760320 | 478 | advertising_data_status_t dataStatus; |
kenjiArai | 0:5b88d5760320 | 479 | mbed::Span<const uint8_t> payload; |
kenjiArai | 0:5b88d5760320 | 480 | }; |
kenjiArai | 0:5b88d5760320 | 481 | |
kenjiArai | 0:5b88d5760320 | 482 | /** |
kenjiArai | 0:5b88d5760320 | 483 | * Event generated when periodic advertising sync is lost. |
kenjiArai | 0:5b88d5760320 | 484 | * |
kenjiArai | 0:5b88d5760320 | 485 | * @see ble::Gap::EventHandler::onPeriodicAdvertisingSyncLoss(). |
kenjiArai | 0:5b88d5760320 | 486 | */ |
kenjiArai | 0:5b88d5760320 | 487 | struct PeriodicAdvertisingSyncLoss { |
kenjiArai | 0:5b88d5760320 | 488 | #if !defined(DOXYGEN_ONLY) |
kenjiArai | 0:5b88d5760320 | 489 | |
kenjiArai | 0:5b88d5760320 | 490 | /** Create periodic advertising sync loss event. |
kenjiArai | 0:5b88d5760320 | 491 | * |
kenjiArai | 0:5b88d5760320 | 492 | * @param syncHandle Periodic advertising sync handle. |
kenjiArai | 0:5b88d5760320 | 493 | */ |
kenjiArai | 0:5b88d5760320 | 494 | PeriodicAdvertisingSyncLoss( |
kenjiArai | 0:5b88d5760320 | 495 | periodic_sync_handle_t syncHandle |
kenjiArai | 0:5b88d5760320 | 496 | ) : |
kenjiArai | 0:5b88d5760320 | 497 | syncHandle(syncHandle) |
kenjiArai | 0:5b88d5760320 | 498 | { |
kenjiArai | 0:5b88d5760320 | 499 | } |
kenjiArai | 0:5b88d5760320 | 500 | |
kenjiArai | 0:5b88d5760320 | 501 | #endif |
kenjiArai | 0:5b88d5760320 | 502 | |
kenjiArai | 0:5b88d5760320 | 503 | /** Get periodic sync handle. */ |
kenjiArai | 0:5b88d5760320 | 504 | periodic_sync_handle_t getSyncHandle() const |
kenjiArai | 0:5b88d5760320 | 505 | { |
kenjiArai | 0:5b88d5760320 | 506 | return syncHandle; |
kenjiArai | 0:5b88d5760320 | 507 | } |
kenjiArai | 0:5b88d5760320 | 508 | |
kenjiArai | 0:5b88d5760320 | 509 | private: |
kenjiArai | 0:5b88d5760320 | 510 | periodic_sync_handle_t syncHandle; |
kenjiArai | 0:5b88d5760320 | 511 | }; |
kenjiArai | 0:5b88d5760320 | 512 | |
kenjiArai | 0:5b88d5760320 | 513 | /** |
kenjiArai | 0:5b88d5760320 | 514 | * Event generated when scan times out. |
kenjiArai | 0:5b88d5760320 | 515 | * |
kenjiArai | 0:5b88d5760320 | 516 | * @see ble::Gap::EventHandler::onScanTimeout(). |
kenjiArai | 0:5b88d5760320 | 517 | */ |
kenjiArai | 0:5b88d5760320 | 518 | struct ScanTimeoutEvent { }; |
kenjiArai | 0:5b88d5760320 | 519 | |
kenjiArai | 0:5b88d5760320 | 520 | /** |
kenjiArai | 0:5b88d5760320 | 521 | * Event produced when advertising ends. |
kenjiArai | 0:5b88d5760320 | 522 | * |
kenjiArai | 0:5b88d5760320 | 523 | * @see ble::Gap::EventHandler::onAdvertisingEnd(). |
kenjiArai | 0:5b88d5760320 | 524 | */ |
kenjiArai | 0:5b88d5760320 | 525 | struct AdvertisingEndEvent { |
kenjiArai | 0:5b88d5760320 | 526 | #if !defined(DOXYGEN_ONLY) |
kenjiArai | 0:5b88d5760320 | 527 | |
kenjiArai | 0:5b88d5760320 | 528 | /** Create advertising end event. |
kenjiArai | 0:5b88d5760320 | 529 | * |
kenjiArai | 0:5b88d5760320 | 530 | * @param advHandle Advertising set handle. |
kenjiArai | 0:5b88d5760320 | 531 | * @param connection Connection handle. |
kenjiArai | 0:5b88d5760320 | 532 | * @param completed_events Number of events created during before advertising end. |
kenjiArai | 0:5b88d5760320 | 533 | * @param connected True if connection has been established. |
kenjiArai | 0:5b88d5760320 | 534 | */ |
kenjiArai | 0:5b88d5760320 | 535 | AdvertisingEndEvent( |
kenjiArai | 0:5b88d5760320 | 536 | advertising_handle_t advHandle, |
kenjiArai | 0:5b88d5760320 | 537 | connection_handle_t connection, |
kenjiArai | 0:5b88d5760320 | 538 | uint8_t completed_events, |
kenjiArai | 0:5b88d5760320 | 539 | bool connected |
kenjiArai | 0:5b88d5760320 | 540 | ) : |
kenjiArai | 0:5b88d5760320 | 541 | advHandle(advHandle), |
kenjiArai | 0:5b88d5760320 | 542 | connection(connection), |
kenjiArai | 0:5b88d5760320 | 543 | completed_events(completed_events), |
kenjiArai | 0:5b88d5760320 | 544 | connected(connected) |
kenjiArai | 0:5b88d5760320 | 545 | { |
kenjiArai | 0:5b88d5760320 | 546 | } |
kenjiArai | 0:5b88d5760320 | 547 | |
kenjiArai | 0:5b88d5760320 | 548 | #endif |
kenjiArai | 0:5b88d5760320 | 549 | |
kenjiArai | 0:5b88d5760320 | 550 | /** Get advertising handle. */ |
kenjiArai | 0:5b88d5760320 | 551 | advertising_handle_t getAdvHandle() const |
kenjiArai | 0:5b88d5760320 | 552 | { |
kenjiArai | 0:5b88d5760320 | 553 | return advHandle; |
kenjiArai | 0:5b88d5760320 | 554 | } |
kenjiArai | 0:5b88d5760320 | 555 | |
kenjiArai | 0:5b88d5760320 | 556 | /** Get connection handle (valid only if connected successfully). */ |
kenjiArai | 0:5b88d5760320 | 557 | connection_handle_t getConnection() const |
kenjiArai | 0:5b88d5760320 | 558 | { |
kenjiArai | 0:5b88d5760320 | 559 | return connection; |
kenjiArai | 0:5b88d5760320 | 560 | } |
kenjiArai | 0:5b88d5760320 | 561 | |
kenjiArai | 0:5b88d5760320 | 562 | /** Get how many events advertising created. */ |
kenjiArai | 0:5b88d5760320 | 563 | uint8_t getCompleted_events() const |
kenjiArai | 0:5b88d5760320 | 564 | { |
kenjiArai | 0:5b88d5760320 | 565 | return completed_events; |
kenjiArai | 0:5b88d5760320 | 566 | } |
kenjiArai | 0:5b88d5760320 | 567 | |
kenjiArai | 0:5b88d5760320 | 568 | /** Has the advertising ended with a connection. */ |
kenjiArai | 0:5b88d5760320 | 569 | bool isConnected() const |
kenjiArai | 0:5b88d5760320 | 570 | { |
kenjiArai | 0:5b88d5760320 | 571 | return connected; |
kenjiArai | 0:5b88d5760320 | 572 | } |
kenjiArai | 0:5b88d5760320 | 573 | |
kenjiArai | 0:5b88d5760320 | 574 | private: |
kenjiArai | 0:5b88d5760320 | 575 | advertising_handle_t advHandle; |
kenjiArai | 0:5b88d5760320 | 576 | connection_handle_t connection; |
kenjiArai | 0:5b88d5760320 | 577 | uint8_t completed_events; |
kenjiArai | 0:5b88d5760320 | 578 | bool connected; |
kenjiArai | 0:5b88d5760320 | 579 | }; |
kenjiArai | 0:5b88d5760320 | 580 | |
kenjiArai | 0:5b88d5760320 | 581 | /** |
kenjiArai | 0:5b88d5760320 | 582 | * Event produced when a peer requests a scan response from the advertiser. |
kenjiArai | 0:5b88d5760320 | 583 | * |
kenjiArai | 0:5b88d5760320 | 584 | * @see ble::Gap::EventHandler::onScanRequestReceived(). |
kenjiArai | 0:5b88d5760320 | 585 | */ |
kenjiArai | 0:5b88d5760320 | 586 | struct ScanRequestEvent { |
kenjiArai | 0:5b88d5760320 | 587 | #if !defined(DOXYGEN_ONLY) |
kenjiArai | 0:5b88d5760320 | 588 | |
kenjiArai | 0:5b88d5760320 | 589 | /** Create scan request event. |
kenjiArai | 0:5b88d5760320 | 590 | * |
kenjiArai | 0:5b88d5760320 | 591 | * @param advHandle Advertising handle. |
kenjiArai | 0:5b88d5760320 | 592 | * @param peerAddressType Peer address type. |
kenjiArai | 0:5b88d5760320 | 593 | * @param peerAddress Peer address. |
kenjiArai | 0:5b88d5760320 | 594 | */ |
kenjiArai | 0:5b88d5760320 | 595 | ScanRequestEvent( |
kenjiArai | 0:5b88d5760320 | 596 | advertising_handle_t advHandle, |
kenjiArai | 0:5b88d5760320 | 597 | const peer_address_type_t &peerAddressType, |
kenjiArai | 0:5b88d5760320 | 598 | const address_t &peerAddress |
kenjiArai | 0:5b88d5760320 | 599 | ) : |
kenjiArai | 0:5b88d5760320 | 600 | advHandle(advHandle), |
kenjiArai | 0:5b88d5760320 | 601 | peerAddressType(peerAddressType), |
kenjiArai | 0:5b88d5760320 | 602 | peerAddress(peerAddress) |
kenjiArai | 0:5b88d5760320 | 603 | { |
kenjiArai | 0:5b88d5760320 | 604 | } |
kenjiArai | 0:5b88d5760320 | 605 | |
kenjiArai | 0:5b88d5760320 | 606 | #endif |
kenjiArai | 0:5b88d5760320 | 607 | |
kenjiArai | 0:5b88d5760320 | 608 | /** Get advertising handle. */ |
kenjiArai | 0:5b88d5760320 | 609 | advertising_handle_t getAdvHandle() const |
kenjiArai | 0:5b88d5760320 | 610 | { |
kenjiArai | 0:5b88d5760320 | 611 | return advHandle; |
kenjiArai | 0:5b88d5760320 | 612 | } |
kenjiArai | 0:5b88d5760320 | 613 | |
kenjiArai | 0:5b88d5760320 | 614 | /** Get peer address type. */ |
kenjiArai | 0:5b88d5760320 | 615 | const peer_address_type_t &getPeerAddressType() const |
kenjiArai | 0:5b88d5760320 | 616 | { |
kenjiArai | 0:5b88d5760320 | 617 | return peerAddressType; |
kenjiArai | 0:5b88d5760320 | 618 | } |
kenjiArai | 0:5b88d5760320 | 619 | |
kenjiArai | 0:5b88d5760320 | 620 | /** Get peer address. */ |
kenjiArai | 0:5b88d5760320 | 621 | const address_t &getPeerAddress() const |
kenjiArai | 0:5b88d5760320 | 622 | { |
kenjiArai | 0:5b88d5760320 | 623 | return peerAddress; |
kenjiArai | 0:5b88d5760320 | 624 | } |
kenjiArai | 0:5b88d5760320 | 625 | |
kenjiArai | 0:5b88d5760320 | 626 | private: |
kenjiArai | 0:5b88d5760320 | 627 | advertising_handle_t advHandle; |
kenjiArai | 0:5b88d5760320 | 628 | peer_address_type_t peerAddressType; |
kenjiArai | 0:5b88d5760320 | 629 | const address_t &peerAddress; |
kenjiArai | 0:5b88d5760320 | 630 | }; |
kenjiArai | 0:5b88d5760320 | 631 | |
kenjiArai | 0:5b88d5760320 | 632 | /** |
kenjiArai | 0:5b88d5760320 | 633 | * Event produced when a disconnection is complete. |
kenjiArai | 0:5b88d5760320 | 634 | * |
kenjiArai | 0:5b88d5760320 | 635 | * @see ble::Gap::EventHandler::onDisconnectionComplete(). |
kenjiArai | 0:5b88d5760320 | 636 | */ |
kenjiArai | 0:5b88d5760320 | 637 | struct DisconnectionCompleteEvent { |
kenjiArai | 0:5b88d5760320 | 638 | #if !defined(DOXYGEN_ONLY) |
kenjiArai | 0:5b88d5760320 | 639 | |
kenjiArai | 0:5b88d5760320 | 640 | DisconnectionCompleteEvent( |
kenjiArai | 0:5b88d5760320 | 641 | connection_handle_t connectionHandle, |
kenjiArai | 0:5b88d5760320 | 642 | const disconnection_reason_t &reason |
kenjiArai | 0:5b88d5760320 | 643 | ) : |
kenjiArai | 0:5b88d5760320 | 644 | connectionHandle(connectionHandle), reason(reason) |
kenjiArai | 0:5b88d5760320 | 645 | { |
kenjiArai | 0:5b88d5760320 | 646 | } |
kenjiArai | 0:5b88d5760320 | 647 | |
kenjiArai | 0:5b88d5760320 | 648 | #endif |
kenjiArai | 0:5b88d5760320 | 649 | |
kenjiArai | 0:5b88d5760320 | 650 | /** |
kenjiArai | 0:5b88d5760320 | 651 | * Get the handle of the connection that has expired. |
kenjiArai | 0:5b88d5760320 | 652 | */ |
kenjiArai | 0:5b88d5760320 | 653 | connection_handle_t getConnectionHandle() const |
kenjiArai | 0:5b88d5760320 | 654 | { |
kenjiArai | 0:5b88d5760320 | 655 | return connectionHandle; |
kenjiArai | 0:5b88d5760320 | 656 | } |
kenjiArai | 0:5b88d5760320 | 657 | |
kenjiArai | 0:5b88d5760320 | 658 | /** |
kenjiArai | 0:5b88d5760320 | 659 | * Get the reason of the disconnection. |
kenjiArai | 0:5b88d5760320 | 660 | */ |
kenjiArai | 0:5b88d5760320 | 661 | const disconnection_reason_t &getReason() const |
kenjiArai | 0:5b88d5760320 | 662 | { |
kenjiArai | 0:5b88d5760320 | 663 | return reason; |
kenjiArai | 0:5b88d5760320 | 664 | } |
kenjiArai | 0:5b88d5760320 | 665 | |
kenjiArai | 0:5b88d5760320 | 666 | private: |
kenjiArai | 0:5b88d5760320 | 667 | ble::connection_handle_t connectionHandle; |
kenjiArai | 0:5b88d5760320 | 668 | ble::disconnection_reason_t reason; |
kenjiArai | 0:5b88d5760320 | 669 | }; |
kenjiArai | 0:5b88d5760320 | 670 | |
kenjiArai | 0:5b88d5760320 | 671 | /** |
kenjiArai | 0:5b88d5760320 | 672 | * Event received when a peer wants to change the connection parameters. |
kenjiArai | 0:5b88d5760320 | 673 | * |
kenjiArai | 0:5b88d5760320 | 674 | * @see ble::Gap::EventHandler::onUpdateConnectionParametersRequest(). |
kenjiArai | 0:5b88d5760320 | 675 | */ |
kenjiArai | 0:5b88d5760320 | 676 | struct UpdateConnectionParametersRequestEvent { |
kenjiArai | 0:5b88d5760320 | 677 | #if !defined(DOXYGEN_ONLY) |
kenjiArai | 0:5b88d5760320 | 678 | |
kenjiArai | 0:5b88d5760320 | 679 | UpdateConnectionParametersRequestEvent( |
kenjiArai | 0:5b88d5760320 | 680 | connection_handle_t connectionHandle, |
kenjiArai | 0:5b88d5760320 | 681 | const conn_interval_t &minConnectionInterval, |
kenjiArai | 0:5b88d5760320 | 682 | const conn_interval_t &maxConnectionInterval, |
kenjiArai | 0:5b88d5760320 | 683 | const slave_latency_t &slaveLatency, |
kenjiArai | 0:5b88d5760320 | 684 | const supervision_timeout_t &supervision_timeout |
kenjiArai | 0:5b88d5760320 | 685 | ) : |
kenjiArai | 0:5b88d5760320 | 686 | connectionHandle(connectionHandle), |
kenjiArai | 0:5b88d5760320 | 687 | minConnectionInterval(minConnectionInterval), |
kenjiArai | 0:5b88d5760320 | 688 | maxConnectionInterval(maxConnectionInterval), |
kenjiArai | 0:5b88d5760320 | 689 | slaveLatency(slaveLatency), |
kenjiArai | 0:5b88d5760320 | 690 | supervisionTimeout(supervision_timeout) |
kenjiArai | 0:5b88d5760320 | 691 | { |
kenjiArai | 0:5b88d5760320 | 692 | } |
kenjiArai | 0:5b88d5760320 | 693 | |
kenjiArai | 0:5b88d5760320 | 694 | #endif |
kenjiArai | 0:5b88d5760320 | 695 | |
kenjiArai | 0:5b88d5760320 | 696 | /** |
kenjiArai | 0:5b88d5760320 | 697 | * Get the connection handle. |
kenjiArai | 0:5b88d5760320 | 698 | */ |
kenjiArai | 0:5b88d5760320 | 699 | connection_handle_t getConnectionHandle() const |
kenjiArai | 0:5b88d5760320 | 700 | { |
kenjiArai | 0:5b88d5760320 | 701 | return connectionHandle; |
kenjiArai | 0:5b88d5760320 | 702 | } |
kenjiArai | 0:5b88d5760320 | 703 | |
kenjiArai | 0:5b88d5760320 | 704 | /** |
kenjiArai | 0:5b88d5760320 | 705 | * Get the minimum connection interval requested. |
kenjiArai | 0:5b88d5760320 | 706 | */ |
kenjiArai | 0:5b88d5760320 | 707 | const conn_interval_t &getMinConnectionInterval() const |
kenjiArai | 0:5b88d5760320 | 708 | { |
kenjiArai | 0:5b88d5760320 | 709 | return minConnectionInterval; |
kenjiArai | 0:5b88d5760320 | 710 | } |
kenjiArai | 0:5b88d5760320 | 711 | |
kenjiArai | 0:5b88d5760320 | 712 | /** |
kenjiArai | 0:5b88d5760320 | 713 | * Get the maximum connection interval requested. |
kenjiArai | 0:5b88d5760320 | 714 | */ |
kenjiArai | 0:5b88d5760320 | 715 | const conn_interval_t &getMaxConnectionInterval() const |
kenjiArai | 0:5b88d5760320 | 716 | { |
kenjiArai | 0:5b88d5760320 | 717 | return maxConnectionInterval; |
kenjiArai | 0:5b88d5760320 | 718 | } |
kenjiArai | 0:5b88d5760320 | 719 | |
kenjiArai | 0:5b88d5760320 | 720 | /** |
kenjiArai | 0:5b88d5760320 | 721 | * Get the slave latency requested. |
kenjiArai | 0:5b88d5760320 | 722 | */ |
kenjiArai | 0:5b88d5760320 | 723 | const slave_latency_t &getSlaveLatency() const |
kenjiArai | 0:5b88d5760320 | 724 | { |
kenjiArai | 0:5b88d5760320 | 725 | return slaveLatency; |
kenjiArai | 0:5b88d5760320 | 726 | } |
kenjiArai | 0:5b88d5760320 | 727 | |
kenjiArai | 0:5b88d5760320 | 728 | /** |
kenjiArai | 0:5b88d5760320 | 729 | * Get the supervision timeout requested. |
kenjiArai | 0:5b88d5760320 | 730 | */ |
kenjiArai | 0:5b88d5760320 | 731 | const supervision_timeout_t &getSupervisionTimeout() const |
kenjiArai | 0:5b88d5760320 | 732 | { |
kenjiArai | 0:5b88d5760320 | 733 | return supervisionTimeout; |
kenjiArai | 0:5b88d5760320 | 734 | } |
kenjiArai | 0:5b88d5760320 | 735 | |
kenjiArai | 0:5b88d5760320 | 736 | private: |
kenjiArai | 0:5b88d5760320 | 737 | ble::connection_handle_t connectionHandle; |
kenjiArai | 0:5b88d5760320 | 738 | ble::conn_interval_t minConnectionInterval; |
kenjiArai | 0:5b88d5760320 | 739 | ble::conn_interval_t maxConnectionInterval; |
kenjiArai | 0:5b88d5760320 | 740 | ble::slave_latency_t slaveLatency; |
kenjiArai | 0:5b88d5760320 | 741 | ble::supervision_timeout_t supervisionTimeout; |
kenjiArai | 0:5b88d5760320 | 742 | }; |
kenjiArai | 0:5b88d5760320 | 743 | |
kenjiArai | 0:5b88d5760320 | 744 | /** |
kenjiArai | 0:5b88d5760320 | 745 | * Event received when connection parameters have been updated. |
kenjiArai | 0:5b88d5760320 | 746 | * |
kenjiArai | 0:5b88d5760320 | 747 | * @see ble::Gap::EventHandler::onConnectionParametersUpdateComplete(). |
kenjiArai | 0:5b88d5760320 | 748 | */ |
kenjiArai | 0:5b88d5760320 | 749 | struct ConnectionParametersUpdateCompleteEvent { |
kenjiArai | 0:5b88d5760320 | 750 | #if !defined(DOXYGEN_ONLY) |
kenjiArai | 0:5b88d5760320 | 751 | |
kenjiArai | 0:5b88d5760320 | 752 | ConnectionParametersUpdateCompleteEvent( |
kenjiArai | 0:5b88d5760320 | 753 | ble_error_t status, |
kenjiArai | 0:5b88d5760320 | 754 | connection_handle_t connectionHandle, |
kenjiArai | 0:5b88d5760320 | 755 | const conn_interval_t &connectionInterval, |
kenjiArai | 0:5b88d5760320 | 756 | const slave_latency_t &slaveLatency, |
kenjiArai | 0:5b88d5760320 | 757 | const supervision_timeout_t &supervisionTimeout |
kenjiArai | 0:5b88d5760320 | 758 | ) : |
kenjiArai | 0:5b88d5760320 | 759 | status(status), |
kenjiArai | 0:5b88d5760320 | 760 | connectionHandle(connectionHandle), |
kenjiArai | 0:5b88d5760320 | 761 | connectionInterval(connectionInterval), |
kenjiArai | 0:5b88d5760320 | 762 | slaveLatency(slaveLatency), |
kenjiArai | 0:5b88d5760320 | 763 | supervisionTimeout(supervisionTimeout) |
kenjiArai | 0:5b88d5760320 | 764 | { |
kenjiArai | 0:5b88d5760320 | 765 | } |
kenjiArai | 0:5b88d5760320 | 766 | |
kenjiArai | 0:5b88d5760320 | 767 | #endif |
kenjiArai | 0:5b88d5760320 | 768 | |
kenjiArai | 0:5b88d5760320 | 769 | /** |
kenjiArai | 0:5b88d5760320 | 770 | * Get the status of the operation. It is equal to BLE_ERROR_NONE in case of |
kenjiArai | 0:5b88d5760320 | 771 | * success. |
kenjiArai | 0:5b88d5760320 | 772 | */ |
kenjiArai | 0:5b88d5760320 | 773 | ble_error_t getStatus() const |
kenjiArai | 0:5b88d5760320 | 774 | { |
kenjiArai | 0:5b88d5760320 | 775 | return status; |
kenjiArai | 0:5b88d5760320 | 776 | } |
kenjiArai | 0:5b88d5760320 | 777 | |
kenjiArai | 0:5b88d5760320 | 778 | /** |
kenjiArai | 0:5b88d5760320 | 779 | * Get the handle of the connection that has been updated. |
kenjiArai | 0:5b88d5760320 | 780 | */ |
kenjiArai | 0:5b88d5760320 | 781 | connection_handle_t getConnectionHandle() const |
kenjiArai | 0:5b88d5760320 | 782 | { |
kenjiArai | 0:5b88d5760320 | 783 | return connectionHandle; |
kenjiArai | 0:5b88d5760320 | 784 | } |
kenjiArai | 0:5b88d5760320 | 785 | |
kenjiArai | 0:5b88d5760320 | 786 | /** |
kenjiArai | 0:5b88d5760320 | 787 | * Get the new connection interval. |
kenjiArai | 0:5b88d5760320 | 788 | */ |
kenjiArai | 0:5b88d5760320 | 789 | const conn_interval_t &getConnectionInterval() const |
kenjiArai | 0:5b88d5760320 | 790 | { |
kenjiArai | 0:5b88d5760320 | 791 | return connectionInterval; |
kenjiArai | 0:5b88d5760320 | 792 | } |
kenjiArai | 0:5b88d5760320 | 793 | |
kenjiArai | 0:5b88d5760320 | 794 | /** |
kenjiArai | 0:5b88d5760320 | 795 | * Get the new slave latency. |
kenjiArai | 0:5b88d5760320 | 796 | */ |
kenjiArai | 0:5b88d5760320 | 797 | const slave_latency_t &getSlaveLatency() const |
kenjiArai | 0:5b88d5760320 | 798 | { |
kenjiArai | 0:5b88d5760320 | 799 | return slaveLatency; |
kenjiArai | 0:5b88d5760320 | 800 | } |
kenjiArai | 0:5b88d5760320 | 801 | |
kenjiArai | 0:5b88d5760320 | 802 | /** |
kenjiArai | 0:5b88d5760320 | 803 | * Get the new supervision timeout. |
kenjiArai | 0:5b88d5760320 | 804 | */ |
kenjiArai | 0:5b88d5760320 | 805 | const supervision_timeout_t &getSupervisionTimeout() const |
kenjiArai | 0:5b88d5760320 | 806 | { |
kenjiArai | 0:5b88d5760320 | 807 | return supervisionTimeout; |
kenjiArai | 0:5b88d5760320 | 808 | } |
kenjiArai | 0:5b88d5760320 | 809 | |
kenjiArai | 0:5b88d5760320 | 810 | private: |
kenjiArai | 0:5b88d5760320 | 811 | ble_error_t status; |
kenjiArai | 0:5b88d5760320 | 812 | ble::connection_handle_t connectionHandle; |
kenjiArai | 0:5b88d5760320 | 813 | ble::conn_interval_t connectionInterval; |
kenjiArai | 0:5b88d5760320 | 814 | ble::slave_latency_t slaveLatency; |
kenjiArai | 0:5b88d5760320 | 815 | ble::supervision_timeout_t supervisionTimeout; |
kenjiArai | 0:5b88d5760320 | 816 | |
kenjiArai | 0:5b88d5760320 | 817 | }; |
kenjiArai | 0:5b88d5760320 | 818 | |
kenjiArai | 0:5b88d5760320 | 819 | /** |
kenjiArai | 0:5b88d5760320 | 820 | * @} |
kenjiArai | 0:5b88d5760320 | 821 | * @} |
kenjiArai | 0:5b88d5760320 | 822 | */ |
kenjiArai | 0:5b88d5760320 | 823 | |
kenjiArai | 0:5b88d5760320 | 824 | } // namespace ble |
kenjiArai | 0:5b88d5760320 | 825 | |
kenjiArai | 0:5b88d5760320 | 826 | #endif //BLE_GAP_EVENTS_H |