#include "vxi11.h" #define VXI11_DEFAULT_TIMEOUT 1000 static CLIENT* clnt = NULL; static Device_Link link; void vxi11_open(char* address, char* device) { clnt = clnt_create(address, DEVICE_CORE, DEVICE_CORE_VERSION, "tcp"); if (clnt == NULL) { printf("error creating client\n"); } else { Create_LinkParms link_parms; link_parms.clientId = (long) clnt; link_parms.lockDevice = 0; link_parms.lock_timeout = VXI11_DEFAULT_TIMEOUT; link_parms.device = device; Create_LinkResp* linkresp = create_link_1(&link_parms, clnt); link = linkresp->lid; } } void vxi11_readstatusbyte() { if (clnt == NULL) return; Device_GenericParms params = { .lid = link, .flags = 0x0, .lock_timeout = VXI11_DEFAULT_TIMEOUT, .io_timeout = VXI11_DEFAULT_TIMEOUT }; Device_ReadStbResp* resp = device_readstb_1(¶ms, clnt); } void vxi11_write() { if (clnt == NULL) { return; } char* IDENTIFY = "*IDN?"; Device_WriteParms params = { .lid = link, .io_timeout = VXI11_DEFAULT_TIMEOUT, .lock_timeout = VXI11_DEFAULT_TIMEOUT, .flags = 0x0 }; params.data.data_len = sizeof(IDENTIFY); params.data.data_val = IDENTIFY; Device_WriteResp* resp = device_write_1(¶ms, clnt); } void vxi11_read() { if (clnt == NULL) { return; } Device_ReadParms params = { .lid = link, .requestSize = 256, .io_timeout = VXI11_DEFAULT_TIMEOUT, .lock_timeout = VXI11_DEFAULT_TIMEOUT, .flags = 0x0, .termChar = 0x0 }; Device_ReadResp* resp = device_read_1(¶ms, clnt); } void vxi11_docmd() { if (clnt == NULL) return; Device_DocmdParms params = { .lid = link, .flags = 0x0, .io_timeout = VXI11_DEFAULT_TIMEOUT, .lock_timeout = VXI11_DEFAULT_TIMEOUT, .cmd = 0, .network_order = 0, .datasize = 0 }; params.data_in.data_in_len = 0; params.data_in.data_in_val = NULL; Device_DocmdResp* resp = device_docmd_1(¶ms, clnt); } void vxi11_trigger() { if (clnt == NULL) return; Device_GenericParms params = { .lid = link, .flags = 0x0, .lock_timeout = VXI11_DEFAULT_TIMEOUT, .io_timeout = VXI11_DEFAULT_TIMEOUT }; device_trigger_1(¶ms, clnt); } void vxi11_clear() { if (clnt == NULL) return; Device_GenericParms params = { .lid = link, .flags = 0x0, .lock_timeout = VXI11_DEFAULT_TIMEOUT, .io_timeout = VXI11_DEFAULT_TIMEOUT }; device_clear_1(¶ms, clnt); } void vxi11_remote() { if (clnt == NULL) return; Device_GenericParms params = { .lid = link, .flags = 0x0, .lock_timeout = VXI11_DEFAULT_TIMEOUT, .io_timeout = VXI11_DEFAULT_TIMEOUT }; device_remote_1(¶ms, clnt); } void vxi11_local() { if (clnt == NULL) return; Device_GenericParms params = { .lid = link, .flags = 0x0, .lock_timeout = VXI11_DEFAULT_TIMEOUT, .io_timeout = VXI11_DEFAULT_TIMEOUT }; device_local_1(¶ms, clnt); } void vxi11_lock() { if (clnt == NULL) return; Device_LockParms params = { .lid = link, .flags = 0x0, .lock_timeout = VXI11_DEFAULT_TIMEOUT }; device_lock_1(¶ms, clnt); } void vxi11_unlock() { if (clnt == NULL) return; device_unlock_1(&link, clnt); } void vxi11_create_intr_chan() { if (clnt == NULL) return; Device_RemoteFunc remotefunc = { .hostAddr = 0x0, .hostPort = 0x0, .progNum = 0x0, .progVers = 0x0, .progFamily = DEVICE_TCP }; create_intr_chan_1(&remotefunc, clnt); } void vxi11_destroy_intr_chan() { if (clnt == NULL) return; destroy_intr_chan_1(NULL, clnt); } void vxi11_abort() { if (clnt == NULL) return; device_abort_1(&link, clnt); } void vxi11_close() { destroy_link_1(&link, clnt); clnt_destroy(clnt); clnt = NULL; }