From 5cf928e4b69959e580445f5004c9cf0c4469986b Mon Sep 17 00:00:00 2001 From: Mikael Lerner Date: Mon, 31 May 2021 22:12:12 +0200 Subject: [PATCH] Upgrade of IBCON to handle general TCP/IP network devices This version allows IBCON to be used for communication with any network device using TCP/IP sockets. It has been in use at Onsala Space Observatory since 2013. The documentation is in misc/general_ibcon.pdf The 'rdtib.f' file in 'boss' should be replaced with this version which allows longer lines in 'ibad.ctl', when the OSO version of 'ibcon' is used. --- boss/rdtib.f | 10 +- control/fserr.ctl | 12 + ibcon/Makefile | 5 +- ibcon/check_network.c | 319 ++++++++++++++++++++ ibcon/handle_network.c | 231 +++++++++++++++ ibcon/ibcon.f | 54 +++- ibcon/util_network.c | 572 ++++++++++++++++++++++++++++++++++++ misc/general_ibcon.pdf | Bin 0 -> 104190 bytes st.default/control/ibad.ctl | 30 +- 9 files changed, 1221 insertions(+), 12 deletions(-) create mode 100644 ibcon/check_network.c create mode 100644 ibcon/handle_network.c create mode 100644 ibcon/util_network.c create mode 100644 misc/general_ibcon.pdf diff --git a/boss/rdtib.f b/boss/rdtib.f index 37decfc87..e8dc312d7 100644 --- a/boss/rdtib.f +++ b/boss/rdtib.f @@ -38,11 +38,11 @@ subroutine rdtib(idcb,ip) C dimension ip(5) C for RMPAR - integer*2 ibuf(40) + integer*2 ibuf(100) C buffer to hold input records integer fmpread,ichcm_ch C ibadrd - max length of line in ibad.ctl to read - data ibadrd /80/ + data ibadrd /200/ C ICLASS - class to send to IBCON C NREC - number of records in class C @@ -55,6 +55,8 @@ subroutine rdtib(idcb,ip) C LAST MODIFIED: 800224 C WHO WHEN DESCRIPTION C GAG 901220 Restructured loop and added call to logit. +C Lerner 120723 Increased buffer length to support network devices +C Lerner 210427 Added new 2020 header c C# LAST COMPC'ED 870115:04:18 # C @@ -64,7 +66,7 @@ subroutine rdtib(idcb,ip) C call fmpopen(idcb,FS_ROOT//'/control/ibad.ctl',ierr,'r',id) if (ierr.lt.0) return - call ifill_ch(ibuf,1,80,' ') + call ifill_ch(ibuf,1,200,' ') ilen = fmpread(idcb,ierr,ibuf,ibadrd) call lower(ibuf,ilen) iclass = 0 @@ -79,8 +81,8 @@ subroutine rdtib(idcb,ip) nrec = nrec + 1 call put_buf(iclass,ibuf,-iflch(ibuf,ilen),' ',' ') C Put record into class record - call ifill_ch(ibuf,1,80,' ') endif + call ifill_ch(ibuf,1,200,' ') ilen = fmpread(idcb,ierr,ibuf,ibadrd) call lower(ibuf,ilen) end do diff --git a/control/fserr.ctl b/control/fserr.ctl index 5f314cc31..749fdb7a5 100644 --- a/control/fserr.ctl +++ b/control/fserr.ctl @@ -3269,6 +3269,18 @@ GPIB/232 (EOFL) serial buffer overflow detected by converter, ?W IB -544 GPIB/232 (EFRM) serial data framing error detected by converter, ?W "" +IB -601 +Failed to open communication with network device, ?W +"" +IB -602 +Failed to send command to network device +"" +IB -603 +Failed to read from network device +"" +IB -604 +Blank command provided to network device +"" IF -301 Error can't open ifatt.ctl. "" diff --git a/ibcon/Makefile b/ibcon/Makefile index fb907447e..2c24bdbbe 100644 --- a/ibcon/Makefile +++ b/ibcon/Makefile @@ -1,5 +1,8 @@ +# Lerner 2021-04-27 Adapted new 64-bit version for OSO code + OBJECTS = ibcon.o opbrd.o opdev.o rddev.o wrdev.o sib.o statbrd.o rspdev.o\ -echo_out.o find_delay.o iclrdev.o +echo_out.o find_delay.o iclrdev.o check_network.o handle_network.o\ +util_network.o ifeq (/usr/local/include/sys/ugpib.h,$(wildcard /usr/local/include/sys/ugpib.h)) CPPFLAGS += -DCONFIG_GPIB -DNI_DRIVER diff --git a/ibcon/check_network.c b/ibcon/check_network.c new file mode 100644 index 000000000..0c4612668 --- /dev/null +++ b/ibcon/check_network.c @@ -0,0 +1,319 @@ +/***************************************************************************** + * + * FILE: check_network.c + * + * Check the provided line coming from 'ibad.tcl' to see if it contains + * a network-controlled device --- if so, process it here. + * + * Network-controlled devices are GPIB-devices which are controlled either + * using TCP/IP communication with a Prologix GPIB-ethernet controller box or + * directly via a TCP/IP interface instead of via a dedicated GPIB-card in + * the FS computer. + * + * Note that this procedure is very general and also allows you to talk + * with any device that are connected directly to a TCP/IP-network and uses + * an ASCII-syntax. + * + * This version of IBCON allows you to mix and match between a GPIB-card, + * a Prologix-box controlling several devices on a common GPIB-bus, + * multiple GPIB-boxes each controlling a single GPIB-device or + * any combination of these options. + * + * This procedure is part of the 'ibcon' program. + * + * Network-controlled devices use the following syntax in the 'ibad.ctl' + * file: + * + * MN=net,IP-address,port,/command1[/command2[/command3...]] + * + * where 'MN' is a 2-character mnemonic used to identify the device action, + * 'IP-address' is the IP-address of the device or the Prologix-box given + * in 'a.b.c.d' notation, 'port' is the port number to use (port should be + * "1234" for Prologix-boxes but can be other things for other network-based + * devices --- some network-based GPIB-devices seem to use port "5025", + * for example) and the command sequence is the set of commands to send when + * communicating with the device, which typically will include + * Prologix-commands used to set up the Prologix box as well as + * the GPIB-command(s) to the device itself. The command sequence should + * start with the character used to separate the different commands from each + * other (even if there is only one command). Typicaly "/" is used, but you + * are free to choose something else. + * + * Two special commands are recognized: '##' means that the command + * passed to IBCON at the time of execution should be inserted at that point + * in the sequence, while '$$' means that the device has generated a reply + * that should be read at this point in the sequence. + * + * A '&' can be appended to any command; this command will then be followed + * automatically by the ':SYST:ERR?' command and any error reported will + * be written to the log. For example, the command sequence + * '*RST/:INIT:CONT ON&' will consecutively send the following three commands: + * '*RST', ':INIT:CONT ON' and ':SYST:ERR?', then wait for the reply and + * report an error if the reply is not '+0,"No error"' - the actual test is + * for the "0". + * + * Different commands can be sent to the same device by giving them different + * mnemonics, and for network-controlled devices the mnemonics should be seen + * more as symbols for different actions instead of different devices. + * + * At Onsala Space Observatory, we use two HP-devices for CABLE and CLOCK + * measurements, both being controlled by individual Prologix-boxes. + * The 'ibad.ctl' file looks like this: + * + * CA=net,192.16.6.15,1234,/++auto 0/++addr 2/++read_tmo_ms 1000/++read 10/$$ + * CB=net,192.16.6.16,1234,/++addr 3/++auto 1/:READ?/$$/++auto 0/:INIT:CONT ON + * + * We also have another HP-device that can be used for CLOCK measurements. + * It uses a similar syntax but it is connected directly to + * the TCP/IP-network. We can control that one with the following + * 'ibad.ctl' line: + * + * CX=net,192.16.6.17,5025,/:READ?/$$/:INIT:CONT ON + * + * The following example shows four mnemonics to talk to the same device: + * the first one is a standard read request, the second one is a reset + * command and the last two ones are for general commands and questions, + * respectively. + * + * CB=net,192.16.6.16,1234,/++addr 3/++auto 1/:READ?/$$/++auto 0/:INIT:CONT ON + * CC=net,192.16.6.16,1234,/++addr 3/++auto 0/*RST + * CD=net,192.16.6.16,1234,/++addr 3/++auto 0/## + * CE=net,192.16.6.16,1234,/++addr 3/++auto 1/##/$$ + * + * HISTORY + * + * who when what + * --------- ----------- ---------------------------------------------- + * lerner 26 Jul 2012 Original version + * lerner 12 Feb 2013 Added user-specified port-number to enable + * communication with network-based devices + * lerner 7 May 2021 Adapted for inclusion in FS10 and added dynamic + * command separator + * + *****************************************************************************/ + +#include +#include +#include +#include + + + +/***************************************************************************** + * + * Macros + * + *****************************************************************************/ + +#define MAX_ACTIONS 50 +#define MAX_SEQUENCES 20 + + + +/***************************************************************************** + * + * Global variables + * + *****************************************************************************/ + +/* Network device variables */ + +int network_devices = 0; +char network_address[MAX_ACTIONS][16]; +char network_port[MAX_ACTIONS][8]; +int network_socket[MAX_ACTIONS]; + +/* Network action variables */ + +int network_actions = 0; +char network_mnemonic[MAX_ACTIONS][3]; +char *network_sequence[MAX_ACTIONS][MAX_SEQUENCES]; +int network_check[MAX_ACTIONS][MAX_SEQUENCES]; +int network_device[MAX_ACTIONS]; + + + +/***************************************************************************** + * + * Subroutine declarations + * + *****************************************************************************/ + +int open_network(int box); +int close_network(int box); +int send_network(int device, char *buf, unsigned int timeout); +int read_network(int device, char *buf, size_t buf_len, unsigned int timeout); +int network_connected(int device); + +int check_network__(char *line, int *length); + +int logit(); + + + +/***************************************************************************** + * + * check_network + * + * check the line from the ibad.ctl file --- return immediately with '0' + * if it is not a network-controlled device, otherwise process the line + * and return the assigned index in the network device tables or '-1' + * in case of an error + * + *****************************************************************************/ + +int check_network__(char *line, int *length) { + + char setup[512], string[512], address[128], port[128], commands[512]; + char separator[2], *p, *p1; + int action, device; + int i; + + /* Copy over the line to our work string */ + + if ( *length >= sizeof(setup) ) { + logit("Too large lines in file ibad.ctl", 0, NULL); + return(-1); + } + + strncpy(setup, line, *length); + setup[*length] = '\0'; + + logit(setup, 0, NULL); + + /* Return immediately, if this is not a network device */ + + if ( strncmp(&setup[3], "net", 3) != 0 ) + return(0); + + /* Verify that we don't have too many network device actions */ + + if ( ++network_actions >= MAX_ACTIONS ) { + logit("Too many network device actions declared in file ibad.ctl", 0, NULL); + snprintf(string, sizeof(string), "Offending line: '%s'", setup); + logit(string, 0, NULL); + return(-1); + } + + /* Store the mnemonic of the new network device action action --- note that + we don't use element '0' since we want positive numbers */ + + action = network_actions; + + strncpy(network_mnemonic[action], setup, 2); + network_mnemonic[action][2] = '\0'; + + /* Get the IP-address of the network device --- let's use strtok to split + the string */ + + strtok(setup, ","); + + if ( ( p = strtok(NULL, ",") ) == NULL ) { + logit("No comma after word 'net' in file ibad.ctl", 0, NULL); + snprintf(string, sizeof(string), "Offending line: '%s'", setup); + logit(string, 0, NULL); + return(-1); + } + + strncpy(address, p, sizeof(address)); + + /* Now get the port number from the string */ + + if ( ( p = strtok(NULL, ",") ) == NULL ) { + logit("No comma after IP-address in file ibad.ctl", 0, NULL); + snprintf(string, sizeof(string), "Offending line: '%s'", setup); + logit(string, 0, NULL); + return(-1); + } + + strncpy(port, p, sizeof(port)); + + /* Now get the command sequence from the string --- note that we change + the delimiter since commands may contain commas */ + + if ( ( p = strtok(NULL, "\n") ) == NULL ) { + logit("No comma after port-number in file ibad.ctl", 0, NULL); + snprintf(string, sizeof(string), "Offending line: '%s'", setup); + logit(string, 0, NULL); + return(-1); + } + + strncpy(commands, p, sizeof(commands)); + + /* Check if we already have registered this network device or if it is + a new one */ + + device = -1; + + for ( i = 0 ; i < network_devices ; i++ ) + if ( strcmp(network_address[i], address) == 0 ) + device = i; + + if ( device == -1 ) { + if ( strlen(address) >= sizeof(network_address[0]) ) { + logit("Bad IP-address in file ibad.ctl", 0, NULL); + snprintf(string, sizeof(string), "Offending line: '%s'", setup); + logit(string, 0, NULL); + return(-1); + } + if ( strlen(port) >= sizeof(network_port[0]) ) { + logit("Bad port-number in file ibad.ctl", 0, NULL); + snprintf(string, sizeof(string), "Offending line: '%s'", setup); + logit(string, 0, NULL); + return(-1); + } + device = network_devices++; + strcpy(network_address[device], address); + strcpy(network_port[device], port); + network_socket[device] = -1; + /* + if ( open_network(device) < 0 ) { + snprintf(string, sizeof(string), "Failed to open socket to network " + "device at '%s' port '%s' for action '%s'", + network_address[device], network_port[device], + network_mnemonic[action]); + logit(string, 0, NULL); + logit("ERROR", errno, "un"); + } + */ + } + + network_device[action] = device; + + /* Split up and store the network device action command sequence */ + + p1 = commands; + i = 0; + + separator[0] = *p1++; + separator[1] = '\0'; + + while ( ( p = strtok(p1, separator) ) != NULL ) { + if ( i + 1 >= MAX_SEQUENCES ) { + logit("Too many commands for network device in file ibad.ctl", 0, NULL); + snprintf(string, sizeof(string), "Offending line: '%s'", setup); + logit(string, 0, NULL); + return(-1); + } + network_sequence[action][i] = (char *) malloc(strlen(p) + 1); + strcpy(network_sequence[action][i], p); + network_check[action][i] = 0; + if ( network_sequence[action][i][strlen(p)-1] == '&' ) { + network_sequence[action][i][strlen(p)-1] = '\0'; + network_check[action][i] = 1; + } + i++; + p1 = NULL; + } + + network_sequence[action][i] = NULL; + + /* Write a message to the log */ + + sprintf(string, "initiated action %s on network device %s port %s " + "(%d commands)", network_mnemonic[action], network_address[device], + network_port[device], i); + logit(string, 0, NULL); + + return(action); +} diff --git a/ibcon/handle_network.c b/ibcon/handle_network.c new file mode 100644 index 000000000..d198ecfe4 --- /dev/null +++ b/ibcon/handle_network.c @@ -0,0 +1,231 @@ +/***************************************************************************** + * + * FILE: handle_network.c + * + * Handle communication with a network-controlled device. + * + * This procedure is part of the 'ibcon' program. + * + * The use of network-controlled devices is described in + * the 'check_network.c' routine. + * + * HISTORY + * + * who when what + * --------- ----------- ---------------------------------------------- + * lerner 26 Jul 2012 Original version + * lerner 7 Feb 2013 Added user-specified port-number to enable + * communication with network-based devices + * lerner 27 Apr 2021 Adapted for inclusion in FS10 + * + *****************************************************************************/ + +#include +#include +#include +#include + + + +/***************************************************************************** + * + * Macros + * + *****************************************************************************/ + +#define MAX_ACTIONS 50 +#define MAX_SEQUENCES 20 + +#define SEND_TIMEOUT 2 +#define READ_TIMEOUT 3 +#define MAX_READ_LENGTH 80 + + + +/***************************************************************************** + * + * Global variables + * + *****************************************************************************/ + +/* Network device variables --- set up by 'check_network.c' */ + +extern char network_address[MAX_ACTIONS][16]; +extern char network_port[MAX_ACTIONS][8]; +extern int network_socket[MAX_ACTIONS]; + +/* Network action variables --- set up by 'check_network.c' */ + +extern char network_mnemonic[MAX_ACTIONS][3]; +extern char *network_sequence[MAX_ACTIONS][MAX_SEQUENCES]; +extern int network_check[MAX_ACTIONS][MAX_SEQUENCES]; +extern int network_device[MAX_ACTIONS]; + + + +/***************************************************************************** + * + * Subroutine declarations + * + *****************************************************************************/ + +int open_network(int box); +int close_network(int box); +int send_network(int device, char *buf, unsigned int timeout); +int read_network(int device, char *buf, size_t buf_len, unsigned int timeout); +int network_connected(int device); + +int handle_network__(char *line, int *length, int *device, int *ierr, + long *ipcode); + +int logit(); + + + +/***************************************************************************** + * + * handle_network + * + * handle the communication with a network-controlled device using + * the sequence of commands specified in 'ibad.ctl' + * + *****************************************************************************/ + +int handle_network__(char *line, int *length, int *device, int *ierr, + long *ipcode) { + + char command[256], dynamic_command[256], string[512], error[256]; + int answer = 0, failed = 0; + int i, j; + + strncpy(dynamic_command, &line[4], *length-4); + dynamic_command[*length-4] = '\0'; + + /* Loop once or twice if we have a communication problem */ + + for ( i = 0 ; i == 0 || i == 1 && failed ; i++ ) { + + /* Open the connection with the network device, if we are not + connected --- bomb out if it fails */ + + if ( ! network_connected(*device) ) { + //logit("Trying to open network connection", 0, "un"); + if ( open_network(network_device[*device]) < 0 ) { + logit("ERROR", errno, "un"); + *ierr = -601; + memcpy((char *) ipcode, "PO", 2); + return(-1); + } + } + + /* Send the sequence of commands --- if we encounter a problem, then stop + and repeat the outer loop once --- if this is already the second + loop and we still have problems, then bomb out */ + + for ( j = 0 ; network_sequence[*device][j] != NULL ; j++ ) { + strcpy(command, network_sequence[*device][j]); + + /* Read a reply from the network device, if we are expecting a reply */ + + if ( strcmp(command, "$$") == 0 ) { + if ( read_network(*device, line, MAX_READ_LENGTH, + READ_TIMEOUT) < 0 ) { + if ( failed ) { + logit("ERROR failed to read from network device", 0, "un"); + *ierr = -603; + memcpy((char *) ipcode, "PR", 2); + close_network(network_device[*device]); + return(-1); + } + logit("Will try to reopen network communication", 0, "un"); + failed = 1; + break; + } else { + *length = strlen(line); + answer = 1; + } + } else { + + /* Insert the command we have been called with into the command + sequence, if we have been told to do that */ + + if ( strcmp(command, "##") == 0 ) { + if ( strlen(dynamic_command) == 0 ) { + logit("ERROR no command provided to network device", 0, "un"); + *ierr = -604; + memcpy((char *) ipcode, "PN", 2); + close_network(network_device[*device]); + return(-1); + } + strcpy(command, dynamic_command); + } + + /* Send the command to the network device */ + + if ( send_network(*device, command, SEND_TIMEOUT) < 0 ) { + if ( failed ) { + logit("ERROR failed to send command to network device", 0, "un"); + *ierr = -602; + memcpy((char *) ipcode, "PW", 2); + close_network(network_device[*device]); + return(-1); + } + logit("Will try to reopen network communication", 0, "un"); + failed = 1; + break; + } + } + + /* Send the error checking command, if we are supposed to do that */ + + if ( network_check[*device][j] ) { + if ( send_network(*device, ":SYST:ERR?", SEND_TIMEOUT) < 0 ) { + snprintf(string, sizeof(string), "WARNING failed when sending an " + "error checking command after command '%s'!", command); + logit(string, 0, NULL); + if ( failed ) { + logit("ERROR failed to send command to network device", 0, "un"); + *ierr = -602; + memcpy((char *) ipcode, "PW", 2); + close_network(network_device[*device]); + return(-1); + } + logit("Will try to reopen network communication", 0, "un"); + failed = 1; + break; + } else { + if ( read_network(*device, error, sizeof(error) - 1, + READ_TIMEOUT) < 0 ) { + snprintf(string, sizeof(string), "WARNING failed reading out the " + "result from the error checking command sent after " + "command '%s'!", command); + logit(string, 0, NULL); + if ( failed ) { + logit("ERROR failed to read from network device", 0, "un"); + *ierr = -603; + memcpy((char *) ipcode, "PR", 2); + close_network(network_device[*device]); + return(-1); + } + logit("Will try to reopen network communication", 0, "un"); + failed = 1; + break; + } else if ( strncmp(error, "+0", 2) != 0 && + strncmp(error, "0", 1) != 0 ) { + snprintf(string, sizeof(string), "WARNING received error message " + "'%s' after sending command '%s'!", error, command); + logit(string, 0, NULL); + } + } + } + + } + + } + + logit("Closing network connection after successful communication", 0, "un"); + + close_network(network_device[*device]); + + return(answer); +} diff --git a/ibcon/ibcon.f b/ibcon/ibcon.f index 63b1df467..f46501933 100644 --- a/ibcon/ibcon.f +++ b/ibcon/ibcon.f @@ -26,6 +26,8 @@ program ibcon C initializing MODTBL C JFHQ 940124 Re-fixed Read/Write buffer truncation bugs C DMV 941213 removed nchr2, changed logic of if statements, +C Lerner 2012-07-26 Included support for network devices +C Lerner 2021-04-27 Added new 2020 header and adapted for 64-bit C C PROGRAM STRUCTURE C 1.1. IBCON controls the I/O to the GP Interface Bus @@ -94,29 +96,33 @@ program ibcon integer*2 ibuf(ibufln),ibuf2(ibufln),istatk4(2),irdk4,ilvk4,ilck4 C - buffers for reading, writing C ILEN - length of above buffers - logical kini, kfirst, kgpib + logical kini, kfirst, kgpib, no_board C - TRUE once we have initialized C - TRUE on the first time through, C - TRUE until I know the gpib driver isn't installed +C - TRUE until we know whether the GPIB-board is needed C NDEV - # devices in module table parameter (idevln=32) C length of device file names, up to 64 characters - parameter (imaxdev=16) -C maximum number of devices on IEEE board +C parameter (imaxdev=16) + parameter (imaxdev=64) +C maximum number of devices on IEEE board - increased for network devices integer iscn_ch, ichmv, icomma, iend, iflch integer idlen,it(6) integer rddev, opbrd, iserial,opdev, wrdev, idum,statbrd,rspdev + integer check_network, handle_network integer fc_rte_prior, no_after, no_online, no_write_ren integer no_w_ren_glbl integer set_remote_enable,no_interface_clear_board integer interface_clear_converter,interface_clear_after_read + integer device, status double precision timnow,timlst(imaxdev) integer*4 oldcmd(imaxdev) integer*2 moddev(imaxdev,idevln) C - module device name integer idevid(imaxdev) C - device ids when opened - integer*2 modtbl(3,imaxdev) + integer*2 modtbl(4,imaxdev) C - module table, word 1 = mnemonic, C word 2 = 0 for talk/listen devices C 1 for talk-only devices @@ -124,6 +130,7 @@ program ibcon C +4 if SRQ supported C +8 if no_write_ren for this device C word 3 time-out value +C word 4 index in network table or '0' to indicate GPIB-board integer tmotbl(16) C table of time-out values microseconds C =0 disabled @@ -136,6 +143,7 @@ program ibcon C 5. INITIALIZED VARIABLES C data kini/.false./,kfirst/.true./,kgpib/.true./ + data no_board /.true./ data minmod/0/, maxmod/12/ data ilen/512/ data tmotbl/0,10,30,100,300,1000,3000,10000, 30000, 100000, @@ -220,6 +228,18 @@ program ibcon goto 151 endif modtbl(1,icount) = ibuf(1) +C Let's escape to a C function to check if we got a network-controlled +C device and process it, if that is the case --- the return value is either +C an index in the network-table, a zero to indicate a normal GPIB-board or +C '-1' to indicate an error + modtbl(4,icount) = check_network(ibuf, ireg) + write(*,*) 'Modtbl =',modtbl(4,icount) + if ( modtbl(4,icount).gt.0 ) then + goto 150 + else if ( modtbl(4,icount).lt.0 ) then + ierr = -3 + goto 1090 + end if C !! FIND COMMA AND MOVE DEVICE NAME INTO VARIABLE C !! IF THERE IS A COMMA, MOVE OPTION INTO VARIABLE icomma = iscn_ch(ibuf,4,ireg,',') @@ -250,6 +270,12 @@ program ibcon 151 continue C ndev = min0(icount,imaxdev) +C Check if we need to open the GPIB-board or if we only have +C network-controlled devices which have already been dealt with + do i=1,ndev + if ( modtbl(4,i).eq.0 ) no_board = .false. + end do + if ( no_board ) goto 1089 C call fs_get_idevgpib(idevgpib) if(ichcm_ch(idevgpib,1,'/dev/null ').eq.0) then @@ -269,7 +295,7 @@ program ibcon timlst(i)=it(1)+it(2)*100.+it(3)*60.d2+it(4)*3600.d2 oldcmd(i)=-1 enddo - kini = .true. + 1089 kini = .true. goto 1090 C C @@ -339,6 +365,24 @@ program ibcon if((imode.gt.4.and.imode.lt.9).or.imode.eq.11) then ilimit=min(ibuf(3),ibufln*2) endif +C +C Branch off to the network-handler, if the device is +C a network-controlled device and ignore the rest of this program +C A return of '1' from handle_network indicates that we have a reply +C we should pass back to the calling program, while a '0' indicates that +C a command was sent successfully, and '-1' that the communication failed + if ( modtbl(4,idev).gt.0 ) then + device = modtbl(4,idev) + status = handle_network(ibuf, ireg, device, ierr, ipcode) + if ( status.lt.0 ) goto 910 + if ( status.eq.1 ) then + nclrer = nclrer + 1 + idum = ichmv(ibuf2, 3, ibuf, 1, ireg) + ibuf2(1) = nadev !!MNEMONIC DEVICE NAME + call put_buf(iclasr, ibuf2, -ireg-2, ' ', ' ') + end if + goto 900 + end if C if(idev.gt.0) then call fc_rte_time(it,it(6)) diff --git a/ibcon/util_network.c b/ibcon/util_network.c new file mode 100644 index 000000000..ba3a20cf7 --- /dev/null +++ b/ibcon/util_network.c @@ -0,0 +1,572 @@ +/***************************************************************************** + * + * FILE: util_network.c + * + * Utility routines used when communicating with a network-controlled + * device. + * + * This procedure is part of the 'ibcon' program. + * + * The use of network-controlled devices is described in + * the 'check_network.c' routine. + * + * HISTORY + * + * who when what + * --------- ----------- ---------------------------------------------- + * lerner 26 Jul 2012 Original version (including a set of procedures + * written by Lars Pettersson) + * lerner 7 Feb 2013 Added user-specified port-number to enable + * communication with network-based devices + * lerner 27 Apr 2021 Adapted for inclusion in FS10 + * + *****************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include + + + +/***************************************************************************** + * + * Macros + * + *****************************************************************************/ + +#define MAX_ACTIONS 50 +#define MAX_SEQUENCES 20 + +#define CONNECT_TIMEOUT 5 + + + +/***************************************************************************** + * + * Global variables + * + *****************************************************************************/ + +/* Network device variables --- set up by 'check_network.c' */ + +extern char network_address[MAX_ACTIONS][16]; +extern char network_port[MAX_ACTIONS][8]; +extern int network_socket[MAX_ACTIONS]; + +/* Network action variables --- set up by 'check_network.c' */ + +extern char network_mnemonic[MAX_ACTIONS][3]; +extern char *network_sequence[MAX_ACTIONS][MAX_SEQUENCES]; +extern int network_check[MAX_ACTIONS][MAX_SEQUENCES]; +extern int network_device[MAX_ACTIONS]; + + + +/***************************************************************************** + * + * Subroutine declarations + * + *****************************************************************************/ + +/* Internal subroutines */ + +int connect_timeout(int sock, struct sockaddr *addr, socklen_t addrlen, + int seconds); +int open_connection(int *fd, char *host, char *host_port); +int recvtimeout(int socket, char *buf, size_t buf_len, unsigned int timeout); +int sendtimeout(int socket, char *buf, size_t buf_len, unsigned int timeout); + +/* Public subroutines */ + +int open_network(int box); +int close_network(int box); +int send_network(int device, char *buf, unsigned int timeout); +int read_network(int device, char *buf, size_t buf_len, unsigned int timeout); +int network_connected(int device); + +/* External subroutines */ + +int logit(); +int logita(); + + + +/***************************************************************************** + * + * connect_timeout + * + * this is an alternative 'connect' routine which allows you to set + * a time-out instead of having to wait many minutes on non-existing + * addresses as with the standard 'connect' + * + *****************************************************************************/ + +int connect_timeout(int sock, struct sockaddr *addr, socklen_t addrlen, + int seconds) { + + fd_set write_fd; + struct timeval timeout; + char string[512]; + unsigned long mode; + int status; + + /* Set up a non-blocking socket */ + + mode = 1; + + status = ioctl(sock, FIONBIO, &mode); + + if ( status != 0 ) { + snprintf(string, sizeof(string), "ioctl failed with error: %ld errno " + "= %d", status, errno); + logit(string, 0, NULL); + return(-1); + } + + /* Try the connect and return immediately if we get an error that is not + EINPROGRESS */ + + status = connect(sock, addr, addrlen); + + if ( status == -1 && errno != EINPROGRESS ) + return(-1); + + /* Reset the socket to blocking mode */ + + mode = 0; + + status = ioctl(sock, FIONBIO, &mode); + + if ( status != 0 ) { + snprintf(string, sizeof(string), "ioctl failed with error: %ld errno " + "= %d", status, errno); + logit(string, 0, NULL); + return(-1); + } + + /* Set up the time-out and the file descriptor list */ + + timeout.tv_sec = seconds; + timeout.tv_usec = 0; + + FD_ZERO(&write_fd); + FD_SET(sock, &write_fd); + + + /* Check if the socket is ready */ + + status = select(FD_SETSIZE, NULL, &write_fd, NULL, &timeout); + + if ( FD_ISSET(sock, &write_fd) ) + return(0); + + return(-1); +} + + + +/***************************************************************************** + * + * open_connection + * + * open the socket connection to a network device --- code written by + * Lars Pettersson with slight modifications + * + *****************************************************************************/ + +int open_connection(int *fd, char *host, char *host_port) +{ + struct addrinfo hints; + struct addrinfo *result, *rp; + char string[512]; + int opts, s; + + memset(&hints, 0, sizeof(struct addrinfo)); + hints.ai_family = AF_UNSPEC; /* Allow IPv4 or IPv6 */ + hints.ai_socktype = SOCK_STREAM; /* Stream (TCP) socket */ + hints.ai_flags = 0; + hints.ai_protocol = 0; /* Any protocol */ + + if ((s = getaddrinfo(host, host_port, &hints, &result))) { + snprintf(string, sizeof(string), "getaddrinfo() => %s", + gai_strerror(s)); + logit(string, 0, NULL); + return -1; + } + + /* getaddrinfo() returns a list of address structures. Try each + * address until we successfully connect(2). If socket(2) (or + * connect(2)) fails, we (close the socket and) try the next + * address. + */ + for (rp = result; rp != NULL; rp = rp->ai_next) { + + *fd = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol); + + if (*fd == -1) { + snprintf(string, sizeof(string), "socket() => %s", + strerror(errno)); + logit(string, 0, NULL); + continue; + } + + if (connect_timeout(*fd, rp->ai_addr, rp->ai_addrlen, + CONNECT_TIMEOUT) != -1) { + break; /* Success */ + } + + snprintf(string, sizeof(string), "connect() => %s", strerror(errno)); + logit(string, 0, NULL); + + close(*fd); + } + + freeaddrinfo(result); /* No longer needed */ + + if (rp == NULL) { /* No address succeeded */ + snprintf(string, sizeof(string), "open_connection() => could not " + "connect, no address succeeded"); + logit(string, 0, NULL); + *fd = -1; + return -1; + } + + if ((opts = fcntl(*fd, F_GETFL)) < 0) { + snprintf(string, sizeof(string), "fcntl(serv_sock, F_GETFL) => %s", + strerror(errno)); + logit(string, 0, NULL); + (void) close(*fd); + return -1; + } + opts |= O_NONBLOCK; + if (fcntl(*fd, F_SETFL, opts) < 0) { + snprintf(string, sizeof(string), "fcntl(serv_sock, F_SETFL, opts) => " + "%s", strerror(errno)); + logit(string, 0, NULL); + (void) close(*fd); + return -1; + } + + return 0; +} + + + +/***************************************************************************** + * + * recvtimeout + * + * receive a message from a network device with a time-out --- code written + * by Lars Pettersson with slight modifications + * + *****************************************************************************/ + +/* --- receive characters, but do not wait forever --- + * + * Returns: + * number of bytes received on success + * 0 if remote side has closed the connection + * -1 on error + * -2 on timeout + * -3 on select error + */ + +int recvtimeout(int socket, char *buf, size_t buf_len, unsigned int timeout) +{ + fd_set fds; + struct timeval tv; + + /* set up the file descriptor set */ + FD_ZERO(&fds); + FD_SET(socket, &fds); + + /* set up the timeval struct for the timeout */ + tv.tv_sec = timeout; + tv.tv_usec = 0; + + /* wait until timeout or data received */ + switch (select(socket + 1, &fds, NULL, NULL, &tv)) { + case 0: + /* timeout */ + return -2; + case -1: + /* error */ + return -3; + default: + /* data available */ + break; + } + return recv(socket, buf, buf_len, 0); +} + + + +/***************************************************************************** + * + * sendtimeout + * + * send a message to a network device with a time-out --- code written + * by Lars Pettersson with slight modifications + * + *****************************************************************************/ + +/* --- send characters, but do not wait forever --- + * + * Returns: + * number of bytes received on success + * 0 if remote side has closed the connection + * -1 on error + * -2 on timeout + * -3 on select error + */ + +int sendtimeout(int socket, char *buf, size_t buf_len, unsigned int timeout) +{ + fd_set fds; + struct timeval tv; + + /* set up the file descriptor set */ + FD_ZERO(&fds); + FD_SET(socket, &fds); + + /* set up the timeval struct for the timeout */ + tv.tv_sec = timeout; + tv.tv_usec = 0; + + /* wait until timeout or data received */ + switch (select(socket + 1, NULL, &fds, NULL, &tv)) { + case 0: + /* timeout */ + return -2; + case -1: + /* error */ + return -3; + default: + /* data available */ + break; + } + return send(socket, buf, buf_len, 0); +} + + + +/* Wrappers to Lars Pettersson's procedures */ + +/***************************************************************************** + * + * open_network + * + * open a socket for communication with a network device --- return status + * is either '0' or '-1' + * + *****************************************************************************/ + +int open_network(int box) { + + char string[512]; + int status; + + snprintf(string, sizeof(string), "Opening socket to network device at %s " + "port %s ...", network_address[box], network_port[box]); + logit(string, 0, NULL); + + status = open_connection(&network_socket[box], network_address[box], + network_port[box]); + + if ( status < 0 ) { + logit("Failed opening socket!", 0, NULL); + network_socket[box] = -1; + } +// } else +// logit("Socket successfully opened", 0, NULL); + + return(status); +} + + + +/***************************************************************************** + * + * close_network + * + * close the socket used for communication with a network device, if it is + * open --- return status is always '0' + * + *****************************************************************************/ + +int close_network(int box) { + + if ( network_socket[box] > -1 ) + close(network_socket[box]); + + network_socket[box] = -1; + + return(0); +} + + + +/***************************************************************************** + * + * send_network + * + * send a message to the network device --- the message should be given + * in 'buf' --- 'timeout' is specified in integer seconds --- return + * status is either '0' or '-1' --- in case of any error, this procedure + * will send an error message to the log and close the socket + * communication + * + *****************************************************************************/ + +int send_network(int device, char *buf, unsigned int timeout) { + + char string[512]; + int box, status, length; + + box = network_device[device]; + +/* Verify that we are connected --- if we are not then there should be + a programming error, so we just bomb out of here */ + + if ( network_socket[box] == -1 ) { + logita("ERROR network device send called without previous connect", 0, "ib", + "P0"); + return(-1); + } + +/* Send the message to the network device */ + + length = snprintf(string, sizeof(string), "%s\n", buf); + + status = sendtimeout(network_socket[box], string, length, timeout); + +/* Return immediately if everything went fine */ + + if ( status == length ) + return(0); + +/* Report the error */ + + if ( status == -2 ) { + logita("WARNING time-out on network device send", 0, "ib", "P1"); + } else if ( status == -3 ) { + logita("WARNING select error on network device send", 0, "ib", "P2"); + logita(NULL, errno, "ib", "P2"); + } else if ( status == -1 ) { + logita("WARNING send error on network device send", 0, "ib", "P3"); + logita(NULL, errno, "ib", "P3"); + } else if ( status == 0 ) { + logita("WARNING connection closed on network device send", 0, "ib", "P4"); + } else if ( status < length ) { + snprintf(string, sizeof(string), "WARNING only %d bytes of %d sent to " + "network device", status, length); + logita(string, 0, "ib", "P5"); + } else { + logita("ERROR weird error on network device send", 0, "ib", "P6"); + } + +/* Close the socket to the network device */ + + close_network(box); + + return(-1); +} + + + +/***************************************************************************** + * + * read_network + * + * read a message from the network device --- the message will be stored + * in 'buf' and the length of 'buf' should be specified in 'buf_len' --- + * 'timeout' is specified in integer seconds --- return status is either + * '0' or '-1' --- in case of any error, this procedure will send + * an error message to the log and close the socket communication + * + *****************************************************************************/ + +int read_network(int device, char *buf, size_t buf_len, unsigned int timeout) { + + char string[256]; + int box, status; + + box = network_device[device]; + +/* Verify that we are connected --- if we are not then there should be + a programming error, so we just bomb out of here */ + + if ( network_socket[box] == -1 ) { + logita("ERROR network device read called without previous connect", 0, "ib", + "P0"); + return(-1); + } + +/* Read the message from the network device */ + + status = recvtimeout(network_socket[box], buf, buf_len, timeout); + +/* Process the message and return if we managed to read something --- + the processing consists of stripping any trailing new-line character + and adding a string termination character */ + + if ( status > 0 ) { + if ( buf[status-1] == '\n' ) + buf[--status] = '\0'; + if ( buf[status-1] == '\r' ) + buf[--status] = '\0'; + if ( status < buf_len ) + buf[status] = '\0'; + return(0); + } + +/* Report the error */ + + if ( status == -2 ) { + logita("WARNING time-out on network device read", 0, "ib", "P1"); + } else if ( status == -3 ) { + logita("WARNING select error on network device read", 0, "ib", "P2"); + logita(NULL, errno, "ib", "P2"); + } else if ( status == -1 ) { + logita("WARNING read error on network device read", 0, "ib", "P3"); + logita(NULL, errno, "ib", "P3"); + } else if ( status == 0 ) { + logita("WARNING connection closed on network device read", 0, "ib", "P4"); + } else { + logita("ERROR weird error on network device read", 0, "ib", "P6"); + } + +/* Close the socket to the network device */ + + close_network(box); + + return(-1); +} + + + +/***************************************************************************** + * + * network_connected + * + * returns a '1' if the socket for communication with the network device is + * open and '0' otherwise + * + *****************************************************************************/ + +int network_connected(int device) { + + int box; + + box = network_device[device]; + + if ( network_socket[box] == -1 ) + return(0); + + return(1); +} diff --git a/misc/general_ibcon.pdf b/misc/general_ibcon.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1902bfa109213239be3b14f7fcc3021d9b06da99 GIT binary patch literal 104190 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