Michael Spencer / Mbed 2 deprecated LaOS

Dependencies:   mbed

Committer:
Michael J. Spencer
Date:
Sat Mar 08 17:55:59 2014 -0800
Revision:
2:609dd3a73f33
Parent:
1:f5ac63519541
Update.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Michael J. Spencer 1:f5ac63519541 1 /*
Michael J. Spencer 1:f5ac63519541 2 * LaosMenu.cpp
Michael J. Spencer 1:f5ac63519541 3 * Menu structure and user interface. Uses LaosDisplay
Michael J. Spencer 1:f5ac63519541 4 *
Michael J. Spencer 1:f5ac63519541 5 * Copyright (c) 2011 Peter Brier & Jaap Vermaas
Michael J. Spencer 1:f5ac63519541 6 *
Michael J. Spencer 1:f5ac63519541 7 * This file is part of the LaOS project (see: http://wiki.laoslaser.org/)
Michael J. Spencer 1:f5ac63519541 8 *
Michael J. Spencer 1:f5ac63519541 9 * LaOS is free software: you can redistribute it and/or modify
Michael J. Spencer 1:f5ac63519541 10 * it under the terms of the GNU General Public License as published by
Michael J. Spencer 1:f5ac63519541 11 * the Free Software Foundation, either version 3 of the License, or
Michael J. Spencer 1:f5ac63519541 12 * (at your option) any later version.
Michael J. Spencer 1:f5ac63519541 13 *
Michael J. Spencer 1:f5ac63519541 14 * LaOS is distributed in the hope that it will be useful,
Michael J. Spencer 1:f5ac63519541 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Michael J. Spencer 1:f5ac63519541 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Michael J. Spencer 1:f5ac63519541 17 * GNU General Public License for more details.
Michael J. Spencer 1:f5ac63519541 18 *
Michael J. Spencer 1:f5ac63519541 19 * You should have received a copy of the GNU General Public License
Michael J. Spencer 1:f5ac63519541 20 * along with LaOS. If not, see <http://www.gnu.org/licenses/>.
Michael J. Spencer 1:f5ac63519541 21 *
Michael J. Spencer 1:f5ac63519541 22 */
Michael J. Spencer 1:f5ac63519541 23 #include "LaosMenu.h"
Michael J. Spencer 1:f5ac63519541 24
Michael J. Spencer 1:f5ac63519541 25 static const char *menus[] = {
Michael J. Spencer 1:f5ac63519541 26 "STARTUP", //0
Michael J. Spencer 1:f5ac63519541 27 "MAIN", //1
Michael J. Spencer 1:f5ac63519541 28 "START JOB", //2
Michael J. Spencer 1:f5ac63519541 29 "DELETE JOB", //3
Michael J. Spencer 1:f5ac63519541 30 "HOME", //4
Michael J. Spencer 1:f5ac63519541 31 "MOVE", //5
Michael J. Spencer 1:f5ac63519541 32 "FOCUS", //6
Michael J. Spencer 1:f5ac63519541 33 "ORIGIN", //7
Michael J. Spencer 1:f5ac63519541 34 "REMOVE ALL JOBS", //8
Michael J. Spencer 1:f5ac63519541 35 "IP", //9
Michael J. Spencer 1:f5ac63519541 36 "REBOOT", //10
Michael J. Spencer 1:f5ac63519541 37 // "POWER / SPEED",//11
Michael J. Spencer 1:f5ac63519541 38 // "IO", //12
Michael J. Spencer 1:f5ac63519541 39 };
Michael J. Spencer 1:f5ac63519541 40
Michael J. Spencer 1:f5ac63519541 41 static const char *screens[] = {
Michael J. Spencer 1:f5ac63519541 42 //0: main, navigate to MOVE, FOCUS, HOME, ORIGIN, START JOB, IP,
Michael J. Spencer 1:f5ac63519541 43 // DELETE JOB, POWER
Michael J. Spencer 1:f5ac63519541 44 #define STARTUP (0)
Michael J. Spencer 1:f5ac63519541 45 "$$$$$$$$$$$$$$$$"
Michael J. Spencer 1:f5ac63519541 46 "$$$$$$$$$$$$$$$$",
Michael J. Spencer 1:f5ac63519541 47
Michael J. Spencer 1:f5ac63519541 48 #define MAIN (STARTUP+1)
Michael J. Spencer 1:f5ac63519541 49 "$$$$$$$$$$$$$$$$"
Michael J. Spencer 1:f5ac63519541 50 "<----- 10 ----->",
Michael J. Spencer 1:f5ac63519541 51
Michael J. Spencer 1:f5ac63519541 52 #define RUN (MAIN+1)
Michael J. Spencer 1:f5ac63519541 53 "RUN: "
Michael J. Spencer 1:f5ac63519541 54 "$$$$$$$$$$$$$$$$",
Michael J. Spencer 1:f5ac63519541 55
Michael J. Spencer 1:f5ac63519541 56 #define DELETE (RUN+1)
Michael J. Spencer 1:f5ac63519541 57 "DELETE: "
Michael J. Spencer 1:f5ac63519541 58 "$$$$$$$$$$$$$$$$",
Michael J. Spencer 1:f5ac63519541 59
Michael J. Spencer 1:f5ac63519541 60 #define HOME (DELETE+1)
Michael J. Spencer 1:f5ac63519541 61 "HOME? "
Michael J. Spencer 1:f5ac63519541 62 " [ok] ",
Michael J. Spencer 1:f5ac63519541 63
Michael J. Spencer 1:f5ac63519541 64 #define MOVE (HOME+1)
Michael J. Spencer 1:f5ac63519541 65 "X: +6543210 MOVE"
Michael J. Spencer 1:f5ac63519541 66 "Y: +6543210 ",
Michael J. Spencer 1:f5ac63519541 67
Michael J. Spencer 1:f5ac63519541 68 #define FOCUS (MOVE+1)
Michael J. Spencer 1:f5ac63519541 69 "Z: +543210 FOCUS"
Michael J. Spencer 1:f5ac63519541 70 " ",
Michael J. Spencer 1:f5ac63519541 71
Michael J. Spencer 1:f5ac63519541 72 #define ORIGIN (FOCUS+1)
Michael J. Spencer 1:f5ac63519541 73 " SET ORIGIN? "
Michael J. Spencer 1:f5ac63519541 74 " [ok] ",
Michael J. Spencer 1:f5ac63519541 75
Michael J. Spencer 1:f5ac63519541 76 #define DELETE_ALL (ORIGIN+1)
Michael J. Spencer 1:f5ac63519541 77 "DELETE ALL FILES"
Michael J. Spencer 1:f5ac63519541 78 " [ok] ",
Michael J. Spencer 1:f5ac63519541 79
Michael J. Spencer 1:f5ac63519541 80 #define IP (DELETE_ALL+1)
Michael J. Spencer 1:f5ac63519541 81 "210.210.210.210 "
Michael J. Spencer 1:f5ac63519541 82 "$$$$$$$$[ok] ",
Michael J. Spencer 1:f5ac63519541 83
Michael J. Spencer 1:f5ac63519541 84 #define REBOOT (IP+1)
Michael J. Spencer 1:f5ac63519541 85 "REBOOTING... "
Michael J. Spencer 1:f5ac63519541 86 "Please wait... ",
Michael J. Spencer 1:f5ac63519541 87
Michael J. Spencer 1:f5ac63519541 88 #define POWER (REBOOT+1)
Michael J. Spencer 1:f5ac63519541 89 "$$$$$$$: 6543210"
Michael J. Spencer 1:f5ac63519541 90 " [ok] ",
Michael J. Spencer 1:f5ac63519541 91
Michael J. Spencer 1:f5ac63519541 92 #define IO (POWER+1)
Michael J. Spencer 1:f5ac63519541 93 "$$$$$$$$$$$=0 IO"
Michael J. Spencer 1:f5ac63519541 94 " [ok] ",
Michael J. Spencer 1:f5ac63519541 95
Michael J. Spencer 1:f5ac63519541 96 // Intermediate screens
Michael J. Spencer 1:f5ac63519541 97 #define DELETE_OK (IO+1)
Michael J. Spencer 1:f5ac63519541 98 "DELETE 10? "
Michael J. Spencer 1:f5ac63519541 99 " [ok] ",
Michael J. Spencer 1:f5ac63519541 100
Michael J. Spencer 1:f5ac63519541 101 #define HOMING (DELETE_OK+1)
Michael J. Spencer 1:f5ac63519541 102 "HOMING... "
Michael J. Spencer 1:f5ac63519541 103 " ",
Michael J. Spencer 1:f5ac63519541 104
Michael J. Spencer 1:f5ac63519541 105 #define RUNNING (HOMING+1)
Michael J. Spencer 1:f5ac63519541 106 "RUNNING... "
Michael J. Spencer 1:f5ac63519541 107 "[cancel] ",
Michael J. Spencer 1:f5ac63519541 108
Michael J. Spencer 1:f5ac63519541 109 #define BUSY (RUNNING+1)
Michael J. Spencer 1:f5ac63519541 110 "BUSY: $$$$$$$$$$"
Michael J. Spencer 1:f5ac63519541 111 "[cancel][ok] ",
Michael J. Spencer 1:f5ac63519541 112
Michael J. Spencer 1:f5ac63519541 113 #define PAUSE (BUSY+1)
Michael J. Spencer 1:f5ac63519541 114 "PAUSE: $$$$$$$$$"
Michael J. Spencer 1:f5ac63519541 115 "[cancel][ok] ",
Michael J. Spencer 1:f5ac63519541 116
Michael J. Spencer 1:f5ac63519541 117 };
Michael J. Spencer 1:f5ac63519541 118
Michael J. Spencer 1:f5ac63519541 119 static const char *ipfields[] = { "IP", "NETMASK", "GATEWAY", "DNS" };
Michael J. Spencer 1:f5ac63519541 120 //static const char *powerfields[] = { "Pmin %", "Pmax %", "Voff", "Von" };
Michael J. Spencer 1:f5ac63519541 121 //static const char *iofields[] = { "o1:PURGE", "o2:EXHAUST", "o3:PUMP", "i1:COVER", "i2:PUMPOK", "i3:LASEROK", "i4:PURGEOK" };
Michael J. Spencer 1:f5ac63519541 122
Michael J. Spencer 1:f5ac63519541 123
Michael J. Spencer 1:f5ac63519541 124 /**
Michael J. Spencer 1:f5ac63519541 125 *** Make new menu object
Michael J. Spencer 1:f5ac63519541 126 **/
Michael J. Spencer 1:f5ac63519541 127 LaosMenu::LaosMenu(LaosDisplay *display) {
Michael J. Spencer 1:f5ac63519541 128 waitup=timeout=iofield=ipfield=0;
Michael J. Spencer 1:f5ac63519541 129 sarg = NULL;
Michael J. Spencer 1:f5ac63519541 130 x=y=z=0;
Michael J. Spencer 1:f5ac63519541 131 xoff=yoff=zoff=0;
Michael J. Spencer 1:f5ac63519541 132 screen=prevscreen=lastscreen=speed=0;
Michael J. Spencer 1:f5ac63519541 133 menu=1;
Michael J. Spencer 1:f5ac63519541 134 strcpy(jobname, "");
Michael J. Spencer 1:f5ac63519541 135 dsp = display;
Michael J. Spencer 1:f5ac63519541 136 if ( dsp == NULL ) dsp = new LaosDisplay();
Michael J. Spencer 1:f5ac63519541 137 dsp->cls();
Michael J. Spencer 1:f5ac63519541 138 SetScreen(NULL);
Michael J. Spencer 1:f5ac63519541 139 runfile = NULL;
Michael J. Spencer 1:f5ac63519541 140 }
Michael J. Spencer 1:f5ac63519541 141
Michael J. Spencer 1:f5ac63519541 142 /**
Michael J. Spencer 1:f5ac63519541 143 *** Destroy menu object
Michael J. Spencer 1:f5ac63519541 144 **/
Michael J. Spencer 1:f5ac63519541 145 LaosMenu::~LaosMenu() {
Michael J. Spencer 1:f5ac63519541 146 }
Michael J. Spencer 1:f5ac63519541 147
Michael J. Spencer 1:f5ac63519541 148 /**
Michael J. Spencer 1:f5ac63519541 149 *** Goto specific screen
Michael J. Spencer 1:f5ac63519541 150 **/
Michael J. Spencer 1:f5ac63519541 151 void LaosMenu::SetScreen(int screen) {
Michael J. Spencer 1:f5ac63519541 152 sarg = NULL;
Michael J. Spencer 1:f5ac63519541 153 this->screen = screen;
Michael J. Spencer 1:f5ac63519541 154 Handle();
Michael J. Spencer 1:f5ac63519541 155 Handle();
Michael J. Spencer 1:f5ac63519541 156 Handle();
Michael J. Spencer 1:f5ac63519541 157 }
Michael J. Spencer 1:f5ac63519541 158
Michael J. Spencer 1:f5ac63519541 159 /**
Michael J. Spencer 1:f5ac63519541 160 *** Goto specific screen
Michael J. Spencer 1:f5ac63519541 161 **/
Michael J. Spencer 1:f5ac63519541 162 void LaosMenu::SetScreen(char *msg) {
Michael J. Spencer 1:f5ac63519541 163 if ( msg == NULL ) {
Michael J. Spencer 1:f5ac63519541 164 sarg = NULL;
Michael J. Spencer 1:f5ac63519541 165 screen = MAIN;
Michael J. Spencer 1:f5ac63519541 166 } else if ( msg[0] == 0 ) {
Michael J. Spencer 1:f5ac63519541 167 screen = MAIN;
Michael J. Spencer 1:f5ac63519541 168 } else {
Michael J. Spencer 1:f5ac63519541 169 sarg = msg;
Michael J. Spencer 1:f5ac63519541 170 screen = STARTUP;
Michael J. Spencer 1:f5ac63519541 171 }
Michael J. Spencer 1:f5ac63519541 172 prevscreen = -1; // force update
Michael J. Spencer 1:f5ac63519541 173 Handle();
Michael J. Spencer 1:f5ac63519541 174 Handle();
Michael J. Spencer 1:f5ac63519541 175 Handle();
Michael J. Spencer 1:f5ac63519541 176 }
Michael J. Spencer 1:f5ac63519541 177
Michael J. Spencer 1:f5ac63519541 178 /**
Michael J. Spencer 1:f5ac63519541 179 *** Handle menu system
Michael J. Spencer 1:f5ac63519541 180 *** Read keys, and plan next action on the screen, output screen if
Michael J. Spencer 1:f5ac63519541 181 *** something changed
Michael J. Spencer 1:f5ac63519541 182 **/
Michael J. Spencer 1:f5ac63519541 183 void LaosMenu::Handle() {
Michael J. Spencer 1:f5ac63519541 184 int xt, yt, zt, cnt=0, nodisplay = 0;
Michael J. Spencer 1:f5ac63519541 185 extern LaosFileSystem sd;
Michael J. Spencer 1:f5ac63519541 186 extern LaosMotion *mot;
Michael J. Spencer 2:609dd3a73f33 187 extern GlobalConfig *cfg;
Michael J. Spencer 1:f5ac63519541 188 static int count=0;
Michael J. Spencer 1:f5ac63519541 189
Michael J. Spencer 1:f5ac63519541 190 int c = dsp->read();
Michael J. Spencer 1:f5ac63519541 191 if ( count++ > 10) count = 0; // screen refresh counter (refresh once every 10 cycles(
Michael J. Spencer 1:f5ac63519541 192
Michael J. Spencer 1:f5ac63519541 193 if ( c ) timeout = 10; // keypress timeout counter
Michael J. Spencer 1:f5ac63519541 194 else if ( timeout ) timeout--;
Michael J. Spencer 1:f5ac63519541 195
Michael J. Spencer 1:f5ac63519541 196 if ( screen != prevscreen ) waitup = 1; // after a screen change: wait for a key release, mask current keypress
Michael J. Spencer 1:f5ac63519541 197 if ( waitup && timeout) // if we have to wait for key-up,
Michael J. Spencer 1:f5ac63519541 198 c = 0; // cancel the keypress
Michael J. Spencer 1:f5ac63519541 199 if ( waitup && !timeout ) waitup=0;
Michael J. Spencer 1:f5ac63519541 200
Michael J. Spencer 1:f5ac63519541 201 if ( !timeout ) // increase speed if we keep button pressed longer
Michael J. Spencer 1:f5ac63519541 202 speed = 3;
Michael J. Spencer 1:f5ac63519541 203 else {
Michael J. Spencer 1:f5ac63519541 204 speed = speed * 2;
Michael J. Spencer 1:f5ac63519541 205 if ( speed >= 100 ) speed = 100;
Michael J. Spencer 1:f5ac63519541 206 }
Michael J. Spencer 1:f5ac63519541 207
Michael J. Spencer 1:f5ac63519541 208 if ( c || screen != prevscreen || count >9 ) {
Michael J. Spencer 1:f5ac63519541 209
Michael J. Spencer 1:f5ac63519541 210 switch ( screen ) {
Michael J. Spencer 1:f5ac63519541 211 case STARTUP:
Michael J. Spencer 1:f5ac63519541 212 if ( sarg == NULL ) sarg = (char*) VERSION_STRING;
Michael J. Spencer 1:f5ac63519541 213 break;
Michael J. Spencer 1:f5ac63519541 214 case MAIN:
Michael J. Spencer 1:f5ac63519541 215 switch ( c ) {
Michael J. Spencer 1:f5ac63519541 216 case K_RIGHT: menu+=1; waitup=1; break;
Michael J. Spencer 1:f5ac63519541 217 case K_LEFT: menu-=1; waitup=1; break;
Michael J. Spencer 1:f5ac63519541 218 case K_UP: lastscreen=MAIN; screen=MOVE; menu=MAIN; break;
Michael J. Spencer 1:f5ac63519541 219 case K_DOWN: lastscreen=MAIN; screen=MOVE; menu=MAIN; break;
Michael J. Spencer 1:f5ac63519541 220 case K_OK: screen=menu; waitup=1; lastscreen=MAIN; break;
Michael J. Spencer 1:f5ac63519541 221 case K_CANCEL: menu=MAIN; break;
Michael J. Spencer 1:f5ac63519541 222 case K_FUP: lastscreen=MAIN; screen=FOCUS; menu=MAIN; break;
Michael J. Spencer 1:f5ac63519541 223 case K_FDOWN: lastscreen=MAIN; screen=FOCUS; menu=MAIN; break;
Michael J. Spencer 1:f5ac63519541 224 case K_ORIGIN: lastscreen=MAIN; screen=ORIGIN; waitup=1; break;
Michael J. Spencer 1:f5ac63519541 225 }
Michael J. Spencer 1:f5ac63519541 226 if (menu==0) menu = (sizeof(menus) / sizeof(menus[0])) -1;
Michael J. Spencer 1:f5ac63519541 227 if (menu==(sizeof(menus) / sizeof(menus[0]))) menu = 1;
Michael J. Spencer 1:f5ac63519541 228 sarg = (char*)menus[menu];
Michael J. Spencer 1:f5ac63519541 229 args[0] = menu;
Michael J. Spencer 1:f5ac63519541 230 break;
Michael J. Spencer 1:f5ac63519541 231
Michael J. Spencer 1:f5ac63519541 232 case RUN: // START JOB select job to run
Michael J. Spencer 1:f5ac63519541 233 if (strlen(jobname) == 0) getprevjob(jobname);
Michael J. Spencer 1:f5ac63519541 234 switch ( c ) {
Michael J. Spencer 1:f5ac63519541 235 case K_OK: screen=RUNNING; break;
Michael J. Spencer 1:f5ac63519541 236 case K_UP: case K_FUP: getprevjob(jobname); waitup = 1; break; // next job
Michael J. Spencer 1:f5ac63519541 237 case K_RIGHT: screen=DELETE; waitup=1; break;
Michael J. Spencer 1:f5ac63519541 238 case K_DOWN: case K_FDOWN: getnextjob(jobname); waitup = 1; break;// prev job
Michael J. Spencer 1:f5ac63519541 239 case K_CANCEL: screen=1; waitup = 1; break;
Michael J. Spencer 1:f5ac63519541 240 }
Michael J. Spencer 1:f5ac63519541 241 sarg = (char *)&jobname;
Michael J. Spencer 1:f5ac63519541 242 break;
Michael J. Spencer 1:f5ac63519541 243
Michael J. Spencer 1:f5ac63519541 244 case DELETE: // DELETE JOB select job to run
Michael J. Spencer 1:f5ac63519541 245 switch ( c ) {
Michael J. Spencer 1:f5ac63519541 246 case K_OK: removefile(jobname); screen=lastscreen; waitup = 1;
Michael J. Spencer 1:f5ac63519541 247 break; // INSERT: delete current job
Michael J. Spencer 1:f5ac63519541 248 case K_UP: case K_FUP: getprevjob(jobname); waitup = 1; break; // next job
Michael J. Spencer 1:f5ac63519541 249 case K_DOWN: case K_FDOWN: getnextjob(jobname); waitup = 1; break;// prev job
Michael J. Spencer 1:f5ac63519541 250 case K_LEFT: screen=RUN; waitup=1; break;
Michael J. Spencer 1:f5ac63519541 251 case K_CANCEL: screen=lastscreen; waitup = 1; break;
Michael J. Spencer 1:f5ac63519541 252 }
Michael J. Spencer 1:f5ac63519541 253 sarg = (char *)&jobname;
Michael J. Spencer 1:f5ac63519541 254 break;
Michael J. Spencer 1:f5ac63519541 255
Michael J. Spencer 1:f5ac63519541 256 case MOVE: // pos xy
Michael J. Spencer 1:f5ac63519541 257 mot->getPosition(&x, &y, &z);
Michael J. Spencer 1:f5ac63519541 258 xt = x; yt= y;
Michael J. Spencer 1:f5ac63519541 259 switch ( c ) {
Michael J. Spencer 1:f5ac63519541 260 case K_DOWN: y+=100*speed; break;
Michael J. Spencer 1:f5ac63519541 261 case K_UP: y-=100*speed; break;
Michael J. Spencer 1:f5ac63519541 262 case K_LEFT: x-=100*speed; break;
Michael J. Spencer 1:f5ac63519541 263 case K_RIGHT: x+=100*speed; break;
Michael J. Spencer 1:f5ac63519541 264 case K_OK: case K_CANCEL: screen=MAIN; waitup=1; break;
Michael J. Spencer 1:f5ac63519541 265 case K_FUP: screen=FOCUS; break;
Michael J. Spencer 1:f5ac63519541 266 case K_FDOWN: screen=FOCUS; break;
Michael J. Spencer 1:f5ac63519541 267 case K_ORIGIN: screen=ORIGIN; break;
Michael J. Spencer 1:f5ac63519541 268 }
Michael J. Spencer 1:f5ac63519541 269 if ((mot->queue() < 5) && ( (x!=xt) || (y != yt) )) {
Michael J. Spencer 1:f5ac63519541 270 mot->moveTo(x, y, z, speed/2);
Michael J. Spencer 1:f5ac63519541 271 printf("Move: %d %d %d %d\n", x,y,z, speed);
Michael J. Spencer 1:f5ac63519541 272 } else {
Michael J. Spencer 1:f5ac63519541 273 // if (! mot->ready())
Michael J. Spencer 1:f5ac63519541 274 // printf("Buffer vol\n");
Michael J. Spencer 1:f5ac63519541 275 }
Michael J. Spencer 1:f5ac63519541 276 args[0]=x-xoff;
Michael J. Spencer 1:f5ac63519541 277 args[1]=y-yoff;
Michael J. Spencer 1:f5ac63519541 278 break;
Michael J. Spencer 1:f5ac63519541 279
Michael J. Spencer 1:f5ac63519541 280 case FOCUS: // focus
Michael J. Spencer 1:f5ac63519541 281 mot->getPosition(&x, &y, &z);
Michael J. Spencer 1:f5ac63519541 282 zt = z;
Michael J. Spencer 1:f5ac63519541 283 switch ( c ) {
Michael J. Spencer 1:f5ac63519541 284 case K_FUP: z+=cfg->zspeed*speed; if (z>cfg->zmax) z=cfg->zmax; break;
Michael J. Spencer 1:f5ac63519541 285 case K_FDOWN: z-=cfg->zspeed*speed; if (z<0) z=0; break;
Michael J. Spencer 1:f5ac63519541 286 case K_LEFT: screen=MOVE; break;
Michael J. Spencer 1:f5ac63519541 287 case K_RIGHT: screen=MOVE; break;
Michael J. Spencer 1:f5ac63519541 288 case K_UP: screen=MOVE; break;
Michael J. Spencer 1:f5ac63519541 289 case K_DOWN: screen=MOVE; break;
Michael J. Spencer 1:f5ac63519541 290 case K_ORIGIN: screen=ORIGIN; break;
Michael J. Spencer 1:f5ac63519541 291 case K_OK: case K_CANCEL: screen=MAIN; waitup=1; break;
Michael J. Spencer 1:f5ac63519541 292 case 0: break;
Michael J. Spencer 1:f5ac63519541 293 default: screen=MAIN; waitup=1; break;
Michael J. Spencer 1:f5ac63519541 294 }
Michael J. Spencer 1:f5ac63519541 295 if ( mot->ready() && (z!=zt) )
Michael J. Spencer 1:f5ac63519541 296 {
Michael J. Spencer 1:f5ac63519541 297 mot->moveTo(x, y, z, speed);
Michael J. Spencer 1:f5ac63519541 298 printf("Move: %d %d %d %d\n", x,y,z, speed);
Michael J. Spencer 1:f5ac63519541 299 }
Michael J. Spencer 1:f5ac63519541 300 args[0]=z-zoff;
Michael J. Spencer 1:f5ac63519541 301 break;
Michael J. Spencer 1:f5ac63519541 302
Michael J. Spencer 1:f5ac63519541 303 case HOME:// home
Michael J. Spencer 1:f5ac63519541 304 switch ( c ) {
Michael J. Spencer 1:f5ac63519541 305 case K_OK: screen=HOMING; break;
Michael J. Spencer 1:f5ac63519541 306 case K_CANCEL: screen=MAIN; menu=MAIN; waitup=1; break;
Michael J. Spencer 1:f5ac63519541 307 }
Michael J. Spencer 1:f5ac63519541 308 break;
Michael J. Spencer 1:f5ac63519541 309
Michael J. Spencer 1:f5ac63519541 310 case ORIGIN: // origin
Michael J. Spencer 1:f5ac63519541 311 switch ( c ) {
Michael J. Spencer 1:f5ac63519541 312 case K_CANCEL: screen=MAIN; menu=MAIN; waitup=1; break;
Michael J. Spencer 1:f5ac63519541 313 case K_OK:
Michael J. Spencer 1:f5ac63519541 314 case K_ORIGIN:
Michael J. Spencer 1:f5ac63519541 315 xoff = x;
Michael J. Spencer 1:f5ac63519541 316 yoff = y;
Michael J. Spencer 1:f5ac63519541 317 zoff = z;
Michael J. Spencer 1:f5ac63519541 318 mot->setOrigin(x,y,z);
Michael J. Spencer 1:f5ac63519541 319 screen = lastscreen;
Michael J. Spencer 1:f5ac63519541 320 waitup = 1;
Michael J. Spencer 1:f5ac63519541 321 break;
Michael J. Spencer 1:f5ac63519541 322 }
Michael J. Spencer 1:f5ac63519541 323 break;
Michael J. Spencer 1:f5ac63519541 324
Michael J. Spencer 1:f5ac63519541 325 case DELETE_ALL: // Delete all files
Michael J. Spencer 1:f5ac63519541 326 switch ( c ) {
Michael J. Spencer 1:f5ac63519541 327 case K_OK: // delete current job
Michael J. Spencer 1:f5ac63519541 328 cleandir();
Michael J. Spencer 1:f5ac63519541 329 screen=MAIN;
Michael J. Spencer 1:f5ac63519541 330 waitup = 1;
Michael J. Spencer 1:f5ac63519541 331 strcpy(jobname, "");
Michael J. Spencer 1:f5ac63519541 332 break;
Michael J. Spencer 1:f5ac63519541 333 case K_CANCEL: screen=MAIN; waitup = 1; break;
Michael J. Spencer 1:f5ac63519541 334 }
Michael J. Spencer 1:f5ac63519541 335 break;
Michael J. Spencer 1:f5ac63519541 336
Michael J. Spencer 1:f5ac63519541 337 case IP: // IP
Michael J. Spencer 2:609dd3a73f33 338 int myip[4], mynm[4], mygw[4], mydns[4];
Michael J. Spencer 2:609dd3a73f33 339 IpParse(cfg->ip, myip);
Michael J. Spencer 2:609dd3a73f33 340 IpParse(cfg->nm, mynm);
Michael J. Spencer 2:609dd3a73f33 341 IpParse(cfg->gw, mygw);
Michael J. Spencer 2:609dd3a73f33 342 IpParse(cfg->dns, mydns);
Michael J. Spencer 1:f5ac63519541 343 switch ( c ) {
Michael J. Spencer 1:f5ac63519541 344 case K_RIGHT: ipfield++; waitup=1; break;
Michael J. Spencer 1:f5ac63519541 345 case K_LEFT: ipfield--; waitup=1; break;
Michael J. Spencer 1:f5ac63519541 346 case K_OK: screen=MAIN; menu=MAIN; break;
Michael J. Spencer 1:f5ac63519541 347 case K_CANCEL: screen=MAIN; menu=MAIN; break;
Michael J. Spencer 1:f5ac63519541 348 }
Michael J. Spencer 1:f5ac63519541 349 ipfield %= 4;
Michael J. Spencer 1:f5ac63519541 350 sarg = (char*)ipfields[ipfield];
Michael J. Spencer 1:f5ac63519541 351 switch (ipfield) {
Michael J. Spencer 2:609dd3a73f33 352 case 0: memcpy(args, myip, 4*sizeof(int) ); break;
Michael J. Spencer 2:609dd3a73f33 353 case 1: memcpy(args, mynm, 4*sizeof(int) ); break;
Michael J. Spencer 2:609dd3a73f33 354 case 2: memcpy(args, mygw, 4*sizeof(int) ); break;
Michael J. Spencer 2:609dd3a73f33 355 case 3: memcpy(args, mydns, 4*sizeof(int) ); break;
Michael J. Spencer 2:609dd3a73f33 356 default: memset(args, 0, 4*sizeof(int)); break;
Michael J. Spencer 1:f5ac63519541 357 }
Michael J. Spencer 1:f5ac63519541 358 break;
Michael J. Spencer 1:f5ac63519541 359
Michael J. Spencer 1:f5ac63519541 360 case REBOOT: // RESET MACHINE
Michael J. Spencer 1:f5ac63519541 361 mbed_reset();
Michael J. Spencer 1:f5ac63519541 362 break;
Michael J. Spencer 1:f5ac63519541 363
Michael J. Spencer 1:f5ac63519541 364 /*
Michael J. Spencer 1:f5ac63519541 365 case IO: // IO
Michael J. Spencer 1:f5ac63519541 366 switch ( c ) {
Michael J. Spencer 1:f5ac63519541 367 case K_RIGHT: iofield++; waitup=1; break;
Michael J. Spencer 1:f5ac63519541 368 case K_LEFT: iofield--; waitup=1; break;
Michael J. Spencer 1:f5ac63519541 369 case K_OK: screen=lastscreen; break;
Michael J. Spencer 1:f5ac63519541 370 case K_CANCEL: screen=lastscreen; break;
Michael J. Spencer 1:f5ac63519541 371 }
Michael J. Spencer 1:f5ac63519541 372 iofield %= sizeof(iofields)/sizeof(char*);
Michael J. Spencer 1:f5ac63519541 373 sarg = (char*)iofields[iofield];
Michael J. Spencer 1:f5ac63519541 374 args[0] = ipfield;
Michael J. Spencer 1:f5ac63519541 375 args[1] = ipfield;
Michael J. Spencer 1:f5ac63519541 376 break;
Michael J. Spencer 1:f5ac63519541 377
Michael J. Spencer 1:f5ac63519541 378 case POWER: // POWER
Michael J. Spencer 1:f5ac63519541 379 switch ( c ) {
Michael J. Spencer 1:f5ac63519541 380 case K_RIGHT: powerfield++; waitup=1; break;
Michael J. Spencer 1:f5ac63519541 381 case K_LEFT: powerfield--; waitup=1; break;
Michael J. Spencer 1:f5ac63519541 382 case K_UP: power[powerfield % 4] += speed; break;
Michael J. Spencer 1:f5ac63519541 383 case K_DOWN: power[powerfield % 4] -= speed; break;
Michael J. Spencer 1:f5ac63519541 384 case K_OK: screen=lastscreen; break;
Michael J. Spencer 1:f5ac63519541 385 case K_CANCEL: screen=lastscreen; break;
Michael J. Spencer 1:f5ac63519541 386 }
Michael J. Spencer 1:f5ac63519541 387 powerfield %= 4;
Michael J. Spencer 1:f5ac63519541 388 args[1] = powerfield;
Michael J. Spencer 1:f5ac63519541 389 sarg = (char*)powerfields[powerfield];
Michael J. Spencer 1:f5ac63519541 390 args[0] = power[powerfield];
Michael J. Spencer 1:f5ac63519541 391 break;
Michael J. Spencer 1:f5ac63519541 392 */
Michael J. Spencer 1:f5ac63519541 393 case HOMING: // Homing screen
Michael J. Spencer 1:f5ac63519541 394 x = cfg->xhome;
Michael J. Spencer 1:f5ac63519541 395 y = cfg->yhome;
Michael J. Spencer 1:f5ac63519541 396 while ( !mot->isStart() );
Michael J. Spencer 1:f5ac63519541 397 mot->home(cfg->xhome,cfg->yhome,cfg->zhome);
Michael J. Spencer 1:f5ac63519541 398 screen=lastscreen;
Michael J. Spencer 1:f5ac63519541 399 break;
Michael J. Spencer 1:f5ac63519541 400
Michael J. Spencer 1:f5ac63519541 401 case RUNNING: // Screen while running
Michael J. Spencer 1:f5ac63519541 402 switch ( c ) {
Michael J. Spencer 1:f5ac63519541 403 /* case K_CANCEL:
Michael J. Spencer 1:f5ac63519541 404 while (mot->queue());
Michael J. Spencer 1:f5ac63519541 405 mot->reset();
Michael J. Spencer 1:f5ac63519541 406 if (runfile != NULL) fclose(runfile);
Michael J. Spencer 1:f5ac63519541 407 runfile=NULL; screen=MAIN; menu=MAIN;
Michael J. Spencer 1:f5ac63519541 408 break; */
Michael J. Spencer 1:f5ac63519541 409 default:
Michael J. Spencer 1:f5ac63519541 410 if (runfile == NULL) {
Michael J. Spencer 1:f5ac63519541 411 runfile = sd.openfile(jobname, "rb");
Michael J. Spencer 1:f5ac63519541 412 if (! runfile)
Michael J. Spencer 1:f5ac63519541 413 screen=MAIN;
Michael J. Spencer 1:f5ac63519541 414 else
Michael J. Spencer 1:f5ac63519541 415 mot->reset();
Michael J. Spencer 1:f5ac63519541 416 } else {
Michael J. Spencer 1:f5ac63519541 417 #ifdef READ_FILE_DEBUG
Michael J. Spencer 1:f5ac63519541 418 printf("Parsing file: \n");
Michael J. Spencer 1:f5ac63519541 419 #endif
Michael J. Spencer 1:f5ac63519541 420 while ((!feof(runfile)) && mot->ready())
Michael J. Spencer 1:f5ac63519541 421 mot->write(readint(runfile));
Michael J. Spencer 1:f5ac63519541 422 #ifdef READ_FILE_DEBUG
Michael J. Spencer 1:f5ac63519541 423 printf("File parsed \n");
Michael J. Spencer 1:f5ac63519541 424 #endif
Michael J. Spencer 1:f5ac63519541 425 if (feof(runfile) && mot->ready()) {
Michael J. Spencer 1:f5ac63519541 426 fclose(runfile);
Michael J. Spencer 1:f5ac63519541 427 runfile = NULL;
Michael J. Spencer 1:f5ac63519541 428 mot->moveTo(cfg->xrest, cfg->yrest, cfg->zrest);
Michael J. Spencer 1:f5ac63519541 429 screen=MAIN;
Michael J. Spencer 1:f5ac63519541 430 } else {
Michael J. Spencer 1:f5ac63519541 431 nodisplay = 1;
Michael J. Spencer 1:f5ac63519541 432 }
Michael J. Spencer 1:f5ac63519541 433 }
Michael J. Spencer 1:f5ac63519541 434 }
Michael J. Spencer 1:f5ac63519541 435 break;
Michael J. Spencer 1:f5ac63519541 436
Michael J. Spencer 1:f5ac63519541 437 default:
Michael J. Spencer 1:f5ac63519541 438 screen = MAIN;
Michael J. Spencer 1:f5ac63519541 439 break;
Michael J. Spencer 1:f5ac63519541 440 }
Michael J. Spencer 1:f5ac63519541 441 if (nodisplay == 0) {
Michael J. Spencer 1:f5ac63519541 442 dsp->ShowScreen(screens[screen], args, sarg);
Michael J. Spencer 1:f5ac63519541 443 }
Michael J. Spencer 1:f5ac63519541 444 prevscreen = screen;
Michael J. Spencer 1:f5ac63519541 445 }
Michael J. Spencer 1:f5ac63519541 446
Michael J. Spencer 1:f5ac63519541 447 }
Michael J. Spencer 1:f5ac63519541 448
Michael J. Spencer 1:f5ac63519541 449 void LaosMenu::SetFileName(char * name) {
Michael J. Spencer 1:f5ac63519541 450 strcpy(jobname, name);
Michael J. Spencer 1:f5ac63519541 451 }