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: source/BlueNRGGap.cpp
- Branch:
- a8af514bf03daac81073325025db2c98e2151a34
- Revision:
- 256:146bb175ce80
- Parent:
- 255:97adb68decd4
- Child:
- 259:323f588e5f57
--- a/source/BlueNRGGap.cpp Thu Sep 15 10:51:17 2016 +0100 +++ b/source/BlueNRGGap.cpp Thu Sep 15 10:51:18 2016 +0100 @@ -275,7 +275,7 @@ case GapAdvertisingData::ADVERTISING_INTERVAL: /**< Advertising Interval */ { - printf("Advertising type: ADVERTISING_INTERVAL\n\r"); + PRINTF("Advertising type: ADVERTISING_INTERVAL\n\r"); uint8_t buffSize = *loadPtr.getUnitAtIndex(index).getLenPtr()-1; AdvData[AdvLen++] = buffSize+1; // the fisrt byte is the data buffer size (type+data) AdvData[AdvLen++] = AD_TYPE_ADVERTISING_INTERVAL; @@ -323,7 +323,7 @@ int err = hci_le_set_advertising_data(advData.getPayloadLen(), advData.getPayload()); if (err) { - printf("error while setting the payload\r\n"); + PRINTF("error while setting the payload\r\n"); return BLE_ERROR_UNSPECIFIED; } @@ -501,9 +501,9 @@ ); if (err) { - PRINTF("impossible to set advertising parameters\n\r"); - PRINTF("advInterval min: %u, advInterval max: %u\n\r", advInterval, advInterval + 1); - PRINTF("advType: %u, advFilterPolicy: %u\n\r", params.getAdvertisingType(), advFilterPolicy); + printf("impossible to set advertising parameters\n\r"); + printf("advInterval min: %u, advInterval max: %u\n\r", advInterval, advInterval + 1); + printf("advType: %u, advFilterPolicy: %u\n\r", params.getAdvertisingType(), advFilterPolicy); return BLE_ERROR_INVALID_PARAM; } @@ -1351,6 +1351,8 @@ if(state.connected == 1) { advIntMS = (conn_min_interval*1.25)-GUARD_INT; advInterval = _advParams.MSEC_TO_ADVERTISEMENT_DURATION_UNITS(advIntMS); + + printf("conn_min_interval is equal to %u\r\n", conn_min_interval); } else { advInterval = _advParams.getIntervalInADVUnits(); } @@ -1565,4 +1567,9 @@ scanningPolicyMode = Gap::SCAN_POLICY_IGNORE_WHITELIST; return BLE_ERROR_NONE; +} + +void BlueNRGGap::setConnectionInterval(uint16_t interval) { + conn_min_interval = interval; + conn_max_interval = interval; } \ No newline at end of file