Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка класса IOUSBControllerV2

Опции
Развертывание Target:

На этой странице
Язык:

IOUSBControllerV2

подкласс IOUSBController, чтобы предоставить поддержку для высокоскоростных устройств и разделить транзакции.

Класс IOUSBController обеспечивает достаточную функциональность для работы с полным (12Mb/s) и низкими (1.5Mb/s) устройствами. IOUSBControllerV2 представляет поддержку высоких (480Mb/s) устройств скорости от спецификации USB 2.0. В определенном IOUSBControllerV2 указывает, что высокая скорость концентрирует полную скорость, или низкоскоростное устройство присоединено так, чтобы разделенные транзакции могли быть предписаны к концентратору в высокой скорости быть переданными полной скорости или низкоскоростному устройству концентратором. Это также оказывает поддержку для объема endoints больших, чем 256 байтов.

Наследование


Не применимый

Соответствует


Не применимый

Оператор импорта


Не применимый

Objective C

@import Kernel;

Доступность


Доступный в OS X v10.2 и позже.
  • сконфигурируйте нуль канала нуля устройства как IOUSBController, но также и примечание хранения высокоскоростного устройства концентратора присоединено.

    Объявление

    C++

    virtual IOReturn ConfigureDeviceZero( UInt8maxPacketSize, UInt8speed, USBDeviceAddresshub, intport);

    Параметры

    maxPacketSize

    максимальный размер пакета для канала

    speed

    скорость устройства kUSBDeviceSpeedLow, kUSBDeviceSpeedFull, kUSBDeviceSpeedHigh, kUSBDeviceSpeedSuper

    hub

    USB ID концентратора устройство является immediatly, присоединенным к. (Не обязательно высокая скорость)

    port

    номер порта порта устройство присоединен.

  • Создайте новое устройство как IOUSBController, обратив внимание на высокоскоростной Идентификационный номер устройства концентратора и номер порта, к которому присоединено полное/низкоскоростное устройство.

    Объявление

    C++

    virtual IOReturn CreateDevice( IOUSBDevice *newDevice, USBDeviceAddressdeviceAddress, UInt8maxPacketSize, UInt8speed, UInt32powerAvailable, USBDeviceAddresshub, intport);

    Параметры

    newDevice

    новый объект устройства работать с

    deviceAddress

    USB-устройство ID

    maxPacketSize

    максимальный размер пакета нуля конечной точки

    speed

    скорость устройства kUSBDeviceSpeedLow, kUSBDeviceSpeedFull, kUSBDeviceSpeedHigh, kUSBDeviceSpeedSuper

    powerAvailable

    питание, доступное устройству

    hub

    USB ID концентратора устройство является immediatly, присоединенным к. (Не обязательно высокая скорость)

    port

    номер порта порта устройство присоединен.

  • Оперативные приложения A/V отправляют и получают данные Iscohronous, запланированные на определенные числа кадра USB. Часы для этих чисел кадра независимы от системных часов, и драйверы должны синхронизировать эти два часов. Эта подпрограмма возвратит системное время, соответствующее началу числа кадра USB. Это - не обязательно текущий кадр, но это будет кадр в недалеком прошлом (в течение прошлой минуты). Дрожание между запуском кадра USB и системное время будет максимально низким, но вследствие задержек аппаратного прерывания могли быть целых 200 микросекунд.

    Объявление

    C++

    virtual IOReturn GetFrameNumberWithTime( UInt64 *frameNumber, AbsoluteTime *theTime);

    Параметры

    frameNumber

    Указатель на UInt64, в котором можно содержать USB, структурирует число, соответствующее данному системному времени.

    theTime

    Указатель на AbsoluteTime, соответствующий системному времени в начале данного USB, структурирует число.

    Возвращаемое значение

    возвраты kIOReturnSuccess, если метод реализован контроллером, иначе kIOReturnUnsupported

  • Низкие передачи Задержки требуют, чтобы у клиента был доступ к памяти после того, как был уже запланирован Изохронный запрос I/O. Это могло бы использоваться, например для заполнения исходящих данных «как раз вовремя». Некоторые контроллеры, однако, могут иметь требования, которые должны сопровождаться, чтобы удостовериться, что буфер памяти не перемещен после того, как вызов выполняется. Этот вызов возвратит IOOptionBits и mach_vm_address_t, который может привыкнуть в вызове к IOBufferMemoryDescriptor:: inTaskWithPhysicalMask, который поможет удовлетворить эти требования.

    Объявление

    C++

    virtual IOReturn GetLowLatencyOptionsAndPhysicalMask( IOOptionBits *optionBits, mach_vm_address_t *physicalMask);

    Параметры

    optionBits

    Указатель на IOOptionBits. Единственный бит, который может быть возвращен, является kIOMemoryPhysicallyContiguous. Другими битами, например, битами направления, должен быть ORd в клиентом по мере необходимости. Этот вызов заменяет базируемый метод старого свойства получения этой информации.

    physicalMask

    Указатель на mach_vm_address_t, который должен привыкнуть в вызове к IOBufferMemoryDescriptor:: inTaskWithPhysicalMask и гарантирует, что, когда память соединена проводом вниз, это будет доступно и клиентом и контроллером USB одновременно.

    Возвращаемое значение

    возвраты kIOReturnSuccess, если метод реализован контроллером, иначе kIOReturnUnsupported

  • Объявление

    C++

    virtual IOReturn OpenPipe( USBDeviceAddressaddress, UInt8speed, Endpoint *endpoint );

    Параметры

    address

    Адрес устройства на Шине USB

    speed

    из устройства: kUSBDeviceSpeedLow, kUSBDeviceSpeedFull, kUSBDeviceSpeedHigh или kUSBDeviceSpeedSuper

    endpoint

    описание конечной точки для соединения с

    Обсуждение

    Откройте канал для указанной конечной точки устройства

  • Объявление

    C++

    virtual IOReturn OpenPipe( USBDeviceAddressaddress, UInt8speed, Endpoint *endpoint );

    Параметры

    address

    Адрес устройства на Шине USB

    speed

    из устройства: kUSBDeviceSpeedLow, kUSBDeviceSpeedFull, kUSBDeviceSpeedHigh или kUSBDeviceSpeedSuper

    endpoint

    описание конечной точки для соединения с

    Обсуждение

    Откройте канал для указанной конечной точки устройства

  • Объявление

    C++

    virtual IOReturn OpenSSPipe( USBDeviceAddressaddress, UInt8speed, Endpoint *endpoint, UInt32maxStreams, UInt32maxBurstAndMult);

    Параметры

    address

    Адрес устройства на Шине USB

    speed

    из устройства: kUSBDeviceSpeedLow, kUSBDeviceSpeedFull, kUSBDeviceSpeedHigh или kUSBDeviceSpeedSuper

    endpoint

    описание конечной точки для соединения с

    maxStreams

    максимальное количество потоков передает поддержки по каналу

    maxBurstAndMult

    максимальное количество пакетов и пакетного множителя

    Обсуждение

    Откройте канал для указанной конечной точки устройства

  • Объявление

    C++

    virtual IOReturn OpenSSPipe( USBDeviceAddressaddress, UInt8speed, Endpoint *endpoint, UInt32maxStreams, UInt32maxBurstAndMult);

    Параметры

    address

    Адрес устройства на Шине USB

    speed

    из устройства: kUSBDeviceSpeedLow, kUSBDeviceSpeedFull, kUSBDeviceSpeedHigh или kUSBDeviceSpeedSuper

    endpoint

    описание конечной точки для соединения с

    maxStreams

    максимальное количество потоков передает поддержки по каналу

    maxBurstAndMult

    максимальное количество пакетов и пакетного множителя

    Обсуждение

    Откройте канал для указанной конечной точки устройства

  • Объявление

    C++

    virtual IOReturn ReadV2( IOMemoryDescriptor *buffer, USBDeviceAddressaddress, Endpoint *endpoint, IOUSBCompletionWithTimeStamp *completion, UInt32noDataTimeout, UInt32completionTimeout, IOByteCountreqCount );

    Параметры

    buffer

    поместите для помещения переданных данных

    address

    Адрес устройства на Шине USB

    endpoint

    описание конечной точки

    completion

    когда буфер был заполнен, описывает действие для взятия

    noDataTimeout

    число миллисекунд никакого перемещения данных перед запросом прерывается

    completionTimeout

    число milliseonds после команды находится на шине, в которой это должно завершиться

    reqCount

    число байтов, которые требуют на передачу (не должно быть больше, чем длина буфера),

    Обсуждение

    Читайте из прерывания или увеличьте объем конечной точки

  • Объявление

    C++

    virtual IOReturn ReadStream( UInt32streamID, IOMemoryDescriptor *buffer, USBDeviceAddressaddress, Endpoint *endpoint, IOUSBCompletion *completion, UInt32noDataTimeout, UInt32completionTimeout, IOByteCountreqCount );

    Параметры

    streamID

    поток ID потока для чтения из

    buffer

    поместите для помещения переданных данных

    address

    Адрес устройства на Шине USB

    endpoint

    описание конечной точки

    completion

    когда буфер был заполнен, описывает действие для взятия

    noDataTimeout

    число миллисекунд никакого перемещения данных перед запросом прерывается

    completionTimeout

    число milliseonds после команды находится на шине, в которой это должно завершиться

    reqCount

    число байтов, которые требуют на передачу (не должно быть больше, чем длина буфера),

    Обсуждение

    Читайте из потока на объемной конечной точке

  • Объявление

    C++

    virtual IOReturn ReadStream( UInt32streamID, IOMemoryDescriptor *buffer, USBDeviceAddressaddress, Endpoint *endpoint, IOUSBCompletion *completion, UInt32noDataTimeout, UInt32completionTimeout, IOByteCountreqCount );

    Параметры

    streamID

    поток ID потока для чтения из

    buffer

    поместите для помещения переданных данных

    address

    Адрес устройства на Шине USB

    endpoint

    описание конечной точки

    completion

    когда буфер был заполнен, описывает действие для взятия

    noDataTimeout

    число миллисекунд никакого перемещения данных перед запросом прерывается

    completionTimeout

    число milliseonds после команды находится на шине, в которой это должно завершиться

    reqCount

    число байтов, которые требуют на передачу (не должно быть больше, чем длина буфера),

    Обсуждение

    Читайте из потока на объемной конечной точке

  • Объявление

    C++

    virtual IOReturn ReadV2( IOMemoryDescriptor *buffer, USBDeviceAddressaddress, Endpoint *endpoint, IOUSBCompletionWithTimeStamp *completion, UInt32noDataTimeout, UInt32completionTimeout, IOByteCountreqCount );

    Параметры

    buffer

    поместите для помещения переданных данных

    address

    Адрес устройства на Шине USB

    endpoint

    описание конечной точки

    completion

    когда буфер был заполнен, описывает действие для взятия

    noDataTimeout

    число миллисекунд никакого перемещения данных перед запросом прерывается

    completionTimeout

    число milliseonds после команды находится на шине, в которой это должно завершиться

    reqCount

    число байтов, которые требуют на передачу (не должно быть больше, чем длина буфера),

    Обсуждение

    Читайте из прерывания или увеличьте объем конечной точки

  • Создайте конечную точку в контроллере, чтобы сделать объемные транзакции.

    Объявление

    C++

    virtual IOReturn UIMCreateBulkEndpoint( UInt8functionNumber, UInt8endpointNumber, UInt8direction, UInt8maxPacketSize, UInt16speed, USBDeviceAddresshighSpeedHub, inthighSpeedPort) = 0;

    Параметры

    functionNumber

    USB-устройство ID устройства

    endpointNumber

    адрес конечной точки конечной точки в устройстве

    direction

    Направление потока данных. kUSBIn или kUSBOut

    maxPacketSize

    максимальный размер пакета этой конечной точки

    speed

    скорость устройства kUSBDeviceSpeedFull, kUSBDeviceSpeedHigh

    highSpeedHub

    Если скорость не является kUSBDeviceSpeedHigh, адресом высокоскоростного концентратора для обращения транзакций разделения к.

    highSpeedPort

    Если скорость не является kUSBDeviceSpeedHigh, порт концентратора для обращения транзакций разделения к

  • Создайте конечную точку в контроллере, чтобы сделать контрольные сделки.

    Объявление

    C++

    virtual IOReturn UIMCreateControlEndpoint( UInt8functionNumber, UInt8endpointNumber, UInt16maxPacketSize, UInt8speed, USBDeviceAddresshighSpeedHub, inthighSpeedPort) = 0;

    Параметры

    functionNumber

    USB-устройство ID устройства

    endpointNumber

    адрес конечной точки конечной точки в устройстве

    maxPacketSize

    максимальный размер пакета этой конечной точки

    speed

    скорость устройства kUSBDeviceSpeedLow, kUSBDeviceSpeedFull, kUSBDeviceSpeedHigh

    highSpeedHub

    Если скорость не является kUSBDeviceSpeedHigh, адресом высокоскоростного концентратора для обращения транзакций разделения к.

    highSpeedPort

    Если скорость не является kUSBDeviceSpeedHigh, порт концентратора для обращения транзакций разделения к

  • Создайте конечную точку в контроллере, чтобы сделать транзакции прерывания.

    Объявление

    C++

    virtual IOReturn UIMCreateInterruptEndpoint( shortfunctionAddress, shortendpointNumber, UInt8direction, shortspeed, UInt16maxPacketSize, shortpollingRate, USBDeviceAddresshighSpeedHub, inthighSpeedPort) = 0;

    Параметры

    functionAddress

    USB-устройство ID устройства

    endpointNumber

    адрес конечной точки конечной точки в устройстве

    direction

    Направление потока данных. kUSBIn или kUSBOut

    speed

    скорость устройства kUSBDeviceSpeedLow, kUSBDeviceSpeedFull, kUSBDeviceSpeedHigh

    maxPacketSize

    максимальный размер пакета этой конечной точки

    pollingRate

    Максимальный интервал опроса от дескриптора конечной точки.

    highSpeedHub

    Если скорость не является kUSBDeviceSpeedHigh, адресом высокоскоростного концентратора для обращения транзакций разделения к.

    highSpeedPort

    Если скорость не является kUSBDeviceSpeedHigh, порт концентратора для обращения транзакций разделения к

  • Создайте конечную точку в контроллере, чтобы сделать Изохронные транзакции.

    Объявление

    C++

    virtual IOReturn UIMCreateIsochEndpoint( shortfunctionAddress, shortendpointNumber, UInt32maxPacketSize, UInt8direction, USBDeviceAddresshighSpeedHub, inthighSpeedPort) = 0;

    Параметры

    functionAddress

    USB-устройство ID устройства

    endpointNumber

    адрес конечной точки конечной точки в устройстве

    maxPacketSize

    максимальный размер пакета этой конечной точки

    direction

    Указывает направление для конечной точки. kUSBIn или KUSBOut.

    highSpeedHub

    Если не нуль, это - устройство полной скорости, адрес высокоскоростного концентратора для обращения транзакций разделения к.

    highSpeedPort

    Если highSpeedHub не является нулем, порт концентратора для обращения транзакций разделения к

  • Создайте конечную точку в контроллере, чтобы сделать Изохронные транзакции.

    Объявление

    C++

    virtual IOReturn UIMCreateIsochEndpoint( shortfunctionAddress, shortendpointNumber, UInt32maxPacketSize, UInt8direction, USBDeviceAddresshighSpeedHub, inthighSpeedPort, UInt8interval);

    Параметры

    functionAddress

    USB-устройство ID устройства

    endpointNumber

    адрес конечной точки конечной точки в устройстве

    maxPacketSize

    максимальный размер пакета этой конечной точки

    direction

    Указывает направление для конечной точки. kUSBIn или KUSBOut.

    highSpeedHub

    Если не нуль, это - устройство полной скорости, адрес высокоскоростного концентратора для обращения транзакций разделения к.

    highSpeedPort

    Если highSpeedHub не является нулем, порт концентратора для обращения транзакций разделения к

    interval

    Закодированный интервал оценивает от дескриптора конечной точки

  • Объявление

    C++

    virtual IOReturn UpdateDeviceAddress( USBDeviceAddress oldDeviceAddress, USBDeviceAddress newDeviceAddress, UInt8 speed, USBDeviceAddress hubAddress, int port);

    Параметры

    deviceAddress

    Адрес устройства на Шине USB

    speed

    из устройства: kUSBDeviceSpeedLow, kUSBDeviceSpeedFull, kUSBDeviceSpeedHigh или kUSBDeviceSpeedSuper

    highSpeedHub

    Если не нуль, это - устройство полной скорости, адрес высокоскоростного концентратора для обращения транзакций разделения к.

    highSpeedPort

    Если highSpeedHub не является нулем, порт концентратора для обращения транзакций разделения к

    Обсуждение

    Скажите контроллер о новом адресе устройства. Используемый, когда было сброшено устройство

  • Объявление

    C++

    virtual IOReturn WriteStream( UInt32streamID, IOMemoryDescriptor *buffer, USBDeviceAddressaddress, Endpoint *endpoint, IOUSBCompletion *completion, UInt32noDataTimeout, UInt32completionTimeout, IOByteCountreqCount );

    Параметры

    streamID

    поток ID потока для записи в

    buffer

    место для получения переданных данных

    address

    Адрес устройства на Шине USB

    endpoint

    описание конечной точки

    completion

    когда буфер был освобожден, описывает действие для взятия

    noDataTimeout

    число миллисекунд никакого перемещения данных перед запросом прерывается

    completionTimeout

    число milliseonds после команды находится на шине, в которой это должно завершиться

    reqCount

    число байтов, которые требуют на передачу (не должно быть больше, чем длина буфера),

    Обсуждение

    Запишите в поток на объемной конечной точке

  • Объявление

    C++

    virtual IOReturn WriteStream( UInt32streamID, IOMemoryDescriptor *buffer, USBDeviceAddressaddress, Endpoint *endpoint, IOUSBCompletion *completion, UInt32noDataTimeout, UInt32completionTimeout, IOByteCountreqCount );

    Параметры

    streamID

    поток ID потока для записи в

    buffer

    место для получения переданных данных

    address

    Адрес устройства на Шине USB

    endpoint

    описание конечной точки

    completion

    когда буфер был освобожден, описывает действие для взятия

    noDataTimeout

    число миллисекунд никакого перемещения данных перед запросом прерывается

    completionTimeout

    число milliseonds после команды находится на шине, в которой это должно завершиться

    reqCount

    число байтов, которые требуют на передачу (не должно быть больше, чем длина буфера),

    Обсуждение

    Запишите в поток на объемной конечной точке