uhidev0 at uhub1 port 1 configuration 1 interface 0
uhidev0: CMX Systems USB HID sensor demo for HC9S08JM devices, rev 1.01/0.00, addr 3, iclass 3/0
uhid0 at uhidev0: input=64, output=64, feature=0
まず、usbhidctl -r でデバイスの様子を確かめる。
-bash-4.1$ usbhidctl -f /dev/uhid0 -r
Report descriptor:
Collection page=Microsoft usage=0x0001
Output size=8 count=1 page=Generic_Desktop usage=Counted_Buffer, logical range 0..0
:
Output size=8 count=1 page=Generic_Desktop usage=Counted_Buffer, logical range 0..0
Input size=8 count=1 page=Generic_Desktop usage=Counted_Buffer, logical range 0..0
:
Input size=8 count=1 page=Generic_Desktop usage=Counted_Buffer (1:0x3a), logical range 0..0
End collection
Total input size 64 bytes
Total output size 64 bytes
Total feature size 0 bytes
-bash-4.1$
様子がわかったところで、データを取得してみる。
-bash-4.1$ usbhidctl -f /dev/uhid0 -av
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=1
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=1
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=236
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=131
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=131
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=127
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=236
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=211
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=92
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=73
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=168
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=207
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=184
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=187
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=232
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=92
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=41
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=32
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=13
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=100
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=63
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=157
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=222
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=118
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=96
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=31
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=108
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=115
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=1
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=1
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=232
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=250
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=29
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=1
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=24
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=21
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=1
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=1
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=31
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=108
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=115
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=1
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=1
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=236
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=131
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=131
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=127
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=236
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=211
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=92
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=73
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=168
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=207
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=184
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=187
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=232
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=92
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=41
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=32
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=13
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=1
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=68
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=190
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=212
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=120
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=105
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=189
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=117
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=147
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=138
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=191
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=0
-bash-4.1$
このように 64 バイト(x2 前半は output、後半が input。オプションに v を4個付けるとレポートの種類(kind)などまで表示される)のレポートが得られるが、この内容は \Sensor_Development_Kit\Firmware\Sources\Sources\Microsoft\hid_sensor.h の out_struct で定義されている。大雑把に参照すべき内容をまとめてみた。
オフセット | 名称 | 内容 |
---|---|---|
1 | sensor_id | 1:加速度 2:照度計 3:タッチセンサ(E1-E4) 4:タッチセンサ(E5-E6) |
4-11 | report_id | SENSOR_DATA_TYPE_MOTION_GUID (0X3F8A69A2, 0X7C5, 0X4E48, 0XA9, 0X65, 0XCD, 0X79, 0X7A, 0XAB, 0X56, 0XD5): 加速度センサデータ型UID SENSOR_DATA_TYPE_GUID_MECHANICAL_GUI (0X38564A7C, 0XF2F2, 0X49BB, 0X9B, 0X2B, 0XBA, 0X60, 0XF6, 0X6A, 0X58, 0XDF): GUIスイッチデータ型UID |
16-19 | dword_data[0] | タッチセンサ bit 0 - E1 or E5 bit 1 - E2 or E6 bit 2 - E3 or E7 bit 3 - E4 or E8 |
16-27 | float_data[0:2] | 加速度センサ X,Y,Z |
16-19 | float_data[0] | 照度センサ |
-bash-4.1$ usbhidctl -f /dev/uhid0 -lv Microsoft:0x0001.Generic_Desktop:Counted_Buffer#1
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=1
Microsoft:0x0001.Generic_Desktop:Counted_Buffer=2
これを複数指定し、-l オプションで繰り返し input レポートを取得すると次のようになる。item のページ名は省略できる。
-bash-4.1$ usbhidctl -f /dev/uhid0 -ln 1.Counted_Buffer#1 1.Counted_Buffer#4 1.Counted_Buffer#5 1.Counted_Buffer#6 1.Counted_Buffer#7 1.Counted_Buffer#8 1.Counted_Buffer#9 1.Counted_Buffer#10 1.Counted_Buffer#11 1.Counted_Buffer#12 1.Counted_Buffer#13 1.Counted_Buffer#14 1.Counted_Buffer#15 1.Counted_Buffer#16 1.Counted_Buffer#17 1.Counted_Buffer#18 1.Counted_Buffer#19 1.Counted_Buffer#20 1.Counted_Buffer#21 1.Counted_Buffer#22 1.Counted_Buffer#23 1.Counted_Buffer#24 1.Counted_Buffer#25 1.Counted_Buffer#26 1.Counted_Buffer#27 1.Counted_Buffer#28 1.Counted_Buffer#29 1.Counted_Buffer#30 1.Counted_Buffer#31 1.Counted_Buffer#32 1.Counted_Buffer#33 1.Counted_Buffer#34 1.Counted_Buffer#35
1
162
105
138
63
197
7
72
78
169
101
205
121
122
171
86
213
1
0
0
0
170
241
74
190
66
96
69
189
237
124
133
191
1
162
105
138
63
197
7
72
78
169
101
205
121
122
171
86
213
1
0
0
0
194
245
180
190
129
149
59
190
252
169
123
191
こうした出力を適当なフィルタに通して加速度センサやタッチスイッチの状態を取得することができるが、とりあえずはここまで。フィルタを使うなら、そこまでせずとも usbhidctl -al の出力でも十分ではある。
おそらく携帯電話等からは投稿できません。日本語文字列を含まないコメントやトラックバック、および当サイトへの言及を含まないトラックバックは御遠慮いただいております。また、90日以上経過した記事へのコメントはできません。