Blame | Last modification | View Log | RSS feed
/* This file, vxi11.x, is the amalgamation of vxi11core.rpcl and vxi11intr.rpcl* which are part of the asynDriver (R4-5) EPICS module, which, at time of* writing, is available from:* http://www.aps.anl.gov/epics/modules/soft/asyn/index.html* More general information about EPICS is available from:* http://www.aps.anl.gov/epics/* This code is open source, and is covered under the copyright notice and* software license agreement shown below, and also at:* http://www.aps.anl.gov/epics/license/open.php** In order to comply with section 4.3 of the software license agreement, here* is a PROMINENT NOTICE OF CHNAGES TO THE SOFTWARE* ===========================================* (1) This file, vxi11.x, is the concatenation of the files vxi11core.rpcl and* vxi11intr.rpcl* (2) Tab spacing has been tidied up** It is intended as a lightweight base for the vxi11 rpc protocol. If you* run rpcgen on this file, it will generate C files and headers, from which* it is relatively simple to write C programs to communicate with a range* of ethernet-enabled instruments, such as oscilloscopes and function* generated by manufacturers such as Agilent and Tektronix (amongst many* others).** For what it's worth, this concatenation was done by Steve Sharples at* the University of Nottingham, UK, on 1 June 2006.** Copyright notice and software license agreement follow, then the* original comments from vxi11core.rpcl etc.******************************************************************************** Copyright © 2006 <University of Chicago and other copyright holders>. All* rights reserved.************************************************************************************************************************************************************** vxi11.x is distributed subject to the following license conditions:* SOFTWARE LICENSE AGREEMENT* Software: vxi11.x** 1. The "Software", below, refers to vxi11.x (in either source code, or* binary form and accompanying documentation). Each licensee is addressed* as "you" or "Licensee."** 2. The copyright holders shown above and their third-party licensors hereby* grant Licensee a royalty-free nonexclusive license, subject to the* limitations stated herein and U.S. Government license rights.** 3. You may modify and make a copy or copies of the Software for use within* your organization, if you meet the following conditions:* 1. Copies in source code must include the copyright notice and this* Software License Agreement.* 2. Copies in binary form must include the copyright notice and this* Software License Agreement in the documentation and/or other* materials provided with the copy.** 4. You may modify a copy or copies of the Software or any portion of it,* thus forming a work based on the Software, and distribute copies of such* work outside your organization, if you meet all of the following* conditions:* 1. Copies in source code must include the copyright notice and this* Software License Agreement;* 2. Copies in binary form must include the copyright notice and this* Software License Agreement in the documentation and/or other* materials provided with the copy;* 3. Modified copies and works based on the Software must carry* prominent notices stating that you changed specified portions of* the Software.** 5. Portions of the Software resulted from work developed under a U.S.* Government contract and are subject to the following license: the* Government is granted for itself and others acting on its behalf a* paid-up, nonexclusive, irrevocable worldwide license in this computer* software to reproduce, prepare derivative works, and perform publicly* and display publicly.** 6. WARRANTY DISCLAIMER. THE SOFTWARE IS SUPPLIED "AS IS" WITHOUT WARRANTY OF* ANY KIND. THE COPYRIGHT HOLDERS, THEIR THIRD PARTY LICENSORS, THE UNITED* STATES, THE UNITED STATES DEPARTMENT OF ENERGY, AND THEIR EMPLOYEES: (1)* DISCLAIM ANY WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO* ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR* PURPOSE, TITLE OR NON-INFRINGEMENT, (2) DO NOT ASSUME ANY LEGAL LIABILITY* OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR USEFULNESS OF THE* SOFTWARE, (3) DO NOT REPRESENT THAT USE OF THE SOFTWARE WOULD NOT INFRINGE* PRIVATELY OWNED RIGHTS, (4) DO NOT WARRANT THAT THE SOFTWARE WILL FUNCTION* UNINTERRUPTED, THAT IT IS ERROR-FREE OR THAT ANY ERRORS WILL BE CORRECTED.** 7. LIMITATION OF LIABILITY. IN NO EVENT WILL THE COPYRIGHT HOLDERS, THEIR* THIRD PARTY LICENSORS, THE UNITED STATES, THE UNITED STATES DEPARTMENT OF* ENERGY, OR THEIR EMPLOYEES: BE LIABLE FOR ANY INDIRECT, INCIDENTAL,* CONSEQUENTIAL, SPECIAL OR PUNITIVE DAMAGES OF ANY KIND OR NATURE,* INCLUDING BUT NOT LIMITED TO LOSS OF PROFITS OR LOSS OF DATA, FOR ANY* REASON WHATSOEVER, WHETHER SUCH LIABILITY IS ASSERTED ON THE BASIS OF* CONTRACT, TORT (INCLUDING NEGLIGENCE OR STRICT LIABILITY), OR OTHERWISE,* EVEN IF ANY OF SAID PARTIES HAS BEEN WARNED OF THE POSSIBILITY OF SUCH* LOSS OR DAMAGES.*******************************************************************************//******************************************************************************** vxi11core.rpcl** This file is best viewed with a tabwidth of 4********************************************************************************* TODO:********************************************************************************* Original Author: someone from VXIbus Consortium* Current Author: Benjamin Franksen* Date: 03-06-97** RPCL description of the core- and abort-channel of the TCP/IP Instrument* Protocol Specification.*** Modification Log:* -----------------* .00 03-06-97 bfr created this file********************************************************************************* Notes:** This stuff is literally from** VXI-11, Ref 1.0 : TCP/IP Instrument Protocol 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 for 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; /* max # of bytes accepted on 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; /* flags with options */opaque data<>; /* the data length and the data itself */};struct Device_WriteResp{Device_ErrorCode error;unsigned long size; /* # of bytes written */};struct Device_ReadParms{Device_Link lid; /* link id from create_link */unsigned long requestSize; /* # of bytes requested */unsigned long io_timeout; /* time to wait for I/O */unsigned long lock_timeout; /* time to wait for lock */Device_Flags flags; /* flags with options */char termChar; /* valid if flags & termchrset */};struct Device_ReadResp{Device_ErrorCode error;long reason; /* why read completed */opaque data<>; /* the data length and the data itself */};struct Device_ReadStbResp{Device_ErrorCode error;unsigned char stb; /* the returned status byte */};struct Device_GenericParms{Device_Link lid; /* link id from create_link */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 long 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; /* link id from create_link */bool enable; /* enable or disable intr's */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 for lock */};struct Device_DocmdParms{Device_Link lid; /* link id from create_link */Device_Flags flags; /* flags with options */unsigned long io_timeout; /* time to wait for I/O */unsigned long lock_timeout; /* time to wait for 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;opaque data_out<>; /* returned data parameters */};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;/******************************************************************************** vxi11intr.rpcl** This file is best viewed with a tabwidth of 4********************************************************************************* TODO:********************************************************************************* Original Author: someone from VXIbus Consortium* Current Author: Benjamin Franksen* Date: 03-06-97** RPCL description of the intr-channel of the TCP/IP Instrument Protocol* Specification.*** Modification Log:* -----------------* .00 03-06-97 bfr created this file********************************************************************************* Notes:** This stuff is literally from** "VXI-11, Ref 1.0 : TCP/IP Instrument Protocol Specification"**/struct Device_SrqParms{opaque handle<>;};program DEVICE_INTR{version DEVICE_INTR_VERSION{void device_intr_srq (Device_SrqParms) = 30;} = 1;} = 0x0607B1;