aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Gilling <konkers@android.com>2011-03-15 22:10:35 -0700
committerErik Gilling <konkers@android.com>2011-03-15 22:10:35 -0700
commit77bad74bcf81e92f95f8820a606e4dcc67e20f66 (patch)
treee46730fba45c0ab4482e057574bd4ea7c7018b0c
parent519f672d94dbf0a4343966c180e92b7641d40430 (diff)
downloaddemokit-77bad74bcf81e92f95f8820a606e4dcc67e20f66.tar.gz
convert demokit sketch to final protocol
Change-Id: I61c98ef07385467a0ae09d93a4090c476de887a2
-rw-r--r--demokit/demokit.pde27
1 files changed, 24 insertions, 3 deletions
diff --git a/demokit/demokit.pde b/demokit/demokit.pde
index 454c051..5995e4d 100644
--- a/demokit/demokit.pde
+++ b/demokit/demokit.pde
@@ -9,9 +9,12 @@
#define USB_ACCESSORY_ADB_PRODUCT_ID 0x2D01
#define ACCESSORY_STRING_MANUFACTURER 0
#define ACCESSORY_STRING_MODEL 1
-#define ACCESSORY_STRING_TYPE 2
+#define ACCESSORY_STRING_DESCRIPTION 2
#define ACCESSORY_STRING_VERSION 3
+#define ACCESSORY_STRING_URI 4
+#define ACCESSORY_STRING_SERIAL 5
+#define ACCESSORY_GET_PROTOCOL 51
#define ACCESSORY_SEND_STRING 52
#define ACCESSORY_START 53
@@ -140,6 +143,14 @@ bool isAccessoryDevice(USB_DEVICE_DESCRIPTOR *desc)
return desc->idProduct == 0x2D00 || desc->idProduct == 0x2D01;
}
+int getProtocol(byte addr)
+{
+ uint16_t protocol = -1;
+ Usb.ctrlReq(addr, 0, USB_SETUP_DEVICE_TO_HOST | USB_SETUP_TYPE_VENDOR | USB_SETUP_RECIPIENT_DEVICE,
+ ACCESSORY_GET_PROTOCOL, 0, 0, 0, 2, (char *)&protocol);
+ return protocol;
+}
+
void sendString(byte addr, int index, char *str)
{
Usb.ctrlReq(addr, 0, USB_SETUP_HOST_TO_DEVICE | USB_SETUP_TYPE_VENDOR | USB_SETUP_RECIPIENT_DEVICE,
@@ -147,15 +158,25 @@ void sendString(byte addr, int index, char *str)
}
-void switchDevice(byte addr)
+bool switchDevice(byte addr)
{
+ int protocol = getProtocol(addr);
+ if (protocol == 1)
+ Serial.print("device supports protcol 1\n");
+ else {
+ Serial.print("could not read device protocol version\n");
+ return false;
+ }
sendString(addr, ACCESSORY_STRING_MANUFACTURER, "Google, Inc.");
sendString(addr, ACCESSORY_STRING_MODEL, "DemoKit");
- sendString(addr, ACCESSORY_STRING_TYPE, "Sample Program");
+ sendString(addr, ACCESSORY_STRING_DESCRIPTION, "DemoKit test board");
sendString(addr, ACCESSORY_STRING_VERSION, "1.0");
+ sendString(addr, ACCESSORY_STRING_URI, "http://www.android.com");
+ sendString(addr, ACCESSORY_STRING_SERIAL, "0000000012345678");
Usb.ctrlReq(addr, 0, USB_SETUP_HOST_TO_DEVICE | USB_SETUP_TYPE_VENDOR | USB_SETUP_RECIPIENT_DEVICE,
ACCESSORY_START, 0, 0, 0, 0, NULL);
+ return true;
}
bool findEndpoints(byte addr, EP_RECORD *inEp, EP_RECORD *outEp)