summaryrefslogtreecommitdiff
path: root/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/adk/adk_barcode/adk_barcode.ino
diff options
context:
space:
mode:
Diffstat (limited to 'tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/adk/adk_barcode/adk_barcode.ino')
-rw-r--r--tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/adk/adk_barcode/adk_barcode.ino91
1 files changed, 91 insertions, 0 deletions
diff --git a/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/adk/adk_barcode/adk_barcode.ino b/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/adk/adk_barcode/adk_barcode.ino
new file mode 100644
index 0000000000..a308ff0f83
--- /dev/null
+++ b/tmk_core/protocol/usb_hid/USB_Host_Shield_2.0/examples/adk/adk_barcode/adk_barcode.ino
@@ -0,0 +1,91 @@
+/**/
+/* A sketch demonstrating data exchange between two USB devices - a HID barcode scanner and ADK-compatible Android phone */
+/**/
+#include <adk.h>
+#include <hidboot.h>
+#include <usbhub.h>
+
+// Satisfy IDE, which only needs to see the include statment in the ino.
+#ifdef dobogusinclude
+#include <spi4teensy3.h>
+#include <SPI.h>
+#endif
+
+USB Usb;
+USBHub Hub1(&Usb);
+USBHub Hub2(&Usb);
+HIDBoot<HID_PROTOCOL_KEYBOARD> Keyboard(&Usb);
+
+ADK adk(&Usb,"Circuits@Home, ltd.",
+ "USB Host Shield",
+ "Arduino Terminal for Android",
+ "1.0",
+ "http://www.circuitsathome.com",
+ "0000000000000001");
+
+
+class KbdRptParser : public KeyboardReportParser
+{
+
+protected:
+ void OnKeyDown (uint8_t mod, uint8_t key);
+ void OnKeyPressed(uint8_t key);
+};
+
+void KbdRptParser::OnKeyDown(uint8_t mod, uint8_t key)
+{
+ uint8_t c = OemToAscii(mod, key);
+
+ if (c)
+ OnKeyPressed(c);
+}
+
+/* what to do when symbol arrives */
+void KbdRptParser::OnKeyPressed(uint8_t key)
+{
+const char* new_line = "\n";
+uint8_t rcode;
+uint8_t keylcl;
+
+ if( adk.isReady() == false ) {
+ return;
+ }
+
+ keylcl = key;
+
+ if( keylcl == 0x13 ) {
+ rcode = adk.SndData( strlen( new_line ), (uint8_t *)new_line );
+ }
+ else {
+ rcode = adk.SndData( 1, &keylcl );
+ }
+
+ Serial.print((char) keylcl );
+ Serial.print(" : ");
+ Serial.println( keylcl, HEX );
+};
+
+KbdRptParser Prs;
+
+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("\r\nADK demo start");
+
+ if (Usb.Init() == -1) {
+ Serial.println("OSCOKIRQ failed to assert");
+ while(1); //halt
+ }//if (Usb.Init() == -1...
+
+ Keyboard.SetReportParser(0, (HIDReportParser*)&Prs);
+
+ delay( 200 );
+}
+
+void loop()
+{
+ Usb.Task();
+}