1 /* 2 * v4l-test: Test environment for Video For Linux Two API 3 * 4 * 5 Apr 2009 0.3 Test case for NULL parameter reworked 5 * 28 Mar 2009 0.2 Clean up ret and errno variable names and dprintf() output 6 * 30 Jan 2009 0.1 First release 7 * 8 * Written by Mrton Nmeth <nm127 (at) freemail.hu> 9 * Released under GPL 10 */ 11 12 #include <stdio.h> 13 #include <sys/types.h> 14 #include <sys/stat.h> 15 #include <fcntl.h> 16 #include <unistd.h> 17 #include <sys/ioctl.h> 18 #include <errno.h> 19 #include <string.h> 20 21 #include <linux/videodev2.h> 22 #include <linux/errno.h> 23 24 #include <CUnit/CUnit.h> 25 26 #include "v4l2_test.h" 27 #include "dev_video.h" 28 #include "video_limits.h" 29 #include "v4l2_validator.h" 30 31 #include "test_VIDIOC_QUERYSTD.h" 32 33 void test_VIDIOC_QUERYSTD() 34 { 35 int ret_query, errno_query; 36 v4l2_std_id id; 37 38 memset(&id, 0xff, sizeof(id)); 39 40 ret_query = ioctl(get_video_fd(), VIDIOC_QUERYSTD, &id); 41 errno_query = errno; 42 43 dprintf 44 ("\t%s:%u: VIDIOC_QUERYSTD, ret_query=%i, errno_query=%i, id=0x%llx\n", 45 __FILE__, __LINE__, ret_query, errno_query, id); 46 47 if (ret_query == 0) { 48 CU_ASSERT_EQUAL(ret_query, 0); 49 CU_ASSERT(id != 0); 50 CU_ASSERT(valid_v4l2_std_id(id)); 51 52 } else { 53 /* if this ioctl is not supported, then errno shall be EINVAL */ 54 CU_ASSERT_EQUAL(ret_query, -1); 55 CU_ASSERT_EQUAL(errno_query, EINVAL); 56 } 57 58 } 59 60 void test_VIDIOC_QUERYSTD_NULL() 61 { 62 int ret_query, errno_query; 63 int ret_null, errno_null; 64 v4l2_std_id id; 65 66 memset(&id, 0, sizeof(id)); 67 ret_query = ioctl(get_video_fd(), VIDIOC_QUERYSTD, &id); 68 errno_query = errno; 69 70 dprintf("\t%s:%u: VIDIOC_QUERYSTD: ret_query=%i, errno_query=%i\n", 71 __FILE__, __LINE__, ret_query, errno_query); 72 73 ret_null = ioctl(get_video_fd(), VIDIOC_QUERYSTD, NULL); 74 errno_null = errno; 75 76 dprintf("\t%s:%u: VIDIOC_G_TUNER: ret_null=%i, errno_null=%i\n", 77 __FILE__, __LINE__, ret_null, errno_null); 78 79 /* check if VIDIOC_QUERYSTD is supported at all or not */ 80 if (ret_query == 0) { 81 /* VIDIOC_QUERYSTD is supported, the parameter should be checked */ 82 CU_ASSERT_EQUAL(ret_query, 0); 83 CU_ASSERT_EQUAL(ret_null, -1); 84 CU_ASSERT_EQUAL(errno_null, EFAULT); 85 } else { 86 /* VIDIOC_QUERYSTD not supported at all, the parameter should not be evaluated */ 87 CU_ASSERT_EQUAL(ret_query, -1); 88 CU_ASSERT_EQUAL(errno_query, EINVAL); 89 CU_ASSERT_EQUAL(ret_null, -1); 90 CU_ASSERT_EQUAL(errno_null, EINVAL); 91 92 } 93 } 94 95 /* TODO: check for different input settings */ 96