Kenji Arai / mbed-os_TYBLE16

Dependents:   TYBLE16_simple_data_logger TYBLE16_MP3_Air

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?

UserRevisionLine numberNew 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