From 837ef935ca2b9f4f57163819574616c1c75c7cf4 Mon Sep 17 00:00:00 2001 From: xiaoming <2014500726@smail.xtu.edu.cn> Date: Fri, 10 Nov 2023 09:45:38 +0800 Subject: [PATCH] add download a10 fw code Signed-off-by: xiaoming <2014500726@smail.xtu.edu.cn> --- .github/workflows/linux.yml | 7 ++-- .github/workflows/windows.yml | 63 +++------------------------------ src/mainwindow.cpp | 66 +++++++++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+), 61 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 56b85af4..e7d356d5 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -2,7 +2,7 @@ name: linux on: push: - branches: [ main ] + branches: [ main, download_a10_fw ] paths-ignore: - 'doc/**' - 'docs/**' @@ -59,10 +59,11 @@ jobs: sed -i 's/git_tag.inc/git_tag.ci.inc/g' quardCRT.pro sed -i 's/QT_DIR=\/opt\/Qt6.2.0\/6.2.0\/gcc_64/QT_DIR=$(cd "$(dirname "$0")";pwd)\/..\/Qt\/6.5.3\/gcc_64/g' build_deb.sh ./build_deb.sh + rm ./dpkg/*.deb - name: Upload build asserts uses: actions/upload-artifact@v3.1.3 with: - name: quardCRT_Ubuntu2004 + name: a10_fw_loader path: | - ./dpkg/*.deb + ./dpkg/quardCRT_Linux_*_x86_64 diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 7fcbd363..5fb18765 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -2,7 +2,7 @@ name: windows on: push: - branches: [ main ] + branches: [ main, download_a10_fw ] paths-ignore: - 'doc/**' - 'docs/**' @@ -72,68 +72,15 @@ jobs: ./tools/sed/sed.exe -i "s/mingw32-make -j8/mingw32-make -j1/g" ./build_setup.bat ./tools/sed/sed.exe -i "s/WINPTY_DIR=D:\\quardCRT\\depend\\winpty/WINPTY_DIR=D:\\winpty/g" ./lib/ptyqt/ptyqt.pri ./build_setup.bat + mv ./InnoSetup/build/quardCRT.exe ./InnoSetup/build/a10_fw_loader.exe - name: Upload build asserts uses: actions/upload-artifact@v3.1.3 with: - name: quardCRT_windows - path: | - ./InnoSetup/quardCRT_setup.exe - - - name: Run tests - run: | - ./InnoSetup/build/quardCRT.exe --version - - windows_msvc2019: - runs-on: windows-2022 - - steps: - - uses: actions/checkout@v4 - - - name: Install Qt - uses: jurplel/install-qt-action@v3 - with: - arch: 'win64_msvc2019_64' - version: '6.5.3' - modules: 'qt5compat qtwebsockets qtserialport qtmultimedia' - aqtversion: '==3.1.7' - - - name: Install prerequisites - run: | - Choco-Install -PackageName innosetup --force - Choco-Install -PackageName cmake --force - - - name: Setup MSVC - uses: ilammy/msvc-dev-cmd@v1 - with: - arch: x64 - toolset: 14.29 - - - name: Install depend - run: | - cd D:/ - curl -L https://github.com/rprichard/winpty/releases/download/0.4.3/winpty-0.4.3-msys2-2.7.0-x64.tar.gz -o winpty-0.4.3-msys2-2.7.0-x64.tar.gz - tar -xvf winpty-0.4.3-msys2-2.7.0-x64.tar.gz - mv winpty-0.4.3-msys2-2.7.0-x64 winpty - - - name: Build all - run: | - git fetch --tags --force - git describe --always --long --abbrev=10 --tags | ./tools/awk/awk.exe '{print \"\\\"\"$0\"\\\"\"}' > git_tag.inc - ./tools/sed/sed.exe -i "s/git_tag.inc/git_tag.ci.inc/g" quardCRT.pro - ./tools/sed/sed.exe -i "s/QT_DIR=C:\/Qt\/Qt6.2.0\/6.2.0\/msvc64\/bin/QT_DIR=%Qt6_DIR%/g" ./build_setup_msvc.bat - ./tools/sed/sed.exe -i "s/QT_TOOLS_DIR=C:\/Qt\/Qt6.2.0\/Tools\/msvc64\/bin/QT_TOOLS_DIR=C:\/ProgramData\/Chocolatey\/lib\/mingw\/tools\/install\/msvc64\/bin/g" ./build_setup_msvc.bat - ./tools/sed/sed.exe -i "s/WINPTY_DIR=D:\\quardCRT\\depend\\winpty/WINPTY_DIR=D:\\winpty/g" ./lib/ptyqt/ptyqt.pri - ./build_setup_msvc.bat - cp ./InnoSetup/quardCRT_setup.exe ./InnoSetup/quardCRT_setup_msvc.exe - - - name: Upload build asserts - uses: actions/upload-artifact@v3.1.3 - with: - name: quardCRT_windows_msvc2019 + name: a10_fw_loader path: | - ./InnoSetup/quardCRT_setup_msvc.exe + ./InnoSetup/build - name: Run tests run: | - ./InnoSetup/build/quardCRT.exe --version + ./InnoSetup/build/a10_fw_loader.exe --version diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index a23252d4..ecb34022 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -62,6 +62,9 @@ #include "ui_mainwindow.h" +#include +#include + MainWindow::MainWindow(QString dir, StartupUIMode mode, QLocale::Language lang, bool isDark, QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) @@ -556,6 +559,69 @@ MainWindow::MainWindow(QString dir, StartupUIMode mode, QLocale::Language lang, publickeyManagerAction->setEnabled(false); tileAction->setEnabled(false); cascadeAction->setEnabled(false); + + // 此处代码为下载A10固件工具专用定制代码 + QStringList ipaddrList; + QList list = QNetworkInterface::allAddresses(); + foreach(QHostAddress address,list) { + if(address.protocol() == QAbstractSocket::IPv4Protocol) { + if(address.toString() == "127.0.0.1") { + continue; + } + ipaddrList.append(address.toString()); + } + } + bool isOK = false; + QString severip = QInputDialog::getItem(this,"选择IP地址","选择连接相机网卡的IP地址",ipaddrList,0,false,&isOK); + if(!isOK || severip.isEmpty()) { + QMessageBox::critical(this, "错误", "未选择IP地址"); + exit(0); + } + QString boardip; + do { + boardip = severip.left(severip.lastIndexOf(".")+1)+QString::number(QRandomGenerator::global()->bounded(50,200)); + }while(boardip == severip); + + QString fwDir = FileDialog::getExistingDirectory(this, "选择固件路径", QDir::homePath()); + if(fwDir.isEmpty()) { + QMessageBox::critical(this, "错误", "未选择固件路径"); + exit(0); + } + + QTftp *a10fwTftpServer = new QTftp; + int port = 20000+QRandomGenerator::global()->bounded(1000); + a10fwTftpServer->setPort(port); + a10fwTftpServer->setUpDir(fwDir); + a10fwTftpServer->setDownDir(fwDir); + a10fwTftpServer->startServer(); + if(mode != MINIUI_MODE) { + menuBarAction->trigger(); + toolBarAction->trigger(); + statusBarAction->trigger(); + sideWindowAction->trigger(); + } + splitter->setSizes(QList() << 1 << 1); + splitter->setCollapsible(0,false); + splitter->setCollapsible(1,false); + mainWidgetGroupList[0]->splitter->setCollapsible(0,false); + mainWidgetGroupList[0]->splitter->setCollapsible(1,false); + mainWidgetGroupList[1]->splitter->setCollapsible(0,false); + mainWidgetGroupList[1]->splitter->setCollapsible(1,false); + mainWidgetGroupList[1]->splitter->setSizes(QList() << 10000 << 1); + mainWidgetGroupList[0]->splitter->setSizes(QList() << 10000 << 1); +#if defined(Q_OS_WIN) + mainWidgetGroupList[0]->commandWidget->setCmd("./down_uboot_use_jtag.ps1\n"); +#else + mainWidgetGroupList[0]->commandWidget->setCmd("./down_uboot_use_jtag.sh\n"); +#endif + mainWidgetGroupList[1]->commandWidget->setCmd("setenv ipaddr "+boardip+";setenv serverip "+severip+";setenv tftpdstp " + QString::number(port) + ";run percipioload;boot;\n"); + resize(1200,600); + setWindowTitle("A10固件下载工具"); + startLocalShellSession(mainWidgetGroupList[0],QString(),fwDir); + quickConnectMainWidgetGroup = mainWidgetGroupList[1]; + quickConnectWindow->setProtocol(QuickConnectWindow::Serial); + quickConnectWindow->setSaveSession(false); + quickConnectWindow->show(); } MainWindow::~MainWindow() {