diff options
Diffstat (limited to 'example-fs-bb48/usb-cdc.c')
-rw-r--r-- | example-fs-bb48/usb-cdc.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/example-fs-bb48/usb-cdc.c b/example-fs-bb48/usb-cdc.c index 30d4ccd..58588c8 100644 --- a/example-fs-bb48/usb-cdc.c +++ b/example-fs-bb48/usb-cdc.c @@ -594,14 +594,13 @@ stream_recv (struct stream *st, uint8_t *buf) r = -1; else { - stream.flags &= ~FLAG_RECV_AVAIL; - do + while (1) { - chopstx_cond_wait (&st->cnd, &st->mtx); if ((stream.flags & FLAG_RECV_AVAIL)) { r = stream.recv_len; memcpy (buf, stream.recv_buf, r); + stream.flags &= ~FLAG_RECV_AVAIL; break; } else if ((stream.flags & FLAG_CONNECTED) == 0) @@ -609,8 +608,8 @@ stream_recv (struct stream *st, uint8_t *buf) r = -1; break; } + chopstx_cond_wait (&st->cnd, &st->mtx); } - while (1); } chopstx_mutex_unlock (&st->mtx); |