aboutsummaryrefslogtreecommitdiff
path: root/qtmips_cli/chariohandler.h
diff options
context:
space:
mode:
authorPavel Pisa <pisa@cmp.felk.cvut.cz>2020-04-23 16:35:50 +0200
committerPavel Pisa <pisa@cmp.felk.cvut.cz>2020-04-23 16:35:50 +0200
commit597c9271608c3d30ce193b96be3fe82966e4cc1d (patch)
treed5a0569bf937b39702d25bee27f2fa8f37bac766 /qtmips_cli/chariohandler.h
parent27b38375203880cbc991eaac1d97c927346fa7e0 (diff)
downloadqtmips-597c9271608c3d30ce193b96be3fe82966e4cc1d.tar.gz
qtmips-597c9271608c3d30ce193b96be3fe82966e4cc1d.tar.bz2
qtmips-597c9271608c3d30ce193b96be3fe82966e4cc1d.zip
qtmips_cli: add option to connect serial port input and output to file.
New options --serial-in, --serin <FNAME> File connected to the serial port input. --serial-out, --serout <FNAME> File connected to the serial port output. to provide support for B35APO subject task to write conversion of the random binary number to hexadecimal output to serial port. See the task with automatic check using qtmips_cli seminaries/qtmips/print-hex-to-uart in the repository https://gitlab.fel.cvut.cz/b35apo/stud-support/ Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
Diffstat (limited to 'qtmips_cli/chariohandler.h')
-rw-r--r--qtmips_cli/chariohandler.h85
1 files changed, 85 insertions, 0 deletions
diff --git a/qtmips_cli/chariohandler.h b/qtmips_cli/chariohandler.h
new file mode 100644
index 0000000..a37a217
--- /dev/null
+++ b/qtmips_cli/chariohandler.h
@@ -0,0 +1,85 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*******************************************************************************
+ * QtMips - MIPS 32-bit Architecture Subset Simulator
+ *
+ * Implemented to support following courses:
+ *
+ * B35APO - Computer Architectures
+ * https://cw.fel.cvut.cz/wiki/courses/b35apo
+ *
+ * B4M35PAP - Advanced Computer Architectures
+ * https://cw.fel.cvut.cz/wiki/courses/b4m35pap/start
+ *
+ * Copyright (c) 2017-2019 Karel Koci<cynerd@email.cz>
+ * Copyright (c) 2019 Pavel Pisa <pisa@cmp.felk.cvut.cz>
+ *
+ * Faculty of Electrical Engineering (http://www.fel.cvut.cz)
+ * Czech Technical University (http://www.cvut.cz/)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ ******************************************************************************/
+
+#ifndef CHARIOHANDLER_H
+#define CHARIOHANDLER_H
+
+#include <QObject>
+#include <QIODevice>
+#include <QSet>
+
+class CharIOHandler : public QIODevice
+{
+ Q_OBJECT
+
+ using Super = QIODevice;
+
+public:
+ explicit CharIOHandler(QIODevice *iodev, QObject *parent = nullptr);
+ virtual ~CharIOHandler() override;
+
+public slots:
+ void writeByte(unsigned int data);
+ void writeByte(int fd, unsigned int data);
+ void readBytePoll(int fd, unsigned int &data, bool &available);
+
+public:
+ void insertFd(const int &fd);
+ void removeFd(const int &fd);
+
+ virtual bool isSequential() const override;
+ virtual bool open(OpenMode mode) override;
+ virtual void close() override;
+ virtual qint64 pos() const override;
+ virtual qint64 size() const override;
+ virtual bool seek(qint64 pos) override;
+ virtual bool atEnd() const override;
+ virtual bool reset() override;
+ virtual qint64 bytesAvailable() const override;
+ virtual qint64 bytesToWrite() const override;
+ virtual bool canReadLine() const override;
+ virtual bool waitForReadyRead(int msecs) override;
+ virtual bool waitForBytesWritten(int msecs) override;
+protected:
+ virtual qint64 readData(char *data, qint64 maxSize) override;
+ virtual qint64 readLineData(char *data, qint64 maxSize) override;
+ virtual qint64 writeData(const char *data, qint64 maxSize) override;
+private:
+ QIODevice *iodev;
+ bool fd_specific;
+ QSet<int> fd_list;
+};
+
+#endif // CHARIOHANDLER_H