diff options
author | Matthias Vogelgesang <matthias.vogelgesang@ipe.fzk.de> | 2011-02-25 17:44:23 +0100 |
---|---|---|
committer | Matthias Vogelgesang <matthias.vogelgesang@ipe.fzk.de> | 2011-02-25 17:44:23 +0100 |
commit | a10b4d2abbb2aafbcb398f659975d673b0181e8c (patch) | |
tree | fa03f1413b43cddbd408a9e01c949525f6886453 /test | |
parent | e99970e82e665cb5668584827af320bc49e27300 (diff) | |
download | libuca-a10b4d2abbb2aafbcb398f659975d673b0181e8c.tar.gz libuca-a10b4d2abbb2aafbcb398f659975d673b0181e8c.tar.bz2 libuca-a10b4d2abbb2aafbcb398f659975d673b0181e8c.tar.xz libuca-a10b4d2abbb2aafbcb398f659975d673b0181e8c.zip |
Make the properties complete and build even better test app
Diffstat (limited to 'test')
-rw-r--r-- | test/CMakeLists.txt | 3 | ||||
-rw-r--r-- | test/test.c | 76 |
2 files changed, 60 insertions, 19 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index f560df3..b8dfce7 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,6 +1,9 @@ cmake_minimum_required(VERSION 2.8) +add_definitions("--std=c99 -Wall") + include_directories(${CMAKE_SOURCE_DIR}/src) + add_executable(test test.c) target_link_libraries(test uca) diff --git a/test/test.c b/test/test.c index 6537b6b..0f5b6fe 100644 --- a/test/test.c +++ b/test/test.c @@ -2,32 +2,70 @@ #include <stdio.h> #include "uca.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[]) { - if (argc < 2) { - printf("usage: uca <property-name>\n"); + struct uca_t *uca = uca_init(); + if (uca == NULL) { + printf("Couldn't find a camera\n"); return 1; } - else { - int property = uca_get_property_id(argv[1]); - if (property == UCA_PROP_INVALID) { - printf("Property invalid!\n"); - return 1; - } - struct uca_t *uca = uca_init(); - if (uca == NULL) { - printf("Couldn't find a camera\n"); - return 1; - } + char string_value[256]; + uint32_t uint32_value; + uint8_t uint8_value; - uint32_t value; /* this type should be right, most of the time */ - if (uca->cam_get_property(uca, property, &value) == UCA_PROP_INVALID) - printf("Property not supported on this camera\n"); - else - printf("%s = %u\n", argv[1], value); + const char *unit_map[] = { + "px", + "bits", + "ns", + "µs", + "ms", + "s", + "rows", + "" + }; - uca_destroy(uca); + for (int i = 0; i < UCA_PROP_LAST-2; i++) { + struct uca_property_t *prop = uca_get_full_property(i); + switch (prop->type) { + case uca_string: + if (uca->cam_get_property(uca, i, string_value) != UCA_PROP_INVALID) { + print_level(count_dots(prop->name)); + printf("%s = %s %s ", prop->name, string_value, unit_map[prop->unit]); + } + break; + case uca_uint32t: + if (uca->cam_get_property(uca, i, &uint32_value) != UCA_PROP_INVALID) { + print_level(count_dots(prop->name)); + printf("%s = %i %s ", prop->name, uint32_value, unit_map[prop->unit]); + } + break; + case uca_uint8t: + if (uca->cam_get_property(uca, i, &uint8_value) != UCA_PROP_INVALID) { + print_level(count_dots(prop->name)); + printf("%s = %i %s ", prop->name, uint8_value, unit_map[prop->unit]); + } + break; + } + printf("\n"); } + + uca_destroy(uca); return 0; } |