Skip to content

Commit f5ed9f9

Browse files
committed
subsys: modem: backends: isr: notify remaining RX bytes
If there are still bytes in the RX buffer, trigger another MODEM_PIPE_EVENT_RECEIVE_READY event. Signed-off-by: Ryan Erickson <[email protected]>
1 parent e5838ff commit f5ed9f9

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

subsys/modem/backends/modem_backend_uart_isr.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,8 @@ static int modem_backend_uart_isr_receive(void *data, uint8_t *buf, size_t size)
207207
read_bytes += ring_buf_get(&backend->isr.receive_rdb[receive_rdb_unused], buf, size);
208208

209209
if (ring_buf_is_empty(&backend->isr.receive_rdb[receive_rdb_unused]) == false) {
210+
/* More data available in the buffer */
211+
k_work_schedule(&backend->receive_ready_work, K_NO_WAIT);
210212
return (int)read_bytes;
211213
}
212214

@@ -218,8 +220,12 @@ static int modem_backend_uart_isr_receive(void *data, uint8_t *buf, size_t size)
218220
/* Read data from previously used buffer */
219221
receive_rdb_unused = (backend->isr.receive_rdb_used == 1) ? 0 : 1;
220222

221-
read_bytes += ring_buf_get(&backend->isr.receive_rdb[receive_rdb_unused],
222-
&buf[read_bytes], (size - read_bytes));
223+
read_bytes += ring_buf_get(&backend->isr.receive_rdb[receive_rdb_unused], &buf[read_bytes],
224+
(size - read_bytes));
225+
if (ring_buf_is_empty(&backend->isr.receive_rdb[receive_rdb_unused]) == false) {
226+
/* More data available in the buffer */
227+
k_work_schedule(&backend->receive_ready_work, K_NO_WAIT);
228+
}
223229

224230
return (int)read_bytes;
225231
}

0 commit comments

Comments
 (0)