以遥控器头码为0x6121 power键值为0X00为例子:
1、PM中配置头码和power键
/vendor/mstar/pm/zenonia/Project/Source/ir/IR_MSTAR_DTV.h 修改头码键值
#define IR_HEADER_CODE0 0x61 // Custom 0 //0x04
#define IR_HEADER_CODE1 0x21 // Custom 1 //0xFB
IRKEY_POWER = 0x00, //0x46,
编译pm代码生成STR_PM.bin
将STR_PM.bin放置在
\supernova\projects/board/mooney/bin/prebuilt/pm51/
\supernova\projects\board\INI\misc_XX\ ps:XX代表客制化的客户 例如 misc_EDU
2、kl中配置头码和power键
/kernel/linaro/mstar2/drv/ir/IR_MSTAR_CUS21SH.h
#define IR_HEADER_CODE0 0x61UL // Custom 0 //0x04
#define IR_HEADER_CODE1 0x21UL // Custom 1 //0xFB
配置键值(如果不知道按键的键值是多少的话可以先配置好头码然后通过shell getevent来获得对应的按键值)
/kernel/linaro/drivers/media/rc/keymaps/rc-mstar-tv.c
编译kl 生成mdrv-ir.ko、 rc-mstar-tv.ko
复制到keylayout
\device\mstar\cv6a648_base\preinstall\CustomerConfig\XX\XXMODEL\keylayout\
将mdrv-ir.ko、 rc-mstar-tv.ko 复制到\device\mstar\cv6a648_base\preinstall\CustomerConfig\XX\XXMODEL\keylayout\
将rc-mstar-tv.ko重命名为rc-cultraview-tv-baseline.ko
3、sup设置中配置头码和power键
\supernova\projects\board\mooney\buildsettings\build_BASE_CV648H-I-10-DEMO_DTMB_FHD_2G_DDR_FXC_V450HJ1-Q01_CTVMODEL_I_xx.sh
sed -i 's/IR_HEADER_CODE0 =.*/IR_HEADER_CODE0 = 0x61/g' ${COMMON_FEATURE_MK_FILE}
sed -i 's/IR_HEADER_CODE1 =.*/IR_HEADER_CODE1 = 0x21/g' ${COMMON_FEATURE_MK_FILE}
sed -i 's/IR_POWER_KEY =.*/IR_POWER_KEY = 0x00/g' ${COMMON_FEATURE_MK_FILE}
4、jbn中配置头码和power键
/device/mstar/cv6a648_base/preinstall/CustomerConfig/XX/XXMODEL/scripts/set_config 修改头码
setenv power_key 0x00
setenv ir_header_code0 0x61
setenv ir_header_code1 0x21
以上就是完整的配置遥控器的过程,
PS:当power的码值为0X00时,这里会有一个坑,不管怎么设置会发现当设备关机后,在不断电重新上电的情况下,power无法唤醒设备 这是由于vendor\mstar\supernova\projects\msrv\control\src/MSrv_Control_common.cpp 中有这么两句代码
if(powerkey == 0x00) //if not set in config
powerkey = 0xFF;
当powerkey值为0X00时,系统默认为没有设置。所以只要注释掉这两行代码就可以了,当初踩这个坑花了不少时间。