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

📄 loadchannels.c

📁 关于嵌入式PCB板UI的程序
💻 C
📖 第 1 页 / 共 4 页
字号:
	short int sFavoriteProgIndex_temp= sFavProgIndex;
	
	pstProgramRecord	= ( PROG_INFO_STRUCT * ) NULL;
	*piProgramNo = INVALID_LINK;
	
	sLocalProgIndex = astProgInfoTable [ sFavoriteProgIndex_temp ].sPrevProgIndex;
	for(;;)
	{
		if ( sFavoriteProgIndex_temp != INVALID_LINK && \
				sLocalProgIndex != INVALID_LINK && \
				astProgInfoTable [ sLocalProgIndex ] .status != ELEMENT_FREE )
		{
			if(astProgInfoTable [ sLocalProgIndex ].bFavoriteStatus== true )
			{
				
				sFavProgIndex = sLocalProgIndex;
				--iFavoriteProgNum_temp;
				iFavProgNumber = iFavoriteProgNum_temp;
				pstProgramRecord 	= &astProgInfoTable [ sFavProgIndex ];
				*piProgramNo	= iFavProgNumber;
				return	pstProgramRecord;
			}
			sFavoriteProgIndex_temp = sLocalProgIndex;
			sLocalProgIndex = astProgInfoTable [ sFavoriteProgIndex_temp ] .sPrevProgIndex;	
			--iFavoriteProgNum_temp;
		}
		else return pstProgramRecord;
	}
}

static SHORT PositionFavoriteProgInfoPos(int iOffset)
{
	int	iLocOffset,iLocOffset_1;
	SHORT	sLocProgIndex;
	if ( sFavProgIndex == INVALID_LINK )
		return	INVALID_LINK;
	
	sLocProgIndex = sFavProgIndex;

	iLocOffset = 0;
	iLocOffset_1 = 0;
	while ( iLocOffset < iOffset )
	{
		sLocProgIndex = astProgInfoTable [ sLocProgIndex ] .sNextProgIndex;
		if ( sLocProgIndex == INVALID_LINK )
			return	INVALID_LINK;
		if(astProgInfoTable[sLocProgIndex].bFavoriteStatus == true)
			++iLocOffset;
		++iLocOffset_1;
	}
	iFavProgNumber += iLocOffset_1;
	sFavProgIndex = sLocProgIndex;
	return	sFavProgIndex;
}

static SHORT PositionFavoriteProgInfoNeg(int iOffset)
{
	int	iLocOffset,iLocOffset_1;
	SHORT	sLocProgIndex;

	if ( sFavProgIndex == INVALID_LINK )
		return	INVALID_LINK;
	
	sLocProgIndex = sFavProgIndex;

	iLocOffset = 0;
	iLocOffset_1 = 0;
	while ( iLocOffset < iOffset )
	{
		sLocProgIndex = astProgInfoTable [ sLocProgIndex ] .sPrevProgIndex;
		if ( sLocProgIndex == INVALID_LINK )
			return	INVALID_LINK;
		if(astProgInfoTable[sLocProgIndex].bFavoriteStatus == true)
			++iLocOffset;
		++iLocOffset_1;
	}
	iFavProgNumber -= iLocOffset_1;
	sFavProgIndex = sLocProgIndex;
	return	sFavProgIndex;
}


/*wuhan added,06-29-2005*/
static TRANSPONDER_INFO_STRUCT	*CurTransInfo(signed char	*pcTransNum)
{
    TRANSPONDER_INFO_STRUCT *pstTransponderRecord;

    /* by default setup	the return pointer info	as NULL*/
    pstTransponderRecord = (TRANSPONDER_INFO_STRUCT *)NULL;
    *pcTransNum = 0;

    if (scTransponderIndex2bRetrieved ==	INVALID_LINK ||	\
        pastTransponderInfoTable[scTransponderIndex2bRetrieved].status == ELEMENT_FREE)
        return pstTransponderRecord;
    
    pstTransponderRecord = &pastTransponderInfoTable[scTransponderIndex2bRetrieved];
    *pcTransNum = scTransponderNumber2bRetrieved;
    return pstTransponderRecord;
	
}

