借り初めのひみつきちスマートフォン用の表示で見る借り初めのひみつきち仮ブログです。送受信命令を発行しないとデータ転送が始まりません。ストレージのようなデバイスではこれで問題ありませんが、キーボードやマウスのように人間の気まぐれでいつデータが来るかわからないデバイスはこの方法だとデータを送るタイミングがわかりません。同様のケースはインタラプト転送という転送モードで対応します。プロトコルのインタラプト転送はホストが一定の間隔でデバイスに問い合わせ、データを転送する必要がある場合のみ実際の転送が行われます。名前の予想に反して実際の動作はポーリングです。インタラプト転送のエンドポイントに対して読み込み命令を発行するとホストコントローラーが定期的にデバイスに問い合わせ、実際に転送が行われるまで結果を遅延することで擬似的に割り込み動作を実現しています。そのため、インタラプト転送ではポーリングの間隔値が重要な意味を持ちます。フィールドに値を設定します。これらのフィールドはどちらも8ビット値ですが、デバイスの速度や転送モードによって意味や取り得る範囲が異なるため、そのまま代入することはできません。仕様書に表が書かれています。設定ミスではないかということでソースコードと仕様書を改めて確認し、値の変換をせずそのまま代入していたのが原因と判明しました。対数で指定するため、そのままの値を設定すると数百msと解釈されて大幅な遅延が発生します。実装について軽く解説します。