recovery 升级过程LED灯闪烁

Android设备在进入recovery升级的过程,我们在屏幕上面可以看到升级的机器人动画,以及升级的进度显示。这仅限于有屏幕的设备,比如平板PAD,电视TV等,对与没有屏幕的盒子BOX,那么在不接入输出设备的时候,升级过程无法可视化的显示,所以就有了这个需求,在升级过程,通过控制面板LED等的闪烁,来告知用户,正在升级,升级完成等状态。

 

我们添加这个功能,需要分两个步骤:

 

    第一,控制LED的闪烁,这个需要kernel提供方法或者接口,我们掉用kernel提供的API,或者控制某个节点(/sys/class/leds/xxxx/xxxx)来控制灯的闪烁,这个每个平台的硬件配置不一样,控制ledgpio也不一样,所以首先要找到控制led灯的方法。

 

    第二,我们在recovery.cpp中,当需要升级的时候,在升级开始之前,创建一个线程,在线程里,按照第一步的方法,循环点亮LED等,在升级完成之后,终止线程即可。如果升级成功,则LED等常亮,若升级失败,则LED熄灭。即可通过LED的状态,判断升级过程,升级结果等。

 

参考流程:bootable/recovery/recovery.cpp

 

//LED控制实现
int set_led_status(int status){ //LED 控制方法实现 } //LED 控制线程 void* LED_thread(void *cookie){ int flag = 0; for(;;){ if(strcmp(cookie,"over")==0) { break; } if(flag == 0) { set_led_status(1); flag = 1; } else { set_led_status(0); flag = 0; } usleep(500000); } return NULL; } int main(int argc, char **argv) { if (update_package != NULL) { //创建LED线程控制线程 //pthread_create(&ntid, NULL, LED_thread, (void *)message); status = install_package(update_package, &wipe_cache, TEMPORARY_INSTALL_FILE, true); if (status == INSTALL_SUCCESS && wipe_cache) { if (erase_volume("/cache")) { LOGE("Cache wipe (requested by package) failed."); } } //终止LED线程 .......... .......... } .......... .......... }

转载于:https://www.cnblogs.com/codeking100/p/10339125.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值