HW layer for the Nucleo board, it only work with old BLE_API

Dependents:   Hello_BLE F446RE-BLE

Fork of X_NUCLEO_IDB0XA1 by ST

Committer:
Andrea Palmieri
Date:
Tue Jun 23 17:44:59 2015 +0200
Revision:
77:332b416123b4
Parent:
70:d20d30f59b1c
Update BLE_API and mbed Libs

- BLE_API Revision 713 corresponding to github Release 0.4.0 (commit d80fec885c)
- mbed Revision 101

Signed-off-by: Andrea Palmieri <andrea.palmieri@st.com>

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Silvio Lucio Oliva 70:d20d30f59b1c 1 /* mbed Microcontroller Library
Silvio Lucio Oliva 70:d20d30f59b1c 2 * Copyright (c) 2006-2013 ARM Limited
Silvio Lucio Oliva 70:d20d30f59b1c 3 *
Silvio Lucio Oliva 70:d20d30f59b1c 4 * Licensed under the Apache License, Version 2.0 (the "License");
Silvio Lucio Oliva 70:d20d30f59b1c 5 * you may not use this file except in compliance with the License.
Silvio Lucio Oliva 70:d20d30f59b1c 6 * You may obtain a copy of the License at
Silvio Lucio Oliva 70:d20d30f59b1c 7 *
Silvio Lucio Oliva 70:d20d30f59b1c 8 * http://www.apache.org/licenses/LICENSE-2.0
Silvio Lucio Oliva 70:d20d30f59b1c 9 *
Silvio Lucio Oliva 70:d20d30f59b1c 10 * Unless required by applicable law or agreed to in writing, software
Silvio Lucio Oliva 70:d20d30f59b1c 11 * distributed under the License is distributed on an "AS IS" BASIS,
Silvio Lucio Oliva 70:d20d30f59b1c 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Silvio Lucio Oliva 70:d20d30f59b1c 13 * See the License for the specific language governing permissions and
Silvio Lucio Oliva 70:d20d30f59b1c 14 * limitations under the License.
Silvio Lucio Oliva 70:d20d30f59b1c 15 */
Silvio Lucio Oliva 70:d20d30f59b1c 16
Silvio Lucio Oliva 70:d20d30f59b1c 17 /**
Silvio Lucio Oliva 70:d20d30f59b1c 18 ******************************************************************************
Silvio Lucio Oliva 70:d20d30f59b1c 19 * @file BlueNRGGap.h
Silvio Lucio Oliva 70:d20d30f59b1c 20 * @author STMicroelectronics
Silvio Lucio Oliva 70:d20d30f59b1c 21 * @brief Header file for BlueNRG BLE_API Gap Class
Silvio Lucio Oliva 70:d20d30f59b1c 22 ******************************************************************************
Silvio Lucio Oliva 70:d20d30f59b1c 23 * @copy
Silvio Lucio Oliva 70:d20d30f59b1c 24 *
Silvio Lucio Oliva 70:d20d30f59b1c 25 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
Silvio Lucio Oliva 70:d20d30f59b1c 26 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
Silvio Lucio Oliva 70:d20d30f59b1c 27 * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
Silvio Lucio Oliva 70:d20d30f59b1c 28 * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
Silvio Lucio Oliva 70:d20d30f59b1c 29 * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
Silvio Lucio Oliva 70:d20d30f59b1c 30 * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
Silvio Lucio Oliva 70:d20d30f59b1c 31 *
Silvio Lucio Oliva 70:d20d30f59b1c 32 * <h2><center>&copy; COPYRIGHT 2013 STMicroelectronics</center></h2>
Silvio Lucio Oliva 70:d20d30f59b1c 33 */
Silvio Lucio Oliva 70:d20d30f59b1c 34
Silvio Lucio Oliva 70:d20d30f59b1c 35 #ifndef __BLUENRG_GAP_H__
Silvio Lucio Oliva 70:d20d30f59b1c 36 #define __BLUENRG_GAP_H__
Silvio Lucio Oliva 70:d20d30f59b1c 37
Silvio Lucio Oliva 70:d20d30f59b1c 38 #include "mbed.h"
Silvio Lucio Oliva 70:d20d30f59b1c 39 #include "blecommon.h"
Silvio Lucio Oliva 70:d20d30f59b1c 40 #include "btle.h"
Silvio Lucio Oliva 70:d20d30f59b1c 41 #include "GapAdvertisingParams.h"
Silvio Lucio Oliva 70:d20d30f59b1c 42 #include "GapAdvertisingData.h"
Andrea Palmieri 77:332b416123b4 43 #include <ble/Gap.h>
Silvio Lucio Oliva 70:d20d30f59b1c 44
Silvio Lucio Oliva 70:d20d30f59b1c 45 #define BLE_CONN_HANDLE_INVALID 0x0
Silvio Lucio Oliva 70:d20d30f59b1c 46 #define BDADDR_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 47
Silvio Lucio Oliva 70:d20d30f59b1c 48 #define BLUENRG_GAP_ADV_INTERVAL_MIN (0)
Silvio Lucio Oliva 70:d20d30f59b1c 49 #define BLUENRG_GAP_ADV_INTERVAL_MAX (0)
Silvio Lucio Oliva 70:d20d30f59b1c 50 #define BLE_GAP_ADV_NONCON_INTERVAL_MIN (0)
Silvio Lucio Oliva 70:d20d30f59b1c 51
Silvio Lucio Oliva 70:d20d30f59b1c 52
Silvio Lucio Oliva 70:d20d30f59b1c 53 /**************************************************************************/
Silvio Lucio Oliva 70:d20d30f59b1c 54 /*!
Silvio Lucio Oliva 70:d20d30f59b1c 55 \brief
Silvio Lucio Oliva 70:d20d30f59b1c 56
Silvio Lucio Oliva 70:d20d30f59b1c 57 */
Silvio Lucio Oliva 70:d20d30f59b1c 58 /**************************************************************************/
Silvio Lucio Oliva 70:d20d30f59b1c 59 class BlueNRGGap : public Gap
Silvio Lucio Oliva 70:d20d30f59b1c 60 {
Silvio Lucio Oliva 70:d20d30f59b1c 61 public:
Silvio Lucio Oliva 70:d20d30f59b1c 62 static BlueNRGGap &getInstance() {
Silvio Lucio Oliva 70:d20d30f59b1c 63 static BlueNRGGap m_instance;
Silvio Lucio Oliva 70:d20d30f59b1c 64 return m_instance;
Silvio Lucio Oliva 70:d20d30f59b1c 65 }
Silvio Lucio Oliva 70:d20d30f59b1c 66
Silvio Lucio Oliva 70:d20d30f59b1c 67 // <<<ANDREA>>>
Silvio Lucio Oliva 70:d20d30f59b1c 68 enum AdvType_t {
Andrea Palmieri 77:332b416123b4 69 ADV_IND = GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED,//Gap::ADV_IND,
Andrea Palmieri 77:332b416123b4 70 ADV_DIRECT_IND = GapAdvertisingParams::ADV_CONNECTABLE_DIRECTED,//Gap::ADV_DIRECT_IND,
Andrea Palmieri 77:332b416123b4 71 ADV_SCAN_IND = GapAdvertisingParams::ADV_SCANNABLE_UNDIRECTED,//Gap::ADV_SCAN_IND,
Andrea Palmieri 77:332b416123b4 72 ADV_NONCONN_IND = GapAdvertisingParams::ADV_NON_CONNECTABLE_UNDIRECTED//Gap::ADV_NONCONN_IND
Silvio Lucio Oliva 70:d20d30f59b1c 73 };
Silvio Lucio Oliva 70:d20d30f59b1c 74
Silvio Lucio Oliva 70:d20d30f59b1c 75 /* Functions that must be implemented from Gap */
Silvio Lucio Oliva 70:d20d30f59b1c 76 virtual ble_error_t setAddress(addr_type_t type, const Address_t address);
Silvio Lucio Oliva 70:d20d30f59b1c 77 virtual ble_error_t getAddress(addr_type_t *typeP, Address_t address);
Silvio Lucio Oliva 70:d20d30f59b1c 78 virtual ble_error_t setAdvertisingData(const GapAdvertisingData &, const GapAdvertisingData &);
Silvio Lucio Oliva 70:d20d30f59b1c 79 virtual ble_error_t startAdvertising(const GapAdvertisingParams &);
Silvio Lucio Oliva 70:d20d30f59b1c 80 virtual ble_error_t stopAdvertising(void);
Silvio Lucio Oliva 70:d20d30f59b1c 81 virtual ble_error_t stopScan();
Silvio Lucio Oliva 70:d20d30f59b1c 82 virtual uint16_t getMinAdvertisingInterval(void) const;
Silvio Lucio Oliva 70:d20d30f59b1c 83 virtual uint16_t getMinNonConnectableAdvertisingInterval(void) const;
Silvio Lucio Oliva 70:d20d30f59b1c 84 virtual uint16_t getMaxAdvertisingInterval(void) const;
Silvio Lucio Oliva 70:d20d30f59b1c 85 virtual ble_error_t disconnect(DisconnectionReason_t reason);
Andrea Palmieri 77:332b416123b4 86 virtual ble_error_t disconnect(Handle_t connectionHandle, DisconnectionReason_t reason);
Silvio Lucio Oliva 70:d20d30f59b1c 87 virtual ble_error_t getPreferredConnectionParams(ConnectionParams_t *params);
Silvio Lucio Oliva 70:d20d30f59b1c 88 virtual ble_error_t setPreferredConnectionParams(const ConnectionParams_t *params);
Silvio Lucio Oliva 70:d20d30f59b1c 89 virtual ble_error_t updateConnectionParams(Handle_t handle, const ConnectionParams_t *params);
Silvio Lucio Oliva 70:d20d30f59b1c 90
Silvio Lucio Oliva 70:d20d30f59b1c 91 virtual ble_error_t setDeviceName(const uint8_t *deviceName);
Silvio Lucio Oliva 70:d20d30f59b1c 92 virtual ble_error_t getDeviceName(uint8_t *deviceName, unsigned *lengthP);
Andrea Palmieri 77:332b416123b4 93 virtual ble_error_t setAppearance(GapAdvertisingData::Appearance appearance);
Andrea Palmieri 77:332b416123b4 94 virtual ble_error_t getAppearance(GapAdvertisingData::Appearance *appearanceP);
Andrea Palmieri 77:332b416123b4 95
Andrea Palmieri 77:332b416123b4 96 virtual ble_error_t setTxPower(int8_t txPower);
Andrea Palmieri 77:332b416123b4 97 virtual void getPermittedTxPowerValues(const int8_t **, size_t *);
Silvio Lucio Oliva 70:d20d30f59b1c 98 // <<<ANDREA>>>
Silvio Lucio Oliva 70:d20d30f59b1c 99
Silvio Lucio Oliva 70:d20d30f59b1c 100
Silvio Lucio Oliva 70:d20d30f59b1c 101 void setConnectionHandle(uint16_t con_handle);
Silvio Lucio Oliva 70:d20d30f59b1c 102 uint16_t getConnectionHandle(void);
Silvio Lucio Oliva 70:d20d30f59b1c 103
Silvio Lucio Oliva 70:d20d30f59b1c 104 //tHalUint8* getAddress();
Silvio Lucio Oliva 70:d20d30f59b1c 105 bool getIsSetAddress();
Silvio Lucio Oliva 70:d20d30f59b1c 106
Silvio Lucio Oliva 70:d20d30f59b1c 107 protected:
Silvio Lucio Oliva 70:d20d30f59b1c 108 virtual ble_error_t startRadioScan(const GapScanningParams &scanningParams);
Silvio Lucio Oliva 70:d20d30f59b1c 109
Silvio Lucio Oliva 70:d20d30f59b1c 110 private:
Silvio Lucio Oliva 70:d20d30f59b1c 111 uint16_t m_connectionHandle;
Silvio Lucio Oliva 70:d20d30f59b1c 112 uint8_t bdaddr[BDADDR_SIZE];
Silvio Lucio Oliva 70:d20d30f59b1c 113 bool isSetAddress;
Silvio Lucio Oliva 70:d20d30f59b1c 114 tBleStatus ret;
Silvio Lucio Oliva 70:d20d30f59b1c 115 uint8_t *DeviceName;
Silvio Lucio Oliva 70:d20d30f59b1c 116 uint8_t deviceAppearance[2];
Silvio Lucio Oliva 70:d20d30f59b1c 117
Silvio Lucio Oliva 70:d20d30f59b1c 118 BlueNRGGap() {
Silvio Lucio Oliva 70:d20d30f59b1c 119 m_connectionHandle = BLE_CONN_HANDLE_INVALID;
Silvio Lucio Oliva 70:d20d30f59b1c 120 isSetAddress = false;
Silvio Lucio Oliva 70:d20d30f59b1c 121 DeviceName = NULL;
Silvio Lucio Oliva 70:d20d30f59b1c 122 }
Silvio Lucio Oliva 70:d20d30f59b1c 123
Silvio Lucio Oliva 70:d20d30f59b1c 124 BlueNRGGap(BlueNRGGap const &);
Silvio Lucio Oliva 70:d20d30f59b1c 125 void operator=(BlueNRGGap const &);
Silvio Lucio Oliva 70:d20d30f59b1c 126 };
Silvio Lucio Oliva 70:d20d30f59b1c 127
Silvio Lucio Oliva 70:d20d30f59b1c 128 #endif // ifndef __BLUENRG_GAP_H__