/******************************************************************************/ /* */ /* spw_usb_api.h */ /* */ /* Declaration of the functions provided by the SpaceWire USB API Library */ /* for the SpaceWire USB devices. */ /* */ /* Version 2.61, September 21st 2012 */ /* */ /* Version 2.61, 21/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.5, 12/10/10 */ /* ===================== */ /* Added support for Link Analyser Mk2. */ /* */ /* Version 1.5, 12/03/10 */ /* ===================== */ /* Added GetFirmwareVersionExtended and restored GetFirmwareVersion to */ /* its original form. */ /* */ /* Version 1.4, 03/03/10 */ /* ===================== */ /* Fixed bug waiting on a receive to complete. */ /* Added support for multiple send channels. */ /* Added functions to get serial number and product ID. */ /* */ /* Version 1.3, 26/2/09 */ /* ==================== */ /* Updated the calling convention used in the function declaration to */ /* __stdcall on Windows. */ /* */ /* Version 1.2, 21/1/09 */ /* ==================== */ /* Updated to compile on both Windows and Linux. */ /* */ /* Version 1.1, 8/10/06 */ /* ==================== */ /* Linux release. */ /* */ /* Version 1.0, 24/4/06 */ /* ==================== */ /* Initial version. */ /* */ /* Copyright (2012), STAR-Dundee Ltd., */ /* STAR House, */ /* 166 Nethergate, */ /* Dundee, DD1 4EE, */ /* Scotland, UK. */ /* e-mail: support@star-dundee.com */ /* */ /******************************************************************************/ #ifndef SPACEWIRE_USB_API_H #define SPACEWIRE_USB_API_H #ifdef __cplusplus extern "C" { #endif #include "spacewire_usb.h" #if defined(_WIN32) || defined(_WIN64) /* Windows specifc functions and macros */ #ifdef SPACEWIREUSBAPI_EXPORTS #define SPACEWIREUSB_API __declspec(dllexport) #else #define SPACEWIREUSB_API __declspec(dllimport) #endif #ifdef _WIN64 #define SPW_USB_API_CC #else #define SPW_USB_API_CC __stdcall #endif /* WIN64 */ #include "windows.h" #else /* _WIN32 */ /* Linux specific functions and macros */ #define SPACEWIREUSB_API #define SPW_USB_API_CC #endif /* _WIN32 */ /* Functions provided by the API */ /* General functions */ SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_Open( star_device_handle *phDevice, int nDeviceNum); SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_Close( star_device_handle hDevice); SPACEWIREUSB_API U8 SPW_USB_API_CC USBSpaceWire_CountDevices(); SPACEWIREUSB_API U32 SPW_USB_API_CC USBSpaceWire_ListDevices(); SPACEWIREUSB_API double SPW_USB_API_CC USBSpaceWire_GetDriverVersion(); SPACEWIREUSB_API double SPW_USB_API_CC USBSpaceWire_GetIFVersion(); SPACEWIREUSB_API double SPW_USB_API_CC USBSpaceWire_GetAPIVersion(); SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_SetTimeout( star_device_handle hDevice, double timeout); SPACEWIREUSB_API double SPW_USB_API_CC USBSpaceWire_GetTimeout( star_device_handle hDevice); SPACEWIREUSB_API U8 SPW_USB_API_CC USBSpaceWire_GetSpaceWireAddress( star_device_handle hDevice); SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_SetSpaceWireAddress( star_device_handle hDevice, U8 address); SPACEWIREUSB_API U16 SPW_USB_API_CC USBSpaceWire_GetFirmwareVersion( star_device_handle hDevice); SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_GetFirmwareVersionExtended( star_device_handle hDevice, SPACEWIRE_FIRMWARE_VERSION *pVersion); SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_ClearEndpoints( star_device_handle hDevice); SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_ResetDevice( star_device_handle hDevice); SPACEWIREUSB_API SPACEWIRE_DEVICE_TYPE SPW_USB_API_CC USBSpaceWire_GetDeviceType(star_device_handle hDevice); SPACEWIREUSB_API SPACEWIRE_DEVICE_TYPE SPW_USB_API_CC USBSpaceWire_GetUnopenedDeviceType(int deviceNum); SPACEWIREUSB_API U16 SPW_USB_API_CC USBSpaceWire_GetDeviceProductID( star_device_handle hDevice); SPACEWIREUSB_API U16 SPW_USB_API_CC USBSpaceWire_GetUnopenedDeviceProductID( int deviceNum); SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_EnableHeaderMode( star_device_handle hDevice, char enable); SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_IsHeaderModeEnabled( star_device_handle hDevice); SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_EnableNetworkMode( star_device_handle hDevice, char enable); SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_IsNetworkModeEnabled( star_device_handle hDevice); SPACEWIREUSB_API double SPW_USB_API_CC USBSpaceWire_GetUSBVersion( star_device_handle hDevice); SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_GetAPIString(char *str); SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_GetSerialNumber( star_device_handle hDevice, U8 pSerialNumber[11]); /* Receive functions */ SPACEWIREUSB_API unsigned long SPW_USB_API_CC USBSpaceWire_GetDriverDroppedPackets(star_device_handle hDevice); SPACEWIREUSB_API unsigned long SPW_USB_API_CC USBSpaceWire_GetDriverDroppedBytes(star_device_handle hDevice); SPACEWIREUSB_API unsigned long SPW_USB_API_CC USBSpaceWire_GetDroppedPackets( star_device_handle hDevice); SPACEWIREUSB_API unsigned long SPW_USB_API_CC USBSpaceWire_GetDroppedBytes( star_device_handle hDevice); SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_RegisterReceiveOnPort( star_device_handle hDevice, U8 port); SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_UnregisterReceiveOnPort( star_device_handle hDevice, U8 port); SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_RegisterReceiveOnAllPorts( star_device_handle hDevice); SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_UnregisterReceiveOnAllPorts( star_device_handle hDevice); SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_ReadPackets( star_device_handle hDevice, void *pBuffer, U32 nBufferSize, U32 nPacketNum, char bWait, PUSB_SPACEWIRE_PACKET_PROPERTIES properties, USB_SPACEWIRE_ID *identifier); SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_FreeRead( star_device_handle hDevice, USB_SPACEWIRE_ID identifier); SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_FreeAllReads( star_device_handle hDevice); SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_GetReadStatus( star_device_handle hDevice, USB_SPACEWIRE_ID identifier); SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_WaitOnReadCompleting(star_device_handle hDevice, USB_SPACEWIRE_ID identifier, char bWaitIndefinitely); SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_EnableReadThrottling( star_device_handle hDevice, char enable); SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_IsReadThrottling( star_device_handle hDevice); SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_SetDriverReadBufferSize( star_device_handle hDevice, unsigned long nBufferSize); SPACEWIREUSB_API unsigned long SPW_USB_API_CC USBSpaceWire_GetDriverReadBufferSize(star_device_handle hDevice); SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_SetDriverReadStructsNum( star_device_handle hDevice, unsigned long nStructsNum); SPACEWIREUSB_API unsigned long SPW_USB_API_CC USBSpaceWire_GetDriverReadStructsNum(star_device_handle hDevice); SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_WaitOnReadPacketAvailable( star_device_handle hDevice, double timeout); SPACEWIREUSB_API U32 SPW_USB_API_CC USBSpaceWire_GetReadLength( PUSB_SPACEWIRE_PACKET_PROPERTIES pProperties, U32 nPacketNum); SPACEWIREUSB_API USB_SPACEWIRE_EOP_TYPE SPW_USB_API_CC USBSpaceWire_GetReadEOPStatus(PUSB_SPACEWIRE_PACKET_PROPERTIES pProperties, U32 nPacketNum); SPACEWIREUSB_API SPACEWIRE_TRAFFIC_TYPE SPW_USB_API_CC USBSpaceWire_GetReadTrafficType( PUSB_SPACEWIRE_PACKET_PROPERTIES pProperties, U32 nPacketNum); /* Send functions */ SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_GetNumberOfSendChannels( star_device_handle hDevice); SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_SendPacketTo( star_device_handle hDevice, void *pBuffer, U32 nBufferSize, U8 *pAddress, U32 nAddressLen, char bWait, USB_SPACEWIRE_ID *identifier); SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_SendPacketToOverChannel(star_device_handle hDevice, U8 channel, void *pBuffer, U32 nBufferSize, U8 *pAddress, U32 nAddressLen, char bWait, USB_SPACEWIRE_ID *identifier); SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_SendMultiplePacketsTo(star_device_handle hDevice, void *pBuffer, U32 nPacketSize, U32 nBufferSize, U8 *pAddress, U32 nAddressLen, char bWait, USB_SPACEWIRE_ID *identifier); SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_SendMultiplePacketsToOverChannel(star_device_handle hDevice, U8 channel, void *pBuffer, U32 nPacketSize, U32 nBufferSize, U8 *pAddress, U32 nAddressLen, char bWait, USB_SPACEWIRE_ID *identifier); SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_SendMultiplePacketLengthsTo(star_device_handle hDevice, void **pBuffers, U32 *pPacketSizes, U32 nNumberOfPackets, U8 *pAddress, U32 nAddressLen, char bWait, USB_SPACEWIRE_ID *identifier); SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_SendMultiplePacketLengthsToOverChannel( star_device_handle hDevice, U8 channel, void **pBuffers, U32 *pPacketSizes, U32 nNumberOfPackets, U8 *pAddress, U32 nAddressLen, char bWait, USB_SPACEWIRE_ID *identifier); SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_SendPacket( star_device_handle hDevice, void *pBuffer, U32 nBufferSize, char bWait, USB_SPACEWIRE_ID *identifier); SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_SendPacketOverChannel(star_device_handle hDevice, U8 channel, void *pBuffer, U32 nBufferSize, char bWait, USB_SPACEWIRE_ID *identifier); SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_SendMultiplePackets(star_device_handle hDevice, void *pBuffer, U32 nPacketSize, U32 nBufferSize, char bWait, USB_SPACEWIRE_ID *identifier); SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_SendMultiplePacketsOverChannel(star_device_handle hDevice, U8 channel, void *pBuffer, U32 nPacketSize, U32 nBufferSize, char bWait, USB_SPACEWIRE_ID *identifier); SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_SendMultiplePacketLengths(star_device_handle hDevice, void **pBuffers, U32 *pPacketSizes, U32 nNumberOfPackets, char bWait, USB_SPACEWIRE_ID *identifier); SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_SendMultiplePacketLengthsOverChannel( star_device_handle hDevice, U8 channel, void **pBuffers, U32 *pPacketSizes, U32 nNumberOfPackets, char bWait, USB_SPACEWIRE_ID *identifier); SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_FreeSend( star_device_handle hDevice, USB_SPACEWIRE_ID identifier); SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_FreeAllSends( star_device_handle hDevice); SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_GetSendStatus( star_device_handle hDevice, USB_SPACEWIRE_ID identifier); SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_WaitOnSendCompleting(star_device_handle hDevice, USB_SPACEWIRE_ID identifier, char bWaitIndefinitely); SPACEWIREUSB_API U32 SPW_USB_API_CC USBSpaceWire_GetSendSize( star_device_handle hDevice, USB_SPACEWIRE_ID identifier); SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_SetDriverSendBufferSize( star_device_handle hDevice, U32 nBufferSize); SPACEWIREUSB_API U32 SPW_USB_API_CC USBSpaceWire_GetDriverSendBufferSize( star_device_handle hDevice); SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_EnableSendEEPs( star_device_handle hDevice, char enable); SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_IsSendEEPsEnabled( star_device_handle hDevice); SPACEWIREUSB_API USB_SPACEWIRE_STATUS SPW_USB_API_CC USBSpaceWire_TunnelSendTraffic(star_device_handle hDevice, SPACEWIRE_TRAFFIC_TYPE type, void *pBuffer, U32 nBufferSize, USB_SPACEWIRE_EOP_TYPE eop, U8 port, char bWait, USB_SPACEWIRE_ID *identifier); /* Time-code functions */ SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_TC_PerformTickIn( star_device_handle hDevice, U8 timein); SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_TC_EnableExternalTimecodeSelection(star_device_handle hDevice, char enable); SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_TC_Reset( star_device_handle hDevice); SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_TC_EnableAutoTickIn( star_device_handle hDevice, char enableAutoTickIns, char enableAllPorts); SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_TC_SetAutoTickInFrequency( star_device_handle hDevice, U32 frequency); SPACEWIREUSB_API char SPW_USB_API_CC USBSpaceWire_TC_StartReadingTimecodes( star_device_handle hDevice, void *arg, void (*callbackfunc)( star_device_handle hDevice, U8 timecode, void *arg)); SPACEWIREUSB_API void SPW_USB_API_CC USBSpaceWire_TC_StopReadingTimecodes( star_device_handle hDevice); SPACEWIREUSB_API U32 SPW_USB_API_CC USBSpaceWire_TC_GetClockFrequency( star_device_handle hDevice); #ifdef __cplusplus } #endif #endif /* SPACEWIRE_USB_API_H */