#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() { } 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() { } 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; } void vxi11_destroy_intr_chan() { if (clnt == NULL) return; } 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; }