/*
              LUFA Library
-     Copyright (C) Dean Camera, 2011.
+     Copyright (C) Dean Camera, 2012.
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2012  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
 {
        SideShow_PacketHeader_t PacketHeader;
 
-       Endpoint_SelectEndpoint(SIDESHOW_OUT_EPNUM);
-       Endpoint_Read_Stream_LE(&PacketHeader, sizeof(SideShow_PacketHeader_t));
+       Endpoint_SelectEndpoint(SIDESHOW_OUT_EPADDR);
+       Endpoint_Read_Stream_LE(&PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
 
        PacketHeader.Type.TypeFields.Response = true;
 
                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.TypeFields.NAK = true;
 
-                       Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
-                       Endpoint_Write_Stream_LE(&PacketHeader, sizeof(SideShow_PacketHeader_t));
+                       Endpoint_SelectEndpoint(SIDESHOW_IN_EPADDR);
+                       Endpoint_Write_Stream_LE(&PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
                        Endpoint_ClearIN();
 
                        printf(" UNK");
 {
        Endpoint_ClearOUT();
 
-       Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
-       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));
+       Endpoint_SelectEndpoint(SIDESHOW_IN_EPADDR);
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
        Endpoint_ClearIN();
 }
 
 {
        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.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_SelectEndpoint(SIDESHOW_IN_EPADDR);
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
+       Endpoint_Write_Stream_LE(&ProtocolGUID, sizeof(GUID_t), NULL);
        Endpoint_ClearIN();
 }
 
 
        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_SelectEndpoint(SIDESHOW_IN_EPADDR);
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
        SideShow_Write_Unicode_String(&UserSID);
        Endpoint_ClearIN();
 }
 
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t);
 
-       Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
-       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));
+       Endpoint_SelectEndpoint(SIDESHOW_IN_EPADDR);
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
        Endpoint_ClearIN();
 }
 
        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);
                                           Property.PropertyGUID.Chunks[2],  Property.PropertyGUID.Chunks[3]);
        }
 
-       Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
-       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));
+       Endpoint_SelectEndpoint(SIDESHOW_IN_EPADDR);
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
 
        if (!(PacketHeader->Type.TypeFields.NAK))
        {
                {
                        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);
        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_SelectEndpoint(SIDESHOW_IN_EPADDR);
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
        SideShow_Write_Unicode_String(UnicodeStruct);
        Endpoint_ClearIN();
 }
        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_SelectEndpoint(SIDESHOW_IN_EPADDR);
+       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();
 
        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_SelectEndpoint(SIDESHOW_IN_EPADDR);
+       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();
 }
 
        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);
 
        {
                PacketHeader->Length -= sizeof(SideShow_PacketHeader_t) + sizeof(GUID_t);
 
-               Endpoint_Discard_Stream(PacketHeader->Length);
+               Endpoint_Discard_Stream(PacketHeader->Length, NULL);
                Endpoint_ClearOUT();
 
                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();
 
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t);
 
-       Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
-       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));
+       Endpoint_SelectEndpoint(SIDESHOW_IN_EPADDR);
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
        Endpoint_ClearIN();
 }
 
 {
        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);
 
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t);
 
-       Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
-       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));
+       Endpoint_SelectEndpoint(SIDESHOW_IN_EPADDR);
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
        Endpoint_ClearIN();
 }
 
        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_SelectEndpoint(SIDESHOW_IN_EPADDR);
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
        Endpoint_ClearIN();
 }
 
        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);
 
 
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t);
 
-       Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
-       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));
+       Endpoint_SelectEndpoint(SIDESHOW_IN_EPADDR);
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
        Endpoint_ClearIN();
 }
 
        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);
 
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t);
 
-       Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
-       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));
+       Endpoint_SelectEndpoint(SIDESHOW_IN_EPADDR);
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
        Endpoint_ClearIN();
 }
 
        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);
 
        PacketHeader->Length = sizeof(SideShow_PacketHeader_t);
 
-       Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM);
-       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t));
+       Endpoint_SelectEndpoint(SIDESHOW_IN_EPADDR);
+       Endpoint_Write_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
        Endpoint_ClearIN();
 }