次のデバイスにはMTP(Media Transfer Protocol)を使用する予定なので、現在リリースされているデバイスの現在の(不安定な)USBドライバーの代わりにMTPを使用することを評価します。
このデバイスの制限は、そのプロセッサ(Strong Arm)が最大3つのエンドポイントのみをサポートすることです。
「シリアルポート0は、3つのエンドポイントをサポートし、12 Mbpsのボーレートで半二重動作できるユニバーサルシリアルバスデバイスコントローラー(UDC)です(スレーブのみ、ホストまたはハブコントローラーではありません)。」
ただし、仕様によれば、MTPには少なくとも4つのエンドポイントが必要です(PTP仕様から)。
「デバイスには、デフォルト、データ入力、データ出力、および割り込みエンドポイントの少なくとも4つのエンドポイントが含まれている必要があります。」
ここで質問:デバイスの割り込みエンドポイントをスキップできますか?仕様に違反していることは知っていますが、違反するとどうなりますか?
現在の評価ソフトウェアから、次のシナリオを見ることができます。
- 「使用可能なスペース」は更新されません。ユーザーには100Mbの空きメモリがあることがわかりますが、1Mbのファイルを配置すると「メモリが不足しています」というエラーが表示されます。
- ホスト主導以外のアクションはホストに表示されません(したがって、デバイス上のファイルが削除、作成、または移動された場合、接続されたホストはそれを認識しません)
私たちがそれと一緒に暮らせるのであれば、このように実装することをお勧めしますか?
更新:くそー...前回テストしたとき、割り込みEPデータ送信のコードを削除しました。ここで、エンドポイント定義も削除し(エンドポイントはもう作成しません)、この時点からMTP接続を確立できなくなりました:(
Windowsドライバー(wpd)は、使用されていない場合でも、割り込みエンドポイントを必要としているようです。不運...
MTPを3つのエンドポイントで動作させるかどうか、またどのように動作させるかについて、誰かが考えていますか?