X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/89a32baf585c8881fa972a2cb1963fb67e70d642..77a9df36a77d2523dd2bc24fa17f9f04c6c175c5:/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.h diff --git a/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.h b/Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.h index 53f65a1bd..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,17 +45,20 @@ /* 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) + /** 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 @@ -65,49 +68,87 @@ #define Req_GetCapabilities 0x07 #define Req_IndicatorPulse 0x40 - #define TMC_REQUEST_STATUS_SUCCESS 0x01 - #define TMC_REQUEST_STATUS_PENDING 0x02 - #define TMC_REQUEST_STATUS_FAILED 0x80 - #define TMC_REQUEST_STATUS_TRANSFER_NOT_IN_PROGRESS 0x81 - #define TMC_REQUEST_STATUS_SPLIT_NOT_IN_PROGRESS 0x82 - #define TMC_REQUEST_STATUS_SPLIT_IN_PROGRESS 0x83 + #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 _RESERVED1; + uint8_t Reserved; uint16_t TMCVersion; struct { - unsigned char ListenOnly : 1; - unsigned char TalkOnly : 1; - unsigned char PulseIndicateSupported : 1; - unsigned char _RESERVED : 5; + unsigned ListenOnly : 1; + unsigned TalkOnly : 1; + unsigned PulseIndicateSupported : 1; + unsigned Reserved : 5; } Interface; struct { - unsigned char SupportsAbortINOnMatch : 1; - unsigned char _RESERVED : 7; + unsigned SupportsAbortINOnMatch : 1; + unsigned Reserved : 7; } Device; - uint8_t _RESERVED2[6]; - uint8_t _RESERVED3[12]; + 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); - - uint8_t StreamCallback_AbortINOnRequest(void); - uint8_t StreamCallback_AbortOUTOnRequest(void); + void EVENT_USB_Device_ControlRequest(void); #endif +