/****************************************************************************
 *******                                                              *******
 *******               R U P   S T R U C T U R E
 *******                                                              *******
 ****************************************************************************

 Author  : Ian Nandhra
 Date    :

 *
 *  (C) 1990 - 2000 Specialix International Ltd., Byfleet, Surrey, UK.
 *
 *      This program is free software; you can redistribute it and/or modify
 *      it under the terms of the GNU General Public License as published by
 *      the Free Software Foundation; either version 2 of the License, or
 *      (at your option) any later version.
 *
 *      This program is distributed in the hope that it will be useful,
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *      GNU General Public License for more details.
 *
 *      You should have received a copy of the GNU General Public License
 *      along with this program; if not, write to the Free Software
 *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

 Version : 0.01


                            Mods
 ----------------------------------------------------------------------------
  Date     By                Description
 ----------------------------------------------------------------------------

 ***************************************************************************/

#ifndef _rup_h
#define _rup_h 1

#ifdef SCCS_LABELS
#ifndef lint
/* static char *_rio_rup_h_sccs = "@(#)rup.h	1.5"; */
#endif
#endif

#if defined( HOST ) || defined( INKERNEL )
#define MAX_RUP          ((short) 16) 
#endif
#ifdef RTA
#define MAX_RUP          ((short) 1)
#endif

#define PKTS_PER_RUP     ((short) 2)     /* They are always used in pairs */

/*************************************************
 * Define all the  packet request stuff
 ************************************************/
#define TX_RUP_INACTIVE          0        /* Nothing to transmit */
#define TX_PACKET_READY          1        /* Transmit packet ready */
#define TX_LOCK_RUP              2        /* Transmit side locked */

#define RX_RUP_INACTIVE          0        /* Nothing received */
#define RX_PACKET_READY          1        /* Packet received */

#define RUP_NO_OWNER             0xff     /* RUP not owned by any process */

struct RUP {
             PKT_ptr    txpkt;            /* Outgoing packet */
             PKT_ptr    rxpkt;            /* Incoming packet */
             WORD       link;             /* Which link to send down? */
             BYTE       rup_dest_unit[2]; /* Destination unit */
             WORD       handshake;        /* For handshaking */
             WORD       timeout;          /* Timeout */
             WORD       status;           /* Status */
             WORD       txcontrol;        /* Transmit control */
             WORD       rxcontrol;        /* Receive control */
           };
 
#endif

/*********** end of file ***********/

