
/*->h.mnp */



/* Link status block
*/
struct link_stat_blk
        {
        USIGN_16 p_status;
        USIGN_16 l_status;
        USIGN_16 s_count;
        USIGN_16 r_count;
        USIGN_16 all_sent;
        };




extern USIGN_16 min (USIGN_16 a,USIGN_16  b);
extern USIGN_16 max (USIGN_16 a,USIGN_16 b);


extern struct BUFFER ftb;
extern struct link_ctl_blk lcb; /* link control block */
extern struct TIMERS tmr;

extern USIGN_16 sf_busy,                                /* 'send framer busy' flag */
        sf_lt,                                  /* 'LT in progress' flag */
        sf_len,                                 /* send framer length */
        tbcnt;                                  /* unacked transmit buf count */



extern USIGN_16 frame_snt,
        frame_rcvd,
        frame_dne;







extern void as_disconnect(SIGN_16 lreason,SIGN_16 ureason);
extern SIGN_16 acking(void);
extern SIGN_16 credit_chk(void);
extern SIGN_16 lpdu_send(SIGN_16 type,SIGN_16 wait);
extern SIGN_16 parse_lr(void);
extern SIGN_16 receive_wait(void);
extern SIGN_16 retran_lt(void);
extern SIGN_16 send_la(void);
extern SIGN_16 send_pdu(SIGN_16 type,SIGN_16 wait,struct BLST * snd_struct);
extern SIGN_16 send_wait(void);
extern void link_init(struct MNP_CB *mnpcb);
extern void link_reset(void);
extern void dphase_init(void);
extern void tb_free(void);







USIGN_8 get_sbuf(void);







/* External references
*/
extern USIGN_16 iir_add;                        /* int id reg address */
extern USIGN_8 linestat;                        /* line status var */
extern struct TIMERS tmr;
extern struct link_ctl_blk lcb;  /* link control block */
extern struct BUFFER rb, ftb, rlkb;  /* buffers */
extern USIGN_8 *rb_iptr;                /* rcv buf insert pointer */
extern USIGN_16 rb_cnt,tbcnt;           /* buffer counts */
extern USIGN_8 rbuf[RBUF_LEN];  /* receive buffer */



/* Function definitions
*/

extern void snd_framer(void);
extern void rcv_framer(void);
extern void mod_stat(void);
extern void rcv_lt(void);
extern void rcv_la(void);
extern void rcv_lna(void);
extern void rcv_ln(void);
extern USIGN_8 get_char(void);


extern SIGN_16 ia_send(struct MNP_CB * mnpcb);


extern void mnpstatus(struct link_stat_blk * lsb);
extern SIGN_16 mnpreceive(USIGN_8 * bufptr,USIGN_16 buflen);

extern SIGN_16 get_b(struct BUFFER * b_struct,struct BLST ** bl_struct);
extern SIGN_16 ret_b(struct BUFFER *b_struct,struct BLST *bl_struct);

extern void suspend(int delay);
extern SIGN_16 event_wait(USIGN_16 time,USIGN_16 flag);

extern SIGN_16 as_connect (struct MNP_CB * mnpcb,USIGN_16 mode);

extern SIGN_16 as_link(void);
extern SIGN_16 lne_stat(void);

extern int attn_process(void);
extern void init_blst(struct BUFFER * b_struct,USIGN_16 len,USIGN_8 * buff);
extern void reset_blst(struct BUFFER *b_struct);

extern SIGN_16 mnpconnect(USIGN_16 rate,USIGN_16 format,USIGN_16 port,USIGN_16 mode);

extern void drvr_ins(void);
extern void drvr_rem(void);
extern SIGN_16 mnpsend(USIGN_8 * bufptr,USIGN_16 buflen);
extern void mnpdisconnect(void);


extern struct MNP_CB mnpcb;                    /* MNP control block */
