stb0899_tst_main.c

来自「通过PC并口模拟I2C信号」· C语言 代码 · 共 422 行 · 第 1/2 页

C
422
字号
//仼乭Handle乭偑侽丠丠丠
	
	/* Display results	*/
	if(Results.Locked==TRUE)
	{
//				/* successfull */
//				printf("Transponder locked\r\n");
//				FE_STB0899_GetSignalInfo(Handle,&pInfo);
//				printf("Frequency (KHz) = %d\r\n",pInfo.Frequency); 
//				printf("Symbol rate (Bds) = %d\r\n",pInfo.SymbolRate); 
//				
//				
//				if((Params.Standard==FE_DVBS1_STANDARD)||(Params.Standard==FE_DSS_STANDARD))
//					printf("Rate = %s\r\n",FEC_RATES[GetFecRate(pInfo.Rate)]);
//				else
//					printf("ModCode = %s\r\n",ModCodes[pInfo.ModCode]);
//				
//				printf("Signal Power = %d dBm\r\n",pInfo.Power);
//				printf("C/N = %f dBm\r\n",(double)pInfo.C_N/10.0);
//				printf("BER = %f e-7\r\n",(double)pInfo.BER);   /*BER for DVBS1, PER for DVBS2*/
//				
//				if(pInfo.SpectralInv==0)
//					printf("Spectrum IQ  Not Swapped");
//				else
//					printf("Spectrum IQ  Swapped");
			
			
	}
	else
	{
//				/* unsuccessfull */
//				printf("Transponder not found\r\n");
//				printf("Error = %s\r\n",ErrorMessages[Error]);  
	}
	
	
	/*****************************************/
	/*			TERMINATION					 */
	/*****************************************/
	
//			Handle = FE_STB0899_Term(Handle);
//
// 			getchar();

//	return 0;

	message("STB0899_tst_main END!!");


}


FE_STB0899_Error_t Cdemod::FE_STB0899_Search(FE_STB0899_Handle_t Handle, FE_STB0899_SearchParams_t *pSearch, FE_STB0899_SearchResult_t *pResult)
{
message("<<FE_STB0899_Search>>");

//MessageBox("<<FE_STB0899_Search>>");

//message_box("<<FE_STB0899_Search>>");

	FE_STB0899_Error_t error = FE_NO_ERROR;
	FE_STB0899_InternalParams_t *pParams;
	
	char message[100];


//CString t; t.Format("Handle != NULL=%d",Handle != NULL); MessageBox(t);


	if(Handle != NULL)
	{

		pParams = (FE_STB0899_InternalParams_t *) Handle; 

//				FE_STB0899_SetInternalError(FE_IERR_NO,FE_LOC_NOWHERE,&pParams->Error);

		pParams->Standard=pSearch->Standard;
		if(	(INRANGE(1000000,pSearch->SymbolRate,45000000)) && (INRANGE(1000000,pSearch->SearchRange,50000000))			)
		{
			
//message_box("侾");

			FE_STB0899_SetStandard(pParams->hDemod,pSearch->Standard);

//message_box("侾.");
			

//					/*Set tuner Gain */
//					if(pSearch->SymbolRate > 15000000)			  
//						TunerSetGain(pParams->hTuner,8);			/* 15Msb<symbolrate<45Msb  ==> G = 8db*/
//					else 
//						if(pSearch->SymbolRate > 5000000)
//							TunerSetGain(pParams->hTuner,12);		/* 5Msb<symbolrate<15Msb  ==> G = 12db*/
//					else
//						TunerSetGain(pParams->hTuner,14);			/* 1Msb<symbolrate<5Msb  ==> G = 14db*/

			switch(pSearch->Standard) 
			{
				case FE_DVBS1_STANDARD:
				case FE_DSS_STANDARD:
//						
//							/* Fill pParams structure with search parameters */
//							pParams->BaseFreq = pSearch->Frequency;	
//							pParams->SymbolRate = pSearch->SymbolRate;
//							pParams->SearchRange = pSearch->SearchRange;
//							pParams->DerotPercent = 10;
//							TunerSetBandwidth(pParams->hTuner,CarrierWidth(pParams->SymbolRate,pParams->RollOff) + 10000000);
//							pParams->TunerBW = TunerGetBandwidth(pParams->hTuner);
//							
//							/*Set DVB-S1 AGC*/
//							ChipSetOneRegister(pParams->hDemod,RSTB0899_AGCRFCFG,0x11);
//
//							
//							/* Run the search algorithm */
//							if((FE_STB0899_Algo(pParams) == RANGEOK) && (pParams->hDemod->Error == CHIPERR_NO_ERROR))
//								{
//									pResult->Locked = TRUE;
//							
//									/* update results */
//									pResult->Frequency = pParams->Results.Frequency;			
//									pResult->SymbolRate = pParams->Results.SymbolRate;										
//									pResult->Rate = pParams->Results.PunctureRate;
//								}
//								else
//								{
//									pResult->Locked = FALSE;
//							
//									switch(pParams->Error.Type)
//									{
//										case FE_IERR_I2C:				/*	I2C error	*/
//											error = FE_I2C_ERROR;
//										break;
//						
//										case FE_IERR_NO:
//										default:
//											error = FE_SEARCH_FAILED;
//										break;
//									}
//								}
//							break;
//						
				case FE_DVBS2_STANDARD:
////message_box("FE_DVBS2_STANDARD");
//message_box("俀:FE_DVBS2_STANDARD");
					/* Fill pParams structure with search parameters */
					pParams->Frequency = pSearch->Frequency;
					pParams->BaseFreq = pSearch->Frequency;
					pParams->DVBS2SymbolRate = pSearch->SymbolRate;
					pParams->SpectralInv=pSearch->IQ_Inversion;
			
					pParams->SearchRange = pSearch->SearchRange;

//							TunerSetBandwidth(pParams->hTuner,FE_DVBS2_CarrierWidth(pParams->DVBS2SymbolRate,pParams->RrcAlpha) + 10000000);
//							pParams->TunerBW = TunerGetBandwidth(pParams->hTuner);

					/*Set DVB-S2 AGC*/
					ChipSetOneRegister(pParams->hDemod,RSTB0899_AGCRFCFG,0x1c);
//message_box("俁");
					/* Run the DVBS2  search algorithm */

					if(FE_STB0899_DVBS2Algo(pParams))//僥僗僩

//					if((FE_STB0899_DVBS2Algo(pParams) == FE_DVBS2_DATAOK) && (pParams->hDemod->Error == CHIPERR_NO_ERROR))
					{
//message_box("係侽");
						pResult->Locked = TRUE;
					
						/* update results */
						pResult->Frequency 		= pParams->Results.Frequency;			
						pResult->SymbolRate 	= pParams->Results.DVBS2SymbolRate;										
						pResult->ModCode 		= pParams->Results.ModCode;
						pResult->Pilots 		= pParams->Results.Pilots;
						pResult->FrameLength 	= pParams->Results.FrameLength;
						
					}
					else
					{
//message_box("係侾");
						pResult->Locked = FALSE;
				
						switch(pParams->Error.Type)
						{
							case FE_IERR_I2C:				/*	I2C error	*/
								error = FE_I2C_ERROR;
							break;
				
							case FE_IERR_NO:
							default:
								error = FE_SEARCH_FAILED;
							break;
						}
					}

	
	break;
	
				default:
					error = FE_BAD_PARAMETER;
				break;
			}
		
		}
			else
				error = FE_BAD_PARAMETER;
	
	}
	else
		error=FE_INVALID_HANDLE;
		

	return error;

⌨️ 快捷键说明

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