5 // Created by Robert Ryll on 10-05-14.
6 // Copyright Playsoft 2010. All rights reserved.
9 #import <UIKit/UIKit.h>
10 #import "MenuController.h"
12 #import "ARDroneFTP.h"
13 #import "FiniteStateMachine.h"
17 UPDATER_STATE_WAITING_CONNECTION,
18 UPDATER_STATE_NOT_CONNECTED,
20 UPDATER_STATE_NOT_REPAIRED,
21 UPDATER_STATE_CHECK_VERSION,
22 UPDATER_STATE_UPDATE_FREEFLIGHT,
23 UPDATER_STATE_LAUNCH_FREEFLIGHT,
24 UPDATER_STATE_UPDATE_FIRMWARE,
25 UPDATER_STATE_NOT_UPDATED,
26 UPDATER_STATE_RESTART_DRONE,
27 UPDATER_STATE_INSTALLING_FIRMWARE,
28 NUMBER_OF_UPDATER_STATES
34 UPDATER_ACTION_SUCCESS,
35 UPDATER_ACTION_ASK_FOR_FREEFLIGHT_UPDATE,
36 NUMBER_OF_UPDATER_ACTIONS
41 UPDATER_STEP_CONNECTING,
47 NUMBER_OF_UPDATER_STEPS
50 @interface MenuUpdater : UIViewController <MenuProtocol, ARDroneProtocolOut>
52 MenuController *controller;
56 BOOL using2xInterface;
58 IBOutlet UILabel *firmwareVersionLabel;
59 IBOutlet UILabel *statusLabel;
61 IBOutlet UIButton *okButton;
62 IBOutlet UIButton *cancelButton;
64 IBOutlet UIProgressView *sendProgressView;
66 UILabel *stepLabel[NUMBER_OF_UPDATER_STEPS];
67 UIImageView *stepImageView[NUMBER_OF_UPDATER_STEPS];
69 UIActivityIndicatorView *stepIndicator;
71 NSString *firmwarePath;
72 NSString *firmwareFileName;
73 NSString *firmwareVersion;
75 NSString *repairFilename;
76 NSString *repairVersion;
77 NSString *bootldrPath;
78 NSString *bootldrFilename;
80 NSString *droneFirmwareVersion;
84 ARDroneFTP *repairFtp;
86 FiniteStateMachine *fsm;
89 @property (nonatomic, copy) NSString *firmwarePath;
90 @property (nonatomic, copy) NSString *firmwareFileName;
91 @property (nonatomic, copy) NSString *repairPath;
92 @property (nonatomic, copy) NSString *repairFileName;
93 @property (nonatomic, copy) NSString *repairVersion;
94 @property (nonatomic, copy) NSString *bootldrPath;
95 @property (nonatomic, copy) NSString *bootldrFileName;
96 @property (nonatomic, copy) NSString *firmwareVersion;
97 @property (nonatomic, copy) NSString *droneFirmwareVersion;
98 @property (nonatomic, copy) NSString *localIP;
100 @property (nonatomic, retain) ARDroneFTP *ftp;
101 @property (nonatomic, retain) ARDroneFTP *repairFtp;
102 @property (nonatomic, retain) FiniteStateMachine *fsm;
106 // Waiting Connection:
107 - (void)enterWaitingConnection:(id)_fsm;
108 - (void)quitWaitingConnection:(id)_fsm;
111 - (void)enterNotConnected:(id)_fsm;
114 - (void)enterRepair:(id)_fsm;
115 - (void)quitRepair:(id)_fsm;
118 - (void)enterNotRepaired:(id)_fsm;
121 - (void)enterCheckVersion:(id)_fsm;
122 - (void)quitCheckVersion:(id)_fsm;
124 // Update Freeflight:
125 - (void)enterUpdateFreeflight:(id)_fsm;
127 // Launch Freeflight:
128 - (void)enterLaunchFreeflight:(id)_fsm;
131 - (void)enterUpdateFirmware:(id)_fsm;
132 - (void)quitUpdateFirmware:(id)_fsm;
135 - (void)enterNotUpdated:(id)_fsm;
138 - (void)enterRestartDrone:(id)_fsm;
139 - (void)quitRestartDrone:(id)_fsm;
141 // Installing Firmware:
142 - (void)enterInstallingFirmware:(id)_fsm;
145 - (IBAction)okAction:(id)sender;
146 - (IBAction)cancelAction:(id)sender;