1
0
mirror of https://github.com/gdsports/USBHost_t36 synced 2024-11-30 12:42:15 -05:00
Commit Graph

147 Commits

Author SHA1 Message Date
Kurt Eckhardt
ca070ebcd4 Fix delete delete hang on serial ports
Found the issue where it was freeing transfers from the follow up list, that were also on the QH list which also tried to free it again.

Fix was in the first free list, it checks to see if the item is also in the qh list and does not free it then.
2017-11-11 09:56:46 -08:00
Kurt Eckhardt
4eee8627d2 Serial cleanup - flush, timeout
As per the forum posts, worked on combining the claim code for extracting which endpoints are RX and TX and create the pipes and the like.

Also worked on live cases.  Reading and writing to AX servos... Found some issues Probably more to find.

I left in some debug code to help find cases of deleting a pipe may hang.  Also macros in serial.cpp to set or toggle IO pins (when in debug mode). This helps find where things are happing using Logic Analyzer as a way to find the approriate USB packets.
2017-11-10 16:37:12 -08:00
Kurt Eckhardt
d3e21b04c0 FIX - Keyboard LEDS
The main issue was I used a setup structure on the stack which turned into garbage.  Earlier I thought the data was copied, but it was not...

Found that fixing this resolved the earlier issue where I needed to defer the update.  So removed the defered code, plus use member variable for the one byte output instead of static variable.
2017-11-07 07:08:36 -08:00
Kurt Eckhardt
ec4a7ac24c Support for Silicon labs: CP210x
Did a quick add of support for the Slicon Labs CP210x drivers.  Did similar like messages as FTDI, based on their documents on line:
https://www.silabs.com/documents/public/application-notes/AN571.pdf
2017-11-05 16:25:59 -08:00
Kurt Eckhardt
12be685ab1 Test fixes for different parity and like
I did a quick test using the Serial test app, where I can type in lines like:
#38400,7E1
And it reopens the serial port at the specified baud and format.  Note the formats the test app looks for is 7E1, 7O1, 8N1, 8N2.

Tested on an FTDI, PL2303 and CH341.  I also tested going to Teensy 3.2 CDCACM.  But as far as I know the teensy could not care less about Baud/Format.

Unless of course there is a way to query the value and use it to set a Hardware Serial port to it.
2017-11-05 10:53:54 -08:00
Kurt Eckhardt
ef59f98a5f Update Keywords 2017-11-04 20:35:52 -07:00
Kurt Eckhardt
e2eba5c00d This commit has a few different parts. It is still a WIP
This commit adds support for at least some of the Serial boards with the
CH341 chipset, tested using a board from sparkfun as well as one from
Amazon.com

The code was rearranged some of the Claim code and added a VID:DID to Serial Type table that I use to map, such that I know some of these devices have multiple valid setups.

Support Begin/End/Begin - Change baud

Added code to support switching baud rates, or more particular be able to call end() and then call begin(...) with same or different baud rate.

Hopefully some support for also releasing DTR when the end is called.

WIP - Start support for the begin(baud, format)

Adding some support to the code to handle some of the different possible format capabilities.

In particualar trying to handle the parity, number of bits and number of stop bits.

hacked up test app, such that if you type in command line like:
"#9600, 7e1"

It will extract the 9600 as the new baud and try to use format 7e1.  I only hard coded a few of these in the test app (8n1, 7e1, 7e2, 8n2)...

Again work in progress.  Took me awhile tofigure out how to do this for ch341 boards as I did not see any documents or code that handled this.  So had to deduce it from differences in USB packets.
2017-11-04 17:54:00 -07:00
Kurt Eckhardt
d381a5bf95 WIP - Add support fo CH341 Serial boards
Added support for a another Serial type CH341.

Wip - But I do have it working so far at least with a loop back test (RX shorted to TX)

Also Rearranged some of the Claim code and added a VID:DID to Serial Type table that I use to map, such that I know some of these devices have multiple valid setups.

Will test more.  I have several more cheap USB to serial adapter arriving tomorrow.
2017-11-01 16:41:54 -07:00
Paul Stoffregen
de863f4991
Merge pull request #10 from KurtE/CDCACM-Serial
Cdcacm serial
2017-10-31 16:19:22 -07:00
Kurt Eckhardt
a234bae99e Keyboard - Allow > 8 keyboard max report size
There has been at least one keyboard that does not report the report size !=8 that works...

