|
|
@ -288,19 +288,51 @@ class OtaCoreService { |
|
|
throw "获取设备信息失败,请检查连接"; |
|
|
throw "获取设备信息失败,请检查连接"; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 验证固件版本格式 |
|
|
// 获取产品信息以确定设备类型 |
|
|
final firmwareParts = deviceInfo.firmwareVersion.split('.'); |
|
|
DBProduct? product = AppConfig.getproduct("DeapSound"); |
|
|
final firstPart = firmwareParts.sublist(0, 3).join('.'); |
|
|
if (product == null) { |
|
|
final secondPart = firmwareParts.sublist(3).join('.'); |
|
|
throw "无法获取产品信息"; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
Logger().d("firstPart: $firstPart, secondPart: $secondPart"); |
|
|
// 根据设备类型进行不同的版本校验 |
|
|
|
|
|
String currentVersion; |
|
|
|
|
|
if (product.devicetype == DeviceType.bleBluetoothSingleHeadset.value) { |
|
|
|
|
|
// 单端耳机:固件版本只有三位数(如:1.2.3) |
|
|
|
|
|
final firmwareParts = deviceInfo.firmwareVersion.split('.'); |
|
|
|
|
|
if (firmwareParts.length < 3) { |
|
|
|
|
|
throw "单端耳机固件版本格式错误:${deviceInfo.firmwareVersion},应为三位数格式(如:1.2.3)"; |
|
|
|
|
|
} |
|
|
|
|
|
currentVersion = firmwareParts.sublist(0, 3).join('.'); |
|
|
|
|
|
Logger().d("单端耳机版本: $currentVersion"); |
|
|
|
|
|
} else if (product.devicetype == |
|
|
|
|
|
DeviceType.bleBluetoothDoubleHeadset.value) { |
|
|
|
|
|
// 双端耳机:固件版本有六位数(如:1.2.3.1.2.3) |
|
|
|
|
|
final firmwareParts = deviceInfo.firmwareVersion.split('.'); |
|
|
|
|
|
if (firmwareParts.length < 6) { |
|
|
|
|
|
throw "双端耳机固件版本格式错误:${deviceInfo.firmwareVersion},应为六位数格式(如:1.2.3.1.2.3)"; |
|
|
|
|
|
} |
|
|
|
|
|
final firstPart = firmwareParts.sublist(0, 3).join('.'); |
|
|
|
|
|
final secondPart = firmwareParts.sublist(3, 6).join('.'); |
|
|
|
|
|
|
|
|
|
|
|
Logger().d("双端耳机版本 - firstPart: $firstPart, secondPart: $secondPart"); |
|
|
|
|
|
|
|
|
if (firstPart != secondPart) { |
|
|
if (firstPart != secondPart) { |
|
|
throw "固件版本格式错误:${deviceInfo.firmwareVersion}"; |
|
|
throw "双端耳机固件版本格式错误:${deviceInfo.firmwareVersion},前三位和后三位应该相同"; |
|
|
|
|
|
} |
|
|
|
|
|
currentVersion = firstPart; |
|
|
|
|
|
} else { |
|
|
|
|
|
// 其他设备类型,使用原有逻辑 |
|
|
|
|
|
final firmwareParts = deviceInfo.firmwareVersion.split('.'); |
|
|
|
|
|
if (firmwareParts.length >= 3) { |
|
|
|
|
|
currentVersion = firmwareParts.sublist(0, 3).join('.'); |
|
|
|
|
|
} else { |
|
|
|
|
|
currentVersion = deviceInfo.firmwareVersion; |
|
|
|
|
|
} |
|
|
|
|
|
Logger().d("其他设备类型版本: $currentVersion"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
return { |
|
|
return { |
|
|
'currentVersion': firstPart, |
|
|
'currentVersion': currentVersion, |
|
|
'productId': deviceInfo.firmwareProductId, |
|
|
'productId': deviceInfo.firmwareProductId, |
|
|
'deviceInfo': deviceInfo, |
|
|
'deviceInfo': deviceInfo, |
|
|
}; |
|
|
}; |
|
|
|