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

📄 sn15test.c

📁 ST5100 driver files for ST chipset
💻 C
📖 第 1 页 / 共 5 页
字号:

		case MAINMENU_TESTCODE:
		
					
		default:
			/* ANYMENU_EXIT */;
			
		}
		TestsnimPrintStatusHdr();
	}
#endif
	


}


/************************Zarlink Semiconductor*********************************
*   Name:TestsnimGetMenuChoice()
*   Purpose:Displays a menu and gets a command from the user;
*   Remarks:
* 
*   Inputs:pointer to menu structure
*
*   Outputs:returns when user selects valid menu option or 0
*
********************************************************************************/


int TestsnimGetMenuChoice(pMenuType pMenu)
{
	printSn15Console("\n    %s\n    0    Exit this menu%s\n",pMenu->title,pMenu->text);
	return TestsnimGetKBnumber("Selection",pMenu->minval,pMenu->maxval,TRUE);

}
/************************Zarlink Semiconductor*********************************
*   Name:TestsnimPrintStatusHdr()
*   Purpose:Prints a header for the status line
*   Remarks:
* 
*   Inputs:
*
*   Outputs:
*
********************************************************************************/

void TestsnimPrintStatusHdr(void)
{
    PSSNIMCTL pSnim = ( PSSNIMCTL) g_hTheSnim;
    PSZL1003X pTuner = (PSZL1003X)(pSnim->hTuner);
	printSn15Console("\n__________________________________oOo__________________________________\n");
#if defined(DOS)
	printSn15Console( "\n****************************************************************"
			"\nWARNING:\nThis program cannot function correctly"
			"\nwhen run under under MS Windows NT/2000/XP"
			"\n****************************************************************");
#endif

#if	defined (DOS)||defined(_CONSOLE)
	printSn15Console("\nPort:           %4s(%s).",g_strPort,g_isPortOpen?"Open":"Closed");
#endif

	/* versions */
#if defined(WIN32) || defined(DOS)
	printSn15Console("\n\n%s\nCrystal Frequency = %5d kHz",SnimReadDriverVersion(SNIM_VERSION_TUNER),pTuner->XtalkHz);
	printSn15Console("\n\n%s\nCrystal Frequency = %5d kHz",SnimReadDriverVersion(SNIM_VERSION_SNIM),pSnim->XtalkHz);
#else
	printSn15Console("\n\n%s",SnimReadDriverVersion(SNIM_VERSION_TUNER));
	printSn15Console("\n\n%s",SnimReadDriverVersion(SNIM_VERSION_SNIM));
#endif
	

/* lnb type */
	if (pSnim->Lnb.LoBandLO==0 && pSnim->Lnb.LoHiSwap==0)
		printSn15Console("\n\nLNB:            %d MHz.",pSnim->Lnb.HiBandLO);
	else
		printSn15Console("\n\nLNB:            %dMHz & %dMHz (Universal).",
			pSnim->Lnb.LoBandLO,pSnim->Lnb.HiBandLO);
	
	printSn15Console(	"\n\n\nPress any key to access menu"
			"\n  State   Sat Pol  fMHz (Ft MHz) "
		);
  if (g_isScanning)
	  printSn15Console("%d - %dMHz,%d - %d Msym/sec\n",
		pSnim->wScanStart,pSnim->wScanStop,pSnim->ucScanRsMin/4,pSnim->ucScanRsMax/4 );
  else
	  printSn15Console(" MS/s  CR  eBN0  AGC ( wait) Vit.BER\n");
	  
  




}



