X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/98947e3750e07054f9da46af82225e9ef89ed656..eea687e6d9524e252d3ae50f06b33f4e753dcf2b:/Demos/Device/Incomplete/Sideshow/Lib/SideshowCommands.c?ds=sidebyside diff --git a/Demos/Device/Incomplete/Sideshow/Lib/SideshowCommands.c b/Demos/Device/Incomplete/Sideshow/Lib/SideshowCommands.c index eebc2ef35..d1aea1efd 100644 --- a/Demos/Device/Incomplete/Sideshow/Lib/SideshowCommands.c +++ b/Demos/Device/Incomplete/Sideshow/Lib/SideshowCommands.c @@ -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,14 +42,14 @@ 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)); - + + 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.TypeFields.NAK = true; - - 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(); - + 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.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,41 +241,41 @@ 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.TypeFields.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)); - + 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; } @@ -287,9 +287,9 @@ static void SideShow_GetString(SideShow_PacketHeader_t* const PacketHeader, 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(); } @@ -297,7 +297,7 @@ static void SideShow_GetString(SideShow_PacketHeader_t* const PacketHeader, static void SideShow_GetApplicationOrder(SideShow_PacketHeader_t* const PacketHeader) { uint8_t TotalApplications = 0; - + Endpoint_ClearOUT(); for (uint8_t App = 0; App < MAX_APPLICATIONS; App++) @@ -308,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(); @@ -329,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(); } @@ -342,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); @@ -353,7 +353,7 @@ 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.TypeFields.NAK = true; @@ -361,15 +361,15 @@ static void SideShow_AddApplication(SideShow_PacketHeader_t* const PacketHeader) 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; @@ -378,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); @@ -399,19 +399,19 @@ static void SideShow_DeleteApplication(SideShow_PacketHeader_t* const PacketHead 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(); } @@ -420,12 +420,12 @@ 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(); @@ -435,13 +435,13 @@ static void SideShow_AddContent(SideShow_PacketHeader_t* const PacketHeader) { 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(); } @@ -451,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.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(); } @@ -475,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.TypeFields.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(); } +