aboutsummaryrefslogtreecommitdiffstats
path: root/Demos
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2010-07-27 11:26:47 +0000
committerDean Camera <dean@fourwalledcubicle.com>2010-07-27 11:26:47 +0000
commitbe2a7d45989f5f57b326589350a6ce5bbc835b5c (patch)
tree51785a3fbce297964c4268080e09b237098d2a79 /Demos
parentcd39c38d5f39d89da989859afd72576b4c1532aa (diff)
downloadlufa-be2a7d45989f5f57b326589350a6ce5bbc835b5c.tar.gz
lufa-be2a7d45989f5f57b326589350a6ce5bbc835b5c.tar.bz2
lufa-be2a7d45989f5f57b326589350a6ce5bbc835b5c.zip
Move over message ID specific header data to unions inside the standard TMC header structure, so that all header data is read in one chunk in the incomplete TMC demo.
Diffstat (limited to 'Demos')
-rw-r--r--Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.c8
-rw-r--r--Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.h35
2 files changed, 36 insertions, 7 deletions
diff --git a/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.c b/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.c
index e00254211..ab98411b7 100644
--- a/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.c
+++ b/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.c
@@ -218,7 +218,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
else
{
/* Indicate that all in-progress/pending data IN requests should be aborted */
- IsTMCBulkINReset = true;
+ IsTMCBulkINReset = true;
/* Save the split request for later checking when a new request is received */
RequestInProgess = Req_InitiateAbortBulkIn;
@@ -338,7 +338,7 @@ void TMC_Task(void)
Endpoint_Read_Stream_LE(&MessageHeader, sizeof(MessageHeader), StreamCallback_AbortOUTOnRequest);
CurrentTransferTag = MessageHeader.Tag;
-
+
switch (MessageHeader.MessageID)
{
case TMC_MESSAGEID_DEV_DEP_MSG_OUT:
@@ -351,6 +351,10 @@ void TMC_Task(void)
break;
case TMC_MESSAGEID_DEV_VENDOR_IN:
+
+ break;
+ default:
+ Endpoint_StallTransaction();
break;
}
diff --git a/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.h b/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.h
index 2d5f82f46..191eb40a6 100644
--- a/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.h
+++ b/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.h
@@ -102,15 +102,40 @@
uint8_t Reserved2[6];
uint8_t Reserved3[12];
} TMC_Capabilities_t;
+
+ typedef struct
+ {
+ unsigned char LastMessageTransaction : 1;
+ unsigned char Reserved : 7;
+
+ uint8_t Reserved2[3];
+ } TMC_DevOUTMessageHeader_t;
typedef struct
{
- uint8_t MessageID;
- uint8_t Tag;
- uint8_t InverseTag;
- uint8_t Reserved;
+ unsigned char TermCharEnabled : 1;
+ unsigned char Reserved : 7;
+
+ uint8_t TermChar;
+ uint8_t Reserved2[2];
+ } TMC_DevINMessageHeader_t;
+
+ typedef struct
+ {
+ uint8_t MessageID;
+ uint8_t Tag;
+ uint8_t InverseTag;
+ uint8_t Reserved;
+ uint32_t TransferSize;
+
+ union
+ {
+ TMC_DevOUTMessageHeader_t DeviceOUT;
+ TMC_DevINMessageHeader_t DeviceIN;
+ uint32_t VendorSpecific;
+ } MessageIDSpecific;
} TMC_MessageHeader_t;
-
+
/* Function Prototypes: */
void SetupHardware(void);
void TMC_Task(void);