takashi kadono / Mbed OS Nucleo446_SSD1331

Dependencies:   ssd1331

Committer:
kadonotakashi
Date:
Wed Oct 10 00:33:53 2018 +0000
Revision:
0:8fdf9a60065b
how to make mbed librry

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kadonotakashi 0:8fdf9a60065b 1 /* mbed Microcontroller Library
kadonotakashi 0:8fdf9a60065b 2 * Copyright (c) 2018 ARM Limited
kadonotakashi 0:8fdf9a60065b 3 *
kadonotakashi 0:8fdf9a60065b 4 * Licensed under the Apache License, Version 2.0 (the "License");
kadonotakashi 0:8fdf9a60065b 5 * you may not use this file except in compliance with the License.
kadonotakashi 0:8fdf9a60065b 6 * You may obtain a copy of the License at
kadonotakashi 0:8fdf9a60065b 7 *
kadonotakashi 0:8fdf9a60065b 8 * http://www.apache.org/licenses/LICENSE-2.0
kadonotakashi 0:8fdf9a60065b 9 *
kadonotakashi 0:8fdf9a60065b 10 * Unless required by applicable law or agreed to in writing, software
kadonotakashi 0:8fdf9a60065b 11 * distributed under the License is distributed on an "AS IS" BASIS,
kadonotakashi 0:8fdf9a60065b 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
kadonotakashi 0:8fdf9a60065b 13 * See the License for the specific language governing permissions and
kadonotakashi 0:8fdf9a60065b 14 * limitations under the License.
kadonotakashi 0:8fdf9a60065b 15 */
kadonotakashi 0:8fdf9a60065b 16
kadonotakashi 0:8fdf9a60065b 17 #include "ble/Gap.h"
kadonotakashi 0:8fdf9a60065b 18
kadonotakashi 0:8fdf9a60065b 19 namespace {
kadonotakashi 0:8fdf9a60065b 20
kadonotakashi 0:8fdf9a60065b 21 ble_error_t convert_address_type(
kadonotakashi 0:8fdf9a60065b 22 Gap::PeerAddressType_t input_type,
kadonotakashi 0:8fdf9a60065b 23 const BLEProtocol::AddressBytes_t address,
kadonotakashi 0:8fdf9a60065b 24 BLEProtocol::AddressType_t& output_type
kadonotakashi 0:8fdf9a60065b 25 ) {
kadonotakashi 0:8fdf9a60065b 26 typedef Gap::RandomAddressType_t RandomAddressType_t;
kadonotakashi 0:8fdf9a60065b 27 typedef Gap::PeerAddressType_t PeerAddressType_t;
kadonotakashi 0:8fdf9a60065b 28 typedef BLEProtocol::AddressType LegacyAddressType_t;
kadonotakashi 0:8fdf9a60065b 29
kadonotakashi 0:8fdf9a60065b 30 // best effort; peerAddrTypeIn should not be used when privacy is on.
kadonotakashi 0:8fdf9a60065b 31 switch(input_type.value()) {
kadonotakashi 0:8fdf9a60065b 32 case PeerAddressType_t::PUBLIC:
kadonotakashi 0:8fdf9a60065b 33 case PeerAddressType_t::PUBLIC_IDENTITY:
kadonotakashi 0:8fdf9a60065b 34 output_type = LegacyAddressType_t::PUBLIC;
kadonotakashi 0:8fdf9a60065b 35 break;
kadonotakashi 0:8fdf9a60065b 36 case PeerAddressType_t::RANDOM: {
kadonotakashi 0:8fdf9a60065b 37 RandomAddressType_t random_address_type(RandomAddressType_t::STATIC);
kadonotakashi 0:8fdf9a60065b 38 ble_error_t err = Gap::getRandomAddressType(address, &random_address_type);
kadonotakashi 0:8fdf9a60065b 39 if (err) {
kadonotakashi 0:8fdf9a60065b 40 return err;
kadonotakashi 0:8fdf9a60065b 41 }
kadonotakashi 0:8fdf9a60065b 42 switch (random_address_type.value()) {
kadonotakashi 0:8fdf9a60065b 43 case RandomAddressType_t::STATIC:
kadonotakashi 0:8fdf9a60065b 44 output_type = LegacyAddressType_t::RANDOM_STATIC;
kadonotakashi 0:8fdf9a60065b 45 break;
kadonotakashi 0:8fdf9a60065b 46 case RandomAddressType_t::NON_RESOLVABLE_PRIVATE:
kadonotakashi 0:8fdf9a60065b 47 output_type = LegacyAddressType_t::RANDOM_PRIVATE_NON_RESOLVABLE;
kadonotakashi 0:8fdf9a60065b 48 break;
kadonotakashi 0:8fdf9a60065b 49 case RandomAddressType_t::RESOLVABLE_PRIVATE:
kadonotakashi 0:8fdf9a60065b 50 output_type = LegacyAddressType_t::RANDOM_PRIVATE_RESOLVABLE;
kadonotakashi 0:8fdf9a60065b 51 break;
kadonotakashi 0:8fdf9a60065b 52 }
kadonotakashi 0:8fdf9a60065b 53 break;
kadonotakashi 0:8fdf9a60065b 54 }
kadonotakashi 0:8fdf9a60065b 55 case PeerAddressType_t::RANDOM_STATIC_IDENTITY:
kadonotakashi 0:8fdf9a60065b 56 output_type = LegacyAddressType_t::RANDOM_STATIC;
kadonotakashi 0:8fdf9a60065b 57 break;
kadonotakashi 0:8fdf9a60065b 58 }
kadonotakashi 0:8fdf9a60065b 59
kadonotakashi 0:8fdf9a60065b 60 return BLE_ERROR_NONE;
kadonotakashi 0:8fdf9a60065b 61 }
kadonotakashi 0:8fdf9a60065b 62
kadonotakashi 0:8fdf9a60065b 63 Gap::PeerAddressType_t convert_legacy_address_type(
kadonotakashi 0:8fdf9a60065b 64 BLEProtocol::AddressType_t legacy_address
kadonotakashi 0:8fdf9a60065b 65 ) {
kadonotakashi 0:8fdf9a60065b 66 if (legacy_address == BLEProtocol::AddressType::PUBLIC) {
kadonotakashi 0:8fdf9a60065b 67 return Gap::PeerAddressType_t::PUBLIC;
kadonotakashi 0:8fdf9a60065b 68 } else {
kadonotakashi 0:8fdf9a60065b 69 return Gap::PeerAddressType_t::RANDOM;
kadonotakashi 0:8fdf9a60065b 70 }
kadonotakashi 0:8fdf9a60065b 71 }
kadonotakashi 0:8fdf9a60065b 72
kadonotakashi 0:8fdf9a60065b 73 }
kadonotakashi 0:8fdf9a60065b 74
kadonotakashi 0:8fdf9a60065b 75 const Gap::PeripheralPrivacyConfiguration_t Gap::default_peripheral_privacy_configuration = {
kadonotakashi 0:8fdf9a60065b 76 /* use_non_resolvable_random_address */ false,
kadonotakashi 0:8fdf9a60065b 77 /* resolution_strategy */ PeripheralPrivacyConfiguration_t::PERFORM_PAIRING_PROCEDURE
kadonotakashi 0:8fdf9a60065b 78 };
kadonotakashi 0:8fdf9a60065b 79
kadonotakashi 0:8fdf9a60065b 80 const Gap::CentralPrivacyConfiguration_t Gap::default_central_privacy_configuration = {
kadonotakashi 0:8fdf9a60065b 81 /* use_non_resolvable_random_address */ false,
kadonotakashi 0:8fdf9a60065b 82 /* resolution_strategy */ CentralPrivacyConfiguration_t::RESOLVE_AND_FORWARD
kadonotakashi 0:8fdf9a60065b 83 };
kadonotakashi 0:8fdf9a60065b 84
kadonotakashi 0:8fdf9a60065b 85 void Gap::processConnectionEvent(
kadonotakashi 0:8fdf9a60065b 86 Handle_t handle,
kadonotakashi 0:8fdf9a60065b 87 Role_t role,
kadonotakashi 0:8fdf9a60065b 88 PeerAddressType_t peerAddrType,
kadonotakashi 0:8fdf9a60065b 89 const BLEProtocol::AddressBytes_t peerAddr,
kadonotakashi 0:8fdf9a60065b 90 BLEProtocol::AddressType_t ownAddrType,
kadonotakashi 0:8fdf9a60065b 91 const BLEProtocol::AddressBytes_t ownAddr,
kadonotakashi 0:8fdf9a60065b 92 const ConnectionParams_t *connectionParams,
kadonotakashi 0:8fdf9a60065b 93 const uint8_t *peerResolvableAddr,
kadonotakashi 0:8fdf9a60065b 94 const uint8_t *localResolvableAddr
kadonotakashi 0:8fdf9a60065b 95 ) {
kadonotakashi 0:8fdf9a60065b 96 /* Update Gap state */
kadonotakashi 0:8fdf9a60065b 97 state.advertising = 0;
kadonotakashi 0:8fdf9a60065b 98 state.connected = 1;
kadonotakashi 0:8fdf9a60065b 99 ++connectionCount;
kadonotakashi 0:8fdf9a60065b 100
kadonotakashi 0:8fdf9a60065b 101 ConnectionCallbackParams_t callbackParams(
kadonotakashi 0:8fdf9a60065b 102 handle,
kadonotakashi 0:8fdf9a60065b 103 role,
kadonotakashi 0:8fdf9a60065b 104 peerAddrType,
kadonotakashi 0:8fdf9a60065b 105 peerAddr,
kadonotakashi 0:8fdf9a60065b 106 ownAddrType,
kadonotakashi 0:8fdf9a60065b 107 ownAddr,
kadonotakashi 0:8fdf9a60065b 108 connectionParams,
kadonotakashi 0:8fdf9a60065b 109 peerResolvableAddr,
kadonotakashi 0:8fdf9a60065b 110 localResolvableAddr
kadonotakashi 0:8fdf9a60065b 111 );
kadonotakashi 0:8fdf9a60065b 112
kadonotakashi 0:8fdf9a60065b 113 connectionCallChain.call(&callbackParams);
kadonotakashi 0:8fdf9a60065b 114 }
kadonotakashi 0:8fdf9a60065b 115
kadonotakashi 0:8fdf9a60065b 116 void Gap::processAdvertisementReport(
kadonotakashi 0:8fdf9a60065b 117 const BLEProtocol::AddressBytes_t peerAddr,
kadonotakashi 0:8fdf9a60065b 118 int8_t rssi,
kadonotakashi 0:8fdf9a60065b 119 bool isScanResponse,
kadonotakashi 0:8fdf9a60065b 120 GapAdvertisingParams::AdvertisingType_t type,
kadonotakashi 0:8fdf9a60065b 121 uint8_t advertisingDataLen,
kadonotakashi 0:8fdf9a60065b 122 const uint8_t *advertisingData,
kadonotakashi 0:8fdf9a60065b 123 PeerAddressType_t addressType
kadonotakashi 0:8fdf9a60065b 124 ) {
kadonotakashi 0:8fdf9a60065b 125 AdvertisementCallbackParams_t params;
kadonotakashi 0:8fdf9a60065b 126
kadonotakashi 0:8fdf9a60065b 127 memcpy(params.peerAddr, peerAddr, ADDR_LEN);
kadonotakashi 0:8fdf9a60065b 128 params.rssi = rssi;
kadonotakashi 0:8fdf9a60065b 129 params.isScanResponse = isScanResponse;
kadonotakashi 0:8fdf9a60065b 130 params.type = type;
kadonotakashi 0:8fdf9a60065b 131 params.advertisingDataLen = advertisingDataLen;
kadonotakashi 0:8fdf9a60065b 132 params.advertisingData = advertisingData;
kadonotakashi 0:8fdf9a60065b 133 params.peerAddrType = addressType;
kadonotakashi 0:8fdf9a60065b 134
kadonotakashi 0:8fdf9a60065b 135 convert_address_type(
kadonotakashi 0:8fdf9a60065b 136 addressType,
kadonotakashi 0:8fdf9a60065b 137 peerAddr,
kadonotakashi 0:8fdf9a60065b 138 params.addressType
kadonotakashi 0:8fdf9a60065b 139 );
kadonotakashi 0:8fdf9a60065b 140
kadonotakashi 0:8fdf9a60065b 141 onAdvertisementReport.call(&params);
kadonotakashi 0:8fdf9a60065b 142 }
kadonotakashi 0:8fdf9a60065b 143
kadonotakashi 0:8fdf9a60065b 144
kadonotakashi 0:8fdf9a60065b 145 #if defined(__GNUC__) && !defined(__CC_ARM)
kadonotakashi 0:8fdf9a60065b 146 #pragma GCC diagnostic push
kadonotakashi 0:8fdf9a60065b 147 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
kadonotakashi 0:8fdf9a60065b 148 #elif defined(__CC_ARM)
kadonotakashi 0:8fdf9a60065b 149 #pragma push
kadonotakashi 0:8fdf9a60065b 150 #pragma diag_suppress 1361
kadonotakashi 0:8fdf9a60065b 151 #endif
kadonotakashi 0:8fdf9a60065b 152
kadonotakashi 0:8fdf9a60065b 153 Gap::AdvertisementCallbackParams_t::AdvertisementCallbackParams_t() :
kadonotakashi 0:8fdf9a60065b 154 peerAddr(),
kadonotakashi 0:8fdf9a60065b 155 rssi(),
kadonotakashi 0:8fdf9a60065b 156 isScanResponse(),
kadonotakashi 0:8fdf9a60065b 157 type(),
kadonotakashi 0:8fdf9a60065b 158 advertisingDataLen(0),
kadonotakashi 0:8fdf9a60065b 159 advertisingData(NULL),
kadonotakashi 0:8fdf9a60065b 160 addressType(),
kadonotakashi 0:8fdf9a60065b 161 peerAddrType(PeerAddressType_t::PUBLIC)
kadonotakashi 0:8fdf9a60065b 162 {
kadonotakashi 0:8fdf9a60065b 163 }
kadonotakashi 0:8fdf9a60065b 164
kadonotakashi 0:8fdf9a60065b 165 ble_error_t Gap::getRandomAddressType(
kadonotakashi 0:8fdf9a60065b 166 const BLEProtocol::AddressBytes_t address,
kadonotakashi 0:8fdf9a60065b 167 RandomAddressType_t* type
kadonotakashi 0:8fdf9a60065b 168 ) {
kadonotakashi 0:8fdf9a60065b 169 // see section Device address in Bluetooth Link Layer specification
kadonotakashi 0:8fdf9a60065b 170 // (Vol 6 - Part B)
kadonotakashi 0:8fdf9a60065b 171 switch (address[5] >> 6) {
kadonotakashi 0:8fdf9a60065b 172 case 0x03:
kadonotakashi 0:8fdf9a60065b 173 *type = RandomAddressType_t::STATIC;
kadonotakashi 0:8fdf9a60065b 174 return BLE_ERROR_NONE;
kadonotakashi 0:8fdf9a60065b 175 case 0x00:
kadonotakashi 0:8fdf9a60065b 176 *type = RandomAddressType_t::NON_RESOLVABLE_PRIVATE;
kadonotakashi 0:8fdf9a60065b 177 return BLE_ERROR_NONE;
kadonotakashi 0:8fdf9a60065b 178 case 0x01:
kadonotakashi 0:8fdf9a60065b 179 *type = RandomAddressType_t::RESOLVABLE_PRIVATE;
kadonotakashi 0:8fdf9a60065b 180 return BLE_ERROR_NONE;
kadonotakashi 0:8fdf9a60065b 181 default:
kadonotakashi 0:8fdf9a60065b 182 return BLE_ERROR_INVALID_PARAM;
kadonotakashi 0:8fdf9a60065b 183 }
kadonotakashi 0:8fdf9a60065b 184 }
kadonotakashi 0:8fdf9a60065b 185
kadonotakashi 0:8fdf9a60065b 186 Gap::ConnectionCallbackParams_t::ConnectionCallbackParams_t(
kadonotakashi 0:8fdf9a60065b 187 Handle_t handleIn,
kadonotakashi 0:8fdf9a60065b 188 Role_t roleIn,
kadonotakashi 0:8fdf9a60065b 189 BLEProtocol::AddressType_t peerAddrTypeIn,
kadonotakashi 0:8fdf9a60065b 190 const uint8_t *peerAddrIn,
kadonotakashi 0:8fdf9a60065b 191 BLEProtocol::AddressType_t ownAddrTypeIn,
kadonotakashi 0:8fdf9a60065b 192 const uint8_t *ownAddrIn,
kadonotakashi 0:8fdf9a60065b 193 const ConnectionParams_t *connectionParamsIn,
kadonotakashi 0:8fdf9a60065b 194 const uint8_t *peerResolvableAddrIn,
kadonotakashi 0:8fdf9a60065b 195 const uint8_t *localResolvableAddrIn
kadonotakashi 0:8fdf9a60065b 196 ) : handle(handleIn),
kadonotakashi 0:8fdf9a60065b 197 role(roleIn),
kadonotakashi 0:8fdf9a60065b 198 peerAddrType(peerAddrTypeIn),
kadonotakashi 0:8fdf9a60065b 199 peerAddr(),
kadonotakashi 0:8fdf9a60065b 200 ownAddrType(ownAddrTypeIn),
kadonotakashi 0:8fdf9a60065b 201 ownAddr(),
kadonotakashi 0:8fdf9a60065b 202 connectionParams(connectionParamsIn),
kadonotakashi 0:8fdf9a60065b 203 peerResolvableAddr(),
kadonotakashi 0:8fdf9a60065b 204 localResolvableAddr(),
kadonotakashi 0:8fdf9a60065b 205 peerAddressType(convert_legacy_address_type(peerAddrTypeIn))
kadonotakashi 0:8fdf9a60065b 206 {
kadonotakashi 0:8fdf9a60065b 207 constructor_helper(
kadonotakashi 0:8fdf9a60065b 208 peerAddrIn,
kadonotakashi 0:8fdf9a60065b 209 ownAddrIn,
kadonotakashi 0:8fdf9a60065b 210 peerResolvableAddrIn,
kadonotakashi 0:8fdf9a60065b 211 localResolvableAddrIn
kadonotakashi 0:8fdf9a60065b 212 );
kadonotakashi 0:8fdf9a60065b 213 }
kadonotakashi 0:8fdf9a60065b 214
kadonotakashi 0:8fdf9a60065b 215 Gap::ConnectionCallbackParams_t::ConnectionCallbackParams_t(
kadonotakashi 0:8fdf9a60065b 216 Handle_t handleIn,
kadonotakashi 0:8fdf9a60065b 217 Role_t roleIn,
kadonotakashi 0:8fdf9a60065b 218 PeerAddressType_t peerAddrTypeIn,
kadonotakashi 0:8fdf9a60065b 219 const uint8_t *peerAddrIn,
kadonotakashi 0:8fdf9a60065b 220 BLEProtocol::AddressType_t ownAddrTypeIn,
kadonotakashi 0:8fdf9a60065b 221 const uint8_t *ownAddrIn,
kadonotakashi 0:8fdf9a60065b 222 const ConnectionParams_t *connectionParamsIn,
kadonotakashi 0:8fdf9a60065b 223 const uint8_t *peerResolvableAddrIn,
kadonotakashi 0:8fdf9a60065b 224 const uint8_t *localResolvableAddrIn
kadonotakashi 0:8fdf9a60065b 225 ) : handle(handleIn),
kadonotakashi 0:8fdf9a60065b 226 role(roleIn),
kadonotakashi 0:8fdf9a60065b 227 peerAddrType(),
kadonotakashi 0:8fdf9a60065b 228 peerAddr(),
kadonotakashi 0:8fdf9a60065b 229 ownAddrType(ownAddrTypeIn),
kadonotakashi 0:8fdf9a60065b 230 ownAddr(),
kadonotakashi 0:8fdf9a60065b 231 connectionParams(connectionParamsIn),
kadonotakashi 0:8fdf9a60065b 232 peerResolvableAddr(),
kadonotakashi 0:8fdf9a60065b 233 localResolvableAddr(),
kadonotakashi 0:8fdf9a60065b 234 peerAddressType(peerAddrTypeIn)
kadonotakashi 0:8fdf9a60065b 235 {
kadonotakashi 0:8fdf9a60065b 236 constructor_helper(
kadonotakashi 0:8fdf9a60065b 237 peerAddrIn,
kadonotakashi 0:8fdf9a60065b 238 ownAddrIn,
kadonotakashi 0:8fdf9a60065b 239 peerResolvableAddrIn,
kadonotakashi 0:8fdf9a60065b 240 localResolvableAddrIn
kadonotakashi 0:8fdf9a60065b 241 );
kadonotakashi 0:8fdf9a60065b 242
kadonotakashi 0:8fdf9a60065b 243 convert_address_type(peerAddrTypeIn, peerAddrIn, peerAddrType);
kadonotakashi 0:8fdf9a60065b 244 }
kadonotakashi 0:8fdf9a60065b 245
kadonotakashi 0:8fdf9a60065b 246 void Gap::ConnectionCallbackParams_t::constructor_helper(
kadonotakashi 0:8fdf9a60065b 247 const uint8_t *peerAddrIn,
kadonotakashi 0:8fdf9a60065b 248 const uint8_t *ownAddrIn,
kadonotakashi 0:8fdf9a60065b 249 const uint8_t *peerResolvableAddrIn,
kadonotakashi 0:8fdf9a60065b 250 const uint8_t *localResolvableAddrIn
kadonotakashi 0:8fdf9a60065b 251 ) {
kadonotakashi 0:8fdf9a60065b 252 memcpy(peerAddr, peerAddrIn, ADDR_LEN);
kadonotakashi 0:8fdf9a60065b 253
kadonotakashi 0:8fdf9a60065b 254 if (ownAddrIn) {
kadonotakashi 0:8fdf9a60065b 255 memcpy(ownAddr, ownAddrIn, ADDR_LEN);
kadonotakashi 0:8fdf9a60065b 256 } else {
kadonotakashi 0:8fdf9a60065b 257 memset(ownAddr, 0, ADDR_LEN);
kadonotakashi 0:8fdf9a60065b 258 }
kadonotakashi 0:8fdf9a60065b 259
kadonotakashi 0:8fdf9a60065b 260 if (peerResolvableAddrIn) {
kadonotakashi 0:8fdf9a60065b 261 memcpy(peerResolvableAddr, peerResolvableAddrIn, ADDR_LEN);
kadonotakashi 0:8fdf9a60065b 262 } else {
kadonotakashi 0:8fdf9a60065b 263 memset(ownAddr, 0, ADDR_LEN);
kadonotakashi 0:8fdf9a60065b 264 }
kadonotakashi 0:8fdf9a60065b 265
kadonotakashi 0:8fdf9a60065b 266 if (localResolvableAddrIn) {
kadonotakashi 0:8fdf9a60065b 267 memcpy(localResolvableAddr, localResolvableAddrIn, ADDR_LEN);
kadonotakashi 0:8fdf9a60065b 268 } else {
kadonotakashi 0:8fdf9a60065b 269 memset(ownAddr, 0, ADDR_LEN);
kadonotakashi 0:8fdf9a60065b 270 }
kadonotakashi 0:8fdf9a60065b 271 }
kadonotakashi 0:8fdf9a60065b 272
kadonotakashi 0:8fdf9a60065b 273 ble_error_t Gap::connect(
kadonotakashi 0:8fdf9a60065b 274 const BLEProtocol::AddressBytes_t peerAddr,
kadonotakashi 0:8fdf9a60065b 275 DeprecatedAddressType_t peerAddrType,
kadonotakashi 0:8fdf9a60065b 276 const ConnectionParams_t *connectionParams,
kadonotakashi 0:8fdf9a60065b 277 const GapScanningParams *scanParams
kadonotakashi 0:8fdf9a60065b 278 ) {
kadonotakashi 0:8fdf9a60065b 279 return connect(
kadonotakashi 0:8fdf9a60065b 280 peerAddr,
kadonotakashi 0:8fdf9a60065b 281 (BLEProtocol::AddressType_t) peerAddrType,
kadonotakashi 0:8fdf9a60065b 282 connectionParams,
kadonotakashi 0:8fdf9a60065b 283 scanParams
kadonotakashi 0:8fdf9a60065b 284 );
kadonotakashi 0:8fdf9a60065b 285 }
kadonotakashi 0:8fdf9a60065b 286
kadonotakashi 0:8fdf9a60065b 287 void Gap::processConnectionEvent(
kadonotakashi 0:8fdf9a60065b 288 Handle_t handle,
kadonotakashi 0:8fdf9a60065b 289 Role_t role,
kadonotakashi 0:8fdf9a60065b 290 BLEProtocol::AddressType_t peerAddrType,
kadonotakashi 0:8fdf9a60065b 291 const BLEProtocol::AddressBytes_t peerAddr,
kadonotakashi 0:8fdf9a60065b 292 BLEProtocol::AddressType_t ownAddrType,
kadonotakashi 0:8fdf9a60065b 293 const BLEProtocol::AddressBytes_t ownAddr,
kadonotakashi 0:8fdf9a60065b 294 const ConnectionParams_t *connectionParams,
kadonotakashi 0:8fdf9a60065b 295 const uint8_t *peerResolvableAddr,
kadonotakashi 0:8fdf9a60065b 296 const uint8_t *localResolvableAddr
kadonotakashi 0:8fdf9a60065b 297 ) {
kadonotakashi 0:8fdf9a60065b 298 /* Update Gap state */
kadonotakashi 0:8fdf9a60065b 299 state.advertising = 0;
kadonotakashi 0:8fdf9a60065b 300 state.connected = 1;
kadonotakashi 0:8fdf9a60065b 301 ++connectionCount;
kadonotakashi 0:8fdf9a60065b 302
kadonotakashi 0:8fdf9a60065b 303 ConnectionCallbackParams_t callbackParams(
kadonotakashi 0:8fdf9a60065b 304 handle,
kadonotakashi 0:8fdf9a60065b 305 role,
kadonotakashi 0:8fdf9a60065b 306 peerAddrType,
kadonotakashi 0:8fdf9a60065b 307 peerAddr,
kadonotakashi 0:8fdf9a60065b 308 ownAddrType,
kadonotakashi 0:8fdf9a60065b 309 ownAddr,
kadonotakashi 0:8fdf9a60065b 310 connectionParams,
kadonotakashi 0:8fdf9a60065b 311 peerResolvableAddr,
kadonotakashi 0:8fdf9a60065b 312 localResolvableAddr
kadonotakashi 0:8fdf9a60065b 313 );
kadonotakashi 0:8fdf9a60065b 314
kadonotakashi 0:8fdf9a60065b 315 connectionCallChain.call(&callbackParams);
kadonotakashi 0:8fdf9a60065b 316 }
kadonotakashi 0:8fdf9a60065b 317
kadonotakashi 0:8fdf9a60065b 318 void Gap::processAdvertisementReport(
kadonotakashi 0:8fdf9a60065b 319 const BLEProtocol::AddressBytes_t peerAddr,
kadonotakashi 0:8fdf9a60065b 320 int8_t rssi,
kadonotakashi 0:8fdf9a60065b 321 bool isScanResponse,
kadonotakashi 0:8fdf9a60065b 322 GapAdvertisingParams::AdvertisingType_t type,
kadonotakashi 0:8fdf9a60065b 323 uint8_t advertisingDataLen,
kadonotakashi 0:8fdf9a60065b 324 const uint8_t *advertisingData,
kadonotakashi 0:8fdf9a60065b 325 BLEProtocol::AddressType_t addressType
kadonotakashi 0:8fdf9a60065b 326 ) {
kadonotakashi 0:8fdf9a60065b 327 AdvertisementCallbackParams_t params;
kadonotakashi 0:8fdf9a60065b 328 memcpy(params.peerAddr, peerAddr, ADDR_LEN);
kadonotakashi 0:8fdf9a60065b 329 params.rssi = rssi;
kadonotakashi 0:8fdf9a60065b 330 params.isScanResponse = isScanResponse;
kadonotakashi 0:8fdf9a60065b 331 params.type = type;
kadonotakashi 0:8fdf9a60065b 332 params.advertisingDataLen = advertisingDataLen;
kadonotakashi 0:8fdf9a60065b 333 params.advertisingData = advertisingData;
kadonotakashi 0:8fdf9a60065b 334 params.addressType = addressType;
kadonotakashi 0:8fdf9a60065b 335
kadonotakashi 0:8fdf9a60065b 336 params.peerAddrType = convert_legacy_address_type(addressType);
kadonotakashi 0:8fdf9a60065b 337 onAdvertisementReport.call(&params);
kadonotakashi 0:8fdf9a60065b 338 }
kadonotakashi 0:8fdf9a60065b 339
kadonotakashi 0:8fdf9a60065b 340 #if defined(__GNUC__) && !defined(__CC_ARM)
kadonotakashi 0:8fdf9a60065b 341 #pragma GCC diagnostic pop
kadonotakashi 0:8fdf9a60065b 342 #elif defined(__CC_ARM)
kadonotakashi 0:8fdf9a60065b 343 #pragma pop
kadonotakashi 0:8fdf9a60065b 344 #endif