Lower bulk endpoint polling rate in the descriptors to the lowest possible value...
[pub/USBasp.git] / Demos / Device / Incomplete / Sideshow / Lib / SideshowCommands.c
index 5bce088..f57b9c8 100644 (file)
@@ -1,21 +1,21 @@
 /*
              LUFA Library
      Copyright (C) Dean Camera, 2010.
-              
+
   dean [at] fourwalledcubicle [dot] com
-      www.fourwalledcubicle.com
+           www.lufa-lib.org
 */
 
 /*
   Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 
-  Permission to use, copy, modify, distribute, and sell this 
+  Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
-  without fee, provided that the above copyright notice appear in 
+  without fee, provided that the above copyright notice appear in
   all copies and that both that the copyright notice and this
-  permission notice and warranty disclaimer appear in supporting 
-  documentation, and that the name of the author not be used in 
-  advertising or publicity pertaining to distribution of the 
+  permission notice and warranty disclaimer appear in supporting
+  documentation, and that the name of the author not be used in
+  advertising or publicity pertaining to distribution of the
   software without specific, written prior permission.
 
   The author disclaim all warranties with regard to this
@@ -42,15 +42,15 @@ Unicode_String_t Manufacturer      = {LengthInBytes: sizeof(L"Dean Camera"),
 
 Unicode_String_t SupportedLanguage = {LengthInBytes: sizeof(L"en-US:1"),
                                       UnicodeString: L"en-US:1"};
-                                                                         
+
 void Sideshow_ProcessCommandPacket(void)
 {
        SideShow_PacketHeader_t PacketHeader;
-       
-       Endpoint_SelectEndpoint(SIDESHOW_OUT_EPNUM);    
+
+       Endpoint_SelectEndpoint(SIDESHOW_OUT_EPNUM);
        Endpoint_Read_Stream_LE(&PacketHeader, sizeof(SideShow_PacketHeader_t));
-       
-       PacketHeader.Type.Response = true;
+
+       PacketHeader.Type.TypeFields.Response = true;
 
        printf("\r\nCmd: %lX", (PacketHeader.Type.TypeLong & 0x00FFFFFF));
 
@@ -70,7 +70,7 @@ void Sideshow_ProcessCommandPacket(void)
                        break;
                case SIDESHOW_CMD_GET_CAPABILITIES:
                        SideShow_GetCapabilities(&PacketHeader);
-                       break;                  
+                       break;
                case SIDESHOW_CMD_GET_DEVICE_NAME:
                        SideShow_GetString(&PacketHeader, &DeviceName);
                        break;
@@ -94,7 +94,7 @@ void Sideshow_ProcessCommandPacket(void)
                        break;
                case SIDESHOW_CMD_DELETE_ALL_CONTENT:
                        SideShow_DeleteAllContent(&PacketHeader);
-                       break;          
+                       break;
                case SIDESHOW_CMD_DELETE_APPLICATION:
                        SideShow_DeleteApplication(&PacketHeader);
                        break;
@@ -108,12 +108,12 @@ void Sideshow_ProcessCommandPacket(void)
                        Endpoint_ClearOUT();
 
                        PacketHeader.Length   = sizeof(SideShow_PacketHeader_t);
-                       PacketHeader.Type.NAK = true;
-                       
-                       Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);     
-                       Endpoint_Write_Stream_LE(&PacketHeader, sizeof(SideShow_PacketHeader_t));               
+                       PacketHeader.Type.TypeFields.NAK = true;
+
+                       Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
+                       Endpoint_Write_Stream_LE(&PacketHeader, sizeof(SideShow_PacketHeader_t));
                        Endpoint_ClearIN();
-                       
+
                        printf(" UNK");
        }
 }
@@ -122,8 +122,8 @@ static void SideShow_Ping(SideShow_PacketHeader_t* const PacketHeader)
 {
        Endpoint_ClearOUT();
 
-       Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);     
-       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));                
+       Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));
        Endpoint_ClearIN();
 }
 
@@ -133,12 +133,12 @@ static void SideShow_Sync(SideShow_PacketHeader_t* const PacketHeader)
 
        Endpoint_Read_Stream_LE(&ProtocolGUID, sizeof(GUID_t));
        Endpoint_ClearOUT();
-       
+
        if (!(GUID_COMPARE(&ProtocolGUID, (uint32_t[])STANDARD_PROTOCOL_GUID)))
-         PacketHeader->Type.NAK = true;
-       
+         PacketHeader->Type.TypeFields.NAK = true;
+
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
-       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));                
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));
        Endpoint_Write_Stream_LE(&ProtocolGUID, sizeof(GUID_t));
        Endpoint_ClearIN();
 }
@@ -159,7 +159,7 @@ static void SideShow_SetCurrentUser(SideShow_PacketHeader_t* const PacketHeader)
 {
        SideShow_Read_Unicode_String(&UserSID, sizeof(UserSID.UnicodeString));
        Endpoint_ClearOUT();
-       
+
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t);
 
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
@@ -174,7 +174,7 @@ static void SideShow_GetCapabilities(SideShow_PacketHeader_t* const PacketHeader
 
        Endpoint_Read_Stream_LE(&Property, sizeof(SideShow_PropertyKey_t));
        Endpoint_ClearOUT();
-       
+
        printf(" ID: %lu", Property.PropertyID);
 
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t);
@@ -187,46 +187,46 @@ static void SideShow_GetCapabilities(SideShow_PacketHeader_t* const PacketHeader
                                PropertyData.DataType    = VT_I4;
                                PropertyData.Data.Data32 = ScreenText;
                                PacketHeader->Length += sizeof(uint32_t);
-                               
+
                                break;
                        case PROPERTY_SIDESHOW_SCREENWIDTH:
                        case PROPERTY_SIDESHOW_CLIENTWIDTH:
                                PropertyData.DataType    = VT_UI2;
                                PropertyData.Data.Data16 = 16;
                                PacketHeader->Length += sizeof(uint16_t);
-                       
+
                                break;
                        case PROPERTY_SIDESHOW_SCREENHEIGHT:
                        case PROPERTY_SIDESHOW_CLIENTHEIGHT:
                                PropertyData.DataType    = VT_UI2;
                                PropertyData.Data.Data16 = 2;
                                PacketHeader->Length += sizeof(uint16_t);
-                       
+
                                break;
                        case PROPERTY_SIDESHOW_COLORDEPTH:
                                PropertyData.DataType    = VT_UI2;
                                PropertyData.Data.Data16 = 1;
                                PacketHeader->Length += sizeof(uint16_t);
-                       
+
                                break;
                        case PROPERTY_SIDESHOW_COLORTYPE:
                                PropertyData.DataType    = VT_UI2;
                                PropertyData.Data.Data16 = BlackAndWhiteDisplay;
                                PacketHeader->Length += sizeof(uint16_t);
-                       
+
                                break;
                        case PROPERTY_SIDESHOW_DATACACHE:
                                PropertyData.DataType    = VT_BOOL;
                                PropertyData.Data.Data16 = false;
                                PacketHeader->Length += sizeof(uint16_t);
-                       
+
                                break;
                        case PROPERTY_SIDESHOW_SUPPORTEDLANGS:
                        case PROPERTY_SIDESHOW_CURRENTLANG:
                                PropertyData.DataType    = VT_LPWSTR;
                                PropertyData.Data.DataPointer = &SupportedLanguage;
                                PacketHeader->Length += SupportedLanguage.LengthInBytes;
-                       
+
                                break;
                        default:
                                PropertyData.DataType    = VT_EMPTY;
@@ -241,23 +241,23 @@ static void SideShow_GetCapabilities(SideShow_PacketHeader_t* const PacketHeader
                                PropertyData.DataType    = VT_UI4;
                                PropertyData.Data.Data32 = GenericDevice;
                                PacketHeader->Length += sizeof(uint32_t);
-                               
+
                                break;
                }
-       }       
+       }
        else
        {
-               PacketHeader->Type.NAK = true;          
-               
+               PacketHeader->Type.TypeFields.NAK = true;
+
                printf(" WRONG GUID");
                printf(" %lX %lX %lX %lX", Property.PropertyGUID.Chunks[0], Property.PropertyGUID.Chunks[1],
-                                          Property.PropertyGUID.Chunks[2],  Property.PropertyGUID.Chunks[3]);          
+                                          Property.PropertyGUID.Chunks[2],  Property.PropertyGUID.Chunks[3]);
        }
 
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));
-       
-       if (!(PacketHeader->Type.NAK))
+
+       if (!(PacketHeader->Type.TypeFields.NAK))
        {
                switch (PropertyData.DataType)
                {
@@ -275,18 +275,19 @@ static void SideShow_GetCapabilities(SideShow_PacketHeader_t* const PacketHeader
                                break;
                }
        }
-       
+
        Endpoint_ClearIN();
        return;
 }
 
-static void SideShow_GetString(SideShow_PacketHeader_t* const PacketHeader, void* const UnicodeStruct)
+static void SideShow_GetString(SideShow_PacketHeader_t* const PacketHeader,
+                               void* const UnicodeStruct)
 {
        Endpoint_ClearOUT();
 
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t) +
                               sizeof(uint32_t) + ((Unicode_String_t*)UnicodeStruct)->LengthInBytes;
-       
+
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));
        SideShow_Write_Unicode_String(UnicodeStruct);
@@ -296,7 +297,7 @@ static void SideShow_GetString(SideShow_PacketHeader_t* const PacketHeader, void
 static void SideShow_GetApplicationOrder(SideShow_PacketHeader_t* const PacketHeader)
 {
        uint8_t  TotalApplications = 0;
-                  
+
        Endpoint_ClearOUT();
 
        for (uint8_t App = 0; App < MAX_APPLICATIONS; App++)
@@ -307,11 +308,11 @@ static void SideShow_GetApplicationOrder(SideShow_PacketHeader_t* const PacketHe
 
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t) +
                               sizeof(uint32_t) + (TotalApplications * sizeof(GUID_t));
-       
+
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));
        Endpoint_Write_DWord_LE(TotalApplications);
-       
+
        for (uint8_t App = 0; App < MAX_APPLICATIONS; App++)
        {
                if (InstalledApplications[App].InUse)
@@ -328,7 +329,7 @@ static void SideShow_GetSupportedEndpoints(SideShow_PacketHeader_t* const Packet
        Endpoint_ClearOUT();
 
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t) + sizeof(uint32_t) + sizeof(GUID_t);
-       
+
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));
        Endpoint_Write_DWord_LE(1);
@@ -355,7 +356,7 @@ static void SideShow_AddApplication(SideShow_PacketHeader_t* const PacketHeader)
                Endpoint_Discard_Stream(PacketHeader->Length);
                Endpoint_ClearOUT();
 
-               PacketHeader->Type.NAK = true;
+               PacketHeader->Type.TypeFields.NAK = true;
        }
        else
        {
@@ -368,7 +369,7 @@ static void SideShow_AddApplication(SideShow_PacketHeader_t* const PacketHeader)
                SideShow_Discard_Byte_Stream();
                SideShow_Discard_Byte_Stream();
                Endpoint_ClearOUT();
-               
+
                CurrApp->InUse = true;
                CurrApp->HaveContent = false;
                CurrApp->CurrentContentID = 1;
@@ -384,8 +385,8 @@ static void SideShow_AddApplication(SideShow_PacketHeader_t* const PacketHeader)
 static void SideShow_DeleteApplication(SideShow_PacketHeader_t* const PacketHeader)
 {
        GUID_t ApplicationGUID;
-       
-       Endpoint_Read_Stream_LE(&ApplicationGUID, sizeof(GUID_t));      
+
+       Endpoint_Read_Stream_LE(&ApplicationGUID, sizeof(GUID_t));
        Endpoint_ClearOUT();
 
        SideShow_Application_t* AppToDelete = SideShow_GetApplicationFromGUID(&ApplicationGUID);
@@ -393,7 +394,7 @@ static void SideShow_DeleteApplication(SideShow_PacketHeader_t* const PacketHead
        if (AppToDelete != NULL)
          AppToDelete->InUse = false;
        else
-         PacketHeader->Type.NAK = true;
+         PacketHeader->Type.TypeFields.NAK = true;
 
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t);
 
@@ -405,7 +406,7 @@ static void SideShow_DeleteApplication(SideShow_PacketHeader_t* const PacketHead
 static void SideShow_DeleteAllApplications(SideShow_PacketHeader_t* const PacketHeader)
 {
        Endpoint_ClearOUT();
-       
+
        for (uint8_t App = 0; App < MAX_APPLICATIONS; App++)
          InstalledApplications[App].InUse = false;
 
@@ -419,22 +420,22 @@ static void SideShow_AddContent(SideShow_PacketHeader_t* const PacketHeader)
        GUID_t ApplicationID;
        GUID_t EndpointID;
        SideShow_Application_t* Application;
-       
+
        Endpoint_Read_Stream_LE(&ApplicationID, sizeof(GUID_t));
        Endpoint_Read_Stream_LE(&EndpointID, sizeof(GUID_t));
-       
+
        Application = SideShow_GetApplicationFromGUID(&ApplicationID);
-       
+
        if (Application == NULL)
        {
                SideShow_Discard_Byte_Stream();
-               PacketHeader->Type.NAK = true;
+               PacketHeader->Type.TypeFields.NAK = true;
        }
        else if (!(SideShow_AddSimpleContent(PacketHeader, Application)))
        {
-               PacketHeader->Type.NAK = true;
+               PacketHeader->Type.TypeFields.NAK = true;
        }
-       
+
        Endpoint_ClearOUT();
 
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t);
@@ -454,14 +455,14 @@ static void SideShow_DeleteContent(SideShow_PacketHeader_t* const PacketHeader)
        Endpoint_Read_Stream_LE(&EndpointID, sizeof(GUID_t));
        Endpoint_Read_Stream_LE(&ContentID, sizeof(uint32_t));
        Endpoint_ClearOUT();
-       
+
        SideShow_Application_t* Application = SideShow_GetApplicationFromGUID(&ApplicationID);
-       
+
        if ((Application != NULL) && (Application->CurrentContentID == ContentID))
          Application->HaveContent = false;
        else
-         PacketHeader->Type.NAK = true;
-         
+         PacketHeader->Type.TypeFields.NAK = true;
+
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t);
 
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
@@ -479,15 +480,16 @@ static void SideShow_DeleteAllContent(SideShow_PacketHeader_t* const PacketHeade
        Endpoint_ClearOUT();
 
        SideShow_Application_t* Application = SideShow_GetApplicationFromGUID(&ApplicationID);
-       
+
        if (Application != NULL)
          Application->HaveContent = false;
        else
-         PacketHeader->Type.NAK = true;          
+         PacketHeader->Type.TypeFields.NAK = true;
 
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t);
 
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
        Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));
-       Endpoint_ClearIN();  
+       Endpoint_ClearIN();
 }
+