Add basic Android host application to the Android Accessory Host class driver demo.
authorDean Camera <dean@fourwalledcubicle.com>
Sun, 12 May 2013 10:40:14 +0000 (12:40 +0200)
committerDean Camera <dean@fourwalledcubicle.com>
Sun, 12 May 2013 10:40:14 +0000 (12:40 +0200)
39 files changed:
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidAccessoryHost.c
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/.classpath [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/.project [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/.settings/org.eclipse.jdt.core.prefs [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/AndroidManifest.xml [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/AndroidManifest.xml [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/BuildConfig.class [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/MainActivity.class [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$attr.class [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$dimen.class [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$drawable.class [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$id.class [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$layout.class [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$menu.class [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$string.class [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$style.class [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$xml.class [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R.class [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/jarlist.cache [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/gen/com/example/lufa_aoa_test/BuildConfig.java [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/gen/com/example/lufa_aoa_test/R.java [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/ic_launcher-web.png [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/libs/android-support-v4.jar [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/project.properties [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/drawable-hdpi/ic_launcher.png [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/drawable-mdpi/ic_launcher.png [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/drawable-xhdpi/ic_launcher.png [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/drawable-xxhdpi/ic_launcher.png [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/layout/activity_main.xml [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/menu/main.xml [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/values-sw600dp/dimens.xml [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/values-sw720dp-land/dimens.xml [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/values-v11/styles.xml [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/values-v14/styles.xml [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/values/dimens.xml [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/values/strings.xml [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/values/styles.xml [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/xml/accessory_filter.xml [new file with mode: 0644]
Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/src/com/example/lufa_aoa_test/MainActivity.java [new file with mode: 0644]

index b7ae775..d103b5d 100644 (file)
@@ -53,7 +53,7 @@ USB_ClassInfo_AOA_Host_t AndroidDevice_AOA_Interface =
                                        {
                                                .Address        = (PIPE_DIR_OUT | 2),
                                                .Banks          = 1,
-                                       },                              
+                                       },
                                .PropertyStrings =
                                        {
                                                [AOA_STRING_Manufacturer] = "Dean Camera",
@@ -73,7 +73,7 @@ USB_ClassInfo_AOA_Host_t AndroidDevice_AOA_Interface =
 int main(void)
 {
        SetupHardware();
-       
+
        puts_P(PSTR(ESC_FG_CYAN "Android Accessory Host Demo running.\r\n" ESC_FG_WHITE));
 
        LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
@@ -120,7 +120,12 @@ void AOAHost_Task(void)
                /* Echo received bytes from the attached device through the USART */
                int16_t ReceivedByte = AOA_Host_ReceiveByte(&AndroidDevice_AOA_Interface);
                if (!(ReceivedByte < 0))
-                 putchar(ReceivedByte);
+               {
+                       /* Turn on and off LED1 based on the bytes received */
+                       LEDs_ChangeLEDs(LEDS_LED1, ReceivedByte ? LEDS_LED1 : LEDS_NO_LEDS);
+
+                       putchar(ReceivedByte);
+               }
        }
 }
 
@@ -155,7 +160,7 @@ void EVENT_USB_Host_DeviceEnumerationComplete(void)
        {
                puts_P(PSTR("Error Retrieving Device Descriptor.\r\n"));
                LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-               return; 
+               return;
        }
 
        bool NeedModeSwitch;
@@ -165,7 +170,7 @@ void EVENT_USB_Host_DeviceEnumerationComplete(void)
                LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
                return;
        }
-       
+
        if (NeedModeSwitch)
        {
                puts_P(PSTR("Not in Accessory mode, switching...\r\n"));
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/.classpath b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/.classpath
new file mode 100644 (file)
index 0000000..3f9691c
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+       <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
+       <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
+       <classpathentry kind="src" path="src"/>
+       <classpathentry kind="src" path="gen"/>
+       <classpathentry kind="output" path="bin/classes"/>
+</classpath>
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/.project b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/.project
new file mode 100644 (file)
index 0000000..09388ba
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>LUFA_AOA_Test</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.jdt.core.javabuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>com.android.ide.eclipse.adt.ApkBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>com.android.ide.eclipse.adt.AndroidNature</nature>
+               <nature>org.eclipse.jdt.core.javanature</nature>
+       </natures>
+</projectDescription>
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/.settings/org.eclipse.jdt.core.prefs b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/.settings/org.eclipse.jdt.core.prefs
new file mode 100644 (file)
index 0000000..b080d2d
--- /dev/null
@@ -0,0 +1,4 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/AndroidManifest.xml b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/AndroidManifest.xml
new file mode 100644 (file)
index 0000000..ab57674
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest package="com.example.lufa_aoa_test"
+    android:versionCode="1"
+    android:versionName="1.0" xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <uses-sdk
+        android:minSdkVersion="10"
+        android:targetSdkVersion="17" />
+
+    <uses-feature android:name="android.hardware.usb.accessory"/>
+    
+    <application
+        android:allowBackup="true"
+        android:icon="@drawable/ic_launcher"
+        android:label="@string/app_name"
+        android:theme="@style/AppTheme" >
+
+           <uses-library android:name="com.android.future.usb.accessory"/>
+        
+        <activity
+            android:name="com.example.lufa_aoa_test.MainActivity"
+            android:label="@string/app_name" >
+
+                       <intent-filter>
+                <action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" />
+            </intent-filter>
+
+            <meta-data android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"
+                android:resource="@xml/accessory_filter" />
+        </activity>
+    </application>
+
+</manifest>
\ No newline at end of file
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/AndroidManifest.xml b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/AndroidManifest.xml
new file mode 100644 (file)
index 0000000..ab57674
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest package="com.example.lufa_aoa_test"
+    android:versionCode="1"
+    android:versionName="1.0" xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <uses-sdk
+        android:minSdkVersion="10"
+        android:targetSdkVersion="17" />
+
+    <uses-feature android:name="android.hardware.usb.accessory"/>
+    
+    <application
+        android:allowBackup="true"
+        android:icon="@drawable/ic_launcher"
+        android:label="@string/app_name"
+        android:theme="@style/AppTheme" >
+
+           <uses-library android:name="com.android.future.usb.accessory"/>
+        
+        <activity
+            android:name="com.example.lufa_aoa_test.MainActivity"
+            android:label="@string/app_name" >
+
+                       <intent-filter>
+                <action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" />
+            </intent-filter>
+
+            <meta-data android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"
+                android:resource="@xml/accessory_filter" />
+        </activity>
+    </application>
+
+</manifest>
\ No newline at end of file
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/BuildConfig.class b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/BuildConfig.class
new file mode 100644 (file)
index 0000000..ae1212e
Binary files /dev/null and b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/BuildConfig.class differ
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/MainActivity.class b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/MainActivity.class
new file mode 100644 (file)
index 0000000..c1cb18f
Binary files /dev/null and b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/MainActivity.class differ
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$attr.class b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$attr.class
new file mode 100644 (file)
index 0000000..1f85cf8
Binary files /dev/null and b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$attr.class differ
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$dimen.class b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$dimen.class
new file mode 100644 (file)
index 0000000..17323ef
Binary files /dev/null and b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$dimen.class differ
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$drawable.class b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$drawable.class
new file mode 100644 (file)
index 0000000..fd22775
Binary files /dev/null and b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$drawable.class differ
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$id.class b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$id.class
new file mode 100644 (file)
index 0000000..2ec1831
Binary files /dev/null and b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$id.class differ
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$layout.class b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$layout.class
new file mode 100644 (file)
index 0000000..77835f2
Binary files /dev/null and b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$layout.class differ
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$menu.class b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$menu.class
new file mode 100644 (file)
index 0000000..695d0a8
Binary files /dev/null and b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$menu.class differ
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$string.class b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$string.class
new file mode 100644 (file)
index 0000000..73a2d25
Binary files /dev/null and b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$string.class differ
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$style.class b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$style.class
new file mode 100644 (file)
index 0000000..ca51233
Binary files /dev/null and b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$style.class differ
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$xml.class b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$xml.class
new file mode 100644 (file)
index 0000000..3671c14
Binary files /dev/null and b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R$xml.class differ
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R.class b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R.class
new file mode 100644 (file)
index 0000000..8febfbe
Binary files /dev/null and b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/classes/com/example/lufa_aoa_test/R.class differ
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/jarlist.cache b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/bin/jarlist.cache
new file mode 100644 (file)
index 0000000..1b5ec3f
--- /dev/null
@@ -0,0 +1,3 @@
+# cache for current jar dependecy. DO NOT EDIT.
+# format is <lastModified> <length> <SHA-1> <path>
+# Encoding is UTF-8
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/gen/com/example/lufa_aoa_test/BuildConfig.java b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/gen/com/example/lufa_aoa_test/BuildConfig.java
new file mode 100644 (file)
index 0000000..80f18ec
--- /dev/null
@@ -0,0 +1,6 @@
+/** Automatically generated file. DO NOT MODIFY */
+package com.example.lufa_aoa_test;
+
+public final class BuildConfig {
+    public final static boolean DEBUG = true;
+}
\ No newline at end of file
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/gen/com/example/lufa_aoa_test/R.java b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/gen/com/example/lufa_aoa_test/R.java
new file mode 100644 (file)
index 0000000..367b897
--- /dev/null
@@ -0,0 +1,71 @@
+/* AUTO-GENERATED FILE.  DO NOT MODIFY.
+ *
+ * This class was automatically generated by the
+ * aapt tool from the resource data it found.  It
+ * should not be modified by hand.
+ */
+
+package com.example.lufa_aoa_test;
+
+public final class R {
+    public static final class attr {
+    }
+    public static final class dimen {
+        /**  Default screen margins, per the Android Design guidelines. 
+
+         Customize dimensions originally defined in res/values/dimens.xml (such as
+         screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.
+    
+         */
+        public static final int activity_horizontal_margin=0x7f050000;
+        public static final int activity_vertical_margin=0x7f050001;
+    }
+    public static final class drawable {
+        public static final int ic_launcher=0x7f020000;
+    }
+    public static final class id {
+        public static final int action_settings=0x7f090001;
+        public static final int toggleButton1=0x7f090000;
+    }
+    public static final class layout {
+        public static final int activity_main=0x7f030000;
+    }
+    public static final class menu {
+        public static final int main=0x7f080000;
+    }
+    public static final class string {
+        public static final int action_settings=0x7f060001;
+        public static final int app_name=0x7f060000;
+    }
+    public static final class style {
+        /** 
+        Base application theme, dependent on API level. This theme is replaced
+        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
+    
+
+            Theme customizations available in newer API levels can go in
+            res/values-vXX/styles.xml, while customizations related to
+            backward-compatibility can go here.
+        
+
+        Base application theme for API 11+. This theme completely replaces
+        AppBaseTheme from res/values/styles.xml on API 11+ devices.
+    
+ API 11 theme customizations can go here. 
+
+        Base application theme for API 14+. This theme completely replaces
+        AppBaseTheme from BOTH res/values/styles.xml and
+        res/values-v11/styles.xml on API 14+ devices.
+    
+ API 14 theme customizations can go here. 
+         */
+        public static final int AppBaseTheme=0x7f070000;
+        /**  Application theme. 
+ All customizations that are NOT specific to a particular API-level can go here. 
+         */
+        public static final int AppTheme=0x7f070001;
+    }
+    public static final class xml {
+        public static final int accessory_filter=0x7f040000;
+    }
+}
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/ic_launcher-web.png b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/ic_launcher-web.png
new file mode 100644 (file)
index 0000000..a5852ba
Binary files /dev/null and b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/ic_launcher-web.png differ
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/libs/android-support-v4.jar b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/libs/android-support-v4.jar
new file mode 100644 (file)
index 0000000..65ebaf8
Binary files /dev/null and b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/libs/android-support-v4.jar differ
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/project.properties b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/project.properties
new file mode 100644 (file)
index 0000000..0c9830a
--- /dev/null
@@ -0,0 +1,14 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=Google Inc.:Google APIs:17
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/drawable-hdpi/ic_launcher.png b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/drawable-hdpi/ic_launcher.png
new file mode 100644 (file)
index 0000000..004688d
Binary files /dev/null and b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/drawable-hdpi/ic_launcher.png differ
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/drawable-mdpi/ic_launcher.png b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/drawable-mdpi/ic_launcher.png
new file mode 100644 (file)
index 0000000..207afa8
Binary files /dev/null and b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/drawable-mdpi/ic_launcher.png differ
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/drawable-xhdpi/ic_launcher.png b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/drawable-xhdpi/ic_launcher.png
new file mode 100644 (file)
index 0000000..8d8d79c
Binary files /dev/null and b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/drawable-xhdpi/ic_launcher.png differ
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/drawable-xxhdpi/ic_launcher.png b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/drawable-xxhdpi/ic_launcher.png
new file mode 100644 (file)
index 0000000..82e2242
Binary files /dev/null and b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/drawable-xxhdpi/ic_launcher.png differ
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/layout/activity_main.xml b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/layout/activity_main.xml
new file mode 100644 (file)
index 0000000..f24e998
--- /dev/null
@@ -0,0 +1,20 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:gravity="center"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    tools:context=".MainActivity" >
+
+    <ToggleButton
+        android:id="@+id/toggleButton1"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:text="Board LED"
+        android:onClick="changeLEDState"/>
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/menu/main.xml b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/menu/main.xml
new file mode 100644 (file)
index 0000000..d227c49
--- /dev/null
@@ -0,0 +1,9 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android" >
+
+    <item
+        android:id="@+id/action_settings"
+        android:orderInCategory="100"
+        android:showAsAction="never"
+        android:title="@string/action_settings"/>
+
+</menu>
\ No newline at end of file
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/values-sw600dp/dimens.xml b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/values-sw600dp/dimens.xml
new file mode 100644 (file)
index 0000000..1ba777d
--- /dev/null
@@ -0,0 +1,8 @@
+<resources>
+
+    <!--
+         Customize dimensions originally defined in res/values/dimens.xml (such as
+         screen margins) for sw600dp devices (e.g. 7" tablets) here.
+    -->
+
+</resources>
\ No newline at end of file
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/values-sw720dp-land/dimens.xml b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/values-sw720dp-land/dimens.xml
new file mode 100644 (file)
index 0000000..eee741a
--- /dev/null
@@ -0,0 +1,9 @@
+<resources>
+
+    <!--
+         Customize dimensions originally defined in res/values/dimens.xml (such as
+         screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.
+    -->
+    <dimen name="activity_horizontal_margin">128dp</dimen>
+
+</resources>
\ No newline at end of file
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/values-v11/styles.xml b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/values-v11/styles.xml
new file mode 100644 (file)
index 0000000..541752f
--- /dev/null
@@ -0,0 +1,11 @@
+<resources>
+
+    <!--
+        Base application theme for API 11+. This theme completely replaces
+        AppBaseTheme from res/values/styles.xml on API 11+ devices.
+    -->
+    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
+        <!-- API 11 theme customizations can go here. -->
+    </style>
+
+</resources>
\ No newline at end of file
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/values-v14/styles.xml b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/values-v14/styles.xml
new file mode 100644 (file)
index 0000000..f20e015
--- /dev/null
@@ -0,0 +1,12 @@
+<resources>
+
+    <!--
+        Base application theme for API 14+. This theme completely replaces
+        AppBaseTheme from BOTH res/values/styles.xml and
+        res/values-v11/styles.xml on API 14+ devices.
+    -->
+    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
+        <!-- API 14 theme customizations can go here. -->
+    </style>
+
+</resources>
\ No newline at end of file
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/values/dimens.xml b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/values/dimens.xml
new file mode 100644 (file)
index 0000000..a6dd140
--- /dev/null
@@ -0,0 +1,7 @@
+<resources>
+
+    <!-- Default screen margins, per the Android Design guidelines. -->
+    <dimen name="activity_horizontal_margin">16dp</dimen>
+    <dimen name="activity_vertical_margin">16dp</dimen>
+
+</resources>
\ No newline at end of file
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/values/strings.xml b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/values/strings.xml
new file mode 100644 (file)
index 0000000..2593f60
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <string name="app_name">LUFA AOA Example</string>
+    <string name="action_settings">Settings</string>
+
+</resources>
\ No newline at end of file
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/values/styles.xml b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/values/styles.xml
new file mode 100644 (file)
index 0000000..4a10ca4
--- /dev/null
@@ -0,0 +1,20 @@
+<resources>
+
+    <!--
+        Base application theme, dependent on API level. This theme is replaced
+        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
+    -->
+    <style name="AppBaseTheme" parent="android:Theme.Light">
+        <!--
+            Theme customizations available in newer API levels can go in
+            res/values-vXX/styles.xml, while customizations related to
+            backward-compatibility can go here.
+        -->
+    </style>
+
+    <!-- Application theme. -->
+    <style name="AppTheme" parent="AppBaseTheme">
+        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
+    </style>
+
+</resources>
\ No newline at end of file
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/xml/accessory_filter.xml b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/res/xml/accessory_filter.xml
new file mode 100644 (file)
index 0000000..acf6c61
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<resources>
+    <usb-accessory manufacturer="Dean Camera" model="LUFA Android Demo" version="1.0" />
+</resources>
\ No newline at end of file
diff --git a/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/src/com/example/lufa_aoa_test/MainActivity.java b/Demos/Host/ClassDriver/AndroidAccessoryHost/AndroidHostApp/src/com/example/lufa_aoa_test/MainActivity.java
new file mode 100644 (file)
index 0000000..e558763
--- /dev/null
@@ -0,0 +1,68 @@
+package com.example.lufa_aoa_test;
+
+import java.io.FileDescriptor;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import android.os.Bundle;
+import android.os.ParcelFileDescriptor;
+import android.app.Activity;
+import android.content.Intent;
+import android.view.Menu;
+import android.view.View;
+import android.widget.*;
+import com.android.future.usb.*;
+
+public class MainActivity extends Activity {
+       private UsbManager mUSBManager;
+       private UsbAccessory mAccessoryDevice;
+       private ParcelFileDescriptor mFileDescriptor;
+       private FileInputStream mInputStream;
+       private FileOutputStream mOutputStream;
+       
+       public void changeLEDState(View v) {
+               boolean newButtonState = ((ToggleButton)v).isChecked();
+               
+               if (mOutputStream != null) {
+                       try {
+                               mOutputStream.write(newButtonState ? 0x01 : 0x00);
+                       }
+                       catch (IOException e)
+                       {
+                               
+                       }
+               }
+       }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_main);
+        
+        Intent intent = getIntent();
+        
+        if ((intent != null) && (intent.getAction() == com.android.future.usb.UsbManager.ACTION_USB_ACCESSORY_ATTACHED))
+        {
+            mUSBManager = UsbManager.getInstance(this);
+            if (mUSBManager != null)
+            {            
+                       mAccessoryDevice = UsbManager.getAccessory(intent);
+                       mFileDescriptor = mUSBManager.openAccessory(mAccessoryDevice);
+
+                       FileDescriptor fd = mFileDescriptor.getFileDescriptor();
+                   mInputStream = new FileInputStream(fd);
+                   mOutputStream = new FileOutputStream(fd);
+            }
+        }
+    }
+
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        // Inflate the menu; this adds items to the action bar if it is present.
+        getMenuInflater().inflate(R.menu.main, menu);
+        return true;
+    }
+    
+}