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( UInt8
maxPacketSize
, 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( USBDeviceAddress
address
, UInt8speed
, Endpoint *endpoint
);Параметры
address
Адрес устройства на Шине USB
speed
из устройства: kUSBDeviceSpeedLow, kUSBDeviceSpeedFull, kUSBDeviceSpeedHigh или kUSBDeviceSpeedSuper
endpoint
описание конечной точки для соединения с
Обсуждение
Откройте канал для указанной конечной точки устройства
-
openPipe (USBDeviceAddress, UInt8, Конечная точка *) - openPipe (USBDeviceAddress, UInt8, Конечная точка *)
Объявление
C++
virtual IOReturn OpenPipe( USBDeviceAddress
address
, 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( USBDeviceAddress
address
, UInt8speed
, Endpoint *endpoint
, UInt32maxStreams
, UInt32maxBurstAndMult
);Параметры
address
Адрес устройства на Шине USB
speed
из устройства: kUSBDeviceSpeedLow, kUSBDeviceSpeedFull, kUSBDeviceSpeedHigh или kUSBDeviceSpeedSuper
endpoint
описание конечной точки для соединения с
maxStreams
максимальное количество потоков передает поддержки по каналу
maxBurstAndMult
максимальное количество пакетов и пакетного множителя
Обсуждение
Откройте канал для указанной конечной точки устройства
-
Объявление
C++
virtual IOReturn OpenSSPipe( USBDeviceAddress
address
, 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( UInt32
streamID
, 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( UInt32
streamID
, 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( UInt8
functionNumber
, 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( UInt8
functionNumber
, UInt8endpointNumber
, UInt16maxPacketSize
, UInt8speed
, USBDeviceAddresshighSpeedHub
, inthighSpeedPort
) = 0;Параметры
functionNumber
USB-устройство ID устройства
endpointNumber
адрес конечной точки конечной точки в устройстве
maxPacketSize
максимальный размер пакета этой конечной точки
speed
скорость устройства kUSBDeviceSpeedLow, kUSBDeviceSpeedFull, kUSBDeviceSpeedHigh
highSpeedHub
Если скорость не является kUSBDeviceSpeedHigh, адресом высокоскоростного концентратора для обращения транзакций разделения к.
highSpeedPort
Если скорость не является kUSBDeviceSpeedHigh, порт концентратора для обращения транзакций разделения к
-
Создайте конечную точку в контроллере, чтобы сделать транзакции прерывания.
Объявление
C++
virtual IOReturn UIMCreateInterruptEndpoint( short
functionAddress
, 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, порт концентратора для обращения транзакций разделения к
-
UIMCreateIsochEndpoint (короткий, короткий, UInt32, UInt8, USBDeviceAddress, интервал) - UIMCreateIsochEndpoint (короткий, короткий, UInt32, UInt8, USBDeviceAddress, интервал)
Создайте конечную точку в контроллере, чтобы сделать Изохронные транзакции.
Объявление
C++
virtual IOReturn UIMCreateIsochEndpoint( short
functionAddress
, shortendpointNumber
, UInt32maxPacketSize
, UInt8direction
, USBDeviceAddresshighSpeedHub
, inthighSpeedPort
) = 0;Параметры
functionAddress
USB-устройство ID устройства
endpointNumber
адрес конечной точки конечной точки в устройстве
maxPacketSize
максимальный размер пакета этой конечной точки
direction
Указывает направление для конечной точки. kUSBIn или KUSBOut.
highSpeedHub
Если не нуль, это - устройство полной скорости, адрес высокоскоростного концентратора для обращения транзакций разделения к.
highSpeedPort
Если highSpeedHub не является нулем, порт концентратора для обращения транзакций разделения к
-
UIMCreateIsochEndpoint (короткий, короткий, UInt32, UInt8, USBDeviceAddress, интервал, UInt8) - UIMCreateIsochEndpoint (короткий, короткий, UInt32, UInt8, USBDeviceAddress, интервал, UInt8)
Создайте конечную точку в контроллере, чтобы сделать Изохронные транзакции.
Объявление
C++
virtual IOReturn UIMCreateIsochEndpoint( short
functionAddress
, shortendpointNumber
, UInt32maxPacketSize
, UInt8direction
, USBDeviceAddresshighSpeedHub
, inthighSpeedPort
, UInt8interval
);Параметры
functionAddress
USB-устройство ID устройства
endpointNumber
адрес конечной точки конечной точки в устройстве
maxPacketSize
максимальный размер пакета этой конечной точки
direction
Указывает направление для конечной точки. kUSBIn или KUSBOut.
highSpeedHub
Если не нуль, это - устройство полной скорости, адрес высокоскоростного концентратора для обращения транзакций разделения к.
highSpeedPort
Если highSpeedHub не является нулем, порт концентратора для обращения транзакций разделения к
interval
Закодированный интервал оценивает от дескриптора конечной точки
-
Объявление
C++
virtual IOReturn UpdateDeviceAddress( USBDeviceAddress
oldDeviceAddress
, USBDeviceAddressnewDeviceAddress
, UInt8speed
, USBDeviceAddresshubAddress
, intport
);Параметры
deviceAddress
Адрес устройства на Шине USB
speed
из устройства: kUSBDeviceSpeedLow, kUSBDeviceSpeedFull, kUSBDeviceSpeedHigh или kUSBDeviceSpeedSuper
highSpeedHub
Если не нуль, это - устройство полной скорости, адрес высокоскоростного концентратора для обращения транзакций разделения к.
highSpeedPort
Если highSpeedHub не является нулем, порт концентратора для обращения транзакций разделения к
Обсуждение
Скажите контроллер о новом адресе устройства. Используемый, когда было сброшено устройство
-
Объявление
C++
virtual IOReturn WriteStream( UInt32
streamID
, 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( UInt32
streamID
, IOMemoryDescriptor *buffer
, USBDeviceAddressaddress
, Endpoint *endpoint
, IOUSBCompletion *completion
, UInt32noDataTimeout
, UInt32completionTimeout
, IOByteCountreqCount
);Параметры
streamID
поток ID потока для записи в
buffer
место для получения переданных данных
address
Адрес устройства на Шине USB
endpoint
описание конечной точки
completion
когда буфер был освобожден, описывает действие для взятия
noDataTimeout
число миллисекунд никакого перемещения данных перед запросом прерывается
completionTimeout
число milliseonds после команды находится на шине, в которой это должно завершиться
reqCount
число байтов, которые требуют на передачу (не должно быть больше, чем длина буфера),
Обсуждение
Запишите в поток на объемной конечной точке