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;