次の方法で共有


USB 充電器をサポートする USB フィルター ドライバー

関数コントローラーがインボックス Synopsys ドライバーと ChipIdea ドライバーを使用している場合は、充電器の検出をサポートするフィルター ドライバーを記述します。 独自の関数コントローラー用のクライアント ドライバーを作成する場合、充電器/接続検出は、 EVT_UFX_DEVICE_PROPRIETARY_CHARGER_SET_PROPERTYEVT_UFX_DEVICE_PROPRIETARY_CHARGER_RESET、および EVT_UFX_DEVICE_DETECT_PROPRIETARY_CHARGERを実装することによって、クライアント ドライバーに統合されます。

USB 関数スタックを使用すると、USB バッテリ充電 (BC) 1.2 仕様で定義されているホストと USB 充電器に接続したときに、電話やタブレットなどのデバイスを充電できます。

  • デバイスが充電に使用できるポートは 2 種類あります。 デバイスは、デバイスに付属している充電器の専用充電ポート (DCP) から充電できます。 デバイスが PC に接続されているときには、標準のダウンストリームポートまたは充電ダウンストリームポートからの接続が可能です。 どちらの場合も 、USB BC 1.2 仕様に準拠しています。

  • 一部の充電器は仕様に従っていません。 USB 関数スタックを使用すると、デバイスは独自の USB 充電器から充電できます。

仕様に準拠した独自の充電器をサポートするには、これらの操作が必要です。

  • デバイスは、USB ホストまたは充電器が取り付けられているか、または取り外されているかを検出できます。
  • このデバイスは、BC 1.2 仕様で定義されているさまざまな USB 充電ポートを検出できます。
  • BC 1.2 仕様で定義されている USB 充電器の場合、デバイスは BC 1.2 仕様で許容される最大電流量で充電されます。
  • このデバイスは、独自の USB 充電器を検出できます。
  • 独自の USB 充電器の場合は、デバイスが引き出すことができる電流の最大量を決定します。
  • 接続されている USB ポートの種類についてオペレーティング システムに通知します。
  • USB ホストが接続されていて、デバイスがホストで自身を構成している場合でも、デバイスが OS の USB 経由で電流を引き出さないようにします。

これらの操作は、 USB 関数クラス拡張 (UFX)/クライアント ドライバー ペアと、USB 関数デバイス スタックの下位フィルターとして読み込まれるフィルター ドライバーによって処理されます。 ドライバーは、USBポートの検出から始めて、充電を開始するタイミングやデバイスが取り込める最大電流をバッテリスタックに通知することでUSB充電を管理します。

デバイス スタックのアーキテクチャ表現を次に示します。

USB 充電。

USB ポートがデバイスに接続されている場合、クライアント ドライバーは、下位フィルタードライバーまたは割り込みにより通知を受けます。 現時点では、クライアント ドライバーは USB ハードウェアと通信してポート検出を実行し、ポートの種類を UFX に報告します。 または、フィルター ドライバーを要求できます。 その場合、フィルター ドライバーは USB ハードウェアと調整して USB ポート検出を実行し、検出されたポートの種類をクライアント ドライバーに返し、クライアント ドライバーはそれを UFX に渡します。

UFX は、ポートの種類に基づいて、デバイスが描画し、充電集計ドライバー (CAD) にその情報を送信できる電流の最大量を決定します。 CAD は情報を検証します。 電流が有効な場合、CAD は、指定された最大電流までの充電を開始するための要求をバッテリ クラス ドライバーに送信します。 バッテリ クラス ドライバーは、処理のために充電要求をバッテリ ミニクラス ドライバーに転送します。 充電要求で専用充電器が取り付けられていることが指定され、バッテリ ミニクラスが独自の充電器を処理する場合、ミニクラス ドライバーは、適切であると判断した最大電流で充電を試みることができます。 それ以外の場合、バッテリ ミニクラスは、CAD で指定された最大電流までしか充電できません。