Skip to content

Commit 400d1d9

Browse files
committed
cam: Add a way to check if a frame is ready without blocking
1 parent 5d50981 commit 400d1d9

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

ports/esp32s2/cam.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,13 @@ size_t cam_take(uint8_t **buffer_p) {
372372
return frame_buffer_event.len;
373373
}
374374

375+
bool cam_ready(void) {
376+
frame_buffer_event_t frame_buffer_event;
377+
BaseType_t result = xQueuePeek(cam_obj->frame_buffer_queue, (void *)&frame_buffer_event, 0);
378+
return result != pdFALSE;
379+
}
380+
381+
375382
void cam_give(uint8_t *buffer) {
376383
if (buffer == cam_obj->frame1_buffer) {
377384
cam_obj->frame1_buffer_en = 1;

ports/esp32s2/cam.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,13 @@ void cam_stop(void);
6666
*/
6767
size_t cam_take(uint8_t **buffer_p);
6868

69+
/**
70+
* @brief Check whether a frame is available
71+
*
72+
* @return - true if cam_take() will complete immediately, false if it will block
73+
*/
74+
bool cam_ready(void);
75+
6976
/**
7077
* @brief enable frame buffer to get the next frame data.
7178
*

0 commit comments

Comments
 (0)