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

 @(#) devi.h,v 0.7.8.1 2001/12/11 13:16:04 brian Exp

 -----------------------------------------------------------------------------

     Copyright (C) 1997-2001 OpenSS7 Corporation.  All Rights Reserved.


                                  PUBLIC LICENSE

     This license is provided without fee, provided that the above copy-
     right notice and this public license must be retained on all copies,
     extracts, compilations and derivative works.  Use or distribution of
     this work in a manner that restricts its use except as provided here
     will render this license void.

     The author(s) hereby waive any and all other restrictions in respect
     of their copyright in this software and its associated documentation.
     The authors(s) of this software place in the public domain any novel
     methods or processes which are embodied in this software.

     The author(s) undertook to write it for the sake of the advancement
     of the Arts and Sciences, but it is provided as is, and the author(s)
     will not take any responsibility in it.

 -----------------------------------------------------------------------------

 U.S. GOVERNMENT RESTRICTED RIGHTS.  If you are licensing this Software on
 behalf of the U.S. Government ("Government"), the following provisions apply
 to you.  If the Software is supplied by the Department of Defense ("DoD"), it
 is classified as "Commercial Computer Software" under paragraph 252.227-7014
 of the DoD Supplement to the Federal Acquisition Regulations ("DFARS") (or any
 successor regulations) and the Government is acquiring only the license rights
 granted herein (the license rights customarily provided to non-Government
 users).  If the Software is supplied to any unit or agency of the Government
 other than DoD, it is classified as "Restricted Computer Software" and the
 Government's rights in the Software are defined in paragraph 52.227-19 of the
 Federal Acquisition Regulations ("FAR") (or any success regulations) or, in
 the cases of NASA, in paragraph 18.52.227-86 of the NASA Supplement to the FAR
 (or any successor regulations).

 -----------------------------------------------------------------------------

 Last Modified 2001/12/11 13:16:04 by brian

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

#ifndef __DEVI_H__
#define __DEVI_H__

#ident "@(#) SS7AlphaRelease(0.7.8.1) Copyright (c) 1997-2001 OpenSS7 Corporation."

typedef unsigned long  dev_long;
typedef unsigned long  dev_ulong;
typedef unsigned short dev_ushort;
typedef unsigned char  dev_uchar;

#define DEV_PROTO_BASE                      0L
#define DEV_DSTR_FIRST                      ( 1L + DEV_PROTO_BASE)
#define DEV_TX_FRAME_REQ                    ( 1L + DEV_PROTO_BASE)
#define DEV_RX_ENABLE_REQ                   ( 2L + DEV_PROTO_BASE)
#define DEV_TX_ENABLE_REQ                   ( 3L + DEV_PROTO_BASE)
#define DEV_DSTR_LAST                       ( 3L + DEV_PROTO_BASE)

#define DEV_USTR_LAST                       (-1L - DEV_PROTO_BASE)
#define DEV_RX_FRAME_IND                    (-2L - DEV_PROTO_BASE)
#define DEV_RX_COMPRESSED_FRAME_IND         (-3L - DEV_PROTO_BASE)
#define DEV_RX_ERROR_FRAME_IND              (-4L - DEV_PROTO_BASE)
#define DEV_RX_LOSS_OF_SYNC_IND             (-5L - DEV_PROTO_BASE)
#define DEV_RX_N_OCTETS_IND                 (-6L - DEV_PROTO_BASE)
#define DEV_TX_REQUEST_IND                  (-7L - DEV_PROTO_BASE)
#define DEV_USTR_FIRST                      (-7L - DEV_PROTO_BASE)

/*
 *  DEVI PROTOCOL PRIMITIVES
 */

/*
 *  DEV_TX_FRAME_REQ, M_PROTO, M_PCPROTO (M_DATA)
 */
typedef struct {
    dev_long    primitive;
} dev_tx_frame_req_t;

/*
 *  DEV_RX_ENABLE_REQ, M_PCPROTO
 */
typedef struct {
    dev_long    primitive;
} dev_rx_enable_req_t;

/*
 *  DEV_TX_ENABLE_REQ, M_PCPROTO
 */
typedef struct {
    dev_long    primitive;
} dev_tx_enable_req_t;

/*
 *  DEV_RX_FRAME_IND, M_PROTO, M_PCPROTO (M_DATA)
 */
typedef struct {
    dev_long    primitive;
} dev_rx_frame_ind_t;

/*
 *  DEV_RX_COMPRESSED_FRAME_IND, M_PROTO, M_PCPROTO and M_DATA
 */
typedef struct {
    dev_long    primitive;
    dev_ulong   count;
} dev_rx_compressed_frame_ind_t;

/*
 *  DEV_RX_ERROR_FRAME_IND, M_PCPROTO
 */
typedef struct {
    dev_long    primitive;
} dev_rx_error_frame_ind_t;

/*
 *  DEV_RX_LOSS_OF_SYNC_IND, M_PCPROTO
 */
typedef struct {
    dev_long    primitive;
} dev_rx_loss_of_sync_ind_t;

/*
 *  DEV_RX_N_OCTETS_IND, M_PCPROTO
 */
typedef struct {
    dev_long    primitive;
} dev_rx_n_octets_ind_t;

/*
 *  DEV_TX_REQUEST_IND, M_PCPROTO
 */
typedef struct {
    dev_long    primitive;
} dev_tx_request_ind_t;

union DEV_primitives {
    dev_long                        primitive;
    dev_tx_frame_req_t              tx_frame_req;
    dev_rx_enable_req_t             rx_enable_req;
    dev_tx_enable_req_t             tx_enable_req;
    dev_rx_frame_ind_t              rx_frame_ind;
    dev_rx_compressed_frame_ind_t   rx_compressed_frame_ind;
    dev_rx_error_frame_ind_t        rx_error_frame_ind;
    dev_rx_loss_of_sync_ind_t       rx_loss_of_sync_ind;
    dev_rx_n_octets_ind_t           rx_n_octets_ind;
};

typedef union DEV_primitives dev_prim_t;

#define DEV_TX_FRAME_REQ_SIZE            sizeof(dev_tx_frame_req_t)
#define DEV_RX_ENABLE_REQ_SIZE           sizeof(dev_rx_enable_req_t)
#define DEV_TX_ENABLE_REQ_SIZE           sizeof(dev_tx_enable_req_t)
#define DEV_RX_FRAME_IND_SIZE            sizeof(dev_rx_frame_ind_t)
#define DEV_RX_COMPRESSED_FRAME_IND_SIZE sizeof(dev_rx_compressed_frame_ind_t)
#define DEV_RX_ERROR_FRAME_IND_SIZE      sizeof(dev_rx_error_frame_ind_t)
#define DEV_RX_LOSS_OF_SYNC_IND_SIZE     sizeof(dev_rx_loss_of_sync_ind_t)
#define DEV_RX_N_OCTETS_IND_SIZE         sizeof(dev_rx_n_octets_ind_t)

#endif  __DEVI_H__
