亲爱的读者,
我正在GATT外围设备上创建一个HID,在报告地图中有一个HID输入和输出报告。根据USB HID规格1.11,它不需要在报告地图中有reporttid,并且要传输的报告将没有1字节的reporttid前缀。然而,当我从报表地图中省略reportid时,我无法使用HID主机(Windows PC或Android手机)从外设发送或读取数据。当查看蓝牙堆栈时,它显示在hogpd_create_db_req_handler() [@line 318 in hogpd_task.c]数据库中的reportID自动增加每个报告(report_ref.report_id++;)。我注意到当这些reportid与报表映射中的不一致时,外设和主机之间的通信将无法工作。如果它们是一致的,交流就会成功。
我如何使蓝牙堆栈工作没有报告地图的报告id ?
-----------------------------------
#define REPORT_MAP_LEN 28 //32
//报告描述符==报告映射(HID1_11.pdf section E.6)
const uint8 report_map[REPORT_MAP_LEN] =
{
0x06, 0xAB, 0xff, // USAGE_PAGE (Vendordefined 0xFFAB)
0x0A, 0x00, 0x02, //使用方法(Vendor-defined 0x0200)
0xa1, 0x01, //集合(应用)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x26, 0xff, 0x00, // logical_max (255)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x06, // REPORT_COUNT (6)
0x09, 0x01, //使用(Vendor USAGE 1 0x0001)
//0x85, 0x01, //报告ID=1
0x82, 0x02,0x01, // INPUT (data,variable, no wrap, linear, preferred state, no null, buffered bytes)
0x09, 0x02, // usage = Vendor usage 2
//0x85, 0x02, //报告ID=2
0x92, 0x02,0x01, //输出(data,variable, no wrap, linear, preferred state, no null, non volatile, buffered bytes)
0 xc0 / / END_COLLECTION
}
空白app_hogpd_create_db(空白)
{
//在数据库中添加HID服务
struct hogpd_create_db_req *req = KE_MSG_ALLOC(hogpd_create_db_req,
TASK_HOGPD,
TASK_APP,
hogpd_create_db_req);
/ /填充数据库
申请- > hids_nb = 1;//要添加到数据库中的HID服务实例数。
//每个要添加的HID服务的配置
申请- > cfg [0] .features.svc_features = 0 x00;// HID服务支持的特性(通用HID设备)
申请- > cfg [0] .features.report_nb = 2;// HID信息特征值。
// HID服务中每个报告特征支持的特性
申请- > cfg [0] .features.report_char_cfg [0] = HOGPD_CFG_REPORT_IN;//报告是一个输入报告。
申请- > cfg [0] .features.report_char_cfg [1] = HOGPD_CFG_REPORT_OUT;//报告是一个输出报告。
// HID信息特征值
申请- > cfg [0] .hid_info.bcdHID = 0 x111;//HID类规格的发布号,以二进制编码的十进制表示
申请- > cfg [0] .hid_info.bCountryCode = 0;//硬件目标国家。
申请- > cfg [0] .hid_info.flags = HIDS_NORM_CONNECTABLE;//通知HID设备是否可以正常连接。
//发送消息
ke_msg_send(要求的);
}
圣经结婚,2016-08-03 18:13
#1
蓝牙堆栈是否支持不带报告id的报告映射?
设备:
嗨,BB,
我们没有试过把报告没有报告ID,但是按照HOGP_SPEC_V10文档”一个ID和报告类型定义在该报告地图特征和报告中引用参考特征描述符允许报告主机路由关贸总协定特征值数据的USB HID类驱动,并且允许报告主机路由USB HID类驱动程序数据进出GATT特征值“所以我不确定你的要求是可行的。不过我想这是一个比580更多的android限制数据库的限制(如果有这种限制),580只会暴露地图和一份报告将向主机发送报告,你需要检查是否能够解析android这样的报告。
由于MT_dialog