BLE_API wrapper library for STMicroelectronics' BlueNRG Bluetooth Low Energy expansion board shield (Component)
Dependents: Nucleo_Zumo_BLE_IDB04A1 contest_IOT5 contest_IOT6 contest_IOT_10 ... more
Fork of X_NUCLEO_IDB0XA1 by
Arduino Connector Compatibility Warning
X-NUCLEO-IDB04A1 and X-NUCLEO-IDB05A1 are Arduino compatible with an exception: instead of using pin D13
for the SPI clock, they use pin D3
.
The default configuration for this library is having the SPI clock on pin D3
.
To be fully Arduino compatible, X-NUCLEO-IDB04A1 and X-NUCLEO-IDB05A1 need a small HW patch.
For X-NUCLEO-IDB04A1 this patch consists in removing zero resistor R10
and instead soldering zero resistor R11
.
For X-NUCLEO-IDB05A1 this patch consists in removing zero resistor R4
and instead soldering zero resistor R6
.
In case you patch your board, then you also have to configure this library to use pin D13
to drive the SPI clock (see macro IDB0XA1_D13_PATCH
in file x_nucleo_idb0xa1_targets.h
).
If you use pin D13
for the SPI clock, please be aware that on STM32 Nucleo boards you may not drive the LED, otherwise you will get a conflict: the LED on STM32 Nucleo boards is connected to pin D13
.
Referring to the current list of tested platforms (see X-NUCLEO-IDB04A1 and X-NUCLEO-IDB05A1 pages), the patch is required by ST-Nucleo-F103RB; ST-Nucleo-F302R8; ST-Nucleo-F411RE; and ST-Nucleo-F446RE.
Diff: x-nucleo-idb0xa1/BlueNRGGattServer.h
- Branch:
- 70f819844d61400a7b6772dcc911a63fc73af09e
- Revision:
- 259:323f588e5f57
- Parent:
- 253:9665a6f8bbdb
- Child:
- 267:cd7870e466b3
--- a/x-nucleo-idb0xa1/BlueNRGGattServer.h Thu Sep 15 10:51:20 2016 +0100 +++ b/x-nucleo-idb0xa1/BlueNRGGattServer.h Thu Sep 15 10:51:21 2016 +0100 @@ -15,7 +15,7 @@ */ /** ****************************************************************************** - * @file BlueNRGGattServer.cpp + * @file BlueNRGGattServer.cpp * @author STMicroelectronics * @brief Header file for BLE_API GattServer Class ****************************************************************************** @@ -30,7 +30,7 @@ * * <h2><center>© COPYRIGHT 2013 STMicroelectronics</center></h2> */ - + #ifndef __BLUENRG_GATT_SERVER_H__ #define __BLUENRG_GATT_SERVER_H__ @@ -53,13 +53,13 @@ static BlueNRGGattServer m_instance; return m_instance; } - + enum HandleEnum_t { CHAR_HANDLE = 0, CHAR_VALUE_HANDLE, CHAR_DESC_HANDLE }; - + /* Functions that must be implemented from GattServer */ virtual ble_error_t addService(GattService &); virtual ble_error_t read(GattAttribute::Handle_t attributeHandle, uint8_t buffer[], uint16_t *lengthP); @@ -67,13 +67,13 @@ virtual ble_error_t write(GattAttribute::Handle_t, const uint8_t[], uint16_t, bool localOnly = false); virtual ble_error_t write(Gap::Handle_t connectionHandle, GattAttribute::Handle_t, const uint8_t[], uint16_t, bool localOnly = false); virtual ble_error_t initializeGATTDatabase(void); - + virtual bool isOnDataReadAvailable() const { return true; } virtual ble_error_t reset(void); - + /* BlueNRG Functions */ void eventCallback(void); //void hwCallback(void *pckt); @@ -83,8 +83,13 @@ void HCIDataReadEvent(const GattReadCallbackParams *params); void HCIEvent(GattServerEvents::gattEvent_e type, uint16_t charHandle); void HCIDataSentEvent(unsigned count); - + private: + + // compute the number of attribute record needed by a service + static uint16_t computeAttributesRecord(GattService& service); + + static const int MAX_SERVICE_COUNT = 10; uint8_t serviceCount; uint8_t characteristicCount; @@ -101,12 +106,12 @@ BlueNRGGattServer(BlueNRGGattServer const &); void operator=(BlueNRGGattServer const &); - - static const int CHAR_DESC_TYPE_16_BIT=0x01; - static const int CHAR_DESC_TYPE_128_BIT=0x02; + + static const int CHAR_DESC_TYPE_16_BIT=0x01; + static const int CHAR_DESC_TYPE_128_BIT=0x02; static const int CHAR_DESC_SECURITY_PERMISSION=0x00; - static const int CHAR_DESC_ACCESS_PERMISSION=0x03; - static const int CHAR_ATTRIBUTE_LEN_IS_FIXED=0x00; + static const int CHAR_DESC_ACCESS_PERMISSION=0x03; + static const int CHAR_ATTRIBUTE_LEN_IS_FIXED=0x00; }; -#endif +#endif \ No newline at end of file