| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- //
- // UpgradeConfig.m
- // FunSDKDemo
- //
- // Created by XM on 2018/11/26.
- // Copyright © 2018年 XM. All rights reserved.
- //
- #import "UpgradeConfig.h"
- @interface UpgradeConfig()
- {
- UpgradeDataSource *dataSource; //资源和功能支持类文件
- }
- @end
- @implementation UpgradeConfig
- #pragma mark - 检查是否有新的升级文件可以升级
- -(void)upgradeCheckDevice {
- //初始化需要用到的文件
- if (dataSource == nil) {
- dataSource = [[UpgradeDataSource alloc] init];
- }
- //获取通道
- ChannelObject *channel = [[DeviceControl getInstance] getSelectChannel];
- FUN_DevCheckUpgrade(self.msgHandle, SZSTR(channel.deviceMac), 0);
- }
- #pragma mark - 开始升级
- -(void)upgradeStartDevice {
- if (dataSource.cState != CheckStateComplete || dataSource.upState == upgradeStateDownload) {
- //不是可更新状态或者正在下载中的话,直接return
- [SVProgressHUD dismissWithError:TS("last_Version")];
- return;
- }
- //获取通道,开始升级
- ChannelObject *channel = [[DeviceControl getInstance] getSelectChannel];
- FUN_DevStartUpgrade(self.msgHandle, SZSTR(channel.deviceMac), dataSource.upMode, 0);
- }
- #pragma mark - 设备重启
- -(void)RestartDevice {
- //获取通道
- ChannelObject *channel = [[DeviceControl getInstance] getSelectChannel];
- char szParam[128] = {0};
- sprintf(szParam, "{\"Name\":\"OPMachine\",\"SessionID\":\"0x00000001\",\"OPMachine\":{\"Action\":\"Reboot\"}}");
- FUN_DevCmdGeneral(self.msgHandle, SZSTR(channel.deviceMac), 1450, "OPMachine", 0, 5000, szParam, 0);
- }
- #pragma mark - 读取请求到的升级参数
- - (NSString*)getUpgradeCheckState {//读取版本检查状态
- return [dataSource getUpgradeCheckState];
- }
- - (NSString*)getUpgradeState {//读取下载状态,如下载中、升级中、升级完成等状态
- return [dataSource getUpgradeState];
- }
- - (float)getUpgradeProgress {//读取下载和升级进度
- return dataSource.progress;
- }
- #pragma mark FunSDK 结果
- -(void)OnFunSDKResult:(NSNumber *)pParam{
- NSInteger nAddr = [pParam integerValue];
- MsgContent *msg = (MsgContent *)nAddr;
- switch ( msg->id ) {
- case EMSG_DEV_CHECK_UPGRADE: {
- #pragma mark - 检查是否有新的升级文件可以升级
- if (msg->param1 == 0) {
- dataSource.cState = checkStateNewest;//没有新版本
- }else if(msg->param1 == 1) { //有新的版本可供升级,云升级
- dataSource.cState = CheckStateComplete;
- dataSource.upMode = cloudUpgrade; //本地升级
- } else if(msg->param1 == 2) { //有新的版本可供升级,本地有更新版本的固件
- dataSource.cState = CheckStateComplete;
- dataSource.upMode = localUpgrae; //云升级
- } else {
- //检查升级出错
- dataSource.cState = checkStateFaile;
- }
- if (self.delegate && [self.delegate respondsToSelector:@selector(upgradeCheckResult:)]) {
- [self.delegate upgradeCheckResult:msg->param1];
- }
- }
- break;
- case EMSG_DEV_START_UPGRADE: {
- #pragma mark - 开始升级
- if (self.delegate && [self.delegate respondsToSelector:@selector(upgradeStartDeviceResult:)]) {
- [self.delegate upgradeStartDeviceResult:msg->param1];
- }
- }
- break;
- case EMSG_DEV_ON_UPGRADE_PROGRESS: {
- #pragma mark - 升级进度
- if (msg->param1 ==EUPGRADE_STEP_DOWN) { //下载到app
- //msg->param2 下载进度
- dataSource.upState = upgradeStateDownload;
- dataSource.progress = msg->param2;
- }
- else if (msg->param1 == EUPGRADE_STEP_UP) { //上传到设备
- dataSource.upState = upgradeStateComplete;
- dataSource.progress = msg->param2;
- }
- else if (msg->param1 == EUPGRADE_STEP_UPGRADE) { //升级进度
- dataSource.upState = upgradeStateupgrading;
- dataSource.progress = msg->param2;
- }else if (msg->param1 == EUPGRADE_STEP_COMPELETE) { //升级完成
- dataSource.upState = upgradeStateSuccess;
- dataSource.progress = 100.0;
- }
- //回调到上层界面
- if(self.delegate && [self.delegate respondsToSelector:@selector(upgradeProgressDeviceResult)]){
- [self.delegate upgradeProgressDeviceResult];
- }
- }
- break;
- }
- }
- @end
|