summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorMatthias Vogelgesang <matthias.vogelgesang@ipe.fzk.de>2011-02-25 17:44:23 +0100
committerMatthias Vogelgesang <matthias.vogelgesang@ipe.fzk.de>2011-02-25 17:44:23 +0100
commita10b4d2abbb2aafbcb398f659975d673b0181e8c (patch)
treefa03f1413b43cddbd408a9e01c949525f6886453 /test
parente99970e82e665cb5668584827af320bc49e27300 (diff)
downloadlibuca-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.txt3
-rw-r--r--test/test.c76
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;
}