IOUSBInterfaceInterface
Объект Вы используете для доступа к интерфейсу USB-устройства от пространства пользователя, возвращенного всеми версиями IOUSBFamily, в настоящее время поставляющего.
Функции, перечисленные здесь, будут работать с любой версией IOUSBInterfaceInterface, включая тот, поставленный с версией 10.0 OS X.
Наследование
Не применимый
Соответствует
Не применимый
Оператор импорта
Не применимый не применимый
-
Аварийные прекращения работы любые выдающиеся транзакции на канале с состоянием kIOReturnAborted.
Объявление
C++
IOReturn ( *AbortPipe)(void *self,UInt8 pipeRef);Параметры
selfУказатель на IOUSBInterfaceInterface.
pipeRefИндекс для желаемого канала (1 - GetNumEndpoints).
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService или kIOReturnNotOpen, если интерфейс не открыт для эксклюзивного доступа.
Обсуждение
Если будут выдающиеся асинхронные транзакции на канале, то обратные вызовы произойдут. Обратите внимание на то, что эта команда также очистится, остановленный обдумал конечную точку в контроллере, но НЕ очистит бит переключателя данных. Если Вы хотите очистить бит переключателя данных также, посмотрите
ClearPipeStallилиClearPipeStallBothEndsдля получения дополнительной информации. Интерфейс должен быть открыт для канала для существования. -
Очищает остановленный бит, и переключатель данных обдумал конечную точку канала в контроллере.
Объявление
C++
IOReturn ( *ClearPipeStall)(void *self,UInt8 pipeRef);Параметры
selfУказатель на IOUSBInterfaceInterface.
pipeRefИндекс для желаемого канала (1 - GetNumEndpoints).
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService или kIOReturnNotOpen, если интерфейс не открыт для эксклюзивного доступа.
Обсуждение
Эта функция также возвращает любые выдающиеся транзакции на канале с состоянием kIOUSBTransactionReturned. Если будут выдающиеся асинхронные транзакции на канале, то обратные вызовы произойдут. Переключатель данных, возможно, должен быть ресинхронизирован. Драйвер может обработать это путем отправки ClearFeature (ENDPOINT_HALT) в канал управления по умолчанию, указания конечной точки устройства для этого канала. См. также
ClearPipeStallBothEnds. -
Отправляет запрос USB на канале управления.
Объявление
C++
IOReturn ( *ControlRequest)(void *self,UInt8 pipeRef,IOUSBDevRequest *req);Параметры
selfУказатель на IOUSBInterfaceInterface.
pipeRefИндекс управления передает по каналу для использования. Используйте нуль для канала управления по умолчанию на устройстве.
reqУказатель на IOUSBDevRequest, содержащий запрос.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService, kIOReturnAborted, если поток прерван перед вызовом, завершаются, или kIOReturnNotOpen, если интерфейс не открыт для эксклюзивного доступа.
Обсуждение
Если запрос является стандартным запросом, который изменит состояние устройства, устройство должно быть открыто, что означает, что необходимо использовать IOUSBDeviceInterface для этой команды.
-
Отправляет асинхронный запрос USB на канале управления.
Объявление
C++
IOReturn ( *ControlRequestAsync)(void *self,UInt8 pipeRef,IOUSBDevRequest *req,IOAsyncCallback1 callback,void *refCon);Параметры
selfУказатель на IOUSBInterfaceInterface.
pipeRefИндекс управления передает по каналу для использования. Используйте нуль для канала управления по умолчанию на устройстве.
reqУказатель на IOUSBDevRequest, содержащий запрос.
callbackМетод IOAsyncCallback1. Сообщение, адресуемое этому обратному вызову, добавлено к Асинхронному порту после завершения.
refConПроизвольный указатель, передающийся в качестве параметра подпрограмме обратного вызова.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService, kIOReturnNotOpen, если интерфейс не открыт для эксклюзивного доступа или kIOUSBNoAsyncPortErr, если никакой Асинхронный порт не был создан для этого интерфейса.
Обсуждение
Используйте pipeRef=0 для канала управления устройствами по умолчанию. Если запрос является стандартным запросом, который изменит состояние устройства, устройство должно быть открыто, что означает, что необходимо использовать IOUSBDeviceInterface для этой команды.
-
Создает источник цикла выполнения для поставки всех асинхронных уведомлений на этом устройстве.
Объявление
C++
IOReturn ( *CreateInterfaceAsyncEventSource)(void *self,CFRunLoopSourceRef *source);Параметры
selfУказатель на IOUSBInterfaceInterface.
sourceУказатель на CFRunLoopSourceRef для возврата недавно создаваемого источника события цикла выполнения.
Возвращаемое значение
Возвраты kIOReturnSuccess, если успешный или kern_return_t, если отказавший.
Обсуждение
Ядро OS X не порождает поток к обратному вызову клиенту. Вместо этого это поставляет уведомления завершения на порту Маха (см.
CreateInterfaceAsyncPort). Эти обертки подпрограммы, что порт с надлежащим кодом маршрутизации так, чтобы уведомления завершения могли быть автоматически направлены через CFRunLoop клиента. -
Создает и регистрирует mach_port_t для асинхронной передачи.
Объявление
C++
IOReturn ( *CreateInterfaceAsyncPort)(void *self,mach_port_t *port);Параметры
selfУказатель на IOUSBInterfaceInterface.
Возвращаемое значение
Возвраты kIOReturnSuccess, если успешный или kern_return_t, если отказавший.
Обсуждение
Ядро OS X не порождает поток к обратному вызову клиенту. Вместо этого это поставляет уведомления завершения на этом порту Маха. После получения сообщения на этом порту клиент обязан вызвать IOKitLib.h: IODispatchCalloutFromMessage () функционируют для декодирования уведомления.
-
Возвращает альтернативу, устанавливающую в настоящее время выбираемый в этом интерфейсе.
Объявление
C++
IOReturn ( *GetAlternateSetting)(void *self,UInt8 *intfAltSetting);Параметры
selfУказатель на IOUSBInterfaceInterface.
intfAltSettingУказатель на UInt8 для содержания альтернативного значения установки.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService.
Обсуждение
Интерфейс не должен быть открыт для использования этой функции.
-
Получает текущее число кадра шины, к которой присоединяются интерфейс и его устройство.
Объявление
C++
IOReturn ( *GetBusFrameNumber)(void *self,UInt64 *frame,AbsoluteTime *atTime);Параметры
selfУказатель на IOUSBInterfaceInterface.
frameУказатель на UInt64 для содержания числа кадра.
atTimeУказатель на AbsoluteTime, который должен быть в 1 мс времени, когда было достигнуто число кадра шины.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService.
Обсуждение
Интерфейс не должен быть открыт для использования этой функции.
-
Возвращает текущий набор значений конфигурации в устройстве (интерфейс будет частью той конфигурации.)
Объявление
C++
IOReturn ( *GetConfigurationValue)(void *self,UInt8 *configVal);Параметры
selfУказатель на IOUSBInterfaceInterface.
configValУказатель на UInt8 для содержания значения конфигурации.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService.
Обсуждение
Интерфейс не должен быть открыт для использования этой функции.
-
Возвращает устройство, которого этот интерфейс является частью.
Объявление
C++
IOReturn ( *GetDevice)(void *self,io_service_t *device);Параметры
selfУказатель на IOUSBInterfaceInterface.
deviceУказатель на io_service_t для содержания результата.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService.
Обсуждение
Интерфейс не должен быть открыт для использования этой функции. Возвращенное устройство может использоваться для создания CFPlugin, чтобы говорить с устройством.
-
Возвращает Идентификатор продукта USB (idProduct) устройства, которого этот интерфейс является частью.
Объявление
C++
IOReturn ( *GetDeviceProduct)(void *self,UInt16 *devProduct);Параметры
selfУказатель на IOUSBInterfaceInterface.
devProductУказатель на UInt16 для содержания ProductID.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService.
Обсуждение
Интерфейс не должен быть открыт для использования этой функции.
-
Возвращает Номер выпуска Устройства (bcdDevice) устройства, которого этот интерфейс является частью.
Объявление
C++
IOReturn ( *GetDeviceReleaseNumber)(void *self,UInt16 *devRelNum);Параметры
selfУказатель на IOUSBInterfaceInterface.
devRelNumУказатель на UInt16 для содержания Номера выпуска.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService.
Обсуждение
Интерфейс не должен быть открыт для использования этой функции.
-
Возвращает Идентификатор поставщика USB (idVendor) устройства, которого этот интерфейс является частью.
Объявление
C++
IOReturn ( *GetDeviceVendor)(void *self,UInt16 *devVendor);Параметры
selfУказатель на IOUSBInterfaceInterface.
devVendorУказатель на UInt16 для содержания vendorID.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService.
Обсуждение
Интерфейс не должен быть открыт для использования этой функции.
-
Возвращает CFRunLoopSourceRef для этого экземпляра IOService.
Объявление
C++
CFRunLoopSourceRef ( *GetInterfaceAsyncEventSource)(void *self);Параметры
selfУказатель на IOUSBInterfaceInterface.
Возвращаемое значение
Возвращает источник цикла выполнения, если Вы были созданы, 0 иначе.
Обсуждение
(описание)
-
Возвращает mach_port_t порт для этого экземпляра IOService.
Объявление
C++
mach_port_t ( *GetInterfaceAsyncPort)(void *self);Параметры
selfУказатель на IOUSBInterfaceInterface.
Возвращаемое значение
Возвращает порт, если Вы существуете, 0 иначе.
-
Возвращает Класс USB интерфейса (bInterfaceClass).
Объявление
C++
IOReturn ( *GetInterfaceClass)(void *self,UInt8 *intfClass);Параметры
selfУказатель на IOUSBInterfaceInterface.
intfClassУказатель на UInt8 для содержания интерфейса Class.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService.
Обсуждение
Интерфейс не должен быть открыт для использования этой функции.
-
Возвращает интерфейсное число (основанный на нуле индекс) этого интерфейса в текущей конфигурации устройства.
Объявление
C++
IOReturn ( *GetInterfaceNumber)(void *self,UInt8 *intfNumber);Параметры
selfУказатель на IOUSBInterfaceInterface.
intfNumberУказатель на UInt8 для содержания интерфейсного числа.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService.
Обсуждение
Интерфейс не должен быть открыт для использования этой функции.
-
Возвращает Протокол USB интерфейса (bInterfaceProtocol).
Объявление
C++
IOReturn ( *GetInterfaceProtocol)(void *self,UInt8 *intfProtocol);Параметры
selfУказатель на IOUSBInterfaceInterface.
intfProtocolУказатель на UInt8 для содержания интерфейса Protocol.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService.
Обсуждение
Интерфейс не должен быть открыт для использования этой функции.
-
Возвращает Подкласс USB интерфейса (bInterfaceSubClass).
Объявление
C++
IOReturn ( *GetInterfaceSubClass)(void *self,UInt8 *intfSubClass);Параметры
selfУказатель на IOUSBInterfaceInterface.
intfSubClassУказатель на UInt8 для содержания интерфейса Subclass.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService.
Обсуждение
Интерфейс не должен быть открыт для использования этой функции.
-
Возвращает расположение ID.
Объявление
C++
IOReturn ( *GetLocationID)(void *self,UInt32 *locationID);Параметры
selfУказатель на IOUSBInterfaceInterface.
locationIDУказатель на UInt32 для содержания расположения ID.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService.
Обсуждение
ID расположения является числом на 32 бита, которое уникально среди всех USB-устройств в системе, и которое не изменится на системной перезагрузке, если не изменится топология самой шины. Интерфейс не должен быть открыт для использования этой функции.
-
Возвращает число конечных точек в этом интерфейсе.
Объявление
C++
IOReturn ( *GetNumEndpoints)(void *self,UInt8 *intfNumEndpoints);Параметры
selfУказатель на IOUSBInterfaceInterface.
intfNumEndpointsУказатель на UInt8 для содержания числа конечных точек.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService.
Обсуждение
Интерфейс не должен быть открыт для использования этой функции.
-
Получает свойства для канала.
Объявление
C++
IOReturn ( *GetPipeProperties)(void *self,UInt8 pipeRef,UInt8 *direction,UInt8 *number,UInt8 *transferType,UInt16 *maxPacketSize,UInt8 *interval);Параметры
selfУказатель на IOUSBInterfaceInterface.
pipeRefИндекс для желаемого канала (1 - GetNumEndpoints).
directionУказатель на UInt8 для получения направления канала.
numberУказатель на UInt8 для получения числа канала.
transferTypeУказатель на UInt8 для получения типа передачи канала.
maxPacketSizeУказатель на UInt16 для получения maxPacketSize канала.
intervalУказатель на UInt8 для получения интервала для опроса канала для данных (в миллисекундах).
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService или kIOReturnNotOpen, если интерфейс не открыт для эксклюзивного доступа.
Обсуждение
Как только интерфейс открыт, все каналы в том интерфейсе создаются ядром. Число каналов может быть получено GetNumEndpoints. Клиент может тогда получить свойства любого канала с помощью индекса 1 к GetNumEndpoints. Канал 0 является каналом управления по умолчанию в устройстве.
-
Получает текущий статус канала.
Объявление
C++
IOReturn ( *GetPipeStatus)(void *self,UInt8 pipeRef);Параметры
selfУказатель на IOUSBInterfaceInterface.
pipeRefИндекс для желаемого канала (1 - GetNumEndpoints).
Возвращаемое значение
Возвраты kIOReturnNoDevice, если нет никакого соединения с IOService или kIOReturnNotOpen, если интерфейс не открыт для эксклюзивного доступа. Иначе, состояние канала возвращается. Возвраты kIOUSBPipeStalled, если останавливается канал. Посмотрите
ClearPipeStallилиClearPipeStallBothEndsдля получения дополнительной информации.Обсуждение
Интерфейс должен быть открыт для канала для существования.
-
Выполняет чтение на канале ISOCHRONOUS.
Объявление
C++
IOReturn ( *ReadIsochPipeAsync)(void *self,UInt8 pipeRef,void *buf,UInt64 frameStart,UInt32 numFrames,IOUSBIsocFrame *frameList,IOAsyncCallback1 callback,void *refcon);Параметры
selfУказатель на IOUSBInterfaceInterface.
pipeRefИндекс для желаемого канала (1 - GetNumEndpoints).
bufБуфер для содержания данных.
frameStartЧисло кадра шины, на котором можно запустить чтение (полученный из GetBusFrameNumber).
numFramesЧисло кадров, для которых можно передать данные.
frameListУказатель на массив структур IOUSBIsocFrame, описывающих кадры.
callbackМетод IOAsyncCallback1. Сообщение, адресуемое этому обратному вызову, добавлено к Асинхронному порту после завершения.
refconПроизвольный указатель, передающийся в качестве параметра подпрограмме обратного вызова.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService или kIOReturnNotOpen, если интерфейс не открыт для эксклюзивного доступа.
Обсуждение
Интерфейс должен быть открыт для канала для существования.
-
Считывает данные на BULK IN или канал INTERRUPT.
Объявление
C++
IOReturn ( *ReadPipe)(void *self,UInt8 pipeRef,void *buf,UInt32 *size);Параметры
selfУказатель на IOUSBInterfaceInterface.
pipeRefИндекс для желаемого канала (1 - GetNumEndpoints).
bufБуфер для содержания данных.
sizeНа записи: на указатель на размер буфера указывает buf. На выходе: указатель на число байтов фактически читал из устройства.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService или kIOReturnNotOpen, если интерфейс не открыт для эксклюзивного доступа.
Обсуждение
Интерфейс должен быть открыт для канала для существования.
-
Выполняет асинхронное чтение на BULK IN или канал INTERRUPT.
Объявление
C++
IOReturn ( *ReadPipeAsync)(void *self,UInt8 pipeRef,void *buf,UInt32 size,IOAsyncCallback1 callback,void *refcon);Параметры
selfУказатель на IOUSBInterfaceInterface.
pipeRefИндекс для желаемого канала (1 - GetNumEndpoints).
bufБуфер для содержания данных.
sizeНа размер буфера указывает buf.
callbackМетод IOAsyncCallback1. Сообщение, адресуемое этому обратному вызову, добавлено к Асинхронному порту после завершения.
refconПроизвольный указатель, передающийся в качестве параметра подпрограмме обратного вызова.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService, kIOReturnAborted, если поток прерван перед вызовом, завершаются, или kIOReturnNotOpen, если интерфейс не открыт для эксклюзивного доступа.
Обсуждение
Интерфейс должен быть открыт для канала для существования.
-
Эквивалентный ClearPipeStall.
Объявление
C++
IOReturn ( *ResetPipe)(void *self,UInt8 pipeRef);Параметры
selfУказатель на IOUSBInterfaceInterface.
pipeRefИндекс для желаемого канала (1 - GetNumEndpoints).
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService или kIOReturnNotOpen, если интерфейс не открыт для эксклюзивного доступа.
Обсуждение
Интерфейс должен быть открыт для канала для существования.
-
Изменяет настройки AltInterface.
Объявление
C++
IOReturn ( *SetAlternateInterface)(void *self,UInt8 alternateSetting);Параметры
selfУказатель на IOUSBInterfaceInterface.
alternateSettingНовая альтернативная установка для интерфейса.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService или kIOReturnNotOpen, если интерфейс не открыт для эксклюзивного доступа.
Обсуждение
Интерфейс должен быть открыт для использования этой функции.
-
Закрывает соединение задачи с IOUSBInterface.
Объявление
C++
IOReturn ( *USBInterfaceClose)(void *self);Параметры
selfУказатель на IOUSBInterfaceInterface.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService.
Обсуждение
Выпускает эксклюзивный доступ клиента к IOUSBInterface.
-
Opensthe IOUSBInterface для эксклюзивного доступа.
Объявление
C++
IOReturn ( *USBInterfaceOpen)(void *self);Параметры
selfУказатель на IOUSBInterfaceInterface.
Возвращаемое значение
Возвраты kIOReturnExclusiveAccess, если некоторой другой задаче уже открыли устройство, kIOReturnError, если соединение с ядром не может быть установлено или kIOReturnSuccess в случае успеха.
Обсуждение
Прежде чем клиент может передать данные и от интерфейса, они, должно быть, преуспели в том, чтобы открыть интерфейс. Это устанавливает монопольную ссылку между задачей клиента и фактическим устройством интерфейса. Открытие интерфейса заставляет каналы создаваться на каждой конечной точке, содержавшейся в интерфейсе. Если интерфейс содержит изохронные конечные точки, попытка предпринята для выделения пропускной способности на шине для каждого из тех каналов. Если существует недостаточно доступной пропускной способности, изохронный канал может быть создан с пропускной способностью нуля. Программное обеспечение должно тогда вызвать SetPipePolicy для изменения размера того канала, прежде чем это сможет использоваться для I/O.
-
Выполняет асинхронную запись на канале ISOCHRONOUS.
Объявление
C++
IOReturn ( *WriteIsochPipeAsync)(void *self,UInt8 pipeRef,void *buf,UInt64 frameStart,UInt32 numFrames,IOUSBIsocFrame *frameList,IOAsyncCallback1 callback,void *refcon);Параметры
selfУказатель на IOUSBInterfaceInterface.
pipeRefИндекс для желаемого канала (1 - GetNumEndpoints).
bufБуфер для содержания данных.
frameStartЧисло кадра шины, на котором можно запустить запись (полученный из GetBusFrameNumber).
numFramesЧисло кадров, для которых можно передать данные.
frameListУказатель на массив структур IOUSBIsocFrame, описывающих кадры.
callbackМетод IOAsyncCallback1. Сообщение, адресуемое этому обратному вызову, добавлено к Асинхронному порту после завершения.
refconПроизвольный указатель, передающийся в качестве параметра подпрограмме обратного вызова.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService или kIOReturnNotOpen, если интерфейс не открыт для эксклюзивного доступа.
Обсуждение
Интерфейс должен быть открыт для канала для существования.
-
Данные записей по BULK OUT или INTERRUPT канал OUT.
Объявление
C++
IOReturn ( *WritePipe)(void *self,UInt8 pipeRef,void *buf,UInt32 size);Параметры
selfУказатель на IOUSBInterfaceInterface.
pipeRefИндекс для желаемого канала (1 - GetNumEndpoints).
bufБуфер для содержания данных.
sizeРазмер буфера данных.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService, kIOReturnAborted, если поток прерван перед вызовом, завершаются, или kIOReturnNotOpen, если интерфейс не открыт для эксклюзивного доступа.
Обсуждение
Интерфейс должен быть открыт для канала для существования.
-
Выполняет асинхронную запись на BULK OUT или INTERRUPT канал OUT.
Объявление
C++
IOReturn ( *WritePipeAsync)(void *self,UInt8 pipeRef,void *buf,UInt32 size,IOAsyncCallback1 callback,void *refcon);Параметры
selfУказатель на IOUSBInterfaceInterface.
pipeRefИндекс для желаемого канала (1 - GetNumEndpoints).
bufБуфер для содержания данных.
sizeНа размер буфера указывает buf.
callbackМетод IOAsyncCallback1. Сообщение, адресуемое этому обратному вызову, добавлено к Асинхронному порту после завершения.
refconПроизвольный указатель, передающийся в качестве параметра подпрограмме обратного вызова.
Возвращаемое значение
Возвраты kIOReturnSuccess в случае успеха, kIOReturnNoDevice, если нет никакого соединения с IOService или kIOReturnNotOpen, если интерфейс не открыт для эксклюзивного доступа.
Обсуждение
Интерфейс должен быть открыт для канала для существования.