So try to allow for any that report >=8  <=64 to work.
2017-10-31 15:40:18 -07:00
Kurt Eckhardt
e05dbaaee5 Little Cleanup - #if and comments
Removed some of the #if 1
If defs, plus

cleaned up a few comments
2017-10-31 15:11:52 -07:00
Kurt Eckhardt
704d511c81 PL2303 support
This commit should start to allow some Prolific PL2303 devices to work.
Tis device has a rather more complex initialization process than some
of the other devices.

I have tested this some with one device that I used to use to program
some older RS232 based boards plus talk to an SSC-32 device.
Test case is I am able to talk to SSC-32 and if I type in ver<cr>
It does properly return the version number.

The data I am seeing is pretty close to what
was documented in: https://gist.github.com/tommie/89011c5ac06553d5cdb8
as well as what the Linux driver outputs.

I also incorperated Frank's configuration options.
2017-10-31 11:06:12 -07:00
Paul Stoffregen
95cefd34df
Merge pull request #9 from FrankBoesing/patch-1
let user choose PERIODIC_LIST_SIZE
2017-10-30 09:25:47 -07:00
Frank
52ad568b07
let user choose PERIODIC_LIST_SIZE 2017-10-30 17:19:42 +01:00
Kurt Eckhardt
6e1f0c379c CDCACM - Serial support
Have some support in place for the CDCACM serial class code.

It appears to be working for talking to a
Teensy that is programmed USB=Serial
or USB=Serial+...

Also test with an USB2AX board which is a Servo controller for Dynamixel servos (AX-12), that is an Atmega32u2 board programmed using LUFA as the USB library.
2017-10-27 09:35:46 -07:00
PaulStoffregen
bd5f7d9486 reorganize header file 2017-10-21 11:52:26 -07:00
PaulStoffregen
8a0a5802c2 Update keywords 2017-10-21 11:40:59 -07:00
PaulStoffregen
f890ec1955 AntPlus fixes
https://forum.pjrc.com/threads/43110-Ant-libarary-and-USB-driver-for-Teensy-3-5-6?p=157155&viewfull=1#post157155
2017-10-21 08:45:09 -07:00
PaulStoffregen
5c6d3c9e32 Arduino style API for AntPlus payload parsers 2017-10-21 03:34:40 -07:00
PaulStoffregen
dc1030f379 Move AntPlus parsing state from static to object scope 2017-10-21 01:59:44 -07:00
PaulStoffregen
d8c4d55dad Fix AntPlus transmit buffer wrap issue 2017-10-20 09:02:55 -07:00
PaulStoffregen
1613316f7c Arduino style callbacks from channel status & device ID 2017-10-20 07:50:38 -07:00
PaulStoffregen
94b2decbca AntPlus polling and example (still incomplete) 2017-10-20 06:45:27 -07:00
Paul Stoffregen
75cb233db6 Merge pull request #7 from KurtE/String_Buffer_devices_contribute
String buffers - Devices contribute buffers
2017-10-19 16:38:04 -07:00
Kurt Eckhardt
4e2ea2d96e String buffers - Devices contribute buffers
instead of having each HUB have 7 buffers, which can eat up space.  We have each main object contribute currently one string buffer, which than when we initialize a Device_t we try to allocate one for it, likewise we release it when the Device is released.

Hopefully less memory needed.

Also updated such that the HIDInput classes can not retrieve these strings.

Changed test program to now also have list of HIDInput objects and when I detect a new one, I again print out info on it...
2017-10-19 14:57:52 -07:00
PaulStoffregen
57ca257e9b AntPlus from Michael McElligott (work in progress...) 2017-10-16 06:06:51 -07:00
PaulStoffregen
f1bb020282 Fix print() & println() conflict with Arduino Print class 2017-10-15 13:11:46 -07:00
Paul Stoffregen
b82efa836e Merge pull request #6 from KurtE/Keyboard-Power_and_other_special_keys
Keyboard power and other special keys
2017-10-15 06:54:42 -07:00
PaulStoffregen
9840e82db8 FTDI transmit, improve performance for fast output 2017-10-15 06:00:53 -07:00
PaulStoffregen
5575f9fcae FTDI transmit, add partial packet output 2017-10-15 04:28:07 -07:00
PaulStoffregen
b58d4c7191 FTDI transmit, full packets only 2017-10-15 02:39:36 -07:00
Kurt Eckhardt
40cb6322ac WIP - Add Strings to device structure
Added the ability to query the
Manufactur, product name and serial number strings from a device.

