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 ...
随机推荐
- Delphi XE4 TStringHelper用法详解
原文地址:Delphi XE4 TStringHelper用法详解作者:天下为公 Delphi XE4的TStringHelper,对操作字符串进一步带来更多的方法,估计XE5还能继续用到. Syst ...
- VBA练习-复杂一点
'日期添加 Sub addDate(d) Dim rg As Range, dd As Date d = Split(d, ) d = Replace(d, ".", " ...
- 【bzoj4715】囚人的旋律 dp
题目描述 给你一个 $1\sim n$ 的排列 $a_i$ ,若 $i\le j$ 且 $a_i\ge a_j$ ,则 $i$ 到 $j$ 有一条边.现在给你这张图,求既是独立集(任意两个选定点都没有 ...
- 【bzoj4579】[Usaco2016 Open]Closing the Farm 并查集
题目描述 Farmer John and his cows are planning to leave town for a long vacation, and so FJ wants to tem ...
- asp.net AES加密跟PHP的一致,将加密的2进制byte[]转换为16进制byte[] 的字符串获得
<?php class AESUtil { public static function encrypt($input, $key) { $size = mcrypt_get_block_siz ...
- 用select (多路复用)模拟一个 socket server
需求:用select (多路复用)模拟一个 socket server.可以接收多并发. 1. 一开始是检测自己,如果我有活动了,就说明有客户端要连我了. #用select去模拟socket,实现单线 ...
- [洛谷P4171][JSOI2010]满汉全席
题目大意:有$n$个点,每个点可以选或不选,有$m$组约束,形如$a,u,b,v$,表示$u=a,v=b$中至少要满足一个条件,问是否存在一组解,多组询问 题解:$2-SAT$,感觉是板子题呀,最后判 ...
- BZOJ2120:数颜色——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=2120 https://www.luogu.org/problemnew/show/P1903#su ...
- 洛谷3800:Power收集——题解
https://www.luogu.org/problemnew/show/P3800 可以把游戏界面理解成一个N行M列的棋盘,有K个格子上有P点,其价值为val(i,j) 初始灵梦可以选择在第一行的 ...
- BZOJ1027 [HNOI2004]打鼹鼠 【dp】
1207: [HNOI2004]打鼹鼠 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 3647 Solved: 1746 [Submit][Sta ...