X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/98947e3750e07054f9da46af82225e9ef89ed656..c43605612d3cc18e159bc8e97c3838153ed6a258:/Demos/Device/Incomplete/Sideshow/Lib/SideshowCommands.c?ds=inline diff --git a/Demos/Device/Incomplete/Sideshow/Lib/SideshowCommands.c b/Demos/Device/Incomplete/Sideshow/Lib/SideshowCommands.c index eebc2ef35..f57b9c85a 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. - + 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,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_SelectEndpoint(SIDESHOW_OUT_EPNUM); Endpoint_Read_Stream_LE(&PacketHeader, sizeof(SideShow_PacketHeader_t)); - + 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; @@ -109,11 +109,11 @@ void Sideshow_ProcessCommandPacket(void) 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)); 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.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,22 +241,22 @@ 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)); - + if (!(PacketHeader->Type.TypeFields.NAK)) { switch (PropertyData.DataType) @@ -275,7 +275,7 @@ static void SideShow_GetCapabilities(SideShow_PacketHeader_t* const PacketHeader break; } } - + Endpoint_ClearIN(); return; } @@ -287,7 +287,7 @@ 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)); SideShow_Write_Unicode_String(UnicodeStruct); @@ -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,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) @@ -329,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); @@ -369,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; @@ -385,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); @@ -406,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; @@ -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)); - + Application = SideShow_GetApplicationFromGUID(&ApplicationID); - + if (Application == NULL) { SideShow_Discard_Byte_Stream(); @@ -435,7 +435,7 @@ static void SideShow_AddContent(SideShow_PacketHeader_t* const PacketHeader) { PacketHeader->Type.TypeFields.NAK = true; } - + Endpoint_ClearOUT(); PacketHeader->Length = sizeof(SideShow_PacketHeader_t); @@ -455,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.TypeFields.NAK = true; - + PacketHeader->Length = sizeof(SideShow_PacketHeader_t); Endpoint_SelectEndpoint(SIDESHOW_IN_EPNUM); @@ -480,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.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_ClearIN(); } +