/************************Zarlink Semiconductor*********************************
*   Name:TestsnimSetLNB() 
*   Purpose:allows user to select LNB type to use
*   Remarks:
* 
*   Inputs:
*
*   Outputs:
*
********************************************************************************/
void TestsnimSetLNB(void)
{
	SSnimLnb lnb = {0};

	lnb.LoBandLO=0;
	lnb.LoHiSwap=0;
	lnb.Delay_ms = 10;
	switch (TestsnimGetMenuChoice(&g_LNBMenu))
	{
		case  SNIM_LNB1:lnb.HiBandLO=10600;
						lnb.LoBandLO=9750;
						lnb.LoHiSwap=11700;
						break;
		case  SNIM_LNB2:lnb.HiBandLO=11250;break;
		case  SNIM_LNB3:lnb.HiBandLO=10600;break;
		case  SNIM_LNB4:lnb.HiBandLO=10750;break;
		case  SNIM_LNB5:lnb.HiBandLO=11300;break;
		case  SNIM_LNB6:lnb.HiBandLO=11475;break;
		case  SNIM_LNB7:lnb.HiBandLO=10000;break;
		case  SNIM_LNB8:lnb.HiBandLO=9750;break;
		case  SNIM_LNB9:lnb.HiBandLO=5150;break;
		case  SNIM_LNB10:lnb.HiBandLO=3650;break;
					
						
		default:/* error keep the original*/
				return;
	}
	
	SnimSetLnb(g_hTheSnim,&lnb);
	

}


/************************Zarlink Semiconductor*********************************
*   Name:TestsnimClearChannelList()
*   Purpose:emptyies the channel list 
*   Remarks:
* 
*   Inputs:
*
*   Outputs:
*
********************************************************************************/
void TestsnimClearChannelList(void)
{
	
	pScanItem pFree= NULL;
	while( g_pScanListHead !=NULL)
	{
		
		pFree=g_pScanListHead;
		g_pScanListHead=pFree->pNext;
		free(pFree);

	}
	g_pScanListHead=NULL;
	g_ChannelCount=0;
	g_pScanListTail=NULL;

}

/************************Zarlink Semiconductor*********************************
*   Name:TestsnimAddChannel()
*   Purpose:adds a channel to the channel list
*   Remarks:
* 
*   Inputs:
*
*   Outputs:returns FALSE if memory runs out
*
********************************************************************************/
BOOL TestsnimAddChannel(PSSNIMCHANNEL pChannel,Uint32T dwTunerFreq,Uint16T wAGC, Uint8T ucEbno)
{
	
	pScanItem pNext; /* new location we are creating*/
	
	pNext = (pScanItem)malloc(sizeof(struct scanitem));
	if (pNext==NULL)
	{
		printSn15Console("\nOut of memory");
		return FALSE; /* out of memory*/
	}

	/*add the channel to the end of the list*/
	pNext->pNext=NULL;
	pNext->Channel=*pChannel;
	pNext->dwTunerFreq = dwTunerFreq;
    	pNext->ucEBn0 = ucEbno;
   	pNext->wAGC = wAGC;
	
	if (g_pScanListHead==NULL)
		g_pScanListHead=pNext;
	else
		g_pScanListTail->pNext = pNext;
	
	g_pScanListTail = pNext; /* becomes the last entry*/
	g_ChannelCount++;
	return TRUE;
}

