mirror of
https://github.com/stargieg/bacnet-stack
synced 2025-10-26 23:35:52 +08:00
125 lines
4.5 KiB
C
125 lines
4.5 KiB
C
/*
|
|
+----------------------------------------------------+
|
|
| Thunderbird Software |
|
|
+----------------------------------------------------+
|
|
| Filespec : Serial.c |
|
|
| Date : October 24, 1991 |
|
|
| Time : 15:03 |
|
|
| Revision : 1.1 |
|
|
| Update : August 29, 1994 |
|
|
| Update : March 12, 1995 by Bob Stout |
|
|
+----------------------------------------------------+
|
|
| Programmer: Scott Andrews |
|
|
| Address : 5358 Summit RD SW |
|
|
| City/State: Pataskala, Ohio |
|
|
| Zip : 43062 |
|
|
+----------------------------------------------------+
|
|
| Released to the Public Domain |
|
|
+----------------------------------------------------+
|
|
*/
|
|
|
|
#ifndef SERIAL__H
|
|
#define SERIAL__H
|
|
|
|
#include "extkword.h"
|
|
#include "pchwio.h"
|
|
|
|
#define SerInBufSize 4096 /* Size of input buffer */
|
|
#define SerOutBufSize 512 /* Size of output buffer */
|
|
|
|
/* 8250 registers */
|
|
|
|
#define REC 0 /* Uart receive reg. */
|
|
#define XMIT 0 /* Uart transmit reg. */
|
|
#define INT_EN 1 /* Uart int. enable reg. */
|
|
#define INT_ID 2 /* Uart int. ident. reg. */
|
|
#define LINE_CNTRL 3 /* Uart line control reg. */
|
|
#define MODEM_CNTRL 4 /* Uart modem control reg. */
|
|
#define LINE_STATUS 5 /* Uart line status reg. */
|
|
#define MODEM_STATUS 6 /* Uart modem status reg. */
|
|
#define BAUD_LSB 0 /* Uart baud divisor reg. */
|
|
#define BAUD_MSB 1 /* Uart baud divisor reg. */
|
|
|
|
#define NONE 0 /* Handshake param none */
|
|
#define HDW 1 /* Handshake param hardware */
|
|
#define XON 2 /* Handshake param software */
|
|
|
|
/* Interrupt enable register */
|
|
|
|
#define RX_INT 0x01 /* Receive interrupt mask */
|
|
#define TBE_INT 0x02 /* Transmit buffer empty mask */
|
|
#define ERR_INT 0x04 /* Error interrupt mask */
|
|
#define RS_INT 0x08 /* Line interrupt mask */
|
|
|
|
/* Interrupt id register */
|
|
|
|
#define OUT2 0x08 /* Out 2 line */
|
|
#define DTR 0x01 /* DTR high */
|
|
#define RTS 0x02 /* RTS high */
|
|
#define CTS 0x10
|
|
#define DSR 0x20
|
|
#define XMTRDY 0x20
|
|
#define TXR 0 /* Transmit register (WRITE) */
|
|
|
|
#if !defined TRUE /* Define boolean true/false */
|
|
#define FALSE 0
|
|
#define TRUE !FALSE
|
|
#endif
|
|
|
|
extern void (
|
|
INTERRUPT FAR * oldvector_serial) (
|
|
void);
|
|
|
|
extern int ComBase; /* Comm port address */
|
|
extern int IrqNum; /* Comm interrupt request */
|
|
|
|
typedef struct { /* Save existing comm params */
|
|
int int_enable; /* old interrupt enable reg value */
|
|
int line; /* " line control " " */
|
|
int modem; /* old modem control " " */
|
|
int baud_lsb; /* old baud rate divisor LSD */
|
|
int baud_msb; /* " " " " MSD */
|
|
int int_cntrl; /* old PIC interrupt reg value */
|
|
} OLD_COMM_PARAMS;
|
|
extern OLD_COMM_PARAMS old_comm_params;
|
|
|
|
typedef struct {
|
|
int line; /* Uart line status reg. */
|
|
int modem; /* Uart mode status reg. */
|
|
int intrupt; /* Uart interrupt reg. */
|
|
int handshake; /* Handshake status */
|
|
} COMM_STATUS; /* status, updated, handler */
|
|
extern COMM_STATUS comm_status;
|
|
|
|
int OpenComPort(
|
|
char Port); /*setup comm for usage */
|
|
void InitComPort(
|
|
char Baud[],
|
|
char Databits,
|
|
char Parity,
|
|
char Stop);
|
|
void CloseComPort(
|
|
void); /* Restore comm port */
|
|
void DropDtr(
|
|
void); /* Lower DTR */
|
|
void RaiseDtr(
|
|
void); /* Raise DTR */
|
|
int ComRecChar(
|
|
void); /* Fetch character from rcv buf */
|
|
|
|
int ComSendChar(
|
|
char character); /* Put char into xmit buffer */
|
|
int ComSendString(
|
|
char *string);
|
|
int ComSendData(
|
|
char *buffer,
|
|
unsigned buffer_length);
|
|
int ComStatus(
|
|
void); /* Fetch comm status */
|
|
void INTERRUPT FAR serial(
|
|
void); /* interrupt handler */
|
|
|
|
/* End of Serial.H */
|
|
|
|
#endif /* SERIAL__H */
|