summaryrefslogtreecommitdiffstats
path: root/protocol/usb_hid/USB_Host_Shield_2.0/examples/ftdi/USBFTDILoopback/USBFTDILoopback.ino
diff options
context:
space:
mode:
authortmk <hasu@tmk-kbd.com>2015-05-13 04:13:10 +0200
committertmk <hasu@tmk-kbd.com>2015-05-13 04:13:10 +0200
commitf6d56675f9f981c5464f0ca7a1fbb0162154e8c5 (patch)
tree57c9d4b3808a26116ae0ee7956fc00b84841aa2b /protocol/usb_hid/USB_Host_Shield_2.0/examples/ftdi/USBFTDILoopback/USBFTDILoopback.ino
parent4d116a04e94cf0d19317d5b44e4fa9f34a3e5594 (diff)
downloadqmk_firmware-f6d56675f9f981c5464f0ca7a1fbb0162154e8c5.tar.gz
qmk_firmware-f6d56675f9f981c5464f0ca7a1fbb0162154e8c5.tar.xz
Squashed 'tmk_core/' changes from caca2c0..dc0e46e
dc0e46e Rename LUFA to LUFA-git 3bfa7fa Remove LUFA-120730 215b764 Merge commit 'afa0f22a9299686fd88f58ce09c5b521ac917e8f' as 'protocol/lufa/LUFA' afa0f22 Squashed 'protocol/lufa/LUFA/' content from commit def7fca c0c42fa Remove submodule of LUFA 30f897d Merge commit '87ced33feb74e79c3281dda36eb6d6d153399b41' as 'protocol/usb_hid/USB_Host_Shield_2.0' 87ced33 Squashed 'protocol/usb_hid/USB_Host_Shield_2.0/' content from commit aab4a69 14f6d49 Remove submodule of USB_Host_Shield_2.0 git-subtree-dir: tmk_core git-subtree-split: dc0e46eaa4367d4e218f8816e3c117895820f07c
Diffstat (limited to 'protocol/usb_hid/USB_Host_Shield_2.0/examples/ftdi/USBFTDILoopback/USBFTDILoopback.ino')
-rw-r--r--protocol/usb_hid/USB_Host_Shield_2.0/examples/ftdi/USBFTDILoopback/USBFTDILoopback.ino98
1 files changed, 98 insertions, 0 deletions
diff --git a/protocol/usb_hid/USB_Host_Shield_2.0/examples/ftdi/USBFTDILoopback/USBFTDILoopback.ino b/protocol/usb_hid/USB_Host_Shield_2.0/examples/ftdi/USBFTDILoopback/USBFTDILoopback.ino
new file mode 100644
index 000000000..5be7adc2f
--- /dev/null
+++ b/protocol/usb_hid/USB_Host_Shield_2.0/examples/ftdi/USBFTDILoopback/USBFTDILoopback.ino
@@ -0,0 +1,98 @@
+#include <cdcftdi.h>
+#include <usbhub.h>
+
+#include "pgmstrings.h"
+
+// Satisfy the IDE, which needs to see the include statment in the ino too.
+#ifdef dobogusinclude
+#include <spi4teensy3.h>
+#include <SPI.h>
+#endif
+
+class FTDIAsync : public FTDIAsyncOper
+{
+public:
+ uint8_t OnInit(FTDI *pftdi);
+};
+
+uint8_t FTDIAsync::OnInit(FTDI *pftdi)
+{
+ uint8_t rcode = 0;
+
+ rcode = pftdi->SetBaudRate(115200);
+
+ if (rcode)
+ {
+ ErrorMessage<uint8_t>(PSTR("SetBaudRate"), rcode);
+ return rcode;
+ }
+ rcode = pftdi->SetFlowControl(FTDI_SIO_DISABLE_FLOW_CTRL);
+
+ if (rcode)
+ ErrorMessage<uint8_t>(PSTR("SetFlowControl"), rcode);
+
+ return rcode;
+}
+
+USB Usb;
+//USBHub Hub(&Usb);
+FTDIAsync FtdiAsync;
+FTDI Ftdi(&Usb, &FtdiAsync);
+
+uint32_t next_time;
+
+void setup()
+{
+ Serial.begin( 115200 );
+#if !defined(__MIPSEL__)
+ while (!Serial); // Wait for serial port to connect - used on Leonardo, Teensy and other boards with built-in USB CDC serial connection
+#endif
+ Serial.println("Start");
+
+ if (Usb.Init() == -1)
+ Serial.println("OSC did not start.");
+
+ delay( 200 );
+
+ next_time = millis() + 5000;
+}
+
+void loop()
+{
+ Usb.Task();
+
+ if( Usb.getUsbTaskState() == USB_STATE_RUNNING )
+ {
+ uint8_t rcode;
+ char strbuf[] = "DEADBEEF";
+ //char strbuf[] = "The quick brown fox jumps over the lazy dog";
+ //char strbuf[] = "This string contains 61 character to demonstrate FTDI buffers"; //add one symbol to it to see some garbage
+ Serial.print(".");
+
+ rcode = Ftdi.SndData(strlen(strbuf), (uint8_t*)strbuf);
+
+ if (rcode)
+ ErrorMessage<uint8_t>(PSTR("SndData"), rcode);
+
+ delay(50);
+
+ uint8_t buf[64];
+
+ for (uint8_t i=0; i<64; i++)
+ buf[i] = 0;
+
+ uint16_t rcvd = 64;
+ rcode = Ftdi.RcvData(&rcvd, buf);
+
+ if (rcode && rcode != hrNAK)
+ ErrorMessage<uint8_t>(PSTR("Ret"), rcode);
+
+ // The device reserves the first two bytes of data
+ // to contain the current values of the modem and line status registers.
+ if (rcvd > 2)
+ Serial.print((char*)(buf+2));
+
+ delay(10);
+ }
+}
+