Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@1:f5ac63519541, 2014-03-05 (annotated)
- Committer:
- Michael J. Spencer
- Date:
- Wed Mar 05 06:14:02 2014 -0800
- Revision:
- 1:f5ac63519541
- Child:
- 2:609dd3a73f33
Initial commit.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Michael J. Spencer |
1:f5ac63519541 | 1 | /* |
Michael J. Spencer |
1:f5ac63519541 | 2 | * main.cpp |
Michael J. Spencer |
1:f5ac63519541 | 3 | * Laos Controller, main function |
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 | * This program consists of a few parts: |
Michael J. Spencer |
1:f5ac63519541 | 23 | * |
Michael J. Spencer |
1:f5ac63519541 | 24 | * ConfigFile Read configuration files |
Michael J. Spencer |
1:f5ac63519541 | 25 | * EthConfig Initialize an ethernet stack, based on a configuration file (includes link status monitoring) |
Michael J. Spencer |
1:f5ac63519541 | 26 | * LaosDisplay User interface functions (read keys, display text and menus on LCD) |
Michael J. Spencer |
1:f5ac63519541 | 27 | * LaosMenu User interface stuctures (menu navigation) |
Michael J. Spencer |
1:f5ac63519541 | 28 | * LaosServer TCP/IP server, accept connections read/write data |
Michael J. Spencer |
1:f5ac63519541 | 29 | * LaosMotion Motion control functions (X,Y,Z motion, homing) |
Michael J. Spencer |
1:f5ac63519541 | 30 | * LaosIO Input/Output functions |
Michael J. Spencer |
1:f5ac63519541 | 31 | * LaosFile File based jobs (read/write/delete) |
Michael J. Spencer |
1:f5ac63519541 | 32 | * |
Michael J. Spencer |
1:f5ac63519541 | 33 | * Program functions: |
Michael J. Spencer |
1:f5ac63519541 | 34 | * 1) Read config file |
Michael J. Spencer |
1:f5ac63519541 | 35 | * 2) Enable TCP/IP stack (Fixed ip or DHCP) |
Michael J. Spencer |
1:f5ac63519541 | 36 | * 3) Instantiate tcp/ip port and accept connections |
Michael J. Spencer |
1:f5ac63519541 | 37 | * 4) Show menus, peform user actions |
Michael J. Spencer |
1:f5ac63519541 | 38 | * 5) Controll laser |
Michael J. Spencer |
1:f5ac63519541 | 39 | * 6) Controll motion |
Michael J. Spencer |
1:f5ac63519541 | 40 | * 7) Set and read IO, check status (e.g. interlocks) |
Michael J. Spencer |
1:f5ac63519541 | 41 | * |
Michael J. Spencer |
1:f5ac63519541 | 42 | */ |
Michael J. Spencer |
1:f5ac63519541 | 43 | |
Michael J. Spencer |
1:f5ac63519541 | 44 | // uncomment this to get debugging output in file parser |
Michael J. Spencer |
1:f5ac63519541 | 45 | // #define READ_FILE_DEBUG |
Michael J. Spencer |
1:f5ac63519541 | 46 | // #define READ_FILE_DEBUG_VERBOSE |
Michael J. Spencer |
1:f5ac63519541 | 47 | |
Michael J. Spencer |
1:f5ac63519541 | 48 | #include "global.h" |
Michael J. Spencer |
1:f5ac63519541 | 49 | #include "ConfigFile.h" |
Michael J. Spencer |
1:f5ac63519541 | 50 | #include "EthConfig.h" |
Michael J. Spencer |
1:f5ac63519541 | 51 | #include "TFTPServer.h" |
Michael J. Spencer |
1:f5ac63519541 | 52 | #include "LaosMenu.h" |
Michael J. Spencer |
1:f5ac63519541 | 53 | #include "LaosMotion.h" |
Michael J. Spencer |
1:f5ac63519541 | 54 | #include "SDFileSystem.h" |
Michael J. Spencer |
1:f5ac63519541 | 55 | #include "laosfilesystem.h" |
Michael J. Spencer |
1:f5ac63519541 | 56 | |
Michael J. Spencer |
1:f5ac63519541 | 57 | // MBED blue status leds |
Michael J. Spencer |
1:f5ac63519541 | 58 | DigitalOut led1(LED1); |
Michael J. Spencer |
1:f5ac63519541 | 59 | DigitalOut led2(LED2); |
Michael J. Spencer |
1:f5ac63519541 | 60 | DigitalOut led3(LED3); |
Michael J. Spencer |
1:f5ac63519541 | 61 | DigitalOut led4(LED4); |
Michael J. Spencer |
1:f5ac63519541 | 62 | |
Michael J. Spencer |
1:f5ac63519541 | 63 | // Status and communication |
Michael J. Spencer |
1:f5ac63519541 | 64 | DigitalOut eth_link(p29); // green |
Michael J. Spencer |
1:f5ac63519541 | 65 | DigitalOut eth_speed(p30); // yellow |
Michael J. Spencer |
1:f5ac63519541 | 66 | EthernetNetIf *eth; // Ethernet, tcp/ip |
Michael J. Spencer |
1:f5ac63519541 | 67 | |
Michael J. Spencer |
1:f5ac63519541 | 68 | // Filesystems |
Michael J. Spencer |
1:f5ac63519541 | 69 | LocalFileSystem local("local"); //File System |
Michael J. Spencer |
1:f5ac63519541 | 70 | LaosFileSystem sd(p11, p12, p13, p14, "sd"); |
Michael J. Spencer |
1:f5ac63519541 | 71 | |
Michael J. Spencer |
1:f5ac63519541 | 72 | // Laos objects |
Michael J. Spencer |
1:f5ac63519541 | 73 | LaosDisplay *dsp; |
Michael J. Spencer |
1:f5ac63519541 | 74 | LaosMenu *mnu; |
Michael J. Spencer |
1:f5ac63519541 | 75 | TFTPServer *srv; |
Michael J. Spencer |
1:f5ac63519541 | 76 | LaosMotion *mot; |
Michael J. Spencer |
1:f5ac63519541 | 77 | Timer systime; |
Michael J. Spencer |
1:f5ac63519541 | 78 | |
Michael J. Spencer |
1:f5ac63519541 | 79 | // Config |
Michael J. Spencer |
1:f5ac63519541 | 80 | GlobalConfig *cfg; |
Michael J. Spencer |
1:f5ac63519541 | 81 | |
Michael J. Spencer |
1:f5ac63519541 | 82 | // Protos |
Michael J. Spencer |
1:f5ac63519541 | 83 | void GetFile(void); |
Michael J. Spencer |
1:f5ac63519541 | 84 | void main_nodisplay(); |
Michael J. Spencer |
1:f5ac63519541 | 85 | void main_menu(); |
Michael J. Spencer |
1:f5ac63519541 | 86 | |
Michael J. Spencer |
1:f5ac63519541 | 87 | // for debugging: |
Michael J. Spencer |
1:f5ac63519541 | 88 | extern void plan_get_current_position_xyz(float *x, float *y, float *z); |
Michael J. Spencer |
1:f5ac63519541 | 89 | extern PwmOut pwm; |
Michael J. Spencer |
1:f5ac63519541 | 90 | extern "C" void mbed_reset(); |
Michael J. Spencer |
1:f5ac63519541 | 91 | |
Michael J. Spencer |
1:f5ac63519541 | 92 | /** |
Michael J. Spencer |
1:f5ac63519541 | 93 | *** Main function |
Michael J. Spencer |
1:f5ac63519541 | 94 | **/ |
Michael J. Spencer |
1:f5ac63519541 | 95 | int main() |
Michael J. Spencer |
1:f5ac63519541 | 96 | { |
Michael J. Spencer |
1:f5ac63519541 | 97 | systime.start(); |
Michael J. Spencer |
1:f5ac63519541 | 98 | //float x, y, z; |
Michael J. Spencer |
1:f5ac63519541 | 99 | eth_speed = 1; |
Michael J. Spencer |
1:f5ac63519541 | 100 | |
Michael J. Spencer |
1:f5ac63519541 | 101 | dsp = new LaosDisplay(); |
Michael J. Spencer |
1:f5ac63519541 | 102 | printf( VERSION_STRING "...\nBOOT...\n" ); |
Michael J. Spencer |
1:f5ac63519541 | 103 | mnu = new LaosMenu(dsp); |
Michael J. Spencer |
1:f5ac63519541 | 104 | eth_speed=0; |
Michael J. Spencer |
1:f5ac63519541 | 105 | |
Michael J. Spencer |
1:f5ac63519541 | 106 | printf("TEST SD...\n"); |
Michael J. Spencer |
1:f5ac63519541 | 107 | FILE *fp = sd.openfile("test.txt", "wb"); |
Michael J. Spencer |
1:f5ac63519541 | 108 | if ( fp == NULL ) |
Michael J. Spencer |
1:f5ac63519541 | 109 | { |
Michael J. Spencer |
1:f5ac63519541 | 110 | mnu->SetScreen("SD NOT READY!"); |
Michael J. Spencer |
1:f5ac63519541 | 111 | wait(2.0); |
Michael J. Spencer |
1:f5ac63519541 | 112 | mbed_reset(); |
Michael J. Spencer |
1:f5ac63519541 | 113 | } |
Michael J. Spencer |
1:f5ac63519541 | 114 | else |
Michael J. Spencer |
1:f5ac63519541 | 115 | { |
Michael J. Spencer |
1:f5ac63519541 | 116 | printf("SD: READY...\n"); |
Michael J. Spencer |
1:f5ac63519541 | 117 | fclose(fp); |
Michael J. Spencer |
1:f5ac63519541 | 118 | removefile("test.txt"); |
Michael J. Spencer |
1:f5ac63519541 | 119 | } |
Michael J. Spencer |
1:f5ac63519541 | 120 | |
Michael J. Spencer |
1:f5ac63519541 | 121 | // See if there's a .bin file on the SD |
Michael J. Spencer |
1:f5ac63519541 | 122 | // if so, put it on the MBED and reboot |
Michael J. Spencer |
1:f5ac63519541 | 123 | if (SDcheckFirmware()) mbed_reset(); |
Michael J. Spencer |
1:f5ac63519541 | 124 | |
Michael J. Spencer |
1:f5ac63519541 | 125 | mnu->SetScreen(VERSION_STRING); |
Michael J. Spencer |
1:f5ac63519541 | 126 | printf("START...\n"); |
Michael J. Spencer |
1:f5ac63519541 | 127 | cfg = new GlobalConfig("config.txt"); |
Michael J. Spencer |
1:f5ac63519541 | 128 | mnu->SetScreen("CONFIG OK...."); |
Michael J. Spencer |
1:f5ac63519541 | 129 | printf("CONFIG OK...\n"); |
Michael J. Spencer |
1:f5ac63519541 | 130 | if (!cfg->nodisplay) |
Michael J. Spencer |
1:f5ac63519541 | 131 | dsp->testI2C(); |
Michael J. Spencer |
1:f5ac63519541 | 132 | |
Michael J. Spencer |
1:f5ac63519541 | 133 | printf("MOTION...\n"); |
Michael J. Spencer |
1:f5ac63519541 | 134 | mot = new LaosMotion(); |
Michael J. Spencer |
1:f5ac63519541 | 135 | |
Michael J. Spencer |
1:f5ac63519541 | 136 | eth = EthConfig(); |
Michael J. Spencer |
1:f5ac63519541 | 137 | eth_speed=1; |
Michael J. Spencer |
1:f5ac63519541 | 138 | |
Michael J. Spencer |
1:f5ac63519541 | 139 | printf("SERVER...\n"); |
Michael J. Spencer |
1:f5ac63519541 | 140 | srv = new TFTPServer("/sd", cfg->port); |
Michael J. Spencer |
1:f5ac63519541 | 141 | mnu->SetScreen("SERVER OK...."); |
Michael J. Spencer |
1:f5ac63519541 | 142 | wait(0.5); |
Michael J. Spencer |
1:f5ac63519541 | 143 | mnu->SetScreen(9); // IP |
Michael J. Spencer |
1:f5ac63519541 | 144 | wait(1.0); |
Michael J. Spencer |
1:f5ac63519541 | 145 | |
Michael J. Spencer |
1:f5ac63519541 | 146 | printf("RUN...\n"); |
Michael J. Spencer |
1:f5ac63519541 | 147 | |
Michael J. Spencer |
1:f5ac63519541 | 148 | // Wait for key, and then home |
Michael J. Spencer |
1:f5ac63519541 | 149 | |
Michael J. Spencer |
1:f5ac63519541 | 150 | if ( cfg->autohome ) |
Michael J. Spencer |
1:f5ac63519541 | 151 | { |
Michael J. Spencer |
1:f5ac63519541 | 152 | printf("WAIT FOR COVER...\n"); |
Michael J. Spencer |
1:f5ac63519541 | 153 | wait(1); |
Michael J. Spencer |
1:f5ac63519541 | 154 | |
Michael J. Spencer |
1:f5ac63519541 | 155 | |
Michael J. Spencer |
1:f5ac63519541 | 156 | // Start homing |
Michael J. Spencer |
1:f5ac63519541 | 157 | mnu->SetScreen("WAIT FOR COVER...."); |
Michael J. Spencer |
1:f5ac63519541 | 158 | //if ( cfg->waitforstart ) |
Michael J. Spencer |
1:f5ac63519541 | 159 | while ( !mot->isStart() ); |
Michael J. Spencer |
1:f5ac63519541 | 160 | mnu->SetScreen("HOME...."); |
Michael J. Spencer |
1:f5ac63519541 | 161 | printf("HOME...\n"); |
Michael J. Spencer |
1:f5ac63519541 | 162 | |
Michael J. Spencer |
1:f5ac63519541 | 163 | mot->home(cfg->xhome,cfg->yhome, cfg->zhome); |
Michael J. Spencer |
1:f5ac63519541 | 164 | // if ( !mot->isHome ) exit(1); |
Michael J. Spencer |
1:f5ac63519541 | 165 | printf("HOME DONE. (%d,%d, %d)\n",cfg->xhome,cfg->yhome,cfg->zhome); |
Michael J. Spencer |
1:f5ac63519541 | 166 | } |
Michael J. Spencer |
1:f5ac63519541 | 167 | else |
Michael J. Spencer |
1:f5ac63519541 | 168 | printf("Homing skipped: %d\n", cfg->autohome); |
Michael J. Spencer |
1:f5ac63519541 | 169 | |
Michael J. Spencer |
1:f5ac63519541 | 170 | // clean sd card? |
Michael J. Spencer |
1:f5ac63519541 | 171 | if (cfg->cleandir) cleandir(); |
Michael J. Spencer |
1:f5ac63519541 | 172 | mnu->SetScreen(NULL); |
Michael J. Spencer |
1:f5ac63519541 | 173 | |
Michael J. Spencer |
1:f5ac63519541 | 174 | if (cfg->nodisplay) { |
Michael J. Spencer |
1:f5ac63519541 | 175 | printf("No display set\n\r"); |
Michael J. Spencer |
1:f5ac63519541 | 176 | main_nodisplay(); |
Michael J. Spencer |
1:f5ac63519541 | 177 | } else { |
Michael J. Spencer |
1:f5ac63519541 | 178 | printf("Entering display\n\r"); |
Michael J. Spencer |
1:f5ac63519541 | 179 | main_menu(); |
Michael J. Spencer |
1:f5ac63519541 | 180 | } |
Michael J. Spencer |
1:f5ac63519541 | 181 | } |
Michael J. Spencer |
1:f5ac63519541 | 182 | |
Michael J. Spencer |
1:f5ac63519541 | 183 | void main_nodisplay() { |
Michael J. Spencer |
1:f5ac63519541 | 184 | float x, y, z = 0; |
Michael J. Spencer |
1:f5ac63519541 | 185 | |
Michael J. Spencer |
1:f5ac63519541 | 186 | // main loop |
Michael J. Spencer |
1:f5ac63519541 | 187 | while(1) |
Michael J. Spencer |
1:f5ac63519541 | 188 | { |
Michael J. Spencer |
1:f5ac63519541 | 189 | led1=led2=led3=led4=0; |
Michael J. Spencer |
1:f5ac63519541 | 190 | mnu->SetScreen("Wait for file ..."); |
Michael J. Spencer |
1:f5ac63519541 | 191 | while (srv->State() == listen) |
Michael J. Spencer |
1:f5ac63519541 | 192 | Net::poll(); |
Michael J. Spencer |
1:f5ac63519541 | 193 | GetFile(); |
Michael J. Spencer |
1:f5ac63519541 | 194 | mot->reset(); |
Michael J. Spencer |
1:f5ac63519541 | 195 | plan_get_current_position_xyz(&x, &y, &z); |
Michael J. Spencer |
1:f5ac63519541 | 196 | printf("%f %f\n", x,y); |
Michael J. Spencer |
1:f5ac63519541 | 197 | mnu->SetScreen("Laser BUSY..."); |
Michael J. Spencer |
1:f5ac63519541 | 198 | |
Michael J. Spencer |
1:f5ac63519541 | 199 | char name[32]; |
Michael J. Spencer |
1:f5ac63519541 | 200 | srv->getFilename(name); |
Michael J. Spencer |
1:f5ac63519541 | 201 | printf("Now processing file: '%s'\n\r", name); |
Michael J. Spencer |
1:f5ac63519541 | 202 | FILE *in = sd.openfile(name, "r"); |
Michael J. Spencer |
1:f5ac63519541 | 203 | while (!feof(in)) |
Michael J. Spencer |
1:f5ac63519541 | 204 | { |
Michael J. Spencer |
1:f5ac63519541 | 205 | while (!mot->ready() ); |
Michael J. Spencer |
1:f5ac63519541 | 206 | mot->write(readint(in)); |
Michael J. Spencer |
1:f5ac63519541 | 207 | } |
Michael J. Spencer |
1:f5ac63519541 | 208 | fclose(in); |
Michael J. Spencer |
1:f5ac63519541 | 209 | removefile(name); |
Michael J. Spencer |
1:f5ac63519541 | 210 | // done |
Michael J. Spencer |
1:f5ac63519541 | 211 | printf("DONE!...\n"); |
Michael J. Spencer |
1:f5ac63519541 | 212 | while (!mot->ready() ); |
Michael J. Spencer |
1:f5ac63519541 | 213 | mot->moveTo(cfg->xrest, cfg->yrest, cfg->zrest); |
Michael J. Spencer |
1:f5ac63519541 | 214 | } |
Michael J. Spencer |
1:f5ac63519541 | 215 | } |
Michael J. Spencer |
1:f5ac63519541 | 216 | |
Michael J. Spencer |
1:f5ac63519541 | 217 | |
Michael J. Spencer |
1:f5ac63519541 | 218 | void main_menu() { |
Michael J. Spencer |
1:f5ac63519541 | 219 | // main loop |
Michael J. Spencer |
1:f5ac63519541 | 220 | while (1) { |
Michael J. Spencer |
1:f5ac63519541 | 221 | led1=led2=led3=led4=0; |
Michael J. Spencer |
1:f5ac63519541 | 222 | |
Michael J. Spencer |
1:f5ac63519541 | 223 | mnu->SetScreen(1); |
Michael J. Spencer |
1:f5ac63519541 | 224 | while (1) {; |
Michael J. Spencer |
1:f5ac63519541 | 225 | mnu->Handle(); |
Michael J. Spencer |
1:f5ac63519541 | 226 | Net::poll(); |
Michael J. Spencer |
1:f5ac63519541 | 227 | if (srv->State() != listen) { |
Michael J. Spencer |
1:f5ac63519541 | 228 | GetFile(); |
Michael J. Spencer |
1:f5ac63519541 | 229 | char myname[32]; |
Michael J. Spencer |
1:f5ac63519541 | 230 | srv->getFilename(myname); |
Michael J. Spencer |
1:f5ac63519541 | 231 | if (isFirmware(myname)) { |
Michael J. Spencer |
1:f5ac63519541 | 232 | installFirmware(myname); |
Michael J. Spencer |
1:f5ac63519541 | 233 | mnu->SetScreen(1); |
Michael J. Spencer |
1:f5ac63519541 | 234 | } else { |
Michael J. Spencer |
1:f5ac63519541 | 235 | if (strcmp("config.txt", myname) == 0) { |
Michael J. Spencer |
1:f5ac63519541 | 236 | // it's a config file! |
Michael J. Spencer |
1:f5ac63519541 | 237 | mnu->SetScreen(1); |
Michael J. Spencer |
1:f5ac63519541 | 238 | } else { |
Michael J. Spencer |
1:f5ac63519541 | 239 | if (isLaosFile(myname)) { |
Michael J. Spencer |
1:f5ac63519541 | 240 | mnu->SetFileName(myname); |
Michael J. Spencer |
1:f5ac63519541 | 241 | mnu->SetScreen(2); |
Michael J. Spencer |
1:f5ac63519541 | 242 | } |
Michael J. Spencer |
1:f5ac63519541 | 243 | } |
Michael J. Spencer |
1:f5ac63519541 | 244 | } |
Michael J. Spencer |
1:f5ac63519541 | 245 | } |
Michael J. Spencer |
1:f5ac63519541 | 246 | } |
Michael J. Spencer |
1:f5ac63519541 | 247 | } |
Michael J. Spencer |
1:f5ac63519541 | 248 | } |
Michael J. Spencer |
1:f5ac63519541 | 249 | |
Michael J. Spencer |
1:f5ac63519541 | 250 | /** |
Michael J. Spencer |
1:f5ac63519541 | 251 | *** Get file from network and save on SDcard |
Michael J. Spencer |
1:f5ac63519541 | 252 | *** Ascii data is read from the network, and saved on the SD card in binary int32 format |
Michael J. Spencer |
1:f5ac63519541 | 253 | **/ |
Michael J. Spencer |
1:f5ac63519541 | 254 | void GetFile(void) { |
Michael J. Spencer |
1:f5ac63519541 | 255 | Timer t; |
Michael J. Spencer |
1:f5ac63519541 | 256 | printf("Main::GetFile()\n\r" ); |
Michael J. Spencer |
1:f5ac63519541 | 257 | mnu->SetScreen("Receive file..."); |
Michael J. Spencer |
1:f5ac63519541 | 258 | t.start(); |
Michael J. Spencer |
1:f5ac63519541 | 259 | while (srv->State() != listen) { |
Michael J. Spencer |
1:f5ac63519541 | 260 | Net::poll(); |
Michael J. Spencer |
1:f5ac63519541 | 261 | switch ((int)t.read()) { |
Michael J. Spencer |
1:f5ac63519541 | 262 | case 1: |
Michael J. Spencer |
1:f5ac63519541 | 263 | mnu->SetScreen("Receive file"); |
Michael J. Spencer |
1:f5ac63519541 | 264 | break; |
Michael J. Spencer |
1:f5ac63519541 | 265 | case 2: |
Michael J. Spencer |
1:f5ac63519541 | 266 | mnu->SetScreen("Receive file."); |
Michael J. Spencer |
1:f5ac63519541 | 267 | break; |
Michael J. Spencer |
1:f5ac63519541 | 268 | case 3: |
Michael J. Spencer |
1:f5ac63519541 | 269 | mnu->SetScreen("Receive file.."); |
Michael J. Spencer |
1:f5ac63519541 | 270 | break; |
Michael J. Spencer |
1:f5ac63519541 | 271 | case 4: |
Michael J. Spencer |
1:f5ac63519541 | 272 | mnu->SetScreen("Receive file..."); |
Michael J. Spencer |
1:f5ac63519541 | 273 | t.reset(); |
Michael J. Spencer |
1:f5ac63519541 | 274 | break; |
Michael J. Spencer |
1:f5ac63519541 | 275 | } |
Michael J. Spencer |
1:f5ac63519541 | 276 | } |
Michael J. Spencer |
1:f5ac63519541 | 277 | mnu->SetScreen("Received file."); |
Michael J. Spencer |
1:f5ac63519541 | 278 | } // GetFile |
Michael J. Spencer |
1:f5ac63519541 | 279 |