WIP - Eats up lots of memory, next up experiment move from Device_t object to maybe top level objects.  Probably fewer than them as each hub allocates something like 7 Device objects
2017-10-14 14:27:09 -07:00
Kurt Eckhardt
03a7150872 Display Vendor/Product ID on connect 2017-10-14 08:16:11 -07:00
PaulStoffregen
3a43ebf73b FTDI serial receive working, still no transmit 2017-10-14 05:12:52 -07:00
Kurt Eckhardt
9abafa6106 Example: Show which drivers are active
I was wondering which drivers were in use, so now print when they are connected or disconnected
2017-10-13 12:25:24 -07:00
PaulStoffregen
2b8ca63069 FTDI serial config & receive (still work in progress) 2017-10-13 05:56:18 -07:00
PaulStoffregen
ac06c74291 Begin FTDI serial driver 2017-10-12 20:06:59 -07:00
Kurt Eckhardt
3c34cc2f6f Work around for MS keyboard
I updated the keyboard extras to detect if the report ID is 0xff00 and if so ignore it in the Mouse extras process code.  This helped not handling a lot of extra messages generated by MS keyboard.

Also updated Test app to show names of some of these special keys.
2017-10-12 19:23:02 -07:00
Kurt Eckhardt
dbe5292471 Keyboard HID extras plus map extra keys
This delta, adds an extra keyboard object to handle those keys that are not part of the main keyboard class.  In particular there are separate HID reports for some of the keys, such as Power keys, and multimedia keys.

These reports might be on separate Interface or in cases where the mouse and keyboard are on the same device, the extra reports may be on the Mouse Interface.

So far I have not tried to combine with Keyboard object as might require multiple inheritance which I would like to avoid.

Also I extended the special key mapping table to map several other keys like F1-12, Arrow, Home/end... To special values where the 0x80 bit is set.  I used the same values as used for the Arduino Keyboard library.  I did not use their defines as they used defines like KEY_F1, which already exists in core, but in core it is the scan code from the keyboard and not the end user value.
2017-10-12 10:27:41 -07:00
PaulStoffregen
0e35681c48 Add idVendor() & idProduct() to HID parser class 2017-10-09 14:21:30 -07:00
PaulStoffregen
adc8a3239f Query device status, idVendor and idProduct 2017-10-08 13:12:35 -07:00
PaulStoffregen
d3b6abe878 Keyboard LEDs and data parsing (Kurt & Frank) 2017-10-08 12:56:39 -07:00
PaulStoffregen
5ea0d568a1 Fix scheduling of hub control transfers 2017-10-08 05:25:39 -07:00
PaulStoffregen
1e6d0db268 Do not let HID parser claim boot protocol keyboards 2017-10-08 03:37:00 -07:00
PaulStoffregen
2b0fda8a11 Fix device list of drivers in use 2017-10-08 03:35:20 -07:00
PaulStoffregen
a1cde4e568 Print less low-level EHCI info when USBHOST_PRINT_DEBUG defined 2017-10-08 02:18:03 -07:00
PaulStoffregen
a44e342703 Fix order of deferred hub control transfers (KurtE)
https://forum.pjrc.com/threads/45740-USB-Host-Mouse-Driver?p=155745&viewfull=1#post155745
2017-10-07 20:45:38 -07:00
Paul Stoffregen
34b7dc5f51 Merge pull request #3 from KurtE/PS3-Usage-Pointer-issue
PS3 - Right Joystick does not work
2017-09-14 14:47:22 -07:00
Kurt Eckhardt
6bec8b60ee PS3 - Right Joystick does not work
There is an issue with the extra items added to the report after the main known items.

Problem was HID report descriptor does something like:
Usage Page; Desktop  (01)
Usage: 01  (Pointer)
Count xxx

Problem is the Usage values below 0x20 appear to have some other standard meaning.   Which you can see in
http://www.usb.org/developers/hidpage/Hut1_12v2.pdf

So current fix is to ignore Usage values passed in < 0x20...
Appears to fix PS3 Right joystick
2017-09-13 18:40:40 -07:00
Paul Stoffregen
8fe975bc66 Merge pull request #2 from KurtE/joystick-testing
PS4 support
2017-09-12 16:14:02 -07:00