Update UC3 platform driver support to use the bitmasks defined in the header files...
[pub/USBasp.git] / Demos / Device / Incomplete / TestAndMeasurement / TestAndMeasurement.h
index cd7dad5..53f32a2 100644 (file)
@@ -1,13 +1,13 @@
 /*\r
              LUFA Library\r
-     Copyright (C) Dean Camera, 2010.\r
+     Copyright (C) Dean Camera, 2011.\r
               \r
   dean [at] fourwalledcubicle [dot] com\r
-      www.fourwalledcubicle.com\r
+           www.lufa-lib.org\r
 */\r
 \r
 /*\r
-  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
 \r
   Permission to use, copy, modify, distribute, and sell this \r
   software and its documentation for any purpose is hereby granted\r
 \r
        /* Macros: */\r
                /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */\r
-               #define LEDMASK_USB_NOTREADY              LEDS_LED1\r
+               #define LEDMASK_USB_NOTREADY                  LEDS_LED1\r
 \r
                /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */\r
-               #define LEDMASK_USB_ENUMERATING          (LEDS_LED2 | LEDS_LED3)\r
+               #define LEDMASK_USB_ENUMERATING              (LEDS_LED2 | LEDS_LED3)\r
 \r
                /** LED mask for the library LED driver, to indicate that the USB interface is ready. */\r
-               #define LEDMASK_USB_READY                (LEDS_LED2 | LEDS_LED4)\r
+               #define LEDMASK_USB_READY                    (LEDS_LED2 | LEDS_LED4)\r
 \r
                /** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */\r
-               #define LEDMASK_USB_ERROR                (LEDS_LED1 | LEDS_LED3)\r
+               #define LEDMASK_USB_ERROR                    (LEDS_LED1 | LEDS_LED3)\r
                \r
-               #define Req_InitiateAbortBulkOut         0x01\r
-               #define Req_CheckAbortBulkOutStatus      0x02\r
-               #define Req_InitiateAbortBulkIn          0x03\r
-               #define Req_CheckAbortBulkInStatus       0x04\r
-               #define Req_InitiateClear                0x05\r
-               #define Req_CheckClearStatus             0x06\r
-               #define Req_GetCapabilities              0x07\r
-               #define Req_IndicatorPulse               0x40\r
+               /** LED mask for the library LED driver, to indicate that the USB interface is busy. */\r
+               #define LEDMASK_USB_BUSY                      LEDS_LED2\r
+\r
+               #define Req_InitiateAbortBulkOut              0x01\r
+               #define Req_CheckAbortBulkOutStatus           0x02\r
+               #define Req_InitiateAbortBulkIn               0x03\r
+               #define Req_CheckAbortBulkInStatus            0x04\r
+               #define Req_InitiateClear                     0x05\r
+               #define Req_CheckClearStatus                  0x06\r
+               #define Req_GetCapabilities                   0x07\r
+               #define Req_IndicatorPulse                    0x40\r
+               \r
+               #define TMC_STATUS_SUCCESS                    0x01\r
+               #define TMC_STATUS_PENDING                    0x02\r
+               #define TMC_STATUS_FAILED                     0x80\r
+               #define TMC_STATUS_TRANSFER_NOT_IN_PROGRESS   0x81\r
+               #define TMC_STATUS_SPLIT_NOT_IN_PROGRESS      0x82\r
+               #define TMC_STATUS_SPLIT_IN_PROGRESS          0x83\r
+               \r
+               #define TMC_MESSAGEID_DEV_DEP_MSG_OUT         0x01\r
+               #define TMC_MESSAGEID_DEV_DEP_MSG_IN          0x02\r
+               #define TMC_MESSAGEID_DEV_VENDOR_OUT          0x7E\r
+               #define TMC_MESSAGEID_DEV_VENDOR_IN           0x7F\r
+\r
+       /* Type Defines */\r
+               typedef struct\r
+               {\r
+                       uint8_t  Status;\r
+                       uint8_t  Reserved;\r
+\r
+                       uint16_t TMCVersion;\r
+                       \r
+                       struct\r
+                       {\r
+                               unsigned ListenOnly             : 1;\r
+                               unsigned TalkOnly               : 1;\r
+                               unsigned PulseIndicateSupported : 1;\r
+                               unsigned Reserved               : 5;\r
+                       } Interface;\r
+                       \r
+                       struct\r
+                       {\r
+                               unsigned SupportsAbortINOnMatch : 1;\r
+                               unsigned Reserved               : 7;\r
+                       } Device;\r
+                       \r
+                       uint8_t Reserved2[6];\r
+                       uint8_t Reserved3[12];                  \r
+               } TMC_Capabilities_t;\r
                \r
+               typedef struct\r
+               {\r
+                       unsigned LastMessageTransaction     : 1;\r
+                       unsigned Reserved                   : 7;\r
+\r
+                       uint8_t Reserved2[3];\r
+               } TMC_DevOUTMessageHeader_t;\r
+\r
+               typedef struct\r
+               {\r
+                       unsigned TermCharEnabled            : 1;\r
+                       unsigned Reserved                   : 7;\r
+\r
+                       uint8_t TermChar;\r
+                       uint8_t Reserved2[2];\r
+               } TMC_DevINMessageHeader_t;\r
+\r
+               typedef struct\r
+               {\r
+                       uint8_t  MessageID;\r
+                       uint8_t  Tag;\r
+                       uint8_t  InverseTag;\r
+                       uint8_t  Reserved;\r
+                       uint32_t TransferSize;\r
+                       \r
+                       union\r
+                       {\r
+                               TMC_DevOUTMessageHeader_t DeviceOUT;\r
+                               TMC_DevINMessageHeader_t  DeviceIN;\r
+                               uint32_t                  VendorSpecific;\r
+                       } MessageIDSpecific;\r
+               } TMC_MessageHeader_t;\r
+\r
        /* Function Prototypes: */\r
                void SetupHardware(void);\r
                void TMC_Task(void);\r
+               bool ReadTMCHeader(TMC_MessageHeader_t* const MessageHeader);\r
+               bool WriteTMCHeader(TMC_MessageHeader_t* const MessageHeader);\r
 \r
                void EVENT_USB_Device_Connect(void);\r
                void EVENT_USB_Device_Disconnect(void);\r
                void EVENT_USB_Device_ConfigurationChanged(void);\r
-               void EVENT_USB_Device_UnhandledControlRequest(void);\r
+               void EVENT_USB_Device_ControlRequest(void);\r
 \r
 #endif\r
+