/******************************************************************************/ /* */ /* spacewire_usb.h */ /* */ /* Header file for all constants which may be used with the STAR-Dundee */ /* SpaceWire USB driver. */ /* */ /* Version 2.61, September 17th 2012 */ /* */ /* Version 2.61, 17/09/12 */ /* ====================== */ /* Added support for STAR Fire and WBS II. */ /* */ /* Version 2.60, 04/01/12 */ /* ====================== */ /* Added support for EGSE and SPLT. */ /* */ /* Version 2.59, 15/08/11 */ /* ====================== */ /* Added support for RTC. */ /* */ /* Version 2.58, 12/10/10 */ /* ===================== */ /* Added support for Link Analyser Mk2. */ /* */ /* Version 2.51 */ /* ============ */ /* Added use of star_dundee_types.h. */ /* */ /* Version 2.5 */ /* =========== */ /* Initial version, following change to new architecture. */ /* */ /* Copyright (2012), STAR-Dundee Ltd., */ /* STAR House, */ /* 166 Nethergate, */ /* Dundee, DD1 4EE, */ /* Scotland, UK. */ /* e-mail: support@star-dundee.com */ /* */ /******************************************************************************/ #ifndef SPACEWIRE_USB_H #define SPACEWIRE_USB_H #ifdef __cplusplus extern "C" { #endif /* The types used by the API */ #include "star_dundee_types.h" /* End of packet marker types */ #define SPACEWIRE_USB_EOP_CHAR ((U8)0x80) #define SPACEWIRE_USB_EEP_CHAR ((U8)0x40) /* The protocol byte used to identify LODI packets */ #define SPACEWIRE_USB_LODI_PROTOCOL (0xd1) /* Possible results of read and send operations */ typedef enum { TRANSFER_NOT_STARTED = 0, TRANSFER_STARTED = 1, TRANSFER_SUCCESS = 2, TRANSFER_ERROR_DISCONNECT = 3, TRANSFER_ERROR_PARITY = 4, TRANSFER_ERROR_UNKNOWN = 5, TRANSFER_ERROR_TIMEOUT = 6, TRANSFER_ERROR_LINK_NOT_STARTED = 7, TRANSFER_ERROR_USER_BUFFER_LOCK_FAILED = 8, TRANSFER_ERROR_LINK_ALREADY_IN_USE = 9, TRANSFER_ERROR_RECEIVE_BUFFER_FULL = 0xa, TRANSFER_ERROR_OUT_OF_MEMORY = 0xb, TRANSFER_ERROR_NOT_FOUND = 0xc, TRANSFER_ERROR_USB_ERROR = 0xd, TRANSFER_ERROR_NOT_REGISTERED_TO_RECEIVE = 0xe } USB_SPACEWIRE_STATUS, *PUSB_SPACEWIRE_STATUS; /* Possible traffic types */ typedef enum { SPACEWIRE_TRAFFIC_UNKNOWN = -1, SPACEWIRE_TRAFFIC_PACKET = 0, SPACEWIRE_TRAFFIC_TIMECODE = 1, SPACEWIRE_TRAFFIC_CONTROL = 2 } SPACEWIRE_TRAFFIC_TYPE, *PSPACEWIRE_TRAFFIC_TYPE; /* The different end of packet marker types */ typedef enum { SPACEWIRE_USB_NO_EOP = 0, SPACEWIRE_USB_EOP = SPACEWIRE_USB_EOP_CHAR, SPACEWIRE_USB_EEP = SPACEWIRE_USB_EEP_CHAR } USB_SPACEWIRE_EOP_TYPE, *PUSB_SPACEWIRE_EOP_TYPE; /* Possible device types */ typedef enum { SPACEWIRE_DEVICE_UNKNOWN = -1, SPACEWIRE_ROUTER_USB = 0, SPACEWIRE_BRICK = 1, SPACEWIRE_LINK_ANALYSER = 2, SPACEWIRE_CONFORMANCE_TESTER = 3, SPACEWIRE_TUNNEL_BRICK = 4, SPACEWIRE_LINK_ANALYSER_MK2 = 5, SPACEWIRE_RTC = 6, SPACEWIRE_EGSE = 7, SPACEWIRE_PHYSICAL_LAYER_TESTER = 8, STAR_FIRE = 9, WBS_II = 10 } SPACEWIRE_DEVICE_TYPE, *PSPACEWIRE_DEVICE_TYPE; /* Structure used to store packet lengths and EOPs for a read request */ typedef struct { unsigned long len; USB_SPACEWIRE_EOP_TYPE eop; SPACEWIRE_TRAFFIC_TYPE type; } USB_SPACEWIRE_PACKET_PROPERTIES, *PUSB_SPACEWIRE_PACKET_PROPERTIES; /* The type of all send and receive identifiers */ typedef void * USB_SPACEWIRE_ID; /* Structure used to represent the firmware version of a device */ typedef struct { U8 major; U8 minor; U16 edit; U8 patch; } SPACEWIRE_FIRMWARE_VERSION; /* The product ID used by each STAR-Dundee SpaceWire device */ /** The product ID used by a device with no EEPROM */ #define SPACEWIRE_PRODUCT_ID_NO_EEPROM (0x8613) /** The product ID used by an old device in the power check state */ #define SPACEWIRE_PRODUCT_ID_POWER_CHECK (0x461f) /** The product ID used by an old device with no ID set */ #define SPACEWIRE_PRODUCT_ID_NO_ID (0x1002) /** The product ID used by the SpaceWire Router-USB */ #define SPACEWIRE_PRODUCT_ID_ROUTER_USB (0x1011) /** The product ID used by the SpaceWire-USB Brick */ #define SPACEWIRE_PRODUCT_ID_BRICK (0x1012) /** The product ID used by the SpaceWire Link Analyser */ #define SPACEWIRE_PRODUCT_ID_LINK_ANALYSER (0x1013) /** The product ID used by the SpaceWire Conformance Tester */ #define SPACEWIRE_PRODUCT_ID_CONFORMANCE_TESTER (0x1014) /** The product ID used by the SpaceWire-IP Tunnel */ #define SPACEWIRE_PRODUCT_ID_TUNNEL_BRICK (0x1015) /** The product ID used by the SpaceWire Router-USB with multiple channels */ #define SPACEWIRE_PRODUCT_ID_ROUTER_MULTIPLE_CHANNELS (0x1016) /** The product ID used by the SpaceWire Router-USB II Rev 4 */ #define SPACEWIRE_PRODUCT_ID_ROUTER_USB_II_REV4 (0x1017) /** The product ID used by the SpaceWire Link Analyser Mk2 */ #define SPACEWIRE_PRODUCT_ID_LINK_ANALYSER_MK2 (0x1018) /** The product ID used by the SpaceWire RTC */ #define SPACEWIRE_PRODUCT_ID_RTC (0x1019) /** The product ID used by the SpaceWire EGSE */ #define SPACEWIRE_PRODUCT_ID_EGSE (0x101a) /** The product ID used by the SpaceWire SPLT */ #define SPACEWIRE_PRODUCT_ID_SPLT (0x101b) /** The product ID used by the STAR Fire device */ #define SPACEWIRE_PRODUCT_ID_STAR_FIRE (0x101c) /** The product ID used by the WBS II device */ #define SPACEWIRE_PRODUCT_ID_WBS_II (0x101d) /** A product ID to be used by a future device */ #define SPACEWIRE_PRODUCT_ID_FUTURE_101E (0x101e) /** A product ID to be used by a future device */ #define SPACEWIRE_PRODUCT_ID_FUTURE_101F (0x101f) #ifdef __cplusplus } #endif #endif /* SPACEWIRE_USB_H */