#ifdef _BLIND_SCAN_
void Snim_Drv_StartBlindScan(void *ScanRange)
{
	SSnimLnb lnb;
	BlindChannel *ChannelScanRange;

	
	ChannelScanRange =(BlindChannel*)ScanRange;

	
	lnb.HiBandLO=ChannelScanRange->HiBandLO;
	lnb.LoBandLO=ChannelScanRange->LoBandLO;
	lnb.LoHiSwap=ChannelScanRange->LoHiSwap;
	lnb.Delay_ms = 10;
	
	if(ChannelScanRange->mAntenaType !=0)//universal 1,2
	{		
		switch (ChannelScanRange->mAntenaType)
		{
			case  SNIM_LNB1:lnb.HiBandLO=10600;
				lnb.LoBandLO=9750;
				lnb.LoHiSwap=11700;
				break;
			case  SNIM_LNB2:lnb.HiBandLO=10750;
				lnb.LoBandLO=9750;
				lnb.LoHiSwap=11700;
				break;		
		}
	}	

	SnimSetLnb(g_hTheSnim,&lnb);

	//SnimWrite(g_hTheSnim, SNIM_DATA_DISEQCOPTIONS, /*SNIM_DISOPT_SATELLITE | */ /**/SNIM_DISOPT_BANDSWITCH |SNIM_DISOPT_POLARISATION);
	SnimWrite(g_hTheSnim, SNIM_DATA_DISEQCOPTIONS, SNIM_DISOPT_POLARISATION); 
	/* get satellite */
	if (((ChannelScanRange->mSearchOption >>4)&0x3)==0x3)
	{
		//printSn15((">>>>[Snim_Drv_StartBlindScan] SNIM_OPTION_SATA|SNIM_OPTION_SATB\n"));
		SnimWrite(g_hTheSnim,SNIM_DATA_SCAN_OPTIONS,SNIM_OPTION_SATA|SNIM_OPTION_SATB); 
	}
	else if (((ChannelScanRange->mSearchOption >>4)&0x3)==0x2)
	{
		//printSn15((">>>>[Snim_Drv_StartBlindScan] SNIM_OPTION_SATB\n"));
		SnimWrite(g_hTheSnim,SNIM_DATA_SCAN_OPTIONS, SNIM_OPTION_SATB); 
	}
	else if (((ChannelScanRange->mSearchOption >>4)&0x3)==0x1)
	{
		//printSn15((">>>> SNIM_OPTION_SATA\n"));
		SnimWrite(g_hTheSnim,SNIM_DATA_SCAN_OPTIONS, SNIM_OPTION_SATA); 
	}
	else
		SnimWrite(g_hTheSnim,SNIM_DATA_SCAN_OPTIONS, SNIM_OPTION_SATA|SNIM_OPTION_SATB); 

	//printSn15((">>>[Snim_Drv_StartBlindScan] ChannelScanRange->StartFR : %d\n",ChannelScanRange->StartFR));
	//printSn15((">>>[Snim_Drv_StartBlindScan] ChannelScanRange->StopFR : %d\n",ChannelScanRange->StopFR));
	//printSn15((">>>[Snim_Drv_StartBlindScan] ChannelScanRange->StartSR : %d\n",ChannelScanRange->StartSR));
	//printSn15((">>>[Snim_Drv_StartBlindScan] ChannelScanRange->StopSR : %d\n",ChannelScanRange->StopSR));
	
	SnimWrite(g_hTheSnim,SNIM_DATA_SCAN_STARTFREQ, (Sint32T)ChannelScanRange->StartFR/* TestsnimGetKBnumber("Start frequency MHz",940,16000,FALSE)*/);
	SnimWrite(g_hTheSnim,SNIM_DATA_SCAN_STOPFREQ, (Sint32T)ChannelScanRange->StopFR/*TestsnimGetKBnumber("Stop frequency MHz",SnimRead(g_hTheSnim,SNIM_DATA_SCAN_STARTFREQ),16000,FALSE)*/);
	SnimWrite(g_hTheSnim,SNIM_DATA_SCAN_STARTSYMB,(Sint32T)ChannelScanRange->StartSR/*TestsnimGetKBnumber("Min symbol rate(1-45)MS/sec",1,45,FALSE)*/);
	SnimWrite(g_hTheSnim,SNIM_DATA_SCAN_ENDSYMB,(Sint32T)ChannelScanRange->StopSR/*TestsnimGetKBnumber("Max symbol rate(1-45)MS/sec",1,45,FALSE)*/);

	{
        	SnimCommand(g_hTheSnim,SNIM_COMMAND_SCAN_START);
	}
}
#endif

/************************Zarlink Semiconductor*********************************
*   Name:TestsnimStartScan()
*   Purpose:Starts a scan 
*   Remarks:
* 
*   Inputs:
*
*   Outputs:
*
********************************************************************************/
void TestsnimStartScan(void)
{
	TestsnimClearChannelList();

#if 0
/* get satellite */
	switch(TestsnimGetMenuChoice(&g_ScanSatMenu))
	{
		case SCANSATMENU_A:SnimWrite(g_hTheSnim,SNIM_DATA_SCAN_OPTIONS,SNIM_OPTION_SATA); break;
		case SCANSATMENU_B:SnimWrite(g_hTheSnim,SNIM_DATA_SCAN_OPTIONS,SNIM_OPTION_SATB); break;
		case SCANSATMENU_AB:SnimWrite(g_hTheSnim,SNIM_DATA_SCAN_OPTIONS,SNIM_OPTION_SATA|SNIM_OPTION_SATB); break;
		case SCANSATMENU_NONE:break;
		default:/* exit */ return;
	}
#endif

	SnimWrite(g_hTheSnim,SNIM_DATA_SCAN_OPTIONS,SNIM_OPTION_SATA|SNIM_OPTION_SATB); 
/* get frequency range */
	SnimWrite(g_hTheSnim,SNIM_DATA_SCAN_STARTFREQ, 12200/* TestsnimGetKBnumber("Start frequency MHz",940,16000,FALSE)*/);
	SnimWrite(g_hTheSnim,SNIM_DATA_SCAN_STOPFREQ, 12700/*TestsnimGetKBnumber("Stop frequency MHz",SnimRead(g_hTheSnim,SNIM_DATA_SCAN_STARTFREQ),16000,FALSE)*/);
	SnimWrite(g_hTheSnim,SNIM_DATA_SCAN_STARTSYMB,22/*TestsnimGetKBnumber("Min symbol rate(1-45)MS/sec",1,45,FALSE)*/);
	SnimWrite(g_hTheSnim,SNIM_DATA_SCAN_ENDSYMB,31/*TestsnimGetKBnumber("Max symbol rate(1-45)MS/sec",1,45,FALSE)*/);

	
	//if(TestsnimGetMenuChoice(&g_ConfirmScanMenu)) 
	{
        	SnimCommand(g_hTheSnim,SNIM_COMMAND_SCAN_START);
		g_isScanning=TRUE;
	}
		
	
}

