X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/ac0ece0141fe9470539380fb5e5f069a0ff701ff..77a9df36a77d2523dd2bc24fa17f9f04c6c175c5:/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.h?ds=sidebyside diff --git a/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.h b/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.h index cd7dad54e..53f32a2ae 100644 --- a/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.h +++ b/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.h @@ -1,13 +1,13 @@ /* 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 software and its documentation for any purpose is hereby granted @@ -45,33 +45,110 @@ /* Macros: */ /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */ - #define LEDMASK_USB_NOTREADY LEDS_LED1 + #define LEDMASK_USB_NOTREADY LEDS_LED1 /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */ - #define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3) + #define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3) /** LED mask for the library LED driver, to indicate that the USB interface is ready. */ - #define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4) + #define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4) /** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */ - #define LEDMASK_USB_ERROR (LEDS_LED1 | LEDS_LED3) + #define LEDMASK_USB_ERROR (LEDS_LED1 | LEDS_LED3) - #define Req_InitiateAbortBulkOut 0x01 - #define Req_CheckAbortBulkOutStatus 0x02 - #define Req_InitiateAbortBulkIn 0x03 - #define Req_CheckAbortBulkInStatus 0x04 - #define Req_InitiateClear 0x05 - #define Req_CheckClearStatus 0x06 - #define Req_GetCapabilities 0x07 - #define Req_IndicatorPulse 0x40 + /** LED mask for the library LED driver, to indicate that the USB interface is busy. */ + #define LEDMASK_USB_BUSY LEDS_LED2 + + #define Req_InitiateAbortBulkOut 0x01 + #define Req_CheckAbortBulkOutStatus 0x02 + #define Req_InitiateAbortBulkIn 0x03 + #define Req_CheckAbortBulkInStatus 0x04 + #define Req_InitiateClear 0x05 + #define Req_CheckClearStatus 0x06 + #define Req_GetCapabilities 0x07 + #define Req_IndicatorPulse 0x40 + + #define TMC_STATUS_SUCCESS 0x01 + #define TMC_STATUS_PENDING 0x02 + #define TMC_STATUS_FAILED 0x80 + #define TMC_STATUS_TRANSFER_NOT_IN_PROGRESS 0x81 + #define TMC_STATUS_SPLIT_NOT_IN_PROGRESS 0x82 + #define TMC_STATUS_SPLIT_IN_PROGRESS 0x83 + + #define TMC_MESSAGEID_DEV_DEP_MSG_OUT 0x01 + #define TMC_MESSAGEID_DEV_DEP_MSG_IN 0x02 + #define TMC_MESSAGEID_DEV_VENDOR_OUT 0x7E + #define TMC_MESSAGEID_DEV_VENDOR_IN 0x7F + + /* Type Defines */ + typedef struct + { + uint8_t Status; + uint8_t Reserved; + + uint16_t TMCVersion; + + struct + { + unsigned ListenOnly : 1; + unsigned TalkOnly : 1; + unsigned PulseIndicateSupported : 1; + unsigned Reserved : 5; + } Interface; + + struct + { + unsigned SupportsAbortINOnMatch : 1; + unsigned Reserved : 7; + } Device; + + uint8_t Reserved2[6]; + uint8_t Reserved3[12]; + } TMC_Capabilities_t; + typedef struct + { + unsigned LastMessageTransaction : 1; + unsigned Reserved : 7; + + uint8_t Reserved2[3]; + } TMC_DevOUTMessageHeader_t; + + typedef struct + { + unsigned TermCharEnabled : 1; + unsigned 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); + bool ReadTMCHeader(TMC_MessageHeader_t* const MessageHeader); + bool WriteTMCHeader(TMC_MessageHeader_t* const MessageHeader); void EVENT_USB_Device_Connect(void); void EVENT_USB_Device_Disconnect(void); void EVENT_USB_Device_ConfigurationChanged(void); - void EVENT_USB_Device_UnhandledControlRequest(void); + void EVENT_USB_Device_ControlRequest(void); #endif +