mbed-os

Dependents:   cobaLCDJoyMotor_Thread odometry_omni_3roda_v3 odometry_omni_3roda_v1 odometry_omni_3roda_v2 ... more

Committer:
be_bryan
Date:
Mon Dec 11 17:54:04 2017 +0000
Revision:
0:b74591d5ab33
motor ++

Who changed what in which revision?

UserRevisionLine numberNew contents of line
be_bryan 0:b74591d5ab33 1 /* mbed Microcontroller Library
be_bryan 0:b74591d5ab33 2 * Copyright (c) 2017-2017 ARM Limited
be_bryan 0:b74591d5ab33 3 *
be_bryan 0:b74591d5ab33 4 * Licensed under the Apache License, Version 2.0 (the "License");
be_bryan 0:b74591d5ab33 5 * you may not use this file except in compliance with the License.
be_bryan 0:b74591d5ab33 6 * You may obtain a copy of the License at
be_bryan 0:b74591d5ab33 7 *
be_bryan 0:b74591d5ab33 8 * http://www.apache.org/licenses/LICENSE-2.0
be_bryan 0:b74591d5ab33 9 *
be_bryan 0:b74591d5ab33 10 * Unless required by applicable law or agreed to in writing, software
be_bryan 0:b74591d5ab33 11 * distributed under the License is distributed on an "AS IS" BASIS,
be_bryan 0:b74591d5ab33 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
be_bryan 0:b74591d5ab33 13 * See the License for the specific language governing permissions and
be_bryan 0:b74591d5ab33 14 * limitations under the License.
be_bryan 0:b74591d5ab33 15 */
be_bryan 0:b74591d5ab33 16
be_bryan 0:b74591d5ab33 17 #ifndef CORDIO_GAP_H_
be_bryan 0:b74591d5ab33 18 #define CORDIO_GAP_H_
be_bryan 0:b74591d5ab33 19
be_bryan 0:b74591d5ab33 20 #include <stdint.h>
be_bryan 0:b74591d5ab33 21 #include "ble/blecommon.h"
be_bryan 0:b74591d5ab33 22 #include "ble/GapAdvertisingParams.h"
be_bryan 0:b74591d5ab33 23 #include "ble/GapAdvertisingData.h"
be_bryan 0:b74591d5ab33 24 #include "ble/Gap.h"
be_bryan 0:b74591d5ab33 25 #include "ble/GapScanningParams.h"
be_bryan 0:b74591d5ab33 26 #include "dm_api.h"
be_bryan 0:b74591d5ab33 27 #include "att_api.h"
be_bryan 0:b74591d5ab33 28
be_bryan 0:b74591d5ab33 29 namespace ble {
be_bryan 0:b74591d5ab33 30 namespace vendor {
be_bryan 0:b74591d5ab33 31 namespace cordio {
be_bryan 0:b74591d5ab33 32
be_bryan 0:b74591d5ab33 33 /**
be_bryan 0:b74591d5ab33 34 * @see ::Gap
be_bryan 0:b74591d5ab33 35 */
be_bryan 0:b74591d5ab33 36 class Gap : public ::Gap
be_bryan 0:b74591d5ab33 37 {
be_bryan 0:b74591d5ab33 38 public:
be_bryan 0:b74591d5ab33 39 /**
be_bryan 0:b74591d5ab33 40 * Return the Gap singleton implementing ::Gap for the Cordio stac.
be_bryan 0:b74591d5ab33 41 */
be_bryan 0:b74591d5ab33 42 static Gap &getInstance();
be_bryan 0:b74591d5ab33 43
be_bryan 0:b74591d5ab33 44 /**
be_bryan 0:b74591d5ab33 45 * This function shall be called once the stack has been initialized
be_bryan 0:b74591d5ab33 46 */
be_bryan 0:b74591d5ab33 47 void initialize();
be_bryan 0:b74591d5ab33 48
be_bryan 0:b74591d5ab33 49 /**
be_bryan 0:b74591d5ab33 50 * @see ::Gap::setAddress
be_bryan 0:b74591d5ab33 51 */
be_bryan 0:b74591d5ab33 52 virtual ble_error_t setAddress(AddressType_t type, const Address_t address);
be_bryan 0:b74591d5ab33 53
be_bryan 0:b74591d5ab33 54 /**
be_bryan 0:b74591d5ab33 55 * @see ::Gap::getAddress
be_bryan 0:b74591d5ab33 56 */
be_bryan 0:b74591d5ab33 57 virtual ble_error_t getAddress(AddressType_t *typeP, Address_t address);
be_bryan 0:b74591d5ab33 58
be_bryan 0:b74591d5ab33 59 /**
be_bryan 0:b74591d5ab33 60 * @see ::Gap::setAdvertisingData
be_bryan 0:b74591d5ab33 61 */
be_bryan 0:b74591d5ab33 62 virtual ble_error_t setAdvertisingData(
be_bryan 0:b74591d5ab33 63 const GapAdvertisingData&, const GapAdvertisingData&
be_bryan 0:b74591d5ab33 64 );
be_bryan 0:b74591d5ab33 65
be_bryan 0:b74591d5ab33 66 /**
be_bryan 0:b74591d5ab33 67 * @see ::Gap::connect
be_bryan 0:b74591d5ab33 68 */
be_bryan 0:b74591d5ab33 69 virtual ble_error_t connect(
be_bryan 0:b74591d5ab33 70 const BLEProtocol::AddressBytes_t peerAddr,
be_bryan 0:b74591d5ab33 71 BLEProtocol::AddressType_t peerAddrType,
be_bryan 0:b74591d5ab33 72 const ConnectionParams_t* connectionParams,
be_bryan 0:b74591d5ab33 73 const GapScanningParams* scanParams
be_bryan 0:b74591d5ab33 74 );
be_bryan 0:b74591d5ab33 75
be_bryan 0:b74591d5ab33 76 /**
be_bryan 0:b74591d5ab33 77 * @see ::Gap::getMinAdvertisingInterval
be_bryan 0:b74591d5ab33 78 */
be_bryan 0:b74591d5ab33 79 virtual uint16_t getMinAdvertisingInterval() const;
be_bryan 0:b74591d5ab33 80
be_bryan 0:b74591d5ab33 81 /**
be_bryan 0:b74591d5ab33 82 * @see ::Gap::getMinNonConnectableAdvertisingInterval
be_bryan 0:b74591d5ab33 83 */
be_bryan 0:b74591d5ab33 84 virtual uint16_t getMinNonConnectableAdvertisingInterval() const;
be_bryan 0:b74591d5ab33 85
be_bryan 0:b74591d5ab33 86 /**
be_bryan 0:b74591d5ab33 87 * @see ::Gap::getMaxAdvertisingInterval
be_bryan 0:b74591d5ab33 88 */
be_bryan 0:b74591d5ab33 89 virtual uint16_t getMaxAdvertisingInterval() const;
be_bryan 0:b74591d5ab33 90
be_bryan 0:b74591d5ab33 91 /**
be_bryan 0:b74591d5ab33 92 * @see ::Gap::startAdvertising
be_bryan 0:b74591d5ab33 93 */
be_bryan 0:b74591d5ab33 94 virtual ble_error_t startAdvertising(const GapAdvertisingParams &);
be_bryan 0:b74591d5ab33 95
be_bryan 0:b74591d5ab33 96 /**
be_bryan 0:b74591d5ab33 97 * @see ::Gap::stopAdvertising
be_bryan 0:b74591d5ab33 98 */
be_bryan 0:b74591d5ab33 99 virtual ble_error_t stopAdvertising();
be_bryan 0:b74591d5ab33 100
be_bryan 0:b74591d5ab33 101 /**
be_bryan 0:b74591d5ab33 102 * @see ::Gap::disconnect
be_bryan 0:b74591d5ab33 103 */
be_bryan 0:b74591d5ab33 104 virtual ble_error_t disconnect(
be_bryan 0:b74591d5ab33 105 Handle_t connectionHandle,
be_bryan 0:b74591d5ab33 106 DisconnectionReason_t reason
be_bryan 0:b74591d5ab33 107 );
be_bryan 0:b74591d5ab33 108
be_bryan 0:b74591d5ab33 109 /**
be_bryan 0:b74591d5ab33 110 * @see ::Gap::disconnect
be_bryan 0:b74591d5ab33 111 */
be_bryan 0:b74591d5ab33 112 virtual ble_error_t disconnect(DisconnectionReason_t reason);
be_bryan 0:b74591d5ab33 113
be_bryan 0:b74591d5ab33 114 /**
be_bryan 0:b74591d5ab33 115 * @see ::Gap::setDeviceName
be_bryan 0:b74591d5ab33 116 */
be_bryan 0:b74591d5ab33 117 virtual ble_error_t setDeviceName(const uint8_t *deviceName);
be_bryan 0:b74591d5ab33 118
be_bryan 0:b74591d5ab33 119 /**
be_bryan 0:b74591d5ab33 120 * @see ::Gap::getDeviceName
be_bryan 0:b74591d5ab33 121 */
be_bryan 0:b74591d5ab33 122 virtual ble_error_t getDeviceName(uint8_t *deviceName, unsigned *lengthP);
be_bryan 0:b74591d5ab33 123
be_bryan 0:b74591d5ab33 124 /**
be_bryan 0:b74591d5ab33 125 * @see ::Gap::setAppearance
be_bryan 0:b74591d5ab33 126 */
be_bryan 0:b74591d5ab33 127 virtual ble_error_t setAppearance(GapAdvertisingData::Appearance appearance);
be_bryan 0:b74591d5ab33 128
be_bryan 0:b74591d5ab33 129 /**
be_bryan 0:b74591d5ab33 130 * @see ::Gap::getAppearance
be_bryan 0:b74591d5ab33 131 */
be_bryan 0:b74591d5ab33 132 virtual ble_error_t getAppearance(GapAdvertisingData::Appearance *appearanceP);
be_bryan 0:b74591d5ab33 133
be_bryan 0:b74591d5ab33 134 /**
be_bryan 0:b74591d5ab33 135 * @see ::Gap::setTxPower
be_bryan 0:b74591d5ab33 136 */
be_bryan 0:b74591d5ab33 137 virtual ble_error_t setTxPower(int8_t txPower);
be_bryan 0:b74591d5ab33 138
be_bryan 0:b74591d5ab33 139 /**
be_bryan 0:b74591d5ab33 140 * @see ::Gap::getPermittedTxPowerValues
be_bryan 0:b74591d5ab33 141 */
be_bryan 0:b74591d5ab33 142 virtual void getPermittedTxPowerValues(
be_bryan 0:b74591d5ab33 143 const int8_t **valueArrayPP, size_t *countP
be_bryan 0:b74591d5ab33 144 );
be_bryan 0:b74591d5ab33 145
be_bryan 0:b74591d5ab33 146 /**
be_bryan 0:b74591d5ab33 147 * Set the internal connection handle
be_bryan 0:b74591d5ab33 148 */
be_bryan 0:b74591d5ab33 149 void setConnectionHandle(uint16_t m_connectionHandle);
be_bryan 0:b74591d5ab33 150
be_bryan 0:b74591d5ab33 151 /**
be_bryan 0:b74591d5ab33 152 * Get the current connection handle
be_bryan 0:b74591d5ab33 153 */
be_bryan 0:b74591d5ab33 154 uint16_t getConnectionHandle();
be_bryan 0:b74591d5ab33 155
be_bryan 0:b74591d5ab33 156 /**
be_bryan 0:b74591d5ab33 157 * @see ::Gap::getPreferredConnectionParams
be_bryan 0:b74591d5ab33 158 */
be_bryan 0:b74591d5ab33 159 virtual ble_error_t getPreferredConnectionParams(ConnectionParams_t *params);
be_bryan 0:b74591d5ab33 160
be_bryan 0:b74591d5ab33 161 /**
be_bryan 0:b74591d5ab33 162 * @see ::Gap::setPreferredConnectionParams
be_bryan 0:b74591d5ab33 163 */
be_bryan 0:b74591d5ab33 164 virtual ble_error_t setPreferredConnectionParams(
be_bryan 0:b74591d5ab33 165 const ConnectionParams_t *params
be_bryan 0:b74591d5ab33 166 );
be_bryan 0:b74591d5ab33 167
be_bryan 0:b74591d5ab33 168 /**
be_bryan 0:b74591d5ab33 169 * @see ::Gap::updateConnectionParams
be_bryan 0:b74591d5ab33 170 */
be_bryan 0:b74591d5ab33 171 virtual ble_error_t updateConnectionParams(
be_bryan 0:b74591d5ab33 172 Handle_t handle, const ConnectionParams_t *params
be_bryan 0:b74591d5ab33 173 );
be_bryan 0:b74591d5ab33 174
be_bryan 0:b74591d5ab33 175 /**
be_bryan 0:b74591d5ab33 176 * @see ::Gap::startRadioScan
be_bryan 0:b74591d5ab33 177 */
be_bryan 0:b74591d5ab33 178 virtual ble_error_t startRadioScan(const GapScanningParams &scanningParams);
be_bryan 0:b74591d5ab33 179
be_bryan 0:b74591d5ab33 180 /**
be_bryan 0:b74591d5ab33 181 * @see ::Gap::stopScan
be_bryan 0:b74591d5ab33 182 */
be_bryan 0:b74591d5ab33 183 virtual ble_error_t stopScan();
be_bryan 0:b74591d5ab33 184
be_bryan 0:b74591d5ab33 185 /**
be_bryan 0:b74591d5ab33 186 * Called when advertising is stopped.
be_bryan 0:b74591d5ab33 187 */
be_bryan 0:b74591d5ab33 188 void advertisingStopped();
be_bryan 0:b74591d5ab33 189
be_bryan 0:b74591d5ab33 190 // Whitelist management
be_bryan 0:b74591d5ab33 191
be_bryan 0:b74591d5ab33 192 /**
be_bryan 0:b74591d5ab33 193 * @see ::Gap::getMaxWhitelistSize
be_bryan 0:b74591d5ab33 194 */
be_bryan 0:b74591d5ab33 195 virtual uint8_t getMaxWhitelistSize(void) const;
be_bryan 0:b74591d5ab33 196
be_bryan 0:b74591d5ab33 197 /**
be_bryan 0:b74591d5ab33 198 * @see ::Gap::getWhitelist
be_bryan 0:b74591d5ab33 199 */
be_bryan 0:b74591d5ab33 200 virtual ble_error_t getWhitelist(Whitelist_t &whitelist) const;
be_bryan 0:b74591d5ab33 201
be_bryan 0:b74591d5ab33 202 /**
be_bryan 0:b74591d5ab33 203 * @see ::Gap::setWhitelist
be_bryan 0:b74591d5ab33 204 */
be_bryan 0:b74591d5ab33 205 virtual ble_error_t setWhitelist(const Whitelist_t &whitelist);
be_bryan 0:b74591d5ab33 206
be_bryan 0:b74591d5ab33 207 /**
be_bryan 0:b74591d5ab33 208 * @see ::Gap::setAdvertisingPolicyMode
be_bryan 0:b74591d5ab33 209 */
be_bryan 0:b74591d5ab33 210 virtual ble_error_t setAdvertisingPolicyMode(AdvertisingPolicyMode_t mode);
be_bryan 0:b74591d5ab33 211
be_bryan 0:b74591d5ab33 212 /**
be_bryan 0:b74591d5ab33 213 * @see ::Gap::getAdvertisingPolicyMode
be_bryan 0:b74591d5ab33 214 */
be_bryan 0:b74591d5ab33 215 virtual AdvertisingPolicyMode_t getAdvertisingPolicyMode(void) const;
be_bryan 0:b74591d5ab33 216
be_bryan 0:b74591d5ab33 217 /**
be_bryan 0:b74591d5ab33 218 * @see ::Gap::setScanningPolicyMode
be_bryan 0:b74591d5ab33 219 */
be_bryan 0:b74591d5ab33 220 virtual ble_error_t setScanningPolicyMode(ScanningPolicyMode_t mode);
be_bryan 0:b74591d5ab33 221
be_bryan 0:b74591d5ab33 222 /**
be_bryan 0:b74591d5ab33 223 * @see ::Gap::getScanningPolicyMode
be_bryan 0:b74591d5ab33 224 */
be_bryan 0:b74591d5ab33 225 virtual ScanningPolicyMode_t getScanningPolicyMode(void) const;
be_bryan 0:b74591d5ab33 226
be_bryan 0:b74591d5ab33 227 /**
be_bryan 0:b74591d5ab33 228 * @see ::Gap::setInitiatorPolicyMode
be_bryan 0:b74591d5ab33 229 */
be_bryan 0:b74591d5ab33 230 virtual ble_error_t setInitiatorPolicyMode(InitiatorPolicyMode_t mode);
be_bryan 0:b74591d5ab33 231
be_bryan 0:b74591d5ab33 232 /**
be_bryan 0:b74591d5ab33 233 * @see ::Gap::getInitiatorPolicyMode
be_bryan 0:b74591d5ab33 234 */
be_bryan 0:b74591d5ab33 235 virtual InitiatorPolicyMode_t getInitiatorPolicyMode(void) const;
be_bryan 0:b74591d5ab33 236
be_bryan 0:b74591d5ab33 237 /**
be_bryan 0:b74591d5ab33 238 * @see ::Gap::reset
be_bryan 0:b74591d5ab33 239 */
be_bryan 0:b74591d5ab33 240 virtual ble_error_t reset(void);
be_bryan 0:b74591d5ab33 241
be_bryan 0:b74591d5ab33 242 private:
be_bryan 0:b74591d5ab33 243 Gap();
be_bryan 0:b74591d5ab33 244
be_bryan 0:b74591d5ab33 245 Gap(Gap const &);
be_bryan 0:b74591d5ab33 246 void operator=(Gap const &);
be_bryan 0:b74591d5ab33 247
be_bryan 0:b74591d5ab33 248 uint16_t m_connectionHandle;
be_bryan 0:b74591d5ab33 249 addr_type_t m_type;
be_bryan 0:b74591d5ab33 250 Address_t m_addr;
be_bryan 0:b74591d5ab33 251
be_bryan 0:b74591d5ab33 252 AdvertisingPolicyMode_t advertising_policy_mode;
be_bryan 0:b74591d5ab33 253 ScanningPolicyMode_t scanning_policy_mode;
be_bryan 0:b74591d5ab33 254 InitiatorPolicyMode_t initiator_policy_mode;
be_bryan 0:b74591d5ab33 255 Whitelist_t whitelist;
be_bryan 0:b74591d5ab33 256 };
be_bryan 0:b74591d5ab33 257
be_bryan 0:b74591d5ab33 258 } // namespace cordio
be_bryan 0:b74591d5ab33 259 } // namespace vendor
be_bryan 0:b74591d5ab33 260 } // namespace ble
be_bryan 0:b74591d5ab33 261
be_bryan 0:b74591d5ab33 262 #endif /* CORDIO_GAP_H_ */