赞
踩
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
在问题单文件夹下文件替换在在\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()中修改。
见问题单的audiolanguage
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。