From e3601ac32d8b91baca527d7fa5bec0dc88536c7a Mon Sep 17 00:00:00 2001 From: Matthias Vogelgesang Date: Fri, 4 Nov 2016 09:40:35 +0100 Subject: Add test program to check stability --- CMakeLists.txt | 3 ++ tests/test.c | 127 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 130 insertions(+) create mode 100644 tests/test.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 601accc..9b12575 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,3 +46,6 @@ target_link_libraries(ucaufo install(TARGETS ucaufo LIBRARY DESTINATION ${LIBUCA_PLUGINDIR}) + +add_executable(test tests/test.c) +target_link_libraries(test ucaufo) diff --git a/tests/test.c b/tests/test.c new file mode 100644 index 0000000..34a83cf --- /dev/null +++ b/tests/test.c @@ -0,0 +1,127 @@ +#include +#include +#include +#include + +UcaPluginManager *manager; +UcaCamera *camera; + +static void +dispose (void) +{ + g_object_unref (camera); + g_object_unref (manager); +} + +static void +pass_or_die (GError *error) +{ + if (error == NULL) + return; + + g_print ("Error: %s\n", error->message); + dispose (); + exit (1); +} + +static void +print_header (const gchar *header) +{ + guint remaining; + + remaining = 79 - strlen (header); + g_print ("%s ", header); + + for (guint i = 0; i < remaining; i++) + g_print ("-"); + + g_print ("\n"); +} + +static void +check_roi_size (UcaCamera *camera, guint x, guint y, guint width, guint height, GError **error) +{ + guint roi_height; + guint16 *frame; + + g_object_set (camera, "roi-height", height, NULL); + g_object_get (camera, "roi-height", &roi_height, NULL); + + if (height != roi_height) { + g_print (" Error: ROI is %u x %u pixels\n", width, roi_height); + return; + } + + frame = g_malloc0 (2 * width * height); + + uca_camera_start_recording (camera, error); + + if (*error != NULL) + goto exit_check_roi_size; + + for (guint i = 0; i < 30; i++) { + uca_camera_grab (camera, frame, error); + + if (*error != NULL) + goto exit_check_roi_size; + } + + uca_camera_stop_recording (camera, error); + + if (*error != NULL) + goto exit_check_roi_size; + +exit_check_roi_size: + g_free (frame); +} + +static void +test_roi_change (UcaCamera *camera) +{ + guint sensor_width; + guint sensor_height; + guint roi_width; + guint roi_height; + + print_header ("Check different region-of-interest sizes"); + + g_object_get (camera, + "sensor-width", &sensor_width, + "sensor-height", &sensor_height, + "roi-width", &roi_width, + "roi-height", &roi_height, + NULL); + + g_print (" Sensor size: %u x %u pixels\n", sensor_width, sensor_height); + + for (roi_height = sensor_height; roi_height > 8; roi_height /= 2) { + GError *error = NULL; + + g_print (" Test ROI %u x %u pixels: ", sensor_width, roi_height); + + check_roi_size (camera, 0, 0, sensor_width, sensor_height, &error); + + if (error == NULL) { + g_print ("PASS\n"); + } + else { + g_print ("FAIL (%s)\n", error->message); + g_error_free (error); + } + } +} + +int +main (int argc, char **argv) +{ + GError *error = NULL; + + manager = uca_plugin_manager_new (); + camera = uca_plugin_manager_get_camera (manager, "ufo", &error, NULL); + + pass_or_die (error); + + test_roi_change (camera); + + dispose (); +} -- cgit v1.2.1 From 462801e87dda6467042426c955c2f29e898c8b48 Mon Sep 17 00:00:00 2001 From: Matthias Vogelgesang Date: Fri, 4 Nov 2016 10:45:59 +0100 Subject: Do not handle PCILIB_REGISTER_INCONSISTENT There is no way to check the version of pcilib at compile time and this flag does not seem to be that important anyway ... well let's see. --- uca-ufo-camera.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/uca-ufo-camera.c b/uca-ufo-camera.c index a739e07..cc0dc4c 100644 --- a/uca-ufo-camera.c +++ b/uca-ufo-camera.c @@ -206,9 +206,6 @@ update_properties (UcaUfoCameraPrivate *priv) case PCILIB_REGISTER_RW1I: flags = G_PARAM_READWRITE; break; - case PCILIB_REGISTER_INCONSISTENT: - g_warning ("%s is an inconsistent register, don't know how to handle that", reg->name); - break; } value = read_register_value (priv->handle, reg->name); -- cgit v1.2.1 From fa458b96410401d070e06fabdf4b4490da898927 Mon Sep 17 00:00:00 2001 From: Matthias Vogelgesang Date: Fri, 4 Nov 2016 11:46:11 +0100 Subject: Stop recording if test fails --- tests/test.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/test.c b/tests/test.c index 34a83cf..c8e89af 100644 --- a/tests/test.c +++ b/tests/test.c @@ -62,8 +62,10 @@ check_roi_size (UcaCamera *camera, guint x, guint y, guint width, guint height, for (guint i = 0; i < 30; i++) { uca_camera_grab (camera, frame, error); - if (*error != NULL) + if (*error != NULL) { + uca_camera_stop_recording (camera, NULL); goto exit_check_roi_size; + } } uca_camera_stop_recording (camera, error); -- cgit v1.2.1 From 0cc0ea331abc3f906606389b194166180d5ba548 Mon Sep 17 00:00:00 2001 From: Matthias Vogelgesang Date: Fri, 23 Jun 2017 09:19:35 +0200 Subject: Improve formatting --- uca-ufo-camera.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/uca-ufo-camera.c b/uca-ufo-camera.c index cc0dc4c..ea00f07 100644 --- a/uca-ufo-camera.c +++ b/uca-ufo-camera.c @@ -366,9 +366,9 @@ uca_ufo_camera_stop_recording (UcaCamera *camera, GError **error) set_control_bit (priv, 11, FALSE); /* disable streaming */ if (priv->async_thread) { - err = pcilib_stop(priv->handle, PCILIB_EVENT_FLAG_STOP_ONLY); - PCILIB_SET_ERROR(err, UCA_UFO_CAMERA_ERROR_STOP_RECORDING); - g_thread_join(priv->async_thread); + err = pcilib_stop (priv->handle, PCILIB_EVENT_FLAG_STOP_ONLY); + PCILIB_SET_ERROR (err, UCA_UFO_CAMERA_ERROR_STOP_RECORDING); + g_thread_join (priv->async_thread); priv->async_thread = NULL; } @@ -377,7 +377,7 @@ uca_ufo_camera_stop_recording (UcaCamera *camera, GError **error) ; err = pcilib_stop (priv->handle, PCILIB_EVENT_FLAGS_DEFAULT); - PCILIB_SET_ERROR(err, UCA_UFO_CAMERA_ERROR_STOP_RECORDING); + PCILIB_SET_ERROR (err, UCA_UFO_CAMERA_ERROR_STOP_RECORDING); } static void -- cgit v1.2.1