📄 sn15test.c
字号:
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 + -