自己研究的,不知道对不对。
首先在mmitask里初始化函数PhnsetReadGPIOSetting,在函数PhnsetReadGPIOSetting里有一段代码:
ReadValue(NVRAM_BYTE_BL_SETTING_HFTIME, &(g_phnset_gpio_cntx_p->bl_setting_hftime), DS_BYTE, &error);
if (g_phnset_gpio_cntx_p->bl_setting_hftime < 5 || g_phnset_gpio_cntx_p->bl_setting_hftime > 60)
{
g_phnset_gpio_cntx_p->bl_setting_hftime = 45;//lb
//g_phnset_gpio_cntx_p->bl_setting_hftime=10;
WriteValue(NVRAM_BYTE_BL_SETTING_HFTIME, &(g_phnset_gpio_cntx_p->bl_setting_hftime), DS_BYTE, &error);
}
应该是先去读取NVRAM里NVRAM_BYTE_BL_SETTING_HFTIME的值,如果不在那个范围内,就设置一个默认值给g_phnset_gpio_cntx_p->bl_setting_hftime,而这个值就是开机后屏幕的背光时间。
因此去跟NVRAM_BYTE_BL_SETTING_HFTIME,在custom_mmi_default_value.h里找到它的定义处,在枚举BYTEDATA里位于第123位,然后在nvram_cust_pack.c里的结构体数组NVRAM_CACHE_BYTE_DEFAULT里找到该枚举里的赋值,为0xFF。
因此我把g_phnset_gpio_cntx_p->bl_setting_hftime的值赋值为45秒。这样屏幕的背光时间就是45秒了。
**************************************************************************************************************************************************************
但后经发现,没有那么简单。
g_phnset_gpio_cntx_p->bl_setting_hftime的值在多处有调用到,不同的平台调用有差异,由于时间关系和个人能力问题没有再跟下去,看什么东西还会与此有关,也就是说如果这样单纯的修改可能引起其他地方出Bug。
因此,个人建议只在与屏幕背光的函数的g_phnset_gpio_cntx_p->bl_setting_hftime的调用之前给它赋值就可以了,不过这样做的结果会使得烧机后的通过外部设置不能生效。看来需要再寻找更好的方法才行。
屏幕背光函数调用举例:
if (gBackLightTimerStatus == MMI_GPIO_BACKLIGHT_TIMER_STATE_NO_TIMER)
{
StopTimer(BACKLIGHT_TIMER);
StartTimer(BACKLIGHT_TIMER, g_phnset_gpio_cntx_p->bl_setting_hftime * 1000, BacklightTimerHdlr);
gBackLightTimerStatus = MMI_GPIO_BACKLIGHT_TIMER_STATE_FOR_HALF_MODE;
}
附:找到函数:
void HighlightPhnsetBackLiteHFTime(S32 index)
{
if (index >= 5 && index <= 60)
{
g_phnset_gpio_cntx_p->bl_setting_hftime = index;
}
}这个就是外部设置的了吧,当设置值正常时,就取设置的值。当然没有那么简单,这个函数应该和比较多的地方联系,不过没什么大关系,就没继续跟下去。
总结:由此可推知MTK一些开机默认值的设置。比如开机默认语言的设置是NVRAM_SETTING_LANG,如果要修改同样去修改其赋值处就OK了。