蓝牙鼠标藏下有三个相同UUID但是传送的数据不一样怎么回事

4个职位/ 0个新
最后发表
lianghuok2
离线
最后看到:2年7个月前
加入:2016-05-30 17
蓝牙鼠标藏下有三个相同UUID但是传送的数据不一样怎么回事

SDK包是DA14580_MOUSE_3.70.2.63。
我用nRF主控制面板在GitHub这个安卓应用来连接蓝牙鼠标时,发现:

在人机接口设备(UUID为0 x1812)
下面有三个UUID都是0 x2a4d,但是他们的传输收据不一样。
第一个用来收鼠标偏移值,第二个收按键值,第三个就不知道了。

现在问题在于

1客户在自己定制的应用上,如果想直接通过读取UUID的方式去获取鼠标的数据(按键,xy轴偏移),那么他们要怎么区分这三个相同的UUID吗?

2我想是不是只要读0 x2a4d,通过数据长度来区分吗?因为我发现鼠标偏移是8字节(0 b 00 0 c 00 00 00),按键值好像是2字节(00或者01或者02或者03)

关键词:
设备:
Gongyu_Dialog
离线
最后看到:1周6天前
加入:2016-04-27 07:07
建议通过处理的方式来访问。hogpd_env

建议通过处理的方式来访问。hogpd_env.shdl[0],这是service的起始handle,每个属性的handle都是依次递增。可以在attmdb_add_attribute那里,用个变量直接存储那几个report的handle。

lianghuok2
离线
最后看到:2年7个月前
加入:2016-05-30 17
这里有点不是很明白

这里有点不是很明白。变量直接存储那几个报告的处理是做什么?

Gongyu_Dialog
离线
最后看到:1周6天前
加入:2016-04-27 07:07
因为可以通过函数attmdb_att_set

因为可以通过函数attmdb_att_set_value和attmdb_att_get_value来访问属性的值。举例来说

attmdb_att_set_value (custs1_env。shdl + CUST_IDX_SENSOR_READ_CHAR_VAL,
SENSOR_READ_VAL_CHAR_LEN (uint8_t *) &sensor_val);
属性列表:
///自定义服务数据库特性枚举
枚举

CUST_IDX_SVC = 0 , //------------------ custs1_env.shdl对应的属性

CUST_IDX_SENSOR_PERIOD_CHAR,
CUST_IDX_SENSOR_PERIOD_VAL,
CUST_IDX_SENSOR_PERIOD_VAL_USER_DESC,

CUST_IDX_SENSOR_READ_CHAR,
CUST_IDX_SENSOR_READ_CHAR_VAL,
CUST_IDX_SENSOR_READ_CHAR_VAL_USER_DESC,

CUST_IDX_NOTIFY_CHAR,
CUST_IDX_NOTIFY_CHAR_VAL,
CUST_IDX_NOTIFY_CFG,
CUST_IDX_NOTIFY_CHAR_VAL_USER_DESC,

CUST_IDX_INDICATE_CHAR,
CUST_IDX_INDICATE_CHAR_VAL,
CUST_IDX_INDICATE_CFG,
CUST_IDX_INDICATE_CHAR_VAL_USER_DESC,

CUST1_IDX_NB,
};