关机充电动画显示异常
时间:10-02
整理:3721RD
点击:
关机充电动画显示异常:关机插入usb充电时显示充电动画后屏灭过2s之后屏会自动
亮起show动画
关机插入usb充电时显示充电动画后屏灭,过2s之后屏又自动亮起,动画又再次出现一次,此次灭屏后正常
User版本较容易复现,Eng版本不太容易复现
解决方法:
原因:ENG版本和USER版本bootup的流程不太一样引起的:
USER版本 bootup流程会比较快,很快走到bat_thread_kthread, 并updata Battery 和Charger的 status到上层,IPOD在init流程会收到 charger online,会show 充电画面,接着休眠,bat_thread_kthread的流程是10S调度一次,IPOD收到 charger online的 UEVENT 也会再次 show 充电画面;综上,在之前的user版本所看到是两次show 充电画面; 现在的solution是将第一次uevent 放在第一次show 充电画产生,两次就叠加为一次;
ENG版本 bootup流程会比较慢,IPOD在init流程检测充电器插入时,底层还没有把updata battery 和Charger的status upadte到上层,所以init流程是不会画的,直到UEVENT 上报,才会show 充电画面,所以只会有一次充电画面。
修改方法:修改battery_common.c文件中的函数bat_thread_kthread()如下:
- int bat_thread_kthread(void *x)
- {
- //ktime_t ktime = ktime_set(BAT_TASK_PERIOD, 0); // 10s, 10* 1000 ms//<==Delete this line
- ktime_t ktime = ktime_set(3, 0); // 10s, 10* 1000 ms//<==Add this line
- /* Run on a process content */
- while (1) {
- mutex_lock(&bat_mutex);
- if(chargin_hw_init_done == KAL_TRUE)
- BAT_thread();
- mutex_unlock(&bat_mutex);
- battery_xlog_printk(BAT_LOG_FULL, "wait event \n" );
- wait_event(bat_thread_wq, (bat_thread_timeout == KAL_TRUE));
- bat_thread_timeout = KAL_FALSE;
- hrtimer_start(&battery_kthread_timer, ktime, HRTIMER_MODE_REL);
- ktime = ktime_set(BAT_TASK_PERIOD, 0); // 10s, 10* 1000 ms//<==Add this line
- if( chr_wake_up_bat == KAL_TRUE)// for charger plug in/ out
- {
- battery_meter_reset();
- chr_wake_up_bat = KAL_FALSE;
- battery_xlog_printk(BAT_LOG_CRTI, "[BATTERY] Charger plug in/out, Call battery_meter_reset. (%d)\n", BMT_status.UI_SOC);
- }
- }
- return 0;
- }
