ba63db3f7e29ac0c6730262d40a94a3d5a1df89e
[mardrone] / mardrone / ARDrone_SDK_Version_1_8_20110726 / Examples / iPhone / FreeFlight / Classes / Menus / MenuUpdater.h
1 //
2 //  MenuUpdater.h
3 //  Updater
4 //
5 //  Created by Robert Ryll on 10-05-14.
6 //  Copyright Playsoft 2010. All rights reserved.
7 //
8
9 #import <UIKit/UIKit.h>
10 #import "MenuController.h"
11
12 #import "ARDroneFTP.h"
13 #import "FiniteStateMachine.h"
14
15 enum
16 {
17         UPDATER_STATE_WAITING_CONNECTION,
18         UPDATER_STATE_NOT_CONNECTED,
19         UPDATER_STATE_REPAIR,
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
29 };
30
31 enum
32 {
33         UPDATER_ACTION_FAIL,
34         UPDATER_ACTION_SUCCESS,
35         UPDATER_ACTION_ASK_FOR_FREEFLIGHT_UPDATE,
36         NUMBER_OF_UPDATER_ACTIONS
37 };
38
39 enum
40 {
41         UPDATER_STEP_CONNECTING,
42         UPDATER_STEP_REPAIR,
43         UPDATER_STEP_CHECK,
44         UPDATER_STEP_SEND,
45         UPDATER_STEP_RESTART,
46         UPDATER_STEP_INSTALL,
47         NUMBER_OF_UPDATER_STEPS
48 };
49
50 @interface MenuUpdater : UIViewController <MenuProtocol, ARDroneProtocolOut>
51 {
52         MenuController   *controller;
53         
54         BOOL compiledForIPad;
55         BOOL usingIPad;
56         BOOL using2xInterface;
57         
58         IBOutlet UILabel *firmwareVersionLabel;
59         IBOutlet UILabel *statusLabel;
60         
61         IBOutlet UIButton       *okButton;
62         IBOutlet UIButton       *cancelButton;
63         
64         IBOutlet UIProgressView *sendProgressView;
65
66         UILabel *stepLabel[NUMBER_OF_UPDATER_STEPS];
67         UIImageView *stepImageView[NUMBER_OF_UPDATER_STEPS];
68         
69         UIActivityIndicatorView *stepIndicator;
70         
71         NSString *firmwarePath;
72         NSString *firmwareFileName;
73         NSString *firmwareVersion;
74         NSString *repairPath;
75         NSString *repairFilename;
76         NSString *repairVersion;
77         NSString *bootldrPath;
78         NSString *bootldrFilename;
79         
80         NSString *droneFirmwareVersion;
81         NSString *localIP;
82     
83     ARDroneFTP *ftp;
84     ARDroneFTP *repairFtp;
85         
86         FiniteStateMachine *fsm;
87 }
88
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;
99
100 @property (nonatomic, retain) ARDroneFTP *ftp;
101 @property (nonatomic, retain) ARDroneFTP *repairFtp;
102 @property (nonatomic, retain) FiniteStateMachine *fsm;
103
104 - (void)checkFtp;
105
106 // Waiting Connection:
107 - (void)enterWaitingConnection:(id)_fsm;
108 - (void)quitWaitingConnection:(id)_fsm;
109
110 // Not Connected:
111 - (void)enterNotConnected:(id)_fsm;
112
113 // Repair:
114 - (void)enterRepair:(id)_fsm;
115 - (void)quitRepair:(id)_fsm;
116
117 // Not Repaired:
118 - (void)enterNotRepaired:(id)_fsm;
119
120 // Check Version:
121 - (void)enterCheckVersion:(id)_fsm;
122 - (void)quitCheckVersion:(id)_fsm;
123
124 // Update Freeflight:
125 - (void)enterUpdateFreeflight:(id)_fsm;
126
127 // Launch Freeflight:
128 - (void)enterLaunchFreeflight:(id)_fsm;
129
130 // Update Firmware:
131 - (void)enterUpdateFirmware:(id)_fsm;
132 - (void)quitUpdateFirmware:(id)_fsm;
133
134 // Not Updated:
135 - (void)enterNotUpdated:(id)_fsm;
136
137 // Restart Drone:
138 - (void)enterRestartDrone:(id)_fsm;
139 - (void)quitRestartDrone:(id)_fsm;
140
141 // Installing Firmware:
142 - (void)enterInstallingFirmware:(id)_fsm;
143
144 // IBActions:
145 - (IBAction)okAction:(id)sender;
146 - (IBAction)cancelAction:(id)sender;
147
148 @end