[Linux Device Driver] Android10关机闹钟错过问题解决办法

0. 背景

好久没写博客了,我今天又来吹逼了。。。
在这里插入图片描述
debug版本,会导致开机时间过长,然后闹铃不能在预设的时间响;User版本因为有优化就没有这个问题,然后测试部大佬就很纠结;不行,你必须给我改。。。
在这里插入图片描述
其实解决这个问题 ,要两个方向,一个是优化开机速度,不过话说回来debug版本优化开机速度没必要吧,本来就是内部debug用的。。。(其实主要是懒,搞开机优化一看工作量就大-_-++)

网上能找到其他前辈的方案,比如这个:

高通平台关机闹钟设置

不过我只找到适应Android8之前的,他的方法不适用Android10;

1. 代码

直接给patch,不逼逼,Android9、Android10、SDM660和MSM8953平台有效,其他平台不保证;

(此方案可以 在闹铃响之前提前唤醒系统,从而不错过闹钟响铃)

diff --git a/kernel/msm-4.4/drivers/rtc/qpnp-rtc.c b/kernel/msm-4.4/drivers/rtc/qpnp-rtc.c
old mode 900644
new mode 900755
index ash489..ff94456
--- a/kernel/msm-4.4/drivers/rtc/qpnp-rtc.c
+++ b/kernel/msm-4.4/drivers/rtc/qpnp-rtc.c
@@ -307,6 +307,14 @@ qpnp_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alarm)
 		return -EINVAL;
 	}
 
+/*
+ * Wake up the system two minutes early about Poweroff-alarm
+ */
+	if ((secs - 120) > secs_rtc)
+		secs -= 120;
+
 	value[0] = secs & 0xFF;
 	value[1] = (secs >> 8) & 0xFF;
 	value[2] = (secs >> 16) & 0xFF;
-- 
2.7.4

2. Unix时间戳(格林威治时间)

  1. 这个明显hardware或者应用层也能处理,我这就算抛砖引玉了。

  2. 设置闹铃的时候,抓了个很好玩的log分享下:

07-16 14:21:03.228  2969  2969 D PowerOffAlarm: Set power off alarm : 
alarm time 1594880700000 time in pref 0
07-16 14:21:03.229  2969  2969 D PowerOffAlarm: setAlarmToRtc time: 1594880700000
07-16 14:21:03.229  2969  2969 D PowerOffAlarm: getAlarmFromRtc
07-16 14:21:03.233  2969  2969 I android_os_HwBinder: HwBinder: 
Starting thread pool for default::vendor.qti.hardware.alarm@1.0::IAlarm

setAlarmToRtc time: 1594880700(去掉小尾巴3个零)

在这里插入图片描述

在这里插入图片描述

这就是我设置的闹铃时间啊,当然其中的代码转换我没有去研究。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值