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

📄 tunerapp.c

📁 sigma_designs的tuner驱动
💻 C
📖 第 1 页 / 共 2 页
字号:
					goto _label_instructions;								uStart = strtol(argv[argi+1], NULL, 10);				uEnd = strtol(argv[argi+2], NULL, 10);								argi = argi + 3;				break;							case 'I':				interactive = TRUE;				argi = argi + 1;				break;			} // end switch					} //end while		if( tunerapiOpen( &tunerapiCfg, &(listTunerContext[nTuners])) != RM_OK ) {			printf("tunerapiOpen() failed\n");			goto main_exit;		}		MPRINT(("Created and SELECTED Tuner %ld\n", nTuners));		selectedTuner = nTuners;		nTuners++;		if( (uStart != 0) &&		    (uEnd != 0) )		{			SCAN_RESULT_T scanresult_T;			if( tunerapiGetProperty(listTunerContext[selectedTuner], TunerApiProperty_TunerLowestFrequency, &pd_U) != RM_OK )				printf("unexpected error, tunerapiGetProperty(TunerLowestFrequency failed\n");				if( uStart < pd_U.uFrequency )			{				printf("start frequency too low for selected tuner, set to lowest frequency\n");				uStart = pd_U.uFrequency;			}						if( tunerapiGetProperty(listTunerContext[selectedTuner], TunerApiProperty_TunerHighestFrequency, &pd_U) != RM_OK )				printf("unexpected error, tunerapiGetProperty(TunerHighestFrequency failed\n");				if( uEnd > pd_U.uFrequency )			{				printf("end frequency too high for selected tuner, set to highest frequency\n");				uEnd = pd_U.uFrequency;			}						printf("tunerapiScan() %ld to %ld .....\n", uStart, uEnd);			r = tunerapiScan(listTunerContext[selectedTuner], uStart, uEnd, &scanresult_T);						switch (r)			{			default:			case RM_ERROR:				printf("error\n");				break;							case RM_NOT_FOUND:				printf("no frequencies found\n");				break;							case RM_OK:				printf("found frequency and tuner set to %ld\n", scanresult_T.uFrequency);				break;			}		}						if( (initialFrequency) != 0 )		{			if( tunerapiGetProperty(listTunerContext[selectedTuner], TunerApiProperty_TunerLowestFrequency, &pd_U) != RM_OK )				printf("unexpected error, tunerapiGetProperty(TunerLowestFrequency failed\n");				if( initialFrequency < pd_U.uFrequency )			{				printf("start frequency too low for selected tuner, set to lowest frequency\n");				initialFrequency = pd_U.uFrequency;			}						if( tunerapiGetProperty(listTunerContext[selectedTuner], TunerApiProperty_TunerHighestFrequency, &pd_U) != RM_OK )				printf("unexpected error, tunerapiGetProperty(TunerHighestFrequency failed\n");				if( initialFrequency > pd_U.uFrequency )			{				printf("end frequency too high for selected tuner, set to highest frequency\n");				initialFrequency = pd_U.uFrequency;			}						pd_U.uFrequency = initialFrequency;			//if( (r = tunerapiSetProperty(listTunerContext[selectedTuner], TunerApiProperty_TuneFrequency, &pd_U)) == RM_OK )			if( (r = tunerapiTune(listTunerContext[selectedTuner], initialFrequency)) == RM_OK )				printf("*Tuner %i - Changed to Frequency %li\n", selectedTuner, initialFrequency);			else				printf("!Tuner %i - tunerChangeChannel() to Frequency %li Failed with %d\n", selectedTuner, initialFrequency, r);			{				do				{ 					if( (r = tunerapiGetProperty(listTunerContext[selectedTuner], TunerApiProperty_SignalStatus, &pd_U)) == RM_OK )					{						printf("*Tuner %d - tunerapiGetProperty(SignalStatus) = %s\n", selectedTuner, (pd_U.nSignalStatus==TunerSignalStatus_CarrierOk)?"Locked":"no signal");					}					else					{						printf("!Tuner %d - tunerapiGetProperty(SignalStatus) FAILED %d\n", selectedTuner, r);					}					mum_usleep(1000);				}				while( pd_U.nSignalStatus == TunerSignalStatus_Searching );								if( (r = tunerapiGetProperty(listTunerContext[selectedTuner], TunerApiProperty_TuneFrequency, &pd_U)) != RM_OK )					printf("!Tuner %d - tunerapiGetProperty(TuneFrequency) FAILED %d\n", selectedTuner, r);				else					printf("*Tuner %d - Tune Frequency = %ld, This is only the CENTER, may have offsets(Dvb-T)\n", selectedTuner, pd_U.uFrequency);														if( (r = tunerapiGetProperty(listTunerContext[selectedTuner], TunerApiProperty_SignalStrength, &pd_U)) != RM_OK )					printf("!Tuner %d - tunerapiGetProperty(SignalStrength) FAILED %d, May be ok for ANALOG Tuners\n", selectedTuner, r);				else					printf("*Tuner %d - Signal Strength = %li\n", selectedTuner, pd_U.iSignalStrength);			}		}				if( interactive == FALSE )		{			// DON"T CLOSE TUNER ON EXIT so that we stay tuned to the channel!			closeTunerOnExit = FALSE;			goto main_exit;		}	} // end if (cmd line only application)		// interactive mode	// Right now, this shows you how you can do a RE-OPEN to switch modes quickly.	{		TUNERAPI_CFG tunerapiCfg;			TUNERAPI_PROPERTY_DATA_U pd_U;					memset(&tunerapiCfg, 0, sizeof(TUNERAPI_CFG));		tunerapiCfg.pI2Cal_Context = (TUNERAPI_CONTEXT*) &i2cConfig;		tunerapiCfg.nTunerInput = TunerInput_First;		show_commands();		while(1)		{			printf("> ");			if( fgets( aBuffer, 255, stdin) != NULL )			{				switch( aBuffer[0] )				{				case 'M':					{						// this is the only multimode tuner that I have						printf("*Philips TUV1236D Tuner selected\n");						tunerapiCfg.nTunerModel = TunerModel_Philips_TUV1236D;						tunerapiCfg.I2CAddress[0] = 0x14;						tunerapiCfg.I2CAddress[1] = 0x16;										switch ( aBuffer[2] )						{						case 'b':							tunerapiCfg.nTunerMode = TunerMode_Analog_tvBG;							printf("*Mode Analog tvBG selected\n");							break;						case 'i':							tunerapiCfg.nTunerMode = TunerMode_Analog_tvI;							printf("*Mode Analog tvI selected\n");							break;						case 'd':							tunerapiCfg.nTunerMode = TunerMode_Analog_tvDK;							printf("*Mode Analog tvDK selected\n");							break;						case 'l':							tunerapiCfg.nTunerMode = TunerMode_Analog_tvL;							printf("*Mode Analog tvL selected\n");							break;						case '1':							tunerapiCfg.nTunerMode = TunerMode_Analog_tvL1;							printf("*Mode Analog tvL1 selected\n");							break;						case 'm':							tunerapiCfg.nTunerMode = TunerMode_Analog_tvM;							printf("*Mode Analog tvM selected\n");							break;						case 'j':							tunerapiCfg.nTunerMode = TunerMode_Analog_tvMJapan;							printf("*Mode Analog tvM Japan selected\n");							break;											case 'p':							tunerapiCfg.nTunerMode = TunerMode_Atsc_Parallel;							printf("*Mode Atsc Parallel selected\n");							break;						case 's':							tunerapiCfg.nTunerMode = TunerMode_Atsc_Serial;							printf("*Mode Atsc Serial selected\n");							break;						case 't':							tunerapiCfg.nTunerMode = TunerMode_DvbT_Parallel;							printf("*Mode Dvb-T parallel selected\n");							break;						case 'u':							tunerapiCfg.nTunerMode = TunerMode_DvbT_Serial;							printf("*Mode Dvb-T Serial selected\n");							break;						default:							break;						}												if( tunerapiOpen( &tunerapiCfg, &(listTunerContext[selectedTuner])) != RM_OK )							printf("tunerapiOpen() failed\n");					}					break;									case 'C':					{						sscanf( aBuffer+2, "%ld", &initialFrequency );						if( (r = tunerapiTune(listTunerContext[selectedTuner], initialFrequency)) == RM_OK )							printf("*Tuner %i - Changed to Frequency %li\n", selectedTuner, initialFrequency);						else							printf("!Tuner %i - tunerChangeChannel() to Frequency %li Failed with %d\n", selectedTuner, initialFrequency, r);						{							do							{ 								if( (r = tunerapiGetProperty(listTunerContext[selectedTuner], TunerApiProperty_SignalStatus, &pd_U)) == RM_OK )								{									printf("*Tuner %d - tunerapiGetProperty(SignalStatus) = %s\n", selectedTuner, (pd_U.nSignalStatus==TunerSignalStatus_CarrierOk)?"Locked":"no signal");								}								else								{									printf("!Tuner %d - tunerapiGetProperty(SignalStatus) FAILED %d\n", selectedTuner, r);								}								mum_usleep(1000);							}							while( pd_U.nSignalStatus == TunerSignalStatus_Searching );							if( (r = tunerapiGetProperty(listTunerContext[selectedTuner], TunerApiProperty_TuneFrequency, &pd_U)) != RM_OK )								printf("!Tuner %d - tunerapiGetProperty(TuneFrequency) FAILED %d\n", selectedTuner, r);							else								printf("*Tuner %d - Tune Frequency = %ld, This is only the CENTER, may have offsets(Dvb-T)\n", selectedTuner, pd_U.uFrequency);							if( (r = tunerapiGetProperty(listTunerContext[selectedTuner], TunerApiProperty_SignalStrength, &pd_U)) != RM_OK )								printf("!Tuner %d - tunerapiGetProperty(SignalStrength) FAILED %d, May be ok for ANALOG Tuners\n", selectedTuner, r);							else								printf("*Tuner %d - Signal Strength = %li\n", selectedTuner, pd_U.iSignalStrength);						}					}					break;								case 'q':				case 'Q':					goto main_exit;					break;				} // end switch			}			else			{				show_commands();			} // end if ( fgets() )		}	}	main_exit:	{		RMint32 i;		for( i = 0; i < nTuners; i++ )		{			// If I don't close, I'm leaking memory!			// Obviously for testing only....			if( closeTunerOnExit )			{				MPRINT(("*main Closing Tuners..\n"));				if( (r = tunerapiClose(listTunerContext[i])) != RM_OK )					MPRINT(("main !tunerClose FAILED %d\n", r));			}		}	}		mum_exit(pGBus, pLLAD);		return 0;}void show_commands(void){	printf("\n");	printf("     ? - this screen\n\n");	printf("     q - quit\n\n");}RMvoid show_cmdline(char* appname){	printf("%s [i] [T tuner-type] [C channel-frequency] [M mode] [S scan-start scan-stop] [H] [A low-i2c-address high-i2c-address]\n", appname);	printf("Example: %s T 1 C 56750000 S 56000000 57000000 A 0x14 0x16\n", appname);	printf("\n");	printf("T - 1 = philips tuv1236d\n");	printf("    2 = philips fq1216me\n");	printf("    3 - philips tu1216\n");	printf("\n");	printf("M - b = pal B/G\n");	printf("    i = pal I\n");	printf("    d = pal D/K\n");	printf("    l = L\n");	printf("    1 = L'\n");	printf("    m = ntsc M\n");	printf("    j = ntsc M Japan\n");	printf("    p = ATSC parallel\n");	printf("    s = ATSC serial\n");	printf("    t = DVB-T parallel\n");	printf("    u = DVB-T serial\n");}

⌨️ 快捷键说明

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