##// END OF EJS Templates
Étiquette socexplorer-plugins-0.7-6 ajoutée à la révision 24cce5555942
Étiquette socexplorer-plugins-0.7-6 ajoutée à la révision 24cce5555942

File last commit:

r65:67168ff4b6e7 default
r96:fed6ea04d376 default
Show More
fakestardundeespwusb_lib.h
378 lines | 15.9 KiB | text/x-c | CLexer
/ spwplugin / StarDundee / fakestardundeespwusb_lib.h
/*------------------------------------------------------------------------------
-- This file is a part of the SocExplorer Software
-- Copyright (C) 2015, Plasma Physics Laboratory - CNRS
--
-- This program is free software; you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 3 of the License, or
-- (at your option) any later version.
--
-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
--
-- You should have received a copy of the GNU General Public License
-- along with this program; if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-------------------------------------------------------------------------------*/
/*-- Author : Alexis Jeandet
-- Mail : alexis.jeandet@member.fsf.org
----------------------------------------------------------------------------*/
#ifndef FAKESTARDUNDEESPWUSB_LIB_H
#define FAKESTARDUNDEESPWUSB_LIB_H
typedef void *star_device_handle;
typedef void * USB_SPACEWIRE_ID;
typedef unsigned char U8;
typedef unsigned int U32;
//#include <spw_usb_api.h>
//#include <spw_config_library.h>
#include <QLibrary>
/* Possible bit values */
#define BIT0 (0x00000001)
#define BIT1 (0x00000002)
#define BIT2 (0x00000004)
#define BIT3 (0x00000008)
#define BIT4 (0x00000010)
#define BIT5 (0x00000020)
#define BIT6 (0x00000040)
#define BIT7 (0x00000080)
#define BIT8 (0x00000100)
#define BIT9 (0x00000200)
#define BIT10 (0x00000400)
#define BIT11 (0x00000800)
#define BIT12 (0x00001000)
#define BIT13 (0x00002000)
#define BIT14 (0x00004000)
#define BIT15 (0x00008000)
#define BIT16 (0x00010000)
#define BIT17 (0x00020000)
#define BIT18 (0x00040000)
#define BIT19 (0x00080000)
#define BIT20 (0x00100000)
#define BIT21 (0x00200000)
#define BIT22 (0x00400000)
#define BIT23 (0x00800000)
#define BIT24 (0x01000000)
#define BIT25 (0x02000000)
#define BIT26 (0x04000000)
#define BIT27 (0x08000000)
#define BIT28 (0x10000000)
#define BIT29 (0x20000000)
#define BIT30 (0x40000000)
#define BIT31 (0x80000000)
/* SpaceWire Port errors */
#define CFG_SPACEWIRE_NO_ERRORS (0)
#define CFG_SPACEWIRE_ERROR_ACTIVE (BIT0)
#define CFG_SPACEWIRE_PACKET_ADDRESS_ERROR (BIT1)
#define CFG_SPACEWIRE_PORT_TIMEOUT_ERROR (BIT2)
#define CFG_SPACEWIRE_DISCONNECT_ERROR (BIT3)
#define CFG_SPACEWIRE_PARITY_ERROR (BIT4)
#define CFG_SPACEWIRE_ESCAPE_ERROR (BIT5)
#define CFG_SPACEWIRE_CREDIT_ERROR (BIT6)
#define CFG_SPACEWIRE_CHARACTER_SEQUENCE_ERROR (BIT7)
#define CFG_SPACEWIRE_ERROR_BITS (BIT0 | BIT1 | BIT2 | BIT3 | \
BIT4 | BIT5 | BIT6 | BIT7)
/* Config Port errors */
#define CFG_CONFIG_NO_ERRORS (0)
#define CFG_CONFIG_ERROR_ACTIVE (BIT0)
/* Config Port errors (non-RMAP) */
#define CFG_CONFIG_PACKET_ADDRESS_ERROR (BIT1)
#define CFG_CONFIG_PORT_TIMEOUT_ERROR (BIT2)
#define CFG_CONFIG_CHECKSUM_ERROR (BIT3)
#define CFG_CONFIG_TOO_SHORT_ERROR (BIT4)
#define CFG_CONFIG_TOO_LONG_ERROR (BIT5)
#define CFG_CONFIG_PACKET_EEP_ERROR (BIT6)
#define CFG_CONFIG_PROTOCOL_BYTE_ERROR (BIT7)
#define CFG_CONFIG_INVALID_REGISTER_ERROR (BIT8)
#define CFG_CONFIG_ERROR_BITS (BIT0 | BIT1 | BIT2 | BIT3 | \
BIT4 | BIT5 | BIT6 | BIT7 | \
BIT8)
/* Config Port errors (RMAP) */
#define CFG_CONFIG_RMAP_PORT_TIMEOUT_ERROR (BIT1)
#define CFG_CONFIG_RMAP_INVALID_HEADER_CRC (BIT2)
#define CFG_CONFIG_RMAP_INVALID_DATA_CRC (BIT3)
#define CFG_CONFIG_RMAP_INVALID_DESTINATION_KEY (BIT4)
#define CFG_CONFIG_RMAP_COMMAND_NOT_IMPLEMENTED (BIT5)
#define CFG_CONFIG_RMAP_INVALID_DATA_LENGTH (BIT6)
#define CFG_CONFIG_RMAP_INVALID_RMW_DATA_LENGTH (BIT7)
#define CFG_CONFIG_RMAP_INVALID_DESTINATION_ADDRESS (BIT8)
#define CFG_CONFIG_RMAP_EARLY_EOP (BIT9)
#define CFG_CONFIG_RMAP_LATE_EOP (BIT10)
#define CFG_CONFIG_RMAP_EARLY_EEP (BIT11)
#define CFG_CONFIG_RMAP_LATE_EEP (BIT12)
#define CFG_CONFIG_RMAP_VERIFY_BUFFER_OVERRUN_ERROR (BIT13)
#define CFG_CONFIG_RMAP_INVALID_REGISTER_ADDRESS (BIT14)
#define CFG_CONFIG_RMAP_UNSUPPORTED_PROTOCOL_ERROR (BIT15)
#define CFG_CONFIG_RMAP_SOURCE_LOGICAL_ADDRESS_ERROR (BIT16)
#define CFG_CONFIG_RMAP_SOURCE_PATH_ADDRESS_ERROR (BIT17)
#define CFG_CONFIG_RMAP_CARGO_TOO_LARGE (BIT18)
#define CFG_CONFIG_RMAP_UNUSED_COMMAND_OR_PACKET_TYPE (BIT19)
#define CFG_CONFIG_RMAP_ERROR_BITS (BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | \
BIT5 | BIT6 | BIT7 | BIT8 | BIT9 | \
BIT10 | BIT11 | BIT12 | BIT13 | \
BIT14 | BIT15 | BIT16 | BIT17 | \
BIT18 | BIT19)
/* External Port errors */
#define CFG_EXTERNAL_NO_ERRORS (0)
#define CFG_EXTERNAL_ERROR_ACTIVE (BIT0)
#define CFG_EXTERNAL_PACKET_ADDRESS_ERROR (BIT1)
#define CFG_EXTERNAL_PORT_TIMEOUT_ERROR (BIT2)
#define CFG_EXTERNAL_INPUT_BUFFER_EMPTY_ERROR (BIT3)
#define CFG_EXTERNAL_INPUT_BUFFER_FULL_ERROR (BIT4)
#define CFG_EXTERNAL_OUTPUT_BUFFER_EMPTY_ERROR (BIT5)
#define CFG_EXTERNAL_OUTPUT_BUFFER_FULL_ERROR (BIT6)
#define CFG_EXTERNAL_ERROR_BITS (BIT0 | BIT1 | BIT2 | BIT3 | \
BIT4 | BIT5 | BIT6)
/* SpaceWire Port interface state */
#define CFG_SPACEWIRE_ERROR_RESET (0)
#define CFG_SPACEWIRE_ERROR_WAIT (BIT0)
#define CFG_SPACEWIRE_READY (BIT1)
#define CFG_SPACEWIRE_STARTED (BIT1 | BIT0)
#define CFG_SPACEWIRE_CONNECTING (BIT2)
#define CFG_SPACEWIRE_RUN (BIT2 | BIT0)
/* Port type */
#define CFG_CONFIGURATION_PORT (0)
#define CFG_SPACEWIRE_SERIAL_PORT (BIT0)
#define CFG_SPACEWIRE_EXTERNAL_PORT (BIT1)
/* SpaceWire Port control bits */
#define CFG_SPACEWIRE_INTERFACE_STATE_START (8)
#define CFG_SPACEWIRE_INTERFACE_STATE (BIT8 | BIT9 | BIT10)
#define CFG_SPACEWIRE_RUNNING (BIT11)
#define CFG_SPACEWIRE_AUTOSTART (BIT12)
#define CFG_SPACEWIRE_START (BIT13)
#define CFG_SPACEWIRE_DISABLE (BIT14)
#define CFG_SPACEWIRE_TRISTATE (BIT15)
#define CFG_SPACEWIRE_RATE (BIT16 | BIT17 | BIT18 | \
BIT19 | BIT20 | BIT21 | BIT22)
#define CFG_SPACEWIRE_RATE_START (16)
/* Bits in the GAR Table */
#define CFG_GAR_OUTPUT_PORTS_START (1)
#define CFG_GAR_OUTPUT_PORTS (BIT1 | BIT2 | BIT3 | BIT4 | BIT5 | \
BIT6 | BIT7 | BIT8 | BIT9 | BIT10 | BIT11 | BIT12 | BIT13 | BIT14 | \
BIT15 | BIT16 | BIT17 | BIT18 | BIT19 | BIT20 | BIT21 | BIT22 | \
BIT23 | BIT24 | BIT25 | BIT26 | BIT27 | BIT28)
#define CFG_GAR_DEL_HEAD (BIT29)
#define CFG_GAR_PRIORITY (BIT30)
#define CFG_GAR_INVALID_ADDR (BIT31)
/* Bits in the router control register */
#define CFG_RC_TIMEOUT_ENABLE_START (0)
#define CFG_RC_TIMEOUT_ENABLE (BIT0)
#define CFG_RC_TIMEOUT_VALUE_START (1)
#define CFG_RC_TIMEOUT_VALUE (BIT1 | BIT2 | BIT3)
#define CFG_RC_DISABLE_ON_SILENCE (BIT4)
#define CFG_RC_DISABLE_ON_SILENCE_START (4)
#define CFG_RC_START_ON_REQUEST (BIT5)
#define CFG_RC_START_ON_REQUEST_START (5)
#define CFG_RC_SELF_ADDRESSING (BIT6)
#define CFG_RC_SELF_ADDRESSING_START (6)
#define CFG_RC_INTERFACE (BIT7)
#define CFG_RC_INTERFACE_START (7)
#define CFG_RC_INTERFACE_IDENT (BIT8)
#define CFG_RC_INTERFACE_IDENT_START (8)
/* The bits shared by all ports */
#define CFG_PORT_CONNECTION (BIT24 | BIT25 | BIT26 | BIT27 | BIT28)
#define CFG_PORT_CONNECTION_START (24)
#define CFG_PORT_TYPE (BIT29 | BIT30 | BIT31)
#define CFG_PORT_TYPE_START (29)
/* Network discovery register values */
#define CFG_NETD_TYPE (BIT0 | BIT1 | BIT2 | BIT3)
#define CFG_NETD_TYPE_START (0)
#define CFG_NETD_RETURN_PORT (BIT4 | BIT5 | BIT6 | BIT7)
#define CFG_NETD_RETURN_PORT_START (4)
#define CFG_NETD_RUNNING_PORTS (BIT8 | BIT9 | BIT10 | BIT11 | BIT12 | \
BIT13 | BIT14 | BIT15 | BIT16 | BIT17 | BIT18 | BIT19 | BIT20 | \
BIT21 | BIT22 | BIT23 | BIT24 | BIT25 | BIT26 | BIT27 | BIT28 | \
BIT29 | BIT30 | BIT31)
#define CFG_NETD_RUNNING_PORTS_START (8)
/* Values in the ID register */
#define CFG_ID_VERSION (BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | \
BIT5 | BIT6 | BIT7)
#define CFG_ID_VERSION_START (0)
#define CFG_ID_CHIP (BIT8 | BIT9 | BIT10 | BIT11 | BIT12 | \
BIT13 | BIT14 | BIT15)
#define CFG_ID_CHIP_START (8)
#define CFG_ID_MANUFACTURER (BIT16 | BIT17 | BIT18 | BIT19 | \
BIT20 | BIT21 | BIT22 | BIT23)
#define CFG_ID_MANUFACTURER_START (16)
/* Values in the Time-Code register */
#define CFG_TC_VALUE (BIT0 | BIT1 | BIT2 | BIT3 | BIT4 | \
BIT5)
#define CFG_TC_VALUE_START (0)
#define CFG_TC_FLAGS (BIT6 | BIT7)
#define CFG_TC_FLAGS_START (6)
/* Values for the Router Base Clock Select */
#define CFG_RTR_CLK_100_MBITS (0)
#define CFG_RTR_CLK_200_MBITS (BIT0)
/* Values for the Brick Base Clock */
#define CFG_BRK_CLK_100_MHZ (0)
#define CFG_BRK_CLK_120_MHZ (BIT0)
#define CFG_BRK_CLK_140_MHZ (BIT1)
#define CFG_BRK_CLK_160_MHZ (BIT0 | BIT1)
#define CFG_BRK_CLK_180_MHZ (BIT2)
#define CFG_BRK_CLK_200_MHZ (BIT2 | BIT0)
/* Values for the Brick Base Divider */
#define CFG_BRK_DVDR_1 (0)
#define CFG_BRK_DVDR_2 (BIT0)
#define CFG_BRK_DVDR_4 (BIT1)
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;
#define SPACEWIRE_USB_EOP_CHAR ((U8)0x80)
#define SPACEWIRE_USB_EEP_CHAR ((U8)0x40)
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;
typedef enum
{
SPACEWIRE_TRAFFIC_UNKNOWN = -1,
SPACEWIRE_TRAFFIC_PACKET = 0,
SPACEWIRE_TRAFFIC_TIMECODE = 1,
SPACEWIRE_TRAFFIC_CONTROL = 2
} SPACEWIRE_TRAFFIC_TYPE, *PSPACEWIRE_TRAFFIC_TYPE;
typedef struct
{
unsigned long len;
USB_SPACEWIRE_EOP_TYPE eop;
SPACEWIRE_TRAFFIC_TYPE type;
} USB_SPACEWIRE_PACKET_PROPERTIES, *PUSB_SPACEWIRE_PACKET_PROPERTIES;
typedef enum
{
CFG_TRANSFER_SUCCESS = 0x00,
CFG_TRANSMIT_PACKET_FAILURE = 0x01,
CFG_REPLY_PACKET_FAILURE = 0x02,
CFG_REPLY_PACKET_TOO_BIG = 0x03,
CFG_REPLY_PACKET_TOO_SMALL = 0x04,
CFG_REPLY_PACKET_NAK = 0x05,
CFG_REPLY_PACKET_CHECKSUM_ERROR = 0x06
} CFG_SPACEWIRE_STATUS;
char USBSpaceWire_Open(star_device_handle *phDevice, int nDeviceNum);
void USBSpaceWire_Close(star_device_handle hDevice);
U32 USBSpaceWire_ListDevices();
char USBSpaceWire_GetSerialNumber(star_device_handle hDevice, U8 pSerialNumber[11]);
void USBSpaceWire_EnableNetworkMode(star_device_handle hDevice, char enable);
char USBSpaceWire_RegisterReceiveOnAllPorts(star_device_handle hDevice);
char USBSpaceWire_UnregisterReceiveOnAllPorts(star_device_handle hDevice);
char USBSpaceWire_ClearEndpoints(star_device_handle hDevice);
void USBSpaceWire_SetTimeout(star_device_handle hDevice, double timeout);
char USBSpaceWire_TC_Reset(star_device_handle hDevice);
char USBSpaceWire_TC_EnableExternalTimecodeSelection(star_device_handle hDevice,char enable);
U32 USBSpaceWire_TC_GetClockFrequency(star_device_handle hDevice);
char USBSpaceWire_TC_SetAutoTickInFrequency(star_device_handle hDevice, U32 frequency);
char USBSpaceWire_TC_EnableAutoTickIn(star_device_handle hDevice, char enableAutoTickIns, char enableAllPorts);
char USBSpaceWire_TC_PerformTickIn(star_device_handle hDevice, U8 timein);
U32 USBSpaceWire_GetDriverSendBufferSize(star_device_handle hDevice);
U32 USBSpaceWire_GetDriverReadBufferSize(star_device_handle hDevice);
char USBSpaceWire_IsReadThrottling(star_device_handle hDevice);
char USBSpaceWire_WaitOnReadPacketAvailable(star_device_handle hDevice, double timeout);
USB_SPACEWIRE_STATUS USBSpaceWire_SendPacket(star_device_handle hDevice, void *pBuffer, U32 nBufferSize, char bWait,USB_SPACEWIRE_ID *identifier);
char USBSpaceWire_FreeSend(star_device_handle hDevice, USB_SPACEWIRE_ID identifier);
USB_SPACEWIRE_STATUS USBSpaceWire_ReadPackets(star_device_handle hDevice, void *pBuffer, U32 nBufferSize,U32 nPacketNum, char bWait, PUSB_SPACEWIRE_PACKET_PROPERTIES properties,USB_SPACEWIRE_ID *identifier);
char USBSpaceWire_FreeRead(star_device_handle hDevice, USB_SPACEWIRE_ID identifier);
SPACEWIRE_TRAFFIC_TYPE USBSpaceWire_GetReadTrafficType(PUSB_SPACEWIRE_PACKET_PROPERTIES pProperties, U32 nPacketNum);
USB_SPACEWIRE_EOP_TYPE USBSpaceWire_GetReadEOPStatus(PUSB_SPACEWIRE_PACKET_PROPERTIES pProperties,U32 nPacketNum);
void CFGSpaceWire_EnableRMAP(char useRMAP);
void CFGSpaceWire_SetRMAPDestinationKey(U8 destinationKey);
void CFGSpaceWire_StackClear(void);
void CFGSpaceWire_AddrStackPush(U8 dwAddress);
void CFGSpaceWire_RetAddrStackPush(U8 dwAddress);
int CFGSpaceWire_SetBrickBaseTransmitRate(star_device_handle hDevice, U32 dwBaseClk, U32 dwBaseDvdr, U32 dwEnableClk);
int CFGSpaceWire_GetLinkStatusControl(star_device_handle hDevice, U32 dwLinkNum, U32 *dwStatusControl);
void CFGSpaceWire_LSEnableAutoStart(U32 *dwStatusControl, char bEnabled);
void CFGSpaceWire_LSEnableStart(U32 *dwStatusControl, char bEnabled);
void CFGSpaceWire_LSEnableDisabled(U32 *dwStatusControl, char bEnabled);
void CFGSpaceWire_LSEnableTristate(U32 *dwStatusControl, char bEnabled);
void CFGSpaceWire_LSPortType(U32 dwStatusControl, U32 *dwPortType);
void CFGSpaceWire_LSSetOperatingSpeed(U32 *dwStatusControl, U32 dwOperatingSpeed);
void CFGSpaceWire_LSConfigErrorStatus(U32 dwStatusControl, U32 *dwErrorStatus);
void CFGSpaceWire_LSExternalErrorStatus(U32 dwStatusControl, U32 *dwErrorStatus);
void CFGSpaceWire_LSErrorStatus(U32 dwStatusControl, U32 *dwErrorStatus);
void CFGSpaceWire_LSLinkState(U32 dwStatusControl, U32 *dwLinkStatus);
void CFGSpaceWire_LSIsLinkRunning(U32 dwStatusControl, char *isLinkRunning);
void CFGSpaceWire_LSIsAutoStart(U32 dwStatusControl, char *isAutoStart);
void CFGSpaceWire_LSIsStart(U32 dwStatusControl, char *isStart);
void CFGSpaceWire_LSIsDisabled(U32 dwStatusControl, char *isDisabled);
void CFGSpaceWire_LSIsTristate(U32 dwStatusControl, char *isTristate);
void CFGSpaceWire_LSOperatingSpeed(U32 dwStatusControl, U32 *dwOperatingSpeed);
void CFGSpaceWire_LSOutputPortConnection(U32 dwStatusControl, U32 *dwOutputPortConnection);
int CFGSpaceWire_SetLinkStatusControl(star_device_handle hDevice, U32 dwLinkNum, U32 dwStatusControl);
int CFGSpaceWire_SetAsInterface(star_device_handle hDevice, char bEnabled, char bAddIdentifier);
int CFGSpaceWire_ClearRoutingTableEntry(star_device_handle hDevice, U32 nLogicalAddress);
void CFGSpaceWire_RTBuildRoutingTableEntry(U32 *dwRoutingTableEntry,U32 dwOutputPorts, char bDelHead, char bPriority);
int CFGSpaceWire_SetRoutingTableEntry(star_device_handle hDevice, U32 nLogicalAddress, U32 dwRoutingTableEntry);
int CFGSpaceWire_GetRoutingTableEntry(star_device_handle hDevice, U32 nLogicalAddress, U32 *dwRoutingTableEntry);
void CFGSpaceWire_RTIsEnabled(U32 dwRoutingTableEntry, char *bEnabled);
void CFGSpaceWire_RTIsDelHead(U32 dwRoutingTableEntry, char *bDelHead);
void CFGSpaceWire_RTIsPriority(U32 dwRoutingTableEntry, char *bPriority);
void CFGSpaceWire_RTGetOutputPorts(U32 dwRoutingTableEntry, U32 *dwOutputPorts);
int CFGSpaceWire_GetTickEnableStatus(star_device_handle hDevice, U32 *dwTickEnableStatus);
int CFGSpaceWire_SetTickEnableStatus(star_device_handle hDevice, U32 dwTickEnableStatus);
typedef struct funcToresolve
{
void (** function)();
const char* symbolName;
}funcToresolve;
class FakeStarDundeeSpwUSB_Lib
{
public:
FakeStarDundeeSpwUSB_Lib();
static void resolve();
static bool fullresolved();
static const QList<funcToresolve>& status();
};
#endif // FAKESTARDUNDEESPWUSB_LIB_H