static TRANSPONDER_INFO_STRUCT	*NextTransInfo(signed char *pcTransNum)
{
    TRANSPONDER_INFO_STRUCT *pstTransponderRecord;

    pstTransponderRecord = (TRANSPONDER_INFO_STRUCT *)NULL;
    *pcTransNum = 0;

    if (pastTransponderInfoTable[scTransponderIndex2bRetrieved].cNextTransponderIndex ==	INVALID_LINK)
         return pstTransponderRecord;

    scTransponderIndex2bRetrieved = pastTransponderInfoTable[scTransponderIndex2bRetrieved].cNextTransponderIndex;
    pstTransponderRecord = &pastTransponderInfoTable[scTransponderIndex2bRetrieved];
    *pcTransNum = ++scTransponderNumber2bRetrieved;
    return pstTransponderRecord;
}

static TRANSPONDER_INFO_STRUCT	*PrevTransInfo(signed char *pcTransNum)
{
    TRANSPONDER_INFO_STRUCT *pstTransponderRecord;

    pstTransponderRecord = (TRANSPONDER_INFO_STRUCT *)NULL;
    *pcTransNum = 0;

    if (pastTransponderInfoTable[scTransponderIndex2bRetrieved].cPrevTransponderIndex ==	INVALID_LINK)
        return pstTransponderRecord;
	
    scTransponderIndex2bRetrieved = pastTransponderInfoTable[scTransponderIndex2bRetrieved].cPrevTransponderIndex;
    pstTransponderRecord = &pastTransponderInfoTable[scTransponderIndex2bRetrieved];
	
    *pcTransNum = --scTransponderNumber2bRetrieved;
    return pstTransponderRecord;
}

static signed char PositionTransInfoPos(int iOffset)
{
    int	iLocOffset;
    signed char	cLocTransponderIndex;

    if (scTransponderIndex2bRetrieved ==	INVALID_LINK)
        return INVALID_LINK;
	
    cLocTransponderIndex = scTransponderIndex2bRetrieved;
    iLocOffset = 0;
	
    while (iLocOffset <	iOffset)
    {
        cLocTransponderIndex = pastTransponderInfoTable[cLocTransponderIndex].cNextTransponderIndex;
        if (cLocTransponderIndex == INVALID_LINK)
            return INVALID_LINK;
        ++iLocOffset;
    }
	
    scTransponderIndex2bRetrieved = cLocTransponderIndex;
	scTransponderNumber2bRetrieved += iLocOffset;
	
    return scTransponderIndex2bRetrieved;
}

static signed char PositionTransInfoNeg(int iOffset)
{
    int	iLocOffset;
    signed char	cLocTransponderIndex;

    if (scTransponderIndex2bRetrieved ==	INVALID_LINK)
        return INVALID_LINK;
    cLocTransponderIndex = scTransponderIndex2bRetrieved;
    iLocOffset = 0;
    while (iLocOffset <	iOffset)
    {
        cLocTransponderIndex = pastTransponderInfoTable[cLocTransponderIndex].cPrevTransponderIndex;
        if (cLocTransponderIndex == INVALID_LINK)
            return INVALID_LINK;
        ++iLocOffset;
    }
	
    scTransponderIndex2bRetrieved = cLocTransponderIndex;
	scTransponderNumber2bRetrieved -= iLocOffset;
    return scTransponderIndex2bRetrieved;
}

static int PositionTransInfoTop(void)
{
    if (pstTransponderList->cNoOfValidTransponders <= 0)
    {
	return (int)INVALID_LINK;
    }
    	
    scTransponderIndex2bRetrieved = pstTransponderList->cHeadTransponderIndex;
	scTransponderNumber2bRetrieved = 1;
    return (pstTransponderList->cNoOfValidTransponders);
}


