S2预置Service,Sat,TP list 目前实现方法
1,可以提供MsDBTool.exe工具和DB(*.DBM)文件给客户,请客户编辑好需要预置的节目,卫星,tp,然后保存DBM,并发回给我们。
2,预置节目: 使用MsDBTool.exe 打开 客户提供的DB文件,可以直接导出apiDTVDefaultServiceTable.h,该文件内容是需要预置的节目的表, 导出的文件只需对比最新代码下相应文件,修改下结构体名称即可。
3,预置Sat list和TP list: 不能直接从工具里面导出相关数据;但是我们可以使用如下方法添加:
a,首先我们可以确认代码上sat list 和tp list对应的分别是AntennaSatList_BuiltIn,AntennaTpList_BuiltIn两个表,另外卫星名称定义在TYPE_SATELLITE这个枚举里面;我们只需要将我们需要预置的信息按以上3个表的格式打印出来即可。
b,例如目前 SMC 7S01代码上,在satellite list 界面,在MApp_ZUI_ACT_HandleSatelliteListMenuKey function里添加如下内容,然后升级到机顶盒上.
c, 机顶盒导入客户提供的DB文件,进入satellite list 界面,分别按下遥控器2,3,4键,打印出3个表的信息,直接复制替换原来的表里面的内容即可。
#if 0 //add for add default SAT and TP
case VK_NUMERIC_2:
{
MS_U8 u8SatId = 0;
printf("\nu8SATNum=%d,\n\n\n\n",u8SLSATNum);
for(u8SatId=0;u8SatId<u8SLSATNum;u8SatId++)
{
MS_SAT_PARAM SatInfor1;
_SLGetSatInforByID(u8SatId,&SatInfor1);//sat lm
if(SatInfor1.eLNBType == EN_LNBTYPE_C)
{
printf("{C_%d_%d, BAND_C, %d, (MS_U8*)\"%s\"},\n",SatInfor1.u16Angle,u8SatId,SatInfor1.u16Angle,SatInfor1.aSatName);
}
else
{
printf("{KU_%d_%d, BAND_KU, %d, (MS_U8*)\"%s\"},\n",SatInfor1.u16Angle,u8SatId,SatInfor1.u16Angle,SatInfor1.aSatName);
}
}
break;
}
case VK_NUMERIC_3:
{
MS_U8 u8SatId = 0;
printf("\nu8SLSATNum=%d,\n\n\n\n",u8SLSATNum);
MApi_DB_DFT_PhysicalChannelBySatID(u8SLCurrentEditSATId);
for(u8SatId=0;u8SatId<u8SLSATNum;u8SatId++)
{
MS_SAT_PARAM SatInfor1;
MS_FE_CARRIER_PARAM tmpCarrierParam;
_SLGetSatInforByID(u8SatId,&SatInfor1);//sat lm
MS_U16 u16TPNum =MApi_DB_DFT_PhysicalChannelBySatID(u8SatId);
MS_U16 u16SatTPId = 0;
for(u16SatTPId=0;u16SatTPId<u16TPNum;u16SatTPId++)
{
MS_U16 u16TPIdx = MApi_DB_DFT_PositionBySatID2PCHIndex(u8SatId,u16SatTPId);
if(oprSUCCESS==MApi_DB_DFT_GetCarrierParam(u16TPIdx,&tmpCarrierParam))
{
if(SatInfor1.eLNBType == EN_LNBTYPE_C)
{
printf("{C_%d_%d, %ld, %ld, %d},\n",SatInfor1.u16Angle, u8SatId,tmpCarrierParam.u32Frequency, tmpCarrierParam.SatParam.u16SymbolRate,tmpCarrierParam.SatParam.u8Polarity);
}
else
{
printf("{KU_%d_%d, %ld, %ld, %d},\n",SatInfor1.u16Angle, u8SatId,tmpCarrierParam.u32Frequency, tmpCarrierParam.SatParam.u16SymbolRate,tmpCarrierParam.SatParam.u8Polarity);
}
}
}
}
break;
}
case VK_NUMERIC_4:
{
MS_U8 u8SatId = 0;
printf("\nu8SLSATNum=%d,\n\n\n\n",u8SLSATNum);
for(u8SatId=0;u8SatId<u8SLSATNum;u8SatId++)
{
MS_SAT_PARAM SatInfor1;
_SLGetSatInforByID(u8SatId,&SatInfor1);//sat lm
if(SatInfor1.eLNBType == EN_LNBTYPE_C)
{
printf(" C_%d_%d,\n",SatInfor1.u16Angle,u8SatId);
}
else
{
printf(" KU_%d_%d,\n",SatInfor1.u16Angle,u8SatId);
}
}
break;//
}
#endif
|