Класс UsbEndpoint представляет конечную точку интерфейса UsbInterface в устройстве USB, подключенном к системе Android, работающей в режиме хоста. Интерфейс может иметь одну или несколько конечных точек UsbEndpoint, которые олицетворяют каналы взаимодействия (обмена данными) между хостом USB (в данном случае это система Android) и устройством USB - для отправки и приема данных.
[Обзор класса UsbEndpoint]
Android поддерживает 3 типа конечных точек - bulk, interrupt и control. Обычно bulk endpoint используются для пересылки нетривиально больших объемов данных. Interrupt endpoints используются для отправки малых порций данных отдельно от главных потоков данных, и обычно соответствуют неким событиям. Control endpoint (она же default endpoint, она же endpoint 0) - специальная конечная точка, которая используется для управляющих сообщений, отправляемых от хоста к устройству (при этом передача данных может быть осуществлена в любую сторону, в зависимости от типа запроса хоста). Есть также 4-й тип конечных точек, неподдерживаемых в настоящее время Android - изохронные конечные точки (isochronous endpoint).
При доступе к устройствам USB обычно используется следующая цепочка использования классов (UsbEndpoint является промежуточным звеном взаимодействия с устройствами USB):
UsbManager -> UsbDevice -> UsbInterface -> UsbEndpoint -> UsbDeviceConnection
Класс UsbEndpoint находится в пакете android.hardware.usb.UsbEndpoint, расширяет (extends) объект Object, и реализует (implements) объект Parcelable. Класс UsbEndpoint (как и поддержка режима хоста USB) была добавлена в Android начиная с API Level 12. Общую информацию по поддержке режимов Host и Accessory см. в [2].
Общедоступные методы (Public Methods) |
int |
describeContents()
Описывает некие специальные объекты, содержащиеся в этом упорядоченном представлении Parcelable.
|
int |
getAddress()
Возвращает поле адреса конечной точки.
|
int |
getAttributes()
Возвращает поле атрибутов конечной точки.
|
int |
getDirection()
Возвращает направление передачи конечной точки.
|
int |
getEndpointNumber()
Выделяет из адреса конечной точки её номер.
|
int |
getInterval()
Возвращает поле интервала конечной точки.
|
int |
getMaxPacketSize()
Returns the endpoint's maximum packet size.
|
int |
getType()
Возвращает тип конечной точки.
|
String |
toString()
Возвращает строку с кратким, удобным для чтения человеком описанием этого объекта.
|
void |
writeToParcel(Parcelparcel, int flags)
Сводит этот объект к Parcel.
|
[Поля (Fields)]
[Общедоступные методы (Public Methods)]
public int describeContents ()
Описывает некие специальные объекты, содержащиеся в этом упорядоченном представлении Parcelable.
Возвращает
- битовую маску, показывающую набор специальных объектов, упорядоченных через Parcelable.
public int getAddress ()
Возвращает поле адреса конечной точки, полученное из дескрипторов. Поле адреса является битовым, и оно содержит адрес конечной точки (младшие 7 бит поля адреса) и бит направления передачи данных конечной точки (старший бит поля адреса). По отдельности к адресу конечной точки и её направлению можно получить доступ методами getEndpointNumber() и getDirection() .
public int getAttributes ()
Возвращает поле атрибутов конечной точки, полученное из дескрипторов.
public int getDirection ()
Возвращает направление передачи данных конечной точки. Вернет USB_DIR_OUT , если направление от хоста к устройству USB, и USB_DIR_IN , если направление от устройства USB к хосту. Хостом в данном случае выступает система Android.
Возвращает
- направление конечной точки
public int getEndpointNumber ()
Получает номер конечной точки, взятый из адреса.
public int getInterval ()
Возвращает поле интервала конечной точки, полученное из дескрипторов. Интервал - это целое число, определяющее период времени между пакетами в миллисекундах.
public int getMaxPacketSize ()
Возвращает максимальный размер пакета данных конечной точки.
Возвращает
- максимальный размер пакета конечной точки
public int getType ()
Возвращает тип конечной точки. Возможные результаты:
public String toString ()
Возвращает строку с кратким, удобным для чтения человеком описанием этого объекта. Рекомендуется для подклассов перезадавать (override) этот метод и предоставлять реализацию, которая учитывает тип и данные объекта. Реализация по умолчанию эквивалентна следующему выражению:
getClass().getName()+'@'+Integer.toHexString(hashCode())
См. документацию Writing a useful toString method, если хотите создать свою собственную реализацию метода toString .
Возвращает
- печатаемое текстовое представление этого объекта.
public void writeToParcel (Parcel parcel, int flags)
Сводит этот объект в Parcel.
Параметры
parcel |
Parcel, в который объект должен быть записан. |
flags |
Дополнительные флаги, сигнализирующие о том, как этот объект должен быть записан. Может быть равен либо 0, либо PARCELABLE_WRITE_RETURN_VALUE . |
[Ссылки]
1. UsbEndpoint site:developer.android.com. 2. Android как USB хост и как USB устройство. |