- Timestamp:
- 08/27/13 02:48:11 (6 years ago)
- Branches:
- master, Servo, Tab_Interface, pyramid
- Children:
- f43124e
- Parents:
- d249b65
- Location:
- iOS/Orbit
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
iOS/Orbit/Orbit/controllers/FlightViewController.m
rd249b65 rad80ed2 22 22 23 23 @implementation FlightViewController { 24 25 26 24 SignalConverter *signalConverter; 25 int deviceStatus; 26 BOOL warned; 27 27 } 28 28 … … 31 31 - (void)viewDidLoad 32 32 { 33 [super viewDidLoad]; 34 35 attention.progressTintColor = [UIColor redColor]; 36 self.attentionThreshold.minimumTrackTintColor = [UIColor grayColor]; 37 meditation.progressTintColor = [UIColor blueColor]; 38 self.meditationThreshold.minimumTrackTintColor = [UIColor grayColor]; 39 self.meditationThreshold.value = 0; 33 [super viewDidLoad]; 40 34 41 AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 42 signalConverter = appDelegate.signalConverter; 43 44 signalConverter.delegate = self; 45 [self setThresholds]; 46 [self.attentionThreshold addTarget:self action:@selector(setThresholds) forControlEvents:UIControlEventValueChanged]; 47 [self.meditationThreshold addTarget:self action:@selector(setThresholds) forControlEvents:UIControlEventValueChanged]; 35 attention.progressTintColor = [UIColor redColor]; 36 self.attentionThreshold.minimumTrackTintColor = [UIColor grayColor]; 37 meditation.progressTintColor = [UIColor blueColor]; 38 self.meditationThreshold.minimumTrackTintColor = [UIColor grayColor]; 39 self.meditationThreshold.value = 0; 40 41 AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 42 signalConverter = appDelegate.signalConverter; 43 44 signalConverter.delegate = self; 45 [self setThresholds]; 46 [self.attentionThreshold addTarget:self action:@selector(setThresholds) forControlEvents:UIControlEventValueChanged]; 47 [self.meditationThreshold addTarget:self action:@selector(setThresholds) forControlEvents:UIControlEventValueChanged]; 48 48 } 49 49 … … 53 53 - (void) resetViews 54 54 { 55 56 57 58 59 60 61 62 63 64 55 signal.progress = 0; 56 signalPercent.text = @"0%"; 57 attention.progress = 0; 58 attentionPercent.text = @"0%"; 59 meditation.progress = 0; 60 meditationPercent.text = @"0%"; 61 power.progress = 0; 62 powerPercent.text = @"0%"; 63 [self updateStatusImage:STATUS_DEFAULT]; 64 connectButton.title = @"Connect"; 65 65 } 66 66 67 67 - (void) updateStatusImage:(int) statusNo 68 68 { 69 70 71 72 69 if (statusNo != deviceStatus) { 70 [statusImage setImage: [UIImage imageNamed:[NSString stringWithFormat:@"status_%u", statusNo]]]; 71 deviceStatus = statusNo; 72 } 73 73 } 74 74 75 75 - (void) setThresholds 76 76 { 77 77 [signalConverter setValuesForAttention:attentionThreshold.value meditation:meditationThreshold.value]; 78 78 } 79 79 … … 85 85 power: (float)powerLevel 86 86 { 87 88 // Set Attention and Meditation to zero if we've lost signal 89 if (signalStrength < 100.0) { 90 attentionLevel = 0.000000; 91 meditationLevel = 0.000000; 92 powerLevel = 0.000000; 93 } 87 94 88 // self.signal.progress = (int)(signalStrength); 89 self.signal.progress = signalStrength / 100; 90 // NSLog(@"Setting self.signal.progress: %f", signalStrength / 100); 95 self.signal.progress = signalStrength / 100; 96 self.signalPercent.text = [NSString stringWithFormat:@"%i%%", (int)(signalStrength)]; 97 self.attention.progress = attentionLevel; 98 self.attentionPercent.text = [NSString stringWithFormat:@"%i%%", (int)(attentionLevel * 100)]; 99 self.meditation.progress = meditationLevel; 100 self.meditationPercent.text = [NSString stringWithFormat:@"%i%%", (int)(meditationLevel * 100)]; 101 self.power.progress = powerLevel; 102 self.powerPercent.text = [NSString stringWithFormat:@"%i%%", (int)(powerLevel * 100)]; 103 [self updateStatusImage:[self statusFromSignal:signalStrength power:powerLevel]]; 91 104 92 self.signalPercent.text = [NSString stringWithFormat:@"%i%%", (int)(signalStrength)];93 self.attention.progress = attentionLevel;94 self.attentionPercent.text = [NSString stringWithFormat:@"%i%%", (int)(attentionLevel * 100)];95 self.meditation.progress = meditationLevel;96 self.meditationPercent.text = [NSString stringWithFormat:@"%i%%", (int)(meditationLevel * 100)];97 self.power.progress = powerLevel;98 self.powerPercent.text = [NSString stringWithFormat:@"%i%%", (int)(powerLevel * 100)];99 [self updateStatusImage:[self statusFromSignal:signalStrength power:powerLevel]];100 105 } 101 106 102 107 - (int) statusFromSignal: (float)signalLevel power:(float)powerLevel 103 108 { 104 105 106 107 108 109 110 109 if (signalLevel < 0.9) { // weak signal 110 return STATUS_CONNECTED; 111 } else if (powerLevel == 0.0) { // strong signal but thresholds not met 112 return STATUS_PROCESSING; 113 } else { // flight command sent to orbit 114 return STATUS_ACTIVE; 115 } 111 116 } 112 117 113 118 - (void) notifyHeadsetConnect 114 119 { 115 120 [self updateStatusImage:STATUS_CONNECTING]; 116 121 } 117 122 118 123 - (void) notifyHeadsetDisconnect 119 124 { 120 121 125 // Reset the outputs back to zero 126 [self resetViews]; 122 127 } 123 128 124 129 - (void) notifyDeviceConnected:(NSString *)name 125 130 { 126 127 131 [self updateStatusImage:STATUS_CONNECTING]; 132 connectButton.title = @"Disconnect"; 128 133 } 129 134 130 135 - (void) appStopped 131 136 { 132 137 [self resetViews]; // just in case it didn't happen on close 133 138 } 134 139 … … 136 141 137 142 - (IBAction) connectButtonPressed:(id) sender { 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 143 144 if (signalConverter.running) { 145 [signalConverter stopProcessing]; 146 [self resetViews]; 147 } else { 148 BOOL volumeMax = [signalConverter isVolumeMax]; 149 BOOL headphones = [signalConverter isAudioJackPlugged]; 150 151 if (!warned && !volumeMax && !headphones) { 152 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Check Volume & Transmitter" message:@"Ensure the volume is at max and the transmitter is plugged into the headphones" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 153 [alert show]; 154 } else if (!warned && !volumeMax) { 155 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Turn Up The Volume" message:@"Your device volume must be at the maximum for proper operation" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 156 [alert show]; 157 } else if (!warned && !headphones) { 158 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Plug In The Transmitter" message:@"Ensure the infrared transmitter is plugged into the headphone jack" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 159 [alert show]; 160 } else if (!signalConverter.isBluetoothReady) { 161 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Device not found" message:@"No Bluetooth device detected. Ensure Bluetooth is on and the Mindwave headset is paired" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 162 [alert show]; 163 } else if ([signalConverter startProcessing]) { 164 connectButton.title = @"Disconnect"; 165 } else { 166 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Failed to connect" message:@"Check the device is correctly paired on Bluetooth" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 167 [alert show]; 168 } 169 warned = YES; 170 } 166 171 } 167 172 168 173 - (IBAction) testButtonPressed:(id) sender { 169 170 171 172 173 174 175 176 177 178 179 180 181 174 [signalConverter isAudioJackPlugged]; 175 if (signalConverter.running) { 176 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Stop test sound" message:@"Press Stop first to end the test" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil]; 177 [alert show]; 178 } else { 179 if (signalConverter.testing) { 180 testButton.title = @"Test"; 181 [signalConverter stopTestSound]; 182 } else { 183 testButton.title = @"Stop"; 184 [signalConverter playTestSound]; 185 } 186 } 182 187 } 183 188
Note: See TracChangeset
for help on using the changeset viewer.