User Tools

Site Tools


blog:fall2015:tmosgrov:journal

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
blog:fall2015:tmosgrov:journal [2015/11/16 16:29] – [11/09/2015] tmosgrovblog:fall2015:tmosgrov:journal [2015/12/02 21:02] (current) – [12/02/2015] tmosgrov
Line 469: Line 469:
  
 [[http://linux.die.net/lkmpg/x892.html|Talking to Device Files]] [[http://linux.die.net/lkmpg/x892.html|Talking to Device Files]]
 +
 +[[http://www.usbmadesimple.co.uk/|USB Made Simple]]
 +
 +====11/18/2015====
 +
 +USB/Bluetooth Notes:
 +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, but must wait to be asked to transfer data by
 +the host." The only exception being a 'suspend' that results in a remote wakeup.
 +
 +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, or
 +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://forums.freebsd.org/threads/usbhid-accessing-multiple-joysticks-in-one-report.53155/|USBHID Sample Source]]
 +
 +[[http://www.gsp.com/cgi-bin/man.cgi?topic=hid_get_report_desc#3|More USBHID Documentation]]
 +
 +Using libusbhid  & libfcntl.
 +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://eleccelerator.com/tutorial-about-usb-hid-report-descriptors/|Report Descriptors]]
 +
 +"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."
 +
 +/usr/share/misc/usb_hid_usages Shows ideal report descriptor formats for various usb devices.
 +
 +====12/02/2015====
 +
 +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, and Asynchronous. Synchronous offers a less involved method for interfacing with a USB device to make a transfer. Offering a "one function call" solution to make a transfer, but those calls may "sleep" inside libusb_bulk_transfer() until a transfer has completed. This could be a pain if a transfer process is taking longer than expected to complete. While Asynchronous offers a more controlled route with the ability to cancel a transfer, but is more complicated to use.
 +
 +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
blog/fall2015/tmosgrov/journal.1447691367.txt.gz · Last modified: 2015/11/16 16:29 by tmosgrov