2
2
3
3
#if DISPLAY_TYPE > 0
4
4
#if SUPPORT_MANUAL_CONTROL == 1
5
- bool confirmZeroPoint = false ;
5
+
6
6
bool setZeroPoint = true ;
7
7
8
+ #define HIGHLIGHT_MANUAL 1
9
+ #define HIGHLIGHT_SERIAL 2
10
+
11
+ #define MANUAL_CONTROL_MODE 10
12
+ #define MANUAL_CONTROL_CONFIRM_HOME 11
13
+ #define SERIAL_DISPLAY_MODE 20
14
+
15
+ int ctrlState = HIGHLIGHT_MANUAL;
8
16
9
17
#define LOOPS_TO_CONFIRM_KEY 10
10
18
byte loopsWithKeyPressed = 0 ;
11
19
byte keyPressed = btnNONE;
12
20
21
+ void setControlMode (bool state)
22
+ {
23
+ ctrlState = state ? MANUAL_CONTROL_MODE : HIGHLIGHT_MANUAL;
24
+ }
13
25
14
26
bool processKeyStateChanges (int key, int dir)
15
27
{
16
28
bool ret = false ;
17
- if (keyPressed != key) {
29
+ if (keyPressed != key)
30
+ {
18
31
loopsWithKeyPressed = 0 ;
19
32
keyPressed = key;
20
33
}
21
- else {
22
- if (loopsWithKeyPressed == LOOPS_TO_CONFIRM_KEY) {
34
+ else
35
+ {
36
+ if (loopsWithKeyPressed == LOOPS_TO_CONFIRM_KEY)
37
+ {
23
38
mount.stopSlewing (ALL_DIRECTIONS);
24
39
mount.waitUntilStopped (ALL_DIRECTIONS);
25
- if (dir != 0 ) {
40
+ if (dir != 0 )
41
+ {
26
42
mount.startSlewing (dir);
27
43
}
28
44
loopsWithKeyPressed++;
29
45
ret = true ;
30
46
}
31
- else if (loopsWithKeyPressed < LOOPS_TO_CONFIRM_KEY) {
47
+ else if (loopsWithKeyPressed < LOOPS_TO_CONFIRM_KEY)
48
+ {
32
49
loopsWithKeyPressed++;
33
50
}
34
51
}
35
-
52
+
36
53
return ret;
37
54
}
38
55
39
- bool processControlKeys () {
56
+ bool processControlKeys ()
57
+ {
40
58
byte key;
41
59
bool waitForRelease = false ;
42
60
43
61
// User must use SELECT to enter manual control.
44
- if (!inControlMode) {
45
- if (lcdButtons.keyChanged (&key)) {
62
+ switch (ctrlState)
63
+ {
64
+ case HIGHLIGHT_MANUAL:
65
+ {
66
+ if (lcdButtons.keyChanged (&key))
67
+ {
46
68
waitForRelease = true ;
47
- if (key == btnSELECT) {
48
- inControlMode = true ;
69
+ if (key == btnSELECT)
70
+ {
71
+ ctrlState = MANUAL_CONTROL_MODE;
49
72
mount.stopSlewing (ALL_DIRECTIONS);
50
73
}
51
- else if (key == btnRIGHT) {
74
+ else if ((key == btnDOWN) || (key == btnUP))
75
+ {
76
+ ctrlState = HIGHLIGHT_SERIAL;
77
+ }
78
+ else if (key == btnRIGHT)
79
+ {
80
+ lcdMenu.setNextActive ();
81
+ }
82
+ }
83
+ }
84
+ break ;
85
+
86
+ case HIGHLIGHT_SERIAL:
87
+ {
88
+ if (lcdButtons.keyChanged (&key))
89
+ {
90
+ waitForRelease = true ;
91
+ if (key == btnSELECT)
92
+ {
93
+ inSerialControl = !inSerialControl;
94
+ }
95
+ else if ((key == btnDOWN) || (key == btnUP))
96
+ {
97
+ ctrlState = HIGHLIGHT_MANUAL;
98
+ }
99
+ else if (key == btnRIGHT)
100
+ {
101
+ inSerialControl = false ;
52
102
lcdMenu.setNextActive ();
53
103
}
54
104
}
55
- return waitForRelease;
56
105
}
106
+ break ;
57
107
58
- if (confirmZeroPoint) {
59
- if (lcdButtons.keyChanged (&key)) {
108
+ case MANUAL_CONTROL_CONFIRM_HOME:
109
+ {
110
+ if (lcdButtons.keyChanged (&key))
111
+ {
60
112
waitForRelease = true ;
61
- if (key == btnSELECT) {
62
- if (setZeroPoint) {
113
+ if (key == btnSELECT)
114
+ {
115
+ if (setZeroPoint)
116
+ {
63
117
// Leaving Control Menu, so set stepper motor positions to zero.
64
118
LOGV1 (DEBUG_GENERAL, F (" CTRL menu: Calling setHome(true)!" ));
65
119
mount.setHome (true );
66
- LOGV3 (DEBUG_GENERAL, F (" CTRL menu: setHome(true) returned: RA Current %s, Target: %f" ), mount.RAString (CURRENT_STRING| COMPACT_STRING).c_str (), mount.RAString (TARGET_STRING | COMPACT_STRING).c_str ());
120
+ LOGV3 (DEBUG_GENERAL, F (" CTRL menu: setHome(true) returned: RA Current %s, Target: %f" ), mount.RAString (CURRENT_STRING | COMPACT_STRING).c_str (), mount.RAString (TARGET_STRING | COMPACT_STRING).c_str ());
67
121
mount.startSlewing (TRACKING);
68
122
}
69
123
70
124
// Set flag to prevent resetting zero point when moving over the menu items
71
- inControlMode = false ;
125
+ ctrlState = HIGHLIGHT_MANUAL ;
72
126
73
127
#if SUPPORT_GUIDED_STARTUP == 1
74
- if (startupState == StartupWaitForPoleCompletion) {
128
+ if (startupState == StartupWaitForPoleCompletion)
129
+ {
75
130
startupState = StartupPoleConfirmed;
76
131
inStartup = true ;
77
- inControlMode = false ;
132
+ ctrlState = HIGHLIGHT_MANUAL ;
78
133
}
79
134
else
80
135
#endif
81
136
{
82
137
lcdMenu.setNextActive ();
83
138
}
84
139
85
- confirmZeroPoint = false ;
140
+ ctrlState = HIGHLIGHT_MANUAL ;
86
141
setZeroPoint = true ;
87
142
}
88
- else if (key == btnLEFT) {
143
+ else if (key == btnLEFT)
144
+ {
89
145
setZeroPoint = !setZeroPoint;
90
146
}
91
147
}
92
- return waitForRelease;
93
148
}
94
-
95
- key = lcdButtons.currentState ();
96
- switch (key) {
97
- case btnUP: {
149
+ break ;
150
+
151
+ case MANUAL_CONTROL_MODE:
152
+ {
153
+ key = lcdButtons.currentState ();
154
+ switch (key)
155
+ {
156
+ case btnUP:
157
+ {
98
158
processKeyStateChanges (btnUP, NORTH);
99
159
}
100
160
break ;
101
161
102
- case btnDOWN: {
162
+ case btnDOWN:
163
+ {
103
164
processKeyStateChanges (btnDOWN, SOUTH);
104
165
}
105
166
break ;
106
167
107
- case btnLEFT: {
168
+ case btnLEFT:
169
+ {
108
170
processKeyStateChanges (btnLEFT, WEST);
109
171
}
110
172
break ;
111
173
112
- case btnRIGHT: {
174
+ case btnRIGHT:
175
+ {
113
176
processKeyStateChanges (btnRIGHT, EAST);
114
177
}
115
178
break ;
116
179
117
- case btnSELECT: {
180
+ case btnSELECT:
181
+ {
118
182
if (processKeyStateChanges (btnSELECT, 0 ))
119
183
{
120
184
#if SUPPORT_GUIDED_STARTUP == 1
121
- if (startupState == StartupWaitForPoleCompletion) {
185
+ if (startupState == StartupWaitForPoleCompletion)
186
+ {
122
187
startupState = StartupPoleConfirmed;
123
- inControlMode = false ;
124
- confirmZeroPoint = false ;
188
+ ctrlState = HIGHLIGHT_MANUAL;
125
189
waitForRelease = true ;
126
190
inStartup = true ;
127
191
}
@@ -130,36 +194,55 @@ bool processControlKeys() {
130
194
{
131
195
lcdMenu.setCursor (0 , 0 );
132
196
lcdMenu.printMenu (" Set home pos?" );
133
- confirmZeroPoint = true ;
197
+ ctrlState = MANUAL_CONTROL_CONFIRM_HOME ;
134
198
waitForRelease = true ;
135
199
}
136
200
}
137
201
}
138
202
break ;
139
203
140
- case btnNONE: {
204
+ case btnNONE:
205
+ {
141
206
processKeyStateChanges (btnNONE, 0 );
142
207
}
143
208
break ;
209
+ }
210
+ }
211
+ break ;
144
212
}
145
213
146
214
return waitForRelease;
147
215
}
148
216
149
-
150
- void printControlSubmenu () {
151
- if (!inControlMode) {
152
- lcdMenu.printMenu (" >Manual control" );
217
+ void printControlSubmenu ()
218
+ {
219
+ switch (ctrlState)
220
+ {
221
+ case HIGHLIGHT_MANUAL:
222
+ {
223
+ lcdMenu.printMenu (" >Manual slewing" );
224
+ }
225
+ break ;
226
+ case HIGHLIGHT_SERIAL:
227
+ {
228
+ lcdMenu.printMenu (" >Serial display" );
153
229
}
154
- else if (confirmZeroPoint) {
230
+ break ;
231
+ case MANUAL_CONTROL_CONFIRM_HOME:
232
+ {
155
233
String disp = " Yes No " ;
156
234
disp.setCharAt (setZeroPoint ? 0 : 5 , ' >' );
157
235
disp.setCharAt (setZeroPoint ? 4 : 8 , ' <' );
158
236
lcdMenu.printMenu (disp);
159
237
}
160
- else {
238
+ break ;
239
+ default :
240
+ {
161
241
mount.displayStepperPositionThrottled ();
162
242
}
243
+ break ;
244
+ }
163
245
}
246
+
164
247
#endif
165
248
#endif
0 commit comments