HW layer for the Nucleo board, it only work with old BLE_API
Dependents: Hello_BLE F446RE-BLE
Fork of X_NUCLEO_IDB0XA1 by
BlueNRGDevice.h@74:c4526f8284d5, 2015-06-16 (annotated)
- Committer:
- Antonio Vilei
- Date:
- Tue Jun 16 10:23:56 2015 +0200
- Revision:
- 74:c4526f8284d5
- Parent:
- 70:d20d30f59b1c
- Child:
- 75:8d763da1ccc7
Use mbed C++ API for BlueNRG Driver
Update the old driver and replace the low-level C functions
with the C++ API for SPI and InterruptIn.
Fix issues with interrupt initialization caused by the old driver
(calling mbed's private functions to setup SPI and irq and messing
up other code based on InterruptIn, e.g. button.)
Signed-off-by: Antonio Vilei <antonio.vilei@st.com>
Who changed what in which revision?
User | Revision | Line number | New 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 BlueNRGDevice.h |
Silvio Lucio Oliva |
70:d20d30f59b1c | 20 | * @author STMicroelectronics |
Silvio Lucio Oliva |
70:d20d30f59b1c | 21 | * @brief Header file for BLEDeviceInstanceBase based BlueNRGDevice |
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>© 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_H__ |
Silvio Lucio Oliva |
70:d20d30f59b1c | 36 | #define __BLUENRG_H__ |
Silvio Lucio Oliva |
70:d20d30f59b1c | 37 | |
Silvio Lucio Oliva |
70:d20d30f59b1c | 38 | #define BLUENRG |
Silvio Lucio Oliva |
70:d20d30f59b1c | 39 | #define DEBUG_BLUENRG_USER |
Silvio Lucio Oliva |
70:d20d30f59b1c | 40 | |
Silvio Lucio Oliva |
70:d20d30f59b1c | 41 | #include "btle.h" |
Silvio Lucio Oliva |
70:d20d30f59b1c | 42 | |
Silvio Lucio Oliva |
70:d20d30f59b1c | 43 | #include "mbed.h" |
Silvio Lucio Oliva |
70:d20d30f59b1c | 44 | #include "blecommon.h" |
Silvio Lucio Oliva |
70:d20d30f59b1c | 45 | #include "BLEDevice.h" |
Silvio Lucio Oliva |
70:d20d30f59b1c | 46 | #include "BlueNRGGap.h" |
Silvio Lucio Oliva |
70:d20d30f59b1c | 47 | #include "BlueNRGGattServer.h" |
Silvio Lucio Oliva |
70:d20d30f59b1c | 48 | |
Silvio Lucio Oliva |
70:d20d30f59b1c | 49 | |
Silvio Lucio Oliva |
70:d20d30f59b1c | 50 | class BlueNRGDevice : public BLEDeviceInstanceBase |
Silvio Lucio Oliva |
70:d20d30f59b1c | 51 | { |
Silvio Lucio Oliva |
70:d20d30f59b1c | 52 | |
Silvio Lucio Oliva |
70:d20d30f59b1c | 53 | public: |
Antonio Vilei |
74:c4526f8284d5 | 54 | BlueNRGDevice(PinName mosi, PinName miso, PinName sck, PinName cs, PinName rst, PinName irq); |
Silvio Lucio Oliva |
70:d20d30f59b1c | 55 | virtual ~BlueNRGDevice(void); |
Silvio Lucio Oliva |
70:d20d30f59b1c | 56 | |
Silvio Lucio Oliva |
70:d20d30f59b1c | 57 | // <<<ANDREA>>> |
Silvio Lucio Oliva |
70:d20d30f59b1c | 58 | virtual const char *getVersion(void); |
Silvio Lucio Oliva |
70:d20d30f59b1c | 59 | virtual Gap& getGap(); |
Silvio Lucio Oliva |
70:d20d30f59b1c | 60 | virtual GattServer& getGattServer(); |
Silvio Lucio Oliva |
70:d20d30f59b1c | 61 | virtual ble_error_t init(void); |
Silvio Lucio Oliva |
70:d20d30f59b1c | 62 | virtual ble_error_t shutdown(void); |
Silvio Lucio Oliva |
70:d20d30f59b1c | 63 | virtual ble_error_t reset(void); |
Silvio Lucio Oliva |
70:d20d30f59b1c | 64 | virtual ble_error_t initializeSecurity(bool enableBonding = true, |
Silvio Lucio Oliva |
70:d20d30f59b1c | 65 | bool requireMITM = true, |
Silvio Lucio Oliva |
70:d20d30f59b1c | 66 | Gap::SecurityIOCapabilities_t iocaps = Gap::IO_CAPS_NONE, |
Silvio Lucio Oliva |
70:d20d30f59b1c | 67 | const Gap::Passkey_t passkey = NULL); |
Silvio Lucio Oliva |
70:d20d30f59b1c | 68 | virtual ble_error_t setTxPower(int8_t txPower); |
Silvio Lucio Oliva |
70:d20d30f59b1c | 69 | virtual void getPermittedTxPowerValues(const int8_t **, size_t *); |
Silvio Lucio Oliva |
70:d20d30f59b1c | 70 | virtual void waitForEvent(void); |
Silvio Lucio Oliva |
70:d20d30f59b1c | 71 | // <<<ANDREA>>> |
Silvio Lucio Oliva |
70:d20d30f59b1c | 72 | |
Silvio Lucio Oliva |
70:d20d30f59b1c | 73 | bool getIsInitialized(void); |
Antonio Vilei |
74:c4526f8284d5 | 74 | |
Antonio Vilei |
74:c4526f8284d5 | 75 | |
Antonio Vilei |
74:c4526f8284d5 | 76 | bool dataPresent(); |
Antonio Vilei |
74:c4526f8284d5 | 77 | int32_t spiRead(uint8_t *buffer, uint8_t buff_size); |
Antonio Vilei |
74:c4526f8284d5 | 78 | int32_t spiWrite(uint8_t* data1, uint8_t* data2, uint8_t Nb_bytes1, uint8_t Nb_bytes2); |
Antonio Vilei |
74:c4526f8284d5 | 79 | void disable_irq(); |
Antonio Vilei |
74:c4526f8284d5 | 80 | void enable_irq(); |
Silvio Lucio Oliva |
70:d20d30f59b1c | 81 | |
Silvio Lucio Oliva |
70:d20d30f59b1c | 82 | private: |
Silvio Lucio Oliva |
70:d20d30f59b1c | 83 | bool isInitialized; |
Antonio Vilei |
74:c4526f8284d5 | 84 | |
Antonio Vilei |
74:c4526f8284d5 | 85 | SPI spi_; |
Antonio Vilei |
74:c4526f8284d5 | 86 | DigitalOut nCS_; |
Antonio Vilei |
74:c4526f8284d5 | 87 | DigitalOut rst_; |
Antonio Vilei |
74:c4526f8284d5 | 88 | InterruptIn irq_; |
Silvio Lucio Oliva |
70:d20d30f59b1c | 89 | }; |
Silvio Lucio Oliva |
70:d20d30f59b1c | 90 | |
Silvio Lucio Oliva |
70:d20d30f59b1c | 91 | #endif |