libsigrok/hardware/common/vxi.x

144 lines
5.0 KiB
Plaintext

/* This is taken straight from Appendix C of the specification */
typedef long Device_Link;
enum Device_AddrFamily {
DEVICE_TCP,
DEVICE_UDP
};
typedef long Device_Flags;
typedef long Device_ErrorCode;
struct Device_Error {
Device_ErrorCode error;
};
struct Create_LinkParms {
long clientId; /* implementation specific value */
bool lockDevice; /* attempt to lock the device */
unsigned long lock_timeout; /* time to wait on a lock */
string device<>; /* name of device */
};
struct Create_LinkResp {
Device_ErrorCode error;
Device_Link lid;
unsigned short abortPort; /* for the abort RPC */
unsigned long maxRecvSize; /* specifies max data size in bytes
device will accept on a write */
};
struct Device_WriteParms {
Device_Link lid; /* link id from create_link */
unsigned long io_timeout; /* time to wait for I/O */
unsigned long lock_timeout; /* time to wait for lock */
Device_Flags flags;
opaque data<>; /* data length and the data itself */
};
struct Device_WriteResp {
Device_ErrorCode error;
unsigned long size; /* number of bytes written */
};
struct Device_ReadParms {
Device_Link lid; /* link id from create_link */
unsigned long requestSize; /* bytes requested */
unsigned long io_timeout; /* time to wait for I/O */
unsigned long lock_timeout; /* time to wait for lock */
Device_Flags flags;
char termChar; /* valid if flags & termchrset */
};
struct Device_ReadResp {
Device_ErrorCode error;
long reason; /* reason(s) read completed */
opaque data<>; /* data.len and data.val */
};
struct Device_ReadStbResp {
Device_ErrorCode error; /* error code */
unsigned char stb; /* the returned status byte */
};
struct Device_GenericParms {
Device_Link lid; /* Device_Link id from connect call */
Device_Flags flags; /* flags with options */
unsigned long lock_timeout; /* time to wait for lock */
unsigned long io_timeout; /* time to wait for I/O */
};
struct Device_RemoteFunc {
unsigned long hostAddr; /* host servicing interrupt */
unsigned short hostPort; /* valid port # on client */
unsigned long progNum; /* DEVICE_INTR */
unsigned long progVers; /* DEVICE_INTR_VERSION */
Device_AddrFamily progFamily; /* DEVICE_UDP | DEVICE_TCP */
};
struct Device_EnableSrqParms {
Device_Link lid;
bool enable; /* enable or disable interrupts */
opaque handle<40>; /* host specific data */
};
struct Device_LockParms {
Device_Link lid; /* link id from create_link */
Device_Flags flags; /* contains the waitlock flag */
unsigned long lock_timeout; /* time to wait to acquire lock */
};
struct Device_DocmdParms {
Device_Link lid; /* link id from create_link */
Device_Flags flags; /* flags specifying various options */
unsigned long io_timeout; /* time to wait for I/O to complete */
unsigned long lock_timeout; /* time to wait on a lock */
long cmd; /* which command to execute */
bool network_order; /* client's byte order */
long datasize; /* size of individual data elements */
opaque data_in<>; /* docmd data parameters */
};
struct Device_DocmdResp {
Device_ErrorCode error; /* returned status */
opaque data_out<>; /* returned data parameter */
};
struct Device_SrqParms {
opaque handle<>;
};
program DEVICE_ASYNC{
version DEVICE_ASYNC_VERSION {
Device_Error device_abort(Device_Link) = 1;
} = 1;
} = 0x0607B0;
program DEVICE_CORE {
version DEVICE_CORE_VERSION {
Create_LinkResp create_link(Create_LinkParms) = 10;
Device_WriteResp device_write(Device_WriteParms) = 11;
Device_ReadResp device_read(Device_ReadParms) = 12;
Device_ReadStbResp device_readstb(Device_GenericParms) = 13;
Device_Error device_trigger(Device_GenericParms) = 14;
Device_Error device_clear(Device_GenericParms) = 15;
Device_Error device_remote(Device_GenericParms) = 16;
Device_Error device_local(Device_GenericParms) = 17;
Device_Error device_lock(Device_LockParms) = 18;
Device_Error device_unlock(Device_Link) = 19;
Device_Error device_enable_srq(Device_EnableSrqParms)= 20;
Device_DocmdResp device_docmd(Device_DocmdParms) = 22;
Device_Error destroy_link(Device_Link) = 23;
Device_Error create_intr_chan(Device_RemoteFunc) = 25;
Device_Error destroy_intr_chan(void) = 26;
} = 1;
} = 0x0607AF;
program DEVICE_INTR {
version DEVICE_INTR_VERSION {
void device_intr_srq(Device_SrqParms) = 30;
} = 1;
} = 0x0607B1;