1. 可通过/dev/hidraw*接口发送遥控器升级命令包和数据包。升级格式遵循HID协议
驱动在drivers/hid/hidraw.c中。
2. 修改ueventd.rc,添加/dev/hidraw*接口属性,使之具有可读写属性。
3. 升级数据包命名遵循一定格式。
4. 在发送数据时,无法发送,需要修改external/bluetooth/bluedroid/btif/src/btif_hh.c
基于android4.2:
void btif_hh_setreport(btif_hh_device_t *p_dev, bthh_report_type_t r_type, UINT16 size,
UINT8* report)
{
- UINT8 hexbuf[20];
UINT16 len = size;
int i = 0;
if (p_dev->p_buf != NULL) {
@@ -680,14 +679,9 @@ void btif_hh_setreport(btif_hh_device_t *p_dev, bthh_report_type_t r_type, UINT1
p_dev->p_buf->len = len;
p_dev->p_buf->offset = BTA_HH_MIN_OFFSET;
- //Build a SetReport data buffer
- memset(hexbuf, 0, 20);
- for(i=0; i<len; i++)
- hexbuf[i] = report[i];
-
UINT8* pbuf_data;
pbuf_data = (UINT8*) (p_dev->p_buf + 1) + p_dev->p_buf->offset;
- memcpy(pbuf_data, hexbuf, len);
+ memcpy(pbuf_data, report, len);
BTA_HhSetReport(p_dev->dev_handle, r_type, p_dev->p_buf);
}
5. 文件权限问题,主要创建的文件夹及其升级文件。
6. hal层代码,注意Android.mk模块名和代码中定义的模块名要一致。
Android.mk
LOCAL_MODULE:= xx.default
xxxx.c文件中:
#define CONTROLLER_HARDWARE_MODULE_ID "xx"