/*wuhan added,06-30-2005*/
static PROG_INFO_STRUCT  *CurProgInfo ( int *piProgramNo )
{
    PROG_INFO_STRUCT *pstProgramRecord;

    pstProgramRecord = (PROG_INFO_STRUCT *)NULL;
    *piProgramNo = INVALID_LINK;

	
    if (sProgIndex != INVALID_LINK && \
         astProgInfoTable[sProgIndex].status != ELEMENT_FREE)
    {
         pstProgramRecord = &astProgInfoTable[sProgIndex];
        *piProgramNo = iProgNumber;
    }
    return pstProgramRecord;
}

static PROG_INFO_STRUCT  *NextProgInfo ( int *piProgramNo )
{
    SHORT sLocalProgIndex;
    PROG_INFO_STRUCT *pstProgramRecord;

    pstProgramRecord = (PROG_INFO_STRUCT *)NULL;
    *piProgramNo = INVALID_LINK;

    sLocalProgIndex = astProgInfoTable[sProgIndex].sNextProgIndex;
    if (sProgIndex != INVALID_LINK && \
	sLocalProgIndex != INVALID_LINK && \
	astProgInfoTable[sLocalProgIndex].status != ELEMENT_FREE)
    {
        sProgIndex = astProgInfoTable[sProgIndex].sNextProgIndex;
        ++iProgNumber;
        pstProgramRecord = &astProgInfoTable[sProgIndex];
        *piProgramNo = iProgNumber;
    }
    return pstProgramRecord;
}

static PROG_INFO_STRUCT  *PrevProgInfo ( int *piProgramNo )
{
    SHORT sLocalProgIndex;
    PROG_INFO_STRUCT *pstProgramRecord;

    pstProgramRecord = (PROG_INFO_STRUCT *)NULL;
    *piProgramNo = INVALID_LINK;
    sLocalProgIndex = astProgInfoTable[sProgIndex].sPrevProgIndex;
    
    if (sProgIndex!= INVALID_LINK && \
        sLocalProgIndex != INVALID_LINK && \
        astProgInfoTable[sLocalProgIndex].status != ELEMENT_FREE)
    {
        sProgIndex = astProgInfoTable[sProgIndex].sPrevProgIndex;
        --iProgNumber;
        pstProgramRecord = &astProgInfoTable[sProgIndex];
        *piProgramNo = iProgNumber;

    }
    return pstProgramRecord;
}

static int PositionProgInfoTop ( void )
{
    	if (ProgramList->NoOfValidPgms <= 0)
    	{
        	return (int)INVALID_LINK;
    	}
    	sProgIndex = ProgramList->HeadProgIndex;
	/*AL15 Start*/
	#if 1
    	iProgNumber = 1;
	#else
	//iProgNumber = astProgInfoTable[sProgIndex].stProgNo.unShort.sLo16;
	iProgNumber = 1;
	#endif
	/*AL15 End*/
    	return (ProgramList->NoOfValidPgms);
}

SHORT  	PositionProgInfoNeg ( int iOffset )
{
    	int iLocOffset;
    	SHORT sLocProgIndex;

   	if (sProgIndex == INVALID_LINK)
        	return INVALID_LINK;
    	sLocProgIndex = sProgIndex;
    	iLocOffset = 0;
    	while (iLocOffset < iOffset)
	{
        	sLocProgIndex = astProgInfoTable[sLocProgIndex].sPrevProgIndex;
		/*AL15 Start*/
		#if 1
        	if (sLocProgIndex == INVALID_LINK)
            		return INVALID_LINK;
        	++iLocOffset;
		#else
		if (sLocProgIndex == INVALID_LINK)
			sLocProgIndex = ProgramList->TailProgIndex;
		++iLocOffset;
		#endif
		/*AL15 End*/
    	}
	/*AL15 Start*/
	#if 1
    	iProgNumber -= iOffset;
	#else
	//iProgNumber = astProgInfoTable[sLocProgIndex].stProgNo.unShort.sLo16;
	iProgNumber -= iOffset;
	if(iProgNumber <= 0)
		iProgNumber = ProgramList->NoOfValidPgms-(iOffset-(iProgNumber+iOffset-1))+1;
	#endif
	/*AL15 End*/
    	sProgIndex = sLocProgIndex;
	
    	//iProgNumber = astProgInfoTable[sProgIndex].stProgNo.unShort.sLo16;
    	return sProgIndex;

}

static SHORT  	PositionProgInfoPos ( int iOffset )
{
    	int iLocOffset;
    	SHORT sLocProgIndex;

    	if (sProgIndex == INVALID_LINK)
        	return INVALID_LINK;
    	sLocProgIndex = sProgIndex;
    	iLocOffset = 0;
    	while (iLocOffset < iOffset)
    	{
        	sLocProgIndex = astProgInfoTable[sLocProgIndex].sNextProgIndex;
		/*AL15 Start*/
		#if 1
        	if (sLocProgIndex == INVALID_LINK)
            		return INVALID_LINK;
		#else
		if (sLocProgIndex == INVALID_LINK)
			sLocProgIndex = ProgramList->HeadProgIndex;
		#endif
		/*AL15 End*/
        	++iLocOffset;
    	}
	/*AL15 Start*/
	#if 1
   	iProgNumber += iOffset;
	#else
	//iProgNumber = astProgInfoTable[sLocProgIndex].stProgNo.unShort.sLo16;
	iProgNumber += iOffset;
	if(iProgNumber > ProgramList->NoOfValidPgms)
		iProgNumber = iOffset - (ProgramList->NoOfValidPgms-(iProgNumber - iOffset));
	#endif
	/*AL15 End*/
    	sProgIndex = sLocProgIndex;
    	return sProgIndex;
}

#if 0
int PositionFavoriteProgInfoTop(void)
{	
	int 	index;
	int	iProgNo;
	int 	iValidProgNum;
	TEST_PROG_INFO_STRUCT 	*pstProgInfoTemp;
	
	if((iValidProgNum = SRDBE_PositionProgInfoTop ())==INVALID_LINK)
		return (int)INVALID_LINK;
	pstProgInfoTemp = SRDBE_CurProgInfo(&iProgNo);
	if(SRDBE_IsProgFavorite(iProgNo))
		return (int)iValidProgNum;
	for(index = 1;index < iValidProgNum;index ++)
	{
		pstProgInfoTemp = SRDBE_NextProgInfo(&iProgNo);
		if(SRDBE_IsProgFavorite(iProgNo))
			return (int)iValidProgNum;
	}
	return (int)INVALID_LINK;
	
}

PROG_INFO_STRUCT	*NextFavoriteProgInfo(int *piProgramNo)
{
	int 	index;
	TEST_PROG_INFO_STRUCT 	*pstProgInfoTemp;

	while(1)
	{
		if((pstProgInfoTemp = SRDBE_NextProgInfo(piProgramNo)) == NULL)
			return NULL;
		if(SRDBE_IsProgFavorite(*piProgramNo))
			return  &pstProgInfoTemp;
	}
	return NULL;
}
PROG_INFO_STRUCT  	*PrevFavoriteProgInfo ( int *piProgramNo )
{
	int 	index;
	TEST_PROG_INFO_STRUCT 	*pstProgInfoTemp;

	while(1)
	{
		if((pstProgInfoTemp = SRDBE_PrevProgInfo(piProgramNo)) == NULL)
			return NULL;
		if(SRDBE_IsProgFavorite(*piProgramNo))
			return  &pstProgInfoTemp;
	}
	return NULL;
}

SHORT PositionFavoriteProgInfoPos(int iOffset)
{
	int iLocOffset = 0;
	int iLocOffset_1 = 0;
	SHORT sLocProgIndex = sProgIndex2bRetrieved; 
	if(sLocProgIndex == INVALID_LINK)
		return  INVALID_LINK;

	while ( iLocOffset < iOffset )
	{
		sLocProgIndex = astProgInfoTable [ sLocProgIndex ] .sNextProgIndex;
		if ( sLocProgIndex == INVALID_LINK )
			return	INVALID_LINK;
		if(astProgInfoTable[sLocProgIndex].bFavoriteStatus == true)
			++iLocOffset;
		++iLocOffset_1;
	}
}
SHORT PositionFavoriteProgInfoNeg(int iOffset)
{
}
#endif
/*****************************END*********************************/

⌨️ 快捷键说明

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