diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/grabbers/me4.c | 5 | ||||
-rw-r--r-- | src/uca.c | 3 | ||||
-rw-r--r-- | src/uca.h | 1 |
3 files changed, 7 insertions, 2 deletions
diff --git a/src/grabbers/me4.c b/src/grabbers/me4.c index 48d0756..a157206 100644 --- a/src/grabbers/me4.c +++ b/src/grabbers/me4.c @@ -215,8 +215,10 @@ static uint32_t uca_me4_grab(struct uca_grabber_priv *grabber, void **buffer, ui else last_frame = Fg_getLastPicNumberEx(me4->fg, PORT_A, me4->mem); - if (last_frame <= 0) + if (last_frame <= 0) { + *buffer = NULL; return UCA_ERR_GRABBER | UCA_ERR_FRAME_TRANSFER; + } *frame_number = (uint64_t) last_frame; *buffer = Fg_getImagePtrEx(me4->fg, last_frame, PORT_A, me4->mem); @@ -274,6 +276,7 @@ uint32_t uca_me4_init(struct uca_grabber_priv **grabber) Fg_getParameter(fg, FG_TIMEOUT, &me4->timeout, PORT_A); + me4->timeout = 1; uca->user = me4; uca->destroy = &uca_me4_destroy; uca->set_property = &uca_me4_set_property; @@ -327,7 +327,7 @@ uint32_t uca_cam_register_callback(struct uca_camera *cam, uca_cam_grab_callback uint32_t uca_cam_grab(struct uca_camera *cam, char *buffer, void *meta_data) { struct uca_camera_priv *priv = cam->priv; - if (priv->state != UCA_CAM_RECORDING) + if ((priv->state != UCA_CAM_RECORDING) && (priv->state != UCA_CAM_READOUT)) return UCA_ERR_CAMERA | UCA_ERR_NOT_RECORDING; return priv->grab(priv, buffer, meta_data); } @@ -339,6 +339,7 @@ uint32_t uca_cam_readout(struct uca_camera *cam) return UCA_ERR_CAMERA | UCA_ERR_IS_RECORDING; if (priv->readout == NULL) return UCA_ERR_CAMERA | UCA_ERR_NOT_IMPLEMENTED; + priv->state = UCA_CAM_READOUT; return priv->readout(priv); } @@ -196,6 +196,7 @@ enum uca_cam_state { UCA_CAM_CONFIGURABLE, /**< Camera can be configured and is not recording */ UCA_CAM_ARMED, /**< Camera is ready for recording */ UCA_CAM_RECORDING, /**< Camera is currently recording */ + UCA_CAM_READOUT /**< Camera recorded and is currently in readout mode */ }; |