01> thermal温度检测处理函数:kernel-3.18/drivers/misc/mediatek/thermal/common/coolers/mtk_cooler_bcct.c

static void mtk_cl_bcct_set_bcct_limit(void)
{/* TODO: optimize */int i = 0;int min_limit = 65535;for (; i < MAX_NUM_INSTANCE_MTK_COOLER_BCCT; i++) {unsigned long curr_state;MTK_CL_BCCT_GET_CURR_STATE(curr_state, cl_bcct_state[i]);if (1 == curr_state) {int limit;MTK_CL_BCCT_GET_LIMIT(limit, cl_bcct_state[i]); //计算温度对应电流函数A;if ((min_limit > limit) && (limit > 0))min_limit = limit;}}if (min_limit != cl_bcct_cur_limit) {cl_bcct_cur_limit = min_limit;if (65535 <= cl_bcct_cur_limit) {    //mtk默认65000,也就是函数A值小于该值走else;set_bat_charging_current_limit(-1);   //line_charging中减流实际动作函数;mtk_cooler_bcct_dprintk_always("mtk_cl_bcct_set_bcct_limit() limit=-1\n");} else {set_bat_charging_current_limit(cl_bcct_cur_limit); //走此mtk_cooler_bcct_dprintk_always("mtk_cl_bcct_set_bcct_limit() limit=%d\n",cl_bcct_cur_limit);}mtk_cooler_bcct_dprintk_always("mtk_cl_bcct_set_bcct_limit() real limit=%d\n",get_bat_charging_current_level() / 100);}
}

---

在 thermal.conf表中打开过温检测后,该程序10s扫描2次,周一5秒;

在:

static int mtk_cl_bcct_set_cur_state(struct thermal_cooling_device *cdev, unsigned long state)
{mtk_cooler_bcct_dprintk("mtk_cl_bcct_set_cur_state() %s %lu\n", cdev->type, state);printk("mtk_cl_bcct_set_cur_state() %s %lu\n", cdev->type, state);  //state为软件部分判断温度后识别值,传入kernel;(值为0,1)MTK_CL_BCCT_SET_CURR_STATE(state, *((unsigned long *)cdev->devdata));mtk_cl_bcct_set_bcct_limit();                                                                                                    mtk_cooler_bcct_dprintk("mtk_cl_bcct_set_cur_state() %s limit=%d\n", cdev->type,get_bat_charging_current_level() / 100);return 0;
}

02>line_charging中:

①引入lcm亮度检测函数:

extern unsigned int mt_get_bl_brightness(void);

②对set_bat_charging_current_limit()函数处理:

unsigned int set_bat_charging_current_limit(int current_limit)
{battery_log(BAT_LOG_CRTI, "[BATTERY] set_bat_charging_current_limit (%d)\r\n",current_limit);if (current_limit != -1) {g_bcct_flag = 1;if (current_limit < 70)g_temp_CC_value = CHARGE_CURRENT_0_00_MA;else if (current_limit < 200)g_temp_CC_value = CHARGE_CURRENT_70_00_MA;

改为:

unsigned int set_bat_charging_current_limit(int current_limit)
{battery_log(BAT_LOG_CRTI, "[BATTERY] set_bat_charging_current_limit (%d)\r\n",current_limit);if ( (current_limit != -1) && (mt_get_bl_brightness() != 0) ){g_bcct_flag = 1;if (current_limit < 70)g_temp_CC_value = CHARGE_CURRENT_0_00_MA;else if (current_limit < 200)g_temp_CC_value = CHARGE_CURRENT_70_00_MA;else if (current_limit < 300)

log:

<3>[  730.985645]  (0)[181:bat_thread_kthr]AvgVbat=(3761,3896),AvgI=(688,1029),VChr=5213,AvgT=(25,25),SOC=(3,3),UI_SOC=3,ZCV=3777 bcct:0:0 I:120000

---

<3>[  812.105116]  (0)[181:bat_thread_kthr]AvgVbat=(3783,3790),AvgI=(688,573),VChr=5166,AvgT=(25,25),SOC=(4,4),UI_SOC=4,ZCV=3738 bcct:1:0 I:65000

---

<7>[ 1201.987442]  (0)[4115:kworker/0:0][name:mtk_cooler_bcct&][thermal/cooler/bcct]mtk_cl_bcct_set_bcct_limit() limit=650
<7>[ 1201.987461]  (0)[4115:kworker/0:0][name:mtk_cooler_bcct&][thermal/cooler/bcct]mtk_cl_bcct_set_bcct_limit() real limit=1200

--

-

adb shell system/vendor/bin/thermal_manager vendor/etc/.tp/.ht120.mtc

2)关闭之后验证,获取配置的cmd:
adb shell cat data/.tp/.settings
如果是120则是:vendor/etc/.tp/.ht120.mtc

--------

灭屏取消过温减流功能相关推荐

  1. Android Vibrator 实现灭屏震动功能

    背景 vibrator 是手机上的一个硬件功能,也是常用的提示功能,在开发过程中,遇到一个需求,需要实现灭屏震动提示,搜集网上博客,没有找到想要的案例,所以自己花了点时间研究了,记录下实现 andro ...

  2. Android如何实现灭屏功能

    在Android系统中,可以通过使用PowerManager类来实现灭屏功能.你可以在代码中调用PowerManager.goToSleep()方法来实现灭屏.需要注意的是,在使用这个方法前,你需要获 ...

  3. LiveGBS流媒体平台GB/T28181功能-大屏展示智能码流支持码流清晰度切换取低码率直播流

    LiveGBS大屏展示智能码流支持码流清晰度切换取低码率直播流 1.为什要智能码流 2.什么是智能码流 3.分屏播放智能码流 3.1.十六分屏智能码流播放示例 4.智能码流子码流配置(默认不用配置) ...

  4. Android7.0 PowerManagerService亮灭屏分析(一)

    绪论 可以导致手机亮灭屏的因素有多种,而在本文中主要讲解按power键亮灭屏过程以及来电亮屏.在亮灭屏过程power中主要的实现类与功能如下所述: PowerManagerService.java:以 ...

  5. Android 系统(40)--Android7.0 PowerManagerService亮灭屏分析(一)

    Android7.0 PowerManagerService亮灭屏分析(一) 可以导致手机亮灭屏的因素有多种,而在本文中主要讲解按power键亮灭屏过程以及来电亮屏.在亮灭屏过程power中主要的实现 ...

  6. Android 8.0 手机亮灭屏

    本文主要跟踪分析通过按松power键来唤醒,熄灭屏幕的逻辑.下面是一些相关类的介绍 PowerManagerService.java:简称PMS,负责Andorid系统中电源管理方面的工作.作为系统核 ...

  7. 华为p20pro关闭HTML查看,华为p20如何调出息屏时钟 每天定时开启灭屏显示功能

    谈论到华为,大家应该都不陌生,有朋友问我的华为p20怎么没有屏幕录制,另外,还有朋友想问华为p20怎么更改默认闹钟铃声,这到底是咋回事?实际上华为p20怎样设置锁屏时间呢,接下来小编为大家分享华为p2 ...

  8. 关机充电如何实现短按pwrkey灭屏

    目前关机充电PWRKEY实现长按开机和短按亮屏功能,灭屏是根据BL_SWITCH_TIMEOUTS时间,自动灭屏的:如果需要实现PWRKEY主动灭屏,请按照如下方法修改:     alps/media ...

  9. 华为怎么用手机看时间到读秒_华为手机灭屏也可以看时间?其实设置方法很简单,不会有些可惜了...

    华为作为手机界名副其实的大佬,而且华为手机的口碑也是非常不错的.那么为什么会有这么多人喜欢华为手机呢?主要是华为手机的质量高,并且用很多实用的小功能,比如说神奇的灭屏显示功能等等,今天就给大家分享几个 ...

  10. android 华为手机灭屏搜索不到蓝牙_华为Mate 30更新EMUI10.1.0.132版本,新增10项实用功能...

    前几天,华为新版本内测开始,无线传声功能备受欢迎.今天,小向的华为mate 30也终于迎来了更新,除了无线传声,还有10多项新功能值得期待,不知道你有没有更新呢? 宣传卖点:无线传声 无线传声,是华为 ...

最新文章

  1. 自学机器学习课程怕踩雷?有人帮你选出了top 5优质课
  2. 学习笔记第三十四节课
  3. ASM - 条件判断
  4. 未明确定义列存储过程没问题_使用Apache Kudu和Impala实现存储分层
  5. xaas_从XaaS到Java EE – 2012年哪款该死的云最适合我?
  6. 阿里云 Windows Server 2012 r2 部署asp.net mvc网站 平坑之旅
  7. 成为大数据工程师需要哪些技能?(一文秒懂大数据)
  8. qt实现类似everything搜索功能,速度没有everything那么快
  9. 动网论坛 php版,动网即将推出第二代PHP版本论坛系统
  10. matlab算方差std,MATLAB 方差函数 var std
  11. Rockchip PX30/RK3326 Android开机时间优化
  12. 记一次前端实习生面试
  13. 函数防抖(debounce)和节流(throttle)在H5编辑器项目中的应用
  14. 了解微信小程序、掌握微信小程序开发工具的使用、了解小程序的目录以及文件结构、掌握小程序中常用的组件、掌握WXML、WXSS、WXS的基本使用
  15. python定义一个有长度的列表
  16. Oracle Enterprise Manager Cloud Control 13c部署文档
  17. Spring @Configuration和@Component的区别(enhancer的原因)
  18. IB 物理真题: 比潜热、理想气体
  19. 学习笔记---遥感影像辐射定标与大气校正
  20. 深入剖析ERP实施失败率高成功率低的原因

热门文章

  1. Oracle 常用脚本1
  2. Java的表达式和运算符
  3. sqlite迁移mysql(导入导出数据)
  4. 数据库 -- 单表的数据查询
  5. 记录一次苏宁电商延保服务的体验
  6. 刷新后保持大分类和小分类的展开状态
  7. asp.net如何取得客户端控件的值
  8. Custom Function in MS Reporter
  9. 103 解决粘包问题
  10. k8s Service