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