summaryrefslogtreecommitdiffstats
path: root/ipecamera/image.c
diff options
context:
space:
mode:
Diffstat (limited to 'ipecamera/image.c')
-rw-r--r--ipecamera/image.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/ipecamera/image.c b/ipecamera/image.c
index 8899627..969071d 100644
--- a/ipecamera/image.c
+++ b/ipecamera/image.c
@@ -38,6 +38,7 @@ struct ipecamera_s {
pcilib_register_t n_lines_reg, line_reg;
pcilib_register_t exposure_reg;
+ int started;
int buffer_size;
int buf_ptr;
@@ -140,6 +141,23 @@ void ipecamera_free(void *vctx) {
}
}
+int ipecamera_set_buffer_size(ipecamera_t *ctx, int size) {
+ if (ctx->started) {
+ pcilib_error("Can't change buffer size while grabbing");
+ return PCILIB_ERROR_INVALID_REQUEST;
+ }
+
+ if (ctx->size < 1) {
+ pcilib_error("The buffer size is too small");
+ return PCILIB_ERROR_INVALID_REQUEST;
+ }
+
+ ctx->buffer_size = size;
+
+ return 0;
+}
+
+
int ipecamera_reset(void *vctx) {
int err;
pcilib_t *pcilib;
@@ -222,6 +240,11 @@ int ipecamera_start(void *vctx, pcilib_event_t event_mask, pcilib_callback_t cb,
return PCILIB_ERROR_NOTINITIALIZED;
}
+ if (ctx->started) {
+ pcilib_error("IPECamera grabbing is already started");
+ return PCILIB_ERROR_INVALID_REQUEST;
+ }
+
ctx->cb = cb;
ctx->cb_user = user;
@@ -429,6 +452,11 @@ int ipecamera_trigger(void *vctx, pcilib_event_t event, size_t trigger_size, voi
pcilib_error("IPECamera imaging is not initialized");
return PCILIB_ERROR_NOTINITIALIZED;
}
+
+ if (!ctx->started) {
+ pcilib_error("Can't trigger while not grabbing is not started");
+ return PCILIB_ERROR_INVALID_REQUEST;
+ }
err = ipecamera_get_image(ctx);
if (!err) err = ctx->cb(event, ctx->event_id, ctx->cb_user);