Hi,
calling "nrf_ringbuf_get()" immediately after "nrf_ringbuf_cpy_get()" returns an invalid pointer to the data.
A workaround could be to assign "rd_idx" to "tmp_rd_idx" before "nrf_ringbuf_get()".
NRF_RINGBUF_DEF (_ringbuf, 1024); ... uint8_t _data [64]; size_t _len_1 = 4; ... nrf_ringbuf_cpy_get (&_ringbuf, _data, &_len_1); _ringbuf.p_cb->tmp_rd_idx = _ringbuf.p_cb->rd_idx; // DO FIX "tmp_rd_idx" after "nrf_ringbuf_cpy_get()" before "nrf_ringbuf_get()" size_t _len_2 = 4; nrf_ringbuf_get (&_ringbuf, &_data, &_len_2, false); ... nrf_ringbuf_free (&_ringbuf, _len_2); ...