summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Vogelgesang <matthias.vogelgesang@ipe.fzk.de>2011-02-24 09:50:34 +0100
committerMatthias Vogelgesang <matthias.vogelgesang@ipe.fzk.de>2011-02-24 09:50:34 +0100
commit4d49de7e136a80819740f6aaada9c5881b083a50 (patch)
treebf5951b49249c4c06ce9e14b5295e303040130aa
parent7f2740af499405f31313941758818d8191b3578f (diff)
downloaduca-4d49de7e136a80819740f6aaada9c5881b083a50.tar.gz
uca-4d49de7e136a80819740f6aaada9c5881b083a50.tar.bz2
uca-4d49de7e136a80819740f6aaada9c5881b083a50.tar.xz
uca-4d49de7e136a80819740f6aaada9c5881b083a50.zip
Handle properties correctly for pco.edge
-rw-r--r--src/cameras/uca_pco.c26
-rw-r--r--src/uca.h4
2 files changed, 18 insertions, 12 deletions
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! */