Mstar方案HDMI CEC按键发送流程及修改发送键值方法

===》表示该函数主要调用关系

vendor\mstar\common\apps\MTvPlayer\src\com\mstar\tv\tvplayer\ui\RootActivity.java

===》onKeyDown()

        ===》sendCecKey(keyCode)

              ====>mTvCecManager.sendCecKey(keyCode);

                         =====> native final boolean sendCecKey(int keyCode) 

JNI调用

vendor\mstar\common\libraries\tvapi\jni\com_mstar_android_tvapi_common_CecManager.cpp

====>jboolean com_mstar_android_tvapi_common_CecManager_sendCecKey()   

此处会把android的key值做一次转换

android2MufKey const astCECKeyTranslate[] = {
    //  Note: except the null IR key, all other IR keys should appear once.
    {AKEYCODE_DPAD_UP,              MVK_UP},
    {AKEYCODE_DPAD_DOWN,            MVK_DOWN},
    {AKEYCODE_DPAD_LEFT,            MVK_LEFT},
    ....
}

AKEYCODE_DPAD_UP等按键值与Android传输下来的一致,其定义文件在:

frameworks\native\include\android\Keycodes.h

MVK_UP等数值表示转换后发送下去的值,其定义文件在

vendor\mstar\common\libraries\tvapi\jni\muf\CustomerKeycode.h

===》srv->sendCecKey(astCECKeyTranslate[i].mufKeyCode)

      ....CecManager调用sendCecKey...

           ....CecManagerService::...         

           =====》BOOL MSrv_CEC::SendCECKey(U32 keycode)

                  =====》SendCECKeyFromTVtoDev(MUF_Keycode keycode)

                          =====》transferIrKeyToCecKey(keycode)

                          

SendCECKey与SendCECKeyFromTVtoDev和transferIrKeyToCecKey都位于MSrv_CEC.cpp文件中

路径为:project\msrv\commom\src\MSrv_CEC.cpp

transferIrKeyToCecKey会再次将接收到的keycode转换为自定义的keycode

EN_MAPI_CEC_MSG_USER_CTRL_PARM MSrv_CEC::transferIrKeyToCecKey(MUF_Keycode IRKey)
{
    .......
    //Get customer key mapping
    stKeyMap = getCecKeyFromTvtoDevCustomerTable();
    if((stKeyMap == NULL) || (stKeyMap[0].CECKey == E_MAPI_MSB_UNKNOW))
    {
        // Default key mapping
        stKeyMap = CECTxUICommandTable;

    }
...........
    return CECKey;
}

默认使用CECTxUICommandTable其定义为

// Default Key mapping for sending key from TV to HDMI device
_ST_CEC_IR_KEY_PAIR_T   CECTxUICommandTable[] =
{
    {E_MAPI_MSG_UI_PLAY, MVK_PLAY},
    {E_MAPI_MSG_UI_STOP, MVK_STOP},
    {E_MAPI_MSG_UI_PAUSE, MVK_PAUSE},
....
}

E_MAPI_MSG_UI_XXX的定义位于:

MStarSDK/src/datatype/mapi_cec_datatype.h

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值