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
hubUSB ID концентратора устройство является immediatly, присоединенным к. (Не обязательно высокая скорость)
portномер порта порта устройство присоединен.
-
Создайте новое устройство как IOUSBController, обратив внимание на высокоскоростной Идентификационный номер устройства концентратора и номер порта, к которому присоединено полное/низкоскоростное устройство.
Объявление
C++
virtual IOReturn CreateDevice( IOUSBDevice *newDevice, USBDeviceAddressdeviceAddress, UInt8maxPacketSize, UInt8speed, UInt32powerAvailable, USBDeviceAddresshub, intport);Параметры
newDeviceновый объект устройства работать с
deviceAddressUSB-устройство ID
maxPacketSizeмаксимальный размер пакета нуля конечной точки
speedскорость устройства kUSBDeviceSpeedLow, kUSBDeviceSpeedFull, kUSBDeviceSpeedHigh, kUSBDeviceSpeedSuper
powerAvailableпитание, доступное устройству
hubUSB 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описание конечной точки для соединения с
Обсуждение
Откройте канал для указанной конечной точки устройства
-
openPipe (USBDeviceAddress, UInt8, Конечная точка *) - openPipe (USBDeviceAddress, UInt8, Конечная точка *)Объявление
C++
virtual IOReturn OpenPipe( USBDeviceAddressaddress, UInt8speed, Endpoint *endpoint);Параметры
addressАдрес устройства на Шине USB
speedиз устройства: kUSBDeviceSpeedLow, kUSBDeviceSpeedFull, kUSBDeviceSpeedHigh или kUSBDeviceSpeedSuper
endpointописание конечной точки для соединения с
Обсуждение
Откройте канал для указанной конечной точки устройства
-
openPipe (USBDeviceAddress, UInt8, Конечная точка *, UInt32, UInt32) - openPipe (USBDeviceAddress, UInt8, Конечная точка *, UInt32, UInt32)Объявление
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максимальное количество пакетов и пакетного множителя
Обсуждение
Откройте канал для указанной конечной точки устройства
-
Читайте (IOMemoryDescriptor *, USBDeviceAddress, конечная точка *, IOUSBCompletionWithTimeStamp *, UInt32, UInt32, IOByteCount) - Читайте (IOMemoryDescriptor *, USBDeviceAddress, конечная точка *, IOUSBCompletionWithTimeStamp *, UInt32, UInt32, IOByteCount)Объявление
C++
virtual IOReturn ReadV2( IOMemoryDescriptor *buffer, USBDeviceAddressaddress, Endpoint *endpoint, IOUSBCompletionWithTimeStamp *completion, UInt32noDataTimeout, UInt32completionTimeout, IOByteCountreqCount);Параметры
bufferпоместите для помещения переданных данных
addressАдрес устройства на Шине USB
endpointописание конечной точки
completionкогда буфер был заполнен, описывает действие для взятия
noDataTimeoutчисло миллисекунд никакого перемещения данных перед запросом прерывается
completionTimeoutчисло milliseonds после команды находится на шине, в которой это должно завершиться
reqCountчисло байтов, которые требуют на передачу (не должно быть больше, чем длина буфера),
Обсуждение
Читайте из прерывания или увеличьте объем конечной точки
-
Читайте (UInt32, IOMemoryDescriptor *, USBDeviceAddress, конечная точка *, IOUSBCompletion *, UInt32, UInt32, IOByteCount) - Читайте (UInt32, IOMemoryDescriptor *, USBDeviceAddress, конечная точка *, IOUSBCompletion *, UInt32, UInt32, IOByteCount)Объявление
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;Параметры
functionNumberUSB-устройство ID устройства
endpointNumberадрес конечной точки конечной точки в устройстве
directionНаправление потока данных. kUSBIn или kUSBOut
maxPacketSizeмаксимальный размер пакета этой конечной точки
speedскорость устройства kUSBDeviceSpeedFull, kUSBDeviceSpeedHigh
highSpeedHubЕсли скорость не является kUSBDeviceSpeedHigh, адресом высокоскоростного концентратора для обращения транзакций разделения к.
highSpeedPortЕсли скорость не является kUSBDeviceSpeedHigh, порт концентратора для обращения транзакций разделения к
-
Создайте конечную точку в контроллере, чтобы сделать контрольные сделки.
Объявление
C++
virtual IOReturn UIMCreateControlEndpoint( UInt8functionNumber, UInt8endpointNumber, UInt16maxPacketSize, UInt8speed, USBDeviceAddresshighSpeedHub, inthighSpeedPort) = 0;Параметры
functionNumberUSB-устройство ID устройства
endpointNumberадрес конечной точки конечной точки в устройстве
maxPacketSizeмаксимальный размер пакета этой конечной точки
speedскорость устройства kUSBDeviceSpeedLow, kUSBDeviceSpeedFull, kUSBDeviceSpeedHigh
highSpeedHubЕсли скорость не является kUSBDeviceSpeedHigh, адресом высокоскоростного концентратора для обращения транзакций разделения к.
highSpeedPortЕсли скорость не является kUSBDeviceSpeedHigh, порт концентратора для обращения транзакций разделения к
-
Создайте конечную точку в контроллере, чтобы сделать транзакции прерывания.
Объявление
C++
virtual IOReturn UIMCreateInterruptEndpoint( shortfunctionAddress, shortendpointNumber, UInt8direction, shortspeed, UInt16maxPacketSize, shortpollingRate, USBDeviceAddresshighSpeedHub, inthighSpeedPort) = 0;Параметры
functionAddressUSB-устройство ID устройства
endpointNumberадрес конечной точки конечной точки в устройстве
directionНаправление потока данных. kUSBIn или kUSBOut
speedскорость устройства kUSBDeviceSpeedLow, kUSBDeviceSpeedFull, kUSBDeviceSpeedHigh
maxPacketSizeмаксимальный размер пакета этой конечной точки
pollingRateМаксимальный интервал опроса от дескриптора конечной точки.
highSpeedHubЕсли скорость не является kUSBDeviceSpeedHigh, адресом высокоскоростного концентратора для обращения транзакций разделения к.
highSpeedPortЕсли скорость не является kUSBDeviceSpeedHigh, порт концентратора для обращения транзакций разделения к
-
UIMCreateIsochEndpoint (короткий, короткий, UInt32, UInt8, USBDeviceAddress, интервал) - UIMCreateIsochEndpoint (короткий, короткий, UInt32, UInt8, USBDeviceAddress, интервал)Создайте конечную точку в контроллере, чтобы сделать Изохронные транзакции.
Объявление
C++
virtual IOReturn UIMCreateIsochEndpoint( shortfunctionAddress, shortendpointNumber, UInt32maxPacketSize, UInt8direction, USBDeviceAddresshighSpeedHub, inthighSpeedPort) = 0;Параметры
functionAddressUSB-устройство ID устройства
endpointNumberадрес конечной точки конечной точки в устройстве
maxPacketSizeмаксимальный размер пакета этой конечной точки
directionУказывает направление для конечной точки. kUSBIn или KUSBOut.
highSpeedHubЕсли не нуль, это - устройство полной скорости, адрес высокоскоростного концентратора для обращения транзакций разделения к.
highSpeedPortЕсли highSpeedHub не является нулем, порт концентратора для обращения транзакций разделения к
-
UIMCreateIsochEndpoint (короткий, короткий, UInt32, UInt8, USBDeviceAddress, интервал, UInt8) - UIMCreateIsochEndpoint (короткий, короткий, UInt32, UInt8, USBDeviceAddress, интервал, UInt8)Создайте конечную точку в контроллере, чтобы сделать Изохронные транзакции.
Объявление
C++
virtual IOReturn UIMCreateIsochEndpoint( shortfunctionAddress, shortendpointNumber, UInt32maxPacketSize, UInt8direction, USBDeviceAddresshighSpeedHub, inthighSpeedPort, UInt8interval);Параметры
functionAddressUSB-устройство ID устройства
endpointNumberадрес конечной точки конечной точки в устройстве
maxPacketSizeмаксимальный размер пакета этой конечной точки
directionУказывает направление для конечной точки. kUSBIn или KUSBOut.
highSpeedHubЕсли не нуль, это - устройство полной скорости, адрес высокоскоростного концентратора для обращения транзакций разделения к.
highSpeedPortЕсли highSpeedHub не является нулем, порт концентратора для обращения транзакций разделения к
intervalЗакодированный интервал оценивает от дескриптора конечной точки
-
Объявление
C++
virtual IOReturn UpdateDeviceAddress( USBDeviceAddressoldDeviceAddress, USBDeviceAddressnewDeviceAddress, UInt8speed, USBDeviceAddresshubAddress, intport);Параметры
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число байтов, которые требуют на передачу (не должно быть больше, чем длина буфера),
Обсуждение
Запишите в поток на объемной конечной точке
