diff options
Diffstat (limited to 'libvxi11client')
-rw-r--r-- | libvxi11client/client.c | 45 | ||||
-rw-r--r-- | libvxi11client/libvxi11client.c | 2 |
2 files changed, 46 insertions, 1 deletions
diff --git a/libvxi11client/client.c b/libvxi11client/client.c index eb224f2..799df57 100644 --- a/libvxi11client/client.c +++ b/libvxi11client/client.c @@ -7,8 +7,14 @@ static char* geterrorstring(int errorcode) { switch (errorcode) { case 0: return "invalid state (not connected) or no response from server"; + case -4: + return "invalid link identifier"; case -8: return "operation not supported"; + case -11: + return "device locked by another link"; + case -12: + return "no lock held by this link"; default: return "unknown error code"; } @@ -27,6 +33,10 @@ int main(int argc, char *argv[]) { if ((err = vxi11_open(argv[1], NULL)) > 0) { + /** + * Basic tests + */ + // write some bytes int byteswritten = vxi11_write(IDENTIFY, sizeof(IDENTIFY), false); if (byteswritten >= 0) @@ -78,6 +88,41 @@ int main(int argc, char *argv[]) { else printf("Error reading status byte\n"); + /** + * Locking tests + */ + + // try locking twice + printf("-- Locking twice --\n"); + if ((err = vxi11_lock()) > 0) { + printf("locked\n"); + if ((err = vxi11_lock()) > 0) { + printf("locked again!!\n"); + exit(1); + } + else { + printf("Second lock failed; %s\n", geterrorstring(err)); + } + } + if ((err = vxi11_unlock()) > 0) + printf("unlocked\n"); + else { + printf("error unlocking; %s\n", geterrorstring(err)); + exit(1); + } + + printf("\n"); + + // try unlocking unlocked device + printf("-- Unlocking when unlocked --\n"); + if ((err = vxi11_unlock()) > 0) { + printf("Unlocked!!\n"); + exit(1); + } + else + printf("error unlocking; %s\n", geterrorstring(err)); + printf("\n"); + // create interrupt channel err = vxi11_create_intr_chan(); diff --git a/libvxi11client/libvxi11client.c b/libvxi11client/libvxi11client.c index ba7d7b4..4e3efd0 100644 --- a/libvxi11client/libvxi11client.c +++ b/libvxi11client/libvxi11client.c @@ -41,7 +41,7 @@ int vxi11_open(char* address, char* device) { link_parms.clientId = (long) clnt; link_parms.lockDevice = 0; link_parms.lock_timeout = VXI11_DEFAULT_TIMEOUT; - link_parms.device = device; + link_parms.device = device != NULL ? device : "device0"; Create_LinkResp* linkresp = create_link_1(&link_parms, clnt); if (linkresp != NULL && linkresp->error == 0) { |