mbed-os
Dependents: cobaLCDJoyMotor_Thread odometry_omni_3roda_v3 odometry_omni_3roda_v1 odometry_omni_3roda_v2 ... more
Diff: features/FEATURE_BLE/targets/TARGET_CORDIO/CordioGap.h
- Revision:
- 0:b74591d5ab33
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/features/FEATURE_BLE/targets/TARGET_CORDIO/CordioGap.h Mon Dec 11 17:54:04 2017 +0000 @@ -0,0 +1,262 @@ +/* mbed Microcontroller Library + * Copyright (c) 2017-2017 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef CORDIO_GAP_H_ +#define CORDIO_GAP_H_ + +#include <stdint.h> +#include "ble/blecommon.h" +#include "ble/GapAdvertisingParams.h" +#include "ble/GapAdvertisingData.h" +#include "ble/Gap.h" +#include "ble/GapScanningParams.h" +#include "dm_api.h" +#include "att_api.h" + +namespace ble { +namespace vendor { +namespace cordio { + +/** + * @see ::Gap + */ +class Gap : public ::Gap +{ +public: + /** + * Return the Gap singleton implementing ::Gap for the Cordio stac. + */ + static Gap &getInstance(); + + /** + * This function shall be called once the stack has been initialized + */ + void initialize(); + + /** + * @see ::Gap::setAddress + */ + virtual ble_error_t setAddress(AddressType_t type, const Address_t address); + + /** + * @see ::Gap::getAddress + */ + virtual ble_error_t getAddress(AddressType_t *typeP, Address_t address); + + /** + * @see ::Gap::setAdvertisingData + */ + virtual ble_error_t setAdvertisingData( + const GapAdvertisingData&, const GapAdvertisingData& + ); + + /** + * @see ::Gap::connect + */ + virtual ble_error_t connect( + const BLEProtocol::AddressBytes_t peerAddr, + BLEProtocol::AddressType_t peerAddrType, + const ConnectionParams_t* connectionParams, + const GapScanningParams* scanParams + ); + + /** + * @see ::Gap::getMinAdvertisingInterval + */ + virtual uint16_t getMinAdvertisingInterval() const; + + /** + * @see ::Gap::getMinNonConnectableAdvertisingInterval + */ + virtual uint16_t getMinNonConnectableAdvertisingInterval() const; + + /** + * @see ::Gap::getMaxAdvertisingInterval + */ + virtual uint16_t getMaxAdvertisingInterval() const; + + /** + * @see ::Gap::startAdvertising + */ + virtual ble_error_t startAdvertising(const GapAdvertisingParams &); + + /** + * @see ::Gap::stopAdvertising + */ + virtual ble_error_t stopAdvertising(); + + /** + * @see ::Gap::disconnect + */ + virtual ble_error_t disconnect( + Handle_t connectionHandle, + DisconnectionReason_t reason + ); + + /** + * @see ::Gap::disconnect + */ + virtual ble_error_t disconnect(DisconnectionReason_t reason); + + /** + * @see ::Gap::setDeviceName + */ + virtual ble_error_t setDeviceName(const uint8_t *deviceName); + + /** + * @see ::Gap::getDeviceName + */ + virtual ble_error_t getDeviceName(uint8_t *deviceName, unsigned *lengthP); + + /** + * @see ::Gap::setAppearance + */ + virtual ble_error_t setAppearance(GapAdvertisingData::Appearance appearance); + + /** + * @see ::Gap::getAppearance + */ + virtual ble_error_t getAppearance(GapAdvertisingData::Appearance *appearanceP); + + /** + * @see ::Gap::setTxPower + */ + virtual ble_error_t setTxPower(int8_t txPower); + + /** + * @see ::Gap::getPermittedTxPowerValues + */ + virtual void getPermittedTxPowerValues( + const int8_t **valueArrayPP, size_t *countP + ); + + /** + * Set the internal connection handle + */ + void setConnectionHandle(uint16_t m_connectionHandle); + + /** + * Get the current connection handle + */ + uint16_t getConnectionHandle(); + + /** + * @see ::Gap::getPreferredConnectionParams + */ + virtual ble_error_t getPreferredConnectionParams(ConnectionParams_t *params); + + /** + * @see ::Gap::setPreferredConnectionParams + */ + virtual ble_error_t setPreferredConnectionParams( + const ConnectionParams_t *params + ); + + /** + * @see ::Gap::updateConnectionParams + */ + virtual ble_error_t updateConnectionParams( + Handle_t handle, const ConnectionParams_t *params + ); + + /** + * @see ::Gap::startRadioScan + */ + virtual ble_error_t startRadioScan(const GapScanningParams &scanningParams); + + /** + * @see ::Gap::stopScan + */ + virtual ble_error_t stopScan(); + + /** + * Called when advertising is stopped. + */ + void advertisingStopped(); + + // Whitelist management + + /** + * @see ::Gap::getMaxWhitelistSize + */ + virtual uint8_t getMaxWhitelistSize(void) const; + + /** + * @see ::Gap::getWhitelist + */ + virtual ble_error_t getWhitelist(Whitelist_t &whitelist) const; + + /** + * @see ::Gap::setWhitelist + */ + virtual ble_error_t setWhitelist(const Whitelist_t &whitelist); + + /** + * @see ::Gap::setAdvertisingPolicyMode + */ + virtual ble_error_t setAdvertisingPolicyMode(AdvertisingPolicyMode_t mode); + + /** + * @see ::Gap::getAdvertisingPolicyMode + */ + virtual AdvertisingPolicyMode_t getAdvertisingPolicyMode(void) const; + + /** + * @see ::Gap::setScanningPolicyMode + */ + virtual ble_error_t setScanningPolicyMode(ScanningPolicyMode_t mode); + + /** + * @see ::Gap::getScanningPolicyMode + */ + virtual ScanningPolicyMode_t getScanningPolicyMode(void) const; + + /** + * @see ::Gap::setInitiatorPolicyMode + */ + virtual ble_error_t setInitiatorPolicyMode(InitiatorPolicyMode_t mode); + + /** + * @see ::Gap::getInitiatorPolicyMode + */ + virtual InitiatorPolicyMode_t getInitiatorPolicyMode(void) const; + + /** + * @see ::Gap::reset + */ + virtual ble_error_t reset(void); + +private: + Gap(); + + Gap(Gap const &); + void operator=(Gap const &); + + uint16_t m_connectionHandle; + addr_type_t m_type; + Address_t m_addr; + + AdvertisingPolicyMode_t advertising_policy_mode; + ScanningPolicyMode_t scanning_policy_mode; + InitiatorPolicyMode_t initiator_policy_mode; + Whitelist_t whitelist; +}; + +} // namespace cordio +} // namespace vendor +} // namespace ble + +#endif /* CORDIO_GAP_H_ */