diff --git a/epicardium/modules/stream.c b/epicardium/modules/stream.c index 63e63070e6c8c6aaf06386506edb9f6acd13582b..4b36cce787146d227bf9ee068fd2d506c09ea793 100644 --- a/epicardium/modules/stream.c +++ b/epicardium/modules/stream.c @@ -52,20 +52,22 @@ int epic_stream_read(int sd, void *buf, size_t count) return -ENODEV; } - /* Poll the stream */ - int ret = stream->poll_stream(); - if (ret < 0) { - return ret; + /* Poll the stream, if a poll_stream function exists */ + if (stream->poll_stream != NULL) { + int ret = stream->poll_stream(); + if (ret < 0) { + return ret; + } } - /* Check buffer sizing */ + /* Check buffer size is a multiple of the data packet size */ if (count % stream->item_size != 0) { return -EINVAL; } size_t i; for (i = 0; i < count; i += stream->item_size) { - if (!xQueueReceive(stream->queue, buf + i, 10)) { + if (!xQueueReceive(stream->queue, buf + i, STREAM_QUEUE_WAIT)) { break; } } diff --git a/epicardium/modules/stream.h b/epicardium/modules/stream.h index 5cf0dcc068ceac251c1609ba768c8fbbabe76bcf..5bbb327da47af046d1cbdba662fe7a6622078ef1 100644 --- a/epicardium/modules/stream.h +++ b/epicardium/modules/stream.h @@ -7,6 +7,8 @@ #include "FreeRTOS.h" #include "queue.h" +#define STREAM_QUEUE_WAIT pdMS_TO_TICKS(10) + /** * **Stream Descriptors**: *