/* <xmdef.h>
 *
 *	DMC-11/DMR-11/DMP-11 status, characteristics and error definitions
 */
#ifndef _XMDEF_H
#define _XMDEF_H

struct xmdev {
    unsigned char xmdev$b_p1_class;	/* device class */
    unsigned char xmdev$b_p1_type;	/* device type */
    unsigned short xmdev$w_p1_mms;	/* maximum message size */
    unsigned char xmdev$b_p1_char;	/* unit characteristics */
    unsigned char xmdev$b_p1_sts;	/* unit status */
    unsigned char xmdev$b_p1_esum;	/* error summary */
    unsigned char xmdev$b_p1_tpi;	/* transmit pipeline no. */
};
#define XM$M_CHR_MOP	0x01
#define XM$M_CHR_LOOPB	0x02
#define XM$M_CHR_HDPLX	0x04
#define XM$M_CHR_SLAVE	0x08
#define XM$M_CHR_MBX	0x10
#define XM$M_CHR_DMC	0x20
#define XM$M_CHR_CTRL	0x40
#define XM$M_CHR_TRIB	0x80
#define XM$M_STS_DCHK	0x0100
#define XM$M_STS_TIMO	0x0200
#define XM$M_STS_ORUN	0x0400
#define XM$M_STS_ACTIVE 0x0800
#define XM$M_STS_BUFFAIL 0x1000
#define XM$M_STS_RUNNING 0x2000
#define XM$M_STS_DISC	0x4000
#define XM$M_ERR_FATAL	0x010000
#define XM$M_ERR_MAINT	0x080000
#define XM$M_ERR_LOST	0x00100000
#define XM$M_ERR_THRESH 0x00200000
#define XM$M_ERR_TRIB	0x00400000
#define XM$M_ERR_START	0x00800000
#define XM$M_MDM_RTSHLD 0x01
#define XM$M_MDM_STNDBY 0x02
#define XM$M_MDM_MAINT2 0x04
#define XM$M_MDM_MAINT1 0x08
#define XM$M_MDM_FREQ	0x20
#define XM$M_MDM_RDY	0x40
#define XM$M_MDM_POLL	0x80
#define XM$M_MDM_SELM	0x0100
#define XM$M_MDM_INT	0x0800
#define XM$M_MDM_V35	0x1000
#define XM$M_MDM_RS232	0x4000
#define XM$M_MDM_RS422	0x8000
#define XM$M_MDM_CARRDET 0x01
#define XM$M_MDM_MSTNDBY 0x02
#define XM$M_MDM_CTS	0x04
#define XM$M_MDM_DSR	0x08
#define XM$M_MDM_HDX	0x10
#define XM$M_MDM_RTS	0x20
#define XM$M_MDM_DTR	0x40
#define XM$M_MDM_RING	0x80
#define XM$M_MDM_CHRMOD 0x0100
#define XM$M_MDM_MCLOCK 0x0200
#define XM$M_MDM_MODTEST 0x0400
#define XM$M_MDM_SIGQUAL 0x4000
#define XM$M_MDM_SIGRATE 0x8000
union xmdef {
    struct {
	unsigned xm$v_chr_mop	  : 1;	/* MOP mode */
	unsigned xm$v_chr_loopb   : 1;	/* loop back */
	unsigned xm$v_chr_hdplx   : 1;	/* half duplex */
	unsigned xm$v_chr_slave   : 1;	/* half duplex slave station */
	unsigned xm$v_chr_mbx	  : 1;	/* mailbox is enabled */
	unsigned xm$v_chr_dmc	  : 1;	/* DMC-11 compatability mode */
	unsigned xm$v_chr_ctrl	  : 1;	/* control station */
	unsigned xm$v_chr_trib	  : 1;	/* tributary station */
	unsigned xm$v_sts_dchk	  : 1;	/* data check occured */
	unsigned xm$v_sts_timo	  : 1;	/* timeout occured */
	unsigned xm$v_sts_orun	  : 1;	/* data over run occured */
	unsigned xm$v_sts_active  : 1;	/* active unit */
	unsigned xm$v_sts_buffail : 1;	/* buffer allocation failure occured */
	unsigned xm$v_sts_running : 1;	/* protocol running */
	unsigned xm$v_sts_disc	  : 1;	/* line disconnect occured */
	unsigned		  : 1;	/* spare */
	unsigned xm$v_err_fatal   : 1;	/* hardware error */
	unsigned		  : 2;
	unsigned xm$v_err_maint   : 1;	/* DDCMP maint message received */
	unsigned xm$v_err_lost	  : 1;	/* data lost because of buffer size mismatch */
	unsigned xm$v_err_thresh  : 1;	/* threshold errors */
	unsigned xm$v_err_trib	  : 1;	/* tributary malfunctioning */
	unsigned xm$v_err_start   : 1;	/* DDCMP start message received */
    } xm$r_xmdef_bits0;
    struct {
	unsigned xm$v_mdm_rtshld  : 1;	/* RTS hold */
	unsigned xm$v_mdm_stndby  : 1;	/* select standby */
	unsigned xm$v_mdm_maint2  : 1;	/* maintenance mode 2 */
	unsigned xm$v_mdm_maint1  : 1;	/* maintenance mode 1 */
	unsigned		  : 1;
	unsigned xm$v_mdm_freq	  : 1;	/* select frequency */
	unsigned xm$v_mdm_rdy	  : 1;	/* data terminal ready */
	unsigned xm$v_mdm_poll	  : 1;	/* select polling modem mode */
	unsigned xm$v_mdm_selm	  : 1;	/* modem interface program selected */
	unsigned		  : 2;	/* unused */
	unsigned xm$v_mdm_int	  : 1;	/* integral modem */
	unsigned xm$v_mdm_v35	  : 1;	/* V.35 */
	unsigned		  : 1;	/* unused */
	unsigned xm$v_mdm_rs232   : 1;	/* RS-232-C or RS423 */
	unsigned xm$v_mdm_rs422   : 1;	/* RS-422 */
    } xm$r_xmdef_bits1;
    struct {
	unsigned xm$v_mdm_carrdet : 1;	/* carrier detect */
	unsigned xm$v_mdm_mstndby : 1;	/* modem standby */
	unsigned xm$v_mdm_cts	  : 1;	/* clear to send */
	unsigned xm$v_mdm_dsr	  : 1;	/* data set ready */
	unsigned xm$v_mdm_hdx	  : 1;	/* half-duplex */
	unsigned xm$v_mdm_rts	  : 1;	/* request to send */
	unsigned xm$v_mdm_dtr	  : 1;	/* data terminal ready */
	unsigned xm$v_mdm_ring	  : 1;	/* ring */
	unsigned xm$v_mdm_chrmod  : 1;	/* character or bit protocol mode */
	unsigned xm$v_mdm_mclock  : 1;	/* maintenance clock */
	unsigned xm$v_mdm_modtest : 1;	/* modem test mode */
	unsigned		  : 3;	/* unused */
	unsigned xm$v_mdm_sigqual : 1;	/* signal quality */
	unsigned xm$v_mdm_sigrate : 1;	/* signal rate */
    } xm$r_xmdef_bits2;
};

#endif	/*_XMDEF_H*/