MMEx with SPI Slave to allow legacy devices to communicate with modern media such as USB, SD cards, the internet and all of the mbed\'s other interfaces

Dependencies:   NetServices MSCUsbHost mbed TMP102 SDFileSystem

Committer:
DeMein
Date:
Sun Feb 27 18:54:40 2011 +0000
Revision:
0:67a55a82ce06
Version as submitted to the NXP Design Challenge

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DeMein 0:67a55a82ce06 1 /* MMEx for MBED - MBED specific command processing
DeMein 0:67a55a82ce06 2 * Copyright (c) 2011 MK
DeMein 0:67a55a82ce06 3 *
DeMein 0:67a55a82ce06 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
DeMein 0:67a55a82ce06 5 * of this software and associated documentation files (the "Software"), to deal
DeMein 0:67a55a82ce06 6 * in the Software without restriction, including without limitation the rights
DeMein 0:67a55a82ce06 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
DeMein 0:67a55a82ce06 8 * copies of the Software, and to permit persons to whom the Software is
DeMein 0:67a55a82ce06 9 * furnished to do so, subject to the following conditions:
DeMein 0:67a55a82ce06 10 *
DeMein 0:67a55a82ce06 11 * The above copyright notice and this permission notice shall be included in
DeMein 0:67a55a82ce06 12 * all copies or substantial portions of the Software.
DeMein 0:67a55a82ce06 13 *
DeMein 0:67a55a82ce06 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
DeMein 0:67a55a82ce06 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
DeMein 0:67a55a82ce06 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
DeMein 0:67a55a82ce06 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
DeMein 0:67a55a82ce06 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
DeMein 0:67a55a82ce06 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
DeMein 0:67a55a82ce06 20 * THE SOFTWARE.
DeMein 0:67a55a82ce06 21 */
DeMein 0:67a55a82ce06 22
DeMein 0:67a55a82ce06 23 /**
DeMein 0:67a55a82ce06 24 \file mfuncs.cpp
DeMein 0:67a55a82ce06 25 \brief Commands starting with M for MBED features
DeMein 0:67a55a82ce06 26 */
DeMein 0:67a55a82ce06 27
DeMein 0:67a55a82ce06 28 #include "mfuncs.h"
DeMein 0:67a55a82ce06 29
DeMein 0:67a55a82ce06 30 /** main entry for parsing M-commands
DeMein 0:67a55a82ce06 31 *
DeMein 0:67a55a82ce06 32 */
DeMein 0:67a55a82ce06 33 void parse_M() {
DeMein 0:67a55a82ce06 34 // process M-commands for mbed
DeMein 0:67a55a82ce06 35 DBG_msg("parse_M", inbuf);
DeMein 0:67a55a82ce06 36 err_num = noerror;
DeMein 0:67a55a82ce06 37
DeMein 0:67a55a82ce06 38 wipesp(inbuf); // remove all spaces from string
DeMein 0:67a55a82ce06 39
DeMein 0:67a55a82ce06 40 if (inbuf[1] != NULL) {
DeMein 0:67a55a82ce06 41 switch (inbuf[1]) {
DeMein 0:67a55a82ce06 42 case mled : do_mled(); // control LED's
DeMein 0:67a55a82ce06 43 break;
DeMein 0:67a55a82ce06 44 case mversion : do_mversion(); // get version string
DeMein 0:67a55a82ce06 45 break;
DeMein 0:67a55a82ce06 46 case mwelcome : do_mwelcome(); // get welcome string
DeMein 0:67a55a82ce06 47 break;
DeMein 0:67a55a82ce06 48 case mstatus : do_mstatus(); // get MMex status
DeMein 0:67a55a82ce06 49 break;
DeMein 0:67a55a82ce06 50 case mdebug : do_mdebug(); // control DEBUG level
DeMein 0:67a55a82ce06 51 break;
DeMein 0:67a55a82ce06 52 case merror : do_merror(); // get latest error message
DeMein 0:67a55a82ce06 53 break;
DeMein 0:67a55a82ce06 54 case mbaud : do_mbaud(); // set console baud rate
DeMein 0:67a55a82ce06 55 break;
DeMein 0:67a55a82ce06 56 case mcase : do_mcase();
DeMein 0:67a55a82ce06 57 break;
DeMein 0:67a55a82ce06 58 case mtime : do_mtime();
DeMein 0:67a55a82ce06 59 break;
DeMein 0:67a55a82ce06 60 case mreset : do_mreset(); // reset mbed
DeMein 0:67a55a82ce06 61 break;
DeMein 0:67a55a82ce06 62 default : do_mdefault(); // command not recognized
DeMein 0:67a55a82ce06 63 break;
DeMein 0:67a55a82ce06 64 }
DeMein 0:67a55a82ce06 65 } else { do_mdefault(); }
DeMein 0:67a55a82ce06 66 }
DeMein 0:67a55a82ce06 67
DeMein 0:67a55a82ce06 68 /** control/read MBED led status
DeMein 0:67a55a82ce06 69 *
DeMein 0:67a55a82ce06 70 * syntax: ML[number][value]<CR>
DeMein 0:67a55a82ce06 71 * \n [number]: 1, 2, 3, 4, LED number
DeMein 0:67a55a82ce06 72 * \n [value] : 0 (off), 1(ON), T(toggle), R(read)
DeMein 0:67a55a82ce06 73 */
DeMein 0:67a55a82ce06 74 void do_mled() {
DeMein 0:67a55a82ce06 75 DBG_msg("mled", inbuf);
DeMein 0:67a55a82ce06 76 if ((inbuf[2] != NULL) && (inbuf[3] != NULL)) {
DeMein 0:67a55a82ce06 77 // we have enough arguments
DeMein 0:67a55a82ce06 78 switch (inbuf[3]) {
DeMein 0:67a55a82ce06 79 case ledon :
DeMein 0:67a55a82ce06 80 switch (inbuf[2]) {
DeMein 0:67a55a82ce06 81 case '1' : _led1.write(1); break;
DeMein 0:67a55a82ce06 82 case '2' : _led2.write(1); break;
DeMein 0:67a55a82ce06 83 case '3' : _led3.write(1); break;
DeMein 0:67a55a82ce06 84 case '4' : _led4.write(1); break;
DeMein 0:67a55a82ce06 85 default : do_mdefault(); break;
DeMein 0:67a55a82ce06 86 }
DeMein 0:67a55a82ce06 87 break;
DeMein 0:67a55a82ce06 88
DeMein 0:67a55a82ce06 89 case ledoff :
DeMein 0:67a55a82ce06 90 switch (inbuf[2]) {
DeMein 0:67a55a82ce06 91 case '1' : _led1.write(0); break;
DeMein 0:67a55a82ce06 92 case '2' : _led2.write(0); break;
DeMein 0:67a55a82ce06 93 case '3' : _led3.write(0); break;
DeMein 0:67a55a82ce06 94 case '4' : _led4.write(0); break;
DeMein 0:67a55a82ce06 95 default : do_mdefault(); break;
DeMein 0:67a55a82ce06 96 }
DeMein 0:67a55a82ce06 97 break;
DeMein 0:67a55a82ce06 98
DeMein 0:67a55a82ce06 99 case ledtog :
DeMein 0:67a55a82ce06 100 switch (inbuf[2]) {
DeMein 0:67a55a82ce06 101 case '1' : _led1 = !_led1; break;
DeMein 0:67a55a82ce06 102 case '2' : _led2 = !_led2; break;
DeMein 0:67a55a82ce06 103 case '3' : _led3 = !_led3; break;
DeMein 0:67a55a82ce06 104 case '4' : _led4 = !_led4; break;
DeMein 0:67a55a82ce06 105 default : do_mdefault(); break;
DeMein 0:67a55a82ce06 106 }
DeMein 0:67a55a82ce06 107 break;
DeMein 0:67a55a82ce06 108
DeMein 0:67a55a82ce06 109 case ledread :
DeMein 0:67a55a82ce06 110 switch (inbuf[2]) {
DeMein 0:67a55a82ce06 111 case '1' : send_int(_led1); break;
DeMein 0:67a55a82ce06 112 case '2' : send_int(_led2); break;
DeMein 0:67a55a82ce06 113 case '3' : send_int(_led3); break;
DeMein 0:67a55a82ce06 114 case '4' : send_int(_led4); break;
DeMein 0:67a55a82ce06 115 default : do_mdefault(); break;
DeMein 0:67a55a82ce06 116 }
DeMein 0:67a55a82ce06 117 break;
DeMein 0:67a55a82ce06 118
DeMein 0:67a55a82ce06 119 default : do_mdefault();
DeMein 0:67a55a82ce06 120 break;
DeMein 0:67a55a82ce06 121 }
DeMein 0:67a55a82ce06 122 } else { do_mdefault(); }
DeMein 0:67a55a82ce06 123 }
DeMein 0:67a55a82ce06 124
DeMein 0:67a55a82ce06 125 /** Read MMEx version information
DeMein 0:67a55a82ce06 126 *
DeMein 0:67a55a82ce06 127 * syntax: MV<CR>
DeMein 0:67a55a82ce06 128 *
DeMein 0:67a55a82ce06 129 */
DeMein 0:67a55a82ce06 130 void do_mversion() {
DeMein 0:67a55a82ce06 131 DBG_msg("mversion", inbuf);
DeMein 0:67a55a82ce06 132 char str[] = msg_version;
DeMein 0:67a55a82ce06 133 upstring(str);
DeMein 0:67a55a82ce06 134 mldl.tx_string(str);
DeMein 0:67a55a82ce06 135 }
DeMein 0:67a55a82ce06 136
DeMein 0:67a55a82ce06 137 /** Read MMEx welcome message
DeMein 0:67a55a82ce06 138 *
DeMein 0:67a55a82ce06 139 * syntax: MW<CR>
DeMein 0:67a55a82ce06 140 *
DeMein 0:67a55a82ce06 141 */
DeMein 0:67a55a82ce06 142 void do_mwelcome() {
DeMein 0:67a55a82ce06 143 DBG_msg("mwelcome", inbuf);
DeMein 0:67a55a82ce06 144 welcome();
DeMein 0:67a55a82ce06 145 }
DeMein 0:67a55a82ce06 146
DeMein 0:67a55a82ce06 147 /** Read MMEx status message
DeMein 0:67a55a82ce06 148 *
DeMein 0:67a55a82ce06 149 * syntax: MS<CR>
DeMein 0:67a55a82ce06 150 *
DeMein 0:67a55a82ce06 151 */
DeMein 0:67a55a82ce06 152 void do_mstatus() {
DeMein 0:67a55a82ce06 153 DBG_msg("mstatus", inbuf);
DeMein 0:67a55a82ce06 154 send_status();
DeMein 0:67a55a82ce06 155 }
DeMein 0:67a55a82ce06 156
DeMein 0:67a55a82ce06 157 /** Set MMEx debug level
DeMein 0:67a55a82ce06 158 *
DeMein 0:67a55a82ce06 159 * syntax: MD[value]<CR>
DeMein 0:67a55a82ce06 160 * \n [value]: 0 no debug output
DeMein 0:67a55a82ce06 161 * \n [value]: 1 high level debug messages
DeMein 0:67a55a82ce06 162 * \n [value]: 2 like 1, including SPI straffic
DeMein 0:67a55a82ce06 163 *
DeMein 0:67a55a82ce06 164 */
DeMein 0:67a55a82ce06 165 void do_mdebug() {
DeMein 0:67a55a82ce06 166 DBG_msg("mdebug", inbuf);
DeMein 0:67a55a82ce06 167 if (inbuf[2] != NULL) {
DeMein 0:67a55a82ce06 168 // we have enough arguments
DeMein 0:67a55a82ce06 169 switch (inbuf[2]) {
DeMein 0:67a55a82ce06 170 case '0' : DBG_level = DBG_OFF;
DeMein 0:67a55a82ce06 171 mldl.DBG_set(DBG_OFF);
DeMein 0:67a55a82ce06 172 // now redirect stderr to NULL
DeMein 0:67a55a82ce06 173 freopen(NULL, "w", stderr);
DeMein 0:67a55a82ce06 174 freopen(NULL, "w", stdout);
DeMein 0:67a55a82ce06 175 break;
DeMein 0:67a55a82ce06 176 case '1' : DBG_level = DBG_ON;
DeMein 0:67a55a82ce06 177 mldl.DBG_set(DBG_ON);
DeMein 0:67a55a82ce06 178 //restore sterr and stdout
DeMein 0:67a55a82ce06 179 freopen("/pc", "w", stderr);
DeMein 0:67a55a82ce06 180 freopen("/pc", "w", stdout);
DeMein 0:67a55a82ce06 181 break;
DeMein 0:67a55a82ce06 182 case '2' : DBG_level = DBG_FULL;
DeMein 0:67a55a82ce06 183 mldl.DBG_set(DBG_FULL);
DeMein 0:67a55a82ce06 184 //restore sterr and stdout
DeMein 0:67a55a82ce06 185 freopen("/pc", "w", stderr);
DeMein 0:67a55a82ce06 186 freopen("/pc", "w", stdout);
DeMein 0:67a55a82ce06 187 break;
DeMein 0:67a55a82ce06 188 default : do_mdefault();
DeMein 0:67a55a82ce06 189 break;
DeMein 0:67a55a82ce06 190 }
DeMein 0:67a55a82ce06 191 } else { do_mdefault(); }
DeMein 0:67a55a82ce06 192 }
DeMein 0:67a55a82ce06 193
DeMein 0:67a55a82ce06 194 /** get latest error number
DeMein 0:67a55a82ce06 195 *
DeMein 0:67a55a82ce06 196 * syntax: ME<CR>
DeMein 0:67a55a82ce06 197 *
DeMein 0:67a55a82ce06 198 */
DeMein 0:67a55a82ce06 199 void do_merror() {
DeMein 0:67a55a82ce06 200 // get latest error message
DeMein 0:67a55a82ce06 201 DBG_msg("do_merror", inbuf);
DeMein 0:67a55a82ce06 202 send_2int(last_err);
DeMein 0:67a55a82ce06 203 last_err = 0; // clear after reading
DeMein 0:67a55a82ce06 204 }
DeMein 0:67a55a82ce06 205
DeMein 0:67a55a82ce06 206 /** set console (UBSB) baud rate
DeMein 0:67a55a82ce06 207 *
DeMein 0:67a55a82ce06 208 * syntax: MB[value]<CR>
DeMein 0:67a55a82ce06 209 * \n [value]: new baud rate
DeMein 0:67a55a82ce06 210 *
DeMein 0:67a55a82ce06 211 */
DeMein 0:67a55a82ce06 212 void do_mbaud() {
DeMein 0:67a55a82ce06 213 long int baud = 0;
DeMein 0:67a55a82ce06 214
DeMein 0:67a55a82ce06 215 DBG_msg("do_mbaud", inbuf);
DeMein 0:67a55a82ce06 216
DeMein 0:67a55a82ce06 217 // next chars on the commandline is the baud rate
DeMein 0:67a55a82ce06 218 if (inbuf[2] != NULL) {
DeMein 0:67a55a82ce06 219 // now process line
DeMein 0:67a55a82ce06 220 for (int i = 2; ((inbuf[i] >='0') && (inbuf[i] <= '9')); i++ ) {
DeMein 0:67a55a82ce06 221 baud = 10 * baud + (inbuf[i] - '0');
DeMein 0:67a55a82ce06 222 }
DeMein 0:67a55a82ce06 223 }
DeMein 0:67a55a82ce06 224 if (baud == 0) {
DeMein 0:67a55a82ce06 225 DBG_msg("do_mbaud", "invalid baud rate");
DeMein 0:67a55a82ce06 226 send_error(err_notrecognized);
DeMein 0:67a55a82ce06 227 } else {
DeMein 0:67a55a82ce06 228 // now set baud rate
DeMein 0:67a55a82ce06 229 DBG_int("set baudrate", baud);
DeMein 0:67a55a82ce06 230 pc.baud(baud);
DeMein 0:67a55a82ce06 231 }
DeMein 0:67a55a82ce06 232 }
DeMein 0:67a55a82ce06 233
DeMein 0:67a55a82ce06 234 /** set case for output of text commands
DeMein 0:67a55a82ce06 235 *
DeMein 0:67a55a82ce06 236 * syntax: MC[value]<CR>
DeMein 0:67a55a82ce06 237 * \n [value]: U all output upper case
DeMein 0:67a55a82ce06 238 * \n [value]: N no change to output (or any other value)
DeMein 0:67a55a82ce06 239 *
DeMein 0:67a55a82ce06 240 */
DeMein 0:67a55a82ce06 241 void do_mcase() {
DeMein 0:67a55a82ce06 242 DBG_msg("do_mcase", inbuf);
DeMein 0:67a55a82ce06 243
DeMein 0:67a55a82ce06 244 // next char on commandline is 'U'
DeMein 0:67a55a82ce06 245 upcase = false; // default value
DeMein 0:67a55a82ce06 246 if (inbuf[2] == ucase ) {
DeMein 0:67a55a82ce06 247 upcase = true; // change default if 'U'
DeMein 0:67a55a82ce06 248 DBG_msg("do_mcase", "change to uppercase");
DeMein 0:67a55a82ce06 249 } else {
DeMein 0:67a55a82ce06 250 DBG_msg("do_mcase", "no change");
DeMein 0:67a55a82ce06 251 }
DeMein 0:67a55a82ce06 252 }
DeMein 0:67a55a82ce06 253
DeMein 0:67a55a82ce06 254 /** get or set the MBED RTC time
DeMein 0:67a55a82ce06 255 *
DeMein 0:67a55a82ce06 256 * syntax: MT<CR> return the current time set in the RTC in date format
DeMein 0:67a55a82ce06 257 * \n MTS<CR> return the current time in seconds
DeMein 0:67a55a82ce06 258 * \n MT[value]<CR> set the time in date format
DeMein 0:67a55a82ce06 259 * \n MTS[value]<CR> set the current time in seconds
DeMein 0:67a55a82ce06 260 * \n date format is [year][month][day][hour][minute][second], all 2 digits,
DeMein 0:67a55a82ce06 261 * \n year is 4 digits
DeMein 0:67a55a82ce06 262 * \n seconds format is number of seconds since Jan 1, 1970 (Unix convention)
DeMein 0:67a55a82ce06 263 */
DeMein 0:67a55a82ce06 264 void do_mtime() {
DeMein 0:67a55a82ce06 265 bool secs = false;
DeMein 0:67a55a82ce06 266 time_t seconds;
DeMein 0:67a55a82ce06 267 struct tm t; // for YYYYMMDDHHMMSS format
DeMein 0:67a55a82ce06 268
DeMein 0:67a55a82ce06 269
DeMein 0:67a55a82ce06 270 char s[40]; // to hold output string
DeMein 0:67a55a82ce06 271 int i = 2;
DeMein 0:67a55a82ce06 272 DBG_msg("do_mtime", inbuf);
DeMein 0:67a55a82ce06 273
DeMein 0:67a55a82ce06 274 if (inbuf[2] == 'S') {
DeMein 0:67a55a82ce06 275 secs = true; // seconds mode
DeMein 0:67a55a82ce06 276 i = 3; // char counter for time value
DeMein 0:67a55a82ce06 277 }
DeMein 0:67a55a82ce06 278
DeMein 0:67a55a82ce06 279 // check if there is a parameter, if so read it
DeMein 0:67a55a82ce06 280 if (inbuf[i] == NULL) {
DeMein 0:67a55a82ce06 281 // no parameter, return current time
DeMein 0:67a55a82ce06 282 seconds = time(NULL); // get current time
DeMein 0:67a55a82ce06 283 if (!secs) {
DeMein 0:67a55a82ce06 284 // translate to YYYYMMDDHHMMSS
DeMein 0:67a55a82ce06 285 t = *localtime(&seconds);
DeMein 0:67a55a82ce06 286 sprintf(s, "%04d%02d%02d%02d%02d%02d",
DeMein 0:67a55a82ce06 287 t.tm_year + 1900, t.tm_mon + 1, t.tm_mday,
DeMein 0:67a55a82ce06 288 t.tm_hour, t.tm_min, t.tm_sec);
DeMein 0:67a55a82ce06 289 DBG_msg("read time", s);
DeMein 0:67a55a82ce06 290 mldl.tx_string(s);
DeMein 0:67a55a82ce06 291 } else {
DeMein 0:67a55a82ce06 292 sprintf(s, "%d", seconds);
DeMein 0:67a55a82ce06 293 DBG_msg("read time", s);
DeMein 0:67a55a82ce06 294 mldl.tx_string(s);
DeMein 0:67a55a82ce06 295 }
DeMein 0:67a55a82ce06 296
DeMein 0:67a55a82ce06 297 } else {
DeMein 0:67a55a82ce06 298 // set time from input
DeMein 0:67a55a82ce06 299 if (secs) {
DeMein 0:67a55a82ce06 300 // seconds format
DeMein 0:67a55a82ce06 301 seconds = 0;
DeMein 0:67a55a82ce06 302 while ((inbuf[i] != NULL) && (inbuf[i] >= '0') && (inbuf[i] <= '9')) {
DeMein 0:67a55a82ce06 303 seconds = (10 * seconds) + (inbuf[i] - '0');
DeMein 0:67a55a82ce06 304 i++;
DeMein 0:67a55a82ce06 305 }
DeMein 0:67a55a82ce06 306 sprintf(s, "%d", seconds);
DeMein 0:67a55a82ce06 307 DBG_msg("set time", s);
DeMein 0:67a55a82ce06 308 } else {
DeMein 0:67a55a82ce06 309 // YYYYMMDDHHMMSS format
DeMein 0:67a55a82ce06 310 DBG_msg("set time", inbuf);
DeMein 0:67a55a82ce06 311 int j = 0;
DeMein 0:67a55a82ce06 312 for (j = 0; j < 39; j++) s[j] = '0';
DeMein 0:67a55a82ce06 313 s[39] = NULL;
DeMein 0:67a55a82ce06 314 j = 0;
DeMein 0:67a55a82ce06 315 while ((inbuf[i] != NULL) && (inbuf[i] >= '0') && (inbuf[i] <= '9')) {
DeMein 0:67a55a82ce06 316 s[j] = inbuf[i];
DeMein 0:67a55a82ce06 317 i++;
DeMein 0:67a55a82ce06 318 j++;
DeMein 0:67a55a82ce06 319 }
DeMein 0:67a55a82ce06 320 DBG_msg("set time s", s);
DeMein 0:67a55a82ce06 321 i = 1000 * (s[ 0] - '0') + 100 * (s[ 1] - '0') + 10 * (s[ 1] - '0') + (s[ 3] - '0');
DeMein 0:67a55a82ce06 322 t.tm_year = i - 1900;
DeMein 0:67a55a82ce06 323
DeMein 0:67a55a82ce06 324 i = 10 * (s[ 4] - '0') + (s[ 5] - '0');
DeMein 0:67a55a82ce06 325 t.tm_mon = i - 1;
DeMein 0:67a55a82ce06 326
DeMein 0:67a55a82ce06 327 i = 10 * (s[ 6] - '0') + (s[ 7] - '0');;
DeMein 0:67a55a82ce06 328 t.tm_mday = i;
DeMein 0:67a55a82ce06 329
DeMein 0:67a55a82ce06 330 i = 10 * (s[ 8] - '0') + (s[ 9] - '0');
DeMein 0:67a55a82ce06 331 t.tm_hour = i;
DeMein 0:67a55a82ce06 332
DeMein 0:67a55a82ce06 333 i = 10 * (s[10] - '0') + (s[11] - '0');
DeMein 0:67a55a82ce06 334 t.tm_min = i;
DeMein 0:67a55a82ce06 335
DeMein 0:67a55a82ce06 336 i = 10 * (s[10] - '0') + (s[11] - '0');
DeMein 0:67a55a82ce06 337 t.tm_sec = i;
DeMein 0:67a55a82ce06 338
DeMein 0:67a55a82ce06 339 seconds = mktime(&t);
DeMein 0:67a55a82ce06 340
DeMein 0:67a55a82ce06 341 }
DeMein 0:67a55a82ce06 342 set_time(seconds);
DeMein 0:67a55a82ce06 343 }
DeMein 0:67a55a82ce06 344 }
DeMein 0:67a55a82ce06 345
DeMein 0:67a55a82ce06 346 /** (soft) reset the MBED module
DeMein 0:67a55a82ce06 347 *
DeMein 0:67a55a82ce06 348 * syntax: MR<CR>
DeMein 0:67a55a82ce06 349 *
DeMein 0:67a55a82ce06 350 */
DeMein 0:67a55a82ce06 351 void do_mreset() {
DeMein 0:67a55a82ce06 352 DBG_msg("do_mreset", inbuf);
DeMein 0:67a55a82ce06 353 mbed_reset();
DeMein 0:67a55a82ce06 354 }
DeMein 0:67a55a82ce06 355
DeMein 0:67a55a82ce06 356 /** send error message, command not recognized
DeMein 0:67a55a82ce06 357 *
DeMein 0:67a55a82ce06 358 */
DeMein 0:67a55a82ce06 359 void do_mdefault() {
DeMein 0:67a55a82ce06 360 // command not recognized
DeMein 0:67a55a82ce06 361 DBG_msg("do_mdefault", inbuf);
DeMein 0:67a55a82ce06 362 send_error(err_notrecognized);
DeMein 0:67a55a82ce06 363 }