--- /dev/null
+/*\r
+ * Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.\r
+ */\r
+#ifndef LIBRARY_GLOBAL_H\r
+#define LIBRARY_GLOBAL_H\r
+\r
+#if defined(_MSC_VER) || defined(WIN64) || defined(_WIN64) || defined(__WIN64__) || defined(WIN32) || \\r
+ defined(_WIN32) || defined(__WIN32__) || defined(__NT__)\r
+\r
+#define Q_DECL_EXPORT __declspec(dllexport)\r
+#define Q_DECL_IMPORT __declspec(dllimport)\r
+#else\r
+#define Q_DECL_EXPORT __attribute__((visibility("default")))\r
+#define Q_DECL_IMPORT __attribute__((visibility("default")))\r
+#endif\r
+\r
+#if defined(LIBRARY_LIBRARY)\r
+#define LIBRARY_EXPORT Q_DECL_EXPORT\r
+#else\r
+#define LIBRARY_EXPORT Q_DECL_IMPORT\r
+#endif\r
+\r
+namespace uapi {\r
+struct FileInfo {\r
+ unsigned short sn;\r
+ unsigned char name_len;\r
+ unsigned char is_dir;\r
+ unsigned int file_size;\r
+ char name[0xFF];\r
+};\r
+\r
+struct FileListResult {\r
+ unsigned int lsInfoNumber;\r
+ FileInfo lsInfo[0];\r
+};\r
+\r
+struct FileTransmitDataCount {\r
+ unsigned int total_size;\r
+ unsigned int transmited_size;\r
+};\r
+\r
+struct TransmitResult {\r
+ bool finishResult;\r
+};\r
+\r
+struct AtReceiveData {\r
+ unsigned int dataLength;\r
+ unsigned char *data;\r
+};\r
+\r
+struct SerialPortReceiveData {\r
+ unsigned int dataLength;\r
+ unsigned char *data;\r
+};\r
+enum InfoType {\r
+ INFO_SERIALPORT, // 单板段数据\r
+ INFO_FILE_TRANSMIT_RESULT,\r
+ INFO_FILE_LIST_RESULT,\r
+ INFO_AT_RECEIVE,\r
+};\r
+enum ConnectMode {\r
+ MODE_SERIALPORT,\r
+ MODE_BLUETOOTH\r
+};\r
+enum ErrorCode{\r
+ ERROR_FAIL = -1,\r
+ ERROR_SUCC = 0x0,\r
+};\r
+}\r
+\r
+#endif // LIBRARY_GLOBAL_H\r
--- /dev/null
+#-------------------------------------------------\r
+#\r
+# Project created by QtCreator 2024-03-04T16:59:50\r
+#\r
+#-------------------------------------------------\r
+\r
+QT += core gui\r
+\r
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets\r
+\r
+TARGET = factory_tool\r
+TEMPLATE = app\r
+\r
+\r
+SOURCES += main.cpp\\r
+ mainwindow.cpp \\r
+ at_data.cpp \\r
+ custom.cpp \\r
+ mythread.cpp \\r
+ result_thread.cpp \\r
+ wrtm_class.cpp\r
+\r
+HEADERS += mainwindow.h \\r
+ Library_global.h \\r
+ at_data.h \\r
+ common.h \\r
+ custom.h \\r
+ info.h \\r
+ interface.h \\r
+ mythread.h \\r
+ result_thread.h \\r
+ header.h\r
+\r
+FORMS += mainwindow.ui\r
+\r
+DISTFILES += \\r
+ readme.txt \\r
+ untitled_zh_CN.ts\r
+\r
+INCLUDEPATH += $$PWD/.\r
+DEPENDPATH += $$PWD/.\r
+\r
+\r
+LIBS += -L$$PWD/lib/\r
+LIBS += libsecurec.a\r
+LIBS += -ldiag\r
+LIBS += -lAdvapi32\r
+\r
+\r
+INCLUDEPATH += $$PWD/lib\r
+DEPENDPATH += $$PWD/lib\r
--- /dev/null
+#ifndef HEADER_H\r
+#define HEADER_H\r
+#include <stdint.h>\r
+\r
+//#ifdef __cplusplus\r
+//extern "C" {\r
+//#endif\r
+/*-----------------------业务处理-------------------------------*/\r
+typedef enum {\r
+ FAIL = 0x0,\r
+ SUCC = 0x1,\r
+} uapi_errcode;\r
+\r
+typedef struct {\r
+ uint32_t total_size; // 当前传输文件总大小\r
+ uint32_t transmited_size; // 当前文件已传输大小\r
+} uapi_transmit_progress;\r
+\r
+typedef struct {\r
+ uint16_t sn; // 序号\r
+ uint8_t name_len; // 文件(夹)名长度\r
+ uint8_t is_dir; // 是否是文件夹\r
+ uint32_t file_size; // 文件大小\r
+ uint8_t name[0xFF]; // 文件(夹)名\r
+} uapi_ls_info_t;\r
+\r
+typedef uint32_t (*uart_rx_function)(void *buf, uint32_t len); // uart RX 回调函数\r
+typedef uint32_t (*at_result_callback)(void *buf, uint32_t len); // AT 命令返回值回调函数,入参buf包括 mould_id + cmd_id + payload\r
+typedef uint32_t (*transmit_ls_result)(uint32_t size, uapi_ls_info_t *buff); // transmit get list回调函数,入参 size 为文件(夹)的数量,buff 为文件(夹)的信息\r
+typedef uint32_t (*transmit_result_hook)(bool is_finished, uintptr_t usr_data); // 传输结果回调函数,is_finished 为传输结束标志,usr_data 预留接口,目前为NULL\r
+\r
+uapi_errcode uapi_uart_open(const char *com, uint32_t baud); // 打开uart口, com 格式为 "\\\\.\\COM47", baud 为波特率\r
+uapi_errcode uapi_uart_tx_data(void *buf, uint32_t buf_len); // uart TX 发送数据buf\r
+uapi_errcode uapi_uart_set_rts_dtr(int rts_flag, int dtr_flag); // uart 设置rts和dtr开关\r
+uapi_errcode uapi_uart_callback_register(uart_rx_function callback); // uart 注册回调函数\r
+uapi_errcode uapi_uart_close(void); // 关闭uart口\r
+\r
+uapi_errcode uapi_at_send(uint8_t module_id, uint8_t cmd_id, uint8_t *pkt, uint32_t pkt_size, at_result_callback callback); // at命令发送接口,module_id及cmd_id请参考《Sparta 产线 测试指南》10.2章\r
+uapi_errcode uapi_file_download(char* board_file_path, char* local_file_path, transmit_result_hook handler); // 文件下载接口,参数分别为板端文件地址(详细到文件后缀),pc端存储路径(详细到文件夹),传输结果回调函数\r
+uapi_errcode uapi_file_upload(char* board_file_path,char* local_file_path, transmit_result_hook handler); // 文件上传接口,参数分别为板端文件地址(详细到文件后缀),pc端存储路径(详细到文件后缀),传输结果回调函数\r
+uapi_errcode uapi_ls_send(char *path, uint32_t path_len, transmit_ls_result callback); // 查询文件列表接口,参数为板端文件路径(详细到文件夹),路径长度,get list回调函数\r
+uapi_errcode uapi_file_delete(char *board_file_path, uint32_t board_file_path_len); // 删除指定文件接口,参数为板端文件地址(详细到文件后缀),文件路径长度\r
+uapi_errcode uapi_file_transmit_stop(void); // 停止文件下载接口\r
+uapi_errcode uapi_transmit_process(uapi_transmit_progress *data); // 获取文件传输进度,入参 data 更新为正在传输的文件的总大小和已传输大小\r
+\r
+//#ifdef __cplusplus\r
+//}\r
+//#endif\r
+#endif\r
--- /dev/null
+/*\r
+ * Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.\r
+ */\r
+#ifndef INFO_H\r
+#define INFO_H\r
+\r
+namespace uapi {\r
+class Info {\r
+public:\r
+ virtual ~Info() {};\r
+ virtual void onReadEvent(int eventType, void *data) = 0;\r
+};\r
+}\r
+#endif // INFO_H\r
--- /dev/null
+#ifndef INTERFACE_H\r
+#define INTERFACE_H\r
+#include "info.h"\r
+#include "Library_global.h"\r
+\r
+class Application;\r
+\r
+class LIBRARY_EXPORT Interface\r
+{\r
+public:\r
+ Interface();\r
+ ~Interface();\r
+ int SerialPortInit(int byteSize, int parity, int stopBits);\r
+ int SerialPortSetRtsDtr(bool rtsFlag, bool DtrFlag);\r
+ int SerialPortOpen(const char *portName,int baud);\r
+ int SerialPortClose(void);\r
+ int SerialPortWrite(const unsigned char *data,unsigned int len);\r
+ int FileDownload(const char *boardFilePath, const char *localFilePath);\r
+ int FileGetList(const char *boardPath, unsigned int boardPathLen);\r
+ int FileUpload(const char *boardFilePath, char *localFilePath); // boardFilePath包含文件名+后缀\r
+ int FileDelete(const char *boardFilePath, unsigned int boardFilePathLen);\r
+ int FileTransmitStop(void);\r
+ int FileTransmitProgress(uapi::FileTransmitDataCount *data); // 获取文件总大小和已传输大小到data中\r
+ int AtMessageSend(unsigned char moduleId, unsigned char cmdId, const unsigned char *data, unsigned int dataLen);\r
+ int InfoEventConnect(uapi::Info *event); // 连接读取事件,返回event type和data\r
+ int SetCurrentMode(uapi::ConnectMode mode); // 设置当前连接类型(单板段or整机段)\r
+private:\r
+ Application *applicationHandle;\r
+};\r
+\r
+#endif // INTERFACE_H\r
}\r
} else {\r
// ui_display("open uart fail.\r\n",false,false);\r
- QMessageBox::warning(this, tr("串口"), tr("打开串口失败!"), QMessageBox::Ok);\r
+ QMessageBox::warning(this, tr("SerialPort"), tr("Open SerialPort failed"), QMessageBox::Ok);\r
ui->pbtn_open_uart->setChecked(false);\r
}\r
}\r
QString strCommRet = QObject::tr("");\r
HKEY hKey;\r
if (::RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("HARDWARE\\DEVICEMAP\\SERIALCOMM"), 0, KEY_READ, &hKey) != 0) {\r
- QMessageBox::warning(this, tr("注册表"), tr("无法打开注册表!"), QMessageBox::Ok);\r
+ QMessageBox::warning(this, tr("Register"), tr("can't open register"),QMessageBox::Ok);\r
return QObject::tr(""); // 无法打开注册表\r
}\r
QString strKeyMsg; // 键名\r
ulong nKeySize = sizeof(portName);\r
ulong nValueSize = sizeof(commName);\r
ulong nType;\r
+ memset(commName,0,sizeof(commName));\r
+ memset(portName,0,sizeof(portName));\r
if (::RegEnumValue(hKey, nIndex, portName, &nKeySize, 0, &nType, (BYTE *)commName, &nValueSize) == 0) { // 列举键名\r
// 读取键名\r
for (uint i = 0; i < nKeySize; i++) {\r
}\r
qDebug()<<ui->cbox_fromborad_filelist->currentData().toInt();\r
if(ui->cbox_fromborad_filelist->currentData().toInt()==0){\r
- QMessageBox::warning(this, tr("Board File Name"), tr("文件大小为0!"), QMessageBox::Ok);\r
+ QMessageBox::warning(this, tr("Board File Name"), tr("filesize 0"), QMessageBox::Ok);\r
return;\r
}\r
if(!str_file_path.endsWith("/")){\r
QString board_file_path = ui->ledit_toboard_boardpath->text();\r
QString local_file_path = ui->ledit_toboard_filepath->text();\r
if (board_file_path.isEmpty() || local_file_path.isEmpty()) {\r
- QMessageBox::warning(this, tr("File Path"), tr("文件路径为空!"), QMessageBox::Ok);\r
+ QMessageBox::warning(this, tr("File Path"), tr("File Path Empty!"), QMessageBox::Ok);\r
return;\r
}\r
char *buf_board_file_path = (char *)board_file_path.toStdString().c_str();\r
return 0;\r
}\r
\r
-uint32_t ls_callback(uint32_t size, void *buff)\r
+uint32_t ls_callback(uint32_t size, uapi_ls_info_t *buff)\r
{\r
g_result_info.transmit_ls_buff = (uapi_ls_info_t *)malloc(size * sizeof(uapi_ls_info_t)+1);\r
memcpy_s(g_result_info.transmit_ls_buff, size * sizeof(uapi_ls_info_t), (uapi_ls_info_t *)buff, size * sizeof(uapi_ls_info_t));\r
};\r
\r
uint32_t uart_callback(void *buf, uint32_t buf_len);\r
-uint32_t ls_callback(uint32_t size, void *buff);\r
+uint32_t ls_callback(uint32_t size, uapi_ls_info_t *buff);\r
uint32_t transmit_callback(bool is_finished, uintptr_t usr_data);\r
uint32_t at_callback(void *buf, uint32_t len);\r
void transmit_get_data_count(uint32_t *total_size, uint32_t *current_size);\r
+++ /dev/null
-#ifndef HEADER_H\r
-#define HEADER_H\r
-#include <stdint.h>\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-/*-----------------------业务处理-------------------------------*/\r
-typedef struct {\r
- uint32_t total_size;\r
- uint32_t transmited_size;\r
-} uapi_transmit_progress;\r
-\r
-typedef enum {\r
- FAIL = 0x0,\r
- SUCC = 0x1,\r
-} uapi_errcode;\r
-\r
-typedef struct {\r
- uint16_t sn;\r
- uint8_t name_len;\r
- uint8_t is_dir;\r
- uint32_t file_size;\r
- uint8_t name[0xFF];\r
-} uapi_ls_info_t;\r
-\r
-\r
-\r
-typedef uint32_t (*uart_rx_function)(void *buf, uint32_t len);\r
-typedef uint32_t (*at_result_callback)(void *buf, uint32_t len);\r
-typedef uint32_t (*transmit_ls_result)(uint32_t size,void *buff);\r
-typedef uint32_t (*transmit_result_hook)(bool is_finished, uintptr_t usr_data);\r
-\r
-\r
-uapi_errcode uapi_at_send(uint8_t module_id, uint8_t cmd_id, uint8_t *pkt, uint32_t pkt_size,at_result_callback callback);\r
-uapi_errcode uapi_file_download(char* board_file_path,char* local_file_path,transmit_result_hook handler);\r
-uapi_errcode uapi_file_upload(char* board_file_path,char* local_file_path,transmit_result_hook handler);\r
-uapi_errcode uapi_ls_send(char *path, uint32_t path_len,transmit_ls_result callback); // ls\r
-uapi_errcode uapi_file_delete(char *board_file_path, uint32_t board_file_path_len);\r
-uapi_errcode uapi_file_transmit_stop(void);\r
-uapi_errcode uapi_transmit_process(uapi_transmit_progress *data);\r
-/*----------------------------------------------------------*/\r
-uapi_errcode uapi_uart_open(const char *com, uint32_t baud);\r
-uapi_errcode uapi_uart_tx_data(void *buf, uint32_t buf_len);\r
-uapi_errcode uapi_uart_callback_register(uart_rx_function callback);\r
-uapi_errcode uapi_uart_close(void);\r
-uapi_errcode uapi_uart_set_rts_dtr(int rts_flag, int dtr_flag);\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif\r
--- /dev/null
+#ifndef UAPI_MAIN_H
+#define UAPI_MAIN_H
+
+typedef enum {
+ FAIL = 0x0,
+ SUCC = 0x1,
+} uapi_errcode;
+
+typedef struct {
+ uint32_t total_size; // 当前传输文件总大小
+ uint32_t transmited_size; // 当前文件已传输大小
+} uapi_transmit_progress;
+
+typedef struct {
+ uint16_t sn; // 序号
+ uint8_t name_len; // 文件(夹)名长度
+ uint8_t is_dir; // 是否是文件夹
+ uint32_t file_size; // 文件大小
+ uint8_t name[0xFF]; // 文件(夹)名
+} uapi_ls_info_t;
+
+typedef uint32_t (*uart_rx_function)(void *buf, uint32_t len); // uart RX 回调函数
+typedef uint32_t (*at_result_callback)(void *buf, uint32_t len); // AT 命令返回值回调函数,入参buf包括 mould_id + cmd_id + payload
+typedef uint32_t (*transmit_ls_result)(uint32_t size, uapi_ls_info_t *buff); // transmit get list回调函数,入参 size 为文件(夹)的数量,buff 为文件(夹)的信息
+typedef uint32_t (*transmit_result_hook)(bool is_finished, uintptr_t usr_data); // 传输结果回调函数,is_finished 为传输结束标志,usr_data 预留接口,目前为NULL
+
+uapi_errcode uapi_uart_open(const char *com, uint32_t baud); // 打开uart口, com 格式为 "\\\\.\\COM47", baud 为波特率
+uapi_errcode uapi_uart_tx_data(void *buf, uint32_t buf_len); // uart TX 发送数据buf
+uapi_errcode uapi_uart_set_rts_dtr(int rts_flag, int dtr_flag); // uart 设置rts和dtr开关
+uapi_errcode uapi_uart_callback_register(uart_rx_function callback); // uart 注册回调函数
+uapi_errcode uapi_uart_close(void); // 关闭uart口
+
+uapi_errcode uapi_at_send(uint8_t module_id, uint8_t cmd_id, uint8_t *pkt, uint32_t pkt_size, at_result_callback callback); // at命令发送接口,module_id及cmd_id请参考《Sparta 产线 测试指南》10.2章
+uapi_errcode uapi_file_download(char* board_file_path, char* local_file_path, transmit_result_hook handler); // 文件下载接口,参数分别为板端文件地址(详细到文件后缀),pc端存储路径(详细到文件夹),传输结果回调函数
+uapi_errcode uapi_file_upload(char* board_file_path,char* local_file_path, transmit_result_hook handler); // 文件上传接口,参数分别为板端文件地址(详细到文件后缀),pc端存储路径(详细到文件后缀),传输结果回调函数
+uapi_errcode uapi_ls_send(char *path, uint32_t path_len, transmit_ls_result callback); // 查询文件列表接口,参数为板端文件路径(详细到文件夹),路径长度,get list回调函数
+uapi_errcode uapi_file_delete(char *board_file_path, uint32_t board_file_path_len); // 删除指定文件接口,参数为板端文件地址(详细到文件后缀),文件路径长度
+uapi_errcode uapi_file_transmit_stop(void); // 停止文件下载接口
+uapi_errcode uapi_transmit_process(uapi_transmit_progress *data); // 获取文件传输进度,入参 data 更新为正在传输的文件的总大小和已传输大小
+#endif
--- /dev/null
+#include "header.h"\r
+\r
+#include "interface.h"\r
+#include "info.h"\r
+#include "windows.h"\r
+#include "Library_global.h"\r
+using namespace std;\r
+\r
+class MyInfo : public uapi::Info\r
+{\r
+public:\r
+ MyInfo(){};\r
+ ~MyInfo(){};\r
+ void onReadEvent(int eventType, void *data) override\r
+ {\r
+ switch(eventType)\r
+ {\r
+ case uapi::INFO_SERIALPORT:\r
+\r
+ break;\r
+ case uapi::INFO_FILE_TRANSMIT_RESULT:\r
+// uapi::TransmitResult *ptransResult = (uapi::TransmitResult*)data;\r
+// out<<"TransmitResult = "<<ptransResult->finishResult;\r
+ break;\r
+ case uapi::INFO_FILE_LIST_RESULT:\r
+ break;\r
+ case uapi::INFO_AT_RECEIVE:\r
+ break;\r
+ }\r
+\r
+ }\r
+};\r
+static MyInfo info;\r
+static Interface *handle= new Interface();\r
+uapi_errcode uapi_init_wrtm_class(void)\r
+{\r
+ handle->InfoEventConnect(&info);\r
+ handle->SetCurrentMode(uapi::MODE_BLUETOOTH);\r
+ return SUCC;\r
+}\r
+\r
+uapi_errcode uapi_uart_open(const char *com, uint32_t baud) // 打开uart口, com 格式为 "\\\\.\\COM47", baud 为波特率\r
+{\r
+ return SUCC;\r
+}\r
+uapi_errcode uapi_uart_tx_data(void *buf, uint32_t buf_len) // uart TX 发送数据buf\r
+{\r
+ return SUCC;\r
+}\r
+uapi_errcode uapi_uart_set_rts_dtr(int rts_flag, int dtr_flag) // uart 设置rts和dtr开关\r
+{\r
+ return SUCC;\r
+}\r
+uapi_errcode uapi_uart_callback_register(uart_rx_function callback) // uart 注册回调函数\r
+{\r
+ return SUCC;\r
+}\r
+uapi_errcode uapi_uart_close(void)// 关闭uart口\r
+{\r
+ return SUCC;\r
+}\r
+\r
+uapi_errcode uapi_at_send(uint8_t module_id, uint8_t cmd_id, uint8_t *pkt, uint32_t pkt_size, at_result_callback callback) // at命令发送接口,module_id及cmd_id请参考《Sparta 产线 测试指南》10.2章\r
+{\r
+ return SUCC;\r
+}\r
+\r
+uapi_errcode uapi_file_download(char* board_file_path, char* local_file_path, transmit_result_hook handler) // 文件下载接口,参数分别为板端文件地址(详细到文件后缀),pc端存储路径(详细到文件夹),传输结果回调函数\r
+{\r
+ return SUCC;\r
+}\r
+\r
+uapi_errcode uapi_file_upload(char* board_file_path,char* local_file_path, transmit_result_hook handler)// 文件上传接口,参数分别为板端文件地址(详细到文件后缀),pc端存储路径(详细到文件后缀),传输结果回调函数\r
+{\r
+ return SUCC;\r
+}\r
+\r
+uapi_errcode uapi_ls_send(char *path, uint32_t path_len, transmit_ls_result callback)// 查询文件列表接口,参数为板端文件路径(详细到文件夹),路径长度,get list回调函数\r
+{\r
+ return SUCC;\r
+}\r
+\r
+uapi_errcode uapi_file_delete(char *board_file_path, uint32_t board_file_path_len) // 删除指定文件接口,参数为板端文件地址(详细到文件后缀),文件路径长度\r
+{\r
+ return SUCC;\r
+}\r
+\r
+uapi_errcode uapi_file_transmit_stop(void)// 停止文件下载接口\r
+{\r
+ return SUCC;\r
+}\r
+\r
+uapi_errcode uapi_transmit_process(uapi_transmit_progress *data) // 获取文件传输进度,入参 data 更新为正在传输的文件的总大小和已传输大小\r
+{\r
+ return SUCC;\r
+}\r