您的位置:首页 > 其它

项目中问题总结

2014-07-31 16:34 218 查看
1.遥控器修改,将原软件上遥控器统一到IR_CUR_USE.h文件,并将IR_TYPE_SEL宏移动到configure_customer中CFG_IR。mdrv_ir.c和appMain.c使用到遥控器头文件。_MAIN_PM_Init中在待机时注册POWER键。

2.原CODE烧入到4M FLASH会在第二次以后无法开机:修改方法FlashMap.h

#define SIZE_OF_STRING_DATABASE 0x00

#define SIZE_OF_BMP_DATABASE 0x00

3.自动搜台时第一个7M频点不能收台。

MApp_MenuChannel_FullScan_Start函数:

scanParam.TPSInfo.TerParam.eBandWidth=(u16BandWidth-6000)/1000;

1.添加NTFS功能

将PARTITION_NTFS_ENABLE宏改成1

将MAKEFILE文件中OS_BUILT = ecos_k1_34kc_net_fileio_posix_fat_c++_mipsisa32_552改为

OS_BUILT = ecos_k1_34kc_net_fileio_posix_fat_ntfs_c++_mipsisa32_552

CFG_CH_SWITCH_AUDIO_FIRST = 1这个改为0切台就能声音和视频同步

当MBOOT关掉LOGO显示时,也需要将应用中_SysInit_InitAPI函数的 _SysInit_XC(bBootLogoEn);设置为
_SysInit_XC(FALSE);

伊朗码流切台速度慢问题修改,appZapper.c文件中的

static MS_U32 VDES_AVSYNCTIME = 180000;//超时时间改小(如500,目前为2S)

录制完整码流打开宏

PVR_REC_ALL_STREAM

去掉MBOOT中USB升级检测OUI LOADER_ENABLE_USB_UPDATE_NEED_CHECK_OUI

不识别字符替换字符定义 _u16GLYPH_FOR_UNKNOW_GLYPH 0x3f

去掉应用中库的打印

AP在language_c_libc_stdio_printf.c里定义下printf,把它置为空,mboot下CONFIG_MSTAR_SILENT配置下

调节颜色饱和度

参考函数_Saturation_HandleKey

如果要过视频频响指标,则需要关闭CFG_SUBTITLE_GOP_DST_OP_AS_DEFAULT

DTV 下的九宫格打开ENABLE_PROG_THUMB

MApi_AUDIO_GetAC3PInfo
获取DD+格式情况

读存储盘内文件系统时间 fstat

关闭APP 中的打印信息“请注释掉cyg_uart_putchar()函数中MDrv_UART_PutChar



从USB 加载最新程序。

///////////////////////

usb start 1

fatload usb 0 80000180 /dvbt_k1.bin

go 80000224

///////////////////////

#define COLOR_RED "\033[31m"

#define COLOR_WHITE "\033[37m"

#define COLOR_YELLOW "\033[33m"

#define COLOR_BLUE "\033[34m"

#define COLOR_GREEN "\033[32m"

#define COLOR_END "\033[0m"

extern MS_BOOL TT_IsBgTransparent(void);

extern void TT_SetBgTransparent(MS_BOOL enable);

直接extern后,在monitor中检测teletext背景是否透明了,如果透明则设置不透明。

audio codec type设置错误

///////////////////////

可以通过u32CurAudioLevel = MApi_AUDIO_GetCommAudioInfo(Audio_Comm_infoType_ADEC1_pcmBuf_currLevel);来判断是否解码成功(u32CurAudioLevel > 0)

SCART RGB CVBS 切换黑屏

case HWND_MENU_TVOUT:

{

if(OutputAVSetting.enAVOutputSourceType == MS_OUTPUT_SOURCE_CVBS)

OutputAVSetting.enAVOutputSourceType = MS_OUTPUT_SOURCE_SCART;

else

OutputAVSetting.enAVOutputSourceType = MS_OUTPUT_SOURCE_CVBS;

MApp_SetAVSetting(&OutputAVSetting);

//MDrv_Scaler_SetFrameColor(&gFrameColor,TRUE,TRUE);

/////////////////////star////////////////////////////////////////

MApp_ZUI_ACT_EnableMiscOutput(DISABLE);

MApp_ZUI_CloseDisplayGDI();

MApi_XC_SetFrameColor(gFrameColor);

/////////////////////end////////////////////////////////////////

tvvideo_SetVideoOutputType(OutputAVSetting.enAVOutputSourceType);

//MDrv_Scaler_SetFrameColor(NULL,FALSE,FALSE);

/////////////////star/////////////////////////////////////////

MApp_ZUI_API_InvalidateWindow(HWND_MAINFRAME);

MApp_ZUI_OpenGDI();

MApp_ZUI_API_ClearGDI();

MApp_ZUI_ACT_EnableMiscOutput(ENABLE);

//////////////////end/////////////////////////////////////////

MApp_ZUI_API_ShowWindow(HWND_MENU_TVOUT_OPTION, SW_SHOW);

appMenu_ClearKeyMsgInQueue();

break;

}

