📄 dvb_db.c
字号:
{
// 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 + -