GREFwTool/include/mainwindow.h

137 lines
3.5 KiB
C++

/* mainwindow.h - the main window and business logic
Copyright 2016 Eric A. Cottrell <eric.c.boston@gmail.com>
This file is part of GREFwTool. Source code is available at https://github.com/LinuxSheeple-E/GREFwTool
GREFwTool 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 3 of the License, or
(at your option) any later version.
GREFwTool 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 GREFwTool. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtCore/QtGlobal>
#include <QMainWindow>
#include <QtSerialPort/QSerialPort>
#include <QTimer>
#include "greparser.h"
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class Display;
class SettingsDialog;
class QProgressDialog;
class WebDownloader;
class GREFirmware;
class GREParser;
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void openSerialPort();
void closeSerialPort();
void about();
void processFirmwareDownload();
void processDownloadComplete();
void processDownloadError();
void processFirmwareUpdate();
void setTime();
void writeData(const QByteArray &data);
void readData();
void commsTimeout(void );
void dlTimeout();
void processEOT(void );
void processEnq(void );
void processAck(void );
void processDLE(void );
void processNak(void );
void processCan(void );
void processCpuUpdateMode(void );
void processPowerStatus(const bool &data);
void processVersion(const GREParser::VersionVal &data );
void processCCDump(const QString &data);
void handleSerialError(QSerialPort::SerialPortError error);
void handleApplySettings();
private:
void displayProtocol(const QByteArray &data, bool txFlag);
void scannerTypeConfig();
private:
Ui::MainWindow *ui;
enum {
SCANNER_MODE_UNKNOWN,
SCANNER_MODE_OFF,
SCANNER_MODE_ON,
SCANNER_MODE_CPU_UPDATE,
SCANNER_MODE_UPDATE_IN_PROGRESS,
SCANNER_MODE_UPDATE_DONE,
SCANNER_MODE_UPDATE_ERROR
} scannerMode;
enum {
DOWNLOAD_MODE_UNKNOWN,
DOWNLOAD_MODE_VER_FILE,
DOWNLOAD_MODE_CPU_FILE,
DOWNLOAD_MODE_CPU_RELEASE,
DOWNLOAD_MODE_CPU2_FILE,
DOWNLOAD_MODE_CPU2_RELEASE,
DOWNLOAD_MODE_DONE,
DOWNLOAD_MODE_ERROR
} downloadMode;
GREParser *parser;
WebDownloader *downloader;
GREFirmware *firmware;
Display *display;
SettingsDialog *settings;
QProgressDialog *progress;
QString remoteFileDirectory;
QString scannerFileDirectory;
QString versionFileName;
QString cpuFileName;
QString cpu2FileName;
QString cpuFileVersion;
QString cpu2FileVersion;
QString cpuReleaseName;
QString cpu2ReleaseName;
QSerialPort *serial;
QByteArray updatePacket;
int nakCount;
QTimer *commsTimer;
QTimer *dlTimer;
};
#endif // MAINWINDOW_H