Hello Nordic Guys,
We are working on the system based on BLE_APP_UART_C (central) and BLE_APP_UART (peripheral).
“Central” is always “ON” and scanning for the peripherals.
“Peripheral” wakes up every 5 minutes, connects to the “Central”, sends data, and going back to sleep.
System works perfectly when “peripheral” were based on SDK 11 S132 Version 2, now we are migrating to SDK14.0 S132 V5, and experiencing some challenges. (In both cases “Central was always build on SDK14 SD 132 V5)
What we are noticing is bellow:
- “Central” is connected to the “peripheral”
- “Central” is enabling tx notifications by calling function: ble_nus_c_tx_notif_enable(..)
On the “peripheral” side we seeing follow behavior:
- “Peripheral” is connected to the “Central” GAP_EVT_CONNECTED
- Exchange MTU response event ie “Central” and “Peripheral” is trying to negotiate data package size BLE_GATTC_EVT_EXCHANGE_MTU_RSP
- BLE_GATTS_EVT_WRITE with event ID 80 and length 20, we are assuming this is a point where “Central” is enabling Notifications on “Peripheral”.
What we are experiencing: it seems like Notifications is not always enabling on the “Peripheral” side ie if we try to send message from the “Central” to the ”Peripheral” it is going to be delivered.
In “good” case scenario after receiving BLE_GATTS_EVT_WRITE we are getting BLE_NUS_EVT_COMM_STARTED, but in “bad” case scenario we are not getting anything and after roughly 10-12 seconds we are getting: BLE_GAP_EVT_CONN_PARAM_UPDATE. But we still not able to communicate between “peripheral” and central. Once “peripheral” is disconnected from the “Central” on the next connection attempt system could communicate, but behavior is random.
Question: if there is way on the “Peripheral” side to make sure Tx notifications had been enabled?
What would be the word of advice how we can address this issue?
Thank you,
Andrew.