I was trying to stream data from nus central to nus peripheral, with hardware flow control. I changed the drive to nrfx_uarte, it is working good except when the peripheral not consumed the data before central sending the next set of data. My expectation was: at peripheral hardware flow control blocking uart thus blocks central device sending more and finally central device uart stops the sender as it using hardware flow control.
Q.1. But this is never happening. Is it possible to get this from nRF UART Service? Since the data rate is high, application-level ack is not an option.
Sometimes peripheral hangs in uarte tx function, which I thought the reason is uarte event handler is running with a lower priority than soft device event that calls the nrfx_uarte_rx function. The uarte event handler should be called to free up memory/queue used for nrfx_uarte_rx. So I changed priority to 3, but now the central device returns NRF resource error (I think the answer may be related to Q1).
Q2. What is the priority level for ble event handler?
Using nRF52DK, SDK 16.0, soft device s112 and s132.
Thanks in advance,
You're transmitting data from a central to a peripheral, correct? Are both devices nRF52 DKs, or is the peripheral another kind of device? Is HWFC enabled in the peripheral end as well?
Also, what is the ATT MTU size set as in central and peripheral? Both devices in the link need to support a length greater than your largest string in order to work properly.
Yes, sending data from central to a peripheral
Both device are running in nRF52DK and both enabled with HDFC.
One (peripheral) device is using emulator mode (nRF52810) with soft device s112.
MTU size are default values, the log shows that the lenght has been set to 244 (0xF4), which is more than the length of one data set.