1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
|
/*
* Copyright (C) 2023 - 2024 Mikhail Medvedev <e-ink-reader@yandex.ru>
*
*
* 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 3
* 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.
*/
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QDebug>
#include <QMessageBox>
#include <QFile>
#include <QFileDialog>
#include <QTime>
#include <QTimer>
#include <unistd.h>
#include "qhexedit.h"
#include "dialogsp.h"
#include "dialogabout.h"
#include "dialoginfo.h"
#include "dialogsfdp.h"
#include "dialogsr.h"
#include "searchdialog.h"
extern "C" {
#include "bitbang_microwire.h"
#include "ch341a_gpio.h"
#include "ch341a_i2c.h"
#include "ch341a_spi.h"
#include "flashcmd_api.h"
#include "i2c_eeprom_api.h"
#include "mw_eeprom_api.h"
#include "nandcmd_api.h"
#include "res.h"
#include "snorcmd_api.h"
#include "spi_controller.h"
#include "spi_eeprom.h"
#include "spi_eeprom_api.h"
#include "spi_nand_flash.h"
#include "timer.h"
#include "types.h"
}
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
public slots:
void receiveAddr(QString);
void receiveAddr2(QString);
void receiveAddr3(qint64);
void closeSFDP();
void closeSR();
private slots:
void progInit();
void on_pushButton_clicked();
void on_pushButton_2_clicked();
void on_comboBox_size_currentIndexChanged(int index);
void on_comboBox_page_currentIndexChanged(int index);
void on_actionDetect_triggered();
void on_actionSave_triggered();
void on_actionErase_triggered();
void on_actionUndo_triggered();
void on_actionRedo_triggered();
void on_actionOpen_triggered();
void on_actionWrite_triggered();
void on_actionRead_triggered();
void on_actionExit_triggered();
void on_comboBox_man_currentIndexChanged(int index);
void on_comboBox_name_currentIndexChanged(const QString &arg1);
void on_actionVerify_triggered();
void on_pushButton_3_clicked();
void on_actionSave_Part_triggered();
void on_actionLoad_Part_triggered();
void on_actionFind_Replace_triggered();
void on_comboBox_type_currentIndexChanged(int index);
void on_actionAbout_triggered();
void on_actionChecksum_calculate_triggered();
void on_actionEdit_chips_Database_triggered();
void doNotDisturb();
void doNotDisturbCancel();
void on_actionStop_triggered();
void on_pushButton_4_clicked();
void on_actionChip_info_triggered();
void on_comboBox_addr4bit_currentIndexChanged(int index);
void on_actionExport_to_Intel_HEX_triggered();
void on_actionImport_from_Intel_HEX_triggered();
void on_actionExtract_from_ASUS_CAP_triggered();
void resizeEvent(QResizeEvent* event);
void slotTimerAlarm();
void on_actionGoto_address_triggered();
void on_comboBox_i2cSpeed_currentIndexChanged(int index);
void on_actionSecurity_registers_triggered();
private:
Ui::MainWindow *ui;
QColor defaultTextColor;
QString grnKeyStyle, redKeyStyle;
QString lastDirectory;
int statusCH341;
QByteArray chipData;
uint32_t currentChipSize, currentNumBlocks, currentBlockSize, currentPageSize;
uint8_t currentAlgorithm, currentChipType, currentI2CBusSpeed;
unsigned int currentAddr4bit;
bool isHalted;
QTimer *timer;
QString bytePrint(unsigned char z);
QVector <QString> chType = {"SPI_FLASH","25_EEPROM","93_EEPROM","24_EEPROM","95_EEPROM"};
struct chip_data {
QString chipManuf;
QString chipTypeTxt;
QString chipName;
uint8_t chipJedecIDMan;
uint8_t chipJedecIDDev;
uint8_t chipJedecIDCap;
uint32_t chipSize;
uint16_t sectorSize;
uint8_t chipTypeHex;
uint8_t algorithmCode;
int delay;
uint8_t addr4bit;
uint32_t blockSize;
uint8_t eepromPages;
QString chipVCC;
};
chip_data chips[2000];
int max_rec;
QString fileName;
bool cmdStarted;
QHexEdit *hexEdit;
QString sizeConvert(int a);
QString hexiAddr(uint32_t a);
uint32_t hexToInt(QString str);
QString getCRC32();
void ch341StatusFlashing();
QByteArray block;
uint32_t blockStartAddr, blockLen;
};
#endif // MAINWINDOW_H
|