Skip to content

Commit 3bc73d5

Browse files
author
Matthias Spiller
committed
Fix sporadic hangup when stopping notifies
1 parent 7f96cc2 commit 3bc73d5

File tree

3 files changed

+12
-1
lines changed

3 files changed

+12
-1
lines changed

libraries/Bluefruit52Lib/src/BLECharacteristic.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -682,7 +682,12 @@ bool BLECharacteristic::notify(uint16_t conn_hdl, const void* data, uint16_t len
682682
};
683683

684684
LOG_LV2("CHR", "Notify %d bytes", packet_len);
685-
VERIFY_STATUS( sd_ble_gatts_hvx(conn_hdl, &hvx_params), false );
685+
uint32_t status = sd_ble_gatts_hvx(conn_hdl, &hvx_params);
686+
if(NRF_SUCCESS != status)
687+
{
688+
conn->releaseHvnPacket();
689+
}
690+
VERIFY_STATUS(status, false );
686691

687692
remaining -= packet_len;
688693
u8data += packet_len;

libraries/Bluefruit52Lib/src/BLEConnection.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,11 @@ bool BLEConnection::getHvnPacket (void)
210210
return xSemaphoreTake(_hvn_sem, ms2tick(BLE_GENERIC_TIMEOUT));
211211
}
212212

213+
bool BLEConnection::releaseHvnPacket(void)
214+
{
215+
return xSemaphoreGive(_hvn_sem);
216+
}
217+
213218
bool BLEConnection::getWriteCmdPacket (void)
214219
{
215220
return xSemaphoreTake(_wrcmd_sem, ms2tick(BLE_GENERIC_TIMEOUT));

libraries/Bluefruit52Lib/src/BLEConnection.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ class BLEConnection
100100
void stopRssi(void);
101101

102102
bool getHvnPacket(void);
103+
bool releaseHvnPacket(void);
103104
bool getWriteCmdPacket(void);
104105
bool waitForIndicateConfirm(void);
105106

0 commit comments

Comments
 (0)