--- /dev/null
+/*\r
+ LUFA Library\r
+ Copyright (C) Dean Camera, 2009.\r
+ \r
+ dean [at] fourwalledcubicle [dot] com\r
+ www.fourwalledcubicle.com\r
+*/\r
+\r
+/*\r
+ Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+ Permission to use, copy, modify, and distribute this software\r
+ and its documentation for any purpose and without fee is hereby\r
+ granted, provided that the above copyright notice appear in all\r
+ 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
+#include "SideshowApplications.h"\r
+\r
+SideShow_Application_t InstalledApplications[MAX_APPLICATIONS];\r
+\r
+\r
+uint8_t SideShow_GetTotalApplications(void)\r
+{\r
+ uint8_t TotalInstalledApps = 0;\r
+ \r
+ for (uint8_t App = 0; App < ARRAY_ELEMENTS(InstalledApplications); App++)\r
+ {\r
+ if (InstalledApplications[App].InUse)\r
+ TotalInstalledApps++;\r
+ }\r
+ \r
+ return TotalInstalledApps; \r
+}\r
+\r
+SideShow_Application_t* SideShow_GetFreeApplication(void)\r
+{\r
+ for (uint8_t App = 0; App < ARRAY_ELEMENTS(InstalledApplications); App++)\r
+ {\r
+ if (!(InstalledApplications[App].InUse))\r
+ return &InstalledApplications[App];\r
+ }\r
+ \r
+ return NULL;\r
+}\r
+\r
+SideShow_Application_t* SideShow_GetApplicationFromGUID(GUID_t* GUID)\r
+{\r
+ for (uint8_t App = 0; App < ARRAY_ELEMENTS(InstalledApplications); App++)\r
+ {\r
+ if (InstalledApplications[App].InUse)\r
+ {\r
+ if (memcmp(&InstalledApplications[App].ApplicationID, GUID, sizeof(GUID_t)) == 0)\r
+ return &InstalledApplications[App];\r
+ }\r
+ }\r
+ \r
+ return NULL;\r
+}\r
--- /dev/null
+/*\r
+ LUFA Library\r
+ Copyright (C) Dean Camera, 2009.\r
+ \r
+ dean [at] fourwalledcubicle [dot] com\r
+ www.fourwalledcubicle.com\r
+*/\r
+\r
+/*\r
+ Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+ Permission to use, copy, modify, and distribute this software\r
+ and its documentation for any purpose and without fee is hereby\r
+ granted, provided that the above copyright notice appear in all\r
+ 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
+#ifndef _SIDESHOW_APPLICATIONS_H_\r
+#define _SIDESHOW_APPLICATIONS_H_\r
+\r
+ /* Includes: */\r
+ #include <avr/io.h> \r
+ #include <string.h>\r
+ #include <stdbool.h>\r
+ \r
+ #include "SideshowCommon.h"\r
+\r
+ /* Type Defines: */\r
+ typedef struct\r
+ {\r
+ bool InUse;\r
+ GUID_t ApplicationID;\r
+ GUID_t EndpointID;\r
+ UNICODE_STRING_t(50) ApplicationName;\r
+ uint32_t CachePolicy;\r
+ uint32_t OnlineOnly;\r
+ bool HaveContent;\r
+ uint32_t CurrentContentID;\r
+ uint8_t CurrentContent[MAX_CONTENTBUFFER_PER_APP];\r
+ } SideShow_Application_t;\r
+ \r
+ /* External Variables: */\r
+ extern SideShow_Application_t InstalledApplications[MAX_APPLICATIONS];\r
+ \r
+ /* Function Prototypes: */\r
+ uint8_t SideShow_GetTotalApplications(void);\r
+ SideShow_Application_t* SideShow_GetFreeApplication(void);\r
+ SideShow_Application_t* SideShow_GetApplicationFromGUID(GUID_t* GUID);\r
+ \r
+#endif\r
--- /dev/null
+/*\r
+ LUFA Library\r
+ Copyright (C) Dean Camera, 2009.\r
+ \r
+ dean [at] fourwalledcubicle [dot] com\r
+ www.fourwalledcubicle.com\r
+*/\r
+\r
+/*\r
+ Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+ Permission to use, copy, modify, and distribute this software\r
+ and its documentation for any purpose and without fee is hereby\r
+ granted, provided that the above copyright notice appear in all\r
+ 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
+#define INCLUDE_FROM_SIDESHOWCOMMANDS_H\r
+#include "SideshowCommands.h"\r
+\r
+UNICODE_STRING_t(80) UserSID = {LengthInBytes: sizeof(SECURITY_INTERACTIVE_RID_SID),\r
+ UnicodeString: SECURITY_INTERACTIVE_RID_SID};\r
+\r
+Unicode_String_t DeviceName = {LengthInBytes: sizeof(L"LUFA Sideshow Device"),\r
+ UnicodeString: L"LUFA Sideshow Device"};\r
+\r
+Unicode_String_t Manufacturer = {LengthInBytes: sizeof(L"Dean Camera"),\r
+ UnicodeString: L"Dean Camera"};\r
+\r
+Unicode_String_t SupportedLanguage = {LengthInBytes: sizeof(L"en-US:1"),\r
+ UnicodeString: L"en-US:1"};\r
+ \r
+void Sideshow_ProcessCommandPacket(void)\r
+{\r
+ SideShow_PacketHeader_t PacketHeader;\r
+ \r
+ Endpoint_SelectEndpoint(SIDESHOW_OUT_EPNUM); \r
+ Endpoint_Read_Stream_LE(&PacketHeader, sizeof(SideShow_PacketHeader_t));\r
+ \r
+ PacketHeader.Type.Response = true;\r
+\r
+ printf("\r\nCmd: %lX", (PacketHeader.Type.TypeLong & 0x00FFFFFF));\r
+\r
+ switch (PacketHeader.Type.TypeLong & 0x00FFFFFF)\r
+ {\r
+ case SIDESHOW_CMD_PING:\r
+ SideShow_Ping(&PacketHeader);\r
+ break;\r
+ case SIDESHOW_CMD_SYNC:\r
+ SideShow_Sync(&PacketHeader);\r
+ break;\r
+ case SIDESHOW_CMD_GET_CURRENT_USER:\r
+ SideShow_GetCurrentUser(&PacketHeader);\r
+ break;\r
+ case SIDESHOW_CMD_SET_CURRENT_USER:\r
+ SideShow_SetCurrentUser(&PacketHeader);\r
+ break;\r
+ case SIDESHOW_CMD_GET_CAPABILITIES:\r
+ SideShow_GetCapabilities(&PacketHeader);\r
+ break; \r
+ case SIDESHOW_CMD_GET_DEVICE_NAME:\r
+ SideShow_GetString(&PacketHeader, &DeviceName);\r
+ break;\r
+ case SIDESHOW_CMD_GET_MANUFACTURER:\r
+ SideShow_GetString(&PacketHeader, &Manufacturer);\r
+ break;\r
+ case SIDESHOW_CMD_GET_APPLICATION_ORDER:\r
+ SideShow_GetApplicationOrder(&PacketHeader);\r
+ break;\r
+ case SIDESHOW_CMD_GET_SUPPORTED_ENDPOINTS:\r
+ SideShow_GetSupportedEndpoints(&PacketHeader);\r
+ break;\r
+ case SIDESHOW_CMD_ADD_APPLICATION:\r
+ SideShow_AddApplication(&PacketHeader);\r
+ break;\r
+ case SIDESHOW_CMD_ADD_CONTENT:\r
+ SideShow_AddContent(&PacketHeader);\r
+ break;\r
+ case SIDESHOW_CMD_DELETE_CONTENT:\r
+ SideShow_DeleteContent(&PacketHeader);\r
+ break;\r
+ case SIDESHOW_CMD_DELETE_ALL_CONTENT:\r
+ SideShow_DeleteAllContent(&PacketHeader);\r
+ break; \r
+ case SIDESHOW_CMD_DELETE_APPLICATION:\r
+ SideShow_DeleteApplication(&PacketHeader);\r
+ break;\r
+ case SIDESHOW_CMD_DELETE_ALL_APPLICATIONS:\r
+ SideShow_DeleteAllApplications(&PacketHeader);\r
+ break;\r
+ default:\r
+ PacketHeader.Length -= sizeof(SideShow_PacketHeader_t);\r
+\r
+ Endpoint_Discard_Stream(PacketHeader.Length);\r
+ Endpoint_ClearOUT();\r
+\r
+ PacketHeader.Length = sizeof(SideShow_PacketHeader_t);\r
+ PacketHeader.Type.NAK = true;\r
+ \r
+ Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM); \r
+ Endpoint_Write_Stream_LE(&PacketHeader, sizeof(SideShow_PacketHeader_t)); \r
+ Endpoint_ClearIN();\r
+ \r
+ printf(" UNK");\r
+ }\r
+}\r
+\r
+static void SideShow_Ping(SideShow_PacketHeader_t* PacketHeader)\r
+{\r
+ Endpoint_ClearOUT();\r
+\r
+ Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM); \r
+ Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t)); \r
+ Endpoint_ClearIN();\r
+}\r
+\r
+static void SideShow_Sync(SideShow_PacketHeader_t* PacketHeader)\r
+{\r
+ GUID_t ProtocolGUID;\r
+\r
+ Endpoint_Read_Stream_LE(&ProtocolGUID, sizeof(GUID_t));\r
+ Endpoint_ClearOUT();\r
+ \r
+ if (memcmp(&ProtocolGUID, (uint32_t[])STANDARD_PROTOCOL_GUID, sizeof(GUID_t)) != 0)\r
+ PacketHeader->Type.NAK = true;\r
+\r
+ Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
+ Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t)); \r
+ Endpoint_Write_Stream_LE(&ProtocolGUID, sizeof(GUID_t));\r
+ Endpoint_ClearIN();\r
+}\r
+\r
+static void SideShow_GetCurrentUser(SideShow_PacketHeader_t* PacketHeader)\r
+{\r
+ Endpoint_ClearOUT();\r
+\r
+ PacketHeader->Length = sizeof(SideShow_PacketHeader_t) + sizeof(uint32_t) + UserSID.LengthInBytes;\r
+\r
+ Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
+ Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
+ SideShow_Write_Unicode_String(&UserSID);\r
+ Endpoint_ClearIN();\r
+}\r
+\r
+static void SideShow_SetCurrentUser(SideShow_PacketHeader_t* PacketHeader)\r
+{\r
+ SideShow_Read_Unicode_String(&UserSID, sizeof(UserSID.UnicodeString));\r
+ Endpoint_ClearOUT();\r
+ \r
+ PacketHeader->Length = sizeof(SideShow_PacketHeader_t);\r
+\r
+ Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
+ Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
+ Endpoint_ClearIN();\r
+}\r
+\r
+static void SideShow_GetCapabilities(SideShow_PacketHeader_t* PacketHeader)\r
+{\r
+ SideShow_PropertyKey_t Property;\r
+ SideShow_PropertyData_t PropertyData;\r
+\r
+ Endpoint_Read_Stream_LE(&Property, sizeof(SideShow_PropertyKey_t));\r
+ Endpoint_ClearOUT();\r
+ \r
+ printf(" ID: %lu", Property.PropertyID);\r
+\r
+ PacketHeader->Length = sizeof(SideShow_PacketHeader_t);\r
+\r
+ if (memcmp(&Property.PropertyGUID, (uint32_t[])SIDESHOW_PROPERTY_GUID, sizeof(GUID_t)) == 0)\r
+ {\r
+ switch (Property.PropertyID)\r
+ {\r
+ case PROPERTY_SIDESHOW_SCREENTYPE:\r
+ PropertyData.DataType = VT_I4;\r
+ PropertyData.Data.Data32 = ScreenText;\r
+ PacketHeader->Length += sizeof(uint32_t);\r
+ \r
+ break;\r
+ case PROPERTY_SIDESHOW_SCREENWIDTH:\r
+ case PROPERTY_SIDESHOW_CLIENTWIDTH:\r
+ PropertyData.DataType = VT_UI2;\r
+ PropertyData.Data.Data16 = 16;\r
+ PacketHeader->Length += sizeof(uint16_t);\r
+ \r
+ break;\r
+ case PROPERTY_SIDESHOW_SCREENHEIGHT:\r
+ case PROPERTY_SIDESHOW_CLIENTHEIGHT:\r
+ PropertyData.DataType = VT_UI2;\r
+ PropertyData.Data.Data16 = 2;\r
+ PacketHeader->Length += sizeof(uint16_t);\r
+ \r
+ break;\r
+ case PROPERTY_SIDESHOW_COLORDEPTH:\r
+ PropertyData.DataType = VT_UI2;\r
+ PropertyData.Data.Data16 = 1;\r
+ PacketHeader->Length += sizeof(uint16_t);\r
+ \r
+ break;\r
+ case PROPERTY_SIDESHOW_COLORTYPE:\r
+ PropertyData.DataType = VT_UI2;\r
+ PropertyData.Data.Data16 = BlackAndWhiteDisplay;\r
+ PacketHeader->Length += sizeof(uint16_t);\r
+ \r
+ break;\r
+ case PROPERTY_SIDESHOW_DATACACHE:\r
+ PropertyData.DataType = VT_BOOL;\r
+ PropertyData.Data.Data16 = false;\r
+ PacketHeader->Length += sizeof(uint16_t);\r
+ \r
+ break;\r
+ case PROPERTY_SIDESHOW_SUPPORTEDLANGS:\r
+ case PROPERTY_SIDESHOW_CURRENTLANG:\r
+ PropertyData.DataType = VT_LPWSTR;\r
+ PropertyData.Data.DataPointer = &SupportedLanguage;\r
+ PacketHeader->Length += SupportedLanguage.LengthInBytes;\r
+ \r
+ break;\r
+ default:\r
+ PropertyData.DataType = VT_EMPTY;\r
+ break;\r
+ }\r
+ }\r
+ else if (memcmp(&Property.PropertyGUID, (uint32_t[])DEVICE_PROPERTY_GUID, sizeof(GUID_t)) == 0)\r
+ {\r
+ switch (Property.PropertyID)\r
+ {\r
+ case PROPERTY_DEVICE_DEVICETYPE:\r
+ PropertyData.DataType = VT_UI4;\r
+ PropertyData.Data.Data32 = GenericDevice;\r
+ PacketHeader->Length += sizeof(uint32_t);\r
+ \r
+ break;\r
+ }\r
+ } \r
+ else\r
+ {\r
+ PacketHeader->Type.NAK = true; \r
+ \r
+ printf(" WRONG GUID");\r
+ printf(" %lX %lX %lX %lX", Property.PropertyGUID.Chunks[0], Property.PropertyGUID.Chunks[1],\r
+ Property.PropertyGUID.Chunks[2], Property.PropertyGUID.Chunks[3]); \r
+ }\r
+\r
+ Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
+ Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
+ \r
+ if (!(PacketHeader->Type.NAK))\r
+ {\r
+ switch (PropertyData.DataType)\r
+ {\r
+ case VT_UI4:\r
+ case VT_I4:\r
+ Endpoint_Write_Stream_LE(&PropertyData.Data.Data32, sizeof(uint32_t));\r
+ break;\r
+ case VT_UI2:\r
+ case VT_I2:\r
+ case VT_BOOL:\r
+ Endpoint_Write_Stream_LE(&PropertyData.Data.Data16, sizeof(uint16_t));\r
+ break;\r
+ case VT_LPWSTR:\r
+ SideShow_Write_Unicode_String((Unicode_String_t*)PropertyData.Data.Data16);\r
+ break;\r
+ }\r
+ }\r
+ \r
+ Endpoint_ClearIN();\r
+ return;\r
+}\r
+\r
+static void SideShow_GetString(SideShow_PacketHeader_t* PacketHeader, void* UnicodeStruct)\r
+{\r
+ Endpoint_ClearOUT();\r
+\r
+ PacketHeader->Length = sizeof(SideShow_PacketHeader_t) +\r
+ sizeof(uint32_t) + ((Unicode_String_t*)UnicodeStruct)->LengthInBytes;\r
+ \r
+ Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
+ Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
+ SideShow_Write_Unicode_String(UnicodeStruct);\r
+ Endpoint_ClearIN();\r
+}\r
+\r
+static void SideShow_GetApplicationOrder(SideShow_PacketHeader_t* PacketHeader)\r
+{\r
+ uint8_t TotalInstalledApplications = SideShow_GetTotalApplications();\r
+ uint16_t GadgetGUIDBytes = (TotalInstalledApplications * sizeof(GUID_t));\r
+\r
+ Endpoint_ClearOUT();\r
+\r
+ PacketHeader->Length = sizeof(SideShow_PacketHeader_t) +\r
+ sizeof(uint32_t) + GadgetGUIDBytes;\r
+ \r
+ Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
+ Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
+ Endpoint_Write_DWord_LE(TotalInstalledApplications);\r
+ \r
+ for (uint8_t App = 0; App < MAX_APPLICATIONS; App++)\r
+ {\r
+ if (InstalledApplications[App].InUse == true)\r
+ Endpoint_Write_Stream_LE(&InstalledApplications[App].ApplicationID, sizeof(GUID_t));\r
+ }\r
+\r
+ Endpoint_ClearIN();\r
+}\r
+\r
+static void SideShow_GetSupportedEndpoints(SideShow_PacketHeader_t* PacketHeader)\r
+{\r
+ GUID_t SupportedEndpointGUID = (GUID_t){Chunks: SIMPLE_CONTENT_FORMAT_GUID};\r
+\r
+ Endpoint_ClearOUT();\r
+\r
+ PacketHeader->Length = sizeof(SideShow_PacketHeader_t) + sizeof(uint32_t) + sizeof(GUID_t);\r
+ \r
+ Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
+ Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
+ Endpoint_Write_DWord_LE(1);\r
+ Endpoint_Write_Stream_LE(&SupportedEndpointGUID, sizeof(GUID_t));\r
+ Endpoint_ClearIN();\r
+}\r
+\r
+static void SideShow_AddApplication(SideShow_PacketHeader_t* PacketHeader)\r
+{\r
+ SideShow_Application_t* CurrApp;\r
+ GUID_t ApplicationID;\r
+\r
+ Endpoint_Read_Stream_LE(&ApplicationID, sizeof(GUID_t));\r
+\r
+ CurrApp = SideShow_GetApplicationFromGUID(&ApplicationID);\r
+\r
+ if (CurrApp == NULL)\r
+ CurrApp = SideShow_GetFreeApplication();\r
+\r
+ if (CurrApp == NULL)\r
+ {\r
+ PacketHeader->Length -= sizeof(SideShow_PacketHeader_t) + sizeof(GUID_t);\r
+\r
+ Endpoint_Discard_Stream(PacketHeader->Length);\r
+ Endpoint_ClearOUT();\r
+\r
+ PacketHeader->Type.NAK = true;\r
+ }\r
+ else\r
+ {\r
+ CurrApp->ApplicationID = ApplicationID;\r
+ Endpoint_Read_Stream_LE(&CurrApp->EndpointID, sizeof(GUID_t));\r
+ SideShow_Read_Unicode_String(&CurrApp->ApplicationName, sizeof(CurrApp->ApplicationName.UnicodeString));\r
+ Endpoint_Read_Stream_LE(&CurrApp->CachePolicy, sizeof(uint32_t));\r
+ Endpoint_Read_Stream_LE(&CurrApp->OnlineOnly, sizeof(uint32_t));\r
+ SideShow_Discard_Byte_Stream();\r
+ SideShow_Discard_Byte_Stream();\r
+ SideShow_Discard_Byte_Stream();\r
+ Endpoint_ClearOUT();\r
+ \r
+ CurrApp->InUse = true;\r
+ CurrApp->HaveContent = false;\r
+ CurrApp->CurrentContentID = 1;\r
+ }\r
+\r
+ PacketHeader->Length = sizeof(SideShow_PacketHeader_t);\r
+\r
+ Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
+ Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
+ Endpoint_ClearIN();\r
+}\r
+\r
+static void SideShow_DeleteApplication(SideShow_PacketHeader_t* PacketHeader)\r
+{\r
+ GUID_t ApplicationGUID;\r
+ \r
+ Endpoint_Read_Stream_LE(&ApplicationGUID, sizeof(GUID_t)); \r
+ Endpoint_ClearOUT();\r
+\r
+ SideShow_Application_t* AppToDelete = SideShow_GetApplicationFromGUID(&ApplicationGUID);\r
+\r
+ if (AppToDelete != NULL)\r
+ {\r
+ AppToDelete->InUse = false;\r
+ }\r
+ else\r
+ PacketHeader->Type.NAK = true;\r
+\r
+ PacketHeader->Length = sizeof(SideShow_PacketHeader_t);\r
+\r
+ Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
+ Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
+ Endpoint_ClearIN();\r
+}\r
+\r
+static void SideShow_DeleteAllApplications(SideShow_PacketHeader_t* PacketHeader)\r
+{\r
+ Endpoint_ClearOUT();\r
+ \r
+ for (uint8_t App = 0; App < MAX_APPLICATIONS; App++)\r
+ InstalledApplications[App].InUse = false;\r
+\r
+ Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
+ Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
+ Endpoint_ClearIN();\r
+}\r
+\r
+static void SideShow_AddContent(SideShow_PacketHeader_t* PacketHeader)\r
+{\r
+ GUID_t ApplicationID;\r
+ GUID_t EndpointID;\r
+ SideShow_Application_t* Application;\r
+ \r
+ Endpoint_Read_Stream_LE(&ApplicationID, sizeof(GUID_t));\r
+ Endpoint_Read_Stream_LE(&EndpointID, sizeof(GUID_t));\r
+ \r
+ Application = SideShow_GetApplicationFromGUID(&ApplicationID);\r
+ \r
+ if (Application == NULL)\r
+ {\r
+ SideShow_Discard_Byte_Stream();\r
+ PacketHeader->Type.NAK = true;\r
+ }\r
+ else if (!(SideShow_AddSimpleContent(PacketHeader, Application)))\r
+ {\r
+ PacketHeader->Type.NAK = true;\r
+ }\r
+ \r
+ Endpoint_ClearOUT();\r
+\r
+ PacketHeader->Length = sizeof(SideShow_PacketHeader_t);\r
+\r
+ Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
+ Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
+ Endpoint_ClearIN();\r
+}\r
+\r
+static void SideShow_DeleteContent(SideShow_PacketHeader_t* PacketHeader)\r
+{\r
+ GUID_t ApplicationID;\r
+ GUID_t EndpointID;\r
+ uint32_t ContentID;\r
+\r
+ Endpoint_Read_Stream_LE(&ApplicationID, sizeof(GUID_t));\r
+ Endpoint_Read_Stream_LE(&EndpointID, sizeof(GUID_t));\r
+ Endpoint_Read_Stream_LE(&ContentID, sizeof(uint32_t));\r
+ Endpoint_ClearOUT();\r
+ \r
+ SideShow_Application_t* Application = SideShow_GetApplicationFromGUID(&ApplicationID);\r
+ \r
+ if ((Application != NULL) && (Application->CurrentContentID == ContentID))\r
+ Application->HaveContent = false;\r
+ else\r
+ PacketHeader->Type.NAK = true;\r
+ \r
+ PacketHeader->Length = sizeof(SideShow_PacketHeader_t);\r
+\r
+ Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
+ Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
+ Endpoint_ClearIN();\r
+}\r
+\r
+static void SideShow_DeleteAllContent(SideShow_PacketHeader_t* PacketHeader)\r
+{\r
+ GUID_t ApplicationID;\r
+ GUID_t EndpointID;\r
+\r
+ Endpoint_Read_Stream_LE(&ApplicationID, sizeof(GUID_t));\r
+ Endpoint_Read_Stream_LE(&EndpointID, sizeof(GUID_t));\r
+ Endpoint_ClearOUT();\r
+\r
+ SideShow_Application_t* Application = SideShow_GetApplicationFromGUID(&ApplicationID);\r
+ \r
+ if (Application != NULL)\r
+ Application->HaveContent = false;\r
+ else\r
+ PacketHeader->Type.NAK = true; \r
+\r
+ PacketHeader->Length = sizeof(SideShow_PacketHeader_t);\r
+\r
+ Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
+ Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
+ Endpoint_ClearIN(); \r
+}\r
--- /dev/null
+/*\r
+ LUFA Library\r
+ Copyright (C) Dean Camera, 2009.\r
+ \r
+ dean [at] fourwalledcubicle [dot] com\r
+ www.fourwalledcubicle.com\r
+*/\r
+\r
+/*\r
+ Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+ Permission to use, copy, modify, and distribute this software\r
+ and its documentation for any purpose and without fee is hereby\r
+ granted, provided that the above copyright notice appear in all\r
+ 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
+#ifndef _SIDESHOW_COMMANDS_H_\r
+#define _SIDESHOW_COMMANDS_H_\r
+\r
+ /* Includes: */\r
+ #include <avr/io.h>\r
+ #include <stdbool.h>\r
+ #include <string.h>\r
+ \r
+ #include "Sideshow.h"\r
+ #include "SideshowCommon.h"\r
+ #include "SideshowApplications.h"\r
+ #include "SideshowContent.h"\r
+\r
+ /* Enumerations: */\r
+ enum SideShow_PropertyKey_Types_t\r
+ {\r
+ VT_EMPTY = 0,\r
+ VT_NULL = 1,\r
+ VT_I2 = 2,\r
+ VT_I4 = 3,\r
+ VT_R4 = 4,\r
+ VT_R8 = 5,\r
+ VT_CY = 6,\r
+ VT_DATE = 7,\r
+ VT_BSTR = 8,\r
+ VT_DISPATCH = 9,\r
+ VT_ERROR = 10,\r
+ VT_BOOL = 11,\r
+ VT_VARIANT = 12,\r
+ VT_UNKNOWN = 13,\r
+ VT_UI1 = 17,\r
+ VT_UI2 = 18,\r
+ VT_UI4 = 19,\r
+ VT_LPWSTR = 31,\r
+ };\r
+ \r
+ enum SideShow_ScreenTypeText_t\r
+ {\r
+ ScreenBitmap = 0,\r
+ ScreenText = 1,\r
+ };\r
+ \r
+ enum SideShow_ColorTypes_t\r
+ {\r
+ ColorDisplay = 0,\r
+ GrayscaleDisplay = 1,\r
+ BlackAndWhiteDisplay = 2, \r
+ };\r
+\r
+ enum SideShow_DeviceTypes_t\r
+ { \r
+ GenericDevice = 0, \r
+ CameraDevice = 1, \r
+ MediaPlayerDevice = 2, \r
+ PhoneDevice = 3,\r
+ VideoDevice = 4,\r
+ PIMDevice = 5,\r
+ AudioRecorderDevice = 6\r
+ };\r
+\r
+ /* Type Defines: */\r
+ typedef struct\r
+ {\r
+ GUID_t PropertyGUID;\r
+ uint32_t PropertyID;\r
+ } SideShow_PropertyKey_t;\r
+ \r
+ typedef struct\r
+ {\r
+ uint32_t DataType;\r
+ \r
+ union\r
+ {\r
+ void* DataPointer;\r
+ uint8_t Data8;\r
+ uint16_t Data16;\r
+ uint32_t Data32;\r
+ } Data;\r
+ } SideShow_PropertyData_t;\r
+ \r
+ /* Macros: */\r
+ #define SIDESHOW_CMD_PING 0x001\r
+ #define SIDESHOW_CMD_SET_CURRENT_USER 0x100\r
+ #define SIDESHOW_CMD_GET_CURRENT_USER 0x101\r
+ #define SIDESHOW_CMD_GET_CAPABILITIES 0x103 \r
+ #define SIDESHOW_CMD_GET_APPLICATION_ORDER 0x104\r
+ #define SIDESHOW_CMD_ADD_APPLICATION 0x10D\r
+ #define SIDESHOW_CMD_DELETE_APPLICATION 0x10E\r
+ #define SIDESHOW_CMD_DELETE_ALL_APPLICATIONS 0x10F\r
+ #define SIDESHOW_CMD_ADD_CONTENT 0x114\r
+ #define SIDESHOW_CMD_DELETE_CONTENT 0x115\r
+ #define SIDESHOW_CMD_DELETE_ALL_CONTENT 0x116\r
+ #define SIDESHOW_CMD_GET_SUPPORTED_ENDPOINTS 0x117\r
+ #define SIDESHOW_CMD_GET_DEVICE_NAME 0x500\r
+ #define SIDESHOW_CMD_GET_MANUFACTURER 0x501\r
+ #define SIDESHOW_CMD_SYNC 0x502\r
+\r
+ #define PROPERTY_SIDESHOW_DEVICEID 1\r
+ #define PROPERTY_SIDESHOW_SCREENTYPE 2\r
+ #define PROPERTY_SIDESHOW_SCREENWIDTH 3\r
+ #define PROPERTY_SIDESHOW_SCREENHEIGHT 4\r
+ #define PROPERTY_SIDESHOW_COLORDEPTH 5\r
+ #define PROPERTY_SIDESHOW_COLORTYPE 6\r
+ #define PROPERTY_SIDESHOW_DATACACHE 7\r
+ #define PROPERTY_SIDESHOW_SUPPORTEDLANGS 8\r
+ #define PROPERTY_SIDESHOW_CURRENTLANG 9\r
+ #define PROPERTY_SIDESHOW_SUPPORTEDTHEMES 10\r
+ #define PROPERTY_SIDESHOW_IMAGEFORMAT 14\r
+ #define PROPERTY_SIDESHOW_CLIENTWIDTH 15\r
+ #define PROPERTY_SIDESHOW_CLIENTHEIGHT 16\r
+ #define PROPERTY_SIDESHOW_DEVICEICON 17\r
+ \r
+ #define PROPERTY_DEVICE_DEVICETYPE 15\r
+ \r
+ /* Function Prototypes: */\r
+ void Sideshow_ProcessCommandPacket(void);\r
+ \r
+ #if defined(INCLUDE_FROM_SIDESHOWCOMMANDS_H)\r
+ static void SideShow_Ping(SideShow_PacketHeader_t* PacketHeader);\r
+ static void SideShow_Sync(SideShow_PacketHeader_t* PacketHeader);\r
+ static void SideShow_GetCurrentUser(SideShow_PacketHeader_t* PacketHeader);\r
+ static void SideShow_SetCurrentUser(SideShow_PacketHeader_t* PacketHeader);\r
+ static void SideShow_GetCapabilities(SideShow_PacketHeader_t* PacketHeader);\r
+ static void SideShow_GetString(SideShow_PacketHeader_t* PacketHeader, void* UnicodeStruct);\r
+ static void SideShow_GetApplicationOrder(SideShow_PacketHeader_t* PacketHeader);\r
+ static void SideShow_GetSupportedEndpoints(SideShow_PacketHeader_t* PacketHeader);\r
+ static void SideShow_AddApplication(SideShow_PacketHeader_t* PacketHeader);\r
+ static void SideShow_DeleteApplication(SideShow_PacketHeader_t* PacketHeader);\r
+ static void SideShow_DeleteAllApplications(SideShow_PacketHeader_t* PacketHeader);\r
+ static void SideShow_AddContent(SideShow_PacketHeader_t* PacketHeader);\r
+ static void SideShow_DeleteContent(SideShow_PacketHeader_t* PacketHeader);\r
+ static void SideShow_DeleteAllContent(SideShow_PacketHeader_t* PacketHeader);\r
+ #endif\r
+\r
+#endif\r
--- /dev/null
+/*\r
+ LUFA Library\r
+ Copyright (C) Dean Camera, 2009.\r
+ \r
+ dean [at] fourwalledcubicle [dot] com\r
+ www.fourwalledcubicle.com\r
+*/\r
+\r
+/*\r
+ Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+ Permission to use, copy, modify, and distribute this software\r
+ and its documentation for any purpose and without fee is hereby\r
+ granted, provided that the above copyright notice appear in all\r
+ 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
+#include "SideshowCommon.h"\r
+\r
+uint16_t SideShow_Read_Unicode_String(void* UnicodeString, uint16_t MaxBytes)\r
+{\r
+ Unicode_String_t* UnicodeStruct = (Unicode_String_t*)UnicodeString;\r
+ uint32_t UnicodeCharsToRead;\r
+ \r
+ Endpoint_Read_Stream_LE(&UnicodeCharsToRead, sizeof(uint32_t));\r
+ \r
+ int UnicodeData[UnicodeCharsToRead];\r
+\r
+ UnicodeStruct->LengthInBytes = (UnicodeCharsToRead << 1);\r
+\r
+ Endpoint_Read_Stream_LE(&UnicodeData, UnicodeStruct->LengthInBytes);\r
+ \r
+ if (UnicodeStruct->LengthInBytes > MaxBytes)\r
+ UnicodeStruct->LengthInBytes = MaxBytes;\r
+ \r
+ memcpy(&UnicodeStruct->UnicodeString, &UnicodeData, UnicodeStruct->LengthInBytes);\r
+ \r
+ return ((UnicodeCharsToRead << 1) + sizeof(uint32_t));\r
+}\r
+\r
+void SideShow_Write_Unicode_String(void* UnicodeString)\r
+{\r
+ Unicode_String_t* UnicodeStruct = (Unicode_String_t*)UnicodeString;\r
+\r
+ uint32_t StringSizeInCharacters = (UnicodeStruct->LengthInBytes >> 1);\r
+\r
+ Endpoint_Write_Stream_LE(&StringSizeInCharacters, sizeof(uint32_t));\r
+ Endpoint_Write_Stream_LE(&UnicodeStruct->UnicodeString, UnicodeStruct->LengthInBytes);\r
+}\r
+\r
+void SideShow_Discard_Byte_Stream(void)\r
+{\r
+ uint32_t StreamSize;\r
+\r
+ Endpoint_Read_Stream_LE(&StreamSize, sizeof(uint32_t));\r
+ Endpoint_Discard_Stream(StreamSize);\r
+}\r
--- /dev/null
+/*\r
+ LUFA Library\r
+ Copyright (C) Dean Camera, 2009.\r
+ \r
+ dean [at] fourwalledcubicle [dot] com\r
+ www.fourwalledcubicle.com\r
+*/\r
+\r
+/*\r
+ Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+ Permission to use, copy, modify, and distribute this software\r
+ and its documentation for any purpose and without fee is hereby\r
+ granted, provided that the above copyright notice appear in all\r
+ 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
+#ifndef _SIDESHOW_COMMON_H_\r
+#define _SIDESHOW_COMMON_H_\r
+\r
+ /* Includes: */\r
+ #include <avr/io.h>\r
+ #include <string.h> \r
+ \r
+ #include <LUFA/Drivers/USB/USB.h>\r
+\r
+ /* Macros: */\r
+ #define ARRAY_ELEMENTS(x) (sizeof(x) / sizeof(x[0]))\r
+ \r
+ #define UNICODE_STRING_t(x) struct \\r
+ { \\r
+ uint16_t LengthInBytes; \\r
+ int UnicodeString[x]; \\r
+ }\r
+\r
+ // {A33F248B-882F-4531-82C2-ED3B90C5C520}\r
+ #define STANDARD_PROTOCOL_GUID {0xA33F248B, 0x4531882F, 0x3BEDC282, 0x20C5C590}\r
+ // {A9A5353F-2D4B-47CE-93EE-759F3A7DDA4F}\r
+ #define SIMPLE_CONTENT_FORMAT_GUID {0xA9A5353F, 0x47CE2D4B, 0x9F75EE93, 0x4FDA7D3A}\r
+ // {8ABC88A8-857B-4ad7-A35A-B5942F492B99}\r
+ #define SIDESHOW_PROPERTY_GUID {0x8ABC88A8, 0x4AD7857B, 0x94B55AA3, 0x992B492F}\r
+ // {26D4979A-E643-4626-9E2B-736DC0C92FDC}\r
+ #define DEVICE_PROPERTY_GUID {0x26D4979A, 0x4626E643, 0x6D732B9E, 0xDC2FC9C0}\r
+\r
+ #define SECURITY_INTERACTIVE_RID_SID L"S-1-5-4"\r
+\r
+ #define MAX_APPLICATIONS 4\r
+ #define MAX_CONTENTBUFFER_PER_APP 1024\r
+\r
+ /* Type Defines: */\r
+ typedef struct\r
+ {\r
+ uint32_t Chunks[4];\r
+ } GUID_t;\r
+ \r
+ typedef struct\r
+ {\r
+ uint16_t LengthInBytes;\r
+ int UnicodeString[];\r
+ } Unicode_String_t; \r
+\r
+ typedef union\r
+ {\r
+ uint32_t TypeLong;\r
+\r
+ struct\r
+ {\r
+ uint8_t TypeBytes[3];\r
+\r
+ int ErrorCode : 6;\r
+ int NAK : 1;\r
+ int Response : 1; \r
+ };\r
+ } SideShowPacketType_t;\r
+ \r
+ typedef struct\r
+ {\r
+ uint32_t Length;\r
+ SideShowPacketType_t Type;\r
+ uint16_t Number;\r
+ } SideShow_PacketHeader_t;\r
+\r
+ /* Function Prototypes: */\r
+ uint16_t SideShow_Read_Unicode_String(void* UnicodeString, uint16_t MaxBytes);\r
+ void SideShow_Write_Unicode_String(void* UnicodeString);\r
+ void SideShow_Discard_Byte_Stream(void);\r
+\r
+#endif
\ No newline at end of file
--- /dev/null
+/*\r
+ LUFA Library\r
+ Copyright (C) Dean Camera, 2009.\r
+ \r
+ dean [at] fourwalledcubicle [dot] com\r
+ www.fourwalledcubicle.com\r
+*/\r
+\r
+/*\r
+ Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+ Permission to use, copy, modify, and distribute this software\r
+ and its documentation for any purpose and without fee is hereby\r
+ granted, provided that the above copyright notice appear in all\r
+ 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
+#define INCLUDE_FROM_SIDESHOWCONTENT_C\r
+#include "SideshowContent.h"\r
+\r
+bool SideShow_AddSimpleContent(SideShow_PacketHeader_t* PacketHeader, SideShow_Application_t* Application)\r
+{\r
+ uint32_t ContentSize;\r
+ uint32_t ContentID;\r
+ \r
+ Endpoint_Read_Stream_LE(&ContentID, sizeof(uint32_t));\r
+\r
+ PacketHeader->Length -= sizeof(uint32_t);\r
+\r
+ if (Application->CurrentContentID != ContentID)\r
+ {\r
+ Endpoint_Discard_Stream(PacketHeader->Length);\r
+\r
+ return false;\r
+ }\r
+ \r
+ Endpoint_Read_Stream_LE(&ContentSize, sizeof(uint32_t));\r
+ Endpoint_Read_Stream_LE(&Application->CurrentContent, sizeof(XML_START_TAG) - 1);\r
+ \r
+ PacketHeader->Length -= sizeof(uint32_t) + (sizeof(XML_START_TAG) - 1);\r
+\r
+ if (!(memcmp(&Application->CurrentContent, XML_START_TAG, (sizeof(XML_START_TAG) - 1))))\r
+ {\r
+ SideShow_ProcessXMLContent(&Application->CurrentContent, (ContentSize - (sizeof(XML_END_TAG) - 1)));\r
+ \r
+ Endpoint_Discard_Stream(sizeof(XML_END_TAG) - 1);\r
+\r
+ Application->HaveContent = true;\r
+ }\r
+ else\r
+ {\r
+ printf(" BINARY");\r
+ Endpoint_Discard_Stream(ContentSize);\r
+ }\r
+ \r
+ return true;\r
+}\r
+\r
+static void SideShow_ProcessXMLContent(void* ContentData, uint32_t ContentSize)\r
+{\r
+ printf(" XML");\r
+ Endpoint_Discard_Stream(ContentSize);\r
+}\r
--- /dev/null
+/*\r
+ LUFA Library\r
+ Copyright (C) Dean Camera, 2009.\r
+ \r
+ dean [at] fourwalledcubicle [dot] com\r
+ www.fourwalledcubicle.com\r
+*/\r
+\r
+/*\r
+ Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+ Permission to use, copy, modify, and distribute this software\r
+ and its documentation for any purpose and without fee is hereby\r
+ granted, provided that the above copyright notice appear in all\r
+ 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
+#ifndef _SIDESHOW_CONTENT_H_\r
+#define _SIDESHOW_CONTENT_H_\r
+\r
+ /* Includes: */\r
+ #include <avr/io.h>\r
+ #include <stdbool.h>\r
+ #include <string.h>\r
+\r
+ #include "SideshowCommon.h"\r
+ #include "SideshowApplications.h"\r
+ \r
+ /* Enums: */\r
+ enum SideShow_ContentTypes_t\r
+ {\r
+ Content_Menu = 0,\r
+ Content_Content = 1,\r
+ Content_MenuItem = 2,\r
+ Content_Button = 3,\r
+ Content_Text = 4,\r
+ Content_EndOfContent = 5\r
+ };\r
+ \r
+ enum SideShow_ActionTypes_t\r
+ {\r
+ TODO\r
+ };\r
+ \r
+ enum SideShow_AlignmentTypes_t\r
+ {\r
+ TODO2\r
+ };\r
+ \r
+ /* Type Defines: */\r
+ typedef struct\r
+ {\r
+ uint8_t ContentType;\r
+ uint8_t ContentSize; \r
+ } SideShow_Content_Header_t;\r
+ \r
+ typedef struct\r
+ {\r
+ SideShow_Content_Header_t Header;\r
+\r
+ uint32_t ItemID;\r
+ uint8_t ActionType;\r
+ char Title[];\r
+ } SideShow_Content_Menu_t;\r
+\r
+ typedef struct\r
+ {\r
+ SideShow_Content_Header_t Header;\r
+\r
+ uint32_t ItemID;\r
+ uint32_t Target;\r
+ bool IsSelected;\r
+ char Text[];\r
+ } SideShow_Content_MenuItem_t;\r
+ \r
+ typedef struct\r
+ {\r
+ SideShow_Content_Header_t Header;\r
+\r
+ uint8_t Key;\r
+ uint32_t Target;\r
+ } SideShow_Content_Button_t;\r
+ \r
+ typedef struct\r
+ {\r
+ SideShow_Content_Header_t Header;\r
+\r
+ uint32_t ItemID;\r
+ uint32_t AssociatedMenuID;\r
+ char Title[];\r
+ } SideShow_Content_Content_t;\r
+\r
+ typedef struct\r
+ {\r
+ SideShow_Content_Header_t Header;\r
+\r
+ char Text[]; \r
+ } SideShow_Content_Text_t;\r
+ \r
+ /* Defines: */\r
+ #define XML_START_TAG "<body>"\r
+ #define XML_END_TAG "</body>"\r
+ \r
+ /* Function Prototypes: */\r
+ bool SideShow_AddSimpleContent(SideShow_PacketHeader_t* PacketHeader, SideShow_Application_t* Application);\r
+\r
+ #if defined(INCLUDE_FROM_SIDESHOWCONTENT_C)\r
+ static void SideShow_ProcessXMLContent(void* ContentData, uint32_t ContentSize);\r
+ #endif\r
+ \r
+#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- LUFA Library\r
- Copyright (C) Dean Camera, 2009.\r
- \r
- dean [at] fourwalledcubicle [dot] com\r
- www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
- Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
- Permission to use, copy, modify, and distribute this software\r
- and its documentation for any purpose and without fee is hereby\r
- granted, provided that the above copyright notice appear in all\r
- 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
-#include "SideshowApplications.h"\r
-\r
-SideShow_Application_t InstalledApplications[MAX_APPLICATIONS];\r
-\r
-\r
-uint8_t SideShow_GetTotalApplications(void)\r
-{\r
- uint8_t TotalInstalledApps = 0;\r
- \r
- for (uint8_t App = 0; App < ARRAY_ELEMENTS(InstalledApplications); App++)\r
- {\r
- if (InstalledApplications[App].InUse)\r
- TotalInstalledApps++;\r
- }\r
- \r
- return TotalInstalledApps; \r
-}\r
-\r
-SideShow_Application_t* SideShow_GetFreeApplication(void)\r
-{\r
- for (uint8_t App = 0; App < ARRAY_ELEMENTS(InstalledApplications); App++)\r
- {\r
- if (!(InstalledApplications[App].InUse))\r
- return &InstalledApplications[App];\r
- }\r
- \r
- return NULL;\r
-}\r
-\r
-SideShow_Application_t* SideShow_GetApplicationFromGUID(GUID_t* GUID)\r
-{\r
- for (uint8_t App = 0; App < ARRAY_ELEMENTS(InstalledApplications); App++)\r
- {\r
- if (InstalledApplications[App].InUse)\r
- {\r
- if (memcmp(&InstalledApplications[App].ApplicationID, GUID, sizeof(GUID_t)) == 0)\r
- return &InstalledApplications[App];\r
- }\r
- }\r
- \r
- return NULL;\r
-}\r
+++ /dev/null
-/*\r
- LUFA Library\r
- Copyright (C) Dean Camera, 2009.\r
- \r
- dean [at] fourwalledcubicle [dot] com\r
- www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
- Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
- Permission to use, copy, modify, and distribute this software\r
- and its documentation for any purpose and without fee is hereby\r
- granted, provided that the above copyright notice appear in all\r
- 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
-#ifndef _SIDESHOW_APPLICATIONS_H_\r
-#define _SIDESHOW_APPLICATIONS_H_\r
-\r
- /* Includes: */\r
- #include <avr/io.h> \r
- #include <string.h>\r
- #include <stdbool.h>\r
- \r
- #include "SideshowCommon.h"\r
-\r
- /* Type Defines: */\r
- typedef struct\r
- {\r
- bool InUse;\r
- GUID_t ApplicationID;\r
- GUID_t EndpointID;\r
- UNICODE_STRING_t(50) ApplicationName;\r
- uint32_t CachePolicy;\r
- uint32_t OnlineOnly;\r
- bool HaveContent;\r
- uint32_t CurrentContentID;\r
- uint8_t CurrentContent[MAX_CONTENTBUFFER_PER_APP];\r
- } SideShow_Application_t;\r
- \r
- /* External Variables: */\r
- extern SideShow_Application_t InstalledApplications[MAX_APPLICATIONS];\r
- \r
- /* Function Prototypes: */\r
- uint8_t SideShow_GetTotalApplications(void);\r
- SideShow_Application_t* SideShow_GetFreeApplication(void);\r
- SideShow_Application_t* SideShow_GetApplicationFromGUID(GUID_t* GUID);\r
- \r
-#endif\r
+++ /dev/null
-/*\r
- LUFA Library\r
- Copyright (C) Dean Camera, 2009.\r
- \r
- dean [at] fourwalledcubicle [dot] com\r
- www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
- Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
- Permission to use, copy, modify, and distribute this software\r
- and its documentation for any purpose and without fee is hereby\r
- granted, provided that the above copyright notice appear in all\r
- 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
-#define INCLUDE_FROM_SIDESHOWCOMMANDS_H\r
-#include "SideshowCommands.h"\r
-\r
-UNICODE_STRING_t(80) UserSID = {LengthInBytes: sizeof(SECURITY_INTERACTIVE_RID_SID),\r
- UnicodeString: SECURITY_INTERACTIVE_RID_SID};\r
-\r
-Unicode_String_t DeviceName = {LengthInBytes: sizeof(L"LUFA Sideshow Device"),\r
- UnicodeString: L"LUFA Sideshow Device"};\r
-\r
-Unicode_String_t Manufacturer = {LengthInBytes: sizeof(L"Dean Camera"),\r
- UnicodeString: L"Dean Camera"};\r
-\r
-Unicode_String_t SupportedLanguage = {LengthInBytes: sizeof(L"en-US:1"),\r
- UnicodeString: L"en-US:1"};\r
- \r
-void Sideshow_ProcessCommandPacket(void)\r
-{\r
- SideShow_PacketHeader_t PacketHeader;\r
- \r
- Endpoint_SelectEndpoint(SIDESHOW_OUT_EPNUM); \r
- Endpoint_Read_Stream_LE(&PacketHeader, sizeof(SideShow_PacketHeader_t));\r
- \r
- PacketHeader.Type.Response = true;\r
-\r
- printf("\r\nCmd: %lX", (PacketHeader.Type.TypeLong & 0x00FFFFFF));\r
-\r
- switch (PacketHeader.Type.TypeLong & 0x00FFFFFF)\r
- {\r
- case SIDESHOW_CMD_PING:\r
- SideShow_Ping(&PacketHeader);\r
- break;\r
- case SIDESHOW_CMD_SYNC:\r
- SideShow_Sync(&PacketHeader);\r
- break;\r
- case SIDESHOW_CMD_GET_CURRENT_USER:\r
- SideShow_GetCurrentUser(&PacketHeader);\r
- break;\r
- case SIDESHOW_CMD_SET_CURRENT_USER:\r
- SideShow_SetCurrentUser(&PacketHeader);\r
- break;\r
- case SIDESHOW_CMD_GET_CAPABILITIES:\r
- SideShow_GetCapabilities(&PacketHeader);\r
- break; \r
- case SIDESHOW_CMD_GET_DEVICE_NAME:\r
- SideShow_GetString(&PacketHeader, &DeviceName);\r
- break;\r
- case SIDESHOW_CMD_GET_MANUFACTURER:\r
- SideShow_GetString(&PacketHeader, &Manufacturer);\r
- break;\r
- case SIDESHOW_CMD_GET_APPLICATION_ORDER:\r
- SideShow_GetApplicationOrder(&PacketHeader);\r
- break;\r
- case SIDESHOW_CMD_GET_SUPPORTED_ENDPOINTS:\r
- SideShow_GetSupportedEndpoints(&PacketHeader);\r
- break;\r
- case SIDESHOW_CMD_ADD_APPLICATION:\r
- SideShow_AddApplication(&PacketHeader);\r
- break;\r
- case SIDESHOW_CMD_ADD_CONTENT:\r
- SideShow_AddContent(&PacketHeader);\r
- break;\r
- case SIDESHOW_CMD_DELETE_CONTENT:\r
- SideShow_DeleteContent(&PacketHeader);\r
- break;\r
- case SIDESHOW_CMD_DELETE_ALL_CONTENT:\r
- SideShow_DeleteAllContent(&PacketHeader);\r
- break; \r
- case SIDESHOW_CMD_DELETE_APPLICATION:\r
- SideShow_DeleteApplication(&PacketHeader);\r
- break;\r
- case SIDESHOW_CMD_DELETE_ALL_APPLICATIONS:\r
- SideShow_DeleteAllApplications(&PacketHeader);\r
- break;\r
- default:\r
- PacketHeader.Length -= sizeof(SideShow_PacketHeader_t);\r
-\r
- Endpoint_Discard_Stream(PacketHeader.Length);\r
- Endpoint_ClearOUT();\r
-\r
- PacketHeader.Length = sizeof(SideShow_PacketHeader_t);\r
- PacketHeader.Type.NAK = true;\r
- \r
- Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM); \r
- Endpoint_Write_Stream_LE(&PacketHeader, sizeof(SideShow_PacketHeader_t)); \r
- Endpoint_ClearIN();\r
- \r
- printf(" UNK");\r
- }\r
-}\r
-\r
-static void SideShow_Ping(SideShow_PacketHeader_t* PacketHeader)\r
-{\r
- Endpoint_ClearOUT();\r
-\r
- Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM); \r
- Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t)); \r
- Endpoint_ClearIN();\r
-}\r
-\r
-static void SideShow_Sync(SideShow_PacketHeader_t* PacketHeader)\r
-{\r
- GUID_t ProtocolGUID;\r
-\r
- Endpoint_Read_Stream_LE(&ProtocolGUID, sizeof(GUID_t));\r
- Endpoint_ClearOUT();\r
- \r
- if (memcmp(&ProtocolGUID, (uint32_t[])STANDARD_PROTOCOL_GUID, sizeof(GUID_t)) != 0)\r
- PacketHeader->Type.NAK = true;\r
-\r
- Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
- Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t)); \r
- Endpoint_Write_Stream_LE(&ProtocolGUID, sizeof(GUID_t));\r
- Endpoint_ClearIN();\r
-}\r
-\r
-static void SideShow_GetCurrentUser(SideShow_PacketHeader_t* PacketHeader)\r
-{\r
- Endpoint_ClearOUT();\r
-\r
- PacketHeader->Length = sizeof(SideShow_PacketHeader_t) + sizeof(uint32_t) + UserSID.LengthInBytes;\r
-\r
- Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
- Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
- SideShow_Write_Unicode_String(&UserSID);\r
- Endpoint_ClearIN();\r
-}\r
-\r
-static void SideShow_SetCurrentUser(SideShow_PacketHeader_t* PacketHeader)\r
-{\r
- SideShow_Read_Unicode_String(&UserSID, sizeof(UserSID.UnicodeString));\r
- Endpoint_ClearOUT();\r
- \r
- PacketHeader->Length = sizeof(SideShow_PacketHeader_t);\r
-\r
- Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
- Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
- Endpoint_ClearIN();\r
-}\r
-\r
-static void SideShow_GetCapabilities(SideShow_PacketHeader_t* PacketHeader)\r
-{\r
- SideShow_PropertyKey_t Property;\r
- SideShow_PropertyData_t PropertyData;\r
-\r
- Endpoint_Read_Stream_LE(&Property, sizeof(SideShow_PropertyKey_t));\r
- Endpoint_ClearOUT();\r
- \r
- printf(" ID: %lu", Property.PropertyID);\r
-\r
- PacketHeader->Length = sizeof(SideShow_PacketHeader_t);\r
-\r
- if (memcmp(&Property.PropertyGUID, (uint32_t[])SIDESHOW_PROPERTY_GUID, sizeof(GUID_t)) == 0)\r
- {\r
- switch (Property.PropertyID)\r
- {\r
- case PROPERTY_SIDESHOW_SCREENTYPE:\r
- PropertyData.DataType = VT_I4;\r
- PropertyData.Data.Data32 = ScreenText;\r
- PacketHeader->Length += sizeof(uint32_t);\r
- \r
- break;\r
- case PROPERTY_SIDESHOW_SCREENWIDTH:\r
- case PROPERTY_SIDESHOW_CLIENTWIDTH:\r
- PropertyData.DataType = VT_UI2;\r
- PropertyData.Data.Data16 = 16;\r
- PacketHeader->Length += sizeof(uint16_t);\r
- \r
- break;\r
- case PROPERTY_SIDESHOW_SCREENHEIGHT:\r
- case PROPERTY_SIDESHOW_CLIENTHEIGHT:\r
- PropertyData.DataType = VT_UI2;\r
- PropertyData.Data.Data16 = 2;\r
- PacketHeader->Length += sizeof(uint16_t);\r
- \r
- break;\r
- case PROPERTY_SIDESHOW_COLORDEPTH:\r
- PropertyData.DataType = VT_UI2;\r
- PropertyData.Data.Data16 = 1;\r
- PacketHeader->Length += sizeof(uint16_t);\r
- \r
- break;\r
- case PROPERTY_SIDESHOW_COLORTYPE:\r
- PropertyData.DataType = VT_UI2;\r
- PropertyData.Data.Data16 = BlackAndWhiteDisplay;\r
- PacketHeader->Length += sizeof(uint16_t);\r
- \r
- break;\r
- case PROPERTY_SIDESHOW_DATACACHE:\r
- PropertyData.DataType = VT_BOOL;\r
- PropertyData.Data.Data16 = false;\r
- PacketHeader->Length += sizeof(uint16_t);\r
- \r
- break;\r
- case PROPERTY_SIDESHOW_SUPPORTEDLANGS:\r
- case PROPERTY_SIDESHOW_CURRENTLANG:\r
- PropertyData.DataType = VT_LPWSTR;\r
- PropertyData.Data.DataPointer = &SupportedLanguage;\r
- PacketHeader->Length += SupportedLanguage.LengthInBytes;\r
- \r
- break;\r
- default:\r
- PropertyData.DataType = VT_EMPTY;\r
- break;\r
- }\r
- }\r
- else if (memcmp(&Property.PropertyGUID, (uint32_t[])DEVICE_PROPERTY_GUID, sizeof(GUID_t)) == 0)\r
- {\r
- switch (Property.PropertyID)\r
- {\r
- case PROPERTY_DEVICE_DEVICETYPE:\r
- PropertyData.DataType = VT_UI4;\r
- PropertyData.Data.Data32 = GenericDevice;\r
- PacketHeader->Length += sizeof(uint32_t);\r
- \r
- break;\r
- }\r
- } \r
- else\r
- {\r
- PacketHeader->Type.NAK = true; \r
- \r
- printf(" WRONG GUID");\r
- printf(" %lX %lX %lX %lX", Property.PropertyGUID.Chunks[0], Property.PropertyGUID.Chunks[1],\r
- Property.PropertyGUID.Chunks[2], Property.PropertyGUID.Chunks[3]); \r
- }\r
-\r
- Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
- Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
- \r
- if (!(PacketHeader->Type.NAK))\r
- {\r
- switch (PropertyData.DataType)\r
- {\r
- case VT_UI4:\r
- case VT_I4:\r
- Endpoint_Write_Stream_LE(&PropertyData.Data.Data32, sizeof(uint32_t));\r
- break;\r
- case VT_UI2:\r
- case VT_I2:\r
- case VT_BOOL:\r
- Endpoint_Write_Stream_LE(&PropertyData.Data.Data16, sizeof(uint16_t));\r
- break;\r
- case VT_LPWSTR:\r
- SideShow_Write_Unicode_String((Unicode_String_t*)PropertyData.Data.Data16);\r
- break;\r
- }\r
- }\r
- \r
- Endpoint_ClearIN();\r
- return;\r
-}\r
-\r
-static void SideShow_GetString(SideShow_PacketHeader_t* PacketHeader, void* UnicodeStruct)\r
-{\r
- Endpoint_ClearOUT();\r
-\r
- PacketHeader->Length = sizeof(SideShow_PacketHeader_t) +\r
- sizeof(uint32_t) + ((Unicode_String_t*)UnicodeStruct)->LengthInBytes;\r
- \r
- Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
- Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
- SideShow_Write_Unicode_String(UnicodeStruct);\r
- Endpoint_ClearIN();\r
-}\r
-\r
-static void SideShow_GetApplicationOrder(SideShow_PacketHeader_t* PacketHeader)\r
-{\r
- uint8_t TotalInstalledApplications = SideShow_GetTotalApplications();\r
- uint16_t GadgetGUIDBytes = (TotalInstalledApplications * sizeof(GUID_t));\r
-\r
- Endpoint_ClearOUT();\r
-\r
- PacketHeader->Length = sizeof(SideShow_PacketHeader_t) +\r
- sizeof(uint32_t) + GadgetGUIDBytes;\r
- \r
- Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
- Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
- Endpoint_Write_DWord_LE(TotalInstalledApplications);\r
- \r
- for (uint8_t App = 0; App < MAX_APPLICATIONS; App++)\r
- {\r
- if (InstalledApplications[App].InUse == true)\r
- Endpoint_Write_Stream_LE(&InstalledApplications[App].ApplicationID, sizeof(GUID_t));\r
- }\r
-\r
- Endpoint_ClearIN();\r
-}\r
-\r
-static void SideShow_GetSupportedEndpoints(SideShow_PacketHeader_t* PacketHeader)\r
-{\r
- GUID_t SupportedEndpointGUID = (GUID_t){Chunks: SIMPLE_CONTENT_FORMAT_GUID};\r
-\r
- Endpoint_ClearOUT();\r
-\r
- PacketHeader->Length = sizeof(SideShow_PacketHeader_t) + sizeof(uint32_t) + sizeof(GUID_t);\r
- \r
- Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
- Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
- Endpoint_Write_DWord_LE(1);\r
- Endpoint_Write_Stream_LE(&SupportedEndpointGUID, sizeof(GUID_t));\r
- Endpoint_ClearIN();\r
-}\r
-\r
-static void SideShow_AddApplication(SideShow_PacketHeader_t* PacketHeader)\r
-{\r
- SideShow_Application_t* CurrApp;\r
- GUID_t ApplicationID;\r
-\r
- Endpoint_Read_Stream_LE(&ApplicationID, sizeof(GUID_t));\r
-\r
- CurrApp = SideShow_GetApplicationFromGUID(&ApplicationID);\r
-\r
- if (CurrApp == NULL)\r
- CurrApp = SideShow_GetFreeApplication();\r
-\r
- if (CurrApp == NULL)\r
- {\r
- PacketHeader->Length -= sizeof(SideShow_PacketHeader_t) + sizeof(GUID_t);\r
-\r
- Endpoint_Discard_Stream(PacketHeader->Length);\r
- Endpoint_ClearOUT();\r
-\r
- PacketHeader->Type.NAK = true;\r
- }\r
- else\r
- {\r
- CurrApp->ApplicationID = ApplicationID;\r
- Endpoint_Read_Stream_LE(&CurrApp->EndpointID, sizeof(GUID_t));\r
- SideShow_Read_Unicode_String(&CurrApp->ApplicationName, sizeof(CurrApp->ApplicationName.UnicodeString));\r
- Endpoint_Read_Stream_LE(&CurrApp->CachePolicy, sizeof(uint32_t));\r
- Endpoint_Read_Stream_LE(&CurrApp->OnlineOnly, sizeof(uint32_t));\r
- SideShow_Discard_Byte_Stream();\r
- SideShow_Discard_Byte_Stream();\r
- SideShow_Discard_Byte_Stream();\r
- Endpoint_ClearOUT();\r
- \r
- CurrApp->InUse = true;\r
- CurrApp->HaveContent = false;\r
- CurrApp->CurrentContentID = 1;\r
- }\r
-\r
- PacketHeader->Length = sizeof(SideShow_PacketHeader_t);\r
-\r
- Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
- Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
- Endpoint_ClearIN();\r
-}\r
-\r
-static void SideShow_DeleteApplication(SideShow_PacketHeader_t* PacketHeader)\r
-{\r
- GUID_t ApplicationGUID;\r
- \r
- Endpoint_Read_Stream_LE(&ApplicationGUID, sizeof(GUID_t)); \r
- Endpoint_ClearOUT();\r
-\r
- SideShow_Application_t* AppToDelete = SideShow_GetApplicationFromGUID(&ApplicationGUID);\r
-\r
- if (AppToDelete != NULL)\r
- {\r
- AppToDelete->InUse = false;\r
- }\r
- else\r
- PacketHeader->Type.NAK = true;\r
-\r
- PacketHeader->Length = sizeof(SideShow_PacketHeader_t);\r
-\r
- Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
- Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
- Endpoint_ClearIN();\r
-}\r
-\r
-static void SideShow_DeleteAllApplications(SideShow_PacketHeader_t* PacketHeader)\r
-{\r
- Endpoint_ClearOUT();\r
- \r
- for (uint8_t App = 0; App < MAX_APPLICATIONS; App++)\r
- InstalledApplications[App].InUse = false;\r
-\r
- Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
- Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
- Endpoint_ClearIN();\r
-}\r
-\r
-static void SideShow_AddContent(SideShow_PacketHeader_t* PacketHeader)\r
-{\r
- GUID_t ApplicationID;\r
- GUID_t EndpointID;\r
- SideShow_Application_t* Application;\r
- \r
- Endpoint_Read_Stream_LE(&ApplicationID, sizeof(GUID_t));\r
- Endpoint_Read_Stream_LE(&EndpointID, sizeof(GUID_t));\r
- \r
- Application = SideShow_GetApplicationFromGUID(&ApplicationID);\r
- \r
- if (Application == NULL)\r
- {\r
- SideShow_Discard_Byte_Stream();\r
- PacketHeader->Type.NAK = true;\r
- }\r
- else if (!(SideShow_AddSimpleContent(PacketHeader, Application)))\r
- {\r
- PacketHeader->Type.NAK = true;\r
- }\r
- \r
- Endpoint_ClearOUT();\r
-\r
- PacketHeader->Length = sizeof(SideShow_PacketHeader_t);\r
-\r
- Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
- Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
- Endpoint_ClearIN();\r
-}\r
-\r
-static void SideShow_DeleteContent(SideShow_PacketHeader_t* PacketHeader)\r
-{\r
- GUID_t ApplicationID;\r
- GUID_t EndpointID;\r
- uint32_t ContentID;\r
-\r
- Endpoint_Read_Stream_LE(&ApplicationID, sizeof(GUID_t));\r
- Endpoint_Read_Stream_LE(&EndpointID, sizeof(GUID_t));\r
- Endpoint_Read_Stream_LE(&ContentID, sizeof(uint32_t));\r
- Endpoint_ClearOUT();\r
- \r
- SideShow_Application_t* Application = SideShow_GetApplicationFromGUID(&ApplicationID);\r
- \r
- if ((Application != NULL) && (Application->CurrentContentID == ContentID))\r
- Application->HaveContent = false;\r
- else\r
- PacketHeader->Type.NAK = true;\r
- \r
- PacketHeader->Length = sizeof(SideShow_PacketHeader_t);\r
-\r
- Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
- Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
- Endpoint_ClearIN();\r
-}\r
-\r
-static void SideShow_DeleteAllContent(SideShow_PacketHeader_t* PacketHeader)\r
-{\r
- GUID_t ApplicationID;\r
- GUID_t EndpointID;\r
-\r
- Endpoint_Read_Stream_LE(&ApplicationID, sizeof(GUID_t));\r
- Endpoint_Read_Stream_LE(&EndpointID, sizeof(GUID_t));\r
- Endpoint_ClearOUT();\r
-\r
- SideShow_Application_t* Application = SideShow_GetApplicationFromGUID(&ApplicationID);\r
- \r
- if (Application != NULL)\r
- Application->HaveContent = false;\r
- else\r
- PacketHeader->Type.NAK = true; \r
-\r
- PacketHeader->Length = sizeof(SideShow_PacketHeader_t);\r
-\r
- Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);\r
- Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));\r
- Endpoint_ClearIN(); \r
-}\r
+++ /dev/null
-/*\r
- LUFA Library\r
- Copyright (C) Dean Camera, 2009.\r
- \r
- dean [at] fourwalledcubicle [dot] com\r
- www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
- Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
- Permission to use, copy, modify, and distribute this software\r
- and its documentation for any purpose and without fee is hereby\r
- granted, provided that the above copyright notice appear in all\r
- 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
-#ifndef _SIDESHOW_COMMANDS_H_\r
-#define _SIDESHOW_COMMANDS_H_\r
-\r
- /* Includes: */\r
- #include <avr/io.h>\r
- #include <stdbool.h>\r
- #include <string.h>\r
- \r
- #include "Sideshow.h"\r
- #include "SideshowCommon.h"\r
- #include "SideshowApplications.h"\r
- #include "SideshowContent.h"\r
-\r
- /* Enumerations: */\r
- enum SideShow_PropertyKey_Types_t\r
- {\r
- VT_EMPTY = 0,\r
- VT_NULL = 1,\r
- VT_I2 = 2,\r
- VT_I4 = 3,\r
- VT_R4 = 4,\r
- VT_R8 = 5,\r
- VT_CY = 6,\r
- VT_DATE = 7,\r
- VT_BSTR = 8,\r
- VT_DISPATCH = 9,\r
- VT_ERROR = 10,\r
- VT_BOOL = 11,\r
- VT_VARIANT = 12,\r
- VT_UNKNOWN = 13,\r
- VT_UI1 = 17,\r
- VT_UI2 = 18,\r
- VT_UI4 = 19,\r
- VT_LPWSTR = 31,\r
- };\r
- \r
- enum SideShow_ScreenTypeText_t\r
- {\r
- ScreenBitmap = 0,\r
- ScreenText = 1,\r
- };\r
- \r
- enum SideShow_ColorTypes_t\r
- {\r
- ColorDisplay = 0,\r
- GrayscaleDisplay = 1,\r
- BlackAndWhiteDisplay = 2, \r
- };\r
-\r
- enum SideShow_DeviceTypes_t\r
- { \r
- GenericDevice = 0, \r
- CameraDevice = 1, \r
- MediaPlayerDevice = 2, \r
- PhoneDevice = 3,\r
- VideoDevice = 4,\r
- PIMDevice = 5,\r
- AudioRecorderDevice = 6\r
- };\r
-\r
- /* Type Defines: */\r
- typedef struct\r
- {\r
- GUID_t PropertyGUID;\r
- uint32_t PropertyID;\r
- } SideShow_PropertyKey_t;\r
- \r
- typedef struct\r
- {\r
- uint32_t DataType;\r
- \r
- union\r
- {\r
- void* DataPointer;\r
- uint8_t Data8;\r
- uint16_t Data16;\r
- uint32_t Data32;\r
- } Data;\r
- } SideShow_PropertyData_t;\r
- \r
- /* Macros: */\r
- #define SIDESHOW_CMD_PING 0x001\r
- #define SIDESHOW_CMD_SET_CURRENT_USER 0x100\r
- #define SIDESHOW_CMD_GET_CURRENT_USER 0x101\r
- #define SIDESHOW_CMD_GET_CAPABILITIES 0x103 \r
- #define SIDESHOW_CMD_GET_APPLICATION_ORDER 0x104\r
- #define SIDESHOW_CMD_ADD_APPLICATION 0x10D\r
- #define SIDESHOW_CMD_DELETE_APPLICATION 0x10E\r
- #define SIDESHOW_CMD_DELETE_ALL_APPLICATIONS 0x10F\r
- #define SIDESHOW_CMD_ADD_CONTENT 0x114\r
- #define SIDESHOW_CMD_DELETE_CONTENT 0x115\r
- #define SIDESHOW_CMD_DELETE_ALL_CONTENT 0x116\r
- #define SIDESHOW_CMD_GET_SUPPORTED_ENDPOINTS 0x117\r
- #define SIDESHOW_CMD_GET_DEVICE_NAME 0x500\r
- #define SIDESHOW_CMD_GET_MANUFACTURER 0x501\r
- #define SIDESHOW_CMD_SYNC 0x502\r
-\r
- #define PROPERTY_SIDESHOW_DEVICEID 1\r
- #define PROPERTY_SIDESHOW_SCREENTYPE 2\r
- #define PROPERTY_SIDESHOW_SCREENWIDTH 3\r
- #define PROPERTY_SIDESHOW_SCREENHEIGHT 4\r
- #define PROPERTY_SIDESHOW_COLORDEPTH 5\r
- #define PROPERTY_SIDESHOW_COLORTYPE 6\r
- #define PROPERTY_SIDESHOW_DATACACHE 7\r
- #define PROPERTY_SIDESHOW_SUPPORTEDLANGS 8\r
- #define PROPERTY_SIDESHOW_CURRENTLANG 9\r
- #define PROPERTY_SIDESHOW_SUPPORTEDTHEMES 10\r
- #define PROPERTY_SIDESHOW_IMAGEFORMAT 14\r
- #define PROPERTY_SIDESHOW_CLIENTWIDTH 15\r
- #define PROPERTY_SIDESHOW_CLIENTHEIGHT 16\r
- #define PROPERTY_SIDESHOW_DEVICEICON 17\r
- \r
- #define PROPERTY_DEVICE_DEVICETYPE 15\r
- \r
- /* Function Prototypes: */\r
- void Sideshow_ProcessCommandPacket(void);\r
- \r
- #if defined(INCLUDE_FROM_SIDESHOWCOMMANDS_H)\r
- static void SideShow_Ping(SideShow_PacketHeader_t* PacketHeader);\r
- static void SideShow_Sync(SideShow_PacketHeader_t* PacketHeader);\r
- static void SideShow_GetCurrentUser(SideShow_PacketHeader_t* PacketHeader);\r
- static void SideShow_SetCurrentUser(SideShow_PacketHeader_t* PacketHeader);\r
- static void SideShow_GetCapabilities(SideShow_PacketHeader_t* PacketHeader);\r
- static void SideShow_GetString(SideShow_PacketHeader_t* PacketHeader, void* UnicodeStruct);\r
- static void SideShow_GetApplicationOrder(SideShow_PacketHeader_t* PacketHeader);\r
- static void SideShow_GetSupportedEndpoints(SideShow_PacketHeader_t* PacketHeader);\r
- static void SideShow_AddApplication(SideShow_PacketHeader_t* PacketHeader);\r
- static void SideShow_DeleteApplication(SideShow_PacketHeader_t* PacketHeader);\r
- static void SideShow_DeleteAllApplications(SideShow_PacketHeader_t* PacketHeader);\r
- static void SideShow_AddContent(SideShow_PacketHeader_t* PacketHeader);\r
- static void SideShow_DeleteContent(SideShow_PacketHeader_t* PacketHeader);\r
- static void SideShow_DeleteAllContent(SideShow_PacketHeader_t* PacketHeader);\r
- #endif\r
-\r
-#endif\r
+++ /dev/null
-/*\r
- LUFA Library\r
- Copyright (C) Dean Camera, 2009.\r
- \r
- dean [at] fourwalledcubicle [dot] com\r
- www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
- Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
- Permission to use, copy, modify, and distribute this software\r
- and its documentation for any purpose and without fee is hereby\r
- granted, provided that the above copyright notice appear in all\r
- 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
-#include "SideshowCommon.h"\r
-\r
-uint16_t SideShow_Read_Unicode_String(void* UnicodeString, uint16_t MaxBytes)\r
-{\r
- Unicode_String_t* UnicodeStruct = (Unicode_String_t*)UnicodeString;\r
- uint32_t UnicodeCharsToRead;\r
- \r
- Endpoint_Read_Stream_LE(&UnicodeCharsToRead, sizeof(uint32_t));\r
- \r
- int UnicodeData[UnicodeCharsToRead];\r
-\r
- UnicodeStruct->LengthInBytes = (UnicodeCharsToRead << 1);\r
-\r
- Endpoint_Read_Stream_LE(&UnicodeData, UnicodeStruct->LengthInBytes);\r
- \r
- if (UnicodeStruct->LengthInBytes > MaxBytes)\r
- UnicodeStruct->LengthInBytes = MaxBytes;\r
- \r
- memcpy(&UnicodeStruct->UnicodeString, &UnicodeData, UnicodeStruct->LengthInBytes);\r
- \r
- return ((UnicodeCharsToRead << 1) + sizeof(uint32_t));\r
-}\r
-\r
-void SideShow_Write_Unicode_String(void* UnicodeString)\r
-{\r
- Unicode_String_t* UnicodeStruct = (Unicode_String_t*)UnicodeString;\r
-\r
- uint32_t StringSizeInCharacters = (UnicodeStruct->LengthInBytes >> 1);\r
-\r
- Endpoint_Write_Stream_LE(&StringSizeInCharacters, sizeof(uint32_t));\r
- Endpoint_Write_Stream_LE(&UnicodeStruct->UnicodeString, UnicodeStruct->LengthInBytes);\r
-}\r
-\r
-void SideShow_Discard_Byte_Stream(void)\r
-{\r
- uint32_t StreamSize;\r
-\r
- Endpoint_Read_Stream_LE(&StreamSize, sizeof(uint32_t));\r
- Endpoint_Discard_Stream(StreamSize);\r
-}\r
+++ /dev/null
-/*\r
- LUFA Library\r
- Copyright (C) Dean Camera, 2009.\r
- \r
- dean [at] fourwalledcubicle [dot] com\r
- www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
- Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
- Permission to use, copy, modify, and distribute this software\r
- and its documentation for any purpose and without fee is hereby\r
- granted, provided that the above copyright notice appear in all\r
- 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
-#ifndef _SIDESHOW_COMMON_H_\r
-#define _SIDESHOW_COMMON_H_\r
-\r
- /* Includes: */\r
- #include <avr/io.h>\r
- #include <string.h> \r
- \r
- #include <LUFA/Drivers/USB/USB.h>\r
-\r
- /* Macros: */\r
- #define ARRAY_ELEMENTS(x) (sizeof(x) / sizeof(x[0]))\r
- \r
- #define UNICODE_STRING_t(x) struct \\r
- { \\r
- uint16_t LengthInBytes; \\r
- int UnicodeString[x]; \\r
- }\r
-\r
- // {A33F248B-882F-4531-82C2-ED3B90C5C520}\r
- #define STANDARD_PROTOCOL_GUID {0xA33F248B, 0x4531882F, 0x3BEDC282, 0x20C5C590}\r
- // {A9A5353F-2D4B-47CE-93EE-759F3A7DDA4F}\r
- #define SIMPLE_CONTENT_FORMAT_GUID {0xA9A5353F, 0x47CE2D4B, 0x9F75EE93, 0x4FDA7D3A}\r
- // {8ABC88A8-857B-4ad7-A35A-B5942F492B99}\r
- #define SIDESHOW_PROPERTY_GUID {0x8ABC88A8, 0x4AD7857B, 0x94B55AA3, 0x992B492F}\r
- // {26D4979A-E643-4626-9E2B-736DC0C92FDC}\r
- #define DEVICE_PROPERTY_GUID {0x26D4979A, 0x4626E643, 0x6D732B9E, 0xDC2FC9C0}\r
-\r
- #define SECURITY_INTERACTIVE_RID_SID L"S-1-5-4"\r
-\r
- #define MAX_APPLICATIONS 4\r
- #define MAX_CONTENTBUFFER_PER_APP 1024\r
-\r
- /* Type Defines: */\r
- typedef struct\r
- {\r
- uint32_t Chunks[4];\r
- } GUID_t;\r
- \r
- typedef struct\r
- {\r
- uint16_t LengthInBytes;\r
- int UnicodeString[];\r
- } Unicode_String_t; \r
-\r
- typedef union\r
- {\r
- uint32_t TypeLong;\r
-\r
- struct\r
- {\r
- uint8_t TypeBytes[3];\r
-\r
- int ErrorCode : 6;\r
- int NAK : 1;\r
- int Response : 1; \r
- };\r
- } SideShowPacketType_t;\r
- \r
- typedef struct\r
- {\r
- uint32_t Length;\r
- SideShowPacketType_t Type;\r
- uint16_t Number;\r
- } SideShow_PacketHeader_t;\r
-\r
- /* Function Prototypes: */\r
- uint16_t SideShow_Read_Unicode_String(void* UnicodeString, uint16_t MaxBytes);\r
- void SideShow_Write_Unicode_String(void* UnicodeString);\r
- void SideShow_Discard_Byte_Stream(void);\r
-\r
-#endif
\ No newline at end of file
+++ /dev/null
-/*\r
- LUFA Library\r
- Copyright (C) Dean Camera, 2009.\r
- \r
- dean [at] fourwalledcubicle [dot] com\r
- www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
- Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
- Permission to use, copy, modify, and distribute this software\r
- and its documentation for any purpose and without fee is hereby\r
- granted, provided that the above copyright notice appear in all\r
- 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
-#define INCLUDE_FROM_SIDESHOWCONTENT_C\r
-#include "SideshowContent.h"\r
-\r
-bool SideShow_AddSimpleContent(SideShow_PacketHeader_t* PacketHeader, SideShow_Application_t* Application)\r
-{\r
- uint32_t ContentSize;\r
- uint32_t ContentID;\r
- \r
- Endpoint_Read_Stream_LE(&ContentID, sizeof(uint32_t));\r
-\r
- PacketHeader->Length -= sizeof(uint32_t);\r
-\r
- if (Application->CurrentContentID != ContentID)\r
- {\r
- Endpoint_Discard_Stream(PacketHeader->Length);\r
-\r
- return false;\r
- }\r
- \r
- Endpoint_Read_Stream_LE(&ContentSize, sizeof(uint32_t));\r
- Endpoint_Read_Stream_LE(&Application->CurrentContent, sizeof(XML_START_TAG) - 1);\r
- \r
- PacketHeader->Length -= sizeof(uint32_t) + (sizeof(XML_START_TAG) - 1);\r
-\r
- if (!(memcmp(&Application->CurrentContent, XML_START_TAG, (sizeof(XML_START_TAG) - 1))))\r
- {\r
- SideShow_ProcessXMLContent(&Application->CurrentContent, (ContentSize - (sizeof(XML_END_TAG) - 1)));\r
- \r
- Endpoint_Discard_Stream(sizeof(XML_END_TAG) - 1);\r
-\r
- Application->HaveContent = true;\r
- }\r
- else\r
- {\r
- printf(" BINARY");\r
- Endpoint_Discard_Stream(ContentSize);\r
- }\r
- \r
- return true;\r
-}\r
-\r
-static void SideShow_ProcessXMLContent(void* ContentData, uint32_t ContentSize)\r
-{\r
- printf(" XML");\r
- Endpoint_Discard_Stream(ContentSize);\r
-}\r
+++ /dev/null
-/*\r
- LUFA Library\r
- Copyright (C) Dean Camera, 2009.\r
- \r
- dean [at] fourwalledcubicle [dot] com\r
- www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
- Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
- Permission to use, copy, modify, and distribute this software\r
- and its documentation for any purpose and without fee is hereby\r
- granted, provided that the above copyright notice appear in all\r
- 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
-#ifndef _SIDESHOW_CONTENT_H_\r
-#define _SIDESHOW_CONTENT_H_\r
-\r
- /* Includes: */\r
- #include <avr/io.h>\r
- #include <stdbool.h>\r
- #include <string.h>\r
-\r
- #include "SideshowCommon.h"\r
- #include "SideshowApplications.h"\r
- \r
- /* Enums: */\r
- enum SideShow_ContentTypes_t\r
- {\r
- Content_Menu = 0,\r
- Content_Content = 1,\r
- Content_MenuItem = 2,\r
- Content_Button = 3,\r
- Content_Text = 4,\r
- Content_EndOfContent = 5\r
- };\r
- \r
- enum SideShow_ActionTypes_t\r
- {\r
- TODO\r
- };\r
- \r
- enum SideShow_AlignmentTypes_t\r
- {\r
- TODO2\r
- };\r
- \r
- /* Type Defines: */\r
- typedef struct\r
- {\r
- uint8_t ContentType;\r
- uint8_t ContentSize; \r
- } SideShow_Content_Header_t;\r
- \r
- typedef struct\r
- {\r
- SideShow_Content_Header_t Header;\r
-\r
- uint32_t ItemID;\r
- uint8_t ActionType;\r
- char Title[];\r
- } SideShow_Content_Menu_t;\r
-\r
- typedef struct\r
- {\r
- SideShow_Content_Header_t Header;\r
-\r
- uint32_t ItemID;\r
- uint32_t Target;\r
- bool IsSelected;\r
- char Text[];\r
- } SideShow_Content_MenuItem_t;\r
- \r
- typedef struct\r
- {\r
- SideShow_Content_Header_t Header;\r
-\r
- uint8_t Key;\r
- uint32_t Target;\r
- } SideShow_Content_Button_t;\r
- \r
- typedef struct\r
- {\r
- SideShow_Content_Header_t Header;\r
-\r
- uint32_t ItemID;\r
- uint32_t AssociatedMenuID;\r
- char Title[];\r
- } SideShow_Content_Content_t;\r
-\r
- typedef struct\r
- {\r
- SideShow_Content_Header_t Header;\r
-\r
- char Text[]; \r
- } SideShow_Content_Text_t;\r
- \r
- /* Defines: */\r
- #define XML_START_TAG "<body>"\r
- #define XML_END_TAG "</body>"\r
- \r
- /* Function Prototypes: */\r
- bool SideShow_AddSimpleContent(SideShow_PacketHeader_t* PacketHeader, SideShow_Application_t* Application);\r
-\r
- #if defined(INCLUDE_FROM_SIDESHOWCONTENT_C)\r
- static void SideShow_ProcessXMLContent(void* ContentData, uint32_t ContentSize);\r
- #endif\r
- \r
-#endif
\ No newline at end of file
# List C source files here. (C dependencies are automatically generated.)\r
SRC = $(TARGET).c \\r
Descriptors.c \\r
- SideshowCommon.c \\r
- SideshowCommands.c \\r
- SideshowApplications.c \\r
- SideshowContent.c \\r
+ Lib/SideshowCommon.c \\r
+ Lib/SideshowCommands.c \\r
+ Lib/SideshowApplications.c \\r
+ Lib/SideshowContent.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c \\r
-<Project name="LUFA"><Folder name="Demos"><Folder name="Device"><Folder name="ClassDriver"><Folder name="AudioInput"><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.c"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.h"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.txt"></File><File path="Demos\Device\ClassDriver\AudioInput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioInput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioInput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioInput\makefile"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioOutput\makefile"></File></Folder><Folder name="CDC"><File path="Demos\Device\ClassDriver\CDC\CDC.c"></File><File path="Demos\Device\ClassDriver\CDC\CDC.h"></File><File path="Demos\Device\ClassDriver\CDC\CDC.txt"></File><File path="Demos\Device\ClassDriver\CDC\Descriptors.c"></File><File path="Demos\Device\ClassDriver\CDC\Descriptors.h"></File><File path="Demos\Device\ClassDriver\CDC\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\CDC\LUFA CDC.inf"></File><File path="Demos\Device\ClassDriver\CDC\makefile"></File></Folder><Folder name="DualCDC"><File path="Demos\Device\ClassDriver\DualCDC\Descriptors.c"></File><File path="Demos\Device\ClassDriver\DualCDC\Descriptors.h"></File><File path="Demos\Device\ClassDriver\DualCDC\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\DualCDC\DualCDC.c"></File><File path="Demos\Device\ClassDriver\DualCDC\DualCDC.h"></File><File path="Demos\Device\ClassDriver\DualCDC\DualCDC.txt"></File><File path="Demos\Device\ClassDriver\DualCDC\LUFA DualCDC.inf"></File><File path="Demos\Device\ClassDriver\DualCDC\makefile"></File></Folder><Folder name="GenericHID"><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.c"></File><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.h"></File><File path="Demos\Device\ClassDriver\GenericHID\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.c"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.h"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.txt"></File><File path="Demos\Device\ClassDriver\GenericHID\makefile"></File></Folder><Folder name="Joystick"><File path="Demos\Device\ClassDriver\Joystick\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Joystick\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Joystick\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.c"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.h"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.txt"></File><File path="Demos\Device\ClassDriver\Joystick\makefile"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.txt"></File><File path="Demos\Device\ClassDriver\Keyboard\makefile"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\makefile"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI_Codes.h"></File></Folder><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MassStorage\makefile"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.c"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.h"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.txt"></File></Folder><Folder name="MIDI"><File path="Demos\Device\ClassDriver\MIDI\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MIDI\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MIDI\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MIDI\makefile"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.c"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.h"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.txt"></File></Folder><Folder name="Mouse"><File path="Demos\Device\ClassDriver\Mouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Mouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Mouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Mouse\makefile"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.c"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.h"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.txt"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.c"></File></Folder><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\makefile"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.txt"></File></Folder><Folder name="USBtoSerial"><Folder name="Lib"><File path="Demos\Device\ClassDriver\USBtoSerial\Lib\RingBuff.c"></File><File path="Demos\Device\ClassDriver\USBtoSerial\Lib\RingBuff.h"></File></Folder><File path="Demos\Device\ClassDriver\USBtoSerial\Descriptors.c"></File><File path="Demos\Device\ClassDriver\USBtoSerial\Descriptors.h"></File><File path="Demos\Device\ClassDriver\USBtoSerial\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\USBtoSerial\LUFA USBtoSerial.inf"></File><File path="Demos\Device\ClassDriver\USBtoSerial\makefile"></File><File path="Demos\Device\ClassDriver\USBtoSerial\USBtoSerial.c"></File><File path="Demos\Device\ClassDriver\USBtoSerial\USBtoSerial.h"></File><File path="Demos\Device\ClassDriver\USBtoSerial\USBtoSerial.txt"></File></Folder><File path="Demos\Device\ClassDriver\makefile"></File></Folder><Folder name="LowLevel"><Folder name="AudioInput"><File path="Demos\Device\LowLevel\AudioInput\AudioInput.c"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.h"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.txt"></File><File path="Demos\Device\LowLevel\AudioInput\Descriptors.c"></File><File path="Demos\Device\LowLevel\AudioInput\Descriptors.h"></File><File path="Demos\Device\LowLevel\AudioInput\Doxygen.conf"></File><File path="Demos\Device\LowLevel\AudioInput\makefile"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\LowLevel\AudioOutput\Descriptors.c"></File><File path="Demos\Device\LowLevel\AudioOutput\Descriptors.h"></File><File path="Demos\Device\LowLevel\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\LowLevel\AudioOutput\makefile"></File></Folder><Folder name="CDC"><File path="Demos\Device\LowLevel\CDC\CDC.c"></File><File path="Demos\Device\LowLevel\CDC\CDC.h"></File><File path="Demos\Device\LowLevel\CDC\CDC.txt"></File><File path="Demos\Device\LowLevel\CDC\Descriptors.c"></File><File path="Demos\Device\LowLevel\CDC\Descriptors.h"></File><File path="Demos\Device\LowLevel\CDC\Doxygen.conf"></File><File path="Demos\Device\LowLevel\CDC\LUFA CDC.inf"></File><File path="Demos\Device\LowLevel\CDC\makefile"></File></Folder><Folder name="DualCDC"><File path="Demos\Device\LowLevel\DualCDC\Descriptors.c"></File><File path="Demos\Device\LowLevel\DualCDC\Descriptors.h"></File><File path="Demos\Device\LowLevel\DualCDC\Doxygen.conf"></File><File path="Demos\Device\LowLevel\DualCDC\DualCDC.c"></File><File path="Demos\Device\LowLevel\DualCDC\DualCDC.h"></File><File path="Demos\Device\LowLevel\DualCDC\DualCDC.txt"></File><File path="Demos\Device\LowLevel\DualCDC\LUFA DualCDC.inf"></File><File path="Demos\Device\LowLevel\DualCDC\makefile"></File></Folder><Folder name="GenericHID"><File path="Demos\Device\LowLevel\GenericHID\Descriptors.c"></File><File path="Demos\Device\LowLevel\GenericHID\Descriptors.h"></File><File path="Demos\Device\LowLevel\GenericHID\Doxygen.conf"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.c"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.h"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.txt"></File><File path="Demos\Device\LowLevel\GenericHID\makefile"></File></Folder><Folder name="Joystick"><File path="Demos\Device\LowLevel\Joystick\Descriptors.c"></File><File path="Demos\Device\LowLevel\Joystick\Descriptors.h"></File><File path="Demos\Device\LowLevel\Joystick\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.c"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.h"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.txt"></File><File path="Demos\Device\LowLevel\Joystick\makefile"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\LowLevel\Keyboard\Descriptors.c"></File><File path="Demos\Device\LowLevel\Keyboard\Descriptors.h"></File><File path="Demos\Device\LowLevel\Keyboard\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.c"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.h"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.txt"></File><File path="Demos\Device\LowLevel\Keyboard\makefile"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\LowLevel\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\LowLevel\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\LowLevel\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\LowLevel\KeyboardMouse\makefile"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\LowLevel\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI.h"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI_Codes.h"></File></Folder><File path="Demos\Device\LowLevel\MassStorage\Descriptors.c"></File><File path="Demos\Device\LowLevel\MassStorage\Descriptors.h"></File><File path="Demos\Device\LowLevel\MassStorage\Doxygen.conf"></File><File path="Demos\Device\LowLevel\MassStorage\makefile"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.c"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.h"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.txt"></File></Folder><Folder name="MIDI"><File path="Demos\Device\LowLevel\MIDI\Descriptors.c"></File><File path="Demos\Device\LowLevel\MIDI\Descriptors.h"></File><File path="Demos\Device\LowLevel\MIDI\Doxygen.conf"></File><File path="Demos\Device\LowLevel\MIDI\makefile"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.c"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.h"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.txt"></File></Folder><Folder name="Mouse"><File path="Demos\Device\LowLevel\Mouse\Descriptors.c"></File><File path="Demos\Device\LowLevel\Mouse\Descriptors.h"></File><File path="Demos\Device\LowLevel\Mouse\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Mouse\makefile"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.c"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.h"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.txt"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDIS.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDIS.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDISConstants.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\TCP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\TCP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\UDP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\UDP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Webserver.c"></File></Folder><File path="Demos\Device\LowLevel\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\LowLevel\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\LowLevel\RNDISEthernet\makefile"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.txt"></File></Folder><Folder name="USBtoSerial"><Folder name="Lib"><File path="Demos\Device\LowLevel\USBtoSerial\Lib\RingBuff.c"></File><File path="Demos\Device\LowLevel\USBtoSerial\Lib\RingBuff.h"></File></Folder><File path="Demos\Device\LowLevel\USBtoSerial\Descriptors.c"></File><File path="Demos\Device\LowLevel\USBtoSerial\Descriptors.h"></File><File path="Demos\Device\LowLevel\USBtoSerial\Doxygen.conf"></File><File path="Demos\Device\LowLevel\USBtoSerial\LUFA USBtoSerial.inf"></File><File path="Demos\Device\LowLevel\USBtoSerial\makefile"></File><File path="Demos\Device\LowLevel\USBtoSerial\USBtoSerial.c"></File><File path="Demos\Device\LowLevel\USBtoSerial\USBtoSerial.h"></File><File path="Demos\Device\LowLevel\USBtoSerial\USBtoSerial.txt"></File></Folder><File path="Demos\Device\LowLevel\makefile"></File></Folder><Folder name="Incomplete"><Folder name="SideShow"><File path="Demos\Device\Incomplete\Sideshow\SideshowContent.h"></File><File path="Demos\Device\Incomplete\Sideshow\Descriptors.c"></File><File path="Demos\Device\Incomplete\Sideshow\Descriptors.h"></File><File path="Demos\Device\Incomplete\Sideshow\makefile"></File><File path="Demos\Device\Incomplete\Sideshow\Sideshow.c"></File><File path="Demos\Device\Incomplete\Sideshow\Sideshow.h"></File><File path="Demos\Device\Incomplete\Sideshow\SideshowApplications.c"></File><File path="Demos\Device\Incomplete\Sideshow\SideshowApplications.h"></File><File path="Demos\Device\Incomplete\Sideshow\SideshowCommands.c"></File><File path="Demos\Device\Incomplete\Sideshow\SideshowCommands.h"></File><File path="Demos\Device\Incomplete\Sideshow\SideshowCommon.c"></File><File path="Demos\Device\Incomplete\Sideshow\SideshowCommon.h"></File><File path="Demos\Device\Incomplete\Sideshow\SideshowContent.c"></File></Folder></Folder><File path="Demos\Device\makefile"></File></Folder><Folder name="Host"><Folder name="ClassDriver"><Folder name="CDCHost"><File path="Demos\Host\ClassDriver\CDCHost\CDCHost.c"></File><File path="Demos\Host\ClassDriver\CDCHost\CDCHost.h"></File><File path="Demos\Host\ClassDriver\CDCHost\CDCHost.txt"></File><File path="Demos\Host\ClassDriver\CDCHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\CDCHost\makefile"></File></Folder></Folder><Folder name="LowLevel"><Folder name="CDCHost"><File path="Demos\Host\LowLevel\CDCHost\CDCHost.c"></File><File path="Demos\Host\LowLevel\CDCHost\CDCHost.h"></File><File path="Demos\Host\LowLevel\CDCHost\CDCHost.txt"></File><File path="Demos\Host\LowLevel\CDCHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\CDCHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\CDCHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\CDCHost\makefile"></File></Folder><Folder name="GenericHIDHost"><File path="Demos\Host\LowLevel\GenericHIDHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\GenericHIDHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\GenericHIDHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.c"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.h"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.txt"></File><File path="Demos\Host\LowLevel\GenericHIDHost\makefile"></File></Folder><Folder name="KeyboardHost"><File path="Demos\Host\LowLevel\KeyboardHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\KeyboardHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\KeyboardHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.c"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.h"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.txt"></File><File path="Demos\Host\LowLevel\KeyboardHost\makefile"></File></Folder><Folder name="KeyboardHostWithParser"><File path="Demos\Host\LowLevel\KeyboardHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.txt"></File></Folder><Folder name="MassStorageHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\MassStorageHost\Lib\MassStoreCommands.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\Lib\MassStoreCommands.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\Lib\SCSI_Codes.h"></File></Folder><File path="Demos\Host\LowLevel\MassStorageHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MassStorageHost\makefile"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.txt"></File></Folder><Folder name="MouseHost"><File path="Demos\Host\LowLevel\MouseHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MouseHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MouseHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MouseHost\makefile"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.c"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.h"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.txt"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.txt"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.h"></File></Folder><Folder name="PrinterHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\PrinterHost\Lib\PrinterCommands.c"></File><File path="Demos\Host\LowLevel\PrinterHost\Lib\PrinterCommands.h"></File></Folder><File path="Demos\Host\LowLevel\PrinterHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\PrinterHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\PrinterHost\makefile"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.c"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.h"></File><File path="Demos\Host\LowLevel\PrinterHost\Doxygen.conf"></File></Folder><Folder name="StillImageHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\StillImageHost\Lib\PIMACodes.h"></File><File path="Demos\Host\LowLevel\StillImageHost\Lib\StillImageCommands.c"></File><File path="Demos\Host\LowLevel\StillImageHost\Lib\StillImageCommands.h"></File></Folder><File path="Demos\Host\LowLevel\StillImageHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\StillImageHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\StillImageHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\StillImageHost\makefile"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.c"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.h"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.txt"></File></Folder><File path="Demos\Host\LowLevel\makefile"></File></Folder><Folder name="Incomplete"><Folder name="BluetoothHost"><Folder name="Lib"><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothACLPackets.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothACLPackets.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothClassCodes.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothHCICommands.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothHCICommands.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothStack.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothStack.h"></File></Folder><File path="Demos\Host\Incomplete\BluetoothHost\makefile"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothHost.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothHost.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\ConfigDescriptor.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\ConfigDescriptor.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\DeviceDescriptor.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\DeviceDescriptor.h"></File></Folder></Folder><File path="Demos\Host\makefile"></File></Folder><Folder name="OTG"><Folder name="TestApp"><File path="Demos\OTG\TestApp\Descriptors.c"></File><File path="Demos\OTG\TestApp\Descriptors.h"></File><File path="Demos\OTG\TestApp\Doxygen.conf"></File><File path="Demos\OTG\TestApp\makefile"></File><File path="Demos\OTG\TestApp\TestApp.c"></File><File path="Demos\OTG\TestApp\TestApp.h"></File><File path="Demos\OTG\TestApp\TestApp.txt"></File><File path="Demos\OTG\TestApp\TestEvents.c"></File><File path="Demos\OTG\TestApp\TestEvents.h"></File></Folder><File path="Demos\OTG\makefile"></File></Folder><File path="Demos\makefile"></File></Folder><Folder name="LUFA"><Folder name="Common"><File path="LUFA\Common\Common.h"></File><File path="LUFA\Common\FunctionAttributes.h"></File><File path="LUFA\Common\BoardTypes.h"></File></Folder><Folder name="Drivers"><Folder name="USB"><Folder name="LowLevel"><Folder name="Template"><File path="LUFA\Drivers\USB\LowLevel\Template\Template_Endpoint_RW.c"></File><File path="LUFA\Drivers\USB\LowLevel\Template\Template_Endpoint_Control_R.c"></File><File path="LUFA\Drivers\USB\LowLevel\Template\Template_Endpoint_Control_W.c"></File><File path="LUFA\Drivers\USB\LowLevel\Template\Template_Pipe_RW.c"></File></Folder><File path="LUFA\Drivers\USB\LowLevel\HostChapter9.h"></File><File path="LUFA\Drivers\USB\LowLevel\LowLevel.c"></File><File path="LUFA\Drivers\USB\LowLevel\LowLevel.h"></File><File path="LUFA\Drivers\USB\LowLevel\Pipe.c"></File><File path="LUFA\Drivers\USB\LowLevel\Pipe.h"></File><File path="LUFA\Drivers\USB\LowLevel\DevChapter9.c"></File><File path="LUFA\Drivers\USB\LowLevel\DevChapter9.h"></File><File path="LUFA\Drivers\USB\LowLevel\Device.h"></File><File path="LUFA\Drivers\USB\LowLevel\Endpoint.c"></File><File path="LUFA\Drivers\USB\LowLevel\Endpoint.h"></File><File path="LUFA\Drivers\USB\LowLevel\Host.c"></File><File path="LUFA\Drivers\USB\LowLevel\Host.h"></File><File path="LUFA\Drivers\USB\LowLevel\HostChapter9.c"></File><File path="LUFA\Drivers\USB\LowLevel\OTG.h"></File></Folder><Folder name="HighLevel"><File path="LUFA\Drivers\USB\HighLevel\USBTask.h"></File><File path="LUFA\Drivers\USB\HighLevel\Events.c"></File><File path="LUFA\Drivers\USB\HighLevel\Events.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBInterrupt.c"></File><File path="LUFA\Drivers\USB\HighLevel\USBInterrupt.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBTask.c"></File><File path="LUFA\Drivers\USB\HighLevel\StdDescriptors.h"></File><File path="LUFA\Drivers\USB\HighLevel\StdRequestType.h"></File><File path="LUFA\Drivers\USB\HighLevel\StreamCallbacks.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBMode.h"></File><File path="LUFA\Drivers\USB\HighLevel\ConfigDescriptor.c"></File><File path="LUFA\Drivers\USB\HighLevel\ConfigDescriptor.h"></File></Folder><Folder name="Class"><Folder name="Device"><File path="LUFA\Drivers\USB\Class\Device\HID.c"></File><File path="LUFA\Drivers\USB\Class\Device\HID.h"></File><File path="LUFA\Drivers\USB\Class\Device\CDC.c"></File><File path="LUFA\Drivers\USB\Class\Device\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Device\RNDIS.c"></File><File path="LUFA\Drivers\USB\Class\Device\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\Device\RNDISConstants.h"></File><File path="LUFA\Drivers\USB\Class\Device\MassStorage.c"></File><File path="LUFA\Drivers\USB\Class\Device\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Device\Audio.c"></File><File path="LUFA\Drivers\USB\Class\Device\Audio.h"></File><File path="LUFA\Drivers\USB\Class\Device\MIDI.c"></File><File path="LUFA\Drivers\USB\Class\Device\MIDI.h"></File></Folder><Folder name="Host"><File path="LUFA\Drivers\USB\Class\Host\HIDParser.c"></File><File path="LUFA\Drivers\USB\Class\Host\HIDParser.h"></File><File path="LUFA\Drivers\USB\Class\Host\HIDReportData.h"></File><File path="LUFA\Drivers\USB\Class\Host\CDC.c"></File><File path="LUFA\Drivers\USB\Class\Host\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Host\HID.c"></File><File path="LUFA\Drivers\USB\Class\Host\HID.h"></File><File path="LUFA\Drivers\USB\Class\Host\Audio.c"></File><File path="LUFA\Drivers\USB\Class\Host\Audio.h"></File><File path="LUFA\Drivers\USB\Class\Host\MIDI.c"></File><File path="LUFA\Drivers\USB\Class\Host\MIDI.h"></File><File path="LUFA\Drivers\USB\Class\Host\MassStorage.c"></File><File path="LUFA\Drivers\USB\Class\Host\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Host\StillImage.c"></File><File path="LUFA\Drivers\USB\Class\Host\StillImage.h"></File></Folder><Folder name="Common"><File path="LUFA\Drivers\USB\Class\Common\Audio.h"></File><File path="LUFA\Drivers\USB\Class\Common\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Common\HID.h"></File><File path="LUFA\Drivers\USB\Class\Common\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Common\MIDI.h"></File><File path="LUFA\Drivers\USB\Class\Common\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\Common\StillImage.h"></File></Folder><File path="LUFA\Drivers\USB\Class\Audio.h"></File><File path="LUFA\Drivers\USB\Class\CDC.h"></File><File path="LUFA\Drivers\USB\Class\HID.h"></File><File path="LUFA\Drivers\USB\Class\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\MIDI.h"></File><File path="LUFA\Drivers\USB\Class\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\StillImage.h"></File></Folder><File path="LUFA\Drivers\USB\USB.h"></File></Folder><Folder name="Misc"><File path="LUFA\Drivers\Misc\TerminalCodes.h"></File></Folder><Folder name="Board"><Folder name="USBKEY"><File path="LUFA\Drivers\Board\USBKEY\Dataflash.h"></File><File path="LUFA\Drivers\Board\USBKEY\Joystick.h"></File><File path="LUFA\Drivers\Board\USBKEY\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\USBKEY\LEDs.h"></File><File path="LUFA\Drivers\Board\USBKEY\Buttons.h"></File></Folder><Folder name="STK526"><File path="LUFA\Drivers\Board\STK526\Dataflash.h"></File><File path="LUFA\Drivers\Board\STK526\Joystick.h"></File><File path="LUFA\Drivers\Board\STK526\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\STK526\LEDs.h"></File><File path="LUFA\Drivers\Board\STK526\Buttons.h"></File></Folder><Folder name="STK525"><File path="LUFA\Drivers\Board\STK525\Dataflash.h"></File><File path="LUFA\Drivers\Board\STK525\Joystick.h"></File><File path="LUFA\Drivers\Board\STK525\AT45DB321C.h"></File><File path="LUFA\Drivers\Board\STK525\LEDs.h"></File><File path="LUFA\Drivers\Board\STK525\Buttons.h"></File></Folder><Folder name="RZUSBSTICK"><File path="LUFA\Drivers\Board\RZUSBSTICK\LEDs.h"></File></Folder><Folder name="ATAVRUSBRF01"><File path="LUFA\Drivers\Board\ATAVRUSBRF01\LEDs.h"></File><File path="LUFA\Drivers\Board\ATAVRUSBRF01\Buttons.h"></File></Folder><File path="LUFA\Drivers\Board\Temperature.h"></File><File path="LUFA\Drivers\Board\Dataflash.h"></File><File path="LUFA\Drivers\Board\Joystick.h"></File><File path="LUFA\Drivers\Board\Temperature.c"></File><File path="LUFA\Drivers\Board\LEDs.h"></File><File path="LUFA\Drivers\Board\Buttons.h"></File></Folder><Folder name="Peripheral"><Folder name="AT90USBXXX67"><File path="LUFA\Drivers\Peripheral\AT90USBXXX67\ADC.h"></File></Folder><File path="LUFA\Drivers\Peripheral\ADC.h"></File><File path="LUFA\Drivers\Peripheral\Serial.c"></File><File path="LUFA\Drivers\Peripheral\Serial.h"></File><File path="LUFA\Drivers\Peripheral\SPI.h"></File><File path="LUFA\Drivers\Peripheral\SerialStream.c"></File><File path="LUFA\Drivers\Peripheral\SerialStream.h"></File></Folder></Folder><Folder name="DriverStubs"><File path="LUFA\DriverStubs\Dataflash.h"></File><File path="LUFA\DriverStubs\Joystick.h"></File><File path="LUFA\DriverStubs\LEDs.h"></File><File path="LUFA\DriverStubs\Buttons.h"></File></Folder><Folder name="ManPages"><File path="LUFA\ManPages\AboutLUFA.txt"></File><File path="LUFA\ManPages\BuildingLinkableLibraries.txt"></File><File path="LUFA\ManPages\ChangeLog.txt"></File><File path="LUFA\ManPages\CompileTimeTokens.txt"></File><File path="LUFA\ManPages\DevelopingWithLUFA.txt"></File><File path="LUFA\ManPages\DeviceSupport.txt"></File><File path="LUFA\ManPages\DirectorySummaries.txt"></File><File path="LUFA\ManPages\Donating.txt"></File><File path="LUFA\ManPages\FutureChanges.txt"></File><File path="LUFA\ManPages\GettingStarted.txt"></File><File path="LUFA\ManPages\Groups.txt"></File><File path="LUFA\ManPages\LibraryResources.txt"></File><File path="LUFA\ManPages\LUFAPoweredProjects.txt"></File><File path="LUFA\ManPages\MainPage.txt"></File><File path="LUFA\ManPages\MigrationInformation.txt"></File><File path="LUFA\ManPages\VIDAndPIDValues.txt"></File><File path="LUFA\ManPages\WritingBoardDrivers.txt"></File><File path="LUFA\ManPages\ConfiguringApps.txt"></File><File path="LUFA\ManPages\CompilingApps.txt"></File><File path="LUFA\ManPages\ProgrammingApps.txt"></File><File path="LUFA\ManPages\LibraryApps.txt"></File><File path="LUFA\ManPages\Licence.txt"></File></Folder><Folder name="Scheduler"><File path="LUFA\Scheduler\Scheduler.c"></File><File path="LUFA\Scheduler\Scheduler.h"></File></Folder><File path="LUFA\makefile"></File><File path="LUFA\Version.h"></File><File path="LUFA\Doxygen.conf"></File></Folder><Folder name="Projects"><Folder name="MagStripe"><Folder name="Lib"><File path="Projects\Magstripe\Lib\CircularBitBuffer.c"></File><File path="Projects\Magstripe\Lib\CircularBitBuffer.h"></File><File path="Projects\Magstripe\Lib\MagstripeHW.h"></File></Folder><File path="Projects\Magstripe\Descriptors.c"></File><File path="Projects\Magstripe\Descriptors.h"></File><File path="Projects\Magstripe\Magstripe.c"></File><File path="Projects\Magstripe\Magstripe.h"></File><File path="Projects\Magstripe\makefile"></File><File path="Projects\Magstripe\Magstripe.txt"></File><File path="Projects\Magstripe\Doxygen.conf"></File></Folder><Folder name="MissileLauncher"><File path="Projects\MissileLauncher\ConfigDescriptor.c"></File><File path="Projects\MissileLauncher\ConfigDescriptor.h"></File><File path="Projects\MissileLauncher\Doxygen.conf"></File><File path="Projects\MissileLauncher\makefile"></File><File path="Projects\MissileLauncher\MissileLauncher.c"></File><File path="Projects\MissileLauncher\MissileLauncher.h"></File><File path="Projects\MissileLauncher\MissileLauncher.txt"></File></Folder><File path="Projects\makefile"></File></Folder><Folder name="Bootloaders"><Folder name="DFU"><File path="Bootloaders\DFU\BootloaderDFU.c"></File><File path="Bootloaders\DFU\BootloaderDFU.h"></File><File path="Bootloaders\DFU\Descriptors.c"></File><File path="Bootloaders\DFU\Descriptors.h"></File><File path="Bootloaders\DFU\makefile"></File><File path="Bootloaders\DFU\BootloaderDFU.txt"></File><File path="Bootloaders\DFU\Doxygen.conf"></File></Folder><Folder name="CDC"><File path="Bootloaders\CDC\BootloaderCDC.c"></File><File path="Bootloaders\CDC\BootloaderCDC.h"></File><File path="Bootloaders\CDC\Descriptors.c"></File><File path="Bootloaders\CDC\Descriptors.h"></File><File path="Bootloaders\CDC\makefile"></File><File path="Bootloaders\CDC\LUFA CDC Bootloader.inf"></File><File path="Bootloaders\CDC\Doxygen.conf"></File><File path="Bootloaders\CDC\BootloaderCDC.txt"></File></Folder><Folder name="TeensyHID"><File path="Bootloaders\TeensyHID\Descriptors.c"></File><File path="Bootloaders\TeensyHID\Descriptors.h"></File><File path="Bootloaders\TeensyHID\makefile"></File><File path="Bootloaders\TeensyHID\TeensyHID.c"></File><File path="Bootloaders\TeensyHID\TeensyHID.h"></File><File path="Bootloaders\TeensyHID\TeensyHID.txt"></File></Folder><File path="Bootloaders\makefile"></File></Folder><File path="makefile"></File><File path="README.txt"></File></Project>
\ No newline at end of file
+<Project name="LUFA"><Folder name="Demos"><Folder name="Device"><Folder name="ClassDriver"><Folder name="AudioInput"><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.c"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.h"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.txt"></File><File path="Demos\Device\ClassDriver\AudioInput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioInput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioInput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioInput\makefile"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioOutput\makefile"></File></Folder><Folder name="CDC"><File path="Demos\Device\ClassDriver\CDC\CDC.c"></File><File path="Demos\Device\ClassDriver\CDC\CDC.h"></File><File path="Demos\Device\ClassDriver\CDC\CDC.txt"></File><File path="Demos\Device\ClassDriver\CDC\Descriptors.c"></File><File path="Demos\Device\ClassDriver\CDC\Descriptors.h"></File><File path="Demos\Device\ClassDriver\CDC\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\CDC\LUFA CDC.inf"></File><File path="Demos\Device\ClassDriver\CDC\makefile"></File></Folder><Folder name="DualCDC"><File path="Demos\Device\ClassDriver\DualCDC\Descriptors.c"></File><File path="Demos\Device\ClassDriver\DualCDC\Descriptors.h"></File><File path="Demos\Device\ClassDriver\DualCDC\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\DualCDC\DualCDC.c"></File><File path="Demos\Device\ClassDriver\DualCDC\DualCDC.h"></File><File path="Demos\Device\ClassDriver\DualCDC\DualCDC.txt"></File><File path="Demos\Device\ClassDriver\DualCDC\LUFA DualCDC.inf"></File><File path="Demos\Device\ClassDriver\DualCDC\makefile"></File></Folder><Folder name="GenericHID"><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.c"></File><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.h"></File><File path="Demos\Device\ClassDriver\GenericHID\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.c"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.h"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.txt"></File><File path="Demos\Device\ClassDriver\GenericHID\makefile"></File></Folder><Folder name="Joystick"><File path="Demos\Device\ClassDriver\Joystick\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Joystick\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Joystick\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.c"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.h"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.txt"></File><File path="Demos\Device\ClassDriver\Joystick\makefile"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.txt"></File><File path="Demos\Device\ClassDriver\Keyboard\makefile"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\makefile"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI_Codes.h"></File></Folder><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MassStorage\makefile"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.c"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.h"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.txt"></File></Folder><Folder name="MIDI"><File path="Demos\Device\ClassDriver\MIDI\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MIDI\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MIDI\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MIDI\makefile"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.c"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.h"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.txt"></File></Folder><Folder name="Mouse"><File path="Demos\Device\ClassDriver\Mouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Mouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Mouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Mouse\makefile"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.c"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.h"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.txt"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.c"></File></Folder><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\makefile"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.txt"></File></Folder><Folder name="USBtoSerial"><Folder name="Lib"><File path="Demos\Device\ClassDriver\USBtoSerial\Lib\RingBuff.c"></File><File path="Demos\Device\ClassDriver\USBtoSerial\Lib\RingBuff.h"></File></Folder><File path="Demos\Device\ClassDriver\USBtoSerial\Descriptors.c"></File><File path="Demos\Device\ClassDriver\USBtoSerial\Descriptors.h"></File><File path="Demos\Device\ClassDriver\USBtoSerial\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\USBtoSerial\LUFA USBtoSerial.inf"></File><File path="Demos\Device\ClassDriver\USBtoSerial\makefile"></File><File path="Demos\Device\ClassDriver\USBtoSerial\USBtoSerial.c"></File><File path="Demos\Device\ClassDriver\USBtoSerial\USBtoSerial.h"></File><File path="Demos\Device\ClassDriver\USBtoSerial\USBtoSerial.txt"></File></Folder><File path="Demos\Device\ClassDriver\makefile"></File></Folder><Folder name="LowLevel"><Folder name="AudioInput"><File path="Demos\Device\LowLevel\AudioInput\AudioInput.c"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.h"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.txt"></File><File path="Demos\Device\LowLevel\AudioInput\Descriptors.c"></File><File path="Demos\Device\LowLevel\AudioInput\Descriptors.h"></File><File path="Demos\Device\LowLevel\AudioInput\Doxygen.conf"></File><File path="Demos\Device\LowLevel\AudioInput\makefile"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\LowLevel\AudioOutput\Descriptors.c"></File><File path="Demos\Device\LowLevel\AudioOutput\Descriptors.h"></File><File path="Demos\Device\LowLevel\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\LowLevel\AudioOutput\makefile"></File></Folder><Folder name="CDC"><File path="Demos\Device\LowLevel\CDC\CDC.c"></File><File path="Demos\Device\LowLevel\CDC\CDC.h"></File><File path="Demos\Device\LowLevel\CDC\CDC.txt"></File><File path="Demos\Device\LowLevel\CDC\Descriptors.c"></File><File path="Demos\Device\LowLevel\CDC\Descriptors.h"></File><File path="Demos\Device\LowLevel\CDC\Doxygen.conf"></File><File path="Demos\Device\LowLevel\CDC\LUFA CDC.inf"></File><File path="Demos\Device\LowLevel\CDC\makefile"></File></Folder><Folder name="DualCDC"><File path="Demos\Device\LowLevel\DualCDC\Descriptors.c"></File><File path="Demos\Device\LowLevel\DualCDC\Descriptors.h"></File><File path="Demos\Device\LowLevel\DualCDC\Doxygen.conf"></File><File path="Demos\Device\LowLevel\DualCDC\DualCDC.c"></File><File path="Demos\Device\LowLevel\DualCDC\DualCDC.h"></File><File path="Demos\Device\LowLevel\DualCDC\DualCDC.txt"></File><File path="Demos\Device\LowLevel\DualCDC\LUFA DualCDC.inf"></File><File path="Demos\Device\LowLevel\DualCDC\makefile"></File></Folder><Folder name="GenericHID"><File path="Demos\Device\LowLevel\GenericHID\Descriptors.c"></File><File path="Demos\Device\LowLevel\GenericHID\Descriptors.h"></File><File path="Demos\Device\LowLevel\GenericHID\Doxygen.conf"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.c"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.h"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.txt"></File><File path="Demos\Device\LowLevel\GenericHID\makefile"></File></Folder><Folder name="Joystick"><File path="Demos\Device\LowLevel\Joystick\Descriptors.c"></File><File path="Demos\Device\LowLevel\Joystick\Descriptors.h"></File><File path="Demos\Device\LowLevel\Joystick\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.c"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.h"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.txt"></File><File path="Demos\Device\LowLevel\Joystick\makefile"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\LowLevel\Keyboard\Descriptors.c"></File><File path="Demos\Device\LowLevel\Keyboard\Descriptors.h"></File><File path="Demos\Device\LowLevel\Keyboard\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.c"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.h"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.txt"></File><File path="Demos\Device\LowLevel\Keyboard\makefile"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\LowLevel\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\LowLevel\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\LowLevel\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\LowLevel\KeyboardMouse\makefile"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\LowLevel\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI.h"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI_Codes.h"></File></Folder><File path="Demos\Device\LowLevel\MassStorage\Descriptors.c"></File><File path="Demos\Device\LowLevel\MassStorage\Descriptors.h"></File><File path="Demos\Device\LowLevel\MassStorage\Doxygen.conf"></File><File path="Demos\Device\LowLevel\MassStorage\makefile"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.c"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.h"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.txt"></File></Folder><Folder name="MIDI"><File path="Demos\Device\LowLevel\MIDI\Descriptors.c"></File><File path="Demos\Device\LowLevel\MIDI\Descriptors.h"></File><File path="Demos\Device\LowLevel\MIDI\Doxygen.conf"></File><File path="Demos\Device\LowLevel\MIDI\makefile"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.c"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.h"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.txt"></File></Folder><Folder name="Mouse"><File path="Demos\Device\LowLevel\Mouse\Descriptors.c"></File><File path="Demos\Device\LowLevel\Mouse\Descriptors.h"></File><File path="Demos\Device\LowLevel\Mouse\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Mouse\makefile"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.c"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.h"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.txt"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDIS.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDIS.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDISConstants.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\TCP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\TCP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\UDP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\UDP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Webserver.c"></File></Folder><File path="Demos\Device\LowLevel\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\LowLevel\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\LowLevel\RNDISEthernet\makefile"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.txt"></File></Folder><Folder name="USBtoSerial"><Folder name="Lib"><File path="Demos\Device\LowLevel\USBtoSerial\Lib\RingBuff.c"></File><File path="Demos\Device\LowLevel\USBtoSerial\Lib\RingBuff.h"></File></Folder><File path="Demos\Device\LowLevel\USBtoSerial\Descriptors.c"></File><File path="Demos\Device\LowLevel\USBtoSerial\Descriptors.h"></File><File path="Demos\Device\LowLevel\USBtoSerial\Doxygen.conf"></File><File path="Demos\Device\LowLevel\USBtoSerial\LUFA USBtoSerial.inf"></File><File path="Demos\Device\LowLevel\USBtoSerial\makefile"></File><File path="Demos\Device\LowLevel\USBtoSerial\USBtoSerial.c"></File><File path="Demos\Device\LowLevel\USBtoSerial\USBtoSerial.h"></File><File path="Demos\Device\LowLevel\USBtoSerial\USBtoSerial.txt"></File></Folder><File path="Demos\Device\LowLevel\makefile"></File></Folder><Folder name="Incomplete"><Folder name="SideShow"><Folder name="Lib"></Folder><File path="Demos\Device\Incomplete\Sideshow\Descriptors.c"></File><File path="Demos\Device\Incomplete\Sideshow\Descriptors.h"></File><File path="Demos\Device\Incomplete\Sideshow\makefile"></File><File path="Demos\Device\Incomplete\Sideshow\Sideshow.c"></File><File path="Demos\Device\Incomplete\Sideshow\Sideshow.h"></File></Folder></Folder><File path="Demos\Device\makefile"></File></Folder><Folder name="Host"><Folder name="ClassDriver"><Folder name="CDCHost"><File path="Demos\Host\ClassDriver\CDCHost\CDCHost.c"></File><File path="Demos\Host\ClassDriver\CDCHost\CDCHost.h"></File><File path="Demos\Host\ClassDriver\CDCHost\CDCHost.txt"></File><File path="Demos\Host\ClassDriver\CDCHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\CDCHost\makefile"></File></Folder></Folder><Folder name="LowLevel"><Folder name="CDCHost"><File path="Demos\Host\LowLevel\CDCHost\CDCHost.c"></File><File path="Demos\Host\LowLevel\CDCHost\CDCHost.h"></File><File path="Demos\Host\LowLevel\CDCHost\CDCHost.txt"></File><File path="Demos\Host\LowLevel\CDCHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\CDCHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\CDCHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\CDCHost\makefile"></File></Folder><Folder name="GenericHIDHost"><File path="Demos\Host\LowLevel\GenericHIDHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\GenericHIDHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\GenericHIDHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.c"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.h"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.txt"></File><File path="Demos\Host\LowLevel\GenericHIDHost\makefile"></File></Folder><Folder name="KeyboardHost"><File path="Demos\Host\LowLevel\KeyboardHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\KeyboardHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\KeyboardHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.c"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.h"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.txt"></File><File path="Demos\Host\LowLevel\KeyboardHost\makefile"></File></Folder><Folder name="KeyboardHostWithParser"><File path="Demos\Host\LowLevel\KeyboardHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.txt"></File></Folder><Folder name="MassStorageHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\MassStorageHost\Lib\MassStoreCommands.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\Lib\MassStoreCommands.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\Lib\SCSI_Codes.h"></File></Folder><File path="Demos\Host\LowLevel\MassStorageHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MassStorageHost\makefile"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.txt"></File></Folder><Folder name="MouseHost"><File path="Demos\Host\LowLevel\MouseHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MouseHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MouseHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MouseHost\makefile"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.c"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.h"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.txt"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.txt"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.h"></File></Folder><Folder name="PrinterHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\PrinterHost\Lib\PrinterCommands.c"></File><File path="Demos\Host\LowLevel\PrinterHost\Lib\PrinterCommands.h"></File></Folder><File path="Demos\Host\LowLevel\PrinterHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\PrinterHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\PrinterHost\makefile"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.c"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.h"></File><File path="Demos\Host\LowLevel\PrinterHost\Doxygen.conf"></File></Folder><Folder name="StillImageHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\StillImageHost\Lib\PIMACodes.h"></File><File path="Demos\Host\LowLevel\StillImageHost\Lib\StillImageCommands.c"></File><File path="Demos\Host\LowLevel\StillImageHost\Lib\StillImageCommands.h"></File></Folder><File path="Demos\Host\LowLevel\StillImageHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\StillImageHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\StillImageHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\StillImageHost\makefile"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.c"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.h"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.txt"></File></Folder><File path="Demos\Host\LowLevel\makefile"></File></Folder><Folder name="Incomplete"><Folder name="BluetoothHost"><Folder name="Lib"><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothACLPackets.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothACLPackets.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothClassCodes.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothHCICommands.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothHCICommands.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothStack.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothStack.h"></File></Folder><File path="Demos\Host\Incomplete\BluetoothHost\makefile"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothHost.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothHost.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\ConfigDescriptor.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\ConfigDescriptor.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\DeviceDescriptor.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\DeviceDescriptor.h"></File></Folder></Folder><File path="Demos\Host\makefile"></File></Folder><Folder name="OTG"><Folder name="TestApp"><File path="Demos\OTG\TestApp\Descriptors.c"></File><File path="Demos\OTG\TestApp\Descriptors.h"></File><File path="Demos\OTG\TestApp\Doxygen.conf"></File><File path="Demos\OTG\TestApp\makefile"></File><File path="Demos\OTG\TestApp\TestApp.c"></File><File path="Demos\OTG\TestApp\TestApp.h"></File><File path="Demos\OTG\TestApp\TestApp.txt"></File><File path="Demos\OTG\TestApp\TestEvents.c"></File><File path="Demos\OTG\TestApp\TestEvents.h"></File></Folder><File path="Demos\OTG\makefile"></File></Folder><File path="Demos\makefile"></File></Folder><Folder name="LUFA"><Folder name="Common"><File path="LUFA\Common\Common.h"></File><File path="LUFA\Common\FunctionAttributes.h"></File><File path="LUFA\Common\BoardTypes.h"></File></Folder><Folder name="Drivers"><Folder name="USB"><Folder name="LowLevel"><Folder name="Template"><File path="LUFA\Drivers\USB\LowLevel\Template\Template_Endpoint_RW.c"></File><File path="LUFA\Drivers\USB\LowLevel\Template\Template_Endpoint_Control_R.c"></File><File path="LUFA\Drivers\USB\LowLevel\Template\Template_Endpoint_Control_W.c"></File><File path="LUFA\Drivers\USB\LowLevel\Template\Template_Pipe_RW.c"></File></Folder><File path="LUFA\Drivers\USB\LowLevel\HostChapter9.h"></File><File path="LUFA\Drivers\USB\LowLevel\LowLevel.c"></File><File path="LUFA\Drivers\USB\LowLevel\LowLevel.h"></File><File path="LUFA\Drivers\USB\LowLevel\Pipe.c"></File><File path="LUFA\Drivers\USB\LowLevel\Pipe.h"></File><File path="LUFA\Drivers\USB\LowLevel\DevChapter9.c"></File><File path="LUFA\Drivers\USB\LowLevel\DevChapter9.h"></File><File path="LUFA\Drivers\USB\LowLevel\Device.h"></File><File path="LUFA\Drivers\USB\LowLevel\Endpoint.c"></File><File path="LUFA\Drivers\USB\LowLevel\Endpoint.h"></File><File path="LUFA\Drivers\USB\LowLevel\Host.c"></File><File path="LUFA\Drivers\USB\LowLevel\Host.h"></File><File path="LUFA\Drivers\USB\LowLevel\HostChapter9.c"></File><File path="LUFA\Drivers\USB\LowLevel\OTG.h"></File></Folder><Folder name="HighLevel"><File path="LUFA\Drivers\USB\HighLevel\USBTask.h"></File><File path="LUFA\Drivers\USB\HighLevel\Events.c"></File><File path="LUFA\Drivers\USB\HighLevel\Events.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBInterrupt.c"></File><File path="LUFA\Drivers\USB\HighLevel\USBInterrupt.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBTask.c"></File><File path="LUFA\Drivers\USB\HighLevel\StdDescriptors.h"></File><File path="LUFA\Drivers\USB\HighLevel\StdRequestType.h"></File><File path="LUFA\Drivers\USB\HighLevel\StreamCallbacks.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBMode.h"></File><File path="LUFA\Drivers\USB\HighLevel\ConfigDescriptor.c"></File><File path="LUFA\Drivers\USB\HighLevel\ConfigDescriptor.h"></File></Folder><Folder name="Class"><Folder name="Device"><File path="LUFA\Drivers\USB\Class\Device\HID.c"></File><File path="LUFA\Drivers\USB\Class\Device\HID.h"></File><File path="LUFA\Drivers\USB\Class\Device\CDC.c"></File><File path="LUFA\Drivers\USB\Class\Device\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Device\RNDIS.c"></File><File path="LUFA\Drivers\USB\Class\Device\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\Device\RNDISConstants.h"></File><File path="LUFA\Drivers\USB\Class\Device\MassStorage.c"></File><File path="LUFA\Drivers\USB\Class\Device\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Device\Audio.c"></File><File path="LUFA\Drivers\USB\Class\Device\Audio.h"></File><File path="LUFA\Drivers\USB\Class\Device\MIDI.c"></File><File path="LUFA\Drivers\USB\Class\Device\MIDI.h"></File></Folder><Folder name="Host"><File path="LUFA\Drivers\USB\Class\Host\HIDParser.c"></File><File path="LUFA\Drivers\USB\Class\Host\HIDParser.h"></File><File path="LUFA\Drivers\USB\Class\Host\HIDReportData.h"></File><File path="LUFA\Drivers\USB\Class\Host\CDC.c"></File><File path="LUFA\Drivers\USB\Class\Host\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Host\HID.c"></File><File path="LUFA\Drivers\USB\Class\Host\HID.h"></File><File path="LUFA\Drivers\USB\Class\Host\Audio.c"></File><File path="LUFA\Drivers\USB\Class\Host\Audio.h"></File><File path="LUFA\Drivers\USB\Class\Host\MIDI.c"></File><File path="LUFA\Drivers\USB\Class\Host\MIDI.h"></File><File path="LUFA\Drivers\USB\Class\Host\MassStorage.c"></File><File path="LUFA\Drivers\USB\Class\Host\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Host\StillImage.c"></File><File path="LUFA\Drivers\USB\Class\Host\StillImage.h"></File></Folder><Folder name="Common"><File path="LUFA\Drivers\USB\Class\Common\Audio.h"></File><File path="LUFA\Drivers\USB\Class\Common\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Common\HID.h"></File><File path="LUFA\Drivers\USB\Class\Common\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Common\MIDI.h"></File><File path="LUFA\Drivers\USB\Class\Common\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\Common\StillImage.h"></File></Folder><File path="LUFA\Drivers\USB\Class\Audio.h"></File><File path="LUFA\Drivers\USB\Class\CDC.h"></File><File path="LUFA\Drivers\USB\Class\HID.h"></File><File path="LUFA\Drivers\USB\Class\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\MIDI.h"></File><File path="LUFA\Drivers\USB\Class\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\StillImage.h"></File></Folder><File path="LUFA\Drivers\USB\USB.h"></File></Folder><Folder name="Misc"><File path="LUFA\Drivers\Misc\TerminalCodes.h"></File></Folder><Folder name="Board"><Folder name="USBKEY"><File path="LUFA\Drivers\Board\USBKEY\Dataflash.h"></File><File path="LUFA\Drivers\Board\USBKEY\Joystick.h"></File><File path="LUFA\Drivers\Board\USBKEY\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\USBKEY\LEDs.h"></File><File path="LUFA\Drivers\Board\USBKEY\Buttons.h"></File></Folder><Folder name="STK526"><File path="LUFA\Drivers\Board\STK526\Dataflash.h"></File><File path="LUFA\Drivers\Board\STK526\Joystick.h"></File><File path="LUFA\Drivers\Board\STK526\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\STK526\LEDs.h"></File><File path="LUFA\Drivers\Board\STK526\Buttons.h"></File></Folder><Folder name="STK525"><File path="LUFA\Drivers\Board\STK525\Dataflash.h"></File><File path="LUFA\Drivers\Board\STK525\Joystick.h"></File><File path="LUFA\Drivers\Board\STK525\AT45DB321C.h"></File><File path="LUFA\Drivers\Board\STK525\LEDs.h"></File><File path="LUFA\Drivers\Board\STK525\Buttons.h"></File></Folder><Folder name="RZUSBSTICK"><File path="LUFA\Drivers\Board\RZUSBSTICK\LEDs.h"></File></Folder><Folder name="ATAVRUSBRF01"><File path="LUFA\Drivers\Board\ATAVRUSBRF01\LEDs.h"></File><File path="LUFA\Drivers\Board\ATAVRUSBRF01\Buttons.h"></File></Folder><File path="LUFA\Drivers\Board\Temperature.h"></File><File path="LUFA\Drivers\Board\Dataflash.h"></File><File path="LUFA\Drivers\Board\Joystick.h"></File><File path="LUFA\Drivers\Board\Temperature.c"></File><File path="LUFA\Drivers\Board\LEDs.h"></File><File path="LUFA\Drivers\Board\Buttons.h"></File></Folder><Folder name="Peripheral"><Folder name="AT90USBXXX67"><File path="LUFA\Drivers\Peripheral\AT90USBXXX67\ADC.h"></File></Folder><File path="LUFA\Drivers\Peripheral\ADC.h"></File><File path="LUFA\Drivers\Peripheral\Serial.c"></File><File path="LUFA\Drivers\Peripheral\Serial.h"></File><File path="LUFA\Drivers\Peripheral\SPI.h"></File><File path="LUFA\Drivers\Peripheral\SerialStream.c"></File><File path="LUFA\Drivers\Peripheral\SerialStream.h"></File></Folder></Folder><Folder name="DriverStubs"><File path="LUFA\DriverStubs\Dataflash.h"></File><File path="LUFA\DriverStubs\Joystick.h"></File><File path="LUFA\DriverStubs\LEDs.h"></File><File path="LUFA\DriverStubs\Buttons.h"></File></Folder><Folder name="ManPages"><File path="LUFA\ManPages\AboutLUFA.txt"></File><File path="LUFA\ManPages\BuildingLinkableLibraries.txt"></File><File path="LUFA\ManPages\ChangeLog.txt"></File><File path="LUFA\ManPages\CompileTimeTokens.txt"></File><File path="LUFA\ManPages\DevelopingWithLUFA.txt"></File><File path="LUFA\ManPages\DeviceSupport.txt"></File><File path="LUFA\ManPages\DirectorySummaries.txt"></File><File path="LUFA\ManPages\Donating.txt"></File><File path="LUFA\ManPages\FutureChanges.txt"></File><File path="LUFA\ManPages\GettingStarted.txt"></File><File path="LUFA\ManPages\Groups.txt"></File><File path="LUFA\ManPages\LibraryResources.txt"></File><File path="LUFA\ManPages\LUFAPoweredProjects.txt"></File><File path="LUFA\ManPages\MainPage.txt"></File><File path="LUFA\ManPages\MigrationInformation.txt"></File><File path="LUFA\ManPages\VIDAndPIDValues.txt"></File><File path="LUFA\ManPages\WritingBoardDrivers.txt"></File><File path="LUFA\ManPages\ConfiguringApps.txt"></File><File path="LUFA\ManPages\CompilingApps.txt"></File><File path="LUFA\ManPages\ProgrammingApps.txt"></File><File path="LUFA\ManPages\LibraryApps.txt"></File><File path="LUFA\ManPages\Licence.txt"></File></Folder><Folder name="Scheduler"><File path="LUFA\Scheduler\Scheduler.c"></File><File path="LUFA\Scheduler\Scheduler.h"></File></Folder><File path="LUFA\makefile"></File><File path="LUFA\Version.h"></File><File path="LUFA\Doxygen.conf"></File></Folder><Folder name="Projects"><Folder name="MagStripe"><Folder name="Lib"><File path="Projects\Magstripe\Lib\CircularBitBuffer.c"></File><File path="Projects\Magstripe\Lib\CircularBitBuffer.h"></File><File path="Projects\Magstripe\Lib\MagstripeHW.h"></File></Folder><File path="Projects\Magstripe\Descriptors.c"></File><File path="Projects\Magstripe\Descriptors.h"></File><File path="Projects\Magstripe\Magstripe.c"></File><File path="Projects\Magstripe\Magstripe.h"></File><File path="Projects\Magstripe\makefile"></File><File path="Projects\Magstripe\Magstripe.txt"></File><File path="Projects\Magstripe\Doxygen.conf"></File></Folder><Folder name="MissileLauncher"><File path="Projects\MissileLauncher\ConfigDescriptor.c"></File><File path="Projects\MissileLauncher\ConfigDescriptor.h"></File><File path="Projects\MissileLauncher\Doxygen.conf"></File><File path="Projects\MissileLauncher\makefile"></File><File path="Projects\MissileLauncher\MissileLauncher.c"></File><File path="Projects\MissileLauncher\MissileLauncher.h"></File><File path="Projects\MissileLauncher\MissileLauncher.txt"></File></Folder><File path="Projects\makefile"></File></Folder><Folder name="Bootloaders"><Folder name="DFU"><File path="Bootloaders\DFU\BootloaderDFU.c"></File><File path="Bootloaders\DFU\BootloaderDFU.h"></File><File path="Bootloaders\DFU\Descriptors.c"></File><File path="Bootloaders\DFU\Descriptors.h"></File><File path="Bootloaders\DFU\makefile"></File><File path="Bootloaders\DFU\BootloaderDFU.txt"></File><File path="Bootloaders\DFU\Doxygen.conf"></File></Folder><Folder name="CDC"><File path="Bootloaders\CDC\BootloaderCDC.c"></File><File path="Bootloaders\CDC\BootloaderCDC.h"></File><File path="Bootloaders\CDC\Descriptors.c"></File><File path="Bootloaders\CDC\Descriptors.h"></File><File path="Bootloaders\CDC\makefile"></File><File path="Bootloaders\CDC\LUFA CDC Bootloader.inf"></File><File path="Bootloaders\CDC\Doxygen.conf"></File><File path="Bootloaders\CDC\BootloaderCDC.txt"></File></Folder><Folder name="TeensyHID"><File path="Bootloaders\TeensyHID\Descriptors.c"></File><File path="Bootloaders\TeensyHID\Descriptors.h"></File><File path="Bootloaders\TeensyHID\makefile"></File><File path="Bootloaders\TeensyHID\TeensyHID.c"></File><File path="Bootloaders\TeensyHID\TeensyHID.h"></File><File path="Bootloaders\TeensyHID\TeensyHID.txt"></File></Folder><File path="Bootloaders\makefile"></File></Folder><File path="makefile"></File><File path="README.txt"></File></Project>
\ No newline at end of file
USB_INT_Enable(USB_INT_DDISCI);\r
}\r
\r
-uint8_t USB_Host_SetDeviceConfiguration(uint8_t ConfigNumber)\r
+uint8_t USB_Host_SetDeviceConfiguration(const uint8_t ConfigNumber)\r
{\r
USB_ControlRequest = (USB_Request_Header_t)\r
{\r
return USB_Host_SendControlRequest(NULL);\r
}\r
\r
-uint8_t USB_Host_GetDeviceDescriptor(void* DeviceDescriptorPtr)\r
+uint8_t USB_Host_GetDeviceDescriptor(void* const DeviceDescriptorPtr)\r
{\r
USB_ControlRequest = (USB_Request_Header_t)\r
{\r
*\r
* \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result.\r
*/\r
- uint8_t USB_Host_SetDeviceConfiguration(uint8_t ConfigNumber);\r
+ uint8_t USB_Host_SetDeviceConfiguration(const uint8_t ConfigNumber);\r
\r
/** Convenience function. This routine sends a GetDescriptor standard request to the attached\r
* device, requesting the device descriptor. This can be used to easily retrieve information\r
*\r
* \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result.\r
*/\r
- uint8_t USB_Host_GetDeviceDescriptor(void* DeviceDescriptorPtr);\r
+ uint8_t USB_Host_GetDeviceDescriptor(void* const DeviceDescriptorPtr);\r
\r
/** Clears a stall condition on the given pipe, via a ClearFeature request to the attached device.\r
*\r
*/\r
#define PIPE_EPNUM_MASK 0x0F\r
\r
- /** Endpoint bank size mask, for masking against endpoint addresses to retrieve the endpoint's\r
- * bank size in the attached device.\r
- */\r
- #define PIPE_EPSIZE_MASK 0x7FF\r
-\r
/* Pseudo-Function Macros: */\r
#if defined(__DOXYGEN__)\r
/** Indicates the number of bytes currently stored in the current pipes's selected bank.\r