📄 db_ms.c
字号:
}
}
/*******************************************************************************************/
static void _dvb_net_2_db( EN_SYSTEM_TYPE enSysType, DVB_NetInfo *pstNetInfo,
DB_SatRel *pstNetRel, DB_NetDetail *pstNetDetail)
{
pstNetDetail->enSysType = enSysType;
switch(enSysType)
{
case EN_SYSTEM_TYPE_DVBC:
memcpy(pstNetDetail->netCable.acProviderName, pstNetInfo->netCable.acProviderName, MAX_PROVIDER_NAME_LENGTH);
pstNetRel->as16SrvStartIdx[EN_SERVICE_TYPE_TV] = pstNetInfo->netCable.u16VidService_start_idx;
pstNetRel->as16SrvEndIdx [EN_SERVICE_TYPE_TV] = pstNetInfo->netCable.u16VidService_end_idx;
pstNetRel->as16SrvStartIdx[EN_SERVICE_TYPE_RADIO] = pstNetInfo->netCable.u16RdoService_start_idx;
pstNetRel->as16SrvEndIdx [EN_SERVICE_TYPE_RADIO] = pstNetInfo->netCable.u16RdoService_end_idx;
break;
case EN_SYSTEM_TYPE_DVBT:
memcpy(pstNetDetail->netTerre.acProviderName, pstNetInfo->netTerre.acProviderName, MAX_PROVIDER_NAME_LENGTH);
pstNetRel->as16SrvStartIdx[EN_SERVICE_TYPE_TV] = pstNetInfo->netTerre.u16VidService_start_idx;
pstNetRel->as16SrvEndIdx [EN_SERVICE_TYPE_TV] = pstNetInfo->netTerre.u16VidService_end_idx;
pstNetRel->as16SrvStartIdx[EN_SERVICE_TYPE_RADIO] = pstNetInfo->netTerre.u16RdoService_start_idx;
pstNetRel->as16SrvEndIdx [EN_SERVICE_TYPE_RADIO] = pstNetInfo->netTerre.u16RdoService_end_idx;
break;
case EN_SYSTEM_TYPE_DVBS:
memcpy(pstNetDetail->netSat.acSatelliteName, pstNetInfo->netSat.acSatelliteName, MAX_SAT_NAME_LENGTH);
pstNetDetail->netSat.b8Control12V = pstNetInfo->netSat.b8Control12V;
pstNetDetail->netSat.b8Tone22K = pstNetInfo->netSat.b8Tone22K;
pstNetDetail->netSat.u16LocalFrequency = pstNetInfo->netSat.u16LocalFrequency;
pstNetDetail->netSat.u16LocalFrequency_High = pstNetInfo->netSat.u16LocalFrequency_High;
pstNetDetail->netSat.s16Longitude = pstNetInfo->netSat.s16Longitude;
pstNetDetail->netSat.u8DiSEqC = pstNetInfo->netSat.u8DiSEqC;
pstNetDetail->netSat.u8LNBPower = pstNetInfo->netSat.u8LNBPower;
pstNetDetail->netSat.u8LNBType = pstNetInfo->netSat.u8LNBType;
pstNetDetail->netSat.u8MotorPosition = pstNetInfo->netSat.u8MotorPosition;
pstNetRel->as16SrvStartIdx[EN_SERVICE_TYPE_TV] = pstNetInfo->netSat.u16VidService_start_idx;
pstNetRel->as16SrvEndIdx [EN_SERVICE_TYPE_TV] = pstNetInfo->netSat.u16VidService_end_idx;
pstNetRel->as16SrvStartIdx[EN_SERVICE_TYPE_RADIO] = pstNetInfo->netSat.u16RdoService_start_idx;
pstNetRel->as16SrvEndIdx [EN_SERVICE_TYPE_RADIO] = pstNetInfo->netSat.u16RdoService_end_idx;
break;
default:
break;
}
}
/*******************************************************************************************/
static void _db_2_dvb_net( EN_SYSTEM_TYPE enSysType, DVB_NetInfo *pstNetInfo,
DB_SatRel *pstNetRel, DB_NetDetail *pstNetDetail)
{
switch(enSysType)
{
case EN_SYSTEM_TYPE_DVBC:
memcpy(pstNetInfo->netCable.acProviderName, pstNetDetail->netCable.acProviderName, MAX_PROVIDER_NAME_LENGTH);
pstNetInfo->netCable.u16VidService_start_idx = pstNetRel->as16SrvStartIdx[EN_SERVICE_TYPE_TV];
pstNetInfo->netCable.u16VidService_end_idx = pstNetRel->as16SrvEndIdx [EN_SERVICE_TYPE_TV];
pstNetInfo->netCable.u16RdoService_start_idx = pstNetRel->as16SrvStartIdx[EN_SERVICE_TYPE_RADIO];
pstNetInfo->netCable.u16RdoService_end_idx = pstNetRel->as16SrvEndIdx [EN_SERVICE_TYPE_RADIO];
break;
case EN_SYSTEM_TYPE_DVBT:
memcpy(pstNetInfo->netTerre.acProviderName, pstNetDetail->netTerre.acProviderName, MAX_PROVIDER_NAME_LENGTH);
pstNetInfo->netTerre.u16VidService_start_idx = pstNetRel->as16SrvStartIdx[EN_SERVICE_TYPE_TV];
pstNetInfo->netTerre.u16VidService_end_idx = pstNetRel->as16SrvEndIdx [EN_SERVICE_TYPE_TV];
pstNetInfo->netTerre.u16RdoService_start_idx = pstNetRel->as16SrvStartIdx[EN_SERVICE_TYPE_RADIO];
pstNetInfo->netTerre.u16RdoService_end_idx = pstNetRel->as16SrvEndIdx [EN_SERVICE_TYPE_RADIO];
break;
case EN_SYSTEM_TYPE_DVBS:
memcpy(pstNetInfo->netSat.acSatelliteName, pstNetDetail->netSat.acSatelliteName, MAX_SAT_NAME_LENGTH);
pstNetInfo->netSat.b8Control12V = pstNetDetail->netSat.b8Control12V;
pstNetInfo->netSat.b8Tone22K = pstNetDetail->netSat.b8Tone22K;
pstNetInfo->netSat.u16LocalFrequency = pstNetDetail->netSat.u16LocalFrequency;
pstNetInfo->netSat.u16LocalFrequency_High = pstNetDetail->netSat.u16LocalFrequency_High;
pstNetInfo->netSat.s16Longitude = pstNetDetail->netSat.s16Longitude;
pstNetInfo->netSat.u8DiSEqC = pstNetDetail->netSat.u8DiSEqC;
pstNetInfo->netSat.u8LNBPower = pstNetDetail->netSat.u8LNBPower;
pstNetInfo->netSat.u8LNBType = pstNetDetail->netSat.u8LNBType;
pstNetInfo->netSat.u8MotorPosition = pstNetDetail->netSat.u8MotorPosition;
pstNetInfo->netSat.u16VidService_start_idx = pstNetRel->as16SrvStartIdx[EN_SERVICE_TYPE_TV];
pstNetInfo->netSat.u16VidService_end_idx = pstNetRel->as16SrvEndIdx [EN_SERVICE_TYPE_TV];
pstNetInfo->netSat.u16RdoService_start_idx = pstNetRel->as16SrvStartIdx[EN_SERVICE_TYPE_RADIO];
pstNetInfo->netSat.u16RdoService_end_idx = pstNetRel->as16SrvEndIdx [EN_SERVICE_TYPE_RADIO];
break;
default:
break;
}
}
/*******************************************************************************************/
static void _dvb_srv_2_db(DVB_ServiceInfo *pstService, DB_SrvRel* pstSrvRel, DB_ExtraSrv* pstExtraSrv, DB_SrvDetail* pstSrvDetail)
{
#ifdef MULTI_AUDIO_SURPPORT
u8 u8tempi = 0;
#endif
#ifdef ATSC_SYSTEM
memcpy (pstSrvDetail->acServiceName, pstService->acServiceName, (MAX_UTF16_SERVICE_NAME_LENGTH * 2 + 3));
#if 0
DBMS_DBG(("##db [%x][%x][%x][%x][%x][%x][%x][%x][%x][%x][%x][%x][%x][%x][0x%x]\n",
pstSrvDetail->acServiceName[0],
pstSrvDetail->acServiceName[1], pstSrvDetail->acServiceName[2],
pstSrvDetail->acServiceName[3], pstSrvDetail->acServiceName[4],
pstSrvDetail->acServiceName[5], pstSrvDetail->acServiceName[6],
pstSrvDetail->acServiceName[7], pstSrvDetail->acServiceName[8],
pstSrvDetail->acServiceName[9], pstSrvDetail->acServiceName[10],
pstSrvDetail->acServiceName[11], pstSrvDetail->acServiceName[12],
pstSrvDetail->acServiceName[13], pstSrvDetail->acServiceName[14]));
#endif
pstSrvDetail->u32MajorCHNo = pstService->u32MajorCHNo;
pstSrvDetail->u32MinorCHNo = pstService->u32MinorCHNo;
pstSrvDetail->u32AccessCtrl = pstService->u32AccessCtrl;
pstSrvDetail->u32Hidden = pstService->u32Hidden;
pstSrvDetail->u32HideGuide = pstService->u32HideGuide;
pstSrvDetail->u32ServiceType = pstService->u32ServiceType;
#else
memcpy (pstSrvDetail->acServiceName, pstService->acServiceName, MAX_SERVICE_NAME_LENGTH);
#endif
pstSrvDetail->u16AudioPid = pstService->au16AudioPid[0];
#ifdef MULTI_AUDIO_SURPPORT
while((pstService->au16AudioPid[u8tempi]!=0)&&(u8tempi<=MAX_AUDIO_PID_NUMBER))
{
pstSrvDetail->au16AudioPid[u8tempi] = pstService->au16AudioPid[u8tempi];
u8tempi++;
}
#endif
pstSrvDetail->u16PCRPid = pstService->u16PCRPid;
pstSrvDetail->u16ServiceId = pstService->u16ServiceId;
pstSrvDetail->u16TTXPid = pstService->u16TTXPid;
pstSrvDetail->u16TypeEX = pstService->u16TypeEX;
pstSrvDetail->u16VideoPid = pstService->u16VideoPid;
pstSrvDetail->u8Type = pstService->u8Type;
pstSrvDetail->u16PMTPid = pstService->u16PMTPid;
pstSrvDetail->u8AudioVolume = pstService->u8AudioVolume;
pstSrvDetail->bitAc3Flag = pstService->u16AC3Flag;
#ifdef ATSC_SYSTEM
pstSrvDetail->u16SourceID = pstService->u16SourceID;
#endif
#ifdef ENABLE_LCN_SUPPORT
pstSrvDetail->b1VisibleService = pstService->b1VisibleService;
pstSrvDetail->b1LCNEnable = pstService->b1LCNEnable;
pstSrvDetail->u16LCN = pstService->u16LCN;
pstSrvDetail->bitLCNGet = pstService->bitLCNGet;
pstSrvDetail->u16NID = pstService->u16NID;
#ifdef LCN_COUNTRY_CHECK_DISABLE
pstSrvDetail->u16PCN = pstService->u16PCN;
pstSrvDetail->bitCollison = pstService->bitCollison;
#endif
#endif
pstSrvDetail->u16TSID = pstService->u16TSID;
pstSrvDetail->u16ONID = pstService->u16ONID;
#ifdef CI_ENABLE
pstSrvDetail->u16CASystemID = pstService->u16CASystemID;
#endif
// pstSrvRel->u16LogicAddress = 0xffff;
pstSrvRel->u16TpIdx = pstService->u8TransponderIndex;
pstExtraSrv->u16TypeEx = pstService->u16TypeEX;
pstExtraSrv->u16EIT_HeaderIdx = pstService->u16EitHeaderIdx;
#ifdef SUPPORT_SECOND_AUDIO_LANGUAGE
pstSrvDetail->u8MultiAudio = pstService->u8MultiAudio;
#endif//SUPPORT_SECOND_AUDIO_LANGUAGE
}
/*******************************************************************************************/
static void _db_2_dvb_srv(DVB_ServiceInfo *pstService, DB_SrvRel* pstSrvRel, DB_ExtraSrv* pstExtraSrv, DB_SrvDetail* pstSrvDetail)
{
#ifdef MULTI_AUDIO_SURPPORT
u8 u8tempi = 0;
#endif
#ifdef ATSC_SYSTEM
//pstService->acServiceName[0] = 0x11;
memcpy (pstService->acServiceName, pstSrvDetail->acServiceName, MAX_UTF16_SERVICE_NAME_LENGTH * 2 + 3);
#if 0
DBMS_DBG(("dvb [%x][%x][%x][%x][%x][%x][%x][%x][%x][%x][%x][%x][%x][%x][0x%x]\n",
pstService->acServiceName[0],
pstService->acServiceName[1], pstService->acServiceName[2],
pstService->acServiceName[3], pstService->acServiceName[4],
pstService->acServiceName[5], pstService->acServiceName[6],
pstService->acServiceName[7], pstService->acServiceName[8],
pstService->acServiceName[9], pstService->acServiceName[10],
pstService->acServiceName[11], pstService->acServiceName[12],
pstService->acServiceName[13], pstService->acServiceName[14]));
#endif
pstService->u32MajorCHNo = pstSrvDetail->u32MajorCHNo;
pstService->u32MinorCHNo = pstSrvDetail->u32MinorCHNo;
pstService->u32AccessCtrl = pstSrvDetail->u32AccessCtrl;
pstService->u32Hidden = pstSrvDetail->u32Hidden;
pstService->u32HideGuide = pstSrvDetail->u32HideGuide;
pstService->u32ServiceType = pstSrvDetail->u32ServiceType;
#else
memcpy(pstService->acServiceName,pstSrvDetail->acServiceName, MAX_SERVICE_NAME_LENGTH);
#endif
pstService->au16AudioPid[0] = pstSrvDetail->u16AudioPid;
#ifdef MULTI_AUDIO_SURPPORT
while((pstSrvDetail->au16AudioPid[u8tempi]!=0)&&(u8tempi<=MAX_AUDIO_PID_NUMBER))
{
pstService->au16AudioPid[u8tempi] = pstSrvDetail->au16AudioPid[u8tempi];
u8tempi++;
}
#endif
pstService->u16EitHeaderIdx = pstExtraSrv->u16EIT_HeaderIdx;
pstService->u16PCRPid = pstSrvDetail->u16PCRPid;
pstService->u16ServiceId = pstSrvDetail->u16ServiceId;
pstService->u16TTXPid = pstSrvDetail->u16TTXPid;
pstService->u16TypeEX = pstSrvDetail->u16TypeEX;
pstService->u16VideoPid = pstSrvDetail->u16VideoPid;
pstService->u8TransponderIndex = pstSrvRel->u16TpIdx;
pstService->u8Type = pstSrvDetail->u8Type;
pstService->u16PMTPid = pstSrvDetail->u16PMTPid;
pstService->u8AudioVolume = pstSrvDetail->u8AudioVolume;
pstService->u16AC3Flag=pstSrvDetail->bitAc3Flag;
#ifdef ATSC_SYSTEM
pstService->u16SourceID = pstSrvDetail->u16SourceID;
//DBMS_DBG(("@@@@@@@@ u16SourceID[%d]\n", pstService->u16SourceID));
#endif
#ifdef ENABLE_LCN_SUPPORT
pstService->u16LCN = pstSrvDetail->u16LCN;
pstService->b1VisibleService = pstSrvDetail->b1VisibleService;
pstService->b1LCNEnable = pstSrvDetail->b1LCNEnable;
pstService->bitLCNGet = pstSrvDetail->bitLCNGet;
pstService->u16NID = pstSrvDetail->u16NID;
#ifdef LCN_COUNTRY_CHECK_DISABLE
pstService->u16PCN = pstSrvDetail->u16PCN;
pstService->bitCollison = pstSrvDetail->bitCollison;
#endif
#endif
pstService->u16TSID = pstSrvDetail->u16TSID;
pstService->u16ONID = pstSrvDetail->u16ONID;
#ifdef HDTV_DETECTION_ENABLE
pstService->u8StreamType = pstSrvDetail->u8StreamType;
#endif
#ifdef CI_ENABLE
pstService->u16CASystemID = pstSrvDetail->u16CASystemID;
#endif
#ifdef SUPPORT_SECOND_AUDIO_LANGUAGE
pstService->u8MultiAudio = pstSrvDetail->u8MultiAudio;
#endif//SUPPORT_SECOND_AUDIO_LANGUAGE
}
/*******************************************************************************************/
static void _evil_kindergarten(EN_DB_TABLE_TYPE enTableType, u16 u16TotalChildNum)
{
#define CHECK 1
#define NOT_HERE 0
u8 *pu8ChildNameList;
s16 s16EvilStick;
EN_SYSTEM_TYPE enSysType, enOrigSysType;
EN_SERVICE_TYPE enSrvType;
DB_SrvRel stSrvRel;
DB_TpRel stTpRel;
DB_SatRel stNetRel;
u16 u16RelIdx, u16SrvIdx;
enOrigSysType = m_enSystemType;
#if defined(WIN32)
pu8ChildNameList = malloc(u16TotalChildNum);
#else
gen_point = 146;
pu8ChildNameList = DVB_MemoryAllocate(u16TotalChildNum);
#endif
if (pu8ChildNameList == NULL)
{
DBMS_MSG (( "\n allocate memory fail in _evil_kindergarten\n"));
}
// check children at morning
for(s16EvilStick=0; s16EvilStick<u16TotalChildNum; s16EvilStick++)
{
// say "where is stan?"
if( DBFS_InfoCheckAvailable(enTableType, s16EvilStick)==FALSE)
{
pu8ChildNameList[s16EvilStick] = NOT_HERE;
}
else
{
pu8ChildNameList[s16EvilStick] = CHECK;
}
}
// after playing whole day....
// it's time to go home
switch(enTableType)
{
case EN_SRV_TABLE: // stammer parents
for(enSysType=0; enSysType<EN_SYSTEM_TYPE_TOTAL; enSysType++)
{
m_enSystemType = enSysType;
for(enSrvType=0; enSrvType<EN_SERVICE_TYPE_TOTAL; enSrvType++)
{
for(s16EvilStick = 0;
s16EvilStick < m_as16SrvTotal[enSysType][enSrvType];
s16EvilStick++)
{
// hard to communicate
u16SrvIdx = s16EvilStick;
u16RelIdx = _service_get_relation_index(enSysType, enSrvType, u16SrvIdx);
// Parents say his child's name.
DBFS_RelationGetSrv(u16RelIdx, &stSrvRel);
// check my namelist...
if( pu8ChildNameList[stSrvRel.u16LogicAddress]==CHECK )
{
// your child is here, take him back.
pu8ChildNameList[stSrvRel.u16LogicAddress] = NOT_HERE;
}
else
{
// evil kindergarten lost this child..., clean parent's memory
DVB_ServiceDelete ( enSrvType, u16SrvIdx);
s16EvilStick--;
}
}
}
}
break;
case EN_TP_TABLE: // normal parents
for(enSysType = 0; enSysType < EN_SYSTEM_TYPE_TOTAL; enSysType++)
{
m_enSystemType = enSysType;
for(s16EvilStick=0; s16EvilStick<m_as16TpTotal[enSysType]; s16EvilStick++)
{
// Parents say his child's name.
DBFS_RelationGetTp(_tp_get_relation_index(enSysType, s16EvilStick), &stTpRel);
// check my namelist...
if( pu8ChildNameList[stTpRel.u16LogicAddress]==CHECK )
{
// your child is here, take him back.
pu8ChildNameList[stTpRel.u16LogicAddress] = NOT_HERE;
}
else
{
// evil kindergarten lost this child..., clean parent's memory
DVB_TPDelete (s16EvilStick, &u16SrvIdx, &u16SrvIdx);
s16EvilStick--;
}
}
}
break;
case EN_SAT_TABLE: // weird parents
for(enSysType = 0; enSysType < EN_SYSTEM_TYPE_TOTAL; enSysType++)
{
m_enSystemType = enSysType;
for(s16EvilStick = 0; s16EvilStick < m_as16NetTotal[enSysType]; s16EvilStick++)
{
// Parents say his child's name.
DBFS_RelationGetNet(_network_get_relation_index(enSysType, s16EvilStick), &stNetRel);
// check my namelist...
if( pu8ChildNameList[stNetRel.u16LogicAddress]==CHECK )
{
// your child is here, take him back.
pu8ChildNameList[stNetRel.u16LogicAddress] = NOT_HERE;
}
else
{
if( (enSysType == EN_SYSTEM_TYPE_DVBS) &&
(s16EvilStick == m_as16NetTotal[enSysType] - 1) )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -