ワットモニターUSB TAP-TST10 解析
USB デバイス
Vendor ID | 0x040b |
Product ID | 0x2201 |
HID 準拠デバイスに見える。
計測データ取得要求
エンドポイント 1 に投入できるコマンドには "\x02\x18\x0a" と "\x02\x19\x0a" の二つがある事が判っている。
コマンド | 機能 | Watt Monitor USB Program コマンド発行契機 |
---|---|---|
\x02\x18\x0a | 全計測データ取得 | 「計測データ」ボタンを押した際に発行 |
\x02\x19\x0a | 前回取得したデータより後に計測したデータのみ取得 | 「計測データ」ボタンを押した後、一定時間経過後に発行 |
計測データ取得要求データダンプ (USBPcap.exe 使用)
+00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f ----------------------------------------------- 1b 00 60 b8 d9 11 80 fa ff ff 00 00 00 00 09 00 ..`............. 00 01 00 02 00 01 01 03 00 00 00 02 18 0a ..............
オフセット | 内容 | 設定値 |
---|---|---|
+00-01h | USBPcap pseudoheader length | - |
+02-09h | IRP ID | - |
+0a-0dh | IRP USBD_STATUS | - |
+0e-0fh | URB Function | URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER (0x0009) |
+10h | IRP information Direction | 0x00 FDO -> PDO |
+11-12h | URB bus id | - |
+13-14h | Device address | - |
+15h | Endpoint Direction | 0x01 OUT |
+16h | URB transfer type | URB_INTERRUPT (0x01) |
+17-1ah | Packet Data Length | 3 |
+1b-1dh | Data (Command) | 0x02 0x18 0x0a |
コマンド "\x02\x18\x0a" 投入時データ
エンドポイント 0x82 からデータを取得
一行目
+00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 -------------------------------------------------- 01 09 22 01 2f 00 00 00 00 00 00 00 00 00 00 00 0a
オフセット | 内容 |
---|---|
+00h | 0x01 固定? |
+01h | デバイス内部で前回計測した時間からの経過時間(分) 上記データでは9分 |
+02h | デバイス内部で前回計測した時間からの経過時間(秒) 上記データでは34秒 |
+03-04h (BE) | 計測データサイズ (計測データのみのサイズで全データのサイズでは無い) |
+05-0fh | 不明 |
+10h | 0x0a の場合は継続データ有り? 0xfe の場合は継続データ無し? |
二行目以降
+00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 -------------------------------------------------- 01 80 09 00 80 09 00 80 08 00 80 08 01 80 09 00 0a (継続データがある場合) 01 80 00 00 fe fe fe fe fe fe fe fe fe fe fe fe fe (継続データが無い場合)
※一行目の計測データサイズはオフセット +01h〜+0fh のデータサイズの合計
オフセット | 内容 |
---|---|
+00h | 0x01 固定? |
+01-03h | 計測データ 全てのバイトが 0xfe の場合、その計測データは無効
|
+04-06h | 同上 |
+07-09h | 同上 |
+0a-0ch | 同上 |
+0d-0fh | 同上 |
+10h | 0x0a の場合は継続データ有り? 0xfe の場合は継続データ無し? |
コマンド "\x02\x19\x0a" 投入時データ
+00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 -------------------------------------------------- 01 80 00 00 fe fe fe fe fe fe fe fe fe fe fe fe fe (計測データがある場合) 01 fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe (計測データが無い場合)
コマンド "\x02\x18\x0a" 投入時データの二行目以降と同じ
2013/11/13 更新
コマンド "\x02\x18\x0a" 投入時データの二行目以降のオフセット +01-03h の内容に data[0] & 0x80 == 0x00 の場合を追記