将自己调elp8865的过程记录一下,也方便各位童鞋参考:
1. 调driver:
保证elp8865 模块供电正常,并且主控能对其iic的读写正常后说明硬件work了,下面就是让感应处理正确计算就行了。
1.1:epl8865_probe是否已经正常跑进去了:iic读出来的reg以及/sys/devices/platform/elan_alsps下面的DEVICE_ATTR是否已经生成,若生成下面就可以加调试了。
1.2:配置 #define GES_POLLING_MODE 1// 1 is polling mode, 0 is interrupt mode
1.3: 若是polling模式请打开如下:
{
epl8865_gesture_enable(epld, 0, true);
epl8865_restart_work();
}
打开后ges ir是会亮起来的,这时可以用手机的camera确认一下,如果没有说明ges的ir有问题,找硬件去确认下。
1.4 若工作正常此时 driver里的一个简单算法就可以判断手势的上下左右了。
2. 添加ges input的ev_key:
epld->input_dev->keybit[BIT_WORD(KEY_NEXTSONG)] |= BIT_MASK(KEY_NEXTSONG);
epld->input_dev->keybit[BIT_WORD(KEY_PREVIOUSSONG)] |= BIT_MASK(KEY_PREVIOUSSONG);
将driver里判断到的上下处加上:如
......
else if(event==EVENT_LEFT)
{
gRawData.ges_event = EVENT_LEFT;
GES_LOG(" --> LEFT\n\n");
LOG_ERR(" --> LEFT\n\n");
input_report_key(idev, KEY_NEXTSONG, 1);
input_report_key(idev, KEY_NEXTSONG, 0);
input_sync(idev);
}
......
3. 添加linux key与android key的map关系,下面以rk3188的为列的,其它平台的请比芦路画飘。
找到 /system/usr/keylayout /rk29-keypad.kl文件,并在其它添加
key 165 MEDIA_PREVIOUS
key 163 MEDIA_NEXT
然后保存。