|
|
/******************************************************************************/
|
|
|
/* */
|
|
|
/* 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 */
|
|
|
|
|
|
|
|
|
|