@@ -315,7 +315,7 @@ static int video_stm32_dcmi_enqueue(const struct device *dev, struct video_buffe
315
315
{
316
316
struct video_stm32_dcmi_data * data = dev -> data ;
317
317
const uint32_t buffer_size = data -> fmt .pitch * data -> fmt .height ;
318
-
318
+ printk ( "ENQ %p %p %u %u\n" , vbuf , data , buffer_size , vbuf -> size );
319
319
if (buffer_size > vbuf -> size ) {
320
320
return - EINVAL ;
321
321
}
@@ -333,31 +333,35 @@ static int video_stm32_dcmi_dequeue(const struct device *dev, struct video_buffe
333
333
{
334
334
struct video_stm32_dcmi_data * data = dev -> data ;
335
335
336
- if (data -> snapshot_mode ) {
337
- printk ("dequeue snapshot: %p %llu\n" , data -> vbuf , timeout .ticks );
338
- /* See if we were already called and have an active buffer */
339
- if (data -> vbuf == NULL ) {
340
- data -> vbuf = k_fifo_get (& data -> fifo_in , K_NO_WAIT );
341
- printk ("\tcamera buf: %p\n" , data -> vbuf );
336
+ /* check first to see if we already have a buffer returned */
337
+ * vbuf = k_fifo_get (& data -> fifo_out , K_NO_WAIT );
338
+ printk ("k_fifo_get returned: %p\n" , * vbuf );
339
+ if (* vbuf == NULL ) {
340
+ if (data -> snapshot_mode ) {
341
+ printk ("dequeue snapshot: %p %llu\n" , data -> vbuf , timeout .ticks );
342
+ /* See if we were already called and have an active buffer */
342
343
if (data -> vbuf == NULL ) {
343
- LOG_WRN ("Snapshot: No Buffers available!" );
344
- return - ENOMEM ;
344
+ data -> vbuf = k_fifo_get (& data -> fifo_in , K_NO_WAIT );
345
+ printk ("\tcamera buf: %p\n" , data -> vbuf );
346
+ if (data -> vbuf == NULL ) {
347
+ LOG_WRN ("Snapshot: No Buffers available!" );
348
+ return - ENOMEM ;
349
+ }
350
+
351
+ if (HAL_DCMI_Start_DMA (& data -> hdcmi , DCMI_MODE_SNAPSHOT ,
352
+ (uint32_t )data -> vbuf -> buffer ,
353
+ data -> vbuf -> size / 4 ) != HAL_OK ) {
354
+ LOG_WRN ("Snapshot: HAL_DCMI_Start_DMA FAILED!" );
355
+ return - EIO ;
356
+ }
357
+ } else {
358
+ LOG_DBG ("Snapshot: restart after timeout" );
345
359
}
346
-
347
- if (HAL_DCMI_Start_DMA (& data -> hdcmi , DCMI_MODE_SNAPSHOT ,
348
- (uint32_t )data -> vbuf -> buffer ,
349
- data -> vbuf -> size / 4 ) != HAL_OK ) {
350
- LOG_WRN ("Snapshot: HAL_DCMI_Start_DMA FAILED!" );
351
- return - EIO ;
352
- }
353
- } else {
354
- LOG_DBG ("Snapshot: restart after timeout" );
355
360
}
361
+ * vbuf = k_fifo_get (& data -> fifo_out , timeout );
362
+ printk ("k_fifo_get returned: %p\n" , * vbuf );
356
363
}
357
364
358
- * vbuf = k_fifo_get (& data -> fifo_out , timeout );
359
- printk ("k_fifo_get returned: %p\n" , * vbuf );
360
-
361
365
if (* vbuf == NULL ) {
362
366
return - EAGAIN ;
363
367
}
0 commit comments