This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
blog:fall2015:tmosgrov:journal [2015/11/16 16:29] – [11/09/2015] tmosgrov | blog:fall2015:tmosgrov:journal [2015/12/02 21:02] (current) – [12/02/2015] tmosgrov | ||
---|---|---|---|
Line 469: | Line 469: | ||
[[http:// | [[http:// | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | ====11/ | ||
+ | |||
+ | USB/ | ||
+ | MAX devices 127 | ||
+ | USB devices uses a 7bit address | ||
+ | |||
+ | "All communications on the bus are intiated by the host" | ||
+ | There is no communication usb-device to usb-device. | ||
+ | |||
+ | "A device cannot initiate data transfering, | ||
+ | the host." The only exception being a ' | ||
+ | |||
+ | USB On-The-Go, An interesting extension on the USB spec. | ||
+ | |||
+ | Cables specially designed to only connect host-to-device IE. not host-to-host, | ||
+ | device-to-device. | ||
+ | |||
+ | 4 Wire shielded cable two of which are a twisted pair (D+, D-). The fourth wire (VBUS) | ||
+ | provides 5V supply of power. | ||
+ | |||
+ | Additional Resources | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | Using libusbhid | ||
+ | Ran into libfcntl while reading somones source that reads input from a joystick. | ||
+ | libfcntl or (file control) provides a means to accessing a file that is already open. | ||
+ | Generally after a usb device is plugged in it is already being accessed by the host. | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | "A USB HID report descriptor is one of the descriptors that a USB host can request from a USB device. HID devices send data to the host using reports, and the descriptor tells the host how to interpret the data." | ||
+ | |||
+ | / | ||
+ | |||
+ | ====12/ | ||
+ | |||
+ | Back to USB. I've been looking in all the wrong places. The library I should have been focusing on was libusb which references all of the other libraries I have occasionally stared far too long at. Those of which were probably being referenced as a lower level layer by libusb.h. | ||
+ | |||
+ | Regarding libusb, | ||
+ | When interfacing with usb devices you have two choices Synchronous, | ||
+ | |||
+ | note: Asynchronous offers simultaneous I/O operations or threading. Which libusb supports with its thread-control. | ||
+ | |||
+ | **USB Transfer Types** | ||
+ | * Control Transfers | ||
+ | * Interrupt Transfers | ||
+ | * Isochronous Transfers | ||
+ | * Bulk Transfers | ||
+ | |||
+ | **Control Transfers**- Command or status operations. | ||
+ | |||
+ | |||
+ | **Interrupt Transfers**- Initiated by the device to request some action from the host. | ||
+ | |||
+ | |||
+ | **Isochronous Transfers**- Transfers which are used to carry data the delivery of which is crucial. | ||
+ | |||
+ | |||
+ | **Bulk Transfers**- Transfers which are used to carry data the delivery of which is not crucial. | ||
+ | |||
+ | |||
+ | "All transfers take the form as packets, which contain certain control information and error checking fields." | ||
+ | |||
+ | **The typical libusb procedure** | ||
+ | - Get device list | ||
+ | - Clear device list with libusb_free_device_list) | ||
+ | - Claim usb interface with libusb_claim_interface | ||
+ | - Do the desired I/O operations | ||
+ | - Release the device by using libusb_release_interface | ||
+ | - Close the device libusb_close | ||
+ | - Exit session libusb_exit |