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.
Dependencies: TS_DISCO_F746NG mbed Servo LCD_DISCO_F746NG BSP_DISCO_F746NG QSPI_DISCO_F746NG AsyncSerial FastPWM
cli_nortos.cpp@5:21a8ac83142c, 2018-05-01 (annotated)
- Committer:
- JonFreeman
- Date:
- Tue May 01 08:34:36 2018 +0000
- Revision:
- 5:21a8ac83142c
- Parent:
- 4:67478861c670
- Child:
- 6:57dc760effd4
Added servo throttle, odometer not complete, ready for trial run
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| JonFreeman | 5:21a8ac83142c | 1 | //Loco_TS_2018 |
| JonFreeman | 4:67478861c670 | 2 | #include "mbed.h" |
| JonFreeman | 4:67478861c670 | 3 | //#include "BufferedSerial.h" |
| JonFreeman | 5:21a8ac83142c | 4 | #include "AsyncSerial.hpp" |
| JonFreeman | 4:67478861c670 | 5 | #include <cctype> |
| JonFreeman | 4:67478861c670 | 6 | #include "Electric_Loco.h" |
| JonFreeman | 4:67478861c670 | 7 | using namespace std; |
| JonFreeman | 4:67478861c670 | 8 | |
| JonFreeman | 4:67478861c670 | 9 | //extern int I_Am () ; // Returns boards id number as ASCII char '0', '1' etc. Code for Broadcast = '\r' |
| JonFreeman | 5:21a8ac83142c | 10 | //typedef double fl_typ; // |
| JonFreeman | 4:67478861c670 | 11 | |
| JonFreeman | 4:67478861c670 | 12 | const int BROADCAST = '\r'; |
| JonFreeman | 4:67478861c670 | 13 | |
| JonFreeman | 4:67478861c670 | 14 | // WithOUT RTOS |
| JonFreeman | 4:67478861c670 | 15 | extern Serial pc; |
| JonFreeman | 5:21a8ac83142c | 16 | extern AsyncSerial com; |
| JonFreeman | 4:67478861c670 | 17 | extern void send_test () ; |
| JonFreeman | 4:67478861c670 | 18 | |
| JonFreeman | 5:21a8ac83142c | 19 | void null_cmd (struct parameters & a) |
| JonFreeman | 5:21a8ac83142c | 20 | { |
| JonFreeman | 4:67478861c670 | 21 | pc.printf ("At null_cmd, parameters : First %.3f, second %.3f\r\n", a.dbl[0], a.dbl[1]); |
| JonFreeman | 4:67478861c670 | 22 | } |
| JonFreeman | 4:67478861c670 | 23 | |
| JonFreeman | 4:67478861c670 | 24 | |
| JonFreeman | 4:67478861c670 | 25 | void menucmd (struct parameters & a); |
| JonFreeman | 4:67478861c670 | 26 | |
| JonFreeman | 4:67478861c670 | 27 | void kd_cmd (struct parameters & a) // kick the watchdog |
| JonFreeman | 4:67478861c670 | 28 | { |
| JonFreeman | 4:67478861c670 | 29 | } |
| JonFreeman | 4:67478861c670 | 30 | |
| JonFreeman | 5:21a8ac83142c | 31 | extern void rpm_push (struct parameters & a) ; |
| JonFreeman | 5:21a8ac83142c | 32 | void uprpm_cmd (struct parameters & a) // controller rec'd rpm from driver boards |
| JonFreeman | 5:21a8ac83142c | 33 | { |
| JonFreeman | 5:21a8ac83142c | 34 | rpm_push (a); |
| JonFreeman | 5:21a8ac83142c | 35 | a.gp_i ^= 1; // toggle lsb |
| JonFreeman | 5:21a8ac83142c | 36 | } |
| JonFreeman | 5:21a8ac83142c | 37 | |
| JonFreeman | 5:21a8ac83142c | 38 | void uprdi_cmd (struct parameters & a) // controller rec'd rpm from driver boards |
| JonFreeman | 5:21a8ac83142c | 39 | { |
| JonFreeman | 5:21a8ac83142c | 40 | // pc.printf ("RPM %d %d\r\n", (int)a.dbl[0], (int)a.dbl[1]); |
| JonFreeman | 5:21a8ac83142c | 41 | } |
| JonFreeman | 5:21a8ac83142c | 42 | |
| JonFreeman | 4:67478861c670 | 43 | |
| JonFreeman | 4:67478861c670 | 44 | /*void who_cmd (struct parameters & a) |
| JonFreeman | 4:67478861c670 | 45 | { |
| JonFreeman | 4:67478861c670 | 46 | int i = I_Am (); |
| JonFreeman | 4:67478861c670 | 47 | if (I_Am() == a.target_unit) |
| JonFreeman | 4:67478861c670 | 48 | pc.printf ("Hi there, I am %c\r\n", a.target_unit); |
| JonFreeman | 4:67478861c670 | 49 | }*/ |
| JonFreeman | 4:67478861c670 | 50 | |
| JonFreeman | 4:67478861c670 | 51 | struct kb_command { |
| JonFreeman | 4:67478861c670 | 52 | const char * cmd_word; // points to text e.g. "menu" |
| JonFreeman | 4:67478861c670 | 53 | const char * explan; |
| JonFreeman | 4:67478861c670 | 54 | void (*f)(struct parameters &); // points to function |
| JonFreeman | 4:67478861c670 | 55 | } ; |
| JonFreeman | 4:67478861c670 | 56 | |
| JonFreeman | 4:67478861c670 | 57 | struct kb_command const command_list[] = { |
| JonFreeman | 4:67478861c670 | 58 | {"ls", "Lists available commands", menucmd}, |
| JonFreeman | 4:67478861c670 | 59 | {"?", "Lists available commands, same as ls", menucmd}, |
| JonFreeman | 4:67478861c670 | 60 | // {"fw", "forward", fw_cmd}, |
| JonFreeman | 4:67478861c670 | 61 | // {"re", "reverse", re_cmd}, |
| JonFreeman | 4:67478861c670 | 62 | // {"rb", "regen brake 0 to 99 %", rb_cmd}, |
| JonFreeman | 4:67478861c670 | 63 | // {"hb", "hand brake", hb_cmd}, |
| JonFreeman | 4:67478861c670 | 64 | // {"v", "set motors V percent RANGE 0 to 100", v_cmd}, |
| JonFreeman | 4:67478861c670 | 65 | // {"i", "set motors I percent RANGE 0 to 100", i_cmd}, |
| JonFreeman | 4:67478861c670 | 66 | // {"vi", "set motors V and I percent RANGE 0 to 100", vi_cmd}, |
| JonFreeman | 4:67478861c670 | 67 | // {"who", "search for connected units, e.g. 3who returs 'Hi there' if found", who_cmd}, |
| JonFreeman | 4:67478861c670 | 68 | // {"mode", "read or set params in eeprom", mode_cmd}, |
| JonFreeman | 4:67478861c670 | 69 | // {"erase", "set eeprom contents to all 0xff", erase_cmd}, |
| JonFreeman | 4:67478861c670 | 70 | {"kd", "kick the dog", kd_cmd}, |
| JonFreeman | 5:21a8ac83142c | 71 | {"rpm", "rpm reading from 2 motors", uprpm_cmd}, |
| JonFreeman | 4:67478861c670 | 72 | {"nu", "do nothing", null_cmd}, |
| JonFreeman | 4:67478861c670 | 73 | }; |
| JonFreeman | 4:67478861c670 | 74 | |
| JonFreeman | 4:67478861c670 | 75 | const int numof_menu_items = sizeof(command_list) / sizeof(kb_command); |
| JonFreeman | 4:67478861c670 | 76 | void menucmd (struct parameters & a) |
| JonFreeman | 4:67478861c670 | 77 | { |
| JonFreeman | 5:21a8ac83142c | 78 | // struct kb_command const * cl = command_list; |
| JonFreeman | 5:21a8ac83142c | 79 | pc.printf("\r\n\nTS_2018 Locomotive Touch Screen Controller\r\nAt menucmd function - listing commands:-\r\n"); |
| JonFreeman | 4:67478861c670 | 80 | for(int i = 0; i < numof_menu_items; i++) |
| JonFreeman | 4:67478861c670 | 81 | pc.printf("[%s]\t\t%s\r\n", command_list[i].cmd_word, command_list[i].explan); |
| JonFreeman | 4:67478861c670 | 82 | pc.printf("End of List of Commands\r\n"); |
| JonFreeman | 4:67478861c670 | 83 | } |
| JonFreeman | 4:67478861c670 | 84 | |
| JonFreeman | 5:21a8ac83142c | 85 | struct kb_command const loco_command_list[] = { |
| JonFreeman | 5:21a8ac83142c | 86 | {"ls", "Lists available commands", menucmd}, |
| JonFreeman | 5:21a8ac83142c | 87 | {"?", "Lists available commands, same as ls", menucmd}, |
| JonFreeman | 5:21a8ac83142c | 88 | {"rpm", "rpm reading from 2 motors", uprpm_cmd}, |
| JonFreeman | 5:21a8ac83142c | 89 | {"rdi", "rpm reading from 2 motors", uprdi_cmd}, |
| JonFreeman | 5:21a8ac83142c | 90 | {"nu", "do nothing", null_cmd}, |
| JonFreeman | 5:21a8ac83142c | 91 | } ; |
| JonFreeman | 5:21a8ac83142c | 92 | |
| JonFreeman | 5:21a8ac83142c | 93 | struct parameters pccom, lococom; |
| JonFreeman | 5:21a8ac83142c | 94 | |
| JonFreeman | 5:21a8ac83142c | 95 | /*struct parameters { |
| JonFreeman | 5:21a8ac83142c | 96 | struct kb_command const * clist; |
| JonFreeman | 5:21a8ac83142c | 97 | char cmd_line[120]; |
| JonFreeman | 5:21a8ac83142c | 98 | char * cmd_line_ptr; |
| JonFreeman | 5:21a8ac83142c | 99 | int32_t position_in_list, numof_dbls, target_unit, numof_menu_items; |
| JonFreeman | 5:21a8ac83142c | 100 | double dbl[MAX_PARAMS]; |
| JonFreeman | 5:21a8ac83142c | 101 | bool respond; |
| JonFreeman | 5:21a8ac83142c | 102 | } ; |
| JonFreeman | 5:21a8ac83142c | 103 | */ |
| JonFreeman | 5:21a8ac83142c | 104 | int getc (int which_port) |
| JonFreeman | 5:21a8ac83142c | 105 | { |
| JonFreeman | 5:21a8ac83142c | 106 | if (which_port == 0) |
| JonFreeman | 5:21a8ac83142c | 107 | return pc.getc (); |
| JonFreeman | 5:21a8ac83142c | 108 | if (which_port == 1) |
| JonFreeman | 5:21a8ac83142c | 109 | return com.getc (); |
| JonFreeman | 5:21a8ac83142c | 110 | return -1; |
| JonFreeman | 5:21a8ac83142c | 111 | } |
| JonFreeman | 5:21a8ac83142c | 112 | int readable (int which_port) |
| JonFreeman | 5:21a8ac83142c | 113 | { |
| JonFreeman | 5:21a8ac83142c | 114 | if (which_port == 0) |
| JonFreeman | 5:21a8ac83142c | 115 | return pc.readable (); |
| JonFreeman | 5:21a8ac83142c | 116 | if (which_port == 1) |
| JonFreeman | 5:21a8ac83142c | 117 | return com.readable (); |
| JonFreeman | 5:21a8ac83142c | 118 | return -1; |
| JonFreeman | 5:21a8ac83142c | 119 | |
| JonFreeman | 5:21a8ac83142c | 120 | } |
| JonFreeman | 5:21a8ac83142c | 121 | |
| JonFreeman | 5:21a8ac83142c | 122 | void setup_pccom () |
| JonFreeman | 5:21a8ac83142c | 123 | { |
| JonFreeman | 5:21a8ac83142c | 124 | pccom.clist = command_list; |
| JonFreeman | 5:21a8ac83142c | 125 | pccom.numof_menu_items = sizeof(command_list) / sizeof(kb_command); |
| JonFreeman | 5:21a8ac83142c | 126 | pccom.com_no = 0; |
| JonFreeman | 5:21a8ac83142c | 127 | pccom.cl_index = 0; |
| JonFreeman | 5:21a8ac83142c | 128 | pccom.gp_i = 0; // general puropse integer, not used to 30/4/2018 |
| JonFreeman | 5:21a8ac83142c | 129 | } |
| JonFreeman | 5:21a8ac83142c | 130 | |
| JonFreeman | 5:21a8ac83142c | 131 | void setup_lococom () |
| JonFreeman | 5:21a8ac83142c | 132 | { |
| JonFreeman | 5:21a8ac83142c | 133 | lococom.clist = loco_command_list; |
| JonFreeman | 5:21a8ac83142c | 134 | lococom.numof_menu_items = sizeof(loco_command_list) / sizeof(kb_command); |
| JonFreeman | 5:21a8ac83142c | 135 | lococom.com_no = 1; |
| JonFreeman | 5:21a8ac83142c | 136 | lococom.cl_index = 0; |
| JonFreeman | 5:21a8ac83142c | 137 | lococom.gp_i = 0; // general puropse integer, toggles 0 / 1 to best guess source of rpm |
| JonFreeman | 5:21a8ac83142c | 138 | } |
| JonFreeman | 5:21a8ac83142c | 139 | |
| JonFreeman | 5:21a8ac83142c | 140 | void clicore (struct parameters & a) |
| JonFreeman | 5:21a8ac83142c | 141 | { |
| JonFreeman | 5:21a8ac83142c | 142 | int ch; |
| JonFreeman | 5:21a8ac83142c | 143 | char * pEnd; |
| JonFreeman | 5:21a8ac83142c | 144 | while (readable(a.com_no)) { |
| JonFreeman | 5:21a8ac83142c | 145 | ch = getc (a.com_no); |
| JonFreeman | 5:21a8ac83142c | 146 | if(ch != '\r') // was this the 'Enter' key? |
| JonFreeman | 5:21a8ac83142c | 147 | a.cmd_line[a.cl_index++] = ch; // added char to command being assembled |
| JonFreeman | 5:21a8ac83142c | 148 | else { // key was CR, may or may not be command to lookup |
| JonFreeman | 5:21a8ac83142c | 149 | a.target_unit = BROADCAST; // Broadcast |
| JonFreeman | 5:21a8ac83142c | 150 | a.cmd_line_ptr = a.cmd_line; |
| JonFreeman | 5:21a8ac83142c | 151 | a.cmd_line[a.cl_index] = 0; // null terminate command string |
| JonFreeman | 5:21a8ac83142c | 152 | if(a.cl_index) { // If have got some chars to lookup |
| JonFreeman | 5:21a8ac83142c | 153 | int i, wrdlen; |
| JonFreeman | 5:21a8ac83142c | 154 | if (isdigit(a.cmd_line[0])) { // Look for command with prefix digit |
| JonFreeman | 5:21a8ac83142c | 155 | a.cmd_line_ptr++; // point past identified digit prefix |
| JonFreeman | 5:21a8ac83142c | 156 | a.target_unit = a.cmd_line[0]; // '0' to '9' |
| JonFreeman | 5:21a8ac83142c | 157 | //pc.printf ("Got prefix %c\r\n", cmd_line[0]); |
| JonFreeman | 5:21a8ac83142c | 158 | } |
| JonFreeman | 5:21a8ac83142c | 159 | for (i = 0; i < a.numof_menu_items; i++) { // Look for input match in command list |
| JonFreeman | 5:21a8ac83142c | 160 | wrdlen = strlen(a.clist[i].cmd_word); |
| JonFreeman | 5:21a8ac83142c | 161 | if(strncmp(a.clist[i].cmd_word, a.cmd_line_ptr, wrdlen) == 0 && !isalpha(a.cmd_line_ptr[wrdlen])) { // If match found |
| JonFreeman | 5:21a8ac83142c | 162 | for (int k = 0; k < MAX_PARAMS; k++) { |
| JonFreeman | 5:21a8ac83142c | 163 | a.dbl[k] = 0.0; |
| JonFreeman | 5:21a8ac83142c | 164 | } |
| JonFreeman | 5:21a8ac83142c | 165 | a.position_in_list = i; |
| JonFreeman | 5:21a8ac83142c | 166 | a.numof_dbls = 0; |
| JonFreeman | 5:21a8ac83142c | 167 | pEnd = a.cmd_line_ptr + wrdlen; |
| JonFreeman | 5:21a8ac83142c | 168 | while (*pEnd) { // Assemble all numerics as doubles |
| JonFreeman | 5:21a8ac83142c | 169 | a.dbl[a.numof_dbls++] = strtod (pEnd, &pEnd); |
| JonFreeman | 5:21a8ac83142c | 170 | while (*pEnd && !isdigit(*pEnd) && '-' != *pEnd && '+' != *pEnd) { |
| JonFreeman | 5:21a8ac83142c | 171 | pEnd++; |
| JonFreeman | 5:21a8ac83142c | 172 | } |
| JonFreeman | 5:21a8ac83142c | 173 | } |
| JonFreeman | 5:21a8ac83142c | 174 | //pc.printf ("\r\n"); // Not allowed as many may output this. |
| JonFreeman | 5:21a8ac83142c | 175 | //for (int k = 0; k < param_block.numof_dbls; k++) |
| JonFreeman | 5:21a8ac83142c | 176 | // pc.printf ("Read %.3f\r\n", param_block.dbl[k]); |
| JonFreeman | 5:21a8ac83142c | 177 | // param_block.times[i] = clock(); |
| JonFreeman | 5:21a8ac83142c | 178 | // if ((param_block.target_unit == BROADCAST) && (I_Am() == '0')) |
| JonFreeman | 5:21a8ac83142c | 179 | // param_block.respond = true; |
| JonFreeman | 5:21a8ac83142c | 180 | a.clist[i].f(a); // execute command |
| JonFreeman | 5:21a8ac83142c | 181 | i = a.numof_menu_items + 1; // to exit for loop |
| JonFreeman | 5:21a8ac83142c | 182 | } // end of match found |
| JonFreeman | 5:21a8ac83142c | 183 | } // End of for numof_menu_items |
| JonFreeman | 5:21a8ac83142c | 184 | if(i == a.numof_menu_items) |
| JonFreeman | 5:21a8ac83142c | 185 | pc.printf("No Match Found for CMD [%s]\r\n", a.cmd_line); |
| JonFreeman | 5:21a8ac83142c | 186 | } // End of If have got some chars to lookup |
| JonFreeman | 5:21a8ac83142c | 187 | //pc.printf("\r\n>"); |
| JonFreeman | 5:21a8ac83142c | 188 | a.cl_index = 0; |
| JonFreeman | 5:21a8ac83142c | 189 | } // End of else key was CR, may or may not be command to lookup |
| JonFreeman | 5:21a8ac83142c | 190 | } // End of while (pc.readable()) |
| JonFreeman | 5:21a8ac83142c | 191 | } |
| JonFreeman | 5:21a8ac83142c | 192 | |
| JonFreeman | 4:67478861c670 | 193 | |
| JonFreeman | 4:67478861c670 | 194 | /* |
| JonFreeman | 4:67478861c670 | 195 | New - March 2018 |
| JonFreeman | 4:67478861c670 | 196 | Using opto isolated serial port, paralleled up using same pair to multiple boards running this code. |
| JonFreeman | 4:67478861c670 | 197 | New feature - commands have optional prefix digit 0-9 indicating which unit message is addressed to. |
| JonFreeman | 4:67478861c670 | 198 | Commands without prefix digit - broadcast to all units, none to respond. |
| JonFreeman | 4:67478861c670 | 199 | Only units recognising its address from prefix digit may respond. This avoids bus contention. |
| JonFreeman | 4:67478861c670 | 200 | But for BROADCAST commands, '0' may respond on behalf of the group |
| JonFreeman | 4:67478861c670 | 201 | */ |
| JonFreeman | 4:67478861c670 | 202 | //void command_line_interpreter (void const *argument) |
| JonFreeman | 5:21a8ac83142c | 203 | /*void command_line_interpreter () |
| JonFreeman | 4:67478861c670 | 204 | { |
| JonFreeman | 5:21a8ac83142c | 205 | const int MAX_CMD_LEN = 120; |
| JonFreeman | 5:21a8ac83142c | 206 | static char cmd_line[MAX_CMD_LEN + 4]; |
| JonFreeman | 5:21a8ac83142c | 207 | static int cl_index = 0; |
| JonFreeman | 5:21a8ac83142c | 208 | int ch; |
| JonFreeman | 5:21a8ac83142c | 209 | char * pEnd, * cmd_line_ptr; |
| JonFreeman | 5:21a8ac83142c | 210 | static struct parameters param_block ; |
| JonFreeman | 5:21a8ac83142c | 211 | while (pc.readable()) { |
| JonFreeman | 5:21a8ac83142c | 212 | ch = pc.getc(); |
| JonFreeman | 5:21a8ac83142c | 213 | // if (cl_index > MAX_CMD_LEN) { // trap out stupidly long command lines |
| JonFreeman | 5:21a8ac83142c | 214 | // pc.printf ("Error!! Stupidly long cmd line\r\n"); |
| JonFreeman | 5:21a8ac83142c | 215 | // cl_index = 0; |
| JonFreeman | 5:21a8ac83142c | 216 | // } |
| JonFreeman | 5:21a8ac83142c | 217 | if(ch != '\r') // was this the 'Enter' key? |
| JonFreeman | 5:21a8ac83142c | 218 | cmd_line[cl_index++] = ch; // added char to command being assembled |
| JonFreeman | 5:21a8ac83142c | 219 | else { // key was CR, may or may not be command to lookup |
| JonFreeman | 5:21a8ac83142c | 220 | param_block.target_unit = BROADCAST; // Broadcast |
| JonFreeman | 5:21a8ac83142c | 221 | cmd_line_ptr = cmd_line; |
| JonFreeman | 5:21a8ac83142c | 222 | cmd_line[cl_index] = 0; // null terminate command string |
| JonFreeman | 5:21a8ac83142c | 223 | if(cl_index) { // If have got some chars to lookup |
| JonFreeman | 5:21a8ac83142c | 224 | int i, wrdlen; |
| JonFreeman | 5:21a8ac83142c | 225 | if (isdigit(cmd_line[0])) { // Look for command with prefix digit |
| JonFreeman | 5:21a8ac83142c | 226 | cmd_line_ptr++; // point past identified digit prefix |
| JonFreeman | 5:21a8ac83142c | 227 | param_block.target_unit = cmd_line[0]; // '0' to '9' |
| JonFreeman | 5:21a8ac83142c | 228 | //pc.printf ("Got prefix %c\r\n", cmd_line[0]); |
| JonFreeman | 5:21a8ac83142c | 229 | } |
| JonFreeman | 5:21a8ac83142c | 230 | for (i = 0; i < numof_menu_items; i++) { // Look for input match in command list |
| JonFreeman | 5:21a8ac83142c | 231 | wrdlen = strlen(command_list[i].cmd_word); |
| JonFreeman | 5:21a8ac83142c | 232 | if(strncmp(command_list[i].cmd_word, cmd_line_ptr, wrdlen) == 0 && !isalpha(cmd_line_ptr[wrdlen])) { // If match found |
| JonFreeman | 5:21a8ac83142c | 233 | for (int k = 0; k < MAX_PARAMS; k++) { |
| JonFreeman | 5:21a8ac83142c | 234 | param_block.dbl[k] = 0.0; |
| JonFreeman | 5:21a8ac83142c | 235 | } |
| JonFreeman | 5:21a8ac83142c | 236 | param_block.position_in_list = i; |
| JonFreeman | 5:21a8ac83142c | 237 | param_block.numof_dbls = 0; |
| JonFreeman | 5:21a8ac83142c | 238 | pEnd = cmd_line_ptr + wrdlen; |
| JonFreeman | 5:21a8ac83142c | 239 | while (*pEnd) { // Assemble all numerics as doubles |
| JonFreeman | 5:21a8ac83142c | 240 | param_block.dbl[param_block.numof_dbls++] = strtod (pEnd, &pEnd); |
| JonFreeman | 5:21a8ac83142c | 241 | while (*pEnd && !isdigit(*pEnd) && '-' != *pEnd && '+' != *pEnd) { |
| JonFreeman | 5:21a8ac83142c | 242 | pEnd++; |
| JonFreeman | 4:67478861c670 | 243 | } |
| JonFreeman | 5:21a8ac83142c | 244 | } |
| JonFreeman | 5:21a8ac83142c | 245 | //pc.printf ("\r\n"); // Not allowed as many may output this. |
| JonFreeman | 5:21a8ac83142c | 246 | //for (int k = 0; k < param_block.numof_dbls; k++) |
| JonFreeman | 5:21a8ac83142c | 247 | // pc.printf ("Read %.3f\r\n", param_block.dbl[k]); |
| JonFreeman | 4:67478861c670 | 248 | // param_block.times[i] = clock(); |
| JonFreeman | 4:67478861c670 | 249 | // if ((param_block.target_unit == BROADCAST) && (I_Am() == '0')) |
| JonFreeman | 4:67478861c670 | 250 | // param_block.respond = true; |
| JonFreeman | 5:21a8ac83142c | 251 | command_list[i].f(param_block); // execute command |
| JonFreeman | 5:21a8ac83142c | 252 | i = numof_menu_items + 1; // to exit for loop |
| JonFreeman | 5:21a8ac83142c | 253 | } // end of match found |
| JonFreeman | 5:21a8ac83142c | 254 | } // End of for numof_menu_items |
| JonFreeman | 5:21a8ac83142c | 255 | if(i == numof_menu_items) |
| JonFreeman | 5:21a8ac83142c | 256 | pc.printf("No Match Found for CMD [%s]\r\n", cmd_line); |
| JonFreeman | 5:21a8ac83142c | 257 | } // End of If have got some chars to lookup |
| JonFreeman | 5:21a8ac83142c | 258 | //pc.printf("\r\n>"); |
| JonFreeman | 5:21a8ac83142c | 259 | cl_index = 0; |
| JonFreeman | 5:21a8ac83142c | 260 | } // End of else key was CR, may or may not be command to lookup |
| JonFreeman | 5:21a8ac83142c | 261 | } // End of while (pc.readable()) |
| JonFreeman | 4:67478861c670 | 262 | // Thread::wait(20); // Using RTOS on this project |
| JonFreeman | 4:67478861c670 | 263 | // } |
| JonFreeman | 4:67478861c670 | 264 | } |
| JonFreeman | 5:21a8ac83142c | 265 | */ |
| JonFreeman | 4:67478861c670 | 266 |