Add LUFA-111009-BETA tag.
[pub/USBasp.git] / Demos / Device / Incomplete / Sideshow / Lib / SideshowCommands.c
index 5bce088..d1aea1e 100644 (file)
@@ -1,21 +1,21 @@
 /*
              LUFA Library
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2010.
-              
+     Copyright (C) Dean Camera, 2011.
+
   dean [at] fourwalledcubicle [dot] com
   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
   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
   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
   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"};
 
 Unicode_String_t SupportedLanguage = {LengthInBytes: sizeof(L"en-US:1"),
                                       UnicodeString: L"en-US:1"};
-                                                                         
+
 void Sideshow_ProcessCommandPacket(void)
 {
        SideShow_PacketHeader_t PacketHeader;
 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));
 
 
        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;
                case SIDESHOW_CMD_GET_CAPABILITIES:
                        SideShow_GetCapabilities(&PacketHeader);
-                       break;                  
+                       break;
                case SIDESHOW_CMD_GET_DEVICE_NAME:
                        SideShow_GetString(&PacketHeader, &DeviceName);
                        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;
                case SIDESHOW_CMD_DELETE_ALL_CONTENT:
                        SideShow_DeleteAllContent(&PacketHeader);
-                       break;          
+                       break;
                case SIDESHOW_CMD_DELETE_APPLICATION:
                        SideShow_DeleteApplication(&PacketHeader);
                        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);
 
                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);
                        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();
                        Endpoint_ClearIN();
-                       
+
                        printf(" UNK");
        }
 }
                        printf(" UNK");
        }
 }
@@ -122,8 +122,8 @@ static void SideShow_Ping(SideShow_PacketHeader_t* const PacketHeader)
 {
        Endpoint_ClearOUT();
 
 {
        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();
 }
 
        Endpoint_ClearIN();
 }
 
@@ -131,15 +131,15 @@ static void SideShow_Sync(SideShow_PacketHeader_t* const PacketHeader)
 {
        GUID_t ProtocolGUID;
 
 {
        GUID_t ProtocolGUID;
 
-       Endpoint_Read_Stream_LE(&ProtocolGUID, sizeof(GUID_t));
+       Endpoint_Read_Stream_LE(&ProtocolGUID, sizeof(GUID_t), NULL);
        Endpoint_ClearOUT();
        Endpoint_ClearOUT();
-       
+
        if (!(GUID_COMPARE(&ProtocolGUID, (uint32_t[])STANDARD_PROTOCOL_GUID)))
        if (!(GUID_COMPARE(&ProtocolGUID, (uint32_t[])STANDARD_PROTOCOL_GUID)))
-         PacketHeader->Type.NAK = true;
-       
+         PacketHeader->Type.TypeFields.NAK = true;
+
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
        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();
 }
 
        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);
        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();
 }
        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();
 {
        SideShow_Read_Unicode_String(&UserSID, sizeof(UserSID.UnicodeString));
        Endpoint_ClearOUT();
-       
+
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t);
 
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
        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();
 }
 
        Endpoint_ClearIN();
 }
 
@@ -172,9 +172,9 @@ static void SideShow_GetCapabilities(SideShow_PacketHeader_t* const PacketHeader
        SideShow_PropertyKey_t  Property;
        SideShow_PropertyData_t PropertyData;
 
        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();
        Endpoint_ClearOUT();
-       
+
        printf(" ID: %lu", Property.PropertyID);
 
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t);
        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);
                                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_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_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_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_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_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;
                        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;
                                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);
                                PropertyData.DataType    = VT_UI4;
                                PropertyData.Data.Data32 = GenericDevice;
                                PacketHeader->Length += sizeof(uint32_t);
-                               
+
                                break;
                }
                                break;
                }
-       }       
+       }
        else
        {
        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],
                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_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:
        {
                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:
                                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;
                }
        }
                                break;
                        case VT_LPWSTR:
                                SideShow_Write_Unicode_String((Unicode_String_t*)PropertyData.Data.Data16);
                                break;
                }
        }
-       
+
        Endpoint_ClearIN();
        return;
 }
 
        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_ClearOUT();
 
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t) +
                               sizeof(uint32_t) + ((Unicode_String_t*)UnicodeStruct)->LengthInBytes;
-       
+
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
        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();
 }
        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;
 static void SideShow_GetApplicationOrder(SideShow_PacketHeader_t* const PacketHeader)
 {
        uint8_t  TotalApplications = 0;
-                  
+
        Endpoint_ClearOUT();
 
        for (uint8_t App = 0; App < MAX_APPLICATIONS; App++)
        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));
 
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t) +
                               sizeof(uint32_t) + (TotalApplications * sizeof(GUID_t));
-       
+
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
        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)
        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();
        }
 
        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_ClearOUT();
 
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t) + sizeof(uint32_t) + sizeof(GUID_t);
-       
+
        Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
        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();
 }
 
        Endpoint_ClearIN();
 }
 
@@ -341,7 +342,7 @@ static void SideShow_AddApplication(SideShow_PacketHeader_t* const PacketHeader)
        SideShow_Application_t* CurrApp;
        GUID_t                  ApplicationID;
 
        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);
 
 
        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);
 
        {
                PacketHeader->Length -= sizeof(SideShow_PacketHeader_t) + sizeof(GUID_t);
 
-               Endpoint_Discard_Stream(PacketHeader->Length);
+               Endpoint_Discard_Stream(PacketHeader->Length, NULL);
                Endpoint_ClearOUT();
 
                Endpoint_ClearOUT();
 
-               PacketHeader->Type.NAK = true;
+               PacketHeader->Type.TypeFields.NAK = true;
        }
        else
        {
                CurrApp->ApplicationID = ApplicationID;
        }
        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));
                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();
                SideShow_Discard_Byte_Stream();
                SideShow_Discard_Byte_Stream();
                SideShow_Discard_Byte_Stream();
                Endpoint_ClearOUT();
-               
+
                CurrApp->InUse = true;
                CurrApp->HaveContent = false;
                CurrApp->CurrentContentID = 1;
                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);
        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_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);
        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
        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);
 
        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();
        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);
        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();
 }
 
        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;
        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);
        Application = SideShow_GetApplicationFromGUID(&ApplicationID);
-       
+
        if (Application == NULL)
        {
                SideShow_Discard_Byte_Stream();
        if (Application == NULL)
        {
                SideShow_Discard_Byte_Stream();
-               PacketHeader->Type.NAK = true;
+               PacketHeader->Type.TypeFields.NAK = true;
        }
        else if (!(SideShow_AddSimpleContent(PacketHeader, Application)))
        {
        }
        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_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();
 }
 
        Endpoint_ClearIN();
 }
 
@@ -450,22 +451,22 @@ static void SideShow_DeleteContent(SideShow_PacketHeader_t* const PacketHeader)
        GUID_t   EndpointID;
        uint32_t ContentID;
 
        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();
        Endpoint_ClearOUT();
-       
+
        SideShow_Application_t* Application = SideShow_GetApplicationFromGUID(&ApplicationID);
        SideShow_Application_t* Application = SideShow_GetApplicationFromGUID(&ApplicationID);
-       
+
        if ((Application != NULL) && (Application->CurrentContentID == ContentID))
          Application->HaveContent = false;
        else
        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);
        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();
 }
 
        Endpoint_ClearIN();
 }
 
@@ -474,20 +475,21 @@ static void SideShow_DeleteAllContent(SideShow_PacketHeader_t* const PacketHeade
        GUID_t ApplicationID;
        GUID_t EndpointID;
 
        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);
        Endpoint_ClearOUT();
 
        SideShow_Application_t* Application = SideShow_GetApplicationFromGUID(&ApplicationID);
-       
+
        if (Application != NULL)
          Application->HaveContent = false;
        else
        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);
 
        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();
 }
 }
+