summaryrefslogtreecommitdiff
path: root/noncore/apps/opie-console/io_serial.cpp
authorjosef <josef>2002-10-15 22:36:10 (UTC)
committer josef <josef>2002-10-15 22:36:10 (UTC)
commit65ef0e86a879332cbf8b1575886d3c36c7d2d9bd (patch) (side-by-side diff)
treeb0b3f192c52dc15d639977e1d592412531d826eb /noncore/apps/opie-console/io_serial.cpp
parent626b45872e1774b694727792f7306a39277e413e (diff)
downloadopie-65ef0e86a879332cbf8b1575886d3c36c7d2d9bd.zip
opie-65ef0e86a879332cbf8b1575886d3c36c7d2d9bd.tar.gz
opie-65ef0e86a879332cbf8b1575886d3c36c7d2d9bd.tar.bz2
- 3 small fixes, please review:
- disable all relevant menu items when last session has been closed (but this might not be the correct bugfix, so consider it temporary) - don't set menu status to connected when connection fails - modem sessions: when user cancels connection, close serial connection first again, so we can reconnect (re-dial) later without problems
Diffstat (limited to 'noncore/apps/opie-console/io_serial.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-console/io_serial.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/noncore/apps/opie-console/io_serial.cpp b/noncore/apps/opie-console/io_serial.cpp
index b89a53b..cc63c58 100644
--- a/noncore/apps/opie-console/io_serial.cpp
+++ b/noncore/apps/opie-console/io_serial.cpp
@@ -25,48 +25,49 @@ void IOSerial::send(const QByteArray &data) {
} else {
emit error(Refuse, tr("Not connected"));
}
}
void IOSerial::close() {
if (m_fd) {
delete m_read;
delete m_error;
::close(m_fd);
m_fd = 0;
m_connected = false;
} else {
m_connected = false;
emit error(Refuse, tr("Not connected"));
}
}
bool IOSerial::open() {
if (!m_fd) {
struct termios tty;
m_fd = ::open(m_device, O_RDWR | O_NOCTTY | O_NONBLOCK);
if (m_fd < 0) {
emit error(CouldNotOpen, strerror(errno));
+ m_fd = 0;
return FALSE;
}
tcgetattr(m_fd, &tty);
/* Baud rate */
int speed = baud(m_baud);
if (speed == -1) {
emit error(Refuse, tr("Invalid baud rate"));
}
cfsetospeed(&tty, speed);
cfsetispeed(&tty, speed);
/* Take care of Space / Mark parity */
if (m_dbits == 7 && (m_parity == ParitySpace || m_parity == ParityMark)) {
m_dbits = 8;
}
/* Data bits */
switch (m_dbits) {
case 5: tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS5; break;
case 6: tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS6; break;
case 7: tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS7; break;
case 8: tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS8; break;
default: break;