更新太和e护配置wifi失败问题

This commit is contained in:
wyf
2025-11-13 09:56:02 +08:00
parent a9992f40ee
commit 776275aa3d
34 changed files with 5470 additions and 552 deletions

View File

@@ -29,14 +29,14 @@ class FirmwareVersionService {
try {
// 构建完整的API URL
final apiUrl = '$baseUrl/~/api/get_file_list?uri=$firmwarePath';
// 发送HTTP请求 - 使用基础的http客户端不依赖项目特定实现
final response = await _makeHttpRequest(apiUrl);
if (response == null) {
return null;
}
// 解析响应数据
return _parseFirmwareData(response, baseUrl, firmwarePath);
} catch (e) {
@@ -50,14 +50,14 @@ class FirmwareVersionService {
try {
// 使用基础的http客户端
final httpClient = HttpClient();
final request = await httpClient.getUrl(Uri.parse(url));
final response = await request.close();
if (response.statusCode != 200) {
return null;
}
final responseBody = await response.transform(utf8.decoder).join();
return jsonDecode(responseBody);
} catch (e) {
@@ -68,14 +68,11 @@ class FirmwareVersionService {
/// 解析固件数据
static FirmwareVersionInfo? _parseFirmwareData(
dynamic data,
String baseUrl,
String firmwarePath
) {
dynamic data, String baseUrl, String firmwarePath) {
if (data == null || data['list'] == null) {
return null;
}
final versionList = data['list'] as List;
int? maxVersionNum;
String? latestFileName;
@@ -86,10 +83,10 @@ class FirmwareVersionService {
try {
// 解析版本号 - 假设文件名格式为 "something-version.extension"
final versionMatch = _extractVersionFromFileName(fileName);
if (versionMatch != null) {
final versionNum = int.parse(versionMatch);
if (maxVersionNum == null || versionNum > maxVersionNum) {
maxVersionNum = versionNum;
latestFileName = fileName;
@@ -104,15 +101,16 @@ class FirmwareVersionService {
if (latestFileName != null && maxVersionNum != null) {
// 构建下载URL
final downloadUrl = '$baseUrl/${firmwarePath.replaceFirst('/', '')}$latestFileName';
final downloadUrl =
'$baseUrl/${firmwarePath.replaceFirst('/', '')}$latestFileName';
return FirmwareVersionInfo(
version: maxVersionNum.toString(),
fileName: latestFileName,
downloadUrl: downloadUrl,
);
}
return null;
}
@@ -127,14 +125,63 @@ class FirmwareVersionService {
// 格式: firmware_123.bin
RegExp(r'_(\d+)\.'),
];
for (final pattern in patterns) {
final match = pattern.firstMatch(fileName);
if (match != null && match.groupCount >= 1) {
return match.group(1);
}
}
return null;
}
}
/// 获取所有固件版本(按版本号从大到小排序)
static Future<List<FirmwareVersionInfo>> getAllFirmwareVersions({
required String baseUrl,
required String firmwarePath,
}) async {
try {
final apiUrl = '$baseUrl/~/api/get_file_list?uri=$firmwarePath';
final response = await _makeHttpRequest(apiUrl);
if (response == null) return [];
return _parseAllFirmwareData(response, baseUrl, firmwarePath);
} catch (e) {
print('获取所有固件版本信息失败: $e');
return [];
}
}
/// 解析所有固件版本数据
static List<FirmwareVersionInfo> _parseAllFirmwareData(
dynamic data, String baseUrl, String firmwarePath) {
if (data == null || data['list'] == null) {
return [];
}
final versionList = data['list'] as List;
final result = <FirmwareVersionInfo>[];
for (var item in versionList) {
if (item is Map && item.containsKey('n')) {
final fileName = item['n'] as String;
final versionStr = _extractVersionFromFileName(fileName);
if (versionStr != null) {
final downloadUrl =
'$baseUrl/${firmwarePath.replaceFirst('/', '')}$fileName';
result.add(FirmwareVersionInfo(
version: versionStr,
fileName: fileName,
downloadUrl: downloadUrl,
));
}
}
}
// 按版本号从大到小排序
result.sort((a, b) => int.parse(b.version).compareTo(int.parse(a.version)));
return result;
}
}