我已经开发了用于USB设备的内核驱动程序。这种设备的某些引脚可以提供CDC ACM串行端口或输入按钮的功能。因此,要实现这一点,我必须使用两个不同的USB配置描述符。
驱动程序按预期方式工作,但是在编译并将固件加载到微控制器之前,我必须对所选设置进行硬编码。我正在寻找一种从用户空间更改设备配置的机制。
我在USB文档中读到了SET_CONFIGURATION消息,但找不到任何Linux工具将这种标准USB消息从用户空间发送到USB总线。
你们中的某些人(在此主题上有更多的经验)是否知道一些用户空间Linux工具,用于向连接到USB总线的设备发送SET_CONFIGURATION消息?
提前谢谢! :)
答案 0 :(得分:1)
从理论上讲,LibUSB中的函数libusb_set_configuration()
可以做到这一点,但是没有必要。
使用“接口关联描述符”(IAD),只需将HID(用于按钮)和CDC(串行端口)都设置为 one 配置。
答案 1 :(得分:0)
此github回购解决了我的问题:
let data = [{"booleanProperty":false},{"booleanProperty":true},{"booleanProperty":false},{"booleanProperty":true},{"booleanProperty":false}];
let indexes = data.reduce((r, a, i)=> (a.booleanProperty && r.push(i), r), []);
console.log(indexes);