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:
Silvio Lucio Oliva
Date:
Mon Jun 08 17:08:01 2015 +0200
Revision:
70:d20d30f59b1c
Child:
77:332b416123b4
Initial commit for mbed support

Signed-off-by: Silvio Lucio Oliva <silvio.oliva@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"
Silvio Lucio Oliva 70:d20d30f59b1c 43 #include <public/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 {
Silvio Lucio Oliva 70:d20d30f59b1c 69 ADV_IND = Gap::ADV_IND,
Silvio Lucio Oliva 70:d20d30f59b1c 70 ADV_DIRECT_IND = Gap::ADV_DIRECT_IND,
Silvio Lucio Oliva 70:d20d30f59b1c 71 ADV_SCAN_IND = Gap::ADV_SCAN_IND,
Silvio Lucio Oliva 70:d20d30f59b1c 72 ADV_NONCONN_IND = 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);
Silvio Lucio Oliva 70:d20d30f59b1c 86 virtual ble_error_t getPreferredConnectionParams(ConnectionParams_t *params);
Silvio Lucio Oliva 70:d20d30f59b1c 87 virtual ble_error_t setPreferredConnectionParams(const ConnectionParams_t *params);
Silvio Lucio Oliva 70:d20d30f59b1c 88 virtual ble_error_t updateConnectionParams(Handle_t handle, const ConnectionParams_t *params);
Silvio Lucio Oliva 70:d20d30f59b1c 89
Silvio Lucio Oliva 70:d20d30f59b1c 90 virtual ble_error_t purgeAllBondingState(void);
Silvio Lucio Oliva 70:d20d30f59b1c 91 virtual ble_error_t getLinkSecurity(Handle_t connectionHandle, LinkSecurityStatus_t *securityStatusP);
Silvio Lucio Oliva 70:d20d30f59b1c 92
Silvio Lucio Oliva 70:d20d30f59b1c 93 virtual ble_error_t setDeviceName(const uint8_t *deviceName);
Silvio Lucio Oliva 70:d20d30f59b1c 94 virtual ble_error_t getDeviceName(uint8_t *deviceName, unsigned *lengthP);
Silvio Lucio Oliva 70:d20d30f59b1c 95 virtual ble_error_t setAppearance(uint16_t appearance);
Silvio Lucio Oliva 70:d20d30f59b1c 96 virtual ble_error_t getAppearance(uint16_t *appearanceP);
Silvio Lucio Oliva 70:d20d30f59b1c 97 // <<<ANDREA>>>
Silvio Lucio Oliva 70:d20d30f59b1c 98
Silvio Lucio Oliva 70:d20d30f59b1c 99
Silvio Lucio Oliva 70:d20d30f59b1c 100 void setConnectionHandle(uint16_t con_handle);
Silvio Lucio Oliva 70:d20d30f59b1c 101 uint16_t getConnectionHandle(void);
Silvio Lucio Oliva 70:d20d30f59b1c 102
Silvio Lucio Oliva 70:d20d30f59b1c 103 //tHalUint8* getAddress();
Silvio Lucio Oliva 70:d20d30f59b1c 104 bool getIsSetAddress();
Silvio Lucio Oliva 70:d20d30f59b1c 105
Silvio Lucio Oliva 70:d20d30f59b1c 106 protected:
Silvio Lucio Oliva 70:d20d30f59b1c 107 virtual ble_error_t startRadioScan(const GapScanningParams &scanningParams);
Silvio Lucio Oliva 70:d20d30f59b1c 108
Silvio Lucio Oliva 70:d20d30f59b1c 109 private:
Silvio Lucio Oliva 70:d20d30f59b1c 110 uint16_t m_connectionHandle;
Silvio Lucio Oliva 70:d20d30f59b1c 111 uint8_t bdaddr[BDADDR_SIZE];
Silvio Lucio Oliva 70:d20d30f59b1c 112 bool isSetAddress;
Silvio Lucio Oliva 70:d20d30f59b1c 113 tBleStatus ret;
Silvio Lucio Oliva 70:d20d30f59b1c 114 uint8_t *DeviceName;
Silvio Lucio Oliva 70:d20d30f59b1c 115 uint8_t deviceAppearance[2];
Silvio Lucio Oliva 70:d20d30f59b1c 116
Silvio Lucio Oliva 70:d20d30f59b1c 117 BlueNRGGap() {
Silvio Lucio Oliva 70:d20d30f59b1c 118 m_connectionHandle = BLE_CONN_HANDLE_INVALID;
Silvio Lucio Oliva 70:d20d30f59b1c 119 isSetAddress = false;
Silvio Lucio Oliva 70:d20d30f59b1c 120 DeviceName = NULL;
Silvio Lucio Oliva 70:d20d30f59b1c 121 }
Silvio Lucio Oliva 70:d20d30f59b1c 122
Silvio Lucio Oliva 70:d20d30f59b1c 123 BlueNRGGap(BlueNRGGap const &);
Silvio Lucio Oliva 70:d20d30f59b1c 124 void operator=(BlueNRGGap const &);
Silvio Lucio Oliva 70:d20d30f59b1c 125 };
Silvio Lucio Oliva 70:d20d30f59b1c 126
Silvio Lucio Oliva 70:d20d30f59b1c 127 #endif // ifndef __BLUENRG_GAP_H__