summaryrefslogtreecommitdiff
path: root/noncore/apps/opie-console/io_serial.cpp
Unidiff
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.cpp21
1 files changed, 11 insertions, 10 deletions
diff --git a/noncore/apps/opie-console/io_serial.cpp b/noncore/apps/opie-console/io_serial.cpp
index c9155d1..b495f39 100644
--- a/noncore/apps/opie-console/io_serial.cpp
+++ b/noncore/apps/opie-console/io_serial.cpp
@@ -4,7 +4,7 @@
4#include <unistd.h> 4#include <unistd.h>
5#include "io_serial.h" 5#include "io_serial.h"
6 6
7IOSerial::IOSerial(const Config &config) : IOLayer(config) { 7IOSerial::IOSerial(const Profile &config) : IOLayer(config) {
8 m_fd = 0; 8 m_fd = 0;
9 reload(config); 9 reload(config);
10} 10}
@@ -46,7 +46,7 @@ bool IOSerial::open() {
46 tcgetattr(m_fd, &tty); 46 tcgetattr(m_fd, &tty);
47 47
48 /* Baud rate */ 48 /* Baud rate */
49 int speed = getBaud(m_baud); 49 int speed = baud(m_baud);
50 if (speed == -1) { 50 if (speed == -1) {
51 emit error(Refuse, tr("Invalid baud rate")); 51 emit error(Refuse, tr("Invalid baud rate"));
52 } 52 }
@@ -57,15 +57,16 @@ bool IOSerial::open() {
57 if (m_dbits == 7 && (m_parity == ParitySpace || m_parity == ParityMark)) { 57 if (m_dbits == 7 && (m_parity == ParitySpace || m_parity == ParityMark)) {
58 m_dbits = 8; 58 m_dbits = 8;
59 } 59 }
60 60
61 /* Data bits */ 61 /* Data bits */
62 switch (m_dbits) { 62 switch (m_dbits) {
63 case 5: tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS5; break; 63 case 5: tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS5; break;
64 case 6: tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS6; break; 64 case 6: tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS6; break;
65 case 7: tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS7; break; 65 case 7: tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS7; break;
66 case 8: tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS8; break; 66 case 8: tty.c_cflag = (tty.c_cflag & ~CSIZE) | CS8; break;
67 default: break;
67 } 68 }
68 69
69 /* Raw, no echo mode */ 70 /* Raw, no echo mode */
70 tty.c_iflag = IGNBRK; 71 tty.c_iflag = IGNBRK;
71 tty.c_lflag = 0; 72 tty.c_lflag = 0;
@@ -78,7 +79,7 @@ bool IOSerial::open() {
78 } else { 79 } else {
79 tty.c_cflag &= ~CSTOPB; 80 tty.c_cflag &= ~CSTOPB;
80 } 81 }
81 82
82 tty.c_cc[VMIN] = 1; 83 tty.c_cc[VMIN] = 1;
83 tty.c_cc[VTIME] = 5; 84 tty.c_cc[VTIME] = 5;
84 85
@@ -87,19 +88,19 @@ bool IOSerial::open() {
87 tty.c_iflag |= IXON | IXOFF; 88 tty.c_iflag |= IXON | IXOFF;
88 else 89 else
89 tty.c_iflag &= ~(IXON|IXOFF|IXANY); 90 tty.c_iflag &= ~(IXON|IXOFF|IXANY);
90 91
91 if (m_flow & FlowHW) 92 if (m_flow & FlowHW)
92 tty.c_cflag |= CRTSCTS; 93 tty.c_cflag |= CRTSCTS;
93 else 94 else
94 tty.c_cflag &= ~CRTSCTS; 95 tty.c_cflag &= ~CRTSCTS;
95 96
96 /* Parity */ 97 /* Parity */
97 tty.c_cflag &= ~(PARENB | PARODD); 98 tty.c_cflag &= ~(PARENB | PARODD);
98 if (m_parity & ParityEven) 99 if (m_parity & ParityEven)
99 tty.c_cflag |= PARENB; 100 tty.c_cflag |= PARENB;
100 else if (m_parity & ParityOdd) 101 else if (m_parity & ParityOdd)
101 tty.c_cflag |= (PARENB | PARODD); 102 tty.c_cflag |= (PARENB | PARODD);
102 103
103 /* Set the changes */ 104 /* Set the changes */
104 tcsetattr(m_fd, TCSANOW, &tty); 105 tcsetattr(m_fd, TCSANOW, &tty);
105 106
@@ -115,7 +116,7 @@ bool IOSerial::open() {
115 } 116 }
116} 117}
117 118
118void IOSerial::reload(const Config &config) { 119void IOSerial::reload(const Profile &config) {
119 m_device = config.readEntry("Device", SERIAL_DEFAULT_DEVICE); 120 m_device = config.readEntry("Device", SERIAL_DEFAULT_DEVICE);
120 m_baud = config.readNumEntry("Baud", SERIAL_DEFAULT_BAUD); 121 m_baud = config.readNumEntry("Baud", SERIAL_DEFAULT_BAUD);
121 m_parity = config.readNumEntry("Parity", SERIAL_DEFAULT_PARITY); 122 m_parity = config.readNumEntry("Parity", SERIAL_DEFAULT_PARITY);
@@ -124,7 +125,7 @@ void IOSerial::reload(const Config &config) {
124 m_flow = config.readNumEntry("Flow", SERIAL_DEFAULT_FLOW); 125 m_flow = config.readNumEntry("Flow", SERIAL_DEFAULT_FLOW);
125} 126}
126 127
127int IOSerial::getBaud(int baud) const { 128int IOSerial::baud(int baud) const {
128 switch (baud) { 129 switch (baud) {
129 case 300: return B300; break; 130 case 300: return B300; break;
130 case 600: return B600; break; 131 case 600: return B600; break;