This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
blog:fall2015:tmosgrov:journal [2015/10/26 19:58] – [10/21/2015] tmosgrov | blog:fall2015:tmosgrov:journal [2015/12/02 21:02] (current) – [12/02/2015] tmosgrov | ||
---|---|---|---|
Line 391: | Line 391: | ||
See ya! | See ya! | ||
+ | |||
+ | ====11/ | ||
+ | Wow, today was highly productive in regards to HPC. I came in with a question, and came out with an answer plus code to show! Today was a good day. So, while working on the lair-brary I was struggling finding a way where I could numerically sort the library' | ||
+ | Consider the following input! | ||
+ | |||
+ | <code console> | ||
+ | FFFF BOOK TITLE | ||
+ | AUTHOR NAME | ||
+ | USERNAME DATE etc. | ||
+ | |||
+ | FFFE BOOK TITLE | ||
+ | AUTHOR NAME | ||
+ | USERNAME DATE etc. | ||
+ | </ | ||
+ | |||
+ | Supplemented with... | ||
+ | |||
+ | <code bash> | ||
+ | sed '/ | ||
+ | N | ||
+ | s/\n/[-]/g | ||
+ | N | ||
+ | s/\n/[-]/g | ||
+ | N | ||
+ | s/\n/[-]/g | ||
+ | }' input | ||
+ | </ | ||
+ | |||
+ | Output looks like... | ||
+ | |||
+ | <code console> | ||
+ | FFFF BOOK TITLE[-]AUTHOR NAME[-]USERNAME DATE etc.[-] | ||
+ | FFFE BOOK TITLE[-]AUTHOR NAME[-]USERNAME DATE etc. | ||
+ | </ | ||
+ | |||
+ | Sort! | ||
+ | |||
+ | <code console> | ||
+ | FFFE BOOK TITLE[-]AUTHOR NAME[-]USERNAME DATE etc.[-] | ||
+ | FFFF BOOK TITLE[-]AUTHOR NAME[-]USERNAME DATE etc. | ||
+ | </ | ||
+ | |||
+ | Finally, revert back! | ||
+ | |||
+ | <code bash> | ||
+ | sed ' | ||
+ | </ | ||
+ | |||
+ | Final Output should look like this (note. techinally this example would not work due to the missing newline character on the last entry) | ||
+ | |||
+ | <code console> | ||
+ | FFFE BOOK TITLE | ||
+ | AUTHOR NAME | ||
+ | USERNAME DATE etc. | ||
+ | |||
+ | FFFF BOOK TITLE | ||
+ | AUTHOR NAME | ||
+ | USERNAME DATE etc. | ||
+ | </ | ||
+ | |||
+ | More to come! | ||
+ | |||
+ | ====11/ | ||
+ | |||
+ | So, the weekend was productive. In fact, it was the most productive weekend I have witnessed so far this semester. Tackled tic-tac-toe, | ||
+ | |||
+ | Things keep getting better, and better! | ||
+ | |||
+ | ====11/ | ||
+ | |||
+ | It has been some time since my last submit. However, this time I bring good news. | ||
+ | After mingling around on the internet, and obsessing over a potential new found hobby. Somebody dropped the line usb programming which immediately struck my fancy. What better of a project for datacomm and HPC? What really solidified this was " | ||
+ | |||
+ | This will be where I will record all my resources and information. I hope it will be more interesting than some of my previous posts. | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | [[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 |