Call Mode feature
起源
user 在插著 充電器 打電話的狀況下,
為了安全起見,
避免 充電器在這時損害手機,間接造成 user 的傷害,
而有了這 feature,
在 battery voltage Vbat > 4V 時,不充電;
在 battery voltage Vbat < 3.8V 時,需充電;
24 #define V_CC2TOPOFF_THRES 4000
...
2616 #if defined(STOP_CHARGING_IN_TAKLING)
2617 static PMU_STATUS mt_battery_CheckCallState(void)
2618 {
2619 PMU_STATUS status = PMU_STATUS_OK;
2620
2625 if ((g_call_state == CALL_ACTIVE) && (battery_meter_get_battery_voltage(KAL_TRUE) > V_CC2TOPOFF_THRES))
2628 status = PMU_STATUS_FAIL;
2629
2630 return status;
2631 }
2632 #endif
2484 static void mt_battery_CheckBatteryStatus(void)
2485 {
...
2707 #if defined(STOP_CHARGING_IN_TAKLING)
2708 if (mt_battery_CheckCallState() != PMU_STATUS_OK) {
2709 BMT_status.bat_charging_state = CHR_HOLD;
2710 return;
2711 }
2712 #endif
...
2888 }
1338 void mt_battery_charging_algorithm(void)
1339 {
1340 battery_charging_control(CHARGING_CMD_RESET_WATCH_DOG_TIMER, NULL);
1341
1342 /* Generate AICR upper bound by AICL */
1343 if (!mtk_is_pep_series_connect()) {
1344 battery_charging_control(CHARGING_CMD_RUN_AICL,
1345 &g_aicr_upper_bound);
1346 }
1347
1348 mtk_pep20_check_charger();
1349 mtk_pep_check_charger();
1350 switch (BMT_status.bat_charging_state) {
1351 case CHR_PRE:
1352 BAT_PreChargeModeAction();
1353 break;
1354
1355 case CHR_CC:
1356 BAT_ConstantCurrentModeAction();
1357 break;
1358
1359 case CHR_BATFULL:
1360 BAT_BatteryFullAction();
1361 break;
1362
1363 case CHR_HOLD:
1364 BAT_BatteryHoldAction();
1365 break;
1366
1367 case CHR_ERROR:
1368 BAT_BatteryStatusFailAction();
1369 break;
1370 }
1371
1372 battery_charging_control(CHARGING_CMD_DUMP_REGISTER, NULL);
1373 }
1250 #define TALKING_RECHARGE_VOLTAGE 3800
...
1253 PMU_STATUS BAT_BatteryHoldAction(void)
1254 {
1255 unsigned int charging_enable;
1256
1257 battery_log(BAT_LOG_CRTI, "[BATTERY] Hold mode !!\n\r");
1259
1263 if (battery_meter_get_battery_voltage(KAL_TRUE) < TALKING_RECHARGE_VOLTAGE ||
1264 g_call_state == CALL_IDLE ||
1266 xxxxx) {
1271 BMT_status.bat_charging_state = CHR_CC;
1272 battery_log(BAT_LOG_CRTI, "[BATTERY] Exit Hold mode and Enter CC mode !!\n\r");
1273 }
1274
1275 /* Disable charger */
1276 charging_enable = KAL_FALSE;
1277 battery_charging_control(CHARGING_CMD_ENABLE, &charging_enable);
1278
1279 return PMU_STATUS_OK;
1280 }
解說1
一開始對 BAT_BatteryHoldAction() 有些疑惑,
為什麼不在 vbat 小於 TALKING_RECHARGE_VOLTAGE 時,如下,就 enable charging,
1263 if (battery_meter_get_battery_voltage(KAL_TRUE) < TALKING_RECHARGE_VOLTAGE ||
1264 g_call_state == CALL_IDLE ||
1266 xxxxx ) {
...
... enable_charging
...
1273 }
如果 在判斷式裡直接 enable charging,(如上),
會發生一種狀況,
有兩種 手機使用狀況 可能會進入 hold action,
若其中一個不需要進入 hold,也就是會開啟 enable charging 的條件,如 xxxxx
則會發生 一直 enable charging,
而失去 hold 的 意義,
正確流程應該是
設定 BMT_status.bat_charging_state = CHR_CC; 讓其在下一個輪回時,進入正常流程,check 是否要enable charging,
並且在 BAT_BatteryHoldAction() 最下方, disable charging
也就是
只要發生 hold 的狀況,即 disable charging,
讓其在下一個輪回,重新檢查。
解說2
為什麼在最下面要 disable charging
不是 在 vbat 小於 TALKING_RECHARGE_VOLTAGE 時,就要 enable charging 嗎?
原來是
如果 Vbat 大於 V_CC2TOPOFF_THRES,
設定 BMT_status.bat_charging_state = CHR_HOLD,
執行 BAT_BatteryHoldAction()
BAT_BatteryHoldAction()裡,vbat 不論大於或小於 TALKING_RECHARGE_VOLTAGE,
都會disable charging,
但是
設定 BMT_status.bat_charging_state = CHR_CC;
讓其在下一回執行 BAT_thread 時,進入 CC 充電,
而這一輪回 先 disable charging。
而
PMU_ChargerStruct BMT_status; 是一個 global variable,
BMT_status.bat_charging_state 會一直記錄 state
所以會一直保持 CHR_HOLD,(除非 被設為 BMT_status.bat_charging_state = CHR_CC)
進入BAT_BatteryHoldAction()。
Call Mode feature的更多相关文章
- 代码的坏味道(18)——依恋情结(Feature Envy)
坏味道--依恋情结(Feature Envy) 特征 一个函数访问其它对象的数据比访问自己的数据更多. 问题原因 这种气味可能发生在字段移动到数据类之后.如果是这种情况,你可能想将数据类的操作移动到这 ...
- SharePoint 2013: A feature with ID has already been installed in this farm
使用Visual Studio 2013创建一个可视web 部件,当右击项目选择"部署"时报错: "Error occurred in deployment step ' ...
- ABP源码分析二十一:Feature
Feature是什么?Feature就是对function的分类方法,其与function的关系就比如Role和User的关系一样. ABP中Feature具有以下属性: 其中最重要的属性是name, ...
- Atitit. Atiposter 发帖机 新特性 poster new feature v7 q39
Atitit. Atiposter 发帖机 新特性 poster new feature v7 q39 V8 重构iocutilV4,use def iocFact...jettyUtil V ...
- django之一些feature
前端之django一些feature 本节内容 cookie session 跨站请求保护 分页 序列化 model模块 CBV和FBV 模板渲染对象 1. cookie cookie 是一种发送到客 ...
- 关于 feature team 的一些内容
矩阵式管理,是常见的经典管理架构.其最早起源于美国的航空航天部门,然后被美国人带到了日本,然后被日本人带到了台湾,然后台湾人带到大陆...矩阵管理最典型的特征是,组织架构按职能与专业划分,项目由跨越部 ...
- Feature Access
在ArcGIS Server中发布支持Feature Access地图服务,你需要知道的几点: 所绘制的mxd地图文件中包含的数据,必须来自企业级数据库链接: mxd中包含的所有图层的数据,必须来自同 ...
- (十一)WebGIS中要素(Feature)的设计
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 在GIS中元素一般分为点元素,线元素,面元素以及symbol ...
- SQL Server 2012安装错误案例:Error while enabling Windows feature: NetFx3, Error Code: -2146498298
案例环境: 服务器环境 : Windows Server 2012 R2 Standard 数据库版本 : SQL Server 2012 SP1 案例介绍: 在Windows Ser ...
- [有意思]The IT workers of Star Wars -- That's not a bug. It's a feature
Yeah, that Artoo is kinda mouthy... ... now select, "restore to factory settings." That'll ...
随机推荐
- HTML5+ API 学习
HTML5+ API 模块整理 API Reference 模块 中文 模块介绍 Accelerometer 加速计 管理设备加速度传感器,用于获取设备加速度信息,包括x(屏幕水平方向).y(垂直屏幕 ...
- WPF值转换实例
WPF绑定功能非常方便,有时候点击某值时在另t一处显示此值的另一表现形式或调用其对应的其它值,用WPF值转换功能会很方便,下面就一LISTBOX和TEXTBLOCK控件,把LISTBOX中的值转换成除 ...
- 禁止移动端input弹出软键盘
在做三级联动,或者一些时间插件的时候总是弹出软键盘,用下面的方法就可以禁用掉,废话不多说直接上代码. HTML代码 <div class=""> <div> ...
- Swift学习与复习
swift中文网 http://www.swiftv.cn http://swifter.tips/ http://objccn.io/ http://www.swiftmi.com/code4swi ...
- Python 日志输出中添加上下文信息
Python日志输出中添加上下文信息 除了传递给日志记录函数的参数(如msg)外,有时候我们还想在日志输出中包含一些额外的上下文信息.比如,在一个网络应用中,可能希望在日志中记录客户端的特定信息,如: ...
- hadoop中DataNode消失挂掉的原因及解决方法
昨天在进行Hadoop实验时遇到一个问题,在sbin目录下输入jps命令,查看当前节点的状态时,意外发现DataNode节点不见了!!于是回忆了一下自己之前的操作过程,大概是因为将自己进入文件夹,将某 ...
- 进程间通讯-3(Manager)-实现数据的同时修改
Manager 可以实现列表,字典,变量,锁,信号量,事件等的数据之间的共享.Manager已经默认加锁了.控制数据不会乱. 实现了不同进程之间数据的共享,并且可以同时修改. from multipr ...
- 【以前的空间】bzoj 1072 [SCOI2007]排列perm
又颓废了一个下午,最近撸mc撸到丧失意识了,玩的有点恶心,于是找水题做,瞧不起颓废的自己啊. another水题. 这题题意很明显啦,就是找数字排列后组成的数去mod d=0后有多少种. 普通的搜索的 ...
- 以安装PyTorch为例说明Anaconda在Windows/Linux上的使用
在Windows10上配置完MXNet 1.3.0后,再配置PyTorch 1.0时,发现两者需要依赖的NumPy版本不一致,之前是通过pip安装NumPy,根据pip的版本不同,会安装不同版本的Nu ...
- ZOJ2314:Reactor Cooling——题解
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1314 题目大意:无源汇上下界网络流,问每个管子走多少流量才能满足所有管子的下界 ...