Rs232 - mathfur/minix GitHub Wiki
呼出元
概要
実装
typedef struct rs232 {
tty_t *tty;
int icount; // 入力バイト数
char *ihead; // input buffer上の、次の空いている場所
char *itail; // first byte to give to TTY
bool_t idevready; // すでに受信可能か?
char cts; // CLOCALならMS_CTS(=Modem Statel ..)、それ以外は0
unsigned char ostate; // 以下のフラグの集合
#define ODONE 1 // 出力済み (< 出力可能ビットs)
#define ORAW 2 // rawモード for xoff無効 (< enab. bits)
#define OWAKEUP 4 // tty_wakeup保留 (asmコードのみ)
#define ODEVREADY MS_CTS // 外部デバイスのハードウエアが準備完了
#define OQUEUED 0x20 // obufが空ではない
#define OSWREADY 0x40 /* external device software ready (no xoff) */
#define ODEVHUP MS_RLSD /* external device has dropped carrier */
#define OSOFTBITS (ODONE | ORAW | OWAKEUP | OQUEUED | OSWREADY)
/* user-defined bits */
#if (OSOFTBITS | ODEVREADY | ODEVHUP) == OSOFTBITS
/* a weak sanity check */
#error /* bits are not unique */
#endif
unsigned char oxoff; // 出力停止用キャラクタ
bool_t inhibited; // 出力停止中
bool_t drain; /* if set drain output and reconfigure line */
int ocount; // obufのバイト数
char *ohead; // obufの次の空部分
char *otail; // 次の出力キャラクタ
#if (MACHINE == IBM_PC)
port_t xmit_port; /* i/o ports */
port_t recv_port;
port_t div_low_port;
port_t div_hi_port;
port_t int_enab_port;
port_t int_id_port;
port_t line_ctl_port;
port_t modem_ctl_port;
port_t line_status_port;
port_t modem_status_port;
#endif
unsigned char lstatus; /* last line status */
unsigned char pad; /* ensure alignment for 16-bit ints */
unsigned framing_errors; /* error counts (no reporting yet) */
unsigned overrun_errors;
unsigned parity_errors;
unsigned break_interrupts;
int irq; /* irq for this line */
int irq_hook_id; /* interrupt hook */
char ibuf[RS_IBUFSIZE]; // 入力バッファ
char obuf[RS_OBUFSIZE]; // 出力バッファ
} rs232_t;
コメント