Carbide现情况,blink出现错误,在低电量条件下,指示灯出现不规则闪烁,具体情况如下:
- 当街上电源充电时,亮红灯,在此时有一个消息进入,则会开始闪烁。原计划为亮白色等(红+绿+蓝),现阶段仅能亮(蓝+绿),红灯不亮。
- 低电量不加电源时,应该会闪红灯,这时进来一个消息,则会只会闪(蓝+绿)灯,红灯不亮的情况,并且在亮灭屏的时候,情况更加复杂,有时候会闪蓝灯,有时候闪粉色灯(蓝+红),有时候正常闪,还有时候闪黄灯(红+绿),总结一下:
一.接电源亮红灯–>来提醒–>亮(蓝+绿)
二.低电量闪红灯–>来提醒–>亮(蓝+绿)–>灭屏–>蓝闪/粉(蓝+红)闪/正常闪(蓝+红+绿)/黄闪(红+绿)
通过对节点的写值分析得到以下结论:
1.blink写1的时候,brightness会写255
2.blink写0时,brightness会写0
3.当blink=1时,再写brightness时,blink会置0,此时,灯停止闪烁,进入常亮模式。
2017年7月24日解决问题
在标准的充电条件下,亮的是黄(绿+红)灯,因此,在之前的问题中,出现了闪灯混乱的问题,也就是亮黄色的时候,来了一个通知,这个时候,按照程序设计,应该是要亮白等,但是实际上只亮了蓝灯,最初的想法是能够通过对三个灯的赋值的限制来达到问题的解决,也就是说在设置闪烁的时候来进行标志位的置位,从而不让上层在闪烁的时候写brightness节点,但是经过修改之后,发现在读完通知以后,白灯无法变暗,仍然在闪烁,因此推测上层的控制是在blink写值之后,直接了brightness,造成无法写值。
偶然的,在程序打log的过程中,在三色灯的设置函数
qpnp_rgb_set(Struct qpnp_led_data *led)
中加入了log,突然发现,这个问题被解决了,后经过分析得出,每打一次log,就相当于是一次延时,因此使用了delay函数进行测试,得到了结果符合与其,证实了这个问题的产生是因为寄存器没有反应过来,导致了在写寄存器的时候出现了问题。