码遥控器添加方法

1. 软件解码模式请在IR头文件中设置#define IR_MODE_SEL IR_TYPE_SWDECODE_MODE

2.目前APP是使用下降沿触发,没有试过双边沿触发。但是支持支持,请如下修改

注释掉REG(REG_IR_SEPR_BIT_FIFO_CTRL) |= 0x2 <<12;这一句

时候

注意事项

中频

Demod地址

,叠加,

动态字符串 show的时候没调用,可以delay一下,在调用show的时候,里面有动态处理时候,会发送命令调用一次getDynamic

在appmain.c power后,db cm savedtvprogram之前调用下面函数

在app_maintask中TUNER启动以前重新排序
extern MS_U16 MApp_ServiceInfo_GetTotalServiceCount(MS_BOOL NVOD_press);
MS_USER_SYSTEM_SETTING stSysSetting;
MApp_GetSysSetting(&stSysSetting);
MApi_DB_CM_SetDefaultSortType(stSysSetting.enSortType);
printf("\n\n\n#######################################get.enSortType set to %d\n\n\n\n\n",stSysSetting.enSortType);
if(MApp_ServiceInfo_GetTotalServiceCount(FALSE) > 0)
{

if (oprSUCCESS != MApi_DB_CM_ArrangeDataManager())
{
DBG_TRACE("SI Store New Prog: MApi_DB_CM_ArrangeDataManager FAIL !! \n");
}

pstView->s16ProgIdx = INVALID_PROG_IDX;

}
#endif

出现mipsisa32-elf-ld: cannot find vectors.o

make: *** [Bin/OBERON.elf] Error 1

在问题单文件夹下文件替换在在\Lib\OBERON\eCosNet\Retail

用make makebin

出现信号强度断断续续的

GPIO_ANT_OVERCURRENT有这个宏是过电保护。至为9999就可以关闭

MApi_SystemMemory_Info

MApi_DB_CM_GetCurrentPosition

对于SI_TID_TDT来说,该宏打开或者关闭除了流程函数参数不一样,调用参数与操作是一样的

SI_TID_PMT

对于SI_TID_SDT来说,主要是把sdt表中,不做parse的描述子放到userdata来,在其他地方进行parse,主要是0x81,0x4a(0x82,0x83),主要是分析mosaic业务。

不同频点搜台搜不到

在函数DistinguishLCNIsSame中

GetProgramTable(m_astDTVProgramIndexTable[wOrder1].wPRIndex, (MS_U8 *)&wON_ID2, pdmON_ID);

GetProgramTable(m_astDTVProgramIndexTable[wOrder].wPRIndex,
(MS_U8*)&PCN1, pdmPCN);//获取物理频道号changhong

GetProgramTable(m_astDTVProgramIndexTable[wOrder1].wPRIndex, (MS_U8 *)&PCN2, pdmPCN); //changhong

if((wTSID1 == wTSID2)&&(wON_ID1 == wON_ID2)&&(m_astDTVProgramIndexTable[wOrder].wService_ID == m_astDTVProgramIndexTable[wOrder1].wService_ID)&&
PCN1 == PCN2)

