|
|
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を使ってみる |