Pull out Android Accessory Mode functions into a seperate set of files in the incompl...
[pub/lufa.git] / Demos / Host / Incomplete / AndroidAccessoryHost / Lib / AndroidAccessoryCommands.c
diff --git a/Demos/Host/Incomplete/AndroidAccessoryHost/Lib/AndroidAccessoryCommands.c b/Demos/Host/Incomplete/AndroidAccessoryHost/Lib/AndroidAccessoryCommands.c
new file mode 100644 (file)
index 0000000..cd26538
--- /dev/null
@@ -0,0 +1,83 @@
+/*\r
+             LUFA Library\r
+     Copyright (C) Dean Camera, 2011.\r
+\r
+  dean [at] fourwalledcubicle [dot] com\r
+           www.lufa-lib.org\r
+*/\r
+\r
+/*\r
+  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+  Permission to use, copy, modify, distribute, and sell this\r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in\r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting\r
+  documentation, and that the name of the author not be used in\r
+  advertising or publicity pertaining to distribution of the\r
+  software without specific, written prior permission.\r
+\r
+  The author disclaim all warranties with regard to this\r
+  software, including all implied warranties of merchantability\r
+  and fitness.  In no event shall the author be liable for any\r
+  special, indirect or consequential damages or any damages\r
+  whatsoever resulting from loss of use, data or profits, whether\r
+  in an action of contract, negligence or other tortious action,\r
+  arising out of or in connection with the use or performance of\r
+  this software.\r
+*/\r
+\r
+/** \file\r
+ *\r
+ *  Android Accessory Mode utility functions, for the configuration of an attached\r
+ *  Android device into Android Accessory Mode ready for general communication.\r
+ */\r
\r
+#include "AndroidAccessoryCommands.h" \r
+\r
+uint8_t Android_GetAccessoryProtocol(uint16_t* const Protocol)\r
+{\r
+       USB_ControlRequest = (USB_Request_Header_t)\r
+       {\r
+               .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_VENDOR | REQREC_DEVICE),\r
+               .bRequest      = ANDROID_Req_GetAccessoryProtocol,\r
+               .wValue        = 0,\r
+               .wIndex        = 0,\r
+               .wLength       = sizeof(uint16_t),\r
+       };\r
+\r
+       Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
+       return USB_Host_SendControlRequest(Protocol);\r
+}\r
+\r
+uint8_t Android_SendString(const uint8_t StringIndex,\r
+                           char* String)\r
+{\r
+       USB_ControlRequest = (USB_Request_Header_t)\r
+       {\r
+               .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_VENDOR | REQREC_DEVICE),\r
+               .bRequest      = ANDROID_Req_SendString,\r
+               .wValue        = 0,\r
+               .wIndex        = StringIndex,\r
+               .wLength       = (strlen(String) + 1),\r
+       };\r
+\r
+       Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
+       return USB_Host_SendControlRequest(String);\r
+}\r
+\r
+uint8_t Android_StartAccessoryMode(void)\r
+{\r
+       USB_ControlRequest = (USB_Request_Header_t)\r
+       {\r
+               .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_VENDOR | REQREC_DEVICE),\r
+               .bRequest      = ANDROID_Req_StartAccessoryMode,\r
+               .wValue        = 0,\r
+               .wIndex        = 0,\r
+               .wLength       = 0,\r
+       };\r
+\r
+       Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
+       return USB_Host_SendControlRequest(NULL);       \r
+}\r