|
|
| TopPage > libusbを使ってみる |
| Contents |
| function | description | ||||||
| void usb_init(void); | 他の関数を使う前に実行しておかなければならない関数。これで内部structuresをset upする | ||||||
| int usb_find_busses(void); | system上の全てのbusを見つける。この関数を呼び出す前に変化した数(新しいbusと削除したbusの合計)を返す | ||||||
| int usb_find_devices(void); |
各々のbusの全てのdeviceを見つける。この関数は、usb_find_bussesを実行した後に実行すること。 この関数を呼び出す前に変化した数(新しいdeviceと削除したdeviceの合計)を返す |
||||||
| struct usb_bus *usb_get_busses(void); | この関数は、global変数であるusb_bussesの値を返す。 | ||||||
|
usb_dev_handle *usb_open (struct *usb_device dev); |
usb deviceをopenする | ||||||
|
int usb_close (usb_dev_handle *dev); |
usb_openで開いたdeviceをcloseする | ||||||
|
int usb_set_configuration (usb_dev_handle *dev, int configuration); |
deviceのactive configrationをsetする このconfigurationは、descriptor fildのbConfigrationValueによる 戻り値が0の場合は成功、0より小さい場合は、失敗 |
||||||
|
int usb_set_altinterface (usb_dev_handle *dev, int alternate); |
current interfaceのactive alternate settingをsetする このalternate parameterは、descriptor fildのbAlternateSettingによる 戻り値が0の場合は成功、0より小さい場合は、失敗 |
||||||
|
int usb_resetep (usb_dev_handle *dev, unsigned int ep); |
指定したendpointの全てのstateをresetする このep parameterは、descriptor fildのbEndpointAddressによる 戻り値が0の場合は成功、0より小さい場合は、失敗 usb_resetepを使いたくない場合は、usb_clear_haltを使用しても構わない |
||||||
|
int usb_clear_halt (usb_dev_handle *dev, unsigned int ep); |
指定したendpointのいくつかのstateをclearする このep parameterは、descriptor fildのbEndpointAddressによる 戻り値が0の場合は成功、0より小さい場合は、失敗 |
||||||
|
int usb_reset (usb_dev_handle *dev); |
接続が落ちたdeviceに対して、そのdeviceにRESETを送ってresetする 戻り値が0の場合は成功、0より小さい場合は、失敗 注意:この関数を使った後、新しいdeviceやhandleを調べる必要がある |
||||||
|
int usb_claim_interface (usb_dev_handle *dev, int interface); |
OSに対しinterfaceを要求する。 このinterface parameterは、descriptor fildのbInterfaceNumberによる 戻り値が0の場合は成功、0より小さい場合は、失敗 注意:usb_set_altinterface,usb_bulk_writeなどのinterfaceに関連した関数を使う前には必ず この関数を実行しなくてはならない
|
||||||
|
int usb_release_interface (usb_dev_handle *dev, int interface); |
usb_claim_interfaceで要求したinterfaceを開放する。 このinterface parameterは、descriptor fildのbInterfaceNumberによる 戻り値が0の場合は成功、0より小さい場合は、失敗 |
||||||
|
int usb_control_msg (usb_dev_handle *dev, int requesttype, int request, int value, int index, char *byte, int size, int timeout); |
device上のdefault control pipeに対してcontrol requestを実行する そのparameterはUSB specificationによる同じ名称で写す 戻り値は、read/writeのbyte数、0より小さい場合は、失敗として返す |
||||||
|
int usb_get_string (usb_dev_handle *dev, int index, int langid, char *buf, size_t buflen); |
deviceからindexとlangidによってdescriptor specifiedを文字列で取得する その文字列はUSB SpecificationによってUnicodeで返す 戻り値はbyte数、0より小さい場合は、失敗として返す |
||||||
|
int usb_get_string_simple (usb_dev_handle *dev, int index, char *buf, size_t buflen); |
この関数は、usb_get_stringのwrapper関数でdescreptorの first languageのindexでdescriction specifiedとして文字列を返し C styleのASCIIに変換する 戻り値はbyte数、0より小さい場合は、失敗として返す |
||||||
|
int usb_get_descriptor (usb_dev_handle *dev, unsigned char type, unsigned char index, void *buf, int size); |
この関数は、default control pipeからdescriptorのtypeとindexによりdevice identifiedを取得する 戻り値はdescriptorへのread byte数、0より小さい場合は、失敗として返す |
||||||
|
int usb_get_descriptor_by_endpoint (usb_dev_handle *dev, int ep, char type, unsgined char index, void *buf, int size); |
この関数は、epによるcontrol pipe identifiedからdescriptorのtypeとindexにより device identifiedのdescriptorを取得する 戻り値はdescriptorへのread byte数、0より小さい場合は、失敗として返す |
||||||
|
int usb_bulk_write (usb_dev_handle *dev, int ep, char *bytes, char *bytes, int size, int timeout); |
この関数は、epで指定したendpointにbulk write requestを実行する 戻り値は、成功した場合は、書き込んだbyte数、0より小さい場合は、失敗として返す |
||||||
|
int usb_bulk_read (usb_dev_handle *dev, int ep, char *bytes, int size, int timeout); |
この関数は、epで指定したendpointにbulk read requestを実行する 戻り値は、成功した場合は、読み込んだbyte数、0より小さい場合は、失敗として返す |
||||||
|
int usb_interrupt_write (usb_dev_handle *dev, int ep,char *bytes, int size, int timeout); |
この関数は、epで指定したendpointにinterrupt write requestを実行する 戻り値は、成功した場合は、書き込んだbyte数、0より小さい場合は、失敗として返す |
||||||
|
int usb_interrupt_read (usb_dev_handle *dev, int ep,char *bytes, int size, int timeout); |
この関数は、epで指定したendpointにinterrupt read requestを実行する 戻り値は、成功した場合は、読み込んだbyte数、0より小さい場合は、失敗として返す |
||||||
|
int usb_get_driver_np (usb_dev_handle *dev, int interface, char *name, int namelen); |
この関数は、パラメータinterfaceで指定したinterfaceと namelen文字列で指定したbuffer名で示されたdriver名を取得する 戻り値は、成功したら0、失敗したら0以下を返す |
||||||
|
int usb_detach_kernel_driver_np (usb_dev_handle *dev, int interface); |
この関数は、パラメータinterfaceで指定したinterfaceからkernel driverを離す usblibを使用するアプリケーションは、interfaceに対してそれを要求してみることが可能である 戻り値は、成功したら0、失敗したら0以下を返す |
| タグ名 | 型 | メンバ名 | description |
| usb_dev_handle | int | fd | |
| struct usb_bus | *bus | ||
| struct usb_device | *device | ||
| int | config | ||
| int | interface | ||
| int | altsetting | ||
| void | *imple_info | ||
| usb_bus | struct usb_bus | *next | |
| struct usb_bus | *prev | ||
| char | dirname[PATH_MAX + 1] |
ファイルシステム上の/dev/bus/usbの下の ファイル名(3桁の数字)を示す |
|
| struct usb_device | *devices | ||
| u_int32_t | location | ||
| struct usb_device | *root_dev | ||
| usb_device | struct usb_device | *next | |
| struct usb_device | *prev | ||
| char | filename[PATH_MAX + 1] |
ファイルシステム上の/dev/bus/usb/XXX/の下の ファイル名(3桁の数字)を示す |
|
| struct usb_bus | *bus | ||
| struct usb_device_descriptor | descriptor | ||
| struct usb_config_descriptor | *config | ||
| void | *dev | ||
| u_int8_t | devnum | ||
| unsigned char | num_children | ||
| struct usb_device | **children |
struct usb_bus
+struct usb_bus *next, *prev
+char dirname[PATH_MAX+1]
+u_int32_t location
+struct usb_device *devices
| +usb_device *next, *prev
| +char filename[PATH_MAX+1]
| +struct usb_bus *bus
| +void *dev
| +u_int8_t devnum
| +unsigned char num_children
| +struct usb_device **children
| +struct usb_device_descriptor descriptor
| | +u_int8_t bLength
| | +u_int8_t bDescriptorType
| | +u_int16_t bcdUSB
| | +u_int8_t bDeviceClass
| | +u_int8_t bDeviceSubClass
| | +u_int8_t bDeviceProtocol
| | +u_int8_t bMaxPacketSize0
| | +u_int16_t idVendor
| | +u_int16_t idProduct
| | +u_int16_t bcdDevice
| | +u_int8_t iManufacturer
| | +u_int8_t iProduct
| | +u_int8_t iSerialNumber
| | |
| | +u_int8_t bNumConfigurations
| +struct usb_config_descriptor *config
| +u_int8_t bLength
| +u_int8_t bDescriptorType
| +u_int16_t wTotalLength
| +u_int8_t bConfigurationValue
| +u_int8_t iConfiguration
| +u_int8_t bmAttributes
| +u_int8_t MaxPower
| +unsigned char *extra
| +int extralen
| |
| +u_int8_t bNumInterfaces
| +struct usb_interface *interface
| |
| +int num_altsetting
| +struct usb_interface_descriptor *altsetting
| +u_int8_t bLength
| +u_int8_t bDescriptorType
| +u_int8_t bInterfaceNumber
| +u_int8_t bAlternateSetting
| +u_int8_t bInterfaceClass
| +u_int8_t bInterfaceSubClass
| +u_int8_t bInterfaceProtocol
| +u_int8_t iInterface
| +unsigned char *extra
| +int extralen
| |
| +u_int8_t bNumEndpoints
| +struct usb_endpoint_descriptor *endpoint
| +u_int8_t bLength
| +u_int8_t bDescriptorType
| +u_int8_t bEndpointAddress
| +u_int8_t bmAttributes
| +u_int16_t wMaxPacketSize
| +u_int8_t bInterval
| +u_int8_t bRefresh
| +u_int8_t bSynchAddress
| +unsigned char *extra
| +int extralen
|
+struct usb_device *root_dev
........
struct usb_ctrl_setup
+u_int8_t bRequestType
+u_int8_t bRequest
+u_int16_t wValue
+u_int16_t wIndex
+u_int16_t wLength
|
| TopPage > libusbを使ってみる |