我正在尝试为游戏控制器编写一个驱动程序,它已经被linux识别为“hidraw”。我在网上搜索了一下这个例子:
https://github.com/atomic-penguin/linux/blob/master/samples/hidraw/hid-example.c
如果我编译并运行它,我得到以下输出:
Report Descriptor Size: 203
Report Descriptor:
5 1 15 0 9 4 a1 1 85 30 5 1 5 9 19 1 29 a 15 0 25 1 75 1 95 a 55 0 65 0 81 2 5 9 19 b 29 e 15 0 25 1 75 1 95 4 81 2 75 1 95 2 81 3 b 1 0 1 0 a1 0 b 30 0 1 0 b 31 0 1 0 b 32 0 1 0 b 35 0 1 0 15 0 27 ff ff 0 0 75 10 95 4 81 2 c0 b 39 0 1 0 15 0 25 7 35 0 46 3b 1 65 14 75 4 95 1 81 2 5 9 19 f 29 12 15 0 25 1 75 1 95 4 81 2 75 8 95 34 81 3 6 0 ff 85 21 9 1 75 8 95 3f 81 3 85 81 9 2 75 8 95 3f 81 3 85 1 9 3 75 8 95 3f 91 83 85 10 9 4 75 8 95 3f 91 83 85 80 9 5 75 8 95 3f 91 83 85 82 9 6 75 8 95 3f 91 83 c0
Raw Name: Nintendo Co., Ltd. Pro Controller
Raw Phys: usb-0000:00:14.0-1/input0
Raw Info:
bustype: 3 (USB)
vendor: 0x057e
product: 0x2009
ioctl HIDIOCGFEATURE returned: 4
HIDIOCGFEATURE: Broken pipe
write() wrote 2 bytes
read: Resource temporarily unavailable
在这里,我被困住了。我怎样才能理解报告描述符?更重要的是:为什么read()操作失败? (它返回-1)。 感谢任何帮助,谢谢!