Драйвер фильтра USB для поддержки зарядных устройств USB

Напишите драйвер фильтра, поддерживающий обнаружение зарядных устройств, если контроллер функции использует встроенные драйверы Synopsys и ChipIdea. Если вы пишете драйвер клиента для контроллера собственных функций, обнаружение зарядного устройства и подключения интегрируется в драйвер клиента путем реализации EVT_UFX_DEVICE_PROPRIETARY_CHARGER_SET_PROPERTY, EVT_UFX_DEVICE_PROPRIETARY_CHARGER_RESET и EVT_UFX_DEVICE_DETECT_PROPRIETARY_CHARGER.

Стек функций USB позволяет устройству, например телефону или планшету, заряжаться при подключении к узлу и USB-зарядному устройству, как определено в спецификации USB Battery Charge (BC) 1.2.

  • Существует два типа портов, которые устройство может использовать для зарядки. Устройство может заряжаться с помощью выделенного порта зарядки (DCP) на зарядном устройстве, поставляемом вместе с устройством. Кроме того, устройство может использовать стандартные подчиненные порты или заряжать подчиненные порты, когда устройство подключено к компьютеру. Оба варианта соответствуют спецификации USB BC 1.2.

  • Некоторые зарядные устройства не соответствуют спецификации. Стек функций USB позволяет устройству заряжаться от этих собственных зарядных устройств USB.

Для поддержки соответствующих спецификаций и собственных зарядных устройств эти операции являются обязательными.

  • Устройство может определить, когда usb-узел или зарядное устройство подключено или отсоединяется.
  • Устройство может обнаруживать различные usb-порты зарядки в соответствии со спецификацией BC 1.2.
  • Для зарядных устройств USB, определенных в спецификации BC 1.2, плата взимается с максимальным объемом тока, разрешенным спецификацией BC 1.2.
  • Устройство может обнаруживать собственные usb-зарядные устройства.
  • Для собственных usb-зарядных устройств определите максимальный объем тока, который может рисовать устройство.
  • Сообщите операционной системе о типе подключенного USB-порта.
  • Запретите устройству использовать текущий порт USB в ОС, даже если подключен USB-узел и устройство настроило себя с помощью узла.

Эти операции обрабатываются парой драйверов расширения функций USB (UFX) и драйвера фильтра, который загружается в качестве нижнего фильтра в стеке usb-функций. Драйвер управляет зарядкой ПО USB, начиная с обнаружения USB-порта и уведомляя стек батареи, когда он может начать зарядку и максимальный объем тока, который устройство может рисовать.

Ниже приведено архитектурное представление стеков устройств.

Usb-зарядка.

Когда к устройству подключен USB-порт, драйвер клиента получает уведомление либо драйвером нижнего фильтра, либо прерыванием. В настоящее время драйвер клиента выполняет обнаружение портов, взаимодействуя с оборудованием USB, и сообщает тип порта в UFX. Кроме того, он может запросить драйвер фильтра. В этом случае драйвер фильтра координирует работу с оборудованием USB для обнаружения USB-портов и возвращает обнаруженный тип порта драйверу клиента, а драйвер клиента передает его в UFX.

В зависимости от типа порта UFX определяет максимальный объем текущих данных, который может рисовать устройство, и отправляет эти сведения в драйвер агрегатной зарядки (САПР). САПР проверяет сведения. Если текущий является допустимым, САПР отправляет драйверу класса батареи запрос на запуск зарядки до указанного максимального тока. Драйвер класса батареи перенаправит запрос на зарядку в драйвер мини-класса батареи для обработки. Если в запросе на зарядку указано, что подключено собственное зарядное устройство и мини-класс батареи обрабатывает собственные зарядные устройства, драйвер мини-класса может попытаться заряжать с максимальным током, который он определяет, является подходящим. В противном случае мини-класс батареи может заряжать только до максимального тока, заданного CAD.