aboutsummaryrefslogtreecommitdiffstats
path: root/Demos/Device/Incomplete
diff options
context:
space:
mode:
Diffstat (limited to 'Demos/Device/Incomplete')
-rw-r--r--Demos/Device/Incomplete/Sideshow/Lib/SideshowCommands.c74
-rw-r--r--Demos/Device/Incomplete/Sideshow/Lib/SideshowCommon.c12
-rw-r--r--Demos/Device/Incomplete/Sideshow/Lib/SideshowContent.c14
-rw-r--r--Demos/Device/Incomplete/Sideshow/makefile1
-rw-r--r--Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.c77
-rw-r--r--Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.h3
6 files changed, 91 insertions, 90 deletions
diff --git a/Demos/Device/Incomplete/Sideshow/Lib/SideshowCommands.c b/Demos/Device/Incomplete/Sideshow/Lib/SideshowCommands.c
index 5e713cb39..3aa00957f 100644
--- a/Demos/Device/Incomplete/Sideshow/Lib/SideshowCommands.c
+++ b/Demos/Device/Incomplete/Sideshow/Lib/SideshowCommands.c
@@ -48,7 +48,7 @@ void Sideshow_ProcessCommandPacket(void)
SideShow_PacketHeader_t PacketHeader;
Endpoint_SelectEndpoint(SIDESHOW_OUT_EPNUM);
- Endpoint_Read_Stream_LE(&PacketHeader, sizeof(SideShow_PacketHeader_t));
+ Endpoint_Read_Stream_LE(&PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
PacketHeader.Type.TypeFields.Response = true;
@@ -104,14 +104,14 @@ 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_Write_Stream_LE(&PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
Endpoint_ClearIN();
printf(" UNK");
@@ -123,7 +123,7 @@ 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_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();
}
@@ -163,7 +163,7 @@ static void SideShow_SetCurrentUser(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();
}
@@ -172,7 +172,7 @@ 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);
@@ -255,7 +255,7 @@ static void SideShow_GetCapabilities(SideShow_PacketHeader_t* const PacketHeader
}
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))
{
@@ -263,12 +263,12 @@ static void SideShow_GetCapabilities(SideShow_PacketHeader_t* const PacketHeader
{
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);
@@ -289,7 +289,7 @@ static void SideShow_GetString(SideShow_PacketHeader_t* const PacketHeader,
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();
}
@@ -310,13 +310,13 @@ static void SideShow_GetApplicationOrder(SideShow_PacketHeader_t* const PacketHe
sizeof(uint32_t) + (TotalApplications * sizeof(GUID_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_Write_DWord_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();
@@ -331,9 +331,9 @@ static void SideShow_GetSupportedEndpoints(SideShow_PacketHeader_t* const Packet
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_Stream_LE(PacketHeader, sizeof(SideShow_PacketHeader_t), NULL);
Endpoint_Write_DWord_LE(1);
- Endpoint_Write_Stream_LE(&SupportedEndpointGUID, sizeof(GUID_t));
+ 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,10 +361,10 @@ 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();
@@ -378,7 +378,7 @@ 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();
}
@@ -386,7 +386,7 @@ static void SideShow_DeleteApplication(SideShow_PacketHeader_t* const PacketHead
{
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,7 +399,7 @@ 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();
}
@@ -411,7 +411,7 @@ static void SideShow_DeleteAllApplications(SideShow_PacketHeader_t* const Packet
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();
}
@@ -421,8 +421,8 @@ static void SideShow_AddContent(SideShow_PacketHeader_t* const PacketHeader)
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);
@@ -441,7 +441,7 @@ static void SideShow_AddContent(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();
}
@@ -451,9 +451,9 @@ 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);
@@ -466,7 +466,7 @@ static void SideShow_DeleteContent(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();
}
@@ -475,8 +475,8 @@ 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);
@@ -489,7 +489,7 @@ static void SideShow_DeleteAllContent(SideShow_PacketHeader_t* const PacketHeade
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();
}
diff --git a/Demos/Device/Incomplete/Sideshow/Lib/SideshowCommon.c b/Demos/Device/Incomplete/Sideshow/Lib/SideshowCommon.c
index 78de4937a..982df292a 100644
--- a/Demos/Device/Incomplete/Sideshow/Lib/SideshowCommon.c
+++ b/Demos/Device/Incomplete/Sideshow/Lib/SideshowCommon.c
@@ -36,13 +36,13 @@ uint16_t SideShow_Read_Unicode_String(void* const UnicodeString,
Unicode_String_t* const UnicodeStruct = (Unicode_String_t*)UnicodeString;
uint32_t UnicodeCharsToRead;
- Endpoint_Read_Stream_LE(&UnicodeCharsToRead, sizeof(uint32_t));
+ Endpoint_Read_Stream_LE(&UnicodeCharsToRead, sizeof(uint32_t), NULL);
int UnicodeData[UnicodeCharsToRead];
UnicodeStruct->LengthInBytes = (UnicodeCharsToRead << 1);
- Endpoint_Read_Stream_LE(&UnicodeData, UnicodeStruct->LengthInBytes);
+ Endpoint_Read_Stream_LE(&UnicodeData, UnicodeStruct->LengthInBytes, NULL);
if (UnicodeStruct->LengthInBytes > MaxBytes)
UnicodeStruct->LengthInBytes = MaxBytes;
@@ -58,15 +58,15 @@ void SideShow_Write_Unicode_String(void* const UnicodeString)
uint32_t StringSizeInCharacters = (UnicodeStruct->LengthInBytes >> 1);
- Endpoint_Write_Stream_LE(&StringSizeInCharacters, sizeof(uint32_t));
- Endpoint_Write_Stream_LE(&UnicodeStruct->UnicodeString, UnicodeStruct->LengthInBytes);
+ Endpoint_Write_Stream_LE(&StringSizeInCharacters, sizeof(uint32_t), NULL);
+ Endpoint_Write_Stream_LE(&UnicodeStruct->UnicodeString, UnicodeStruct->LengthInBytes, NULL);
}
void SideShow_Discard_Byte_Stream(void)
{
uint32_t StreamSize;
- Endpoint_Read_Stream_LE(&StreamSize, sizeof(uint32_t));
- Endpoint_Discard_Stream(StreamSize);
+ Endpoint_Read_Stream_LE(&StreamSize, sizeof(uint32_t), NULL);
+ Endpoint_Discard_Stream(StreamSize, NULL);
}
diff --git a/Demos/Device/Incomplete/Sideshow/Lib/SideshowContent.c b/Demos/Device/Incomplete/Sideshow/Lib/SideshowContent.c
index 60fdf1e94..1159f4f49 100644
--- a/Demos/Device/Incomplete/Sideshow/Lib/SideshowContent.c
+++ b/Demos/Device/Incomplete/Sideshow/Lib/SideshowContent.c
@@ -37,19 +37,19 @@ bool SideShow_AddSimpleContent(SideShow_PacketHeader_t* const PacketHeader,
uint32_t ContentSize;
uint32_t ContentID;
- Endpoint_Read_Stream_LE(&ContentID, sizeof(uint32_t));
+ Endpoint_Read_Stream_LE(&ContentID, sizeof(uint32_t), NULL);
PacketHeader->Length -= sizeof(uint32_t);
if (Application->CurrentContentID != ContentID)
{
- Endpoint_Discard_Stream(PacketHeader->Length);
+ Endpoint_Discard_Stream(PacketHeader->Length, NULL);
return false;
}
- Endpoint_Read_Stream_LE(&ContentSize, sizeof(uint32_t));
- Endpoint_Read_Stream_LE(&Application->CurrentContent, sizeof(XML_START_TAG) - 1);
+ Endpoint_Read_Stream_LE(&ContentSize, sizeof(uint32_t), NULL);
+ Endpoint_Read_Stream_LE(&Application->CurrentContent, (sizeof(XML_START_TAG) - 1), NULL);
PacketHeader->Length -= sizeof(uint32_t) + (sizeof(XML_START_TAG) - 1);
@@ -57,14 +57,14 @@ bool SideShow_AddSimpleContent(SideShow_PacketHeader_t* const PacketHeader,
{
SideShow_ProcessXMLContent(&Application->CurrentContent, (ContentSize - (sizeof(XML_END_TAG) - 1)));
- Endpoint_Discard_Stream(sizeof(XML_END_TAG) - 1);
+ Endpoint_Discard_Stream((sizeof(XML_END_TAG) - 1), NULL);
Application->HaveContent = true;
}
else
{
printf(" BINARY");
- Endpoint_Discard_Stream(ContentSize);
+ Endpoint_Discard_Stream(ContentSize, NULL);
}
return true;
@@ -74,6 +74,6 @@ static void SideShow_ProcessXMLContent(void* ContentData,
uint32_t ContentSize)
{
printf(" XML");
- Endpoint_Discard_Stream(ContentSize);
+ Endpoint_Discard_Stream(ContentSize, NULL);
}
diff --git a/Demos/Device/Incomplete/Sideshow/makefile b/Demos/Device/Incomplete/Sideshow/makefile
index 6da7dd700..81756c12b 100644
--- a/Demos/Device/Incomplete/Sideshow/makefile
+++ b/Demos/Device/Incomplete/Sideshow/makefile
@@ -121,7 +121,6 @@ LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8
LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1
LUFA_OPTS += -D USE_FLASH_DESCRIPTORS
LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
-LUFA_OPTS += -D NO_STREAM_CALLBACKS
# Create the LUFA source path variables by including the LUFA root makefile
diff --git a/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.c b/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.c
index a23521e16..3c5cf47d5 100644
--- a/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.c
+++ b/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.c
@@ -64,6 +64,8 @@ bool IsTMCBulkOUTReset = false;
/** Last used tag value for data transfers */
uint8_t CurrentTransferTag = 0;
+/** Length of last data transfer, for reporting to the host in case an in-progress tranfer is aborted */
+uint32_t LastTransferLength = 0;
/** Main program entry point. This routine contains the overall program flow, including initial
* setup of all components and the main program loop.
@@ -190,7 +192,7 @@ void EVENT_USB_Device_ControlRequest(void)
/* Write the request response bytes */
Endpoint_Write_Byte(TMCRequestStatus);
Endpoint_Write_Word_LE(0);
- Endpoint_Write_DWord_LE(0); // TODO - Last transfer length
+ Endpoint_Write_DWord_LE(LastTransferLength);
Endpoint_ClearIN();
Endpoint_ClearStatusStage();
@@ -245,7 +247,7 @@ void EVENT_USB_Device_ControlRequest(void)
/* Write the request response bytes */
Endpoint_Write_Byte(TMCRequestStatus);
Endpoint_Write_Word_LE(0);
- Endpoint_Write_DWord_LE(0); // TODO - Last transfer length
+ Endpoint_Write_DWord_LE(LastTransferLength);
Endpoint_ClearIN();
Endpoint_ClearStatusStage();
@@ -324,6 +326,7 @@ void TMC_Task(void)
return;
TMC_MessageHeader_t MessageHeader;
+ uint16_t BytesTransferred;
/* Try to read in a TMC message from the interface, process if one is available */
if (ReadTMCHeader(&MessageHeader))
@@ -334,16 +337,33 @@ void TMC_Task(void)
switch (MessageHeader.MessageID)
{
case TMC_MESSAGEID_DEV_DEP_MSG_OUT:
- Endpoint_Discard_Stream(MessageHeader.TransferSize, StreamCallback_AbortOUTOnRequest);
+ BytesTransferred = 0;
+ while (Endpoint_Discard_Stream(MessageHeader.TransferSize, &BytesTransferred) ==
+ ENDPOINT_RWSTREAM_IncompleteTransfer)
+ {
+ if (IsTMCBulkOUTReset)
+ break;
+ }
+ LastTransferLength = BytesTransferred;
+
Endpoint_ClearOUT();
break;
case TMC_MESSAGEID_DEV_DEP_MSG_IN:
Endpoint_ClearOUT();
MessageHeader.TransferSize = 3;
+ MessageHeader.MessageIDSpecific.DeviceOUT.LastMessageTransaction = true;
WriteTMCHeader(&MessageHeader);
- Endpoint_Write_Stream_LE("TMC", 3, StreamCallback_AbortINOnRequest);
+ BytesTransferred = 0;
+ while (Endpoint_Write_Stream_LE("TMC", MessageHeader.TransferSize, &BytesTransferred) ==
+ ENDPOINT_RWSTREAM_IncompleteTransfer)
+ {
+ if (IsTMCBulkINReset)
+ break;
+ }
+ LastTransferLength = BytesTransferred;
+
Endpoint_ClearIN();
break;
default:
@@ -367,6 +387,8 @@ void TMC_Task(void)
*/
bool ReadTMCHeader(TMC_MessageHeader_t* const MessageHeader)
{
+ uint16_t BytesTransferred;
+
/* Select the Data Out endpoint */
Endpoint_SelectEndpoint(TMC_OUT_EPNUM);
@@ -375,7 +397,13 @@ bool ReadTMCHeader(TMC_MessageHeader_t* const MessageHeader)
return false;
/* Read in the header of the command from the host */
- Endpoint_Read_Stream_LE(MessageHeader, sizeof(TMC_MessageHeader_t), StreamCallback_AbortOUTOnRequest);
+ BytesTransferred = 0;
+ while (Endpoint_Read_Stream_LE(MessageHeader, sizeof(TMC_MessageHeader_t), &BytesTransferred) ==
+ ENDPOINT_RWSTREAM_IncompleteTransfer)
+ {
+ if (IsTMCBulkOUTReset)
+ break;
+ }
/* Store the new command tag value for later use */
CurrentTransferTag = MessageHeader->Tag;
@@ -386,9 +414,7 @@ bool ReadTMCHeader(TMC_MessageHeader_t* const MessageHeader)
bool WriteTMCHeader(TMC_MessageHeader_t* const MessageHeader)
{
- /* Compute the next transfer tag value, must be between 1 and 254 */
- if (++CurrentTransferTag == 0xFF)
- CurrentTransferTag = 1;
+ uint16_t BytesTransferred;
/* Set the message tag of the command header */
MessageHeader->Tag = CurrentTransferTag;
@@ -398,35 +424,14 @@ bool WriteTMCHeader(TMC_MessageHeader_t* const MessageHeader)
Endpoint_SelectEndpoint(TMC_IN_EPNUM);
/* Send the command header to the host */
- Endpoint_Write_Stream_LE(MessageHeader, sizeof(TMC_MessageHeader_t), StreamCallback_AbortINOnRequest);
+ BytesTransferred = 0;
+ while (Endpoint_Write_Stream_LE(MessageHeader, sizeof(TMC_MessageHeader_t), &BytesTransferred) ==
+ ENDPOINT_RWSTREAM_IncompleteTransfer)
+ {
+ if (IsTMCBulkINReset)
+ break;
+ }
/* Indicate if the command has been aborted or not */
return !(IsTMCBulkINReset);
}
-
-/** Stream callback function for the Endpoint stream write functions. This callback will abort the current stream transfer
- * if a TMC Abort Bulk IN request has been issued to the control endpoint.
- */
-uint8_t StreamCallback_AbortINOnRequest(void)
-{
- /* Abort if a TMC Bulk Data IN abort was received */
- if (IsTMCBulkINReset)
- return STREAMCALLBACK_Abort;
-
- /* Continue with the current stream operation */
- return STREAMCALLBACK_Continue;
-}
-
-/** Stream callback function for the Endpoint stream read functions. This callback will abort the current stream transfer
- * if a TMC Abort Bulk OUT request has been issued to the control endpoint.
- */
-uint8_t StreamCallback_AbortOUTOnRequest(void)
-{
- /* Abort if a TMC Bulk Data IN abort was received */
- if (IsTMCBulkOUTReset)
- return STREAMCALLBACK_Abort;
-
- /* Continue with the current stream operation */
- return STREAMCALLBACK_Continue;
-}
-
diff --git a/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.h b/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.h
index a163df66f..42e659882 100644
--- a/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.h
+++ b/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.h
@@ -150,8 +150,5 @@
void EVENT_USB_Device_ConfigurationChanged(void);
void EVENT_USB_Device_ControlRequest(void);
- uint8_t StreamCallback_AbortINOnRequest(void);
- uint8_t StreamCallback_AbortOUTOnRequest(void);
-
#endif