refactor: 清理遗留死代码(−353 行)
仓库经多轮迭代积累了不少不再被引用的中间件代码。本次以当前前端依赖的
HTTP 端点为基准(/system/status、/logs、/can/send、/spi/send、/ota/upload、
/ota/update、/ota/relay、/restart),移除以下模块的未引用代码:
- main/transport/protocol.{h,cpp}(−257 行)
* 移除 CMD_* / ACK_* 宏(CMD_HANDSHAKE_REQ 等 16 个)
* 移除未引用方法:crc16Modbus、buildFrame、parseFrame、aesEncrypt、
aesDecrypt、sessionEncrypt、sessionDecrypt、generateRandomNonce
* 保留 init / scrambleGenerate / sessionKeyInit / sessionKeyClear
(被 ota_relay 实际调用)
- main/relay/ota_relay.{h,cpp}(−84 行)
* 移除未引用方法:startHandshake、probeBootHandshake、isStructuredAckWithPayload
* 移除未使用枚举值:RELAY_HANDSHAKE_IDLE、RELAY_RECEIVING、RELAY_TRANSFER_DONE
* 移除字段 ota_meta_t.chunk_count 与宏 OTA_META_NVS_KEY
- main/server/wifi_ota.cpp(−255 行)
* 移除 6 个未被前端调用的 HTTP 端点:/health、/wifi/status、/can/status、
/ota/status、/ota/esp32_status、/api/version
* 移除其处理器与路由注册
* 移除 mbedtls/private/sha256.h 直接引用(SHA-256 已委托 Esp32OtaCore)
- main/server/ble_ota.cpp、main/relay/ota_relay.cpp
* 同步移除 chunk_count 引用
This commit is contained in:
+16
-9
@@ -1114,22 +1114,19 @@
|
||||
log('OTA', `⚠️ file.size(${file.size}) ≠ arrayBuffer(${totalSize}),以 arrayBuffer 为准,请确认页面已 Ctrl+F5 刷新`, 'W');
|
||||
}
|
||||
|
||||
// 计算文件的 SHA-256 哈希值用于完整性验证
|
||||
setBleStage(4, '计算SHA-256...', null);
|
||||
setBleStageText('正在计算文件哈希...');
|
||||
// SHA-256 已在文件选择时(updateFileInfo)计算并存入 state.fileSha256。
|
||||
// 此处不再重复打日志(避免与 [FILE] SHA-256 重复),仅保证 fileSha256 变量有值。
|
||||
var fileSha256;
|
||||
if (state.fileSha256) {
|
||||
// 复用已计算的 SHA-256
|
||||
fileSha256 = state.fileSha256.toLowerCase();
|
||||
log('OTA', `复用已计算的 SHA-256: ${fileSha256.toUpperCase()}`);
|
||||
} else {
|
||||
// 极端兜底:state.fileSha256 未初始化(理论上 updateFileInfo 总会先设置)
|
||||
log('OTA', '正在计算文件 SHA-256 哈希...');
|
||||
const hashBuffer = await crypto.subtle.digest('SHA-256', fileBytes.buffer);
|
||||
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
||||
fileSha256 = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
|
||||
state.fileSha256 = fileSha256.toUpperCase();
|
||||
}
|
||||
log('OTA', `文件 SHA-256: ${fileSha256.toUpperCase()}`);
|
||||
// Update SHA display in file info
|
||||
var shaElem = document.getElementById('fileSha256');
|
||||
if (shaElem) shaElem.textContent = fileSha256.toUpperCase();
|
||||
@@ -1296,12 +1293,22 @@
|
||||
}
|
||||
|
||||
async function autoFlash() {
|
||||
// 每次刷写前尝试重新从本地读取文件
|
||||
// 每次刷写前尝试重新从本地读取文件(支持热重载:用户重新编译后无需重新选择)
|
||||
if (state.selectedFileHandle) {
|
||||
try {
|
||||
const freshFile = await state.selectedFileHandle.getFile();
|
||||
updateFileInfo(freshFile);
|
||||
log('FILE', '已重新读取本地文件: ' + freshFile.name + ' (' + formatBytes(freshFile.size) + ')');
|
||||
// 仅在文件变化时才刷新元数据并重算 SHA-256
|
||||
// (name/size/lastModified 任一不同即视为变化)
|
||||
// 避免对同一文件重复触发 updateFileInfo → 产生重复的 [FILE] SHA-256 日志
|
||||
const cached = state.selectedFile;
|
||||
const changed = !cached ||
|
||||
cached.name !== freshFile.name ||
|
||||
cached.size !== freshFile.size ||
|
||||
cached.lastModified !== freshFile.lastModified;
|
||||
if (changed) {
|
||||
updateFileInfo(freshFile);
|
||||
log('FILE', '已重新读取本地文件(已变更): ' + freshFile.name + ' (' + formatBytes(freshFile.size) + ')');
|
||||
}
|
||||
} catch (e) {
|
||||
log('FILE', '重新读取文件失败: ' + e.message + ',将使用缓存版本', 'W');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user