diff --git a/MasstransferExporter/OTA/Service/OTAService.cs b/MasstransferExporter/OTA/Service/OTAService.cs
index 0202125..8a4ddad 100644
--- a/MasstransferExporter/OTA/Service/OTAService.cs
+++ b/MasstransferExporter/OTA/Service/OTAService.cs
@@ -25,10 +25,74 @@ public class OTAService
_previousBackupPath = previousBackupPath;
_updatePackagePath = updatePackagePath;
}
+
+ ///
+ /// 订阅OTA更新
+ ///
+ public async Task ListenOTAUpdateEvent()
+ {
+ await MessageQueueHelper.Subscribe(Topics.IssuedOTAPackage, HandleUpdateOTAEvent);
+ }
+
+ ///
+ /// 查询OTA更新
+ ///
+ ///
+ public static async Task QueryOTAUpdate()
+ {
+ await MessageQueueHelper.Publish(Topics.QueryOTA, null);
+ }
+
+ ///
+ /// OTA更新反馈
+ ///
+ ///
+ public async Task OTALicenseUpdateEventFeedback(OTAResultData resutl)
+ {
+ await MessageQueueHelper.Publish(Topics.OTAUpgradeFeedback, resutl);
+ }
+
+ ///
+ /// 处理OTA更新
+ ///
+ ///
+ ///
+ private async Task HandleUpdateOTAEvent(string topic, OTAUpdateData otaUpdateData)
+ {
+ var type = otaUpdateData.Type;
+ var url = otaUpdateData.Url;
+ var version = otaUpdateData.Version;
+ var module = otaUpdateData.Module;
+ var size = otaUpdateData.Size;
+ var checksum = otaUpdateData.Checksum;
+ var name = otaUpdateData.Name;
+ var description = otaUpdateData.Description;
+
+ OTAResultData otaResultData = new OTAResultData();
+ //下载更新包
+ await ApiClient.DownloadFileAsync(url, _updatePackagePath);
+
+ //校验压缩包
+ if(!OTAClient.CheckMD5(checksum, _updatePackagePath)) return;
+
+ //kill masstransfer
+
+ //启动更新
+ otaResultData.Result = Install() ? (byte)1 : (byte)0;
+
+ //restart masstransfer
+
+ //更新反馈
+ otaResultData.OtaSoftwareVersion = version;
+ otaResultData.CurrentSoftwareVersion = version; //**需要修改为当前版本
+
+ await OTALicenseUpdateEventFeedback(otaResultData);
+ }
+
///
/// 安装压缩包
///
- public void Install()
+ public bool Install()
{
try
{
@@ -58,11 +122,14 @@ public class OTAService
//删除更新包
OTAClient.DeleteFile(_updatePackagePath);
+ return true;
+
}
catch (Exception ex)
{
RollBack();
Console.WriteLine($"更新异常,已回滚: {ex.Message}");
+ return false;
}
}
catch (Exception ex)
@@ -74,6 +141,8 @@ public class OTAService
{
OTAClient.DeleteDirectory(_criticalBackupDir);
}
+
+ return false;
}
}
@@ -122,57 +191,4 @@ public class OTAService
OTAClient.DeleteFile(_previousBackupPath);
}
-
-
- ///
- /// 订阅OTA更新
- ///
- public async Task ListenOTAUpdateEvent()
- {
- await MessageQueueHelper.Subscribe(Topics.IssuedOTAPackage, HandleUpdateOTAEvent);
- }
-
- ///
- /// 查询OTA更新
- ///
- ///
- public static async Task QueryOTAUpdate()
- {
- await MessageQueueHelper.Publish(Topics.QueryOTA, null);
- }
-
- ///
- /// OTA更新反馈
- ///
- ///
- public async Task OTALicenseUpdateEventFeedback(string resutl)
- {
- await MessageQueueHelper.Publish(Topics.OTAUpgradeFeedback, resutl);
- }
-
- ///
- /// 处理OTA更新
- ///
- ///
- ///
- private async Task HandleUpdateOTAEvent(string topic, OTAUpdateData otaUpdateData)
- {
- var type = otaUpdateData.Type;
- var url = otaUpdateData.Url;
- var version = otaUpdateData.Version;
- var module = otaUpdateData.Module;
- var size = otaUpdateData.Size;
- var checksum = otaUpdateData.Checksum;
- var name = otaUpdateData.Name;
- var description = otaUpdateData.Description;
-
- //下载更新包
- await ApiClient.DownloadFileAsync(url, _updatePackagePath);
-
- //校验压缩包
- if(!OTAClient.CheckMD5(checksum, _updatePackagePath)) return;
-
- //启动更新
- Install();
- }
}
\ No newline at end of file