项目中问题总结

来源:互联网 发布:js 图片跨域 编辑:程序博客网 时间:2024/04/27 23:49

 

 

1.遥控器修改,将原软件上遥控器统一到IR_CUR_USE.h文件,并将IR_TYPE_SEL宏移动到configure_customerCFG_IRmdrv_ir.cappMain.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

 

去掉MBOOTUSB升级检测OUI      LOADER_ENABLE_USB_UPDATE_NEED_CHECK_OUI

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

 

去掉应用中库的打印

APlanguage_c_libc_stdio_printf.c里定义下printf,把它置为空,mbootCONFIG_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,主要是0x810x4a0x820x83),主要是分析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

0 0