Update UC3 platform driver support to use the bitmasks defined in the header files...
[pub/USBasp.git] / Demos / Device / Incomplete / Sideshow / Lib / SideshowCommands.c
index 5bce088..d1aea1e 100644 (file)
@@ -1,21 +1,21 @@
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2010.
-              
+     Copyright (C) Dean Camera, 2011.
+
   dean [at] fourwalledcubicle [dot] com
-      www.fourwalledcubicle.com
+           www.lufa-lib.org
 */
 
 /*
-  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2011  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_Read_Stream_LE(&PacketHeader, sizeof(SideShow_PacketHeader_t));
-       
-       PacketHeader.Type.Response = true;
+
+       Endpoint_SelectEndpoint(SIDESHOW_OUT_EPNUM);
+       Endpoint_Read_Stream_LE(&PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
+
+       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;
@@ -104,16 +104,16 @@ void Sideshow_ProcessCommandPacket(void)
                default:
                        PacketHeader.Length -= sizeof(SideShow_PacketHeader_t);
 
-                       Endpoint_Discard_Stream(PacketHeader.Length);
+                       Endpoint_Discard_Stream(PacketHeader.Length, NULL);
                        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), NULL);
                        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), NULL);
        Endpoint_ClearIN();
 }
 
@@ -131,15 +131,15 @@ static void SideShow_Sync(SideShow_PacketHeader_t* const PacketHeader)
 {
        GUID_t ProtocolGUID;
 
-       Endpoint_Read_Stream_LE(&ProtocolGUID, sizeof(GUID_t));
+       Endpoint_Read_Stream_LE(&ProtocolGUID, sizeof(GUID_t), NULL);
        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(&ProtocolGUID, sizeof(GUID_t));
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
+       Endpoint_Write_Stream_LE(&ProtocolGUID, sizeof(GUID_t), NULL);
        Endpoint_ClearIN();
 }
 
@@ -150,7 +150,7 @@ static void SideShow_GetCurrentUser(SideShow_PacketHeader_t* const PacketHeader)
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t) + sizeof(uint32_t) + UserSID.LengthInBytes;
 
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
-       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
        SideShow_Write_Unicode_String(&UserSID);
        Endpoint_ClearIN();
 }
@@ -159,11 +159,11 @@ 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);
-       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
        Endpoint_ClearIN();
 }
 
@@ -172,9 +172,9 @@ static void SideShow_GetCapabilities(SideShow_PacketHeader_t* const PacketHeader
        SideShow_PropertyKey_t  Property;
        SideShow_PropertyData_t PropertyData;
 
-       Endpoint_Read_Stream_LE(&Property, sizeof(SideShow_PropertyKey_t));
+       Endpoint_Read_Stream_LE(&Property, sizeof(SideShow_PropertyKey_t), NULL);
        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,54 +241,55 @@ 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))
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
+
+       if (!(PacketHeader->Type.TypeFields.NAK))
        {
                switch (PropertyData.DataType)
                {
                        case VT_UI4:
                        case VT_I4:
-                               Endpoint_Write_Stream_LE(&PropertyData.Data.Data32, sizeof(uint32_t));
+                               Endpoint_Write_Stream_LE(&PropertyData.Data.Data32, sizeof(uint32_t), NULL);
                                break;
                        case VT_UI2:
                        case VT_I2:
                        case VT_BOOL:
-                               Endpoint_Write_Stream_LE(&PropertyData.Data.Data16, sizeof(uint16_t));
+                               Endpoint_Write_Stream_LE(&PropertyData.Data.Data16, sizeof(uint16_t), NULL);
                                break;
                        case VT_LPWSTR:
                                SideShow_Write_Unicode_String((Unicode_String_t*)PropertyData.Data.Data16);
                                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));
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
        SideShow_Write_Unicode_String(UnicodeStruct);
        Endpoint_ClearIN();
 }
@@ -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,15 +308,15 @@ 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);
-       
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
+       Endpoint_Write_32_LE(TotalApplications);
+
        for (uint8_t App = 0; App < MAX_APPLICATIONS; App++)
        {
                if (InstalledApplications[App].InUse)
-                 Endpoint_Write_Stream_LE(&InstalledApplications[App].ApplicationID, sizeof(GUID_t));
+                 Endpoint_Write_Stream_LE(&InstalledApplications[App].ApplicationID, sizeof(GUID_t), NULL);
        }
 
        Endpoint_ClearIN();
@@ -328,11 +329,11 @@ 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);
-       Endpoint_Write_Stream_LE(&SupportedEndpointGUID, sizeof(GUID_t));
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
+       Endpoint_Write_32_LE(1);
+       Endpoint_Write_Stream_LE(&SupportedEndpointGUID, sizeof(GUID_t), NULL);
        Endpoint_ClearIN();
 }
 
@@ -341,7 +342,7 @@ static void SideShow_AddApplication(SideShow_PacketHeader_t* const PacketHeader)
        SideShow_Application_t* CurrApp;
        GUID_t                  ApplicationID;
 
-       Endpoint_Read_Stream_LE(&ApplicationID, sizeof(GUID_t));
+       Endpoint_Read_Stream_LE(&ApplicationID, sizeof(GUID_t), NULL);
 
        CurrApp = SideShow_GetApplicationFromGUID(&ApplicationID);
 
@@ -352,23 +353,23 @@ static void SideShow_AddApplication(SideShow_PacketHeader_t* const PacketHeader)
        {
                PacketHeader->Length -= sizeof(SideShow_PacketHeader_t) + sizeof(GUID_t);
 
-               Endpoint_Discard_Stream(PacketHeader->Length);
+               Endpoint_Discard_Stream(PacketHeader->Length, NULL);
                Endpoint_ClearOUT();
 
-               PacketHeader->Type.NAK = true;
+               PacketHeader->Type.TypeFields.NAK = true;
        }
        else
        {
                CurrApp->ApplicationID = ApplicationID;
-               Endpoint_Read_Stream_LE(&CurrApp->EndpointID, sizeof(GUID_t));
+               Endpoint_Read_Stream_LE(&CurrApp->EndpointID, sizeof(GUID_t), NULL);
                SideShow_Read_Unicode_String(&CurrApp->ApplicationName, sizeof(CurrApp->ApplicationName.UnicodeString));
-               Endpoint_Read_Stream_LE(&CurrApp->CachePolicy, sizeof(uint32_t));
-               Endpoint_Read_Stream_LE(&CurrApp->OnlineOnly, sizeof(uint32_t));
+               Endpoint_Read_Stream_LE(&CurrApp->CachePolicy, sizeof(uint32_t), NULL);
+               Endpoint_Read_Stream_LE(&CurrApp->OnlineOnly, sizeof(uint32_t), NULL);
                SideShow_Discard_Byte_Stream();
                SideShow_Discard_Byte_Stream();
                SideShow_Discard_Byte_Stream();
                Endpoint_ClearOUT();
-               
+
                CurrApp->InUse = true;
                CurrApp->HaveContent = false;
                CurrApp->CurrentContentID = 1;
@@ -377,15 +378,15 @@ static void SideShow_AddApplication(SideShow_PacketHeader_t* const PacketHeader)
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t);
 
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
-       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
        Endpoint_ClearIN();
 }
 
 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), NULL);
        Endpoint_ClearOUT();
 
        SideShow_Application_t* AppToDelete = SideShow_GetApplicationFromGUID(&ApplicationGUID);
@@ -393,24 +394,24 @@ 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);
 
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
-       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
        Endpoint_ClearIN();
 }
 
 static void SideShow_DeleteAllApplications(SideShow_PacketHeader_t* const PacketHeader)
 {
        Endpoint_ClearOUT();
-       
+
        for (uint8_t App = 0; App < MAX_APPLICATIONS; App++)
          InstalledApplications[App].InUse = false;
 
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
-       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
        Endpoint_ClearIN();
 }
 
@@ -419,28 +420,28 @@ 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));
-       
+
+       Endpoint_Read_Stream_LE(&ApplicationID, sizeof(GUID_t), NULL);
+       Endpoint_Read_Stream_LE(&EndpointID, sizeof(GUID_t), NULL);
+
        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);
 
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
-       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
        Endpoint_ClearIN();
 }
 
@@ -450,22 +451,22 @@ static void SideShow_DeleteContent(SideShow_PacketHeader_t* const PacketHeader)
        GUID_t   EndpointID;
        uint32_t ContentID;
 
-       Endpoint_Read_Stream_LE(&ApplicationID, sizeof(GUID_t));
-       Endpoint_Read_Stream_LE(&EndpointID, sizeof(GUID_t));
-       Endpoint_Read_Stream_LE(&ContentID, sizeof(uint32_t));
+       Endpoint_Read_Stream_LE(&ApplicationID, sizeof(GUID_t), NULL);
+       Endpoint_Read_Stream_LE(&EndpointID, sizeof(GUID_t), NULL);
+       Endpoint_Read_Stream_LE(&ContentID, sizeof(uint32_t), NULL);
        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);
-       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
        Endpoint_ClearIN();
 }
 
@@ -474,20 +475,21 @@ static void SideShow_DeleteAllContent(SideShow_PacketHeader_t* const PacketHeade
        GUID_t ApplicationID;
        GUID_t EndpointID;
 
-       Endpoint_Read_Stream_LE(&ApplicationID, sizeof(GUID_t));
-       Endpoint_Read_Stream_LE(&EndpointID, sizeof(GUID_t));
+       Endpoint_Read_Stream_LE(&ApplicationID, sizeof(GUID_t), NULL);
+       Endpoint_Read_Stream_LE(&EndpointID, sizeof(GUID_t), NULL);
        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_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
+       Endpoint_ClearIN();
 }
+