src/QueryCtrls.c File Reference

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>
#include <linux/videodev2.h>
#include "rgb133v4l2.h"

Functions

void enumerate_menu (int fd, struct v4l2_queryctrl *pQueryctrl)
int main (int argc, char *argv[])

Function Documentation

void enumerate_menu ( int  fd,
struct v4l2_queryctrl *  pQueryctrl 
)

00017 {
00018    struct v4l2_querymenu querymenu;
00019    printf("    Menu items:\n");
00020    memset(&querymenu, 0, sizeof(querymenu));
00021    querymenu.id = pQueryctrl->id;
00022    for(querymenu.index = pQueryctrl->minimum;
00023        querymenu.index <= pQueryctrl->maximum;
00024        querymenu.index++)
00025    {
00026       if(ioctl(fd, VIDIOC_QUERYMENU, &querymenu) == 0)
00027       {
00028          printf("        %s\n", querymenu.name);
00029       }
00030    }
00031 }

int main ( int  argc,
char *  argv[] 
)

00034 {
00035    int fd = 0;
00036    int i = 0;
00037 
00038    char device_name[128];
00039 
00040    struct v4l2_queryctrl queryctrl;
00041 
00042    memset(device_name, 0, 128);
00043 
00044    sprintf(device_name, "/dev/video%d", i);
00045    while ((fd = open(device_name, O_RDWR)) != -1)
00046    {
00047       printf("\n\nDevice: %s\n", device_name);
00048       memset(&queryctrl, 0, sizeof(queryctrl));
00049 
00050       for(queryctrl.id = V4L2_CID_BASE;
00051           queryctrl.id < V4L2_CID_LASTP1;
00052           queryctrl.id++)
00053       {
00054          if(ioctl(fd, VIDIOC_QUERYCTRL, &queryctrl) == 0)
00055          {
00056             if(queryctrl.flags & V4L2_CTRL_FLAG_DISABLED)
00057                continue;
00058 
00059             printf("Control: %s\n", queryctrl.name);
00060 
00061             if(queryctrl.type == V4L2_CTRL_TYPE_MENU)
00062                enumerate_menu(fd, &queryctrl);
00063          }
00064          else
00065          {
00066             if(errno == EINVAL)
00067                continue;
00068             perror("VIDIOC_QUERYCTRL");
00069             return -1;
00070          }
00071       }
00072 
00073       for(queryctrl.id = V4L2_CID_PRIVATE_BASE;;
00074           queryctrl.id++)
00075       {
00076          if(ioctl(fd, VIDIOC_QUERYCTRL, &queryctrl) == 0)
00077          {
00078             if(queryctrl.flags & V4L2_CTRL_FLAG_DISABLED)
00079                continue;
00080 
00081             printf("Control: %s\n", queryctrl.name);
00082 
00083             if(queryctrl.type == V4L2_CTRL_TYPE_MENU)
00084                enumerate_menu(fd, &queryctrl);
00085          }
00086          else
00087          {
00088             if(errno == EINVAL)
00089             {
00090                break;
00091             }
00092             perror("VIDIOC_QUERYCTRL(PRIVATE)");
00093             return -2;
00094          }
00095       }
00096 
00097       close(fd);
00098 
00099       i++;
00100       sprintf(device_name, "/dev/video%d", i);
00101    }
00102    return 0;
00103 }


Generated on Fri Jan 20 10:36:57 2017 for Vision Utils by  doxygen 1.4.7