/****************************************************************************
 *******                                                              *******
 *******            P A C K E T   H E A D E R   F I L E
 *******                                                              *******
 ****************************************************************************

 Author  : Ian Nandhra / Jeremy Rolls
 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 _pkt_h
#define _pkt_h 1


#ifdef SCCS_LABELS
#ifndef lint
/* static char *_rio_pkt_h_sccs = "@(#)pkt.h	1.8"; */
#endif
#endif

#define MAX_TTL         0xf
#define PKT_CMD_BIT     ((ushort) 0x080)
#define PKT_CMD_DATA    ((ushort) 0x080)

#define PKT_ACK         ((ushort) 0x040)

#define PKT_TGL         ((ushort) 0x020)

#define PKT_LEN_MASK    ((ushort) 0x07f)

#define DATA_WNDW       ((ushort) 0x10)
#define PKT_TTL_MASK    ((ushort) 0x0f)

#define PKT_MAX_DATA_LEN   72

#define PKT_LENGTH         sizeof(struct PKT)
#define SYNC_PKT_LENGTH    (PKT_LENGTH + 4)

#define CONTROL_PKT_LEN_MASK PKT_LEN_MASK
#define CONTROL_PKT_CMD_BIT  PKT_CMD_BIT
#define CONTROL_PKT_ACK (PKT_ACK << 8)
#define CONTROL_PKT_TGL (PKT_TGL << 8)
#define CONTROL_PKT_TTL_MASK (PKT_TTL_MASK << 8)
#define CONTROL_DATA_WNDW  (DATA_WNDW << 8)

struct PKT    {
#ifdef INKERNEL
                   BYTE    dest_unit ;    /* Destination Unit Id */
                   BYTE    dest_port ;    /* Destination POrt */
                   BYTE    src_unit ;     /* Source Unit Id */
                   BYTE    src_port ;     /* Source POrt */
#else
                   union       
                   {
                       ushort destination;         /* Complete destination */
                       struct
                       {
                           unsigned char unit;     /* Destination unit */
                           unsigned char port;     /* Destination port */
                       } s1;
                   } u1;
                   union       
                   {
                       ushort source;              /* Complete source */
                       struct
                       {
                           unsigned char unit;     /* Source unit */
                           unsigned char port;     /* Source port */
                       } s2;
                   } u2;
#endif
#ifdef INKERNEL
                   BYTE len ;
                   BYTE control;
#else
                   union
                   {
                        ushort      control;
                        struct
                        {
                            unsigned char len;
                            unsigned char control;
                        } s3;
                    } u3;
#endif
                   BYTE    data[PKT_MAX_DATA_LEN] ;     
                                                   /* Actual data :-) */
                   WORD  csum ;                  /* C-SUM */
               } ;
#endif

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


