UpgradeConfig.mm 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. //
  2. // UpgradeConfig.m
  3. // FunSDKDemo
  4. //
  5. // Created by XM on 2018/11/26.
  6. // Copyright © 2018年 XM. All rights reserved.
  7. //
  8. #import "UpgradeConfig.h"
  9. @interface UpgradeConfig()
  10. {
  11. UpgradeDataSource *dataSource; //资源和功能支持类文件
  12. }
  13. @end
  14. @implementation UpgradeConfig
  15. #pragma mark - 检查是否有新的升级文件可以升级
  16. -(void)upgradeCheckDevice {
  17. //初始化需要用到的文件
  18. if (dataSource == nil) {
  19. dataSource = [[UpgradeDataSource alloc] init];
  20. }
  21. //获取通道
  22. ChannelObject *channel = [[DeviceControl getInstance] getSelectChannel];
  23. FUN_DevCheckUpgrade(self.msgHandle, SZSTR(channel.deviceMac), 0);
  24. }
  25. #pragma mark - 开始升级
  26. -(void)upgradeStartDevice {
  27. if (dataSource.cState != CheckStateComplete || dataSource.upState == upgradeStateDownload) {
  28. //不是可更新状态或者正在下载中的话,直接return
  29. [SVProgressHUD dismissWithError:TS("last_Version")];
  30. return;
  31. }
  32. //获取通道,开始升级
  33. ChannelObject *channel = [[DeviceControl getInstance] getSelectChannel];
  34. FUN_DevStartUpgrade(self.msgHandle, SZSTR(channel.deviceMac), dataSource.upMode, 0);
  35. }
  36. #pragma mark - 设备重启
  37. -(void)RestartDevice {
  38. //获取通道
  39. ChannelObject *channel = [[DeviceControl getInstance] getSelectChannel];
  40. char szParam[128] = {0};
  41. sprintf(szParam, "{\"Name\":\"OPMachine\",\"SessionID\":\"0x00000001\",\"OPMachine\":{\"Action\":\"Reboot\"}}");
  42. FUN_DevCmdGeneral(self.msgHandle, SZSTR(channel.deviceMac), 1450, "OPMachine", 0, 5000, szParam, 0);
  43. }
  44. #pragma mark - 读取请求到的升级参数
  45. - (NSString*)getUpgradeCheckState {//读取版本检查状态
  46. return [dataSource getUpgradeCheckState];
  47. }
  48. - (NSString*)getUpgradeState {//读取下载状态,如下载中、升级中、升级完成等状态
  49. return [dataSource getUpgradeState];
  50. }
  51. - (float)getUpgradeProgress {//读取下载和升级进度
  52. return dataSource.progress;
  53. }
  54. #pragma mark FunSDK 结果
  55. -(void)OnFunSDKResult:(NSNumber *)pParam{
  56. NSInteger nAddr = [pParam integerValue];
  57. MsgContent *msg = (MsgContent *)nAddr;
  58. switch ( msg->id ) {
  59. case EMSG_DEV_CHECK_UPGRADE: {
  60. #pragma mark - 检查是否有新的升级文件可以升级
  61. if (msg->param1 == 0) {
  62. dataSource.cState = checkStateNewest;//没有新版本
  63. }else if(msg->param1 == 1) { //有新的版本可供升级,云升级
  64. dataSource.cState = CheckStateComplete;
  65. dataSource.upMode = cloudUpgrade; //本地升级
  66. } else if(msg->param1 == 2) { //有新的版本可供升级,本地有更新版本的固件
  67. dataSource.cState = CheckStateComplete;
  68. dataSource.upMode = localUpgrae; //云升级
  69. } else {
  70. //检查升级出错
  71. dataSource.cState = checkStateFaile;
  72. }
  73. if (self.delegate && [self.delegate respondsToSelector:@selector(upgradeCheckResult:)]) {
  74. [self.delegate upgradeCheckResult:msg->param1];
  75. }
  76. }
  77. break;
  78. case EMSG_DEV_START_UPGRADE: {
  79. #pragma mark - 开始升级
  80. if (self.delegate && [self.delegate respondsToSelector:@selector(upgradeStartDeviceResult:)]) {
  81. [self.delegate upgradeStartDeviceResult:msg->param1];
  82. }
  83. }
  84. break;
  85. case EMSG_DEV_ON_UPGRADE_PROGRESS: {
  86. #pragma mark - 升级进度
  87. if (msg->param1 ==EUPGRADE_STEP_DOWN) { //下载到app
  88. //msg->param2 下载进度
  89. dataSource.upState = upgradeStateDownload;
  90. dataSource.progress = msg->param2;
  91. }
  92. else if (msg->param1 == EUPGRADE_STEP_UP) { //上传到设备
  93. dataSource.upState = upgradeStateComplete;
  94. dataSource.progress = msg->param2;
  95. }
  96. else if (msg->param1 == EUPGRADE_STEP_UPGRADE) { //升级进度
  97. dataSource.upState = upgradeStateupgrading;
  98. dataSource.progress = msg->param2;
  99. }else if (msg->param1 == EUPGRADE_STEP_COMPELETE) { //升级完成
  100. dataSource.upState = upgradeStateSuccess;
  101. dataSource.progress = 100.0;
  102. }
  103. //回调到上层界面
  104. if(self.delegate && [self.delegate respondsToSelector:@selector(upgradeProgressDeviceResult)]){
  105. [self.delegate upgradeProgressDeviceResult];
  106. }
  107. }
  108. break;
  109. }
  110. }
  111. @end