Support for software flow control
This commit is contained in:
+2
-1
@@ -60,11 +60,12 @@ extern void telnet_rfc2217_ctl(tn_ctx_t * tcc, unsigned int val);
|
|||||||
|
|
||||||
/*RFC2217 control commands*/
|
/*RFC2217 control commands*/
|
||||||
#define TNS_CTL_NOFLOW 1
|
#define TNS_CTL_NOFLOW 1
|
||||||
#define TNS_CTL_XONOFF 2
|
#define TNS_CTL_XONOFF_OUT 2
|
||||||
#define TNS_CTL_CTSRTS 3
|
#define TNS_CTL_CTSRTS 3
|
||||||
#define TNS_CTL_DTR_ON 8
|
#define TNS_CTL_DTR_ON 8
|
||||||
#define TNS_CTL_DTR_OFF 9
|
#define TNS_CTL_DTR_OFF 9
|
||||||
#define TNS_CTL_RTS_ON 11
|
#define TNS_CTL_RTS_ON 11
|
||||||
#define TNS_CTL_RTS_OFF 12
|
#define TNS_CTL_RTS_OFF 12
|
||||||
|
#define TNS_CTL_XONOFF_IN 15
|
||||||
|
|
||||||
#endif /*TELNET_H */
|
#endif /*TELNET_H */
|
||||||
|
|||||||
@@ -855,6 +855,22 @@ ttynvt_ioctl(fuse_req_t req, int cmd, void *arg,
|
|||||||
tty->master_suspended = (tty->smcr & TIOCM_CTS) ? 0 : 1;
|
tty->master_suspended = (tty->smcr & TIOCM_CTS) ? 0 : 1;
|
||||||
telnet_rfc2217_ctl(tty->tn, TNS_CTL_CTSRTS);
|
telnet_rfc2217_ctl(tty->tn, TNS_CTL_CTSRTS);
|
||||||
}
|
}
|
||||||
|
else if ((tio->c_iflag & IXON) && (tio->c_iflag & IXOFF))
|
||||||
|
{
|
||||||
|
tty->master_suspended = 0;
|
||||||
|
telnet_rfc2217_ctl(tty->tn, TNS_CTL_XONOFF_OUT);
|
||||||
|
telnet_rfc2217_ctl(tty->tn, TNS_CTL_XONOFF_IN);
|
||||||
|
}
|
||||||
|
else if (tio->c_iflag & IXON)
|
||||||
|
{
|
||||||
|
tty->master_suspended = 0;
|
||||||
|
telnet_rfc2217_ctl(tty->tn, TNS_CTL_XONOFF_OUT);
|
||||||
|
}
|
||||||
|
else if (tio->c_iflag & IXOFF)
|
||||||
|
{
|
||||||
|
tty->master_suspended = 0;
|
||||||
|
telnet_rfc2217_ctl(tty->tn, TNS_CTL_XONOFF_IN);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tty->master_suspended = 0;
|
tty->master_suspended = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user