#include <adk.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 hub0(&Usb); USBHub hub1(&Usb); ADK adk(&Usb,"Google, Inc.", "DemoKit", "DemoKit Arduino Board", "1.0", "http://www.android.com", "0000000012345678"); uint8_t b, b1; #define LED1_RED 3 #define BUTTON1 2 void init_buttons() { pinMode(BUTTON1, INPUT); // enable the internal pullups digitalWrite(BUTTON1, HIGH); } void init_leds() { digitalWrite(LED1_RED, 0); pinMode(LED1_RED, OUTPUT); } 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... init_leds(); init_buttons(); b1 = digitalRead(BUTTON1); } void loop() { uint8_t rcode; uint8_t msg[3] = { 0x00 }; Usb.Task(); if( adk.isReady() == false ) { analogWrite(LED1_RED, 255); return; } uint16_t len = sizeof(msg); rcode = adk.RcvData(&len, msg); if( rcode ) { USBTRACE2("Data rcv. :", rcode ); } if(len > 0) { USBTRACE("\r\nData Packet."); // assumes only one command per packet if (msg[0] == 0x2) { switch( msg[1] ) { case 0: analogWrite(LED1_RED, 255 - msg[2]); break; }//switch( msg[1]... }//if (msg[0] == 0x2... }//if( len > 0... msg[0] = 0x1; b = digitalRead(BUTTON1); if (b != b1) { USBTRACE("\r\nButton state changed"); msg[1] = 0; msg[2] = b ? 0 : 1; rcode = adk.SndData( 3, msg ); if( rcode ) { USBTRACE2("Button send: ", rcode ); } b1 = b; }//if (b != b1... delay( 10 ); }