社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
  • 干货
搜索
查看: 304|回复: 4

[蓝牙BLE] BlueNRG HID例程 REPORT_DESC_SIZE 不能大于117的问题

[复制链接]

17

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2018-4-24 22:10:33 | 显示全部楼层 |阅读模式
本帖最后由 kangear 于 2018-4-24 22:48 编辑

按照@littleshrimp 的帖子,移植HID例程到SensorTile上,鼠标和键盘能正常工作。有一个USB TouchScreen的HID例子,将其report descriptor替换到鼠标键盘里,REPORT_DESC_SIZE也改成对应的141个(鼠标原本REPORT_DESC_SIZE有是52),结果发现手机不能搜索到BL设备了。发现此问题后,就开始在52和141之前一一排查,最终锁定,当为117时正常搜索到,当为118时则不能被搜索了。请问这是什么原因呢?我想追踪到HidDevice_Init里,但是发现其在一个静态库`BLEProfilesLib.a`里,没有源码找不到具体原因了,请问这是怎么回事呢?

程序就是使用这里的http://bbs.eeworld.com.cn/thread-521965-1-1.html

重现方法很简单,直接将REPORT_DESC_SIZE改成117搜索测试;再改成118搜索测试,就能分辨出前者能被搜索到,而后者就不能被搜索到了。当然,大于118的均不能被搜索到。我初步怀疑是在BLEProfilesLib.a中作了限制导致直接就不初始化了,从而导致手机搜索不到该蓝牙信号了。
搜索了一下,这个库中确实有117字样,但是目前还不能确信。
Selection_142.png

STM32CubeExpansion_BLE1_V2.8.0(修改好的HID例程).7z (14.56 MB, 下载次数: 1)


回复

使用道具 举报

5000

TA的帖子

9

TA的资源

版主

Rank: 6Rank: 6

发表于 2018-4-25 11:47:59 | 显示全部楼层
HidDevice_Init的返回true还是false
虾扯蛋


回复

使用道具 举报

5000

TA的帖子

9

TA的资源

版主

Rank: 6Rank: 6

发表于 2018-4-25 12:22:01 | 显示全部楼层
试试下边这个描述符Sample Report Descriptor for a Touch Digitizer Device (Windows 7)
https://docs.microsoft.com/zh-cn ... ch-digitizer-device

  1. 0x05, 0x0d,                         // USAGE_PAGE (Digitizers)
  2.     0x09, 0x04,                         // USAGE (Touch Screen)
  3.     0xa1, 0x01,                         // COLLECTION (Application)
  4.     0x85, REPORTID_TOUCH,               //   REPORT_ID (Touch)
  5.     0x09, 0x20,                         //   USAGE (Stylus)
  6.     0xa1, 0x00,                         //   COLLECTION (Physical)
  7.     0x09, 0x42,                         //     USAGE (Tip Switch)
  8.     0x15, 0x00,                         //     LOGICAL_MINIMUM (0)
  9.     0x25, 0x01,                         //     LOGICAL_MAXIMUM (1)
  10.     0x75, 0x01,                         //     REPORT_SIZE (1)
  11.     0x95, 0x01,                         //     REPORT_COUNT (1)
  12.     0x81, 0x02,                         //     INPUT (Data,Var,Abs)
  13.     0x95, 0x03,                         //     REPORT_COUNT (3)
  14.     0x81, 0x03,                         //     INPUT (Cnst,Ary,Abs)
  15.     0x09, 0x32,                         //     USAGE (In Range)
  16.     0x09, 0x47,                         //     USAGE (Confidence)
  17.     0x95, 0x02,                         //     REPORT_COUNT (2)
  18.     0x81, 0x02,                         //     INPUT (Data,Var,Abs)
  19.     0x95, 0x0a,                         //     REPORT_COUNT (10)
  20.     0x81, 0x03,                         //     INPUT (Cnst,Ary,Abs)
  21.     0x05, 0x01,                         //     USAGE_PAGE (Generic Desktop)
  22.     0x26, 0xff, 0x7f,                   //     LOGICAL_MAXIMUM (32767)
  23.     0x75, 0x10,                         //     REPORT_SIZE (16)
  24.     0x95, 0x01,                         //     REPORT_COUNT (1)
  25.     0xa4,                               //     PUSH
  26.     0x55, 0x0d,                         //     UNIT_EXPONENT (-3)
  27.     0x65, 0x00,                         //     UNIT (None)
  28.     0x09, 0x30,                         //     USAGE (X)
  29.     0x35, 0x00,                         //     PHYSICAL_MINIMUM (0)
  30.     0x46, 0x00, 0x00,                   //     PHYSICAL_MAXIMUM (0)
  31.     0x81, 0x02,                         //     INPUT (Data,Var,Abs)
  32.     0x09, 0x31,                         //     USAGE (Y)
  33.     0x46, 0x00, 0x00,                   //     PHYSICAL_MAXIMUM (0)
  34.     0x81, 0x02,                         //     INPUT (Data,Var,Abs)
  35.     0xb4,                               //     POP
  36.     0x05, 0x0d,                         //     USAGE PAGE (Digitizers)
  37.     0x09, 0x48,                         //     USAGE (Width)
  38.     0x09, 0x49,                         //     USAGE (Height)
  39.     0x95, 0x02,                         //     REPORT_COUNT (2)
  40.     0x81, 0x02,                         //     INPUT (Data,Var,Abs)
  41.     0x95, 0x01,                         //     REPORT_COUNT (1)
  42.     0x81, 0x03,                         //     INPUT (Cnst,Ary,Abs)
  43.     0xc0,                               //   END_COLLECTION
  44.     0xc0,                               // END_COLLECTION
复制代码






点评

高人,我就没有换着思路试试。主要手上有一个USB的Touch Digitizer设备,就一直想着非得和那个一样的描述符,您这直接提供了微软的DEMO,我得赶快试试。 另外:HidDevice_Init好像一直都是false呢,无论功能是  详情 回复 发表于 2018-5-4 10:49
虾扯蛋


回复

使用道具 举报

17

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2018-5-4 10:49:56 | 显示全部楼层
littleshrimp 发表于 2018-4-25 12:22
试试下边这个描述符Sample Report Descriptor for a Touch Digitizer Device (Windows 7)
https://docs.mi ...

高人,我就没有换着思路试试。主要手上有一个USB的Touch Digitizer设备,就一直想着非得和那个一样的描述符,您这直接提供了微软的DEMO,我得赶快试试。

另外:HidDevice_Init好像一直都是false呢,无论功能是否正常。

点评

功能调出来了没  详情 回复 发表于 2018-5-12 08:13


回复

使用道具 举报

5000

TA的帖子

9

TA的资源

版主

Rank: 6Rank: 6

发表于 2018-5-12 08:13:09 来自手机 | 显示全部楼层
kangear 发表于 2018-5-4 10:49
高人,我就没有换着思路试试。主要手上有一个USB的Touch Digitizer设备,就一直想着非得和那个一样的描述 ...

功能调出来了没


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2018-5-26 16:14 , Processed in 0.178757 second(s), 17 queries , Gzip On, Redis On.

快速回复 返回顶部 返回列表