author | zecke <zecke> | 2002-10-09 14:25:38 (UTC) |
---|---|---|
committer | zecke <zecke> | 2002-10-09 14:25:38 (UTC) |
commit | f9f2d227b3cfbc2187b4f7f535fc59f9735798d0 (patch) (side-by-side diff) | |
tree | 7645623f7dde640222fab3e5ff0af0af3ae2f882 | |
parent | ff0caad7ea46d19f7a7916047fd0914f6f100dde (diff) | |
download | opie-f9f2d227b3cfbc2187b4f7f535fc59f9735798d0.zip opie-f9f2d227b3cfbc2187b4f7f535fc59f9735798d0.tar.gz opie-f9f2d227b3cfbc2187b4f7f535fc59f9735798d0.tar.bz2 |
A small testsuite
the stuff from the remote goes to the stdout
There is a send button and a multilineedit
be sure to hit \n before sending...
Some debug code... in some files
debugged IOSerial it should be fine now
-rw-r--r-- | noncore/apps/opie-console/io_serial.cpp | 14 | ||||
-rw-r--r-- | noncore/apps/opie-console/profile.cpp | 2 | ||||
-rw-r--r-- | noncore/apps/opie-console/test/console.pro | 15 | ||||
-rw-r--r-- | noncore/apps/opie-console/test/main.cpp | 13 | ||||
-rw-r--r-- | noncore/apps/opie-console/test/sender.ui | 60 | ||||
-rw-r--r-- | noncore/apps/opie-console/test/senderui.cpp | 47 | ||||
-rw-r--r-- | noncore/apps/opie-console/test/senderui.h | 23 |
7 files changed, 170 insertions, 4 deletions
diff --git a/noncore/apps/opie-console/io_serial.cpp b/noncore/apps/opie-console/io_serial.cpp index 77ced85..929aeff 100644 --- a/noncore/apps/opie-console/io_serial.cpp +++ b/noncore/apps/opie-console/io_serial.cpp @@ -1,171 +1,177 @@ #include <fcntl.h> #include <termios.h> #include <errno.h> #include <unistd.h> #include "io_serial.h" IOSerial::IOSerial(const Profile &config) : IOLayer(config) { m_read = 0l; m_error = 0l; m_fd = 0; reload(config); } IOSerial::~IOSerial() { if (m_fd) { close(); } } void IOSerial::send(const QByteArray &data) { if (m_fd) { write(m_fd, data.data(), data.size()); } 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; } else { emit error(Refuse, tr("Not connected")); } } bool IOSerial::open() { + qWarning("open"); if (!m_fd) { + qWarning("going to open %s", m_device.latin1()); struct termios tty; m_fd = ::open(m_device, O_RDWR | O_NOCTTY | O_NONBLOCK); if (m_fd < 0) { + qWarning(" fd < 0 "); emit error(CouldNotOpen, strerror(errno)); return FALSE; } tcgetattr(m_fd, &tty); /* Baud rate */ int speed = baud(m_baud); if (speed == -1) { + qWarning("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; } /* Raw, no echo mode */ tty.c_iflag = IGNBRK; tty.c_lflag = 0; tty.c_oflag = 0; tty.c_cflag |= CLOCAL | CREAD; /* Stop bits */ if (m_sbits == 2) { tty.c_cflag |= CSTOPB; } else { tty.c_cflag &= ~CSTOPB; } tty.c_cc[VMIN] = 1; tty.c_cc[VTIME] = 5; /* Flow control */ if (m_flow & FlowSW) tty.c_iflag |= IXON | IXOFF; else tty.c_iflag &= ~(IXON|IXOFF|IXANY); if (m_flow & FlowHW) tty.c_cflag |= CRTSCTS; else tty.c_cflag &= ~CRTSCTS; /* Parity */ tty.c_cflag &= ~(PARENB | PARODD); if (m_parity & ParityEven) tty.c_cflag |= PARENB; else if (m_parity & ParityOdd) tty.c_cflag |= (PARENB | PARODD); /* Set the changes */ tcsetattr(m_fd, TCSANOW, &tty); /* Notifications on read & errors */ m_read = new QSocketNotifier(m_fd, QSocketNotifier::Read, this); m_error = new QSocketNotifier(m_fd, QSocketNotifier::Exception, this); connect(m_read, SIGNAL(activated(int)), this, SLOT(dataArrived())); connect(m_error, SIGNAL(activated(int)), this, SLOT(errorOccured())); return TRUE; } else { + qWarning("opened"); emit error(Refuse, tr("Device is already connected")); m_fd = 0; return FALSE; } } void IOSerial::reload(const Profile &config) { m_device = config.readEntry("Device", SERIAL_DEFAULT_DEVICE); + qWarning( "Dev" +m_device ); + qWarning( "Conf:" +config.readEntry("Device") ); m_baud = config.readNumEntry("Baud", SERIAL_DEFAULT_BAUD); m_parity = config.readNumEntry("Parity", SERIAL_DEFAULT_PARITY); m_dbits = config.readNumEntry("DataBits", SERIAL_DEFAULT_DBITS); m_sbits = config.readNumEntry("StopBits", SERIAL_DEFAULT_SBITS); m_flow = config.readNumEntry("Flow", SERIAL_DEFAULT_FLOW); } int IOSerial::baud(int baud) const { switch (baud) { case 300: return B300; break; case 600: return B600; break; case 1200: return B1200; break; case 2400: return B2400; break; case 4800: return B4800; break; case 9600: return B9600; break; case 19200: return B19200; break; case 38400: return B38400; break; case 57600: return B57600; break; case 115200: return B115200; break; } return -1; } void IOSerial::errorOccured() { emit error(ClosedUnexpected, strerror(errno)); close(); } void IOSerial::dataArrived() { - QByteArray array; - char buf[4096]; + QByteArray array(4096); - int len = read(m_fd, buf, 4096); + int len = read(m_fd, array.data(), 4096); if (len == 0) close(); if (len < 0) return; - array.setRawData(buf, len); + array.resize( len ); emit received(array); } QString IOSerial::identifier() const { return "serial"; } QString IOSerial::name() const { return "RS232 Serial IO Layer"; } diff --git a/noncore/apps/opie-console/profile.cpp b/noncore/apps/opie-console/profile.cpp index 1a94619..ffd672e 100644 --- a/noncore/apps/opie-console/profile.cpp +++ b/noncore/apps/opie-console/profile.cpp @@ -33,87 +33,89 @@ Profile &Profile::operator=( const Profile& prof ) { return *this; } Profile::~Profile() { } QMap<QString, QString> Profile::conf()const { return m_conf; } QString Profile::name()const { return m_name; } QCString Profile::ioLayerName()const { return m_ioLayer; } QCString Profile::terminalName( )const { return m_term; } int Profile::foreground()const { return m_fore; } int Profile::background()const { return m_back; } int Profile::terminal()const { return m_terminal; } void Profile::setName( const QString& str ) { m_name = str; } void Profile::setIOLayer( const QCString& name ) { m_ioLayer = name; } void Profile::setTerminalName( const QCString& str ) { m_term = str; } void Profile::setBackground( int back ) { m_back = back; } void Profile::setForeground( int fore ) { m_fore = fore; } void Profile::setTerminal( int term ) { m_terminal = term; } /* config stuff */ void Profile::clearConf() { m_conf.clear(); } void Profile::writeEntry( const QString& key, const QString& value ) { + qWarning("key %s value %s", key.latin1(), value.latin1() ); m_conf.replace( key, value ); } void Profile::writeEntry( const QString& key, int num ) { + qWarning("num"); writeEntry( key, QString::number( num ) ); } void Profile::writeEntry( const QString& key, bool b ) { writeEntry( key, QString::number(b) ); } void Profile::writeEntry( const QString& key, const QStringList& lis, const QChar& sep ) { writeEntry( key, lis.join(sep) ); } QString Profile::readEntry( const QString& key, const QString& deflt )const { QMap<QString, QString>::ConstIterator it; it = m_conf.find( key ); if ( it != m_conf.end() ) return it.data(); return deflt; } int Profile::readNumEntry( const QString& key, int def )const { QMap<QString, QString>::ConstIterator it; it = m_conf.find( key ); if ( it != m_conf.end() ) { bool ok; int val = it.data().toInt(&ok); if (ok) return val; } return def; } bool Profile::readBoolEntry( const QString& key, bool def )const { return readNumEntry( key, def ); } void Profile::setConf( const QMap<QString, QString>& conf ) { m_conf = conf; }; diff --git a/noncore/apps/opie-console/test/console.pro b/noncore/apps/opie-console/test/console.pro new file mode 100644 index 0000000..721b820 --- a/dev/null +++ b/noncore/apps/opie-console/test/console.pro @@ -0,0 +1,15 @@ +TEMPLATE = app +#CONFIG = qt warn_on release +CONFIG = qt debug +#DESTDIR = $(OPIEDIR)/bin +HEADERS = ../io_layer.h ../io_serial.h \ + senderui.h ../profile.h +SOURCES = ../io_layer.cpp ../io_serial.cpp \ + ../profile.cpp \ + main.cpp senderui.cpp +INTERFACES = sender.ui +INCLUDEPATH += $(OPIEDIR)/include +DEPENDPATH += $(OPIEDIR)/include +LIBS += -lqpe -lopie +TARGET = test + diff --git a/noncore/apps/opie-console/test/main.cpp b/noncore/apps/opie-console/test/main.cpp new file mode 100644 index 0000000..f5e8722 --- a/dev/null +++ b/noncore/apps/opie-console/test/main.cpp @@ -0,0 +1,13 @@ +#include <qpe/qpeapplication.h> + +#include "senderui.h" + + +int main( int argc, char* argv[] ){ +QPEApplication app(argc,argv ); + +SenderUI ui; +app.showMainWidget(&ui); + +return app.exec(); +}
\ No newline at end of file diff --git a/noncore/apps/opie-console/test/sender.ui b/noncore/apps/opie-console/test/sender.ui new file mode 100644 index 0000000..092f6e3 --- a/dev/null +++ b/noncore/apps/opie-console/test/sender.ui @@ -0,0 +1,60 @@ +<!DOCTYPE UI><UI> +<class>Sender</class> +<widget> + <class>QWidget</class> + <property stdset="1"> + <name>name</name> + <cstring>Form1</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>0</x> + <y>0</y> + <width>596</width> + <height>480</height> + </rect> + </property> + <property stdset="1"> + <name>caption</name> + <string>Form1</string> + </property> + <vbox> + <property stdset="1"> + <name>margin</name> + <number>11</number> + </property> + <property stdset="1"> + <name>spacing</name> + <number>6</number> + </property> + <widget> + <class>QMultiLineEdit</class> + <property stdset="1"> + <name>name</name> + <cstring>MultiLineEdit1</cstring> + </property> + </widget> + <widget> + <class>QPushButton</class> + <property stdset="1"> + <name>name</name> + <cstring>PushButton1</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>&Send</string> + </property> + </widget> + </vbox> +</widget> +<connections> + <connection> + <sender>PushButton1</sender> + <signal>clicked()</signal> + <receiver>Form1</receiver> + <slot>slotSend()</slot> + </connection> + <slot access="public">slotSend()</slot> +</connections> +</UI> diff --git a/noncore/apps/opie-console/test/senderui.cpp b/noncore/apps/opie-console/test/senderui.cpp new file mode 100644 index 0000000..fc93c04 --- a/dev/null +++ b/noncore/apps/opie-console/test/senderui.cpp @@ -0,0 +1,47 @@ +#include <stdlib.h> +#include <stdio.h> + +#include <qmultilineedit.h> + +#include "../profile.h" +#include "../io_serial.h" + + +#include "senderui.h" + +SenderUI::SenderUI() + : Sender() { + + /* we do that manually */ + Profile prof; + QString str = "/dev/ttyS0"; + prof.writeEntry("Device",str ); + prof.writeEntry("Baud", 115200 ); + + qWarning("prof " + prof.readEntry("Device") + " " + str); + ser = new IOSerial(prof); + connect(ser, SIGNAL(received(const QByteArray& ) ), + this, SLOT(got(const QByteArray&) ) ); + + if ( ser->open() ) + qWarning("opened!!!"); + else + qWarning("could not open"); + + + +} +SenderUI::~SenderUI() { + +} +void SenderUI::slotSend() { + QCString str = MultiLineEdit1->text().utf8(); + qWarning("sending: %s", str.data() ); + ser->send( str ); +} +void SenderUI::got(const QByteArray& ar) { + for ( uint i = 0; i < ar.count(); i++ ) { + printf("%c", ar[i] ); + } + //printf("\n"); +} diff --git a/noncore/apps/opie-console/test/senderui.h b/noncore/apps/opie-console/test/senderui.h new file mode 100644 index 0000000..bc69f5d --- a/dev/null +++ b/noncore/apps/opie-console/test/senderui.h @@ -0,0 +1,23 @@ +#ifndef SENDER_UI_H +#define SENDER_UI_H + +#include <qcstring.h> + +#include "sender.h" + +class IOSerial; +class SenderUI : public Sender { + Q_OBJECT +public: + SenderUI(); + ~SenderUI(); + +public slots: + void slotSend(); + void got(const QByteArray& ); +private: + IOSerial* ser; +}; + + +#endif |