moonlight-ios/Limelight/MainFrameViewController.m

116 lines
3.5 KiB
Objective-C

//
// MainFrameViewController.m
// Limelight-iOS
//
// Created by Diego Waxemberg on 1/17/14.
// Copyright (c) 2014 Diego Waxemberg. All rights reserved.
//
#import "MainFrameViewController.h"
#import "ConnectionHandler.h"
#import "Computer.h"
#import "CryptoManager.h"
#import "HttpManager.h"
@implementation MainFrameViewController
NSString* hostAddr;
MDNSManager* mDNSManager;
+ (const char*)getHostAddr
{
return [hostAddr UTF8String];
}
- (void)PairButton:(UIButton *)sender
{
NSLog(@"Pair Button Pressed!");
[ConnectionHandler pairWithHost:hostAddr];
}
- (void)StreamButton:(UIButton *)sender
{
NSLog(@"Stream Button Pressed!");
[ConnectionHandler streamWithHost:hostAddr viewController:self];
}
- (void) segueIntoStream {
[self performSegueWithIdentifier:@"createStreamFrame" sender:self];
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if (pickerView == self.StreamConfigs) {
return [self.streamConfigVals objectAtIndex:row];
} else if (pickerView == self.HostPicker) {
return ((Computer*)([self.hostPickerVals objectAtIndex:row])).displayName;
} else {
return nil;
}
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
//self.hostPickerVals = [mDNSManager getFoundHosts];
//[self.HostPicker reloadAllComponents];
if (pickerView == self.HostPicker) {
hostAddr = ((Computer*)([self.hostPickerVals objectAtIndex:[self.HostPicker selectedRowInComponent:0]])).hostName;
}
//TODO: figure out how to save this info!!
}
// returns the number of 'columns' to display.
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
// returns the # of rows in each component..
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if (pickerView == self.StreamConfigs) {
return self.streamConfigVals.count;
} else if (pickerView == self.HostPicker) {
return self.hostPickerVals.count;
} else {
return 0;
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.streamConfigVals = [[NSArray alloc] initWithObjects:@"1280x720 (30Hz)", @"1280x720 (60Hz)", @"1920x1080 (30Hz)", @"1920x1080 (60Hz)",nil];
self.hostPickerVals = [[NSArray alloc] init];
mDNSManager = [[MDNSManager alloc] initWithCallback:self];
[mDNSManager searchForHosts];
CryptoManager* cryptMan = [[CryptoManager alloc] init];
NSString* uniqueId = [cryptMan getUniqueID];
[cryptMan generateKeyPairUsingSSl];
NSData* cert = [cryptMan readCertFromFile];
HttpManager* hMan = [[HttpManager alloc] initWithHost:hostAddr uniqueId:uniqueId deviceName:@"roth"];
NSString* PIN = [hMan generatePIN];
NSData* saltedPIN = [hMan saltPIN:PIN];
NSLog(@"PIN: %@, saltedPIN: %@", PIN, saltedPIN);
NSURL* pairUrl = [hMan newPairRequestWithSalt:saltedPIN andCert:cert];
NSURLRequest* pairRequest = [[NSURLRequest alloc] initWithURL:pairUrl];
NSLog(@"making pair request: %@", [pairRequest description]);
NSData* pairData = [NSURLConnection sendSynchronousRequest:pairRequest returningResponse:nil error:nil];
NSLog(@"Pair response: %@", [pairData description]);
}
- (void)updateHosts:(NSArray *)hosts {
self.hostPickerVals = hosts;
[self.HostPicker reloadAllComponents];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end