diff options
author | Matthias Vogelgesang <matthias.vogelgesang@ipe.fzk.de> | 2011-02-28 16:53:29 +0100 |
---|---|---|
committer | Matthias Vogelgesang <matthias.vogelgesang@ipe.fzk.de> | 2011-02-28 16:53:29 +0100 |
commit | f6f2bafe19fd57c56201e79be6b7692f16f16099 (patch) | |
tree | a10a1da5d9873c3d9427bbd6b905e024024aacbe /test/enum.c | |
parent | 9d4f8e270d27556f277a14c567d516b3c090a027 (diff) | |
download | uca-f6f2bafe19fd57c56201e79be6b7692f16f16099.tar.gz uca-f6f2bafe19fd57c56201e79be6b7692f16f16099.tar.bz2 uca-f6f2bafe19fd57c56201e79be6b7692f16f16099.tar.xz uca-f6f2bafe19fd57c56201e79be6b7692f16f16099.zip |
Add grab example
Diffstat (limited to 'test/enum.c')
-rw-r--r-- | test/enum.c | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/test/enum.c b/test/enum.c new file mode 100644 index 0000000..0649c64 --- /dev/null +++ b/test/enum.c @@ -0,0 +1,76 @@ + +#include <stdio.h> +#include "uca.h" +#include "uca-cam.h" + +int count_dots(const char *s) +{ + int res = 0; + while (*(s++) != '\0') + if (*s == '.') + res++; + return res; +} + +void print_level(int depth) +{ + for (int i = 0; i < depth; i++) + printf("| "); + printf("`-- "); +} + +int main(int argc, char *argv[]) +{ + struct uca_t *uca = uca_init(); + if (uca == NULL) { + printf("Couldn't find a camera\n"); + return 1; + } + + /* take first camera */ + struct uca_camera_t *cam = uca->cameras; + + char string_value[256]; + uint32_t uint32_value; + uint8_t uint8_value; + + const char *unit_map[] = { + "px", "bits", "ns", "µs", "ms", "s", "rows", "" + }; + + while (cam != NULL) { + for (int i = 0; i < UCA_PROP_LAST; i++) { + struct uca_property_t *prop = uca_get_full_property(i); + print_level(count_dots(prop->name)); + printf("%s = ", prop->name); + switch (prop->type) { + case uca_string: + if (cam->get_property(cam, i, string_value) != UCA_ERR_PROP_INVALID) { + printf("%s ", string_value); + } + else + printf("n/a"); + break; + case uca_uint32t: + if (cam->get_property(cam, i, &uint32_value) != UCA_ERR_PROP_INVALID) { + printf("%i %s", uint32_value, unit_map[prop->unit]); + } + else + printf("n/a"); + break; + case uca_uint8t: + if (cam->get_property(cam, i, &uint8_value) != UCA_ERR_PROP_INVALID) { + printf("%i %s", uint8_value, unit_map[prop->unit]); + } + else + printf("n/a"); + break; + } + printf("\n"); + } + cam = cam->next; + } + + uca_destroy(uca); + return 0; +} |