//
|
// DeviceOperationViewController.m
|
// LCOpenSDKDemo
|
//
|
// Created by mac318340418 on 16/7/18.
|
// Copyright © 2016年 lechange. All rights reserved.
|
//
|
|
#import "DeviceOperationViewController.h"
|
#import "LCOpenSDK_Prefix.h"
|
#import "RestApiService.h"
|
#import "OpenApiService.h"
|
|
typedef NS_ENUM(NSInteger, Upgrade_Status)
|
{
|
Complete = 0,
|
Download,
|
Update,
|
Reboot,
|
};
|
|
@interface DeviceOperationViewController ()
|
{
|
NSTimer* mTimer;
|
Upgrade_Status mDeviceUpgradeProcess;
|
OpenApiService* openApi;
|
}
|
|
@end
|
|
@implementation DeviceOperationViewController
|
|
- (void)viewDidLoad
|
{
|
[super viewDidLoad];
|
[self initWindowView];
|
openApi = [[OpenApiService alloc] init];
|
}
|
|
- (void)didReceiveMemoryWarning {
|
[super didReceiveMemoryWarning];
|
}
|
|
- (void)viewWillAppear:(BOOL)animated {
|
[super viewWillAppear:animated];
|
[self getChnStatus];
|
}
|
|
- (void)initWindowView
|
{
|
|
UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:NSLocalizedString(DEVICE_OPERATE_TITLE_TXT, nil)];
|
super.m_navigationBar.tintColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0];
|
|
UIButton* left = [UIButton buttonWithType:UIButtonTypeCustom];
|
//left.backgroundColor = [UIColor whiteColor];
|
[left setFrame:CGRectMake(0, 0, 50, 30)];
|
UIImage* img = [UIImage leChangeImageNamed:Back_Btn_Png];
|
|
[left setBackgroundImage:img forState:UIControlStateNormal];
|
[left addTarget:self action:@selector(onBack) forControlEvents:UIControlEventTouchUpInside];
|
UIBarButtonItem* leftBtn = [[UIBarButtonItem alloc] initWithCustomView:left];
|
[item setLeftBarButtonItem:leftBtn animated:NO];
|
[super.m_navigationBar pushNavigationItem:item animated:NO];
|
|
[self.view addSubview:super.m_navigationBar];
|
[self.m_alarmLab setText:NSLocalizedString(ALARM_PLAN_TXT, nil)];
|
[self.m_cloudStorageLab setText:NSLocalizedString(CLOUD_STORAGE_TXT, nil)];
|
//[self.m_passwordLab setText:NSLocalizedString(PASSWORD_TXT, nil)];
|
self.m_passwordLab.hidden = YES;
|
[self.m_upgradeLab setText:NSLocalizedString(DEVICE_PROGRAME_TXT, nil)];
|
m_progressInd = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
|
m_progressInd.transform = CGAffineTransformMakeScale(2.0, 2.0);
|
m_progressInd.center = CGPointMake(self.view.center.x, self.view.center.y);
|
[self.view addSubview:m_progressInd];
|
|
m_toastLab = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 50)];
|
m_toastLab.center = self.view.center;
|
m_toastLab.backgroundColor = [UIColor whiteColor];
|
m_toastLab.textAlignment = NSTextAlignmentCenter;
|
[self.view addSubview:m_toastLab];
|
|
[self.view bringSubviewToFront:m_toastLab];
|
[self.view bringSubviewToFront:m_progressInd];
|
self.m_viewAlarm.hidden = YES;
|
self.m_viewCloudStroge.hidden = YES;
|
self.m_viewPassword.hidden = YES;
|
self.m_viewUpgrade.hidden = YES;
|
m_toastLab.hidden = YES;
|
self.m_alarmActivity.hidden = YES;
|
[self.m_alarmActivity startAnimating];
|
self.m_cloudStorageActivity.hidden = YES;
|
[self.m_cloudStorageActivity startAnimating];
|
self.m_passwordActivity.hidden = YES;
|
[self.m_passwordActivity startAnimating];
|
self.m_upgradeActivity.hidden = YES;
|
[self.m_upgradeActivity startAnimating];
|
|
//[self.m_passwordBtn setTitle:NSLocalizedString(MODIFY_TXT, nil) forState:UIControlStateNormal];
|
self.m_passwordBtn.hidden = YES;
|
[self.m_upgradeBtn setTitle:NSLocalizedString(UPGRADE_TXT, nil) forState:UIControlStateNormal];
|
mDeviceUpgradeProcess = Complete;
|
mTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(onSmsTimer:) userInfo:nil repeats:YES];
|
}
|
|
- (void)onSmsTimer:(NSInteger)index
|
{
|
if (mDeviceUpgradeProcess != Complete) {
|
RestApiService *restApiService = [RestApiService shareMyInstance];
|
DeviceUpgradeProcess *upgradeProcess = [[DeviceUpgradeProcess alloc] init];
|
/**
|
Ch:显示查询到的设备升级状态,并修改升级状态
|
En:Display the queried device upgrade status, and modify the upgrade status.
|
*/
|
[restApiService upgradeProcessDevice:m_strDevSelected Msg:nil InfoOut:upgradeProcess];
|
}
|
}
|
|
- (void)setInfo:(LCOpenSDK_Api*)hc Token:(NSString*)token Dev:(NSString*)deviceId Chn:(NSInteger)chn
|
{
|
m_hc = hc;
|
m_accessToken = [token mutableCopy];
|
m_strDevSelected = [deviceId mutableCopy];
|
m_devChnSelected = chn;
|
}
|
|
- (IBAction)onAlarmPlan:(UISwitch*)sender
|
{
|
self.m_alarmActivity.hidden = NO;
|
RestApiService* restApiService = [RestApiService shareMyInstance];
|
if (ALARM_ON == m_alarmStatus) {
|
m_alarmStatus = ALARM_OFF;
|
dispatch_queue_t alarmPlanTrue = dispatch_queue_create("alarmPlanFalse", nil);
|
dispatch_async(alarmPlanTrue, ^{
|
NSString* errMsg;
|
[restApiService modifyDeviceAlarmStatus:m_strDevSelected Chnl:m_devChnSelected Enable:false Msg:&errMsg];
|
if (![errMsg isEqualToString:[MSG_SUCCESS mutableCopy]]) {
|
m_alarmStatus = ALARM_ON;
|
}
|
dispatch_async(dispatch_get_main_queue(), ^{
|
self.m_alarmActivity.hidden = YES;
|
[self setAlarmSwitch:m_alarmStatus];
|
});
|
});
|
} else if (ALARM_OFF == m_alarmStatus) {
|
m_alarmStatus = ALARM_ON;
|
dispatch_queue_t alarmPlanTrue = dispatch_queue_create("alarmPlanTrue", nil);
|
dispatch_async(alarmPlanTrue, ^{
|
NSString* errMsg;
|
[restApiService modifyDeviceAlarmStatus:m_strDevSelected Chnl:m_devChnSelected Enable:true Msg:&errMsg];
|
if (![errMsg isEqualToString:[MSG_SUCCESS mutableCopy]]) {
|
m_alarmStatus = ALARM_OFF;
|
}
|
dispatch_async(dispatch_get_main_queue(), ^{
|
self.m_alarmActivity.hidden = YES;
|
[self setAlarmSwitch:m_alarmStatus];
|
});
|
});
|
}
|
}
|
|
- (IBAction)onStorageStrategy:(UISwitch*)sender
|
{
|
self.m_cloudStorageActivity.hidden = NO;
|
RestApiService* restApiService = [RestApiService shareMyInstance];
|
if (STORAGE_ON == m_cldStrgStatus) {
|
m_cldStrgStatus = STORAGE_BREAK_OFF;
|
dispatch_queue_t downQueue = dispatch_queue_create("storageStrategyOff", nil);
|
dispatch_async(downQueue, ^{
|
NSString* errMsg;
|
[restApiService setStorageStrategy:m_strDevSelected Chnl:m_devChnSelected Enable:@"off" Msg:&errMsg];
|
if (![errMsg isEqualToString:[MSG_SUCCESS mutableCopy]]) {
|
m_cldStrgStatus = STORAGE_ON;
|
}
|
dispatch_async(dispatch_get_main_queue(), ^{
|
self.m_cloudStorageActivity.hidden = YES;
|
[self setCloudStorageSwitch:m_cldStrgStatus];
|
});
|
});
|
} else if (STORAGE_NOT_OPEN == m_cldStrgStatus || STORAGE_USELESS == m_cldStrgStatus || STORAGE_BREAK_OFF == m_cldStrgStatus) {
|
m_cldStrgStatus = STORAGE_ON;
|
dispatch_queue_t storageStrategyOn = dispatch_queue_create("storageStrategyOn", nil);
|
dispatch_async(storageStrategyOn, ^{
|
NSString* errMsg;
|
[restApiService setStorageStrategy:m_strDevSelected Chnl:m_devChnSelected Enable:@"on" Msg:&errMsg];
|
if (![errMsg isEqualToString:[MSG_SUCCESS mutableCopy]]) {
|
m_cldStrgStatus = STORAGE_BREAK_OFF;
|
}
|
dispatch_async(dispatch_get_main_queue(), ^{
|
self.m_cloudStorageActivity.hidden = YES;
|
[self setCloudStorageSwitch:m_cldStrgStatus];
|
});
|
});
|
}
|
}
|
- (IBAction)onModifyPassword:(id)sender
|
{
|
UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"modify device password" message:@"confirm to modify?" preferredStyle:UIAlertControllerStyleAlert];
|
[alert addTextFieldWithConfigurationHandler:^(UITextField* _Nonnull textField) {
|
textField.placeholder = @"old password";
|
}];
|
[alert addTextFieldWithConfigurationHandler:^(UITextField* _Nonnull textField) {
|
textField.placeholder = @"new password";
|
}];
|
UIAlertAction* confirmAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction* _Nonnull action) {
|
|
NSString* oldPassword = alert.textFields[0].text;
|
NSString* newPassword = alert.textFields[1].text;
|
RestApiService* apiService = [RestApiService shareMyInstance];
|
NSLog(@"old password: %@", oldPassword);
|
NSLog(@"new password: %@", newPassword);
|
if (!oldPassword || 0 == oldPassword.length || !newPassword || 0 == newPassword.length) {
|
m_toastLab.text = @"check password valid";
|
m_toastLab.hidden = NO;
|
[self performSelector:@selector(hideToastDelay) withObject:nil afterDelay:3.0f];
|
return;
|
}
|
self.m_passwordActivity.hidden = NO;
|
dispatch_queue_t modifyDevicePwdQueue = dispatch_queue_create("modifyDevicePwd", nil);
|
dispatch_async(modifyDevicePwdQueue, ^{
|
NSString* errMsg;
|
[apiService modifyDevicePwd:m_strDevSelected oldPwd:oldPassword newPwd:newPassword Msg:&errMsg];
|
dispatch_async(dispatch_get_main_queue(), ^{
|
if ([errMsg isEqualToString:[MSG_SUCCESS mutableCopy]]) {
|
m_toastLab.text = @"modify password successfully";
|
} else {
|
m_toastLab.text = @"modify password failed";
|
}
|
m_toastLab.hidden = NO;
|
self.m_passwordActivity.hidden = YES;
|
[self performSelector:@selector(hideToastDelay) withObject:nil afterDelay:3.0f];
|
});
|
});
|
}];
|
UIAlertAction* cancelAction = [UIAlertAction actionWithTitle:@"NO" style:UIAlertActionStyleDefault handler:nil];
|
[alert addAction:confirmAction];
|
[alert addAction:cancelAction];
|
[self presentViewController:alert animated:YES completion:nil];
|
}
|
|
- (IBAction)onUpgradeDevice:(id)sender {
|
self.m_upgradeActivity.hidden = NO;
|
RestApiService* apiService = [RestApiService shareMyInstance];
|
dispatch_queue_t upgradeDeviceQueue = dispatch_queue_create("upgradeDevice", nil);
|
dispatch_async(upgradeDeviceQueue, ^{
|
NSString* errMsg;
|
[apiService upgradeDevice:m_strDevSelected Msg:&errMsg];
|
dispatch_async(dispatch_get_main_queue(), ^{
|
if ([errMsg isEqualToString:[MSG_SUCCESS mutableCopy]]) {
|
m_toastLab.text = @"upgrade successfully";
|
} else {
|
m_toastLab.text = @"upgrade failed";
|
}
|
m_toastLab.hidden = NO;
|
self.m_upgradeActivity.hidden = YES;
|
[self performSelector:@selector(hideToastDelay) withObject:nil afterDelay:3.0f];
|
});
|
});
|
}
|
|
- (void)hideToastDelay
|
{
|
m_toastLab.hidden = YES;
|
}
|
|
- (void)onBack
|
{
|
[mTimer invalidate];
|
[openApi cancelRequest];
|
[self dismissViewControllerAnimated:YES completion:nil];
|
[self.navigationController popViewControllerAnimated:YES];
|
}
|
|
- (void)setAlarmSwitch:(AlarmStatus)status
|
{
|
switch (status) {
|
case ALARM_ON:
|
[self.m_alarmSwitch setOn:YES];
|
break;
|
case ALARM_OFF:
|
[self.m_alarmSwitch setOn:NO];
|
break;
|
default:
|
break;
|
}
|
}
|
|
- (void)setCloudStorageSwitch:(CloudStorageStatus)status
|
{
|
switch (status) {
|
case STORAGE_ON:
|
[self.m_cloudStorageSwitch setOn:YES];
|
break;
|
case STORAGE_BREAK_OFF:
|
case STORAGE_NOT_OPEN:
|
case STORAGE_USELESS:
|
[self.m_cloudStorageSwitch setOn:NO];
|
break;
|
default:
|
break;
|
}
|
}
|
|
- (void)getChnStatus
|
{
|
[self showLoading];
|
dispatch_queue_t get_status = dispatch_queue_create("get_status", nil);
|
dispatch_async(get_status, ^{
|
int alarmStatus = 0;
|
int cloudStatus = 0;
|
int updateStatus = 0;
|
NSString *err;
|
NSString *msg;
|
|
do {
|
NSInteger ret;
|
ret = [openApi alarmStatus:m_accessToken deviceId:m_strDevSelected channelId:[NSString stringWithFormat:@"%@", @(m_devChnSelected)] status:&alarmStatus errcode:&err errmsg:&msg];
|
if (![err isEqualToString:@"0"]) {
|
break;
|
}
|
ret = [openApi cloudStatus:m_accessToken deviceId:m_strDevSelected channelId:[NSString stringWithFormat:@"%@", @(m_devChnSelected)] status:&cloudStatus errcode:&err errmsg:&msg];
|
if (![err isEqualToString:@"0"]) {
|
break;
|
}
|
ret = [openApi updateStatus:m_accessToken deviceId:m_strDevSelected status:&updateStatus errcode:&err errmsg:&msg];
|
} while (0);
|
|
if (![err isEqualToString:@"0"]) {
|
dispatch_sync(dispatch_get_main_queue(), ^{
|
[self hideLoading];
|
m_toastLab.text = msg;
|
m_toastLab.hidden = NO;
|
});
|
return;
|
}
|
m_alarmStatus = alarmStatus;
|
m_cldStrgStatus = cloudStatus;
|
|
dispatch_async(dispatch_get_main_queue(), ^{
|
_m_upgradeBtn.hidden = (updateStatus == 0);
|
[self setAlarmSwitch:m_alarmStatus];
|
[self setCloudStorageSwitch:m_cldStrgStatus];
|
[self hideLoading];
|
self.m_viewAlarm.hidden = NO;
|
self.m_viewCloudStroge.hidden = NO;
|
self.m_viewPassword.hidden = NO;
|
self.m_viewUpgrade.hidden = NO;
|
});
|
});
|
}
|
|
- (void)showLoading
|
{
|
[m_progressInd startAnimating];
|
}
|
|
|
- (void)hideLoading
|
{
|
if ([m_progressInd isAnimating]) {
|
[m_progressInd stopAnimating];
|
}
|
}
|
|
- (void)dealloc
|
{
|
NSLog(@"DeviceOperationViewController dealloc");
|
}
|
@end
|