From 4d49de7e136a80819740f6aaada9c5881b083a50 Mon Sep 17 00:00:00 2001 From: Matthias Vogelgesang Date: Thu, 24 Feb 2011 09:50:34 +0100 Subject: Handle properties correctly for pco.edge --- src/cameras/uca_pco.c | 26 +++++++++++++++----------- src/uca.h | 4 +++- 2 files changed, 18 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/cameras/uca_pco.c b/src/cameras/uca_pco.c index 3155376..3effde4 100644 --- a/src/cameras/uca_pco.c +++ b/src/cameras/uca_pco.c @@ -26,22 +26,26 @@ static uint32_t uca_pco_set_bitdepth(struct uca_t *uca, uint8_t *bitdepth) static uint32_t uca_pco_set_exposure(struct uca_t *uca, uint32_t *exposure) { uint32_t e, d; - pco_get_delay_exposure(GET_PCO(uca), &d, &e); - pco_set_delay_exposure(GET_PCO(uca), d, *exposure); - return 0; + if (pco_get_delay_exposure(GET_PCO(uca), &d, &e) != PCO_NOERROR) + return UCA_ERR_PROP_GENERAL; + if (pco_set_delay_exposure(GET_PCO(uca), d, *exposure) != PCO_NOERROR) + return UCA_ERR_PROP_GENERAL; + return UCA_NO_ERROR; } static uint32_t uca_pco_set_delay(struct uca_t *uca, uint32_t *delay) { uint32_t e, d; - pco_get_delay_exposure(GET_PCO(uca), &d, &e); - pco_set_delay_exposure(GET_PCO(uca), *delay, e); - return 0; + if (pco_get_delay_exposure(GET_PCO(uca), &d, &e) != PCO_NOERROR) + return UCA_ERR_PROP_GENERAL; + if (pco_set_delay_exposure(GET_PCO(uca), *delay, e) != PCO_NOERROR) + return UCA_ERR_PROP_GENERAL; + return UCA_NO_ERROR; } static uint32_t uca_pco_acquire_image(struct uca_t *uca, void *buffer) { - return 0; + return UCA_NO_ERROR; } static uint32_t uca_pco_destroy(struct uca_t *uca) @@ -49,6 +53,7 @@ static uint32_t uca_pco_destroy(struct uca_t *uca) Fg_FreeGrabber(GET_FG(uca)); pco_destroy(GET_PCO(uca)); free(uca->user); + return UCA_NO_ERROR; } static uint32_t uca_pco_set_property(struct uca_t *uca, int32_t property, void *data) @@ -63,11 +68,10 @@ static uint32_t uca_pco_set_property(struct uca_t *uca, int32_t property, void * break; case UCA_PROP_EXPOSURE: - uca_pco_set_exposure(uca, (uint32_t *) data); - break; + return uca_pco_set_exposure(uca, (uint32_t *) data); - case UCA_PROP_FRAMERATE: - break; + case UCA_PROP_DELAY: + return uca_pco_set_delay(uca, (uint32_t *) data); default: return UCA_ERR_PROP_INVALID; diff --git a/src/uca.h b/src/uca.h index e74fb80..3c52c7a 100644 --- a/src/uca.h +++ b/src/uca.h @@ -69,7 +69,9 @@ const char* uca_get_property_name(int32_t property_id); #define UCA_NO_ERROR 0 #define UCA_ERR_INIT_NOT_FOUND 1 /**< camera probing or initialization failed */ -#define UCA_ERR_PROP_INVALID 1 /**< the requested property is not supported by the camera */ +#define UCA_ERR_PROP_INVALID 2 /**< the requested property is not supported by the camera */ +#define UCA_ERR_PROP_GENERAL 3 /**< error occured reading/writing the property */ + /* The property IDs must start with 0 and must be continuous. Whenever this * library is released, the IDs must not change to guarantee binary compatibility! */ -- cgit v1.2.3