{

if(m_astDTVProgramIndexTable[wOrder].wSignalStrength >= m_astDTVProgramIndexTable[wOrder1].wSignalStrength)

修改堆栈大小在apichscan.c中把#define CHSCAN_STACK_SIZE 1024*3/ 改为#define CHSCAN_STACK_SIZE 1024*10/

键的触发以及假待机功能。

添加方法如下(注意红色字标志部分):
void _MAIN_IRCallback(MS_U8 u8Key, MS_U8 u8RepFlag)
{
AppCommand appCmd;
printf("\n callback1###########");
if (_appMain.bEnableIR || (u8Key == KEY_POWER && !u8RepFlag && u8WDTMode<2))
{
appCmd.eCmd = E_APP_CMD_IR_KEY;
appCmd.eFlg = E_APP_CMDFLG_NONE;
if (u8Key == KEY_POWER && !u8RepFlag)
{
//* // LGH TEST
appCmd.eSrcAppType = E_APP_TYPE_ANY;
appCmd.eDstAppType = E_APP_TYPE_ALL;
appCmd.eFlg = E_APP_CMDFLG_SYNC;
//_appMain.bEnableIR = FALSE;// LGH TEST
if(u8WDTMode == 0)
{
MDrv_WDT_Init(E_WDT_DBGLV_ALL);
}
if(bResetChip)
{
//chipreset
HB_printf("[%s][%d]Chip Reset ==> \n",__FUNCTION__,__LINE__);
MDrv_WDT_SetTimer_ms(E_WDT_DBGLV_ALL, 1);
while(1);
}
u8WDTMode++;
//*/
}
else

static MS_BOOL _MAIN_ProcessIRKey(MS_U8 u8Key, MS_U8 u8Flag)
{
HB_printf("into _MAIN_ProcessIRKey and keycode = %X \n", u8Key);
MS_BOOL bRet = FALSE;
bPowerDown = FALSE;
if ((u8Key == KEY_PIP))// 这里用一个不会用到按键代替
{
bPowerDown = TRUE;
AppCommand stCmd;
stCmd.eCmd = E_APP_CMD_STANDBY;
stCmd.eSrcAppType = E_APP_TYPE_TV;
stCmd.eDstAppType = E_APP_TYPE_MONITOR;
stCmd.eFlg = E_APP_CMDFLG_SYNC;
appMain_RecvNotify(&stCmd);
msAPI_XC_EnableMiscOutput(0);
msAPI_VE_EnableMiscOutput(0);
MApp_Set_Mute(TRUE, TRUE);
MApp_Set_SpdifMute(TRUE);

#ifdef DVB_ENABLE_TTX
#ifdef TTXSUBTITLE_SUPPORT
if(MApp_ZUI_ACT_Get_TtxRuning()&&MApi_TTX_GetControlMode() == TT_Mode_Subtitle)
{
MApp_ZUI_ACT_Exit_TtxSubtitle();
}
if(MApp_ZUI_ACT_Get_TtxRuning()&&MApi_TTX_GetControlMode()==TT_Mode_Normal)
{
MApp_ZUI_ACT_Exit_TTX(TRUE);
}
#endif
#endif
#if (SUBTITLE_ENABLE)
MApp_Subtitle_Shutdown();
#endif

#if APP_PM_POWERDOWN_EN
//MApp_SetBookEvtToSTB();
//MDrv_PM_EnableWakeUpSource(PM_WAKEUP_BY_IR, TRUE);
//MDrv_PM_ConfigIR(IRKRY_PM_POWER);
//MDrv_PM_Sleep();
#else
/*
if( (GOP_API_SUCCESS != MApi_GOP_GWIN_Enable(u8GWin_HD, FALSE)))
{
HB_printf("[%s][%d] MApi_GOP_GWIN_Enable failed", __FUNCTION__, __LINE__);
return FALSE;
}
if( (GOP_API_SUCCESS != MApi_GOP_GWIN_Enable(u8GWin_SD, FALSE)))
{
HB_printf("[%s][%d] MApi_GOP_GWIN_Enable failed", __FUNCTION__, __LINE__);
return FALSE;
}
*/
MApp_ZUI_CloseGDI();
#if PVR_ENABLE
if (MApp_Pvr_IsPlay())
{
TvBanner_PvrStopPlay();
}
if(MApp_Pvr_IsRec())
{
TvBanner_PvrStopRec();
}
else if(MApp_Pvr_IsTSRec())
{
MApp_Pvr_TSRecStop();
}
#endif
#if SUPPORT_MM_PLAYER
EN_MM_PLAY_STATE eState = appMM_Playback_GetPlayState();
HB_printf("eState=%d\n", eState);
if(eState != EN_MM_PLAY_STATE_STOP)
{
HB_printf("Close MM\n");
appMM_Playback_ResumeTv();
}
else
{
HB_printf("Close SI\n");
MApi_SI_System_Shutdown();
}
#else
HB_printf("Close SI\n");
MApi_SI_System_Shutdown();
#endif
AppCommand appCmd;
appCmd.eCmd = E_APP_CMD_ZAPPER_AV_POWER_OFF;
appCmd.eFlg = E_APP_CMDFLG_SYNC;
appCmd.eSrcAppType = E_APP_TYPE_TV;
appCmd.eDstAppType = E_APP_TYPE_ZAPPER;
appMain_RecvNotify(&appCmd);
//MsOS_DelayTask(100);
AppGetInfo appMenuInfo;
appMenu_GetInfo(&appMenuInfo);
if (appMenuInfo.pGetStateFunc() == E_APP_STAT_RUNNING) //Let menu task standby first
{
AppCommand appCmd;
appCmd.eCmd = E_APP_CMD_IR_KEY;
appCmd.eFlg = E_APP_CMDFLG_SYNC;
appCmd.eSrcAppType = E_APP_TYPE_ANY;
appCmd.eDstAppType = E_APP_TYPE_MENU;
appCmd.u8Data[0] = KEY_POWER;
appCmd.u8Data[1] = 0;
appMain_RecvNotify(&appCmd);
MsOS_DelayTask(100);
}
MsOS_DelayTask(100);
HB_printf("Close menu\n");
// Save IR callback & set Ir callback.
#ifdef MSOS_TYPE_ECOS
_IRCallbackPrev = MDrv_IR_HK_GetCallback();
MDrv_IR_HK_SetCallback(_MAIN_IR_PowerOnCallback);
#endif
// Do all module power down function
#if (AP_ENABLE_OAD && OAD_DATA_TYPE)
MS_USER_SYSTEM_SETTING stSysSetting;
MApp_GetSysSetting(&stSysSetting);
MApp_SetOADValue(stSysSetting.u8EnableOAD, stSysSetting.u8OADStartHour);
#endif
//MsOS_DelayTask(2000);
MApp_SetBookEvtToSTB();
// Turn off clk and enter power down mode
//MDrv_PWR_Standby();
#if (LOCKPRG_ONCE_PASSWD_ENABLE)
MApp_ClrAllProgramPasswdCheckedAttr();//wyf 20090325 for only check passwd once
#endif
// @PORTING: garry.xin,need to power off it?
#if (defined DVBT_STYLE||defined DVBT2_STYLE)
#if( (FRONTEND_DEMOD_TYPE == DEMOD_AFA_9013)||(FRONTEND_DEMOD_TYPE == DEMOD_MSB1228))
MDrv_CofdmDmd_Close();
#endif
#endif
// Restore IR callback after leaving power down mode
#ifdef MSOS_TYPE_ECOS
MDrv_IR_HK_SetCallback(_IRCallbackPrev);
#endif
#endif
MApi_DB_CM_SaveDTVProgramDatabaseIntoFlash();
MApi_DigiTuner_PowerOnOff(FALSE);
_MAIN_CloseDriver();
MsOS_DelayTask(100);
_MAIN_MIUMask();
bResetChip = TRUE;
extern MS_BOOL Set_RTC_timer(void);
Set_RTC_timer();
if(u8WDTMode == 2)
{
HB_printf("[%s][%d]Chip Reset ==> \n",__FUNCTION__,__LINE__);
MDrv_WDT_SetTimer_ms(E_WDT_DBGLV_ALL, 1);
while(1);
}
MApp_SetBookValue();
HB_ObtainMutex(_s32FlashMutexId, MSOS_WAIT_FOREVER);
_MAIN_PM_Init();
_MAIN_PM_PowerDown();
HB_ReleaseMutex(_s32FlashMutexId);
}
else if((u8Key == KEY_POWER))// LGH TEST
{
printf("\n #####test#######:%d",bStandby);
if(bStandby==TRUE)
{
//*
bStandby = FALSE;
//bPowerDown = FALSE;
msAPI_XC_EnableMiscOutput(1);
msAPI_VE_EnableMiscOutput(1);
extern void tvvideo_SetDACOutput(void);
tvvideo_SetDACOutput();

MApp_Set_Mute(FALSE, FALSE);
MsOS_DelayTask(100);
MApi_AUDIO_SetMute(AUDIO_PATH_MAIN_SPEAKER, FALSE );
MApi_AUDIO_SetMute(AUDIO_PATH_HP, FALSE);
MsOS_DelayTask(100);
MApp_Set_SpdifMute(FALSE);
printf("\n#####end");
bRet=TRUE;
// */
}
else
{
//*
bStandby = TRUE;
// bPowerDown = TRUE;
msAPI_XC_EnableMiscOutput(0);
msAPI_VE_EnableMiscOutput(0);
MApp_Set_Mute(TRUE, TRUE);
MApi_AUDIO_SetMute(AUDIO_PATH_MAIN_SPEAKER, TRUE );
MApi_AUDIO_SetMute(AUDIO_PATH_HP, TRUE);
MApp_Set_SpdifMute(TRUE);
//*/
}
}

return bRet ;
}
MApp_DataBase_RestoreDefaultSystem()中修改。

audio多国语言时切换后换台换回后无保存

见问题单的audiolanguage
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: