最近4个月的时间,5个人做了两个Android的手机项目:一个2.2.1的,另一个是2.3.4;不知道其他公司是不是也是这样的工作量。对于我们相比之前的项目来说,完全是让我们超长发挥。从之前没有接触过,到目前基本搞通Android框架——主要是底层驱动框架,BSP部分,对于应用层的结构也略知一二。整个成长过程可谓是历经艰辛。各中压力只有我们几个当事人才深有体会。前面先抱怨几句,后面博文会继续总结和记录一些个人认为值得自己总结的要点。
这次就记录一下键盘灯的相关资料。事情的起因是硬件同事反馈触摸屏下面的按键灯电流过大,可能会烧掉LED灯。开始我认为这应该是高通ARM9完全控制的。结果在代码里面发现设置键盘灯的地方实际是通过RPC从ARM11传过来的命令控制的。因为在ARM9这边控制键盘灯的类型为KBD_XXX。于是我想当然认为ARM11肯定有一个KEYBOARD类型的light设备。从代码上的确找到了这样一个设备。在lights.c的文件中,可以看到有一个打开键盘灯的函数。当传入的参数为真,则在文件系统中写一个键盘背光灯亮度文件,值为255。那么通过RPC传给ARM9后,设置键盘灯的亮度就是最大的。其实ARM9侧键盘灯最大应该为6,对应电流大约为60mA。那么只要将函数中,亮度值改小应该就可以了。我将该值改为了20。运行测试了一下,发现好像没什么变化。难道有别的地方再操作该值???国庆加班不太在状态,先回家再说。
第二晚上,没事再来琢磨一下。在网上搜索“键盘灯亮度设置”,结果发现有一个叫"AdjBrightness"的应用程序可以调节键盘灯亮度。但是好像都下载失败。看来想通过应用程序来测试分析的路走不通。再研究一下这个brightness的文件。结果发现有一个button-backlight的目录,而没有kbd-backlight的目录(这个是我最疑惑的地方)。测试发现,当键盘灯熄灭时,button-backlight的brightness文件值为0,点亮后为255。那么我有理由怀疑真正控制键盘灯亮度的是button-backlight里面的brightness,而不是我之前认为的keyboard-backlight。找个时间修改代码测试一下。等测试后再记录测试结果。