/************************Zarlink Semiconductor*********************************
*   Name:TestsnimPrintChannelList()
*   Purpose: displays list of channels in scan 
*   Remarks:
* 
*   Inputs:
*
*   Outputs:
*
********************************************************************************/
void TestsnimPrintChannelList(void)
{
	pScanItem pNext = g_pScanListHead;
	Uint32T count =0;
	Uint16T line =0;


	while (pNext)
	{


		printSn15Console("\n%4lu %5u  %2d.%03d  %d/%d %s %d ",
			++count,
			pNext->Channel.MHz,
			RS_INT(pNext->Channel.kRs),
			RS_FRAC(pNext->Channel.kRs),
			pNext->Channel.ucExt & SCHANNELEXT_CODERATE,(pNext->Channel.ucExt & SCHANNELEXT_CODERATE)+1,
			(pNext->Channel.ucExt & SCHANNELEXT_HORIZONTAL )?"H":"V",			
			pNext->Channel.ucSat+1);

		pNext=pNext->pNext;
		if (line++>20)
		{
			printSn15Console("\nPress a key to continue...");
			until(TestsnimKBHit()){line=0;};
		}
	}
}







/************************Zarlink Semiconductor*********************************
*   Name:TestDumpRegisters()
*   Purpose:dumps register contents to a file
*   Remarks:
* 
*   Inputs:
*
*   Outputs:
*
********************************************************************************/
void TestDumpRegisters(void)
{
#if defined(_CONSOLE)||defined(DOS)
	Uint8T ucBuffer;
	int x;
	FILE* hFile;
	char szFile[80];
	printSn15Console("\nFilename e.g.\"c:\\temp\\dump.txt\">");
	TestsnimGets(szFile,sizeof(szFile)-1);

	hFile = fopen (szFile,"w");
	if (hFile!=NULL)
	{
		for (x = 0;x<128;x++)
		{
			RegisterRead2wb(((PSSNIMCTL)g_hTheSnim)->ucAddress,Uint8T(x),&ucBuffer,1);
			fprintf(hFile,"0x%02X,0x%02X\n",x,ucBuffer );
		}
		fclose(hFile);
		printSn15Console ("\nRegisters dumped to file\n\n",szFile);
	}
	else
	{
		printSn15Console("\nUnable to open file \"%s\"\n\n",szFile);
	}
#else
	printSn15Console ("\nFunction \"TestDumpRegisters not supported()\"\n");
#endif

#if defined(_CONSOLE)
	Sleep(2000);
#elif defined(DOS)
	delay(2000); /* splash screen delay */
#endif


}/************************Zarlink Semiconductor*********************************
 *   Name:TestsnimSetXtal()
 *   Purpose:choose the crystals used by the demod and tuner
 *   Remarks:
 * 
 *   Inputs:
 *
 *   Outputs:
 *
 ********************************************************************************/
void TestsnimSetXtal(void)
{
#if defined(WIN32)||defined(DOS)
	Uint16T temp;
    PSZL1003X pTuner =(PSZL1003X)((PSSNIMCTL)g_hTheSnim)->hTuner ;

⌨️ 快捷键说明

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