mirror of
https://github.com/rtlduino/RTL8710AF_GCC.git
synced 2024-11-25 02:24:16 +00:00
03e74a8e50
motify compile link error
299 lines
9.9 KiB
Objective-C
299 lines
9.9 KiB
Objective-C
//
|
||
// ClientViewController.m
|
||
// SimpleConfig
|
||
//
|
||
// Created by Realsil on 14/11/13.
|
||
// Copyright (c) 2014年 Realtek. All rights reserved.
|
||
//
|
||
|
||
#import "ClientViewController.h"
|
||
|
||
@interface ClientViewController ()
|
||
|
||
@end
|
||
|
||
@implementation ClientViewController
|
||
@synthesize sharedData;
|
||
@synthesize pin_label, pinLabel, qrcode_btn, m_qrscan_line;
|
||
|
||
- (void)viewDidLoad {
|
||
[super viewDidLoad];
|
||
// Do any additional setup after loading the view.
|
||
m_controller = [[Controller alloc] init];
|
||
|
||
if (sharedData!=nil) {
|
||
struct dev_info dev;
|
||
[sharedData getValue:&dev];
|
||
|
||
NSLog(@"dev->require_pin=%@", (dev.require_pin==1)?@"YES":@"NO");
|
||
if(0x0a==dev.extra_info[0])
|
||
[_name_label setText:@"Untitled"];
|
||
else
|
||
[_name_label setText:[NSString stringWithUTF8String:(const char *)dev.extra_info]];
|
||
_ip_label.text = [NSString stringWithFormat:@"%d.%d.%d.%d", 0xFF&(dev.ip>>24), 0xFF&(dev.ip>>16), 0xFF&(dev.ip>>8), 0xFF&dev.ip];
|
||
_mac_label.text = [NSString stringWithFormat:@"%02x:%02x:%02x:%02x:%02x:%02x", dev.mac[0], dev.mac[1], dev.mac[2], dev.mac[3], dev.mac[4], dev.mac[5]];
|
||
|
||
if(!dev.require_pin){
|
||
[pinLabel setHidden:true];
|
||
[pin_label setHidden:true];
|
||
[qrcode_btn setHidden:true];
|
||
}else{
|
||
[pinLabel setHidden:false];
|
||
[pin_label setHidden:false];
|
||
[qrcode_btn setHidden:false];
|
||
pin_label.text = @"";
|
||
[pin_label addTarget:self action:@selector(textFieldDoneEditing:) forControlEvents:UIControlEventEditingDidEndOnExit];
|
||
}
|
||
}
|
||
|
||
pin_label.text = @"";
|
||
[pin_label addTarget:self action:@selector(textFieldDoneEditing:) forControlEvents:UIControlEventEditingDidEndOnExit];
|
||
[_name_label addTarget:self action:@selector(textFieldDoneEditing:) forControlEvents:UIControlEventEditingDidEndOnExit];
|
||
m_timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerHandler:) userInfo:nil repeats:YES];
|
||
m_mode = MODE_INIT;
|
||
}
|
||
|
||
- (void)didReceiveMemoryWarning {
|
||
[super didReceiveMemoryWarning];
|
||
// Dispose of any resources that can be recreated.
|
||
}
|
||
|
||
/*
|
||
#pragma mark - Navigation
|
||
|
||
// In a storyboard-based application, you will often want to do a little preparation before navigation
|
||
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
|
||
// Get the new view controller using [segue destinationViewController].
|
||
// Pass the selected object to the new view controller.
|
||
}
|
||
*/
|
||
|
||
- (void)dealloc {
|
||
#ifdef ARC
|
||
[_name_label release];
|
||
[_ip_label release];
|
||
[_mac_label release];
|
||
[_delete_btn release];
|
||
[_rename_btn release];
|
||
[pin_label release];
|
||
[_name_label release];
|
||
[pin_label release];
|
||
[pinLabel release];
|
||
[qrcode_btn release];
|
||
[super dealloc];
|
||
#endif
|
||
}
|
||
|
||
/* Hide the keyboard when pushing "enter" */
|
||
- (BOOL)textFieldDoneEditing:(UITextField *)sender
|
||
{
|
||
NSLog(@"textFieldDoneEditing, Sender is %@", sender);
|
||
UITextField *target = sender;
|
||
return [target resignFirstResponder];
|
||
}
|
||
|
||
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
|
||
{
|
||
if([text isEqualToString:@"\n"])
|
||
{
|
||
[textView resignFirstResponder];
|
||
return NO;
|
||
}
|
||
return YES;
|
||
}
|
||
|
||
- (void)viewDidDisappear:(BOOL)animated
|
||
{
|
||
// Must release simpleConfig, so that its asyncUDPSocket delegate won't receive data
|
||
NSLog(@"close control socket");
|
||
[m_controller rtk_sc_close_sock];
|
||
[super viewDidDisappear:animated];
|
||
}
|
||
|
||
- (void)viewWillAppear:(BOOL)animated
|
||
{
|
||
NSLog(@"reopen control socket");
|
||
[m_controller rtk_sc_reopen_sock];
|
||
}
|
||
|
||
/* Button Delegate */
|
||
-(IBAction)delete_profile:(id)sender
|
||
{
|
||
// generate data
|
||
NSString *pin = pin_label.text;
|
||
unsigned int ip = [m_controller rtk_sc_convert_host_to_ip:_ip_label.text];
|
||
|
||
if (pin_label.isHidden==false && [pin isEqualToString:@""]) {
|
||
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:SC_UI_ALERT_TITLE_ERROR message:SC_UI_ALERT_INPUT_PIN delegate:self cancelButtonTitle:SC_UI_ALERT_OK otherButtonTitles:nil, nil];
|
||
[alert show];
|
||
return;
|
||
}else if(pin_label.isHidden==true)
|
||
pin = PATTERN_DEF_PIN;
|
||
|
||
NSLog(@"pin=%@, ip=%x", pin, ip);
|
||
[m_controller rtk_sc_gen_control_data:RTK_SC_CONTROL_DELETE pin:pin name:nil];
|
||
m_mode = MODE_CONTROL;
|
||
|
||
// send data
|
||
for (int i=0; i<RTK_SC_CONTROL_PKT_ROUND; i++) {
|
||
NSLog(@"send delete profile data %d", i);
|
||
[m_controller rtk_sc_send_control_data:ip];
|
||
}
|
||
}
|
||
|
||
-(IBAction)rename_device:(id)sender
|
||
{
|
||
// generate data
|
||
NSString *pin = pin_label.text;
|
||
NSString *name = _name_label.text;
|
||
unsigned int ip = [m_controller rtk_sc_convert_host_to_ip:_ip_label.text];
|
||
|
||
if (pin_label.isHidden==false && [pin isEqualToString:@""]) {
|
||
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:SC_UI_ALERT_TITLE_ERROR message:SC_UI_ALERT_INPUT_PIN delegate:self cancelButtonTitle:SC_UI_ALERT_OK otherButtonTitles:nil, nil];
|
||
[alert show];
|
||
return;
|
||
}else if(pin_label.isHidden==true)
|
||
pin = PATTERN_DEF_PIN;
|
||
|
||
NSLog(@"pin=%@, ip=%x", pin, ip);
|
||
|
||
if([name isEqualToString:@""])
|
||
name = @"Untitled";
|
||
[m_controller rtk_sc_gen_control_data:RTK_SC_CONTROL_RENAME pin:pin name:name];
|
||
m_mode = MODE_CONTROL;
|
||
|
||
// send data
|
||
for (int i=0; i<RTK_SC_CONTROL_PKT_ROUND; i++) {
|
||
NSLog(@"send delete profile data %d", i);
|
||
[m_controller rtk_sc_send_control_data:ip];
|
||
}
|
||
}
|
||
|
||
-(IBAction)scan_QRCode:(id)sender
|
||
{
|
||
[self showQRScanner];
|
||
}
|
||
|
||
/* Timer Delegate */
|
||
-(void)timerHandler: (NSTimer *)sender
|
||
{
|
||
unsigned int controller_mode = [m_controller rtk_sc_get_mode];
|
||
switch (controller_mode) {
|
||
case MODE_INIT:
|
||
if (m_mode == MODE_CONTROL) {
|
||
int result = [m_controller rtk_sc_get_control_result];
|
||
if (result==RTK_SUCCEED) {
|
||
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:SC_UI_ALERT_TITLE_INFO message:SC_UI_ALERT_CONTROL_DONE delegate:self cancelButtonTitle:SC_UI_ALERT_OK otherButtonTitles:nil, nil];
|
||
[alert show];
|
||
}else{
|
||
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:SC_UI_ALERT_TITLE_ERROR message:SC_UI_ALERT_CONTROL_FAILED delegate:self cancelButtonTitle:SC_UI_ALERT_OK otherButtonTitles:nil, nil];
|
||
[alert show];
|
||
}
|
||
m_mode = MODE_INIT;
|
||
}
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
/* ------QRCode Related------*/
|
||
-(void)showQRScanner
|
||
{
|
||
int maxScreen_height = [[UIScreen mainScreen] bounds].size.height;
|
||
int maxScreen_width = [[UIScreen mainScreen] bounds].size.width;
|
||
|
||
NSLog(@"screen: %d %d",maxScreen_width,maxScreen_height);
|
||
|
||
m_upOrdown = NO;
|
||
m_num = 0;
|
||
|
||
if(m_qrcode_timer!=nil){
|
||
[m_qrcode_timer invalidate];
|
||
m_qrcode_timer = nil;
|
||
}
|
||
|
||
//init ZBar
|
||
ZBarReaderViewController * reader = [ZBarReaderViewController new];
|
||
//set Delegate
|
||
reader.readerDelegate = self;
|
||
|
||
reader.supportedOrientationsMask = ZBarOrientationMaskAll;
|
||
reader.showsHelpOnFail = NO;
|
||
reader.scanCrop = CGRectMake(0, 0, 1, 1);
|
||
ZBarImageScanner * scanner = reader.scanner;
|
||
[scanner setSymbology:ZBAR_I25
|
||
config:ZBAR_CFG_ENABLE
|
||
to:0];
|
||
UIView * view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, maxScreen_width, maxScreen_height)];
|
||
view.backgroundColor = [UIColor clearColor];
|
||
reader.cameraOverlayView = view;
|
||
|
||
//UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(20, 20, 280, 40)];
|
||
UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(20, 20, maxScreen_width/2, 40)];
|
||
label.text = @"Scan your QR code!";
|
||
|
||
label.textColor = [UIColor whiteColor];
|
||
label.textAlignment = 1;
|
||
label.lineBreakMode = 0;
|
||
label.numberOfLines = 2;
|
||
label.backgroundColor = [UIColor clearColor];
|
||
[view addSubview:label];
|
||
|
||
UIImageView * image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pick_bg.png"]];
|
||
//image.frame = CGRectMake(20, 80, 280, 280);
|
||
image.frame = CGRectMake(20, 80, maxScreen_width-20*2, maxScreen_width-20*2);
|
||
[view addSubview:image];
|
||
|
||
m_qrscan_line = [[UIImageView alloc] initWithFrame:CGRectMake(20, 80, maxScreen_width-40*2, 1)];
|
||
m_qrscan_line.image = [UIImage imageNamed:@"line.png"];
|
||
[image addSubview:m_qrscan_line];
|
||
|
||
//set: after 1.5 s
|
||
m_qrcode_timer = [NSTimer scheduledTimerWithTimeInterval:.02 target:self selector:@selector(qrcode_animation) userInfo:nil repeats:YES];
|
||
|
||
[self presentViewController:reader animated:YES completion:^{
|
||
}];
|
||
|
||
//[self presentViewController:reader animated:YES completion:nil];
|
||
|
||
NSLog(@"<APP> scan button finished");
|
||
//[text_pincode setText:m_pin_code];
|
||
}
|
||
|
||
-(void)qrcode_animation
|
||
{
|
||
int maxScreen_width = [[UIScreen mainScreen] bounds].size.width;
|
||
|
||
if (m_upOrdown == NO) {
|
||
m_num ++;
|
||
m_qrscan_line.frame = CGRectMake(20, 20+2*m_num, maxScreen_width-40*2, 1);
|
||
if (2*m_num >= (maxScreen_width-30*2)) {
|
||
m_upOrdown = YES;
|
||
}
|
||
}
|
||
else {
|
||
m_num --;
|
||
m_qrscan_line.frame = CGRectMake(20, 20+2*m_num, maxScreen_width-40*2, 1);
|
||
if (m_num <= 0) {
|
||
m_upOrdown = NO;
|
||
}
|
||
}
|
||
}
|
||
|
||
/* Parse QRCode */
|
||
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
|
||
{
|
||
id<NSFastEnumeration> results = [info objectForKey:ZBarReaderControllerResults];
|
||
ZBarSymbol *symbol = nil;
|
||
for(symbol in results)
|
||
break;
|
||
|
||
NSLog(@"Got QRCode: %@", symbol.data);
|
||
[pin_label setText:symbol.data];
|
||
//self.imageView.image = [info objectForKey:UIImagePickerControllerOriginalImage];
|
||
[picker dismissViewControllerAnimated:YES completion:nil];
|
||
}
|
||
|
||
@end
|