⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.c

📁 TW2834 的Linux驱动程序
💻 C
字号:
/*  Copyright (C) 2006 Guangzhou Jinpeng Group LT     All Rights Reserved.*//**    @file   test.c    @brief  Demonstration of Video Rendering functionality@b  Application:  test*//*Rev Date        Author      Comments--------------------------------------------------------------------------------001 20060908    huangym   Original--------------------------------------------------------------------------------    For consistency and standardisation retain the Section Separators.*//************************************************ INCLUDE FILES                        ************************************************/#include <stdio.h>#include <fcntl.h>#include <unistd.h>#include <stdlib.h>#include <signal.h>#include <linux/types.h>#include <linux/video_decoder.h>#include <sys/ioctl.h>#define SET_REG 17#define GET_REG 20#include "tw2834.h"/************************************************ LOCAL MACROS                         ************************************************//* Entry point for the application */int main(int argc, char **argv){    int opra,temp_opra,temp_data;    int df;    int df0=0,df1=0,df2=0,df3=0;    int err,i;    int param[5];    char DEVNAME[20];    if((argc<3) |(argv[1] == "-h") )    {        printf("1 arg need for the program.\n");        printf("use: test chipnum -[channel][cmd]\n");	printf("	  chipnum from 0 to 3\n"); 	printf("	  -channel from -0 to -3\n");         printf("	  cmd:v--get video signal\n");	        printf("	      b,h\n");	        printf("	      p,n--pal,ntsc\n");	        printf("	      f,d--fullscreen,default split screen\n");	        printf("	      H,S--close preview,preview\n");	        printf("	      P -- split screen\n");		printf("	      s [reg] [value]--set reg = value\n");        exit(1);    }    if ((argv[2][0] == '-')&&((argv[2][1] == '0')|(argv[2][1] == '1')|(argv[2][1] == '2')|(argv[2][1] == '3')))    {        /* Test next character to determine param type */     //param[0] =9;// argv[2][1];     param[0] =argv[2][1]-0x30; // strtol(param[0],NULL,0);     printf("test is :%d\n",param[0]);        switch (argv[2][2])        {	    case 'v':	    	opra = GET_VIDEO_SIGNAL;		break;            case 'b': case 'B':                opra = SET_BRIGHTNESS;    /* brightness */                break;            case 'c': case 'C':                opra = SET_CONTRAST; /* contrast */                break;            case 'p':                 opra = PAL_STD; /* NTSC mode */                break; 	     case 'n':                 opra = NTSC_STD; /* NTSC mode */                break; 	     case 'd':                 opra = SET_DEFAULT; /*chip default config*/                break;            case 'h':                 opra = SET_HUE; /* hue */                break;	     case 's': 		opra = SET_REG; /* standard */		if(argv[4]==NULL)		{opra = GET_REG;		//param[1] = a);//atoi(argv[3]);		 param[1] = strtoul(argv[3],NULL,0);//atoi(argv[3]);		}		else		{		 param[1] = strtoul(argv[3],NULL,0);//atoi(argv[3]);		 param[2] = strtoul(argv[4],NULL,0);//atoi(argv[4]);		}                break;	     case 'f':                opra = SET_FULLSCREEN; /*  */                break;	     case 'S':                opra = SET_PREVIEW; /* preview */                break;	     case 'H':                opra = SET_CLOSE_PREVIEW; /*close preview  */                break;           case 'P': //split                opra = SET_SPLIT; /* split preview */                     break;            default:                /* ignore unrecognised characters */                printf("Parameter is error, the right is -[n]b -[n]c -[n]h -[n]B -[n]C -[n]H.\n");		//printf("n which is standed for the chip(tw2834_0,tw2834_1,tw2834_2,tw2834_3) must be <4,.\n");                exit(1);                break;        }    }    else    {        printf("Parameter is error, the right is -[n]b -[n]c -[n]h -[n]B -[n]C -[n]H.\n");        exit(1);    }    //chipnum = strtol(argv[1],NULL,0);    sprintf(DEVNAME,"/dev/tw2834%s",argv[1]);    printf("Open %s\n",DEVNAME);    df = open(DEVNAME,O_RDWR);    if (df == -1)    {	    printf("Can't open %s device.\n",DEVNAME);	    exit(1);    }        if((opra == SET_SPLIT) |(opra == SET_FULLSCREEN ) )    {       temp_opra = opra; 	    opra = GET_CHIP_NUMBER;	    err = ioctl(df, opra, param);            printf("This is four split\n"); 	    for (i =0; i<param[0]+1; i++)	    {       //sprintf(DEVNAMET,"/dev/tw2834%s",i);		    //df0 = open(DEVNAMET,O_RDWR);                    if(i == 0) 		    {	df0 = open("/dev/tw28340",O_RDWR);		    opra = SET_ALL_CHANNEL_DISABLE;		    err = ioctl(df0, opra, param);		   }                    if(i == 1) 		    {	df1 = open("/dev/tw28341",O_RDWR);		    err = ioctl(df1, opra, param);		   }                    if(i == 2) 		    {	df2 = open("/dev/tw28342",O_RDWR);		    err = ioctl(df2, opra, param);		   }                    if(i == 3) 		    {	df3 = open("/dev/tw28343",O_RDWR);		    err = ioctl(df3, opra, param);		   }	    }	    	    printf("*****************\n");            param[0] = argv[2][1]-0x30;            if(temp_opra == SET_FULLSCREEN)             { temp_data=param[0];	       opra = temp_opra;               err = ioctl(df, opra, param);	      	       close(df);               goto this;              }	    opra =   SET_SPLIT;	    param[0]=atoi(argv[1]);//param[1]=atoi(argv[3]);param[2]=atoi(argv[4]); param[3]=atoi(argv[5]);param[4]=atoi(argv[6]);            if(param[0] ==0 )	   { 	      param[0]=0;param[1]=4;param[2]=0;	      err = ioctl(df0, opra, param);	//set position	      	      param[0]=1;param[1]=4;param[2]=1; 	      err = ioctl(df0, opra, param);	   	      param[0]=2;param[1]=4;param[2]=2;	      err = ioctl(df0, opra, param);	   	      param[0]=3;param[1]=4;param[2]=3; 	      err = ioctl(df0, opra, param);	    	      goto this;	    }            if(param[0] ==1 )	    { 	    param[0]=0;param[1]=4;param[2]=0;	    err = ioctl(df1, opra, param);	   	    param[0]=1;param[1]=4;param[2]=1; 	    err = ioctl(df1, opra, param);		    	    param[0]=2;param[1]=4;param[2]=2;	    err = ioctl(df1, opra, param);	  	    	    param[0]=3;param[1]=4;param[2]=3; 	    err = ioctl(df1, opra, param);	   	    goto this;	     }            if(param[0] ==2 )	    {  	      	    param[0]=0;param[1]=4;param[2]=0;	    err = ioctl(df3, opra, param);	 	    	    param[0]=1;param[1]=4;param[2]=1; 	    err = ioctl(df3, opra, param);	  	    	    param[0]=2;param[1]=4;param[2]=2;	    err = ioctl(df3, opra, param);	 	    	    param[0]=3;param[1]=4;param[2]=3; 	    err = ioctl(df3, opra, param);	 	    goto this;	     }            if(param[0] ==3 )	    {		    param[0]=0;param[1]=9;param[2]=0;		    err = ioctl(df0, opra, param);		 		    param[0]=0;param[1]=9;param[2]=1;		    err = ioctl(df1, opra, param);				    param[0]=1;param[1]=9;param[2]=2; 		    err = ioctl(df1, opra, param);		  		    		    		    param[0]=1;param[1]=9;param[2]=3; 		    err = ioctl(df2, opra, param);		  		    param[0]=2;param[1]=9;param[2]=4;		    err = ioctl(df2, opra, param);		 		    	    param[0]=0;param[1]=9;param[2]=5;	    err = ioctl(df3, opra, param);	  	    param[0]=1;param[1]=9;param[2]=6; 	    err = ioctl(df3, opra, param);	  	    param[0]=2;param[1]=9;param[2]=7;	    err = ioctl(df3, opra, param);	  	    param[0]=3;param[1]=9;param[2]=8; 	    err = ioctl(df3, opra, param);	  	     }	        this:       printf("four split\n");     	    close(df0);            close(df1);            close(df2);            close(df3);            return 0;    }    else    {       printf ("%s seting ...\n",DEVNAME);     err = ioctl(df, opra, param);     printf("return from %s %d\n",DEVNAME,param[0]);     if(err)     {     perror("");        printf("%s ioctl err.\n",DEVNAME);        close(df);        exit(1);     }    }    close(df);    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -