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

📄 dvb_db.c

📁 DVB软件,基于CT216软件的开发源程序.
💻 C
📖 第 1 页 / 共 4 页
字号:
	{
//		s16NumOfItems = u16ServiceEndIdx-u16ServiceStartIdx+1;//u16ServiceTotalNum;//DVB_ServiceGetTotal(enSrvType);

		for(u16idx=u16ServiceStartIdx;u16idx<=u16ServiceEndIdx;u16idx++)
		{
			DVB_ServiceRead (_enSrvType, *(pu16SortIdx+u16idx), &pgmItem);
			
			    // skip control byte
			 if(pgmItem.acServiceName[0]<0x20)
			 {
			     pu8string1 = &pgmItem.acServiceName[1];
			 }
			 else
			 {
			      pu8string1 = pgmItem.acServiceName;
			 }	  
			strcpy(acServiceNameTemp,pu8string1);
//			for(i=0;*(acServiceNameTemp+i)!=NULL;i++)
			for(i=0;*(acServiceNameTemp+i)!='\0';i++)
			{
				if(*(acServiceNameTemp+i)>='a'&&*(acServiceNameTemp+i)<='z')
				{
					*(acServiceNameTemp+i)=*(acServiceNameTemp+i)-('a'-'A');
				}	
			}
			
			  if(strstr(acServiceNameTemp,pu8SubString)!=NULL)
			  {
				*pu16idx = u16idx;
				return TRUE;	
			  }
		}

	}
	else
	{

//		s16NumOfItems = u16ServiceStartIdx-u16ServiceEndIdx+1;
		for(u16idx=u16ServiceStartIdx+1;u16idx>u16ServiceEndIdx;u16idx--)
		{
			DVB_ServiceRead (_enSrvType, *(pu16SortIdx+u16idx-1), &pgmItem);
			
			    // skip control byte
			 if(pgmItem.acServiceName[0]<0x20)
			 {
			     pu8string1 = &pgmItem.acServiceName[1];
			 }	
			 else
			 {
			      pu8string1 = pgmItem.acServiceName;
			 }
			strcpy(acServiceNameTemp,pu8string1);
//			for(i=0;*(acServiceNameTemp+i)!=NULL;i++)
			for(i=0;*(acServiceNameTemp+i)!='\0';i++)
			{
				if(*(acServiceNameTemp+i)>='a'&&*(acServiceNameTemp+i)<='z')
				{
					*(acServiceNameTemp+i)=*(acServiceNameTemp+i)-('a'-'A');
				}	
			}

			  if(strstr(acServiceNameTemp,pu8SubString)!=NULL)
			  {
				*pu16idx = (u16idx-1);
				return TRUE;	
			  }
		}
	}
	return FALSE;	
}

/*******************************************************************************************/          




//------------------Neal add for string search------------------

int service_id_compare(unsigned pu16idx1, unsigned pu16idx2)
{
#ifndef NO_SATELLITE
	DB_TpDetailEx	stTpDetail1, stTpDetail2;
	DB_TpRel		stTpRel1, stTpRel2;
#endif
	
	DVB_ServiceRead (enSrvType, Address2Idx(pu16idx1), &pgmItem);
	DVB_ServiceRead (enSrvType, Address2Idx(pu16idx2), &pgmItem2);

	//DB_DBG(("sid_a %d, sid_b %d\n", pgmItem.u16ServiceId, pgmItem2.u16ServiceId));
#ifdef NO_SATELLITE
	return (pgmItem.u16ServiceId-pgmItem2.u16ServiceId);
#else
	DVB_TPReadDetailEx(pgmItem.u8TransponderIndex , &stTpDetail1, &stTpRel1);
	DVB_TPReadDetailEx(pgmItem2.u8TransponderIndex, &stTpDetail2, &stTpRel2);
    
    if(stTpRel1.u16SatIdx==stTpRel2.u16SatIdx)
    {
    	return (pgmItem.u16ServiceId-pgmItem2.u16ServiceId);
    }	
    else
    {
        return (stTpRel1.u16SatIdx-stTpRel2.u16SatIdx);
    }	
#endif	
}
/*******************************************************************************************/          

#ifdef TUI
//wilson const char* cs --> const u8* cs, for double byte language compare
int strcmpex(const u8 * cs,const u8 * ct)
{
	register s16 __res;

	//u8* p1=cs;
	//u8* p2=ct;

	while (1) 
	{
		if ((__res = *cs - *ct++) != 0 || !*cs++)
		{
			/*if( *p1 == 0xCE)
			{
				DB_DBG(("cmp:__res=%X,*cs=%X,*ct=%d\n", __res, *cs--, *ct--));
				DB_DBG(("p1=%s\n", (char*)p1));
				DB_DBG(("p2=%s\n", (char*)p2));
			}*/
			break;
		}
	}

	return __res;
}
#endif
/*******************************************************************************************/          

//added by shawn, for channel list sort by frequency
#ifdef TUI
int Channel_freq_compare(unsigned pu16idx1, unsigned pu16idx2)
{
	DB_TpDetailEx	stTpDetail1,stTpDetail2;
	DB_TpRel		stTpRel1,stTpRel2;
	
	DVB_ServiceRead (enSrvType, Address2Idx(pu16idx1), &pgmItem);
	DVB_ServiceRead (enSrvType, Address2Idx(pu16idx2), &pgmItem2);

	 if(pgmItem.acServiceName[0]<0x20)
	 {
     	  pu8string1 = &pgmItem.acServiceName[1];
	 }		  
   	 else
   	 {
     	  pu8string1 = pgmItem.acServiceName;
   	 }   
   	 if(pgmItem2.acServiceName[0]<0x20)
   	 {
     	  pu8string2 = &pgmItem2.acServiceName[1];
   	 }			   
   	 else
   	 {
      	  pu8string2 = pgmItem2.acServiceName;
   	 }


	DVB_TPReadDetailEx(pgmItem.u8TransponderIndex, &stTpDetail1, &stTpRel1);
	DVB_TPReadDetailEx(pgmItem2.u8TransponderIndex, &stTpDetail2, &stTpRel2);

	//wilson for not compare service name while in same freq
	
	if(stTpDetail1.tpCable.u32FrequencyKHz==stTpDetail2.tpCable.u32FrequencyKHz)
	{
    		//return strcmp(pu8string1, pu8string2);	//wilson for double byte language compare
    	return strcmpex(pu8string1, pu8string2);
	}		
	else
	{
       	return (stTpDetail1.tpCable.u32FrequencyKHz-stTpDetail2.tpCable.u32FrequencyKHz);
	}
   	return (stTpDetail1.tpCable.u32FrequencyKHz-stTpDetail2.tpCable.u32FrequencyKHz);
}
#endif
/*******************************************************************************************/          

int service_name_az_compare(unsigned pu16idx1, unsigned pu16idx2)
{
#ifndef NO_SATELLITE
	DB_TpDetailEx	stTpDetail1, stTpDetail2;
	DB_TpRel		stTpRel1, stTpRel2;
#endif
	
	DVB_ServiceRead (enSrvType, Address2Idx(pu16idx1), &pgmItem);
	DVB_ServiceRead (enSrvType, Address2Idx(pu16idx2), &pgmItem2);

    // skip control byte
    if(pgmItem.acServiceName[0]<0x20)
    {
        pu8string1 = &pgmItem.acServiceName[1];
    }	
    else
    {
        pu8string1 = pgmItem.acServiceName;
    }
	
    if(pgmItem2.acServiceName[0]<0x20)
    {
        pu8string2 = &pgmItem2.acServiceName[1];
    }	
    else
    {
        pu8string2 = pgmItem2.acServiceName;
    }
#ifdef No_diff_cap_small
	pu8string2=strlwr(pu8string2);
	pu8string1=strlwr(pu8string1);
#endif
	//DB_DBG(("%d:%d, %s:%s\n", Address2Idx(pu16idx1), Address2Idx(pu16idx2), pgmItem.acServiceName, pgmItem2.acServiceName));
//DB_DBG(("az:%d=%s:%s\n", strcmp(pu8string1, pu8string2), pu8string1, pu8string2));

#ifdef NO_SATELLITE
#ifdef TUI
	return strcmpex(pu8string1, pu8string2);	//wilson for double byte language compare
#else
	return strcmp(pu8string1, pu8string2);
#endif
#else
	DVB_TPReadDetailEx(pgmItem.u8TransponderIndex , &stTpDetail1, &stTpRel1);
	DVB_TPReadDetailEx(pgmItem2.u8TransponderIndex, &stTpDetail2, &stTpRel2);
    
    if(stTpRel1.u16SatIdx==stTpRel2.u16SatIdx)
    {
#ifdef TUI
	return strcmpex(pu8string1, pu8string2);	//wilson for double byte language compareif
#else
    	return strcmp(pu8string1, pu8string2);
    }
#endif
    else
    {
        return (stTpRel1.u16SatIdx-stTpRel2.u16SatIdx);
    }	
#endif	
}
/*******************************************************************************************/          

int service_name_za_compare(unsigned pu16idx1, unsigned pu16idx2)
{
#ifndef NO_SATELLITE
	DB_TpDetailEx	stTpDetail1, stTpDetail2;
	DB_TpRel		stTpRel1, stTpRel2;
#endif
	
	DVB_ServiceRead (enSrvType, Address2Idx(pu16idx1), &pgmItem);
	DVB_ServiceRead (enSrvType, Address2Idx(pu16idx2), &pgmItem2);

    // skip control byte
    if(pgmItem.acServiceName[0]<0x20)
    {
        pu8string1 = &pgmItem.acServiceName[1];
    }	
    else
    {
        pu8string1 = pgmItem.acServiceName;
    }    
    if(pgmItem2.acServiceName[0]<0x20)
    {
        pu8string2 = &pgmItem2.acServiceName[1];
    }	
    else
    {
        pu8string2 = pgmItem2.acServiceName;
    }

#ifdef No_diff_cap_small
	pu8string2=strlwr(pu8string2);
	pu8string1=strlwr(pu8string1);
#endif
	
	//DB_DBG(("%d:%d, %s:%s\n", Address2Idx(pu16idx1), Address2Idx(pu16idx2), pgmItem.acServiceName, pgmItem2.acServiceName));
#ifdef NO_SATELLITE
	return strcmp(pu8string2, pu8string1);
#else
	DVB_TPReadDetailEx(pgmItem.u8TransponderIndex , &stTpDetail1, &stTpRel1);
	DVB_TPReadDetailEx(pgmItem2.u8TransponderIndex, &stTpDetail2, &stTpRel2);
    
    if(stTpRel1.u16SatIdx==stTpRel2.u16SatIdx)
    {
    	return strcmp(pu8string2, pu8string1);
    }	
	else
	{
        return (stTpRel1.u16SatIdx-stTpRel2.u16SatIdx);
	}	
#endif	
}
/*******************************************************************************************/          

int channel_number_compare(unsigned pu16idx1, unsigned pu16idx2)
{
#ifndef NO_SATELLITE
	DB_TpDetailEx	stTpDetail1, stTpDetail2;
	DB_TpRel		stTpRel1, stTpRel2;
#endif
	
	DVB_ServiceRead (enSrvType, Address2Idx(pu16idx1), &pgmItem);
	DVB_ServiceRead (enSrvType, Address2Idx(pu16idx2), &pgmItem2);

	//DB_DBG(("%d:%d, %s:%s\n", Address2Idx(pu16idx1), Address2Idx(pu16idx2), pgmItem.acServiceName, pgmItem2.acServiceName));

#ifdef NO_SATELLITE
	if( (pgmItem.u8TransponderIndex-pgmItem2.u8TransponderIndex)==0 )
	{
		return (pgmItem.u16ServiceId-pgmItem2.u16ServiceId);
	}	
	else
	{
		return (pgmItem.u8TransponderIndex-pgmItem2.u8TransponderIndex);
	}	
#else
	DVB_TPReadDetailEx(pgmItem.u8TransponderIndex , &stTpDetail1, &stTpRel1);
	DVB_TPReadDetailEx(pgmItem2.u8TransponderIndex, &stTpDetail2, &stTpRel2);
    
    if(stTpRel1.u16SatIdx==stTpRel2.u16SatIdx)
    {
    	if( (pgmItem.u8TransponderIndex-pgmItem2.u8TransponderIndex)==0 )
    	{
    		return (pgmItem.u16ServiceId-pgmItem2.u16ServiceId);
    	}
		else
		{
    		return (pgmItem.u8TransponderIndex-pgmItem2.u8TransponderIndex);
		}	
    }
    else
    {
        return (stTpRel1.u16SatIdx-stTpRel2.u16SatIdx);
    }	
#endif	
}
/*******************************************************************************************/          

int favority_compare(unsigned pu16idx1, unsigned pu16idx2)
{
#ifndef NO_SATELLITE
	DB_TpDetailEx	stTpDetail1, stTpDetail2;
	DB_TpRel		stTpRel1, stTpRel2;
#endif

	DVB_ServiceRead (enSrvType, Address2Idx(pu16idx1), &pgmItem);
	DVB_ServiceRead (enSrvType, Address2Idx(pu16idx2), &pgmItem2);

#ifdef NO_SATELLITE

    
	if( ((pgmItem.u16TypeEX&MASK_OF_FAVORITE_GROUP)!=0 && (pgmItem2.u16TypeEX&MASK_OF_FAVORITE_GROUP)!=0)
	    || ((pgmItem.u16TypeEX&MASK_OF_FAVORITE_GROUP)==0 && (pgmItem2.u16TypeEX&MASK_OF_FAVORITE_GROUP)==0) )    
	{
		return ( PU8TOU16(pu16idx1)-PU8TOU16(pu16idx2) );
	}
	else
	{
    
	    if( (pgmItem.u16TypeEX&MASK_OF_FAVORITE_GROUP)!=0 )    
	    {
			return (-1);    // favority first
	    }
		else
		{
		    return (1);
		}	
	}
#else
	DVB_TPReadDetailEx(pgmItem.u8TransponderIndex , &stTpDetail1, &stTpRel1);
	DVB_TPReadDetailEx(pgmItem2.u8TransponderIndex, &stTpDetail2, &stTpRel2);
    
    if(stTpRel1.u16SatIdx==stTpRel2.u16SatIdx)
    {
    
    	if( ((pgmItem.u16TypeEX&MASK_OF_FAVORITE_GROUP)!=0 && (pgmItem2.u16TypeEX&MASK_OF_FAVORITE_GROUP)!=0)
    	    || ((pgmItem.u16TypeEX&MASK_OF_FAVORITE_GROUP)==0 && (pgmItem2.u16TypeEX&MASK_OF_FAVORITE_GROUP)==0) )    
    	{
    		return ( PU8TOU16(pu16idx1)-PU8TOU16(pu16idx2) );
    	}
    	else
    	{    
    	    if( (pgmItem.u16TypeEX&MASK_OF_FAVORITE_GROUP)!=0 )    
    	    {
    		    return (-1);    // favority first
    	    }    
    		else
    		{
    		    return (1);
    		}	
    	}
    }
    else
    {
        return (stTpRel1.u16SatIdx-stTpRel2.u16SatIdx);
    }	
#endif	
}
/*******************************************************************************************/          

int non_favority_compare(unsigned pu16idx1, unsigned pu16idx2)
{
#ifndef NO_SATELLITE
	DB_TpDetailEx	stTpDetail1, stTpDetail2;
	DB_TpRel		stTpRel1, stTpRel2;
#endif

	DVB_ServiceRead (enSrvType, Address2Idx(pu16idx1), &pgmItem);
	DVB_ServiceRead (enSrvType, Address2Idx(pu16idx2), &pgmItem2);

#ifdef NO_SATELLITE    
	if( ((pgmItem.u16TypeEX&MASK_OF_FAVORITE_GROUP)!=0 && (pgmItem2.u16TypeEX&MASK_OF_FAVORITE_GROUP)!=0)
	    || ((pgmItem.u16TypeEX&MASK_OF_FAVORITE_GROUP)==0 && (pgmItem2.u16TypeEX&MASK_OF_FAVORITE_GROUP)==0) )    
	{
		return ( PU8TOU16(pu16idx1)-PU8TOU16(pu16idx2) );
	}
	else
	{

⌨️ 快捷键说明

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