Erick / Mbed 2 deprecated ICE-F412

Dependencies:   mbed-rtos mbed

Committer:
jmarkel44
Date:
Tue Jan 24 19:05:33 2017 +0000
Revision:
0:61364762ee0e
Port from IAR to Nucleo-F412 board

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jmarkel44 0:61364762ee0e 1 /*
jmarkel44 0:61364762ee0e 2 * ===============================================================
jmarkel44 0:61364762ee0e 3 * Natural Tiny Shell (NT-Shell) Application example.
jmarkel44 0:61364762ee0e 4 * Version 0.0.6
jmarkel44 0:61364762ee0e 5 * ===============================================================
jmarkel44 0:61364762ee0e 6 * Copyright (c) 2010-2011 Shinichiro Nakamura
jmarkel44 0:61364762ee0e 7 *
jmarkel44 0:61364762ee0e 8 * Permission is hereby granted, free of charge, to any person
jmarkel44 0:61364762ee0e 9 * obtaining a copy of this software and associated documentation
jmarkel44 0:61364762ee0e 10 * files (the "Software"), to deal in the Software without
jmarkel44 0:61364762ee0e 11 * restriction, including without limitation the rights to use,
jmarkel44 0:61364762ee0e 12 * copy, modify, merge, publish, distribute, sublicense, and/or
jmarkel44 0:61364762ee0e 13 * sell copies of the Software, and to permit persons to whom the
jmarkel44 0:61364762ee0e 14 * Software is furnished to do so, subject to the following
jmarkel44 0:61364762ee0e 15 * conditions:
jmarkel44 0:61364762ee0e 16 *
jmarkel44 0:61364762ee0e 17 * The above copyright notice and this permission notice shall be
jmarkel44 0:61364762ee0e 18 * included in all copies or substantial portions of the Software.
jmarkel44 0:61364762ee0e 19 *
jmarkel44 0:61364762ee0e 20 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
jmarkel44 0:61364762ee0e 21 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
jmarkel44 0:61364762ee0e 22 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
jmarkel44 0:61364762ee0e 23 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
jmarkel44 0:61364762ee0e 24 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
jmarkel44 0:61364762ee0e 25 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
jmarkel44 0:61364762ee0e 26 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
jmarkel44 0:61364762ee0e 27 * OTHER DEALINGS IN THE SOFTWARE.
jmarkel44 0:61364762ee0e 28 * ===============================================================
jmarkel44 0:61364762ee0e 29 */
jmarkel44 0:61364762ee0e 30
jmarkel44 0:61364762ee0e 31 #include <mbed.h>
jmarkel44 0:61364762ee0e 32 #include <mbed_stats.h>
jmarkel44 0:61364762ee0e 33 #include <stdlib.h>
jmarkel44 0:61364762ee0e 34 #include <vector>
jmarkel44 0:61364762ee0e 35 #include <rtos.h>
jmarkel44 0:61364762ee0e 36 #include "cmd.h"
jmarkel44 0:61364762ee0e 37 #include "ntshell.h"
jmarkel44 0:61364762ee0e 38 #include "ntopt.h"
jmarkel44 0:61364762ee0e 39 #include "cJSON.h"
jmarkel44 0:61364762ee0e 40 #include "v7.h"
jmarkel44 0:61364762ee0e 41 #include "global.h"
jmarkel44 0:61364762ee0e 42 #include "OutputTask.h"
jmarkel44 0:61364762ee0e 43 #include "ModbusMasterApi.h"
jmarkel44 0:61364762ee0e 44 #include "ConfigurationHandler.h"
jmarkel44 0:61364762ee0e 45 #include "mfs.h"
jmarkel44 0:61364762ee0e 46 #include "rtc.h"
jmarkel44 0:61364762ee0e 47 #include "ConfigFs.h"
jmarkel44 0:61364762ee0e 48 #include "version.h"
jmarkel44 0:61364762ee0e 49 #include "ICELog.h"
jmarkel44 0:61364762ee0e 50 #include "utilities.h"
jmarkel44 0:61364762ee0e 51
jmarkel44 0:61364762ee0e 52 ntshell_t ntshell;
jmarkel44 0:61364762ee0e 53 extern Serial console;
jmarkel44 0:61364762ee0e 54
jmarkel44 0:61364762ee0e 55 // the readers and writers
jmarkel44 0:61364762ee0e 56 int func_read(char *buf, int cnt);
jmarkel44 0:61364762ee0e 57 int func_write(const char *buf, int cnt);
jmarkel44 0:61364762ee0e 58 int func_cb_ntshell(const char *text);
jmarkel44 0:61364762ee0e 59 void func_cb_ntopt(int argc, char **argv);
jmarkel44 0:61364762ee0e 60
jmarkel44 0:61364762ee0e 61 // the command table element
jmarkel44 0:61364762ee0e 62 typedef struct {
jmarkel44 0:61364762ee0e 63 char *command; // command (from shell)
jmarkel44 0:61364762ee0e 64 char *description; // descrption
jmarkel44 0:61364762ee0e 65 void (*func)(int argc, char **argv); // callback function
jmarkel44 0:61364762ee0e 66 } command_table_t;
jmarkel44 0:61364762ee0e 67
jmarkel44 0:61364762ee0e 68 const command_table_t cmdlist[] = {
jmarkel44 0:61364762ee0e 69 {"?", "help command", cmd_help },
jmarkel44 0:61364762ee0e 70 {"cif", "create an input file", cmd_cif },
jmarkel44 0:61364762ee0e 71 {"cof", "create an output file", cmd_cof },
jmarkel44 0:61364762ee0e 72 {"create-ca", "create a control algorithm file", cmd_createCAlg },
jmarkel44 0:61364762ee0e 73 {"create-fs", "create a failsafe control", cmd_createFailsafe },
jmarkel44 0:61364762ee0e 74 {"create-mn", "create a manual control", cmd_createManual },
jmarkel44 0:61364762ee0e 75 {"create-se", "create a sensor error control", cmd_createSError },
jmarkel44 0:61364762ee0e 76 {"create-seq", "create a sequence control", cmd_createSequence },
jmarkel44 0:61364762ee0e 77 {"create-sp", "create a setpoint control", cmd_createSetpoint },
jmarkel44 0:61364762ee0e 78 {"create-tm", "create a timer control", cmd_createTimer },
jmarkel44 0:61364762ee0e 79 {"create-vreg", "create a virtual register", cmd_createVreg },
jmarkel44 0:61364762ee0e 80 {"debug-fs", "debug failsafe controls", cmd_debug_fs },
jmarkel44 0:61364762ee0e 81 {"debug-mn", "debug manual controls", cmd_debug_mn },
jmarkel44 0:61364762ee0e 82 {"debug-se", "debug sensor error controls", cmd_debug_se },
jmarkel44 0:61364762ee0e 83 {"debug-seq", "debug sequence controls", cmd_debug_seq },
jmarkel44 0:61364762ee0e 84 {"debug-sp", "debug setpoint controls", cmd_debug_sp },
jmarkel44 0:61364762ee0e 85 {"debug-tm", "debug timer controls", cmd_debug_tm },
jmarkel44 0:61364762ee0e 86 {"delete-file", "delete a file from EEPROM", cmd_deleteFile },
jmarkel44 0:61364762ee0e 87 {"destroy-control", "destroy a control", cmd_destroy },
jmarkel44 0:61364762ee0e 88 {"format-fs", "format EEPROM file system", cmd_formatFS },
jmarkel44 0:61364762ee0e 89 {"heap-stats", "dump heap data", cmd_heap_stats },
jmarkel44 0:61364762ee0e 90 {"help", "help command", cmd_help },
jmarkel44 0:61364762ee0e 91 {"json-test", "JSON parser test", cmd_json },
jmarkel44 0:61364762ee0e 92 {"log-level", "set debug log-level", cmd_logLevel },
jmarkel44 0:61364762ee0e 93 {"ls", "list files in EEPROM", cmd_lsFile },
jmarkel44 0:61364762ee0e 94 {"modmap", "dump modbus register map", cmd_modmap },
jmarkel44 0:61364762ee0e 95 {"preload", "pre-load phase-1 demo files", cmd_preload },
jmarkel44 0:61364762ee0e 96 {"read-file", "read file from EEPROM", cmd_readFile },
jmarkel44 0:61364762ee0e 97 {"reset", "software reset", cmd_reset },
jmarkel44 0:61364762ee0e 98 {"simall", "simulate multiple inputs", cmd_simall },
jmarkel44 0:61364762ee0e 99 {"simerr", "simulate input error", cmd_simerr },
jmarkel44 0:61364762ee0e 100 {"simin", "simulate input", cmd_simin },
jmarkel44 0:61364762ee0e 101 {"show-ca", "show control algorithms", cmd_ShowAlgorithms },
jmarkel44 0:61364762ee0e 102 {"show-controls", "show active controls", cmd_ShowControls },
jmarkel44 0:61364762ee0e 103 {"show-tm-controls", "display active timer controls", cmd_ShowTimers },
jmarkel44 0:61364762ee0e 104 {"show-mn-controls", "display active manual controls", cmd_ShowManuals },
jmarkel44 0:61364762ee0e 105 {"show-co-controls", "display active composite controls", cmd_ShowComposites },
jmarkel44 0:61364762ee0e 106 {"show-fs-controls", "display active failsafe controls", cmd_ShowFailsafes },
jmarkel44 0:61364762ee0e 107 {"show-se-controls", "display active sensor error controls", cmd_ShowSensorErrors},
jmarkel44 0:61364762ee0e 108 {"show-seq-controls", "display active sequential controls", cmd_ShowSequences },
jmarkel44 0:61364762ee0e 109 {"show-sp-controls", "display active setpoint controls", cmd_ShowSetpoints },
jmarkel44 0:61364762ee0e 110 {"show-outputs", "display the output hierarchy", cmd_outputs },
jmarkel44 0:61364762ee0e 111 //{"spi-test", "test SPI FLASH interface", cmd_spiTest },
jmarkel44 0:61364762ee0e 112 {"stack-stats", "dump stack stats", cmd_stack },
jmarkel44 0:61364762ee0e 113 {"test-log-level", "tests the log functions", cmd_testLog },
jmarkel44 0:61364762ee0e 114 {"test-prebleed", "test the pre-bleed scripts", cmd_testPreBleed },
jmarkel44 0:61364762ee0e 115 {"v7-test", "V7 test", cmd_v7, },
jmarkel44 0:61364762ee0e 116 {"version", "display version info", cmd_version },
jmarkel44 0:61364762ee0e 117 {"vregmap", "display the virtual register map", cmd_vregmap },
jmarkel44 0:61364762ee0e 118 {"write-file", "write a file to EEPROM", cmd_writeFile },
jmarkel44 0:61364762ee0e 119 {"get-time", "get time from RTC", cmd_getTime },
jmarkel44 0:61364762ee0e 120 {"set-time", "set time from RTC", cmd_setTime },
jmarkel44 0:61364762ee0e 121 {NULL, NULL, NULL}
jmarkel44 0:61364762ee0e 122 };
jmarkel44 0:61364762ee0e 123
jmarkel44 0:61364762ee0e 124
jmarkel44 0:61364762ee0e 125 void cmd_testLog(int argc, char **argv)
jmarkel44 0:61364762ee0e 126 {
jmarkel44 0:61364762ee0e 127 logFatal ("Testing");
jmarkel44 0:61364762ee0e 128 logError ("Testing");
jmarkel44 0:61364762ee0e 129 logWarning ("Testing");
jmarkel44 0:61364762ee0e 130 logInfo ("Testing");
jmarkel44 0:61364762ee0e 131 logDebug ("Testing");
jmarkel44 0:61364762ee0e 132 logTrace ("Testing");
jmarkel44 0:61364762ee0e 133
jmarkel44 0:61364762ee0e 134 }
jmarkel44 0:61364762ee0e 135
jmarkel44 0:61364762ee0e 136 //
jmarkel44 0:61364762ee0e 137 // function: cmd_debug_fs
jmarkel44 0:61364762ee0e 138 // decription: debug failsafe controls (ON|OFF)
jmarkel44 0:61364762ee0e 139 //
jmarkel44 0:61364762ee0e 140 void cmd_debug_fs(int argc, char **argv)
jmarkel44 0:61364762ee0e 141 {
jmarkel44 0:61364762ee0e 142 extern bool debugFailsafeControl;
jmarkel44 0:61364762ee0e 143
jmarkel44 0:61364762ee0e 144 if ( argc == 1 ) {
jmarkel44 0:61364762ee0e 145 printf("\rCurrent level is %d\r\n", debugFailsafeControl);
jmarkel44 0:61364762ee0e 146 return;
jmarkel44 0:61364762ee0e 147 }
jmarkel44 0:61364762ee0e 148
jmarkel44 0:61364762ee0e 149 if ( argc != 2 ) {
jmarkel44 0:61364762ee0e 150 usage:
jmarkel44 0:61364762ee0e 151 printf("\rusage: debug-fs <1|0>\n");
jmarkel44 0:61364762ee0e 152 printf("\rexample: debug-fs 1\n");
jmarkel44 0:61364762ee0e 153 return;
jmarkel44 0:61364762ee0e 154 }
jmarkel44 0:61364762ee0e 155
jmarkel44 0:61364762ee0e 156 if ( (atoi(argv[1])) == 1 ) {
jmarkel44 0:61364762ee0e 157 debugFailsafeControl = true;
jmarkel44 0:61364762ee0e 158 } else if ( (atoi(argv[1])) == 0 ) {
jmarkel44 0:61364762ee0e 159 debugFailsafeControl = false;
jmarkel44 0:61364762ee0e 160 } else {
jmarkel44 0:61364762ee0e 161 goto usage;
jmarkel44 0:61364762ee0e 162 }
jmarkel44 0:61364762ee0e 163 }
jmarkel44 0:61364762ee0e 164
jmarkel44 0:61364762ee0e 165 //
jmarkel44 0:61364762ee0e 166 // function: cmd__debug_man
jmarkel44 0:61364762ee0e 167 // description: debug manual controls (ON|OFF)
jmarkel44 0:61364762ee0e 168 //
jmarkel44 0:61364762ee0e 169 void cmd_debug_mn(int argc, char **argv)
jmarkel44 0:61364762ee0e 170 {
jmarkel44 0:61364762ee0e 171 extern bool debugManualControl;
jmarkel44 0:61364762ee0e 172
jmarkel44 0:61364762ee0e 173 if ( argc == 1 ) {
jmarkel44 0:61364762ee0e 174 printf("\rCurrent level is %d\r\n", debugManualControl);
jmarkel44 0:61364762ee0e 175 return;
jmarkel44 0:61364762ee0e 176 }
jmarkel44 0:61364762ee0e 177
jmarkel44 0:61364762ee0e 178 if ( argc != 2 ) {
jmarkel44 0:61364762ee0e 179 usage:
jmarkel44 0:61364762ee0e 180 printf("\rusage: debug-man <1|0>\n");
jmarkel44 0:61364762ee0e 181 printf("\rexample: debug-man 1\n");
jmarkel44 0:61364762ee0e 182 return;
jmarkel44 0:61364762ee0e 183 }
jmarkel44 0:61364762ee0e 184
jmarkel44 0:61364762ee0e 185 if ( (atoi(argv[1])) == 1 ) {
jmarkel44 0:61364762ee0e 186 debugManualControl = true;
jmarkel44 0:61364762ee0e 187 } else if ( (atoi(argv[1])) == 0 ) {
jmarkel44 0:61364762ee0e 188 debugManualControl = false;
jmarkel44 0:61364762ee0e 189 } else {
jmarkel44 0:61364762ee0e 190 goto usage;
jmarkel44 0:61364762ee0e 191 }
jmarkel44 0:61364762ee0e 192 }
jmarkel44 0:61364762ee0e 193
jmarkel44 0:61364762ee0e 194 //
jmarkel44 0:61364762ee0e 195 // function: cmd_debug_se
jmarkel44 0:61364762ee0e 196 // description: debug sensor error controls (ON|OFF)
jmarkel44 0:61364762ee0e 197 //
jmarkel44 0:61364762ee0e 198 void cmd_debug_se(int argc, char **argv)
jmarkel44 0:61364762ee0e 199 {
jmarkel44 0:61364762ee0e 200 extern bool debugSensorError;
jmarkel44 0:61364762ee0e 201
jmarkel44 0:61364762ee0e 202 if ( argc == 1 ) {
jmarkel44 0:61364762ee0e 203 printf("\rCurrent level is %d\r\n", debugSensorError);
jmarkel44 0:61364762ee0e 204 return;
jmarkel44 0:61364762ee0e 205 }
jmarkel44 0:61364762ee0e 206
jmarkel44 0:61364762ee0e 207 if ( argc != 2 ) {
jmarkel44 0:61364762ee0e 208 usage:
jmarkel44 0:61364762ee0e 209 printf("\rusage: debug-se <1|0>\n");
jmarkel44 0:61364762ee0e 210 printf("\rexample: debug-se 1\n");
jmarkel44 0:61364762ee0e 211 return;
jmarkel44 0:61364762ee0e 212 }
jmarkel44 0:61364762ee0e 213
jmarkel44 0:61364762ee0e 214 if ( (atoi(argv[1])) == 1 ) {
jmarkel44 0:61364762ee0e 215 debugSensorError = true;
jmarkel44 0:61364762ee0e 216 } else if ( (atoi(argv[1])) == 0 ) {
jmarkel44 0:61364762ee0e 217 debugSensorError = false;
jmarkel44 0:61364762ee0e 218 } else {
jmarkel44 0:61364762ee0e 219 goto usage;
jmarkel44 0:61364762ee0e 220 }
jmarkel44 0:61364762ee0e 221 }
jmarkel44 0:61364762ee0e 222
jmarkel44 0:61364762ee0e 223 //
jmarkel44 0:61364762ee0e 224 // function: cmd_debug_seq
jmarkel44 0:61364762ee0e 225 // description: debug sequence controls (ON|OFF
jmarkel44 0:61364762ee0e 226 //
jmarkel44 0:61364762ee0e 227 void cmd_debug_seq(int argc, char **argv)
jmarkel44 0:61364762ee0e 228 {
jmarkel44 0:61364762ee0e 229 extern bool debugSequenceControl;
jmarkel44 0:61364762ee0e 230
jmarkel44 0:61364762ee0e 231 if ( argc == 1 ) {
jmarkel44 0:61364762ee0e 232 printf("\rCurrent level is %d\r\n", debugSequenceControl);
jmarkel44 0:61364762ee0e 233 return;
jmarkel44 0:61364762ee0e 234 }
jmarkel44 0:61364762ee0e 235
jmarkel44 0:61364762ee0e 236 if ( argc != 2 ) {
jmarkel44 0:61364762ee0e 237 usage:
jmarkel44 0:61364762ee0e 238 printf("\rusage: debug-seq <1|0>\n");
jmarkel44 0:61364762ee0e 239 printf("\rexample: debug-seq 1\n");
jmarkel44 0:61364762ee0e 240 return;
jmarkel44 0:61364762ee0e 241 }
jmarkel44 0:61364762ee0e 242
jmarkel44 0:61364762ee0e 243 if ( (atoi(argv[1])) == 1 ) {
jmarkel44 0:61364762ee0e 244 debugSequenceControl = true;
jmarkel44 0:61364762ee0e 245 } else if ( (atoi(argv[1])) == 0 ) {
jmarkel44 0:61364762ee0e 246 debugSequenceControl = false;
jmarkel44 0:61364762ee0e 247 } else {
jmarkel44 0:61364762ee0e 248 goto usage;
jmarkel44 0:61364762ee0e 249 }
jmarkel44 0:61364762ee0e 250 }
jmarkel44 0:61364762ee0e 251
jmarkel44 0:61364762ee0e 252 //
jmarkel44 0:61364762ee0e 253 // function: cmd_debug_sp
jmarkel44 0:61364762ee0e 254 // description: debug setpoint controls
jmarkel44 0:61364762ee0e 255 //
jmarkel44 0:61364762ee0e 256 void cmd_debug_sp(int argc, char **argv)
jmarkel44 0:61364762ee0e 257 {
jmarkel44 0:61364762ee0e 258 extern bool debugSetpointControl;
jmarkel44 0:61364762ee0e 259
jmarkel44 0:61364762ee0e 260 if ( argc == 1 ) {
jmarkel44 0:61364762ee0e 261 printf("\rCurrent level is %d\r\n", debugSetpointControl);
jmarkel44 0:61364762ee0e 262 return;
jmarkel44 0:61364762ee0e 263 }
jmarkel44 0:61364762ee0e 264
jmarkel44 0:61364762ee0e 265 if ( argc != 2 ) {
jmarkel44 0:61364762ee0e 266 usage:
jmarkel44 0:61364762ee0e 267 printf("\rusage: debug-sp <1|0>\n");
jmarkel44 0:61364762ee0e 268 printf("\rexample: debug-sp 1\n");
jmarkel44 0:61364762ee0e 269 return;
jmarkel44 0:61364762ee0e 270 }
jmarkel44 0:61364762ee0e 271
jmarkel44 0:61364762ee0e 272 if ( (atoi(argv[1])) == 1 ) {
jmarkel44 0:61364762ee0e 273 debugSetpointControl = true;
jmarkel44 0:61364762ee0e 274 } else if ( (atoi(argv[1])) == 0 ) {
jmarkel44 0:61364762ee0e 275 debugSetpointControl = false;
jmarkel44 0:61364762ee0e 276 } else {
jmarkel44 0:61364762ee0e 277 goto usage;
jmarkel44 0:61364762ee0e 278 }
jmarkel44 0:61364762ee0e 279 }
jmarkel44 0:61364762ee0e 280
jmarkel44 0:61364762ee0e 281 //
jmarkel44 0:61364762ee0e 282 // function: cmd_debug_tm
jmarkel44 0:61364762ee0e 283 // description: debug timer controls (ON|OFF)
jmarkel44 0:61364762ee0e 284 //
jmarkel44 0:61364762ee0e 285 void cmd_debug_tm(int argc, char **argv)
jmarkel44 0:61364762ee0e 286 {
jmarkel44 0:61364762ee0e 287 extern bool debugTimerControl;
jmarkel44 0:61364762ee0e 288
jmarkel44 0:61364762ee0e 289 if ( argc == 1 ) {
jmarkel44 0:61364762ee0e 290 printf("\rCurrent level is %d\r\n", debugTimerControl);
jmarkel44 0:61364762ee0e 291 return;
jmarkel44 0:61364762ee0e 292 }
jmarkel44 0:61364762ee0e 293
jmarkel44 0:61364762ee0e 294 if ( argc != 2 ) {
jmarkel44 0:61364762ee0e 295 usage:
jmarkel44 0:61364762ee0e 296 printf("\rusage: debug-tm <1|0>\n");
jmarkel44 0:61364762ee0e 297 printf("\rexample: debug-tm 1\n");
jmarkel44 0:61364762ee0e 298 return;
jmarkel44 0:61364762ee0e 299 }
jmarkel44 0:61364762ee0e 300
jmarkel44 0:61364762ee0e 301 if ( (atoi(argv[1])) == 1 ) {
jmarkel44 0:61364762ee0e 302 debugTimerControl = true;
jmarkel44 0:61364762ee0e 303 } else if ( (atoi(argv[1])) == 0 ) {
jmarkel44 0:61364762ee0e 304 debugTimerControl = false;
jmarkel44 0:61364762ee0e 305 } else {
jmarkel44 0:61364762ee0e 306 goto usage;
jmarkel44 0:61364762ee0e 307 }
jmarkel44 0:61364762ee0e 308 }
jmarkel44 0:61364762ee0e 309
jmarkel44 0:61364762ee0e 310
jmarkel44 0:61364762ee0e 311 void cmd_heap_stats(int argc, char **argv)
jmarkel44 0:61364762ee0e 312 {
jmarkel44 0:61364762ee0e 313 #ifndef __ICCARM__
jmarkel44 0:61364762ee0e 314 UNUSED(argc), UNUSED(argv);
jmarkel44 0:61364762ee0e 315 printf("\r%s\r\n", Util_getHeapData().c_str());
jmarkel44 0:61364762ee0e 316 #if 0
jmarkel44 0:61364762ee0e 317 UNUSED(argc);
jmarkel44 0:61364762ee0e 318 UNUSED(argv);
jmarkel44 0:61364762ee0e 319
jmarkel44 0:61364762ee0e 320 mbed_stats_heap_t s;
jmarkel44 0:61364762ee0e 321 mbed_stats_heap_get(&s);
jmarkel44 0:61364762ee0e 322
jmarkel44 0:61364762ee0e 323 printf("\rHeap statistics:\n");
jmarkel44 0:61364762ee0e 324 printf("\r bytes allocated......%u\n", s.current_size/1024);
jmarkel44 0:61364762ee0e 325 printf("\r max bytes allocated..%u\n", s.max_size/1024);
jmarkel44 0:61364762ee0e 326 printf("\r cumulative sum.......%u\n", s.total_size);
jmarkel44 0:61364762ee0e 327 printf("\r reserved size........%u\n", s.reserved_size);
jmarkel44 0:61364762ee0e 328 printf("\r allocations..........%u\n", s.alloc_cnt);
jmarkel44 0:61364762ee0e 329 printf("\r failed allocations...%u\n", s.alloc_fail_cnt);
jmarkel44 0:61364762ee0e 330
jmarkel44 0:61364762ee0e 331 return;
jmarkel44 0:61364762ee0e 332 #endif
jmarkel44 0:61364762ee0e 333 #endif
jmarkel44 0:61364762ee0e 334 }
jmarkel44 0:61364762ee0e 335
jmarkel44 0:61364762ee0e 336 void cmd_ShowAlgorithms(int argc, char **argv)
jmarkel44 0:61364762ee0e 337 {
jmarkel44 0:61364762ee0e 338 UNUSED(argc);
jmarkel44 0:61364762ee0e 339 UNUSED(argv);
jmarkel44 0:61364762ee0e 340 ConfigurationHandler_showAlgorithms();
jmarkel44 0:61364762ee0e 341 printf("\r\n");
jmarkel44 0:61364762ee0e 342 }
jmarkel44 0:61364762ee0e 343
jmarkel44 0:61364762ee0e 344 void cmd_ShowControls(int argc, char **argv)
jmarkel44 0:61364762ee0e 345 {
jmarkel44 0:61364762ee0e 346 UNUSED(argc);
jmarkel44 0:61364762ee0e 347 UNUSED(argv);
jmarkel44 0:61364762ee0e 348 ConfigurationHandler_showControls();
jmarkel44 0:61364762ee0e 349 printf("\r\n");
jmarkel44 0:61364762ee0e 350
jmarkel44 0:61364762ee0e 351 }
jmarkel44 0:61364762ee0e 352
jmarkel44 0:61364762ee0e 353 void cmd_reset(int argc, char **argv)
jmarkel44 0:61364762ee0e 354 {
jmarkel44 0:61364762ee0e 355 NVIC_SystemReset();
jmarkel44 0:61364762ee0e 356 }
jmarkel44 0:61364762ee0e 357
jmarkel44 0:61364762ee0e 358 void cmd_ShowTimers(int argc, char **argv)
jmarkel44 0:61364762ee0e 359 {
jmarkel44 0:61364762ee0e 360 UNUSED(argc), UNUSED(argv);
jmarkel44 0:61364762ee0e 361 ConfigurationHandler_showTimerControls();
jmarkel44 0:61364762ee0e 362 printf("\r\n");
jmarkel44 0:61364762ee0e 363 }
jmarkel44 0:61364762ee0e 364
jmarkel44 0:61364762ee0e 365 void cmd_ShowManuals(int argc, char **argv)
jmarkel44 0:61364762ee0e 366 {
jmarkel44 0:61364762ee0e 367 UNUSED(argc), UNUSED(argv);
jmarkel44 0:61364762ee0e 368 ConfigurationHandler_showManualControls();
jmarkel44 0:61364762ee0e 369 printf("\r\n");
jmarkel44 0:61364762ee0e 370 }
jmarkel44 0:61364762ee0e 371
jmarkel44 0:61364762ee0e 372 void cmd_ShowFailsafes(int argc, char **argv)
jmarkel44 0:61364762ee0e 373 {
jmarkel44 0:61364762ee0e 374 UNUSED(argc), UNUSED(argv);
jmarkel44 0:61364762ee0e 375 ConfigurationHandler_showFailsafeControls();
jmarkel44 0:61364762ee0e 376 printf("\r\n");
jmarkel44 0:61364762ee0e 377 }
jmarkel44 0:61364762ee0e 378
jmarkel44 0:61364762ee0e 379 void cmd_ShowSequences(int argc, char **argv)
jmarkel44 0:61364762ee0e 380 {
jmarkel44 0:61364762ee0e 381 UNUSED(argc), UNUSED(argv);
jmarkel44 0:61364762ee0e 382 ConfigurationHandler_showSequenceControls();
jmarkel44 0:61364762ee0e 383 }
jmarkel44 0:61364762ee0e 384
jmarkel44 0:61364762ee0e 385 void cmd_ShowComposites(int argc, char **argv)
jmarkel44 0:61364762ee0e 386 {
jmarkel44 0:61364762ee0e 387 UNUSED(argc), UNUSED(argv);
jmarkel44 0:61364762ee0e 388 ConfigurationHandler_showCompositeControls();
jmarkel44 0:61364762ee0e 389 printf("\r\n");
jmarkel44 0:61364762ee0e 390 }
jmarkel44 0:61364762ee0e 391
jmarkel44 0:61364762ee0e 392 void cmd_ShowSetpoints(int argc, char **argv)
jmarkel44 0:61364762ee0e 393 {
jmarkel44 0:61364762ee0e 394 UNUSED(argc), UNUSED(argv);
jmarkel44 0:61364762ee0e 395 ConfigurationHandler_showSetpointControls();
jmarkel44 0:61364762ee0e 396 printf("\r\n");
jmarkel44 0:61364762ee0e 397 }
jmarkel44 0:61364762ee0e 398
jmarkel44 0:61364762ee0e 399 void cmd_ShowSensorErrors(int argc, char **argv)
jmarkel44 0:61364762ee0e 400 {
jmarkel44 0:61364762ee0e 401 UNUSED(argc), UNUSED(argv);
jmarkel44 0:61364762ee0e 402 ConfigurationHandler_showSensorErrorControls();
jmarkel44 0:61364762ee0e 403 printf("\r\n");
jmarkel44 0:61364762ee0e 404 }
jmarkel44 0:61364762ee0e 405
jmarkel44 0:61364762ee0e 406
jmarkel44 0:61364762ee0e 407 /*****************************************************************************
jmarkel44 0:61364762ee0e 408 * Function: cmd_simerr
jmarkel44 0:61364762ee0e 409 * Description: simulate an input error
jmarkel44 0:61364762ee0e 410 *
jmarkel44 0:61364762ee0e 411 * @return none
jmarkel44 0:61364762ee0e 412 *****************************************************************************/
jmarkel44 0:61364762ee0e 413 void cmd_simerr(int argc, char **argv)
jmarkel44 0:61364762ee0e 414 {
jmarkel44 0:61364762ee0e 415 if ( argc < 3 ) {
jmarkel44 0:61364762ee0e 416 printf("\rusage: simerr <input> <errflag_value>\n");
jmarkel44 0:61364762ee0e 417 printf("\rexample: simerr i_bdcond01 9\n");
jmarkel44 0:61364762ee0e 418 return;
jmarkel44 0:61364762ee0e 419 }
jmarkel44 0:61364762ee0e 420
jmarkel44 0:61364762ee0e 421 ModbusRegisterMap[argv[1]].simulated = true;
jmarkel44 0:61364762ee0e 422 SimulateInputMap[argv[1]].errflag = (uint32_t)(atoi(argv[2]));
jmarkel44 0:61364762ee0e 423 }
jmarkel44 0:61364762ee0e 424
jmarkel44 0:61364762ee0e 425 /*****************************************************************************
jmarkel44 0:61364762ee0e 426 * Function: cmd_simin
jmarkel44 0:61364762ee0e 427 * Description: simulat input
jmarkel44 0:61364762ee0e 428 *
jmarkel44 0:61364762ee0e 429 * @param argc-> number of args
jmarkel44 0:61364762ee0e 430 * @param argv-> input
jmarkel44 0:61364762ee0e 431 * @return none
jmarkel44 0:61364762ee0e 432 *****************************************************************************/
jmarkel44 0:61364762ee0e 433 void cmd_simin(int argc, char **argv)
jmarkel44 0:61364762ee0e 434 {
jmarkel44 0:61364762ee0e 435 if ( argc != 3 && argc != 7 ) {
jmarkel44 0:61364762ee0e 436 printf("\rusage: simin <input> <value> <<low> <hi> <up_step> <down_step>>\r\n");
jmarkel44 0:61364762ee0e 437 printf("\rexample: simin i_tra01 100 94 106 1 .25\r\n");
jmarkel44 0:61364762ee0e 438 printf("\rexample: simin i_bdcond01 2000 1990 2006 .25 1\r\n");
jmarkel44 0:61364762ee0e 439 printf("\rexample: simin i_bdcond01 1800\n");
jmarkel44 0:61364762ee0e 440 return;
jmarkel44 0:61364762ee0e 441 }
jmarkel44 0:61364762ee0e 442
jmarkel44 0:61364762ee0e 443 //float value = atof( argv[2] );
jmarkel44 0:61364762ee0e 444 SimulateInputMap[argv[1]].start_value = atof(argv[2]);
jmarkel44 0:61364762ee0e 445
jmarkel44 0:61364762ee0e 446 ModbusRegisterMap[argv[1]].simulated = true;
jmarkel44 0:61364762ee0e 447
jmarkel44 0:61364762ee0e 448 if ( argc == 3 ) {
jmarkel44 0:61364762ee0e 449 SimulateInputMap[argv[1]].min = 0;
jmarkel44 0:61364762ee0e 450 SimulateInputMap[argv[1]].max = 0;
jmarkel44 0:61364762ee0e 451 SimulateInputMap[argv[1]].moving_up = false;
jmarkel44 0:61364762ee0e 452 return;
jmarkel44 0:61364762ee0e 453 }
jmarkel44 0:61364762ee0e 454 SimulateInputMap[argv[1]].min = atof(argv[3]);
jmarkel44 0:61364762ee0e 455 SimulateInputMap[argv[1]].max = atof(argv[4]);
jmarkel44 0:61364762ee0e 456 SimulateInputMap[argv[1]].up_step = atof(argv[5]);
jmarkel44 0:61364762ee0e 457 SimulateInputMap[argv[1]].down_step = atof(argv[6]);
jmarkel44 0:61364762ee0e 458 SimulateInputMap[argv[1]].moving_up = true;
jmarkel44 0:61364762ee0e 459
jmarkel44 0:61364762ee0e 460 }
jmarkel44 0:61364762ee0e 461
jmarkel44 0:61364762ee0e 462 /*****************************************************************************
jmarkel44 0:61364762ee0e 463 * Function: cmd_simall
jmarkel44 0:61364762ee0e 464 * Description: simulat multiple inputs
jmarkel44 0:61364762ee0e 465 *
jmarkel44 0:61364762ee0e 466 * @return none
jmarkel44 0:61364762ee0e 467 *****************************************************************************/
jmarkel44 0:61364762ee0e 468 void cmd_simall(int argc, char **argv)
jmarkel44 0:61364762ee0e 469 {
jmarkel44 0:61364762ee0e 470
jmarkel44 0:61364762ee0e 471 if ( argc > 1 ) {
jmarkel44 0:61364762ee0e 472
jmarkel44 0:61364762ee0e 473 printf("\r setting: simin i_tra01 100\n");
jmarkel44 0:61364762ee0e 474 ModbusRegisterMap["i_tra01"].simulated = true;
jmarkel44 0:61364762ee0e 475 SimulateInputMap["i_tra01"].start_value = 130;
jmarkel44 0:61364762ee0e 476 SimulateInputMap["i_tra01"].min = 0;
jmarkel44 0:61364762ee0e 477 SimulateInputMap["i_tra01"].max = 0;
jmarkel44 0:61364762ee0e 478 SimulateInputMap["i_tra01"].up_step = 0;
jmarkel44 0:61364762ee0e 479 SimulateInputMap["i_tra01"].down_step = 0;
jmarkel44 0:61364762ee0e 480 SimulateInputMap["i_tra01"].moving_up = true;
jmarkel44 0:61364762ee0e 481
jmarkel44 0:61364762ee0e 482 printf("\r setting: i_tag01 100\n");
jmarkel44 0:61364762ee0e 483 ModbusRegisterMap["i_tag01"].simulated = true;
jmarkel44 0:61364762ee0e 484 SimulateInputMap["i_tag01"].start_value = 100;
jmarkel44 0:61364762ee0e 485 SimulateInputMap["i_tag01"].min = 0;
jmarkel44 0:61364762ee0e 486 SimulateInputMap["i_tag01"].max = 0;
jmarkel44 0:61364762ee0e 487 SimulateInputMap["i_tag01"].up_step = 0;
jmarkel44 0:61364762ee0e 488 SimulateInputMap["i_tag01"].down_step = 0;
jmarkel44 0:61364762ee0e 489 SimulateInputMap["i_tag01"].moving_up = true;
jmarkel44 0:61364762ee0e 490
jmarkel44 0:61364762ee0e 491 printf("\r setting: i_bdcond01 1800\n");
jmarkel44 0:61364762ee0e 492 ModbusRegisterMap["i_bdcond01"].simulated = true;
jmarkel44 0:61364762ee0e 493 SimulateInputMap["i_bdcond01"].start_value = 1800;
jmarkel44 0:61364762ee0e 494 SimulateInputMap["i_bdcond01"].min = 0;
jmarkel44 0:61364762ee0e 495 SimulateInputMap["i_bdcond01"].max = 0;
jmarkel44 0:61364762ee0e 496 SimulateInputMap["i_bdcond01"].up_step = 0;
jmarkel44 0:61364762ee0e 497 SimulateInputMap["i_bdcond01"].down_step = 0;
jmarkel44 0:61364762ee0e 498 SimulateInputMap["i_bdcond01"].moving_up = true;
jmarkel44 0:61364762ee0e 499
jmarkel44 0:61364762ee0e 500 printf("\r setting: i_cond_temp01 25\n");
jmarkel44 0:61364762ee0e 501 ModbusRegisterMap["i_cond_temp01"].simulated = true;
jmarkel44 0:61364762ee0e 502 SimulateInputMap["i_cond_temp01"].start_value = 25000.0;
jmarkel44 0:61364762ee0e 503 SimulateInputMap["i_cond_temp01"].min = 0;
jmarkel44 0:61364762ee0e 504 SimulateInputMap["i_cond_temp01"].max = 0;
jmarkel44 0:61364762ee0e 505 SimulateInputMap["i_cond_temp01"].up_step = 0;
jmarkel44 0:61364762ee0e 506 SimulateInputMap["i_cond_temp01"].down_step = 0;
jmarkel44 0:61364762ee0e 507 SimulateInputMap["i_cond_temp01"].moving_up = true;
jmarkel44 0:61364762ee0e 508
jmarkel44 0:61364762ee0e 509 printf("\r setting: i_ph01 8\n");
jmarkel44 0:61364762ee0e 510 ModbusRegisterMap["i_ph01"].simulated = true;
jmarkel44 0:61364762ee0e 511 SimulateInputMap["i_ph01"].start_value = 8000;
jmarkel44 0:61364762ee0e 512 SimulateInputMap["i_ph01"].min = 0;
jmarkel44 0:61364762ee0e 513 SimulateInputMap["i_ph01"].max = 0;
jmarkel44 0:61364762ee0e 514 SimulateInputMap["i_ph01"].up_step = 0;
jmarkel44 0:61364762ee0e 515 SimulateInputMap["i_ph01"].down_step = 0;
jmarkel44 0:61364762ee0e 516 SimulateInputMap["i_ph01"].moving_up = true;
jmarkel44 0:61364762ee0e 517
jmarkel44 0:61364762ee0e 518 printf("\r setting: i_ph_temp01 25\n");
jmarkel44 0:61364762ee0e 519 ModbusRegisterMap["i_ph_temp01"].simulated = true;
jmarkel44 0:61364762ee0e 520 SimulateInputMap["i_ph_temp01"].start_value = 25000.0;
jmarkel44 0:61364762ee0e 521 SimulateInputMap["i_ph_temp01"].min = 0;
jmarkel44 0:61364762ee0e 522 SimulateInputMap["i_ph_temp01"].max = 0;
jmarkel44 0:61364762ee0e 523 SimulateInputMap["i_ph_temp01"].up_step = 0;
jmarkel44 0:61364762ee0e 524 SimulateInputMap["i_ph_temp01"].down_step = 0;
jmarkel44 0:61364762ee0e 525 SimulateInputMap["i_ph_temp01"].moving_up = true;
jmarkel44 0:61364762ee0e 526
jmarkel44 0:61364762ee0e 527 printf("\r setting: i_orp01 350\n");
jmarkel44 0:61364762ee0e 528 ModbusRegisterMap["i_orp01"].simulated = true;
jmarkel44 0:61364762ee0e 529 SimulateInputMap["i_orp01"].start_value = 350;
jmarkel44 0:61364762ee0e 530 SimulateInputMap["i_orp01"].min = 0;
jmarkel44 0:61364762ee0e 531 SimulateInputMap["i_orp01"].max = 0;
jmarkel44 0:61364762ee0e 532 SimulateInputMap["i_orp01"].up_step = 0;
jmarkel44 0:61364762ee0e 533 SimulateInputMap["i_orp01"].down_step = 0;
jmarkel44 0:61364762ee0e 534 SimulateInputMap["i_orp01"].moving_up = true;
jmarkel44 0:61364762ee0e 535
jmarkel44 0:61364762ee0e 536
jmarkel44 0:61364762ee0e 537 printf("\r setting: i_flowsw01 1\n");
jmarkel44 0:61364762ee0e 538 ModbusRegisterMap["i_flowsw01"].simulated = true;
jmarkel44 0:61364762ee0e 539 SimulateInputMap["i_flowsw01"].start_value = 1;
jmarkel44 0:61364762ee0e 540 SimulateInputMap["i_flowsw01"].min = 0;
jmarkel44 0:61364762ee0e 541 SimulateInputMap["i_flowsw01"].max = 0;
jmarkel44 0:61364762ee0e 542 SimulateInputMap["i_flowsw01"].up_step = 0;
jmarkel44 0:61364762ee0e 543 SimulateInputMap["i_flowsw01"].down_step = 0;
jmarkel44 0:61364762ee0e 544 SimulateInputMap["i_flowsw01"].moving_up = true;
jmarkel44 0:61364762ee0e 545
jmarkel44 0:61364762ee0e 546 return;
jmarkel44 0:61364762ee0e 547 }
jmarkel44 0:61364762ee0e 548
jmarkel44 0:61364762ee0e 549 printf("\rsetting: simin i_tra01 130 120 140 1 .25\r\n");
jmarkel44 0:61364762ee0e 550 printf("\rsetting: simin i_tag01 100 90 110 1 .25\r\n");
jmarkel44 0:61364762ee0e 551 printf("\rsetting: simin i_bdcond01 1800 1725 1875 1 5\r\n");
jmarkel44 0:61364762ee0e 552 printf("\rsetting: simin i_ph01 8.0 7.25 8.75 .0. .1\r\n");
jmarkel44 0:61364762ee0e 553 printf("\rsetting: simin i_orp01 350 300 400 5 1\r\n");
jmarkel44 0:61364762ee0e 554
jmarkel44 0:61364762ee0e 555 ModbusRegisterMap["i_tra01"].simulated = true;
jmarkel44 0:61364762ee0e 556 SimulateInputMap["i_tra01"].start_value = 130;
jmarkel44 0:61364762ee0e 557 SimulateInputMap["i_tra01"].min = 120;
jmarkel44 0:61364762ee0e 558 SimulateInputMap["i_tra01"].max = 140;
jmarkel44 0:61364762ee0e 559 SimulateInputMap["i_tra01"].up_step = 1;
jmarkel44 0:61364762ee0e 560 SimulateInputMap["i_tra01"].down_step = .25;
jmarkel44 0:61364762ee0e 561
jmarkel44 0:61364762ee0e 562 ModbusRegisterMap["i_tag01"].simulated = true;
jmarkel44 0:61364762ee0e 563 SimulateInputMap["i_tag01"].start_value = 100;
jmarkel44 0:61364762ee0e 564 SimulateInputMap["i_tag01"].min = 90;
jmarkel44 0:61364762ee0e 565 SimulateInputMap["i_tag01"].max = 110;
jmarkel44 0:61364762ee0e 566 SimulateInputMap["i_tag01"].up_step = 1;
jmarkel44 0:61364762ee0e 567 SimulateInputMap["i_tag01"].down_step = .25;
jmarkel44 0:61364762ee0e 568
jmarkel44 0:61364762ee0e 569 ModbusRegisterMap["i_bdcond01"].simulated = true;
jmarkel44 0:61364762ee0e 570 SimulateInputMap["i_bdcond01"].start_value = 1800;
jmarkel44 0:61364762ee0e 571 SimulateInputMap["i_bdcond01"].min = 1725;
jmarkel44 0:61364762ee0e 572 SimulateInputMap["i_bdcond01"].max = 1875;
jmarkel44 0:61364762ee0e 573 SimulateInputMap["i_bdcond01"].up_step = 1;
jmarkel44 0:61364762ee0e 574 SimulateInputMap["i_bdcond01"].down_step = 5;
jmarkel44 0:61364762ee0e 575
jmarkel44 0:61364762ee0e 576 ModbusRegisterMap["i_ph01"].simulated = true;
jmarkel44 0:61364762ee0e 577 SimulateInputMap["i_ph01"].start_value = 8000;
jmarkel44 0:61364762ee0e 578 SimulateInputMap["i_ph01"].min = 7250;
jmarkel44 0:61364762ee0e 579 SimulateInputMap["i_ph01"].max = 8750;
jmarkel44 0:61364762ee0e 580 SimulateInputMap["i_ph01"].up_step = 5;
jmarkel44 0:61364762ee0e 581 SimulateInputMap["i_ph01"].down_step = 10;
jmarkel44 0:61364762ee0e 582
jmarkel44 0:61364762ee0e 583 ModbusRegisterMap["i_orp01"].simulated = true;
jmarkel44 0:61364762ee0e 584 SimulateInputMap["i_orp01"].start_value = 350;
jmarkel44 0:61364762ee0e 585 SimulateInputMap["i_orp01"].min = 300;
jmarkel44 0:61364762ee0e 586 SimulateInputMap["i_orp01"].max = 400;
jmarkel44 0:61364762ee0e 587 SimulateInputMap["i_orp01"].up_step = 5;
jmarkel44 0:61364762ee0e 588 SimulateInputMap["i_orp01"].down_step = 1;
jmarkel44 0:61364762ee0e 589
jmarkel44 0:61364762ee0e 590 }
jmarkel44 0:61364762ee0e 591
jmarkel44 0:61364762ee0e 592 void cmd_stack(int argc, char **argv)
jmarkel44 0:61364762ee0e 593 {
jmarkel44 0:61364762ee0e 594 vector<pair<string, Thread*> > taskList;
jmarkel44 0:61364762ee0e 595
jmarkel44 0:61364762ee0e 596 const char *mapper[] = { "Inactive",
jmarkel44 0:61364762ee0e 597 "Ready",
jmarkel44 0:61364762ee0e 598 "Running",
jmarkel44 0:61364762ee0e 599 "WaitingDelay",
jmarkel44 0:61364762ee0e 600 "WaitingInterval",
jmarkel44 0:61364762ee0e 601 "WaitingOr",
jmarkel44 0:61364762ee0e 602 "WaitingAnd",
jmarkel44 0:61364762ee0e 603 "WaitingSempahore",
jmarkel44 0:61364762ee0e 604 "WaitingMailbox",
jmarkel44 0:61364762ee0e 605 "WaitingMutex"
jmarkel44 0:61364762ee0e 606 };
jmarkel44 0:61364762ee0e 607
jmarkel44 0:61364762ee0e 608 //simply add your task to the list...
jmarkel44 0:61364762ee0e 609 taskList.push_back(make_pair((string)"AnalyticsLogger", GLOBAL_analyticsLogger_thread));
jmarkel44 0:61364762ee0e 610 taskList.push_back(make_pair((string)"ConfigHandler", GLOBAL_configHandler_thread));
jmarkel44 0:61364762ee0e 611 taskList.push_back(make_pair((string)"ControlTask", GLOBAL_controlTask_thread));
jmarkel44 0:61364762ee0e 612 taskList.push_back(make_pair((string)"ModbusMaster", GLOBAL_modbusMaster_thread));
jmarkel44 0:61364762ee0e 613 taskList.push_back(make_pair((string)"OutputTask", GLOBAL_outputTask_thread));
jmarkel44 0:61364762ee0e 614
jmarkel44 0:61364762ee0e 615 for ( vector<pair<string, Thread*> >::iterator pos = taskList.begin();
jmarkel44 0:61364762ee0e 616 pos != taskList.end(); ++ pos) {
jmarkel44 0:61364762ee0e 617 printf("\r %-32s size/free/used/max = %5u/%5u/%5u/%5u\tpri=%u state=%-20s\n",
jmarkel44 0:61364762ee0e 618 pos->first.c_str(),
jmarkel44 0:61364762ee0e 619 pos->second->stack_size(),
jmarkel44 0:61364762ee0e 620 pos->second->free_stack(),
jmarkel44 0:61364762ee0e 621 pos->second->used_stack(),
jmarkel44 0:61364762ee0e 622 pos->second->max_stack(),
jmarkel44 0:61364762ee0e 623 pos->second->get_priority(),
jmarkel44 0:61364762ee0e 624 mapper[pos->second->get_state()]);
jmarkel44 0:61364762ee0e 625 }
jmarkel44 0:61364762ee0e 626
jmarkel44 0:61364762ee0e 627 printf("\r\n");
jmarkel44 0:61364762ee0e 628 }
jmarkel44 0:61364762ee0e 629
jmarkel44 0:61364762ee0e 630 void cmd_version(int argc, char **argv)
jmarkel44 0:61364762ee0e 631 {
jmarkel44 0:61364762ee0e 632 printf("\rversion: %u.%u.%u (%s)\n\r\n", MAJOR_VERSION_NUMBER,
jmarkel44 0:61364762ee0e 633 MINOR_VERSION_NUMBER,
jmarkel44 0:61364762ee0e 634 PATCH_VERSION_NUMBER,
jmarkel44 0:61364762ee0e 635 PROJECT_CODE_NAME);
jmarkel44 0:61364762ee0e 636 }
jmarkel44 0:61364762ee0e 637
jmarkel44 0:61364762ee0e 638 void cmd_help(int argc, char **argv)
jmarkel44 0:61364762ee0e 639 {
jmarkel44 0:61364762ee0e 640 UNUSED(argc);
jmarkel44 0:61364762ee0e 641 UNUSED(argv);
jmarkel44 0:61364762ee0e 642
jmarkel44 0:61364762ee0e 643 const command_table_t *tblPtr = cmdlist;
jmarkel44 0:61364762ee0e 644
jmarkel44 0:61364762ee0e 645 while (tblPtr->command) {
jmarkel44 0:61364762ee0e 646 printf("\r%-32s:\t%s\n", tblPtr->command, tblPtr->description);
jmarkel44 0:61364762ee0e 647 tblPtr++;
jmarkel44 0:61364762ee0e 648 }
jmarkel44 0:61364762ee0e 649 printf("\r\n");
jmarkel44 0:61364762ee0e 650 }
jmarkel44 0:61364762ee0e 651
jmarkel44 0:61364762ee0e 652 void cmd_v7(int argc, char **argv)
jmarkel44 0:61364762ee0e 653 {
jmarkel44 0:61364762ee0e 654 struct v7 *v7 = v7_create();
jmarkel44 0:61364762ee0e 655 v7_val_t exec_rc;
jmarkel44 0:61364762ee0e 656 const char *js_code = "print(\"Hello World!\")";
jmarkel44 0:61364762ee0e 657
jmarkel44 0:61364762ee0e 658 v7_exec(v7, js_code, &exec_rc);
jmarkel44 0:61364762ee0e 659 printf("\r->exec_rc = %d\r\n", (int)exec_rc);
jmarkel44 0:61364762ee0e 660 v7_destroy(v7);
jmarkel44 0:61364762ee0e 661 }
jmarkel44 0:61364762ee0e 662
jmarkel44 0:61364762ee0e 663 void cmd_json(int argc, char **argv)
jmarkel44 0:61364762ee0e 664 {
jmarkel44 0:61364762ee0e 665 const char buf[] = {
jmarkel44 0:61364762ee0e 666 "{"
jmarkel44 0:61364762ee0e 667 "\"tag1\":\"value1\" ,"
jmarkel44 0:61364762ee0e 668 "\"tag2\":\"value2\" "
jmarkel44 0:61364762ee0e 669 "}"
jmarkel44 0:61364762ee0e 670 };
jmarkel44 0:61364762ee0e 671
jmarkel44 0:61364762ee0e 672 cJSON *root = cJSON_Parse(buf);
jmarkel44 0:61364762ee0e 673 printf("\rtag1 = %s\n", cJSON_GetObjectItem(root, "tag1")->valuestring);
jmarkel44 0:61364762ee0e 674 printf("\rtag2 = %s\n", cJSON_GetObjectItem(root, "tag2")->valuestring);
jmarkel44 0:61364762ee0e 675 cJSON_Delete(root);
jmarkel44 0:61364762ee0e 676 }
jmarkel44 0:61364762ee0e 677
jmarkel44 0:61364762ee0e 678 /*****************************************************************************
jmarkel44 0:61364762ee0e 679 * Function: cmd_outputs
jmarkel44 0:61364762ee0e 680 * Description: display outputs
jmarkel44 0:61364762ee0e 681 ****************************************************************************/
jmarkel44 0:61364762ee0e 682 void cmd_outputs(int argc, char **argv)
jmarkel44 0:61364762ee0e 683 {
jmarkel44 0:61364762ee0e 684 UNUSED(argc);
jmarkel44 0:61364762ee0e 685 UNUSED(argv);
jmarkel44 0:61364762ee0e 686
jmarkel44 0:61364762ee0e 687 DisplayOutputs();
jmarkel44 0:61364762ee0e 688 }
jmarkel44 0:61364762ee0e 689
jmarkel44 0:61364762ee0e 690 void cmd_formatFS(int argc, char **argv)
jmarkel44 0:61364762ee0e 691 {
jmarkel44 0:61364762ee0e 692 mfs fs0(0xA0);
jmarkel44 0:61364762ee0e 693 console.printf("\n\r\n\r[mFS] Formatting EEPROM.....................");
jmarkel44 0:61364762ee0e 694 int bad_blocks = fs0.mkfs(true);
jmarkel44 0:61364762ee0e 695 console.printf(" found %d bad blocks\r\n", bad_blocks);
jmarkel44 0:61364762ee0e 696 }
jmarkel44 0:61364762ee0e 697
jmarkel44 0:61364762ee0e 698 void cmd_writeFile(int argc, char **argv)
jmarkel44 0:61364762ee0e 699 {
jmarkel44 0:61364762ee0e 700 mfs fs0(0xA0);
jmarkel44 0:61364762ee0e 701
jmarkel44 0:61364762ee0e 702 char filename[FILENAME_LENGTH];
jmarkel44 0:61364762ee0e 703 memset( filename, '\0', FILENAME_LENGTH );
jmarkel44 0:61364762ee0e 704 strncpy( filename, argv[1], FILENAME_LENGTH-1 );
jmarkel44 0:61364762ee0e 705
jmarkel44 0:61364762ee0e 706 char *file_buf = (char*) malloc(MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 707 memset( file_buf, '\0', MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 708 snprintf(file_buf, MAX_FILE_SIZE, "1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890-1234567890");
jmarkel44 0:61364762ee0e 709 printf("%s\r\n", file_buf);
jmarkel44 0:61364762ee0e 710 if( GLOBAL_mdot->saveUserFile( filename, (void *)file_buf, MAX_FILE_SIZE ) != true ) {
jmarkel44 0:61364762ee0e 711 printf("Failed saveUserFile\r\n");
jmarkel44 0:61364762ee0e 712 }
jmarkel44 0:61364762ee0e 713 free(file_buf);
jmarkel44 0:61364762ee0e 714
jmarkel44 0:61364762ee0e 715 return;
jmarkel44 0:61364762ee0e 716 }
jmarkel44 0:61364762ee0e 717
jmarkel44 0:61364762ee0e 718 void cmd_readFile(int argc, char **argv)
jmarkel44 0:61364762ee0e 719 {
jmarkel44 0:61364762ee0e 720 char filename[FILENAME_LENGTH];
jmarkel44 0:61364762ee0e 721 memset( filename, '\0', FILENAME_LENGTH );
jmarkel44 0:61364762ee0e 722 strncpy( filename, argv[1], FILENAME_LENGTH-1 );
jmarkel44 0:61364762ee0e 723 int file_size = (atoi(argv[2]));
jmarkel44 0:61364762ee0e 724
jmarkel44 0:61364762ee0e 725 char *file_buf = (char*) malloc(MAX_FILE_SIZE*2);
jmarkel44 0:61364762ee0e 726 memset( file_buf, '\0', MAX_FILE_SIZE*2);
jmarkel44 0:61364762ee0e 727 if( GLOBAL_mdot->readUserFile( filename, (void *)file_buf, file_size ) != true ) {
jmarkel44 0:61364762ee0e 728 printf("Failed readUserFile\r\n");
jmarkel44 0:61364762ee0e 729 }
jmarkel44 0:61364762ee0e 730 printf("%s\r\n", file_buf);
jmarkel44 0:61364762ee0e 731 free(file_buf);
jmarkel44 0:61364762ee0e 732
jmarkel44 0:61364762ee0e 733 return;
jmarkel44 0:61364762ee0e 734 }
jmarkel44 0:61364762ee0e 735
jmarkel44 0:61364762ee0e 736 void cmd_deleteFile(int argc, char **argv)
jmarkel44 0:61364762ee0e 737 {
jmarkel44 0:61364762ee0e 738 char filename[FILENAME_LENGTH];
jmarkel44 0:61364762ee0e 739 memset( filename, '\0', FILENAME_LENGTH );
jmarkel44 0:61364762ee0e 740 strncpy( filename, argv[1], FILENAME_LENGTH-1 );
jmarkel44 0:61364762ee0e 741
jmarkel44 0:61364762ee0e 742 if( GLOBAL_mdot->deleteUserFile( filename ) != true ) {
jmarkel44 0:61364762ee0e 743 printf("Failed readUserFile\r\n");
jmarkel44 0:61364762ee0e 744 }
jmarkel44 0:61364762ee0e 745
jmarkel44 0:61364762ee0e 746 return;
jmarkel44 0:61364762ee0e 747 }
jmarkel44 0:61364762ee0e 748
jmarkel44 0:61364762ee0e 749 void cmd_lsFile( int argc, char ** argv )
jmarkel44 0:61364762ee0e 750 {
jmarkel44 0:61364762ee0e 751
jmarkel44 0:61364762ee0e 752 std::vector<std::string>::iterator file;
jmarkel44 0:61364762ee0e 753 std::vector<std::string> file_list;
jmarkel44 0:61364762ee0e 754 file_list = GLOBAL_mdot->listUserFiles();
jmarkel44 0:61364762ee0e 755 for(file = file_list.begin(); file != file_list.end(); ++file) {
jmarkel44 0:61364762ee0e 756 printf("%s\r\n", file->c_str() );
jmarkel44 0:61364762ee0e 757 }
jmarkel44 0:61364762ee0e 758
jmarkel44 0:61364762ee0e 759 mfs fs0(0xA0);
jmarkel44 0:61364762ee0e 760 // Get number of free blocks
jmarkel44 0:61364762ee0e 761 char iFreeBlocks = fs0.free();
jmarkel44 0:61364762ee0e 762 // Calculate amount of space used
jmarkel44 0:61364762ee0e 763 unsigned int iSpaceUsed = VOL_SIZE - (iFreeBlocks*BS);
jmarkel44 0:61364762ee0e 764 // Summary
jmarkel44 0:61364762ee0e 765 printf("\n\r%u/%u kB space used, %u blocks free\n\r\n\r", iSpaceUsed/1024, VOL_SIZE/1024, iFreeBlocks);
jmarkel44 0:61364762ee0e 766 }
jmarkel44 0:61364762ee0e 767
jmarkel44 0:61364762ee0e 768 /**
jmarkel44 0:61364762ee0e 769 * Serial read function.
jmarkel44 0:61364762ee0e 770 */
jmarkel44 0:61364762ee0e 771 int func_read(char *buf, int cnt)
jmarkel44 0:61364762ee0e 772 {
jmarkel44 0:61364762ee0e 773 for (int i = 0; i < cnt; i++) {
jmarkel44 0:61364762ee0e 774 buf[i] = console.getc();
jmarkel44 0:61364762ee0e 775 }
jmarkel44 0:61364762ee0e 776
jmarkel44 0:61364762ee0e 777 return 0;
jmarkel44 0:61364762ee0e 778 }
jmarkel44 0:61364762ee0e 779
jmarkel44 0:61364762ee0e 780 /**
jmarkel44 0:61364762ee0e 781 * Serial write function.
jmarkel44 0:61364762ee0e 782 */
jmarkel44 0:61364762ee0e 783 int func_write(const char *buf, int cnt)
jmarkel44 0:61364762ee0e 784 {
jmarkel44 0:61364762ee0e 785 for (int i = 0; i < cnt; i++) {
jmarkel44 0:61364762ee0e 786 console.putc(buf[i]);
jmarkel44 0:61364762ee0e 787 }
jmarkel44 0:61364762ee0e 788 return 0;
jmarkel44 0:61364762ee0e 789 }
jmarkel44 0:61364762ee0e 790
jmarkel44 0:61364762ee0e 791 /**
jmarkel44 0:61364762ee0e 792 * Callback function for ntshell module.
jmarkel44 0:61364762ee0e 793 */
jmarkel44 0:61364762ee0e 794 int func_cb_ntshell(const char *text)
jmarkel44 0:61364762ee0e 795 {
jmarkel44 0:61364762ee0e 796 return ntopt_parse(text, func_cb_ntopt);
jmarkel44 0:61364762ee0e 797 }
jmarkel44 0:61364762ee0e 798
jmarkel44 0:61364762ee0e 799 /**
jmarkel44 0:61364762ee0e 800 * Callback function for ntopt module.
jmarkel44 0:61364762ee0e 801 */
jmarkel44 0:61364762ee0e 802 void func_cb_ntopt(int argc, char **argv)
jmarkel44 0:61364762ee0e 803 {
jmarkel44 0:61364762ee0e 804 if (argc == 0) {
jmarkel44 0:61364762ee0e 805 return;
jmarkel44 0:61364762ee0e 806 }
jmarkel44 0:61364762ee0e 807 int execnt = 0;
jmarkel44 0:61364762ee0e 808 const command_table_t *p = &cmdlist[0];
jmarkel44 0:61364762ee0e 809 while (p->command != NULL) {
jmarkel44 0:61364762ee0e 810 if (strcmp(argv[0], p->command) == 0) {
jmarkel44 0:61364762ee0e 811 p->func(argc, argv);
jmarkel44 0:61364762ee0e 812 execnt++;
jmarkel44 0:61364762ee0e 813 }
jmarkel44 0:61364762ee0e 814 p++;
jmarkel44 0:61364762ee0e 815 }
jmarkel44 0:61364762ee0e 816 if (execnt == 0) {
jmarkel44 0:61364762ee0e 817 printf("Command not found.\r\n");
jmarkel44 0:61364762ee0e 818 }
jmarkel44 0:61364762ee0e 819 wait_ms(250);
jmarkel44 0:61364762ee0e 820 }
jmarkel44 0:61364762ee0e 821
jmarkel44 0:61364762ee0e 822 #if 0
jmarkel44 0:61364762ee0e 823 /*****************************************************************************
jmarkel44 0:61364762ee0e 824 * Function: cmd_createSequence
jmarkel44 0:61364762ee0e 825 * Description: create an administrative control
jmarkel44 0:61364762ee0e 826 *
jmarkel44 0:61364762ee0e 827 * @param argc-> number of args
jmarkel44 0:61364762ee0e 828 * @param argv-> control name, control type
jmarkel44 0:61364762ee0e 829 * @return none
jmarkel44 0:61364762ee0e 830 *****************************************************************************/
jmarkel44 0:61364762ee0e 831 void cmd_createSequence(int argc, char **argv)
jmarkel44 0:61364762ee0e 832 {
jmarkel44 0:61364762ee0e 833 char buf[MAX_FILE_SIZE*2];
jmarkel44 0:61364762ee0e 834
jmarkel44 0:61364762ee0e 835 // let's crreate the sequence control file
jmarkel44 0:61364762ee0e 836 std::string filename = "control_seq_SLUG-DOSE.json";
jmarkel44 0:61364762ee0e 837 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 838 "{ "
jmarkel44 0:61364762ee0e 839 "\"id\": \"SLUG-DOSE\", "
jmarkel44 0:61364762ee0e 840 "\"startTrigger\": \"v_slugSchedule\", "
jmarkel44 0:61364762ee0e 841 "\"sequence\": "
jmarkel44 0:61364762ee0e 842 "["
jmarkel44 0:61364762ee0e 843 // START PRE-BLEED elements
jmarkel44 0:61364762ee0e 844 "{ \"startTrigger\":\"v_alwaysTrue\", "
jmarkel44 0:61364762ee0e 845 "\"actions\": "
jmarkel44 0:61364762ee0e 846 "["
jmarkel44 0:61364762ee0e 847 "{ \"action\": \"create\", \"id\": \"PRE-BLEED-SP\" }, "
jmarkel44 0:61364762ee0e 848 "{ \"action\": \"create\", \"id\": \"GUARD-TM\" }"
jmarkel44 0:61364762ee0e 849 "]," // end actions array
jmarkel44 0:61364762ee0e 850 "\"stopTrigger\": \"v_PreBleedDone\" },"
jmarkel44 0:61364762ee0e 851
jmarkel44 0:61364762ee0e 852 // DELETE PRE-BLEED elements
jmarkel44 0:61364762ee0e 853 "{ \"startTrigger\":\"v_alwaysTrue\", "
jmarkel44 0:61364762ee0e 854 "\"actions\": "
jmarkel44 0:61364762ee0e 855 "["
jmarkel44 0:61364762ee0e 856 "{ \"action\": \"delete\", \"id\": \"PRE-BLEED-SP\" }, "
jmarkel44 0:61364762ee0e 857 "{ \"action\": \"delete\", \"id\": \"GUARD-TM\" }"
jmarkel44 0:61364762ee0e 858 "],"
jmarkel44 0:61364762ee0e 859 "\"stopTrigger\": \"v_alwaysTrue\" },"
jmarkel44 0:61364762ee0e 860
jmarkel44 0:61364762ee0e 861 // SLUG-FEED elements
jmarkel44 0:61364762ee0e 862 "{ \"startTrigger\":\"v_alwaysTrue\", "
jmarkel44 0:61364762ee0e 863 "\"actions\": "
jmarkel44 0:61364762ee0e 864 "["
jmarkel44 0:61364762ee0e 865 "{ \"action\": \"create\", \"id\": \"SLUG-FEED-SP\" } "
jmarkel44 0:61364762ee0e 866 "],"
jmarkel44 0:61364762ee0e 867 "\"stopTrigger\": \"v_SlugFeedDone\" },"
jmarkel44 0:61364762ee0e 868
jmarkel44 0:61364762ee0e 869 // DELETE SLUG-FEED elements
jmarkel44 0:61364762ee0e 870 "{ \"startTrigger\":\"v_alwaysTrue\", "
jmarkel44 0:61364762ee0e 871 "\"actions\": "
jmarkel44 0:61364762ee0e 872 "["
jmarkel44 0:61364762ee0e 873 "{ \"action\": \"delete\", \"id\": \"SLUG-FEED-SP\" } "
jmarkel44 0:61364762ee0e 874 "],"
jmarkel44 0:61364762ee0e 875 "\"stopTrigger\": \"v_alwaysTrue\" }"
jmarkel44 0:61364762ee0e 876 "] " // end sequence array
jmarkel44 0:61364762ee0e 877 "} ");
jmarkel44 0:61364762ee0e 878
jmarkel44 0:61364762ee0e 879 printf("String Length=%d\r\n", strlen(buf) );
jmarkel44 0:61364762ee0e 880 bool rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, sizeof(buf));
jmarkel44 0:61364762ee0e 881 if ( rc != true ) {
jmarkel44 0:61364762ee0e 882 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 883 return;
jmarkel44 0:61364762ee0e 884 } else {
jmarkel44 0:61364762ee0e 885 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 886 }
jmarkel44 0:61364762ee0e 887 // the pre-bleed setpoint control
jmarkel44 0:61364762ee0e 888 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 889 "{"
jmarkel44 0:61364762ee0e 890 "\"id\": \"PRE-BLEED-SP\","
jmarkel44 0:61364762ee0e 891 "\"priority\": \"750\", "
jmarkel44 0:61364762ee0e 892 "\"input\": \"i_bdcond\" ,"
jmarkel44 0:61364762ee0e 893 "\"output\": \"o_rly01\" ,"
jmarkel44 0:61364762ee0e 894 "\"setpoint\": \"1750\", "
jmarkel44 0:61364762ee0e 895 "\"prodfact\": \"\", "
jmarkel44 0:61364762ee0e 896 "\"actingDir\": \"1\", "
jmarkel44 0:61364762ee0e 897 "\"tol\": \"5\" "
jmarkel44 0:61364762ee0e 898 "}");
jmarkel44 0:61364762ee0e 899 filename = "seq_SLUG-DOSE_PRE-BLEED-SP.json";
jmarkel44 0:61364762ee0e 900 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void*)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 901 if ( rc != true ) {
jmarkel44 0:61364762ee0e 902 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 903 return;
jmarkel44 0:61364762ee0e 904 } else {
jmarkel44 0:61364762ee0e 905 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 906 }
jmarkel44 0:61364762ee0e 907
jmarkel44 0:61364762ee0e 908 // OUTPUT: Virtual Output - this is the START TRIGGER fro the control
jmarkel44 0:61364762ee0e 909 filename = "vregister_slugSchedule.json";
jmarkel44 0:61364762ee0e 910 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 911 "{ "
jmarkel44 0:61364762ee0e 912 "\"id\": \"v_slugSchedule\", "
jmarkel44 0:61364762ee0e 913 "\"value\": \"0\" "
jmarkel44 0:61364762ee0e 914 "}");
jmarkel44 0:61364762ee0e 915 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 916 if ( rc != true ) {
jmarkel44 0:61364762ee0e 917 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 918 return;
jmarkel44 0:61364762ee0e 919 } else {
jmarkel44 0:61364762ee0e 920 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 921 }
jmarkel44 0:61364762ee0e 922
jmarkel44 0:61364762ee0e 923 // VIRTUAL REGISTER: always True
jmarkel44 0:61364762ee0e 924 filename = "vregister_alwaysTrue.json";
jmarkel44 0:61364762ee0e 925 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 926 "{ "
jmarkel44 0:61364762ee0e 927 "\"id\": \"v_alwaysTrue\", "
jmarkel44 0:61364762ee0e 928 "\"value\": \"1\" "
jmarkel44 0:61364762ee0e 929 "}");
jmarkel44 0:61364762ee0e 930
jmarkel44 0:61364762ee0e 931 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 932 if ( rc != true ) {
jmarkel44 0:61364762ee0e 933 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 934 return;
jmarkel44 0:61364762ee0e 935 } else {
jmarkel44 0:61364762ee0e 936 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 937 }
jmarkel44 0:61364762ee0e 938
jmarkel44 0:61364762ee0e 939 // VIRTUAL REGISTER: v_GuardTimer
jmarkel44 0:61364762ee0e 940 filename = "vregister_GuardTimer.json";
jmarkel44 0:61364762ee0e 941 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 942 "{ "
jmarkel44 0:61364762ee0e 943 "\"id\": \"v_GuardTimer\", "
jmarkel44 0:61364762ee0e 944 "\"value\": \"0\" "
jmarkel44 0:61364762ee0e 945 "}");
jmarkel44 0:61364762ee0e 946
jmarkel44 0:61364762ee0e 947 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 948 if ( rc != true ) {
jmarkel44 0:61364762ee0e 949 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 950 return;
jmarkel44 0:61364762ee0e 951 } else {
jmarkel44 0:61364762ee0e 952 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 953 }
jmarkel44 0:61364762ee0e 954
jmarkel44 0:61364762ee0e 955 // VIRTUAL REGISTER: v_PreBleedDone
jmarkel44 0:61364762ee0e 956 filename = "vreg_PreBleedDone.json";
jmarkel44 0:61364762ee0e 957 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 958 "{ "
jmarkel44 0:61364762ee0e 959 "\"id\": \"v_PreBleedDone\", "
jmarkel44 0:61364762ee0e 960 "\"value\": \"0\" "
jmarkel44 0:61364762ee0e 961 "}");
jmarkel44 0:61364762ee0e 962
jmarkel44 0:61364762ee0e 963 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 964 if ( rc != true ) {
jmarkel44 0:61364762ee0e 965 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 966 return;
jmarkel44 0:61364762ee0e 967 } else {
jmarkel44 0:61364762ee0e 968 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 969 }
jmarkel44 0:61364762ee0e 970
jmarkel44 0:61364762ee0e 971 // VIRTUAL REGISTER: v_SlugFeedDone
jmarkel44 0:61364762ee0e 972 filename = "vreg_SlugFeedDone.json";
jmarkel44 0:61364762ee0e 973 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 974 "{ "
jmarkel44 0:61364762ee0e 975 "\"id\": \"v_SlugFeedDone\", "
jmarkel44 0:61364762ee0e 976 "\"value\": \"0\" "
jmarkel44 0:61364762ee0e 977 "}");
jmarkel44 0:61364762ee0e 978
jmarkel44 0:61364762ee0e 979 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 980 if ( rc != true ) {
jmarkel44 0:61364762ee0e 981 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 982 return;
jmarkel44 0:61364762ee0e 983 } else {
jmarkel44 0:61364762ee0e 984 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 985 }
jmarkel44 0:61364762ee0e 986
jmarkel44 0:61364762ee0e 987
jmarkel44 0:61364762ee0e 988 // CONTROL: GUARD-TIMER
jmarkel44 0:61364762ee0e 989 filename = "seq_SLUG-DOSE_GUARD-TM.json";
jmarkel44 0:61364762ee0e 990 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 991 "{"
jmarkel44 0:61364762ee0e 992 "\"id\":\"GUARD-TM\","
jmarkel44 0:61364762ee0e 993 "\"output\":\"v_GuardTimer\","
jmarkel44 0:61364762ee0e 994 "\"priority\":\"750\","
jmarkel44 0:61364762ee0e 995 "\"day\":\"\","
jmarkel44 0:61364762ee0e 996 "\"startHour\":\"\","
jmarkel44 0:61364762ee0e 997 "\"startMin\":\"\","
jmarkel44 0:61364762ee0e 998 "\"startSec\":\"\","
jmarkel44 0:61364762ee0e 999 "\"week\":\"\","
jmarkel44 0:61364762ee0e 1000 "\"duration\":\"60\" "
jmarkel44 0:61364762ee0e 1001 "}");
jmarkel44 0:61364762ee0e 1002 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void*)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1003 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1004 printf("failed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1005 return;
jmarkel44 0:61364762ee0e 1006 } else {
jmarkel44 0:61364762ee0e 1007 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1008 }
jmarkel44 0:61364762ee0e 1009
jmarkel44 0:61364762ee0e 1010 // the pre-bleed setpoint control
jmarkel44 0:61364762ee0e 1011 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1012 "{"
jmarkel44 0:61364762ee0e 1013 "\"id\": \"SLUG-FEED-SP\","
jmarkel44 0:61364762ee0e 1014 "\"priority\": \"750\", "
jmarkel44 0:61364762ee0e 1015 "\"input\": \"i_orp01\" ,"
jmarkel44 0:61364762ee0e 1016 "\"output\": \"o_rly02\" ,"
jmarkel44 0:61364762ee0e 1017 "\"setpoint\": \"400\", "
jmarkel44 0:61364762ee0e 1018 "\"prodfact\": \"\", "
jmarkel44 0:61364762ee0e 1019 "\"actingDir\": \"1\", "
jmarkel44 0:61364762ee0e 1020 "\"tol\": \"5\" "
jmarkel44 0:61364762ee0e 1021 "}");
jmarkel44 0:61364762ee0e 1022 filename = "seq_SLUG-DOSE_SLUG-FEED-SP.json";
jmarkel44 0:61364762ee0e 1023 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void*)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1024 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1025 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1026 return;
jmarkel44 0:61364762ee0e 1027 } else {
jmarkel44 0:61364762ee0e 1028 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1029 }
jmarkel44 0:61364762ee0e 1030 }
jmarkel44 0:61364762ee0e 1031 #endif
jmarkel44 0:61364762ee0e 1032
jmarkel44 0:61364762ee0e 1033 // PRELOAD command, used to create all the pertinent inputs, outputs, and
jmarkel44 0:61364762ee0e 1034 // controls needed to achieve a basic cooling water application
jmarkel44 0:61364762ee0e 1035 void cmd_preload(int argc, char **argv)
jmarkel44 0:61364762ee0e 1036 {
jmarkel44 0:61364762ee0e 1037 UNUSED(argc);
jmarkel44 0:61364762ee0e 1038 UNUSED(argv);
jmarkel44 0:61364762ee0e 1039
jmarkel44 0:61364762ee0e 1040 char buf[MAX_FILE_SIZE];
jmarkel44 0:61364762ee0e 1041 bool rc;
jmarkel44 0:61364762ee0e 1042
jmarkel44 0:61364762ee0e 1043 // PRELOADER:
jmarkel44 0:61364762ee0e 1044 // JavaScripts:
jmarkel44 0:61364762ee0e 1045 // js_noFlowDelay.js // implement 10 minute on delay for flow switch
jmarkel44 0:61364762ee0e 1046 // js_sum.js // sum two registers and store in register
jmarkel44 0:61364762ee0e 1047 // js_diff.js // diff two registers and store in register
jmarkel44 0:61364762ee0e 1048 // js_mul.js // mul two registers and store in register
jmarkel44 0:61364762ee0e 1049 // js_div.js // div two registers and store in register
jmarkel44 0:61364762ee0e 1050 // js_equ.js // equ set one register equal to another register
jmarkel44 0:61364762ee0e 1051 //
jmarkel44 0:61364762ee0e 1052 // Inputs:
jmarkel44 0:61364762ee0e 1053 // input_i_bdcond.json // conductivity probe
jmarkel44 0:61364762ee0e 1054 // input_i_bdcond_temp.json // conductivity probe : temperature
jmarkel44 0:61364762ee0e 1055 // input_i_flowsw01.json // flow switch
jmarkel44 0:61364762ee0e 1056 // input_i_orp01.json // ORP probe
jmarkel44 0:61364762ee0e 1057 // input_i_ph01.json // pH probe
jmarkel44 0:61364762ee0e 1058 // input_i_ph01_temp.json // pH probe : temperature
jmarkel44 0:61364762ee0e 1059 // input_i_tag01.json // tag (flu)
jmarkel44 0:61364762ee0e 1060 // input_i_tra01.json // Trasar
jmarkel44 0:61364762ee0e 1061 //
jmarkel44 0:61364762ee0e 1062 // Outputs:
jmarkel44 0:61364762ee0e 1063 // output_o_rly01.json // relay-1
jmarkel44 0:61364762ee0e 1064 // output_o_rly02.json // relay-2
jmarkel44 0:61364762ee0e 1065 //
jmarkel44 0:61364762ee0e 1066 // Standard Controls:
jmarkel44 0:61364762ee0e 1067 // control_sp_i_bd01.json // blowdown
jmarkel44 0:61364762ee0e 1068 // control_sp_i_tra01.json // Trasar
jmarkel44 0:61364762ee0e 1069 //
jmarkel44 0:61364762ee0e 1070 // Control Algorithms:
jmarkel44 0:61364762ee0e 1071 // control_ca_eq1.json // == 1
jmarkel44 0:61364762ee0e 1072 // control_ca_eq129.json // == 129
jmarkel44 0:61364762ee0e 1073 //
jmarkel44 0:61364762ee0e 1074 // Composite Controls:
jmarkel44 0:61364762ee0e 1075 // control_comp_flow.json // flow override
jmarkel44 0:61364762ee0e 1076 // control_comp_lockout.json // lockout blowdown
jmarkel44 0:61364762ee0e 1077
jmarkel44 0:61364762ee0e 1078 std::string filename = "ble_device_name.json";
jmarkel44 0:61364762ee0e 1079
jmarkel44 0:61364762ee0e 1080 snprintf(buf, sizeof(buf), "{\"id\":\"ICE-Ecolab\"}");
jmarkel44 0:61364762ee0e 1081
jmarkel44 0:61364762ee0e 1082 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1083 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1084 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1085 return;
jmarkel44 0:61364762ee0e 1086 } else {
jmarkel44 0:61364762ee0e 1087 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1088 }
jmarkel44 0:61364762ee0e 1089
jmarkel44 0:61364762ee0e 1090 filename = "vreg_const_1000.json";
jmarkel44 0:61364762ee0e 1091
jmarkel44 0:61364762ee0e 1092 // Constant: 1000.0
jmarkel44 0:61364762ee0e 1093 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1094 "{ "
jmarkel44 0:61364762ee0e 1095 "\"id\": \"v_Const_1000\", "
jmarkel44 0:61364762ee0e 1096 "\"value\": \"1000.0\" }");
jmarkel44 0:61364762ee0e 1097 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1098 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1099 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1100 return;
jmarkel44 0:61364762ee0e 1101 } else {
jmarkel44 0:61364762ee0e 1102 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1103 }
jmarkel44 0:61364762ee0e 1104
jmarkel44 0:61364762ee0e 1105 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1106
jmarkel44 0:61364762ee0e 1107 #ifdef EXECUTE_SCRIPT
jmarkel44 0:61364762ee0e 1108
jmarkel44 0:61364762ee0e 1109 filename = "vreg_noFlowDelaySig.json";
jmarkel44 0:61364762ee0e 1110
jmarkel44 0:61364762ee0e 1111 // Virtual Register: v_noFlowDelaySig
jmarkel44 0:61364762ee0e 1112 // Used to generate on delay timing for flow override.
jmarkel44 0:61364762ee0e 1113 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1114 "{ "
jmarkel44 0:61364762ee0e 1115 "\"id\": \"v_noFlowDelaySig\", "
jmarkel44 0:61364762ee0e 1116 "\"value\": \"1\" }");
jmarkel44 0:61364762ee0e 1117 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1118 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1119 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1120 return;
jmarkel44 0:61364762ee0e 1121 } else {
jmarkel44 0:61364762ee0e 1122 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1123 }
jmarkel44 0:61364762ee0e 1124
jmarkel44 0:61364762ee0e 1125 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1126
jmarkel44 0:61364762ee0e 1127 filename = "vreg_noFlowTimeStamp.json";
jmarkel44 0:61364762ee0e 1128
jmarkel44 0:61364762ee0e 1129 // Virtual Register: v_noFlowTimeStamp
jmarkel44 0:61364762ee0e 1130 // Used to generate on delay timing for flow override.
jmarkel44 0:61364762ee0e 1131 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1132 "{ "
jmarkel44 0:61364762ee0e 1133 "\"id\": \"v_noFlowTimeStamp\", "
jmarkel44 0:61364762ee0e 1134 "\"value\": \"0\" }");
jmarkel44 0:61364762ee0e 1135 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1136 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1137 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1138 return;
jmarkel44 0:61364762ee0e 1139 } else {
jmarkel44 0:61364762ee0e 1140 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1141 }
jmarkel44 0:61364762ee0e 1142
jmarkel44 0:61364762ee0e 1143 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1144
jmarkel44 0:61364762ee0e 1145 filename = "js_noFlowDelay.js";
jmarkel44 0:61364762ee0e 1146
jmarkel44 0:61364762ee0e 1147 // JavaScript: sum(a, b, c)
jmarkel44 0:61364762ee0e 1148 // a = Flow Input Signal - this is the signal we are doing the on delay timing for
jmarkel44 0:61364762ee0e 1149 // b = v_noFlowDelaySig - signal generated after No Flow condition exsits for 10 minutes
jmarkel44 0:61364762ee0e 1150 // c = v_noFlowTimeStamp - mark of when the no flow signal first started
jmarkel44 0:61364762ee0e 1151 //
jmarkel44 0:61364762ee0e 1152 // "\"args\":[{\"arg\":\"i_flowsw01\"},{\"arg\":\"v_noFlowDelaySig\"},{\"arg\":\"v_noFlowTimeStamp\"}],"
jmarkel44 0:61364762ee0e 1153 //
jmarkel44 0:61364762ee0e 1154 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1155 "var noFlowDelay=function(a,b,c){"
jmarkel44 0:61364762ee0e 1156 "f_state=getRegister(a);"
jmarkel44 0:61364762ee0e 1157 "if(f_state==1){"
jmarkel44 0:61364762ee0e 1158 // we have flow on the skid, reset timestamp to 0
jmarkel44 0:61364762ee0e 1159 // and reset the "delayed" signal to indicate we have flow
jmarkel44 0:61364762ee0e 1160 "setRegister(c,0);"
jmarkel44 0:61364762ee0e 1161 "setRegister(b,f_state);"
jmarkel44 0:61364762ee0e 1162 "}else{"
jmarkel44 0:61364762ee0e 1163 // we don't have flow on the skid
jmarkel44 0:61364762ee0e 1164 "curr_time=getTime();"
jmarkel44 0:61364762ee0e 1165 "st_tstamp=getRegister(c);"
jmarkel44 0:61364762ee0e 1166 "if(st_tstamp==0) {"
jmarkel44 0:61364762ee0e 1167 // this is the 1st read of no-flow
jmarkel44 0:61364762ee0e 1168 // mark the start of the delay timing
jmarkel44 0:61364762ee0e 1169 "setRegister(c,curr_time);"
jmarkel44 0:61364762ee0e 1170 "}else{"
jmarkel44 0:61364762ee0e 1171 // determine how long we have been doing the delay timing.
jmarkel44 0:61364762ee0e 1172 "diff_time=curr_time-st_tstamp;"
jmarkel44 0:61364762ee0e 1173 //"print(' Delay='+diff_time+'\r');"
jmarkel44 0:61364762ee0e 1174 "if(diff_time>=600){"
jmarkel44 0:61364762ee0e 1175 // been doing the delay timing for at least 10 minutes
jmarkel44 0:61364762ee0e 1176 // set the delayed signal to equal the actual flow switch
jmarkel44 0:61364762ee0e 1177 "setRegister(b,f_state);"
jmarkel44 0:61364762ee0e 1178 "}"
jmarkel44 0:61364762ee0e 1179 "}"
jmarkel44 0:61364762ee0e 1180 "}"
jmarkel44 0:61364762ee0e 1181 "return 1;"
jmarkel44 0:61364762ee0e 1182 "};" );
jmarkel44 0:61364762ee0e 1183 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1184 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1185 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1186 return;
jmarkel44 0:61364762ee0e 1187 } else {
jmarkel44 0:61364762ee0e 1188 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1189 }
jmarkel44 0:61364762ee0e 1190
jmarkel44 0:61364762ee0e 1191 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1192
jmarkel44 0:61364762ee0e 1193 filename = "js_sum.js";
jmarkel44 0:61364762ee0e 1194
jmarkel44 0:61364762ee0e 1195 // JavaScript: sum(a, b, c)
jmarkel44 0:61364762ee0e 1196 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1197 "var sum = function(a, b, c) {"
jmarkel44 0:61364762ee0e 1198 "res = (getRegister(a) + getRegister(b));"
jmarkel44 0:61364762ee0e 1199 "setRegister(c,res);"
jmarkel44 0:61364762ee0e 1200 "return res;"
jmarkel44 0:61364762ee0e 1201 "};"
jmarkel44 0:61364762ee0e 1202 );
jmarkel44 0:61364762ee0e 1203 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1204 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1205 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1206 return;
jmarkel44 0:61364762ee0e 1207 } else {
jmarkel44 0:61364762ee0e 1208 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1209 }
jmarkel44 0:61364762ee0e 1210
jmarkel44 0:61364762ee0e 1211 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1212
jmarkel44 0:61364762ee0e 1213 filename = "js_diff.js";
jmarkel44 0:61364762ee0e 1214
jmarkel44 0:61364762ee0e 1215 // JavaScript: diff(a, b, c)
jmarkel44 0:61364762ee0e 1216 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1217 "var diff = function(a, b, c) {"
jmarkel44 0:61364762ee0e 1218 "res = (getRegister(a) - getRegister(b));"
jmarkel44 0:61364762ee0e 1219 "setRegister(c,res);"
jmarkel44 0:61364762ee0e 1220 "return res;"
jmarkel44 0:61364762ee0e 1221 "};"
jmarkel44 0:61364762ee0e 1222 );
jmarkel44 0:61364762ee0e 1223 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1224 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1225 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1226 return;
jmarkel44 0:61364762ee0e 1227 } else {
jmarkel44 0:61364762ee0e 1228 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1229 }
jmarkel44 0:61364762ee0e 1230
jmarkel44 0:61364762ee0e 1231 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1232
jmarkel44 0:61364762ee0e 1233 filename = "js_div.js";
jmarkel44 0:61364762ee0e 1234
jmarkel44 0:61364762ee0e 1235 // JavaScript: div(a, b, c)
jmarkel44 0:61364762ee0e 1236 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1237 "var div = function(a, b, c) {"
jmarkel44 0:61364762ee0e 1238 "res = (getRegister(a) / getRegister(b));"
jmarkel44 0:61364762ee0e 1239 "setRegister(c,res);"
jmarkel44 0:61364762ee0e 1240 "return res;"
jmarkel44 0:61364762ee0e 1241 "};"
jmarkel44 0:61364762ee0e 1242 );
jmarkel44 0:61364762ee0e 1243 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1244 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1245 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1246 return;
jmarkel44 0:61364762ee0e 1247 } else {
jmarkel44 0:61364762ee0e 1248 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1249 }
jmarkel44 0:61364762ee0e 1250
jmarkel44 0:61364762ee0e 1251 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1252
jmarkel44 0:61364762ee0e 1253 filename = "js_mul.js";
jmarkel44 0:61364762ee0e 1254
jmarkel44 0:61364762ee0e 1255 // JavaScript: mul(a, b, c)
jmarkel44 0:61364762ee0e 1256 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1257 "var mul = function(a, b, c) {"
jmarkel44 0:61364762ee0e 1258 "res = (getRegister(a) * getRegister(b));"
jmarkel44 0:61364762ee0e 1259 "setRegister(c,res);"
jmarkel44 0:61364762ee0e 1260 "return res;"
jmarkel44 0:61364762ee0e 1261 "};"
jmarkel44 0:61364762ee0e 1262 );
jmarkel44 0:61364762ee0e 1263 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1264 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1265 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1266 return;
jmarkel44 0:61364762ee0e 1267 } else {
jmarkel44 0:61364762ee0e 1268 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1269 }
jmarkel44 0:61364762ee0e 1270
jmarkel44 0:61364762ee0e 1271 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1272
jmarkel44 0:61364762ee0e 1273 filename = "js_equ.js";
jmarkel44 0:61364762ee0e 1274
jmarkel44 0:61364762ee0e 1275 // JavaScript: equ(a, b)
jmarkel44 0:61364762ee0e 1276 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1277 "var equ = function(a, b) {"
jmarkel44 0:61364762ee0e 1278 "res = getRegister(a);"
jmarkel44 0:61364762ee0e 1279 "setRegister(b,res);"
jmarkel44 0:61364762ee0e 1280 "return res;"
jmarkel44 0:61364762ee0e 1281 "};"
jmarkel44 0:61364762ee0e 1282 );
jmarkel44 0:61364762ee0e 1283 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1284 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1285 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1286 return;
jmarkel44 0:61364762ee0e 1287 } else {
jmarkel44 0:61364762ee0e 1288 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1289 }
jmarkel44 0:61364762ee0e 1290
jmarkel44 0:61364762ee0e 1291 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1292
jmarkel44 0:61364762ee0e 1293 filename = "exe_js_div_cond_temp01.js";
jmarkel44 0:61364762ee0e 1294
jmarkel44 0:61364762ee0e 1295 // Execute JavaScript: DIV_COND_TEMP01
jmarkel44 0:61364762ee0e 1296 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1297 "{ "
jmarkel44 0:61364762ee0e 1298 "\"id\":\"DIV_COND_TEMP01\","
jmarkel44 0:61364762ee0e 1299 "\"script\":\"div\","
jmarkel44 0:61364762ee0e 1300 "\"args\":[{\"arg\":\"i_cond_temp01\"},{\"arg\":\"v_Const_1000\"},{\"arg\":\"i_cond_temp01\"}]"
jmarkel44 0:61364762ee0e 1301 "};"
jmarkel44 0:61364762ee0e 1302 );
jmarkel44 0:61364762ee0e 1303 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1304 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1305 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1306 return;
jmarkel44 0:61364762ee0e 1307 } else {
jmarkel44 0:61364762ee0e 1308 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1309 }
jmarkel44 0:61364762ee0e 1310
jmarkel44 0:61364762ee0e 1311 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1312
jmarkel44 0:61364762ee0e 1313 filename = "exe_js_div_ph01.js";
jmarkel44 0:61364762ee0e 1314
jmarkel44 0:61364762ee0e 1315 // Execute JavaScript: DIV_PH01
jmarkel44 0:61364762ee0e 1316 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1317 "{ "
jmarkel44 0:61364762ee0e 1318 "\"id\":\"DIV_PH01\","
jmarkel44 0:61364762ee0e 1319 "\"script\":\"div\","
jmarkel44 0:61364762ee0e 1320 "\"args\":[{\"arg\":\"i_ph01\"},{\"arg\":\"v_Const_1000\"},{\"arg\":\"i_ph01\"}]"
jmarkel44 0:61364762ee0e 1321 "};"
jmarkel44 0:61364762ee0e 1322 );
jmarkel44 0:61364762ee0e 1323 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1324 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1325 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1326 return;
jmarkel44 0:61364762ee0e 1327 } else {
jmarkel44 0:61364762ee0e 1328 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1329 }
jmarkel44 0:61364762ee0e 1330
jmarkel44 0:61364762ee0e 1331 filename = "exe_js_prebleed.js";
jmarkel44 0:61364762ee0e 1332 // Execute JavaScript: PREBLEED_DONE.json
jmarkel44 0:61364762ee0e 1333 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1334 "{ "
jmarkel44 0:61364762ee0e 1335 "\"id\":\"PREBLEED_DONE\","
jmarkel44 0:61364762ee0e 1336 "\"script\":\"prebleed_done\","
jmarkel44 0:61364762ee0e 1337 // in: o_rly01
jmarkel44 0:61364762ee0e 1338 // in: v_pbTimer
jmarkel44 0:61364762ee0e 1339 // out" v_preBleedDone
jmarkel44 0:61364762ee0e 1340 "\"args\":[{\"arg\":\"o_rly01\"},{\"arg\":\"v_pbTimer\"},{\"arg\":\"v_preBleedDone\"}]"
jmarkel44 0:61364762ee0e 1341 "};"
jmarkel44 0:61364762ee0e 1342 );
jmarkel44 0:61364762ee0e 1343 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1344 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1345 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1346 return;
jmarkel44 0:61364762ee0e 1347 } else {
jmarkel44 0:61364762ee0e 1348 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1349 }
jmarkel44 0:61364762ee0e 1350
jmarkel44 0:61364762ee0e 1351 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1352
jmarkel44 0:61364762ee0e 1353 /*
jmarkel44 0:61364762ee0e 1354 filename = "exe_js_div_ph_temp01.js";
jmarkel44 0:61364762ee0e 1355
jmarkel44 0:61364762ee0e 1356 // Execute JavaScript: DIV_PH_TEMP01
jmarkel44 0:61364762ee0e 1357 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1358 "{ "
jmarkel44 0:61364762ee0e 1359 "\"id\":\"DIV_PH_TEMP01\","
jmarkel44 0:61364762ee0e 1360 "\"script\":\"div\","
jmarkel44 0:61364762ee0e 1361 "\"args\":[{\"arg\":\"i_ph_temp01\"},{\"arg\":\"v_Const_1000\"},{\"arg\":\"i_ph_temp01\"}]"
jmarkel44 0:61364762ee0e 1362 "};"
jmarkel44 0:61364762ee0e 1363 );
jmarkel44 0:61364762ee0e 1364 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1365 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1366 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1367 return;
jmarkel44 0:61364762ee0e 1368 } else {
jmarkel44 0:61364762ee0e 1369 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1370 }
jmarkel44 0:61364762ee0e 1371
jmarkel44 0:61364762ee0e 1372 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1373
jmarkel44 0:61364762ee0e 1374 filename = "exe_js_no_flow_delay.js";
jmarkel44 0:61364762ee0e 1375
jmarkel44 0:61364762ee0e 1376 // Execute JavaScript: NO_FLOW_DELAY
jmarkel44 0:61364762ee0e 1377 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1378 "{ "
jmarkel44 0:61364762ee0e 1379 "\"id\":\"NO_FLOW_DELAY\","
jmarkel44 0:61364762ee0e 1380 "\"script\":\"noFlowDelay\","
jmarkel44 0:61364762ee0e 1381 "\"args\":[{\"arg\":\"i_flowsw01\"},{\"arg\":\"v_noFlowDelaySig\"},{\"arg\":\"v_noFlowTimeStamp\"}]"
jmarkel44 0:61364762ee0e 1382 "};"
jmarkel44 0:61364762ee0e 1383 );
jmarkel44 0:61364762ee0e 1384 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1385 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1386 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1387 return;
jmarkel44 0:61364762ee0e 1388 } else {
jmarkel44 0:61364762ee0e 1389 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1390 }
jmarkel44 0:61364762ee0e 1391
jmarkel44 0:61364762ee0e 1392 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1393 */
jmarkel44 0:61364762ee0e 1394 #endif
jmarkel44 0:61364762ee0e 1395
jmarkel44 0:61364762ee0e 1396 filename = "input_i_bdcond01.json";
jmarkel44 0:61364762ee0e 1397
jmarkel44 0:61364762ee0e 1398 // INPUT: Conductivity
jmarkel44 0:61364762ee0e 1399 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1400 "{ "
jmarkel44 0:61364762ee0e 1401 "\"id\": \"i_bdcond01\","
jmarkel44 0:61364762ee0e 1402 "\"name\": \"Tower Conductivity\", "
jmarkel44 0:61364762ee0e 1403 "\"units\": \"uS\","
jmarkel44 0:61364762ee0e 1404 "\"min\": \"0\","
jmarkel44 0:61364762ee0e 1405 "\"max\": \"6000\","
jmarkel44 0:61364762ee0e 1406 "\"node\": \"21\","
jmarkel44 0:61364762ee0e 1407 "\"reg\": \"18\","
jmarkel44 0:61364762ee0e 1408 "\"rtype\": \"4\","
jmarkel44 0:61364762ee0e 1409 "\"type\": \"1\","
jmarkel44 0:61364762ee0e 1410 "\"size\": \"2\","
jmarkel44 0:61364762ee0e 1411 "\"order\": \"2\","
jmarkel44 0:61364762ee0e 1412 "\"fmt\": \"%%.2f\","
jmarkel44 0:61364762ee0e 1413 "\"cmd\": \"\","
jmarkel44 0:61364762ee0e 1414 "\"args\": [],"
jmarkel44 0:61364762ee0e 1415 "\"rfreq\": \"5\" }");
jmarkel44 0:61364762ee0e 1416 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1417 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1418 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1419 return;
jmarkel44 0:61364762ee0e 1420 } else {
jmarkel44 0:61364762ee0e 1421 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1422 }
jmarkel44 0:61364762ee0e 1423
jmarkel44 0:61364762ee0e 1424 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1425
jmarkel44 0:61364762ee0e 1426 // INPUT: Conductivity Temperature
jmarkel44 0:61364762ee0e 1427 filename = "input_i_cond_temp01.json";
jmarkel44 0:61364762ee0e 1428 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1429 "{ "
jmarkel44 0:61364762ee0e 1430 "\"id\":\"i_cond_temp01\","
jmarkel44 0:61364762ee0e 1431 "\"name\":\"Temp Conductivity\","
jmarkel44 0:61364762ee0e 1432 "\"units\":\"C\","
jmarkel44 0:61364762ee0e 1433 "\"min\":\"0\","
jmarkel44 0:61364762ee0e 1434 "\"max\":\"80\","
jmarkel44 0:61364762ee0e 1435 "\"node\":\"21\","
jmarkel44 0:61364762ee0e 1436 "\"reg\":\"10\","
jmarkel44 0:61364762ee0e 1437 "\"rtype\":\"4\","
jmarkel44 0:61364762ee0e 1438 "\"type\":\"1\","
jmarkel44 0:61364762ee0e 1439 "\"size\":\"2\","
jmarkel44 0:61364762ee0e 1440 "\"order\":\"2\","
jmarkel44 0:61364762ee0e 1441 "\"fmt\":\"%%.2f\","
jmarkel44 0:61364762ee0e 1442 "\"cmd\":\"div\","
jmarkel44 0:61364762ee0e 1443 "\"args\":[{\"arg\":\"i_cond_temp01\"},{\"arg\":\"v_Const_1000\"},{\"arg\":\"i_cond_temp01\"}],"
jmarkel44 0:61364762ee0e 1444 "\"rfreq\":\"5\" }");
jmarkel44 0:61364762ee0e 1445 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1446 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1447 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1448 return;
jmarkel44 0:61364762ee0e 1449 } else {
jmarkel44 0:61364762ee0e 1450 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1451 }
jmarkel44 0:61364762ee0e 1452
jmarkel44 0:61364762ee0e 1453 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1454
jmarkel44 0:61364762ee0e 1455 // INPUT: Flow Switch
jmarkel44 0:61364762ee0e 1456 filename = "input_i_flowsw01.json";
jmarkel44 0:61364762ee0e 1457 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1458 "{ "
jmarkel44 0:61364762ee0e 1459 "\"id\": \"i_flowsw01\","
jmarkel44 0:61364762ee0e 1460 "\"name\": \"Flow\","
jmarkel44 0:61364762ee0e 1461 "\"units\": \"\","
jmarkel44 0:61364762ee0e 1462 "\"min\": \"0\","
jmarkel44 0:61364762ee0e 1463 "\"max\": \"1\","
jmarkel44 0:61364762ee0e 1464 "\"node\": \"0\","
jmarkel44 0:61364762ee0e 1465 "\"reg\": \"1\","
jmarkel44 0:61364762ee0e 1466 "\"rtype\": \"0\","
jmarkel44 0:61364762ee0e 1467 "\"type\": \"3\","
jmarkel44 0:61364762ee0e 1468 "\"size\": \"2\","
jmarkel44 0:61364762ee0e 1469 "\"order\": \"0\","
jmarkel44 0:61364762ee0e 1470 "\"fmt\": \"%%d\","
jmarkel44 0:61364762ee0e 1471 "\"cmd\": \"\","
jmarkel44 0:61364762ee0e 1472 "\"args\": [],"
jmarkel44 0:61364762ee0e 1473 "\"rfreq\": \"5\" }");
jmarkel44 0:61364762ee0e 1474 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1475 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1476 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1477 return;
jmarkel44 0:61364762ee0e 1478 } else {
jmarkel44 0:61364762ee0e 1479 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1480 }
jmarkel44 0:61364762ee0e 1481
jmarkel44 0:61364762ee0e 1482 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1483
jmarkel44 0:61364762ee0e 1484 // INPUT: ORP
jmarkel44 0:61364762ee0e 1485 filename = "input_i_orp01.json";
jmarkel44 0:61364762ee0e 1486 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1487 "{ "
jmarkel44 0:61364762ee0e 1488 "\"id\": \"i_orp01\","
jmarkel44 0:61364762ee0e 1489 "\"name\": \"ORP\","
jmarkel44 0:61364762ee0e 1490 "\"units\": \"mV\","
jmarkel44 0:61364762ee0e 1491 "\"min\": \"0\","
jmarkel44 0:61364762ee0e 1492 "\"max\": \"10\","
jmarkel44 0:61364762ee0e 1493 "\"node\": \"23\","
jmarkel44 0:61364762ee0e 1494 "\"reg\": \"14\","
jmarkel44 0:61364762ee0e 1495 "\"rtype\": \"4\","
jmarkel44 0:61364762ee0e 1496 "\"type\": \"1\","
jmarkel44 0:61364762ee0e 1497 "\"size\": \"2\","
jmarkel44 0:61364762ee0e 1498 "\"order\": \"2\","
jmarkel44 0:61364762ee0e 1499 "\"fmt\": \"%%.2f\","
jmarkel44 0:61364762ee0e 1500 "\"cmd\": \"\","
jmarkel44 0:61364762ee0e 1501 "\"args\": [],"
jmarkel44 0:61364762ee0e 1502 "\"rfreq\": \"5\" }");
jmarkel44 0:61364762ee0e 1503 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1504 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1505 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1506 return;
jmarkel44 0:61364762ee0e 1507 } else {
jmarkel44 0:61364762ee0e 1508 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1509 }
jmarkel44 0:61364762ee0e 1510
jmarkel44 0:61364762ee0e 1511 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1512
jmarkel44 0:61364762ee0e 1513 // INPUT: pH
jmarkel44 0:61364762ee0e 1514 filename = "input_i_ph01.json";
jmarkel44 0:61364762ee0e 1515 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1516 "{ "
jmarkel44 0:61364762ee0e 1517 "\"id\":\"i_ph01\","
jmarkel44 0:61364762ee0e 1518 "\"name\":\"pH\","
jmarkel44 0:61364762ee0e 1519 "\"units\":\"pH\","
jmarkel44 0:61364762ee0e 1520 "\"min\":\"0\","
jmarkel44 0:61364762ee0e 1521 "\"max\":\"10\","
jmarkel44 0:61364762ee0e 1522 "\"node\":\"22\","
jmarkel44 0:61364762ee0e 1523 "\"reg\":\"18\","
jmarkel44 0:61364762ee0e 1524 "\"rtype\":\"4\","
jmarkel44 0:61364762ee0e 1525 "\"type\":\"1\","
jmarkel44 0:61364762ee0e 1526 "\"size\":\"2\","
jmarkel44 0:61364762ee0e 1527 "\"order\":\"2\","
jmarkel44 0:61364762ee0e 1528 "\"fmt\":\"%%.2f\","
jmarkel44 0:61364762ee0e 1529 "\"cmd\":\"div\","
jmarkel44 0:61364762ee0e 1530 "\"args\":[{\"arg\":\"i_ph01\"},{\"arg\":\"v_Const_1000\"},{\"arg\":\"i_ph01\"}],"
jmarkel44 0:61364762ee0e 1531 "\"rfreq\":\"5\" }");
jmarkel44 0:61364762ee0e 1532 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1533 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1534 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1535 return;
jmarkel44 0:61364762ee0e 1536 } else {
jmarkel44 0:61364762ee0e 1537 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1538 }
jmarkel44 0:61364762ee0e 1539
jmarkel44 0:61364762ee0e 1540 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1541
jmarkel44 0:61364762ee0e 1542 // INPUT: pH Temperature
jmarkel44 0:61364762ee0e 1543 filename = "input_i_ph01_temp.json";
jmarkel44 0:61364762ee0e 1544 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1545 "{ "
jmarkel44 0:61364762ee0e 1546 "\"id\":\"i_ph_temp01\","
jmarkel44 0:61364762ee0e 1547 "\"name\":\"Temp pH\","
jmarkel44 0:61364762ee0e 1548 "\"units\":\"C\","
jmarkel44 0:61364762ee0e 1549 "\"min\":\"0\","
jmarkel44 0:61364762ee0e 1550 "\"max\":\"10\","
jmarkel44 0:61364762ee0e 1551 "\"node\":\"22\","
jmarkel44 0:61364762ee0e 1552 "\"reg\":\"10\","
jmarkel44 0:61364762ee0e 1553 "\"rtype\":\"4\","
jmarkel44 0:61364762ee0e 1554 "\"type\":\"1\","
jmarkel44 0:61364762ee0e 1555 "\"size\":\"2\","
jmarkel44 0:61364762ee0e 1556 "\"order\":\"2\","
jmarkel44 0:61364762ee0e 1557 "\"fmt\":\"%%.2f\","
jmarkel44 0:61364762ee0e 1558 "\"cmd\":\"div\","
jmarkel44 0:61364762ee0e 1559 "\"args\":[{\"arg\":\"i_ph_temp01\"},{\"arg\":\"v_Const_1000\"},{\"arg\":\"i_ph_temp01\"}],"
jmarkel44 0:61364762ee0e 1560 "\"rfreq\":\"5\" }");
jmarkel44 0:61364762ee0e 1561 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1562 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1563 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1564 return;
jmarkel44 0:61364762ee0e 1565 } else {
jmarkel44 0:61364762ee0e 1566 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1567 }
jmarkel44 0:61364762ee0e 1568
jmarkel44 0:61364762ee0e 1569 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1570
jmarkel44 0:61364762ee0e 1571 // INPUT: Tag
jmarkel44 0:61364762ee0e 1572 filename = "input_i_tag01.json";
jmarkel44 0:61364762ee0e 1573 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1574 "{ "
jmarkel44 0:61364762ee0e 1575 "\"id\": \"i_tag01\","
jmarkel44 0:61364762ee0e 1576 "\"name\": \"Tag\", "
jmarkel44 0:61364762ee0e 1577 "\"units\": \"PPM\", "
jmarkel44 0:61364762ee0e 1578 "\"min\": \"0\", "
jmarkel44 0:61364762ee0e 1579 "\"max\": \"300\", "
jmarkel44 0:61364762ee0e 1580 "\"node\": \"1\", "
jmarkel44 0:61364762ee0e 1581 "\"reg\": \"11\", "
jmarkel44 0:61364762ee0e 1582 "\"rtype\": \"4\", "
jmarkel44 0:61364762ee0e 1583 "\"type\": \"0\", "
jmarkel44 0:61364762ee0e 1584 "\"size\": \"2\", "
jmarkel44 0:61364762ee0e 1585 "\"order\": \"2\", "
jmarkel44 0:61364762ee0e 1586 "\"fmt\": \"%%.2f\", "
jmarkel44 0:61364762ee0e 1587 "\"cmd\": \"\", "
jmarkel44 0:61364762ee0e 1588 "\"args\": [],"
jmarkel44 0:61364762ee0e 1589 "\"rfreq\": \"5\" }");
jmarkel44 0:61364762ee0e 1590 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1591 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1592 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1593 return;
jmarkel44 0:61364762ee0e 1594 } else {
jmarkel44 0:61364762ee0e 1595 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1596 }
jmarkel44 0:61364762ee0e 1597
jmarkel44 0:61364762ee0e 1598 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1599
jmarkel44 0:61364762ee0e 1600 // INPUT: Trasar
jmarkel44 0:61364762ee0e 1601 filename = "input_i_tra01.json";
jmarkel44 0:61364762ee0e 1602 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1603 "{ "
jmarkel44 0:61364762ee0e 1604 "\"id\": \"i_tra01\","
jmarkel44 0:61364762ee0e 1605 "\"name\": \"Trasar\", "
jmarkel44 0:61364762ee0e 1606 "\"units\": \"PPM\", "
jmarkel44 0:61364762ee0e 1607 "\"min\": \"0\", "
jmarkel44 0:61364762ee0e 1608 "\"max\": \"300\", "
jmarkel44 0:61364762ee0e 1609 "\"node\": \"1\", "
jmarkel44 0:61364762ee0e 1610 "\"reg\": \"9\", "
jmarkel44 0:61364762ee0e 1611 "\"rtype\": \"4\", "
jmarkel44 0:61364762ee0e 1612 "\"type\": \"0\", "
jmarkel44 0:61364762ee0e 1613 "\"size\": \"2\", "
jmarkel44 0:61364762ee0e 1614 "\"order\": \"2\", "
jmarkel44 0:61364762ee0e 1615 "\"fmt\": \"%%.2f\", "
jmarkel44 0:61364762ee0e 1616 "\"cmd\": \"\", "
jmarkel44 0:61364762ee0e 1617 "\"args\": [],"
jmarkel44 0:61364762ee0e 1618 "\"rfreq\": \"5\" }");
jmarkel44 0:61364762ee0e 1619 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1620 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1621 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1622 return;
jmarkel44 0:61364762ee0e 1623 } else {
jmarkel44 0:61364762ee0e 1624 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1625 }
jmarkel44 0:61364762ee0e 1626
jmarkel44 0:61364762ee0e 1627 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1628
jmarkel44 0:61364762ee0e 1629 // COMMAND: Divide by 1000
jmarkel44 0:61364762ee0e 1630 filename = "cmd_div.json";
jmarkel44 0:61364762ee0e 1631 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1632 "{ "
jmarkel44 0:61364762ee0e 1633 "\"id\":\"%s\", "
jmarkel44 0:61364762ee0e 1634 "\"Operand\":\"%s\", "
jmarkel44 0:61364762ee0e 1635 "\"Operator\":\"%s\", "
jmarkel44 0:61364762ee0e 1636 "\"Constant\":\"%s\" } ", "div", "", "/", "1000.0");
jmarkel44 0:61364762ee0e 1637
jmarkel44 0:61364762ee0e 1638 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1639 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1640 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1641 return;
jmarkel44 0:61364762ee0e 1642 } else {
jmarkel44 0:61364762ee0e 1643 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1644 }
jmarkel44 0:61364762ee0e 1645
jmarkel44 0:61364762ee0e 1646 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1647
jmarkel44 0:61364762ee0e 1648 // OUTPUT: Relay 01
jmarkel44 0:61364762ee0e 1649 filename = "output_o_rly01.json";
jmarkel44 0:61364762ee0e 1650 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1651 "{ "
jmarkel44 0:61364762ee0e 1652 "\"id\": \"o_rly01\", "
jmarkel44 0:61364762ee0e 1653 "\"name\": \"Blowdown\", "
jmarkel44 0:61364762ee0e 1654 "\"units\": \"\", "
jmarkel44 0:61364762ee0e 1655 "\"min\": \"0\", "
jmarkel44 0:61364762ee0e 1656 "\"max\": \"300\", "
jmarkel44 0:61364762ee0e 1657 "\"node\": \"0\", "
jmarkel44 0:61364762ee0e 1658 "\"reg\": \"1\", "
jmarkel44 0:61364762ee0e 1659 "\"rtype\": \"1\", "
jmarkel44 0:61364762ee0e 1660 "\"type\": \"0\", "
jmarkel44 0:61364762ee0e 1661 "\"size\": \"2\", "
jmarkel44 0:61364762ee0e 1662 "\"order\": \"2\", "
jmarkel44 0:61364762ee0e 1663 "\"fmt\": \"%%.2f\", "
jmarkel44 0:61364762ee0e 1664 "\"cmd\": \"\", "
jmarkel44 0:61364762ee0e 1665 "\"args\": [], "
jmarkel44 0:61364762ee0e 1666 "\"rfreq\": \"5\", "
jmarkel44 0:61364762ee0e 1667 "\"toperiod\": \"0\", "
jmarkel44 0:61364762ee0e 1668 "\"scalelo\": \"0\", "
jmarkel44 0:61364762ee0e 1669 "\"scalehi\": \"100\" }");
jmarkel44 0:61364762ee0e 1670 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1671 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1672 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1673 return;
jmarkel44 0:61364762ee0e 1674 } else {
jmarkel44 0:61364762ee0e 1675 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1676 }
jmarkel44 0:61364762ee0e 1677
jmarkel44 0:61364762ee0e 1678 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1679
jmarkel44 0:61364762ee0e 1680 // OUTPUT: Relay 02
jmarkel44 0:61364762ee0e 1681 filename = "output_o_rly02.json";
jmarkel44 0:61364762ee0e 1682 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1683 "{ "
jmarkel44 0:61364762ee0e 1684 "\"id\": \"o_rly02\", "
jmarkel44 0:61364762ee0e 1685 "\"name\": \"3DTS86\", "
jmarkel44 0:61364762ee0e 1686 "\"units\": \"\", "
jmarkel44 0:61364762ee0e 1687 "\"min\": \"0\", "
jmarkel44 0:61364762ee0e 1688 "\"max\": \"300\", "
jmarkel44 0:61364762ee0e 1689 "\"node\": \"0\", "
jmarkel44 0:61364762ee0e 1690 "\"reg\": \"2\", "
jmarkel44 0:61364762ee0e 1691 "\"rtype\": \"1\", "
jmarkel44 0:61364762ee0e 1692 "\"type\": \"0\", "
jmarkel44 0:61364762ee0e 1693 "\"size\": \"2\", "
jmarkel44 0:61364762ee0e 1694 "\"order\": \"2\", "
jmarkel44 0:61364762ee0e 1695 "\"fmt\": \"%%.2f\", "
jmarkel44 0:61364762ee0e 1696 "\"cmd\": \"\", "
jmarkel44 0:61364762ee0e 1697 "\"args\": [], "
jmarkel44 0:61364762ee0e 1698 "\"rfreq\": \"5\", "
jmarkel44 0:61364762ee0e 1699 "\"toperiod\": \"0\", "
jmarkel44 0:61364762ee0e 1700 "\"scalelo\": \"0\", "
jmarkel44 0:61364762ee0e 1701 "\"scalehi\": \"100\" }");
jmarkel44 0:61364762ee0e 1702 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1703 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1704 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1705 return;
jmarkel44 0:61364762ee0e 1706 } else {
jmarkel44 0:61364762ee0e 1707 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1708 }
jmarkel44 0:61364762ee0e 1709
jmarkel44 0:61364762ee0e 1710 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1711
jmarkel44 0:61364762ee0e 1712 // SETPOINT: Blowdown
jmarkel44 0:61364762ee0e 1713 filename = "control_sp_BLOWDOWN_01.json";
jmarkel44 0:61364762ee0e 1714 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1715 "{ "
jmarkel44 0:61364762ee0e 1716 "\"id\": \"BLOWDOWN_01\", "
jmarkel44 0:61364762ee0e 1717 "\"priority\": \"800\", "
jmarkel44 0:61364762ee0e 1718 "\"input\": \"i_bdcond01\", "
jmarkel44 0:61364762ee0e 1719 "\"output\": \"o_rly01\", "
jmarkel44 0:61364762ee0e 1720 "\"setpoint\": \"1800\", "
jmarkel44 0:61364762ee0e 1721 "\"prodfact\": \"\", "
jmarkel44 0:61364762ee0e 1722 "\"actingDir\": \"1\", "
jmarkel44 0:61364762ee0e 1723 "\"tol\": \"30\" }");
jmarkel44 0:61364762ee0e 1724 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1725 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1726 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1727 return;
jmarkel44 0:61364762ee0e 1728 } else {
jmarkel44 0:61364762ee0e 1729 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1730 }
jmarkel44 0:61364762ee0e 1731
jmarkel44 0:61364762ee0e 1732 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1733
jmarkel44 0:61364762ee0e 1734 // SETPOINT: Trasar
jmarkel44 0:61364762ee0e 1735 filename = "control_sp_INH_TRA_01.json";
jmarkel44 0:61364762ee0e 1736 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1737 "{ "
jmarkel44 0:61364762ee0e 1738 "\"id\": \"INH_TRA_01\", "
jmarkel44 0:61364762ee0e 1739 "\"priority\": \"800\", "
jmarkel44 0:61364762ee0e 1740 "\"input\": \"i_tra01\", "
jmarkel44 0:61364762ee0e 1741 "\"output\": \"o_rly02\", "
jmarkel44 0:61364762ee0e 1742 "\"setpoint\": \"130\", "
jmarkel44 0:61364762ee0e 1743 "\"prodfact\": \"100\", "
jmarkel44 0:61364762ee0e 1744 "\"actingDir\": \"0\", "
jmarkel44 0:61364762ee0e 1745 "\"tol\": \"4\" }");
jmarkel44 0:61364762ee0e 1746 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1747 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1748 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1749 return;
jmarkel44 0:61364762ee0e 1750 } else {
jmarkel44 0:61364762ee0e 1751 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1752 }
jmarkel44 0:61364762ee0e 1753
jmarkel44 0:61364762ee0e 1754 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1755
jmarkel44 0:61364762ee0e 1756 // ALGORITHM == 0
jmarkel44 0:61364762ee0e 1757 filename = "control_ca_EQUAL_TO_0.json";
jmarkel44 0:61364762ee0e 1758 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1759 "{"
jmarkel44 0:61364762ee0e 1760 "\"id\": \"EQUAL_TO_0\", "
jmarkel44 0:61364762ee0e 1761 "\"opr\": \"0\", "
jmarkel44 0:61364762ee0e 1762 "\"op\": \"==\", "
jmarkel44 0:61364762ee0e 1763 "\"true\": \"responseA\", "
jmarkel44 0:61364762ee0e 1764 "\"false\": \"nothing\" "
jmarkel44 0:61364762ee0e 1765 "}");
jmarkel44 0:61364762ee0e 1766
jmarkel44 0:61364762ee0e 1767 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1768 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1769 printf("\rFailed to save user file %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1770 return;
jmarkel44 0:61364762ee0e 1771 } else {
jmarkel44 0:61364762ee0e 1772 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1773 }
jmarkel44 0:61364762ee0e 1774
jmarkel44 0:61364762ee0e 1775 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1776
jmarkel44 0:61364762ee0e 1777 // ALGORITHM == 129
jmarkel44 0:61364762ee0e 1778 filename = "control_ca_RELAY_ON.json";
jmarkel44 0:61364762ee0e 1779 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1780 "{"
jmarkel44 0:61364762ee0e 1781 "\"id\": \"RELAY_ON\", "
jmarkel44 0:61364762ee0e 1782 "\"opr\": \"1\", "
jmarkel44 0:61364762ee0e 1783 "\"op\": \"&\", "
jmarkel44 0:61364762ee0e 1784 "\"true\": \"responseA\", "
jmarkel44 0:61364762ee0e 1785 "\"false\": \"nothing\" "
jmarkel44 0:61364762ee0e 1786 "}");
jmarkel44 0:61364762ee0e 1787
jmarkel44 0:61364762ee0e 1788 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1789 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1790 printf("\rFailed to save user file %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1791 return;
jmarkel44 0:61364762ee0e 1792 } else {
jmarkel44 0:61364762ee0e 1793 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1794 }
jmarkel44 0:61364762ee0e 1795
jmarkel44 0:61364762ee0e 1796 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1797
jmarkel44 0:61364762ee0e 1798 // FLOW
jmarkel44 0:61364762ee0e 1799 filename = "control_comp_FLOW.json";
jmarkel44 0:61364762ee0e 1800 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1801 "{ "
jmarkel44 0:61364762ee0e 1802 "\"id\": \"FLOW\", "
jmarkel44 0:61364762ee0e 1803 "\"tag\": \"i_flowsw01\", "
jmarkel44 0:61364762ee0e 1804 "\"ca\": \"EQUAL_TO_0\", "
jmarkel44 0:61364762ee0e 1805 "\"priority\": \"300\", "
jmarkel44 0:61364762ee0e 1806 "\"entries\": \"2\", "
jmarkel44 0:61364762ee0e 1807 "\"outputs\": [ "
jmarkel44 0:61364762ee0e 1808 "{"
jmarkel44 0:61364762ee0e 1809 "\"tag\": \"o_rly01\", "
jmarkel44 0:61364762ee0e 1810 "\"responseA\": \"fixed off\" "
jmarkel44 0:61364762ee0e 1811 "},"
jmarkel44 0:61364762ee0e 1812 "{"
jmarkel44 0:61364762ee0e 1813 "\"tag\": \"o_rly02\", "
jmarkel44 0:61364762ee0e 1814 "\"responseA\": \"fixed off\" "
jmarkel44 0:61364762ee0e 1815 "}"
jmarkel44 0:61364762ee0e 1816 "]"
jmarkel44 0:61364762ee0e 1817 "}"
jmarkel44 0:61364762ee0e 1818 );
jmarkel44 0:61364762ee0e 1819 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1820 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1821 printf("\rFailed to save user file %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1822 return;
jmarkel44 0:61364762ee0e 1823 } else {
jmarkel44 0:61364762ee0e 1824 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1825 }
jmarkel44 0:61364762ee0e 1826
jmarkel44 0:61364762ee0e 1827 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1828
jmarkel44 0:61364762ee0e 1829 // LOCKOUT
jmarkel44 0:61364762ee0e 1830 filename = "control_comp_LOCKOUT_BD.json";
jmarkel44 0:61364762ee0e 1831 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1832 "{ "
jmarkel44 0:61364762ee0e 1833 "\"id\": \"LOCKOUT_BD\", "
jmarkel44 0:61364762ee0e 1834 "\"tag\": \"o_rly01\", "
jmarkel44 0:61364762ee0e 1835 "\"ca\": \"RELAY_ON\", "
jmarkel44 0:61364762ee0e 1836 "\"priority\": \"400\", "
jmarkel44 0:61364762ee0e 1837 "\"entries\": \"1\", "
jmarkel44 0:61364762ee0e 1838 "\"outputs\": [ "
jmarkel44 0:61364762ee0e 1839 "{"
jmarkel44 0:61364762ee0e 1840 "\"tag\": \"o_rly02\", "
jmarkel44 0:61364762ee0e 1841 "\"responseA\": \"fixed off\" "
jmarkel44 0:61364762ee0e 1842 "}"
jmarkel44 0:61364762ee0e 1843 "]"
jmarkel44 0:61364762ee0e 1844 "}"
jmarkel44 0:61364762ee0e 1845 );
jmarkel44 0:61364762ee0e 1846 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1847 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1848 printf("\rFailed to save user file %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1849 return;
jmarkel44 0:61364762ee0e 1850 } else {
jmarkel44 0:61364762ee0e 1851 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1852 }
jmarkel44 0:61364762ee0e 1853
jmarkel44 0:61364762ee0e 1854 filename = "control_fs_BLOWDOWN_FS.json";
jmarkel44 0:61364762ee0e 1855 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1856 "{"
jmarkel44 0:61364762ee0e 1857 "\"id\": \"BLOWDOWN_FS\", "
jmarkel44 0:61364762ee0e 1858 "\"input\": \"i_bdcond01\", "
jmarkel44 0:61364762ee0e 1859 "\"output\": \"o_rly01\", "
jmarkel44 0:61364762ee0e 1860 "\"priority\":\"600\", "
jmarkel44 0:61364762ee0e 1861 "\"lfsValue\":\"700\", "
jmarkel44 0:61364762ee0e 1862 "\"lfsDutyCycle\":\"0\", "
jmarkel44 0:61364762ee0e 1863 "\"lfsInterval\":\"1\", "
jmarkel44 0:61364762ee0e 1864 "\"hfsValue\":\"2700\", "
jmarkel44 0:61364762ee0e 1865 "\"hfsDutyCycle\":\"50\", "
jmarkel44 0:61364762ee0e 1866 "\"hfsInterval\":\"1\" "
jmarkel44 0:61364762ee0e 1867 "}");
jmarkel44 0:61364762ee0e 1868
jmarkel44 0:61364762ee0e 1869 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1870 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1871 printf("\rFailed to create %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1872 return;
jmarkel44 0:61364762ee0e 1873 } else {
jmarkel44 0:61364762ee0e 1874 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1875 }
jmarkel44 0:61364762ee0e 1876
jmarkel44 0:61364762ee0e 1877
jmarkel44 0:61364762ee0e 1878 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1879
jmarkel44 0:61364762ee0e 1880 filename = "control_fs_TRASAR_FS.json";
jmarkel44 0:61364762ee0e 1881 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1882 " {"
jmarkel44 0:61364762ee0e 1883 "\"id\": \"TRASAR_FS\", "
jmarkel44 0:61364762ee0e 1884 "\"input\": \"i_tra01\", "
jmarkel44 0:61364762ee0e 1885 "\"output\": \"o_rly02\", "
jmarkel44 0:61364762ee0e 1886 "\"priority\":\"600\", "
jmarkel44 0:61364762ee0e 1887 "\"lfsValue\":\"70\", "
jmarkel44 0:61364762ee0e 1888 "\"lfsDutyCycle\":\"50\", " // ON a minute, OFF a minute...
jmarkel44 0:61364762ee0e 1889 "\"lfsInterval\":\"2\", "
jmarkel44 0:61364762ee0e 1890 "\"hfsValue\":\"200\", "
jmarkel44 0:61364762ee0e 1891 "\"hfsDutyCycle\":\"0\", "
jmarkel44 0:61364762ee0e 1892 "\"hfsInterval\":\"2\" "
jmarkel44 0:61364762ee0e 1893 "}");
jmarkel44 0:61364762ee0e 1894
jmarkel44 0:61364762ee0e 1895 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1896 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1897 printf("\rFailed to create %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1898 return;
jmarkel44 0:61364762ee0e 1899 } else {
jmarkel44 0:61364762ee0e 1900 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1901 }
jmarkel44 0:61364762ee0e 1902
jmarkel44 0:61364762ee0e 1903 // HOLDING REGISTER: Conductivity Calibration
jmarkel44 0:61364762ee0e 1904 filename = "hold_h_CondCmd_21.json";
jmarkel44 0:61364762ee0e 1905 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1906 "{ "
jmarkel44 0:61364762ee0e 1907 "\"id\":\"%s\", "
jmarkel44 0:61364762ee0e 1908 "\"node\":\"%s\", "
jmarkel44 0:61364762ee0e 1909 "\"sreg\":\"%s\", "
jmarkel44 0:61364762ee0e 1910 "\"nreg\":\"%s\", "
jmarkel44 0:61364762ee0e 1911 "\"order\":\"%s\" } ", "h_CondCmd_21", "21", "0", "3", "2");
jmarkel44 0:61364762ee0e 1912
jmarkel44 0:61364762ee0e 1913 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1914 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1915 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1916 return;
jmarkel44 0:61364762ee0e 1917 } else {
jmarkel44 0:61364762ee0e 1918 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1919 }
jmarkel44 0:61364762ee0e 1920
jmarkel44 0:61364762ee0e 1921 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1922
jmarkel44 0:61364762ee0e 1923 // HOLDING REGISTER: pH Calibration
jmarkel44 0:61364762ee0e 1924 filename = "hold_h_phCmd_22.json";
jmarkel44 0:61364762ee0e 1925 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 1926 "{ "
jmarkel44 0:61364762ee0e 1927 "\"id\":\"%s\", "
jmarkel44 0:61364762ee0e 1928 "\"node\":\"%s\", "
jmarkel44 0:61364762ee0e 1929 "\"sreg\":\"%s\", "
jmarkel44 0:61364762ee0e 1930 "\"nreg\":\"%s\", "
jmarkel44 0:61364762ee0e 1931 "\"order\":\"%s\" } ", "h_phCmd_22", "22", "0", "3", "2");
jmarkel44 0:61364762ee0e 1932
jmarkel44 0:61364762ee0e 1933 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1934 if ( rc != true ) {
jmarkel44 0:61364762ee0e 1935 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1936 return;
jmarkel44 0:61364762ee0e 1937 } else {
jmarkel44 0:61364762ee0e 1938 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 1939 }
jmarkel44 0:61364762ee0e 1940
jmarkel44 0:61364762ee0e 1941 Thread::wait(1000);
jmarkel44 0:61364762ee0e 1942
jmarkel44 0:61364762ee0e 1943
jmarkel44 0:61364762ee0e 1944 printf("\r\nIssue \"reset\" command to invoke changes\r\n\r\n\r\n");
jmarkel44 0:61364762ee0e 1945
jmarkel44 0:61364762ee0e 1946 }
jmarkel44 0:61364762ee0e 1947
jmarkel44 0:61364762ee0e 1948 /*****************************************************************************
jmarkel44 0:61364762ee0e 1949 * Function: cmd_cif
jmarkel44 0:61364762ee0e 1950 * Description: create input file
jmarkel44 0:61364762ee0e 1951 *
jmarkel44 0:61364762ee0e 1952 * @param argc-> number of args
jmarkel44 0:61364762ee0e 1953 * @param argv-> filename
jmarkel44 0:61364762ee0e 1954 * @return none
jmarkel44 0:61364762ee0e 1955 *****************************************************************************/
jmarkel44 0:61364762ee0e 1956 void cmd_cif(int argc, char **argv)
jmarkel44 0:61364762ee0e 1957 {
jmarkel44 0:61364762ee0e 1958 if ( argc != 6 ) {
jmarkel44 0:61364762ee0e 1959 printf("\rusage: cif <fname> <input> <name> <node> <reg>\n");
jmarkel44 0:61364762ee0e 1960 printf("\rexample: cif input_i_tra01.json i_tra01 Trasar 5 2\n");
jmarkel44 0:61364762ee0e 1961 return;
jmarkel44 0:61364762ee0e 1962 }
jmarkel44 0:61364762ee0e 1963
jmarkel44 0:61364762ee0e 1964 char data_buf[MAX_FILE_SIZE];
jmarkel44 0:61364762ee0e 1965 snprintf(data_buf, sizeof(data_buf),
jmarkel44 0:61364762ee0e 1966 "{ "
jmarkel44 0:61364762ee0e 1967 "\"id\": \"%s\", "
jmarkel44 0:61364762ee0e 1968 "\"name\": \"%s\", "
jmarkel44 0:61364762ee0e 1969 "\"units\": \"PPM\", "
jmarkel44 0:61364762ee0e 1970 "\"min\": \"0\", "
jmarkel44 0:61364762ee0e 1971 "\"max\": \"300\", "
jmarkel44 0:61364762ee0e 1972 "\"node\": \"%s\", "
jmarkel44 0:61364762ee0e 1973 "\"reg\": \"%s\", "
jmarkel44 0:61364762ee0e 1974 "\"rtype\": \"1\", "
jmarkel44 0:61364762ee0e 1975 "\"type\": \"0\", "
jmarkel44 0:61364762ee0e 1976 "\"size\": \"2\", "
jmarkel44 0:61364762ee0e 1977 "\"order\": \"2\", "
jmarkel44 0:61364762ee0e 1978 "\"rfreq\": \"5\", "
jmarkel44 0:61364762ee0e 1979 "\"cmd\": \"\","
jmarkel44 0:61364762ee0e 1980 "\"args\": [],"
jmarkel44 0:61364762ee0e 1981 "\"fmt\": \"%%.2f\" } ", argv[2], argv[3], argv[4], argv[5]);
jmarkel44 0:61364762ee0e 1982
jmarkel44 0:61364762ee0e 1983 bool status = GLOBAL_mdot->saveUserFile(argv[1], (void *)data_buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 1984 if( status != true ) {
jmarkel44 0:61364762ee0e 1985 printf("(%d)save file failed, status=%d", __LINE__, status);
jmarkel44 0:61364762ee0e 1986 }
jmarkel44 0:61364762ee0e 1987
jmarkel44 0:61364762ee0e 1988 printf("Sending Mail To ModbusMasterMailBox, filename=%s", argv[1]);
jmarkel44 0:61364762ee0e 1989 ModbusMasterReq_t *mail = ModbusMasterMailBox.alloc();
jmarkel44 0:61364762ee0e 1990 mail->action = ACTION_READ_FILE;
jmarkel44 0:61364762ee0e 1991 strncpy( mail->msg, argv[1], (sizeof(mail->msg)-1));
jmarkel44 0:61364762ee0e 1992 ModbusMasterMailBox.put(mail);
jmarkel44 0:61364762ee0e 1993 }
jmarkel44 0:61364762ee0e 1994
jmarkel44 0:61364762ee0e 1995 /*****************************************************************************
jmarkel44 0:61364762ee0e 1996 * Function: cmd_destroy
jmarkel44 0:61364762ee0e 1997 * Description: destroy a control
jmarkel44 0:61364762ee0e 1998 *
jmarkel44 0:61364762ee0e 1999 * @param argc-> number of arguments
jmarkel44 0:61364762ee0e 2000 * @param argv-> control name, control type
jmarkel44 0:61364762ee0e 2001 * @return none
jmarkel44 0:61364762ee0e 2002 *****************************************************************************/
jmarkel44 0:61364762ee0e 2003 void cmd_destroy(int argc, char **argv)
jmarkel44 0:61364762ee0e 2004 {
jmarkel44 0:61364762ee0e 2005 if ( argc != 3 ) {
jmarkel44 0:61364762ee0e 2006 printf("\r\nusage: destroy-control [controlName] [controlType]\n");
jmarkel44 0:61364762ee0e 2007 printf("\rcontrolType-> 0=timer, 1=PID, 2=setpoint, 3=composite, 4=manual, 5=sequence, 6=failsafe, 7=sensor error\r\n");
jmarkel44 0:61364762ee0e 2008 return;
jmarkel44 0:61364762ee0e 2009 }
jmarkel44 0:61364762ee0e 2010
jmarkel44 0:61364762ee0e 2011 // send a message to the configuration handler to destroy the control
jmarkel44 0:61364762ee0e 2012 ConfigMessage_t *msg = ConfigHandlerMailBox.alloc();
jmarkel44 0:61364762ee0e 2013 memset(msg, 0, sizeof(ConfigMessage_t));
jmarkel44 0:61364762ee0e 2014 msg->action = ACTION_DESTROY;
jmarkel44 0:61364762ee0e 2015 msg->control = (Control_t) atoi(argv[2]);
jmarkel44 0:61364762ee0e 2016 strncpy(msg->controlFile, argv[1], sizeof(msg->controlFile)-1);
jmarkel44 0:61364762ee0e 2017
jmarkel44 0:61364762ee0e 2018 printf("%s: Sending a destroy request for control %s\r\n",
jmarkel44 0:61364762ee0e 2019 __func__, msg->controlFile);
jmarkel44 0:61364762ee0e 2020
jmarkel44 0:61364762ee0e 2021 ConfigHandlerMailBox.put(msg);
jmarkel44 0:61364762ee0e 2022 printf("\r\n");
jmarkel44 0:61364762ee0e 2023 return;
jmarkel44 0:61364762ee0e 2024 }
jmarkel44 0:61364762ee0e 2025
jmarkel44 0:61364762ee0e 2026 /*****************************************************************************
jmarkel44 0:61364762ee0e 2027 * Function: cmd_cof
jmarkel44 0:61364762ee0e 2028 * Description: create output file
jmarkel44 0:61364762ee0e 2029 *
jmarkel44 0:61364762ee0e 2030 * @param argc-> number of args
jmarkel44 0:61364762ee0e 2031 * @param argv-> filename
jmarkel44 0:61364762ee0e 2032 * @return none
jmarkel44 0:61364762ee0e 2033 *****************************************************************************/
jmarkel44 0:61364762ee0e 2034 void cmd_cof(int argc, char **argv)
jmarkel44 0:61364762ee0e 2035 {
jmarkel44 0:61364762ee0e 2036 // OUTPUT: Relay 01
jmarkel44 0:61364762ee0e 2037 char buf[MAX_FILE_SIZE];
jmarkel44 0:61364762ee0e 2038 std::string filename = "output_o_rly01.json";
jmarkel44 0:61364762ee0e 2039 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 2040 "{ "
jmarkel44 0:61364762ee0e 2041 "\"id\": \"o_rly01\", "
jmarkel44 0:61364762ee0e 2042 "\"name\": \"Blowdown\", "
jmarkel44 0:61364762ee0e 2043 "\"units\": \"\", "
jmarkel44 0:61364762ee0e 2044 "\"min\": \"0\", "
jmarkel44 0:61364762ee0e 2045 "\"max\": \"300\", "
jmarkel44 0:61364762ee0e 2046 "\"node\": \"0\", "
jmarkel44 0:61364762ee0e 2047 "\"reg\": \"1\", "
jmarkel44 0:61364762ee0e 2048 "\"rtype\": \"1\", "
jmarkel44 0:61364762ee0e 2049 "\"type\": \"0\", "
jmarkel44 0:61364762ee0e 2050 "\"size\": \"2\", "
jmarkel44 0:61364762ee0e 2051 "\"order\": \"2\", "
jmarkel44 0:61364762ee0e 2052 "\"fmt\": \"%%.2f\", "
jmarkel44 0:61364762ee0e 2053 "\"cmd\": \"\", "
jmarkel44 0:61364762ee0e 2054 "\"rfreq\": \"5\", "
jmarkel44 0:61364762ee0e 2055 "\"toperiod\": \"0\", "
jmarkel44 0:61364762ee0e 2056 "\"scalelo\": \"0\", "
jmarkel44 0:61364762ee0e 2057 "\"scalehi\": \"100\" }");
jmarkel44 0:61364762ee0e 2058 bool rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 2059 if ( rc != true ) {
jmarkel44 0:61364762ee0e 2060 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 2061 return;
jmarkel44 0:61364762ee0e 2062 } else {
jmarkel44 0:61364762ee0e 2063 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 2064 }
jmarkel44 0:61364762ee0e 2065
jmarkel44 0:61364762ee0e 2066 Thread::wait(1000);
jmarkel44 0:61364762ee0e 2067
jmarkel44 0:61364762ee0e 2068 // OUTPUT: Relay 02
jmarkel44 0:61364762ee0e 2069 filename = "output_o_rly02.json";
jmarkel44 0:61364762ee0e 2070 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 2071 "{ "
jmarkel44 0:61364762ee0e 2072 "\"id\": \"o_rly02\", "
jmarkel44 0:61364762ee0e 2073 "\"name\": \"3DTS86\", "
jmarkel44 0:61364762ee0e 2074 "\"units\": \"\", "
jmarkel44 0:61364762ee0e 2075 "\"min\": \"0\", "
jmarkel44 0:61364762ee0e 2076 "\"max\": \"300\", "
jmarkel44 0:61364762ee0e 2077 "\"node\": \"0\", "
jmarkel44 0:61364762ee0e 2078 "\"reg\": \"2\", "
jmarkel44 0:61364762ee0e 2079 "\"rtype\": \"1\", "
jmarkel44 0:61364762ee0e 2080 "\"type\": \"0\", "
jmarkel44 0:61364762ee0e 2081 "\"size\": \"2\", "
jmarkel44 0:61364762ee0e 2082 "\"order\": \"2\", "
jmarkel44 0:61364762ee0e 2083 "\"fmt\": \"%%.2f\", "
jmarkel44 0:61364762ee0e 2084 "\"cmd\": \"\", "
jmarkel44 0:61364762ee0e 2085 "\"rfreq\": \"5\", "
jmarkel44 0:61364762ee0e 2086 "\"toperiod\": \"0\", "
jmarkel44 0:61364762ee0e 2087 "\"scalelo\": \"0\", "
jmarkel44 0:61364762ee0e 2088 "\"scalehi\": \"100\" }");
jmarkel44 0:61364762ee0e 2089 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 2090 if ( rc != true ) {
jmarkel44 0:61364762ee0e 2091 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 2092 return;
jmarkel44 0:61364762ee0e 2093 } else {
jmarkel44 0:61364762ee0e 2094 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 2095 }
jmarkel44 0:61364762ee0e 2096 }
jmarkel44 0:61364762ee0e 2097
jmarkel44 0:61364762ee0e 2098 /*****************************************************************************
jmarkel44 0:61364762ee0e 2099 * Function: cmd_modmap
jmarkel44 0:61364762ee0e 2100 * Description: dump modbus register map
jmarkel44 0:61364762ee0e 2101 *****************************************************************************/
jmarkel44 0:61364762ee0e 2102 void cmd_modmap(int argc, char **argv)
jmarkel44 0:61364762ee0e 2103 {
jmarkel44 0:61364762ee0e 2104
jmarkel44 0:61364762ee0e 2105 UNUSED(argc);
jmarkel44 0:61364762ee0e 2106 UNUSED(argv);
jmarkel44 0:61364762ee0e 2107 ModbusValue value;
jmarkel44 0:61364762ee0e 2108
jmarkel44 0:61364762ee0e 2109 std::map<std::string, ModbusRegister>::iterator iter;
jmarkel44 0:61364762ee0e 2110 for (iter = ModbusRegisterMap.begin(); iter != ModbusRegisterMap.end(); ++iter) {
jmarkel44 0:61364762ee0e 2111 ModbusMasterReadRegister( iter->first, &value );
jmarkel44 0:61364762ee0e 2112 printf("tag=%-24s node=%-4d reg=%-4d rtype=%-2d size=%-2d order=%-2d value=%-12.2f errflag=%-2d argc=%-2d arg[0]=%-24s\r\n",
jmarkel44 0:61364762ee0e 2113 iter->first.c_str(), iter->second.node, iter->second.reg,
jmarkel44 0:61364762ee0e 2114 iter->second.rtype, iter->second.size, iter->second.order,
jmarkel44 0:61364762ee0e 2115 value.value, value.errflag, iter->second.argc, iter->second.argv[0].c_str() );
jmarkel44 0:61364762ee0e 2116 }
jmarkel44 0:61364762ee0e 2117 }
jmarkel44 0:61364762ee0e 2118
jmarkel44 0:61364762ee0e 2119 void cmd_createVreg(int argc, char **argv)
jmarkel44 0:61364762ee0e 2120 {
jmarkel44 0:61364762ee0e 2121 if ( argc != 4 ) {
jmarkel44 0:61364762ee0e 2122 printf("\rusage: create-vreg <filename> <vregId> <value>\n");
jmarkel44 0:61364762ee0e 2123 printf("\rusage: create-vreg vreg_alwaysTrue.json v_alwaysTrue 1\n");
jmarkel44 0:61364762ee0e 2124 return;
jmarkel44 0:61364762ee0e 2125 }
jmarkel44 0:61364762ee0e 2126
jmarkel44 0:61364762ee0e 2127 char buf[MAX_FILE_SIZE];
jmarkel44 0:61364762ee0e 2128 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 2129 "{ "
jmarkel44 0:61364762ee0e 2130 "\"id\": \"%s\", "
jmarkel44 0:61364762ee0e 2131 "\"value\": \"%s\" }", argv[2], argv[3]);
jmarkel44 0:61364762ee0e 2132 bool rc = GLOBAL_mdot->saveUserFile(argv[1], (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 2133 if ( rc != true ) {
jmarkel44 0:61364762ee0e 2134 printf("\rFailed to save %s\n", argv[1]);
jmarkel44 0:61364762ee0e 2135 return;
jmarkel44 0:61364762ee0e 2136 } else {
jmarkel44 0:61364762ee0e 2137 printf("\r...generated %s\n", argv[1]);
jmarkel44 0:61364762ee0e 2138 }
jmarkel44 0:61364762ee0e 2139 }
jmarkel44 0:61364762ee0e 2140
jmarkel44 0:61364762ee0e 2141 //
jmarkel44 0:61364762ee0e 2142 void cmd_createCAlg(int argc, char **argv)
jmarkel44 0:61364762ee0e 2143 {
jmarkel44 0:61364762ee0e 2144 if ( argc != 1 ) {
jmarkel44 0:61364762ee0e 2145 printf("\rusage: create-ca control_ca_equal.json");
jmarkel44 0:61364762ee0e 2146 return;
jmarkel44 0:61364762ee0e 2147 }
jmarkel44 0:61364762ee0e 2148
jmarkel44 0:61364762ee0e 2149 char buf[MAX_FILE_SIZE];
jmarkel44 0:61364762ee0e 2150 std::string filename = "control_ca_eq1.json";
jmarkel44 0:61364762ee0e 2151 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 2152 " {"
jmarkel44 0:61364762ee0e 2153 "\"id\": \"EQUAL_TO_1\", "
jmarkel44 0:61364762ee0e 2154 "\"opr\": \"1\", "
jmarkel44 0:61364762ee0e 2155 "\"op\": \"==\", "
jmarkel44 0:61364762ee0e 2156 "\"true\": \"responseA\", "
jmarkel44 0:61364762ee0e 2157 "\"false\": \"nothing\" "
jmarkel44 0:61364762ee0e 2158 "}");
jmarkel44 0:61364762ee0e 2159
jmarkel44 0:61364762ee0e 2160 bool rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 2161 if ( rc != true ) {
jmarkel44 0:61364762ee0e 2162 printf("\rFailed to save user file %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 2163 return;
jmarkel44 0:61364762ee0e 2164 } else {
jmarkel44 0:61364762ee0e 2165 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 2166 }
jmarkel44 0:61364762ee0e 2167
jmarkel44 0:61364762ee0e 2168 // send a message to the configuration handler to create the control
jmarkel44 0:61364762ee0e 2169 ConfigMessage_t *msg = ConfigHandlerMailBox.alloc();
jmarkel44 0:61364762ee0e 2170 memset(msg, 0, sizeof(ConfigMessage_t));
jmarkel44 0:61364762ee0e 2171 msg->action = ACTION_CREATE;
jmarkel44 0:61364762ee0e 2172 msg->control = CONTROL_ALGORITHM;
jmarkel44 0:61364762ee0e 2173 strncpy(msg->controlFile, filename.c_str(), sizeof(msg->controlFile)-1);
jmarkel44 0:61364762ee0e 2174
jmarkel44 0:61364762ee0e 2175 ConfigHandlerMailBox.put(msg);
jmarkel44 0:61364762ee0e 2176
jmarkel44 0:61364762ee0e 2177 Thread::wait(2000);
jmarkel44 0:61364762ee0e 2178
jmarkel44 0:61364762ee0e 2179 // == 129
jmarkel44 0:61364762ee0e 2180 filename = "control_ca_eq129.json";
jmarkel44 0:61364762ee0e 2181 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 2182 "{"
jmarkel44 0:61364762ee0e 2183 "\"id\": \"EQUAL_TO_1\", "
jmarkel44 0:61364762ee0e 2184 "\"opr\": \"1\", "
jmarkel44 0:61364762ee0e 2185 "\"op\": \"==\", "
jmarkel44 0:61364762ee0e 2186 "\"true\": \"responseA\", "
jmarkel44 0:61364762ee0e 2187 "\"false\": \"nothing\" "
jmarkel44 0:61364762ee0e 2188 "}");
jmarkel44 0:61364762ee0e 2189
jmarkel44 0:61364762ee0e 2190 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 2191 if ( rc != true ) {
jmarkel44 0:61364762ee0e 2192 printf("\rFailed to save user file %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 2193 return;
jmarkel44 0:61364762ee0e 2194 } else {
jmarkel44 0:61364762ee0e 2195 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 2196 }
jmarkel44 0:61364762ee0e 2197
jmarkel44 0:61364762ee0e 2198 // send a message to the configuration handler to create the control
jmarkel44 0:61364762ee0e 2199 msg = ConfigHandlerMailBox.alloc();
jmarkel44 0:61364762ee0e 2200 memset(msg, 0, sizeof(ConfigMessage_t));
jmarkel44 0:61364762ee0e 2201 msg->action = ACTION_CREATE;
jmarkel44 0:61364762ee0e 2202 msg->control = CONTROL_ALGORITHM;
jmarkel44 0:61364762ee0e 2203 strncpy(msg->controlFile, "control_ca_greq1.json", sizeof(msg->controlFile)-1);
jmarkel44 0:61364762ee0e 2204
jmarkel44 0:61364762ee0e 2205 ConfigHandlerMailBox.put(msg);
jmarkel44 0:61364762ee0e 2206 }
jmarkel44 0:61364762ee0e 2207
jmarkel44 0:61364762ee0e 2208 /*****************************************************************************
jmarkel44 0:61364762ee0e 2209 * Function: cmd_createManual
jmarkel44 0:61364762ee0e 2210 * Description: create a manual control
jmarkel44 0:61364762ee0e 2211 *
jmarkel44 0:61364762ee0e 2212 * @param argc-> number of args
jmarkel44 0:61364762ee0e 2213 * @param argv-> filename
jmarkel44 0:61364762ee0e 2214 * @return none
jmarkel44 0:61364762ee0e 2215 *****************************************************************************/
jmarkel44 0:61364762ee0e 2216 void cmd_createManual(int argc, char **argv)
jmarkel44 0:61364762ee0e 2217 {
jmarkel44 0:61364762ee0e 2218 std::string relayState;
jmarkel44 0:61364762ee0e 2219 if ( argc != 6 ) {
jmarkel44 0:61364762ee0e 2220 printf("\rusage: create-mn <filename> <id> <output> <state> <duration>\n");
jmarkel44 0:61364762ee0e 2221 printf("\rexample: create-mn control_mn_rly01.json man-1 o_rly1 on 30\r\n");
jmarkel44 0:61364762ee0e 2222 printf("\r<duration> specified in seconds, 0 for contiuous\n");
jmarkel44 0:61364762ee0e 2223 return;
jmarkel44 0:61364762ee0e 2224 }
jmarkel44 0:61364762ee0e 2225
jmarkel44 0:61364762ee0e 2226 string state(argv[4]);
jmarkel44 0:61364762ee0e 2227
jmarkel44 0:61364762ee0e 2228 if ( state == "on" ) {
jmarkel44 0:61364762ee0e 2229 relayState = "1";
jmarkel44 0:61364762ee0e 2230 } else if ( state == "off" ) {
jmarkel44 0:61364762ee0e 2231 relayState = "0";
jmarkel44 0:61364762ee0e 2232 } else {
jmarkel44 0:61364762ee0e 2233 printf("\r<state> must be on or off\r\n");
jmarkel44 0:61364762ee0e 2234 return;
jmarkel44 0:61364762ee0e 2235 }
jmarkel44 0:61364762ee0e 2236
jmarkel44 0:61364762ee0e 2237 unsigned int duration = atoi(argv[5]);
jmarkel44 0:61364762ee0e 2238 unsigned int type;
jmarkel44 0:61364762ee0e 2239 if ( duration == 0 ) {
jmarkel44 0:61364762ee0e 2240 type = MANUAL_CONTROL_TYPE_CONTINUOUS;
jmarkel44 0:61364762ee0e 2241 } else {
jmarkel44 0:61364762ee0e 2242 type = MANUAL_CONTROL_TYPE_TIMED;
jmarkel44 0:61364762ee0e 2243 }
jmarkel44 0:61364762ee0e 2244
jmarkel44 0:61364762ee0e 2245 char data_buf[MAX_FILE_SIZE];
jmarkel44 0:61364762ee0e 2246 snprintf(data_buf, sizeof(data_buf),
jmarkel44 0:61364762ee0e 2247 "{ "
jmarkel44 0:61364762ee0e 2248 "\"id\": \"%s\", "
jmarkel44 0:61364762ee0e 2249 "\"output\": \"%s\", "
jmarkel44 0:61364762ee0e 2250 "\"type\": \"%d\", "
jmarkel44 0:61364762ee0e 2251 "\"priority\": \"100\", "
jmarkel44 0:61364762ee0e 2252 "\"duration\": \"%d\", "
jmarkel44 0:61364762ee0e 2253 "\"setpoint\": \"0\", "
jmarkel44 0:61364762ee0e 2254 "\"state\": \"%s\", "
jmarkel44 0:61364762ee0e 2255 "\"percent\": \"100\" }", argv[2], argv[3], type, duration, relayState.c_str()
jmarkel44 0:61364762ee0e 2256 );
jmarkel44 0:61364762ee0e 2257
jmarkel44 0:61364762ee0e 2258 bool status = GLOBAL_mdot->saveUserFile(argv[1], (void *)data_buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 2259 if( status != true ) {
jmarkel44 0:61364762ee0e 2260 printf("(%d)save file failed, status=%d", __LINE__, status);
jmarkel44 0:61364762ee0e 2261 return;
jmarkel44 0:61364762ee0e 2262 }
jmarkel44 0:61364762ee0e 2263
jmarkel44 0:61364762ee0e 2264 // send a message to the configuration handler to create the control
jmarkel44 0:61364762ee0e 2265 ConfigMessage_t *msg = ConfigHandlerMailBox.alloc();
jmarkel44 0:61364762ee0e 2266 memset(msg, 0, sizeof(ConfigMessage_t));
jmarkel44 0:61364762ee0e 2267 msg->action = ACTION_CREATE;
jmarkel44 0:61364762ee0e 2268 msg->control = CONTROL_MANUAL;
jmarkel44 0:61364762ee0e 2269 strncpy(msg->controlFile, argv[1], sizeof(msg->controlFile)-1);
jmarkel44 0:61364762ee0e 2270
jmarkel44 0:61364762ee0e 2271 printf("%s: Sending a create request for control %s type = %u\r\n",
jmarkel44 0:61364762ee0e 2272 __func__, msg->controlFile, msg->control);
jmarkel44 0:61364762ee0e 2273
jmarkel44 0:61364762ee0e 2274 ConfigHandlerMailBox.put(msg);
jmarkel44 0:61364762ee0e 2275 printf("\r\n");
jmarkel44 0:61364762ee0e 2276 return;
jmarkel44 0:61364762ee0e 2277 }
jmarkel44 0:61364762ee0e 2278
jmarkel44 0:61364762ee0e 2279 /*****************************************************************************
jmarkel44 0:61364762ee0e 2280 * Function: cmd_createSError
jmarkel44 0:61364762ee0e 2281 * Description: create a sensoe error control
jmarkel44 0:61364762ee0e 2282 *
jmarkel44 0:61364762ee0e 2283 * @param argc-> number of args
jmarkel44 0:61364762ee0e 2284 * @param argv-> filename
jmarkel44 0:61364762ee0e 2285 * @return none
jmarkel44 0:61364762ee0e 2286 *****************************************************************************/
jmarkel44 0:61364762ee0e 2287 void cmd_createSError(int argc, char **argv)
jmarkel44 0:61364762ee0e 2288 {
jmarkel44 0:61364762ee0e 2289 if ( argc != 7 ) {
jmarkel44 0:61364762ee0e 2290 printf("\rusage: create-se <filename> <id> <input> <output> <duty> <interval>\n");
jmarkel44 0:61364762ee0e 2291 printf("\rexample: create-se control_se_bdcond.json se-1 i_bdcond o_rly01 50 10\n");
jmarkel44 0:61364762ee0e 2292 return;
jmarkel44 0:61364762ee0e 2293 }
jmarkel44 0:61364762ee0e 2294
jmarkel44 0:61364762ee0e 2295 char data_buf[MAX_FILE_SIZE];
jmarkel44 0:61364762ee0e 2296 snprintf(data_buf, sizeof(data_buf),
jmarkel44 0:61364762ee0e 2297 "{ "
jmarkel44 0:61364762ee0e 2298 "\"id\": \"%s\", "
jmarkel44 0:61364762ee0e 2299 "\"input\": \"%s\", "
jmarkel44 0:61364762ee0e 2300 "\"output\": \"%s\", "
jmarkel44 0:61364762ee0e 2301 "\"priority\": \"459\", "
jmarkel44 0:61364762ee0e 2302 "\"dutyCycle\": \"%d\", "
jmarkel44 0:61364762ee0e 2303 "\"interval\": \"%d\" }",
jmarkel44 0:61364762ee0e 2304 argv[2], argv[3], argv[4], atoi(argv[5]), atoi(argv[6])
jmarkel44 0:61364762ee0e 2305 );
jmarkel44 0:61364762ee0e 2306
jmarkel44 0:61364762ee0e 2307 bool status = GLOBAL_mdot->saveUserFile(argv[1], (void *)data_buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 2308 if( status != true ) {
jmarkel44 0:61364762ee0e 2309 printf("(%d)save file failed, status=%d", __LINE__, status);
jmarkel44 0:61364762ee0e 2310 return;
jmarkel44 0:61364762ee0e 2311 }
jmarkel44 0:61364762ee0e 2312
jmarkel44 0:61364762ee0e 2313 // send a message to the configuration handler to create the control
jmarkel44 0:61364762ee0e 2314 ConfigMessage_t *msg = ConfigHandlerMailBox.alloc();
jmarkel44 0:61364762ee0e 2315 memset(msg, 0, sizeof(ConfigMessage_t));
jmarkel44 0:61364762ee0e 2316 msg->action = ACTION_CREATE;
jmarkel44 0:61364762ee0e 2317 msg->control = CONTROL_SENSOR_ERROR;
jmarkel44 0:61364762ee0e 2318 strncpy(msg->controlFile, argv[1], sizeof(msg->controlFile)-1);
jmarkel44 0:61364762ee0e 2319
jmarkel44 0:61364762ee0e 2320 printf("%s: Sending a create request for sensor error control %s type = %u\r\n",
jmarkel44 0:61364762ee0e 2321 __func__, msg->controlFile, msg->control);
jmarkel44 0:61364762ee0e 2322
jmarkel44 0:61364762ee0e 2323 ConfigHandlerMailBox.put(msg);
jmarkel44 0:61364762ee0e 2324 printf("\r\n");
jmarkel44 0:61364762ee0e 2325 return;
jmarkel44 0:61364762ee0e 2326 }
jmarkel44 0:61364762ee0e 2327
jmarkel44 0:61364762ee0e 2328 /*****************************************************************************
jmarkel44 0:61364762ee0e 2329 * Function: cmd_createSetpoint
jmarkel44 0:61364762ee0e 2330 * Description: create control file
jmarkel44 0:61364762ee0e 2331 *
jmarkel44 0:61364762ee0e 2332 * @param argc-> number of args
jmarkel44 0:61364762ee0e 2333 * @param argv-> filename
jmarkel44 0:61364762ee0e 2334 * @return none
jmarkel44 0:61364762ee0e 2335 *****************************************************************************/
jmarkel44 0:61364762ee0e 2336 void cmd_createSetpoint(int argc, char **argv)
jmarkel44 0:61364762ee0e 2337 {
jmarkel44 0:61364762ee0e 2338 if ( argc != 8 ) {
jmarkel44 0:61364762ee0e 2339 printf("\rusage: create-sp <filename> <id> <input> <output> <sp> <dir> <tol>\n");
jmarkel44 0:61364762ee0e 2340 printf("\rexample: create-sp control_sp_1.json bd i_cond o_rly1 2000 1 15\n");
jmarkel44 0:61364762ee0e 2341 return;
jmarkel44 0:61364762ee0e 2342 }
jmarkel44 0:61364762ee0e 2343
jmarkel44 0:61364762ee0e 2344 if ( strncmp(argv[1], CONTROL_SP_STR, strlen(CONTROL_SP_STR)) != 0 ) {
jmarkel44 0:61364762ee0e 2345 printf("\rFilename must be prefixed with control_sp_*\n");
jmarkel44 0:61364762ee0e 2346 return;
jmarkel44 0:61364762ee0e 2347 }
jmarkel44 0:61364762ee0e 2348
jmarkel44 0:61364762ee0e 2349 char data_buf[MAX_FILE_SIZE];
jmarkel44 0:61364762ee0e 2350 snprintf(data_buf, sizeof(data_buf),
jmarkel44 0:61364762ee0e 2351 "{ "
jmarkel44 0:61364762ee0e 2352 "\"id\": \"%s\", "
jmarkel44 0:61364762ee0e 2353 "\"priority\": \"800\","
jmarkel44 0:61364762ee0e 2354 "\"input\": \"%s\", "
jmarkel44 0:61364762ee0e 2355 "\"output\": \"%s\", "
jmarkel44 0:61364762ee0e 2356 "\"setpoint\": \"%s\","
jmarkel44 0:61364762ee0e 2357 "\"prodfact\": \"100\","
jmarkel44 0:61364762ee0e 2358 "\"actingDir\": \"%s\", "
jmarkel44 0:61364762ee0e 2359 "\"halert\": \"115\","
jmarkel44 0:61364762ee0e 2360 "\"lalert\": \"85\", "
jmarkel44 0:61364762ee0e 2361 "\"hfs\": \"130\","
jmarkel44 0:61364762ee0e 2362 "\"lfs\": \"70\", "
jmarkel44 0:61364762ee0e 2363 "\"tol\": \"%s\" }", argv[2], argv[3], argv[4], argv[5], argv[6], argv[7]);
jmarkel44 0:61364762ee0e 2364
jmarkel44 0:61364762ee0e 2365 bool status = GLOBAL_mdot->saveUserFile(argv[1], (void *)data_buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 2366 if( status != true ) {
jmarkel44 0:61364762ee0e 2367 printf("(%d)save file failed, status=%d", __LINE__, status);
jmarkel44 0:61364762ee0e 2368 return;
jmarkel44 0:61364762ee0e 2369 }
jmarkel44 0:61364762ee0e 2370
jmarkel44 0:61364762ee0e 2371 // send a message to the configuration handler to create the control
jmarkel44 0:61364762ee0e 2372 ConfigMessage_t *msg = ConfigHandlerMailBox.alloc();
jmarkel44 0:61364762ee0e 2373 memset(msg, 0, sizeof(ConfigMessage_t));
jmarkel44 0:61364762ee0e 2374 msg->action = ACTION_CREATE;
jmarkel44 0:61364762ee0e 2375 msg->control = CONTROL_SETPOINT;
jmarkel44 0:61364762ee0e 2376 strncpy(msg->controlFile, argv[1], sizeof(msg->controlFile)-1);
jmarkel44 0:61364762ee0e 2377
jmarkel44 0:61364762ee0e 2378 printf("%s: Sending a create request for control %s type = %u\r\n",
jmarkel44 0:61364762ee0e 2379 __func__, msg->controlFile, msg->control);
jmarkel44 0:61364762ee0e 2380
jmarkel44 0:61364762ee0e 2381 ConfigHandlerMailBox.put(msg);
jmarkel44 0:61364762ee0e 2382 printf("\r\n");
jmarkel44 0:61364762ee0e 2383 return;
jmarkel44 0:61364762ee0e 2384 }
jmarkel44 0:61364762ee0e 2385
jmarkel44 0:61364762ee0e 2386 /*****************************************************************************
jmarkel44 0:61364762ee0e 2387 * Function: cmd_createTimer
jmarkel44 0:61364762ee0e 2388 * Description: create control file
jmarkel44 0:61364762ee0e 2389 *
jmarkel44 0:61364762ee0e 2390 * @param argc-> number of args
jmarkel44 0:61364762ee0e 2391 * @param argv-> filename
jmarkel44 0:61364762ee0e 2392 * @return none
jmarkel44 0:61364762ee0e 2393 *****************************************************************************/
jmarkel44 0:61364762ee0e 2394 void cmd_createTimer(int argc, char **argv)
jmarkel44 0:61364762ee0e 2395 {
jmarkel44 0:61364762ee0e 2396 if ( argc != 10 ) {
jmarkel44 0:61364762ee0e 2397 printf("\rusage: create-tm <filename> <id> <output> <day> <hh> <mm> <ss> <duration> <week>\n");
jmarkel44 0:61364762ee0e 2398 printf("\rexample: create-tm control_tm_rly01.json o_rly01 wed 12 00 00 60\n");
jmarkel44 0:61364762ee0e 2399 printf("\r <day> is sun, mon, tue, wed, thu, fri, sat\n");
jmarkel44 0:61364762ee0e 2400 printf("\r <duration> is in seconds\n");
jmarkel44 0:61364762ee0e 2401 printf("\r <week> is every, first, second, third, fourth, last, everyother\n\r\n");
jmarkel44 0:61364762ee0e 2402 return;
jmarkel44 0:61364762ee0e 2403 }
jmarkel44 0:61364762ee0e 2404
jmarkel44 0:61364762ee0e 2405 if ( strncmp(argv[1], CONTROL_TM_STR, strlen(CONTROL_TM_STR)) != 0 ) {
jmarkel44 0:61364762ee0e 2406 printf("\rFilename must be prefixed with control_tm_*\n");
jmarkel44 0:61364762ee0e 2407 return;
jmarkel44 0:61364762ee0e 2408 }
jmarkel44 0:61364762ee0e 2409
jmarkel44 0:61364762ee0e 2410 char data_buf[MAX_FILE_SIZE];
jmarkel44 0:61364762ee0e 2411 snprintf(data_buf, sizeof(data_buf),
jmarkel44 0:61364762ee0e 2412 "{ "
jmarkel44 0:61364762ee0e 2413 "\"id\": \"%s\", "
jmarkel44 0:61364762ee0e 2414 "\"output\": \"%s\", "
jmarkel44 0:61364762ee0e 2415 "\"priority\": \"750\", "
jmarkel44 0:61364762ee0e 2416 "\"day\": \"%s\", "
jmarkel44 0:61364762ee0e 2417 "\"startHour\": \"%s\", "
jmarkel44 0:61364762ee0e 2418 "\"startMin\": \"%s\", "
jmarkel44 0:61364762ee0e 2419 "\"startSec\": \"%s\", "
jmarkel44 0:61364762ee0e 2420 "\"duration\": \"%s\", "
jmarkel44 0:61364762ee0e 2421 "\"week\": \"%s\" } ",
jmarkel44 0:61364762ee0e 2422 argv[2], argv[3], argv[4], argv[5], argv[6],
jmarkel44 0:61364762ee0e 2423 argv[7], argv[8], argv[9]);
jmarkel44 0:61364762ee0e 2424
jmarkel44 0:61364762ee0e 2425
jmarkel44 0:61364762ee0e 2426 bool status = GLOBAL_mdot->saveUserFile(argv[1], (void *)data_buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 2427 if( status != true ) {
jmarkel44 0:61364762ee0e 2428 printf("(%d)save file failed, status=%d", __LINE__, status);
jmarkel44 0:61364762ee0e 2429 return;
jmarkel44 0:61364762ee0e 2430 }
jmarkel44 0:61364762ee0e 2431
jmarkel44 0:61364762ee0e 2432 // send a message to the configuration handler to create the control
jmarkel44 0:61364762ee0e 2433 ConfigMessage_t *msg = ConfigHandlerMailBox.alloc();
jmarkel44 0:61364762ee0e 2434 memset(msg, 0, sizeof(ConfigMessage_t));
jmarkel44 0:61364762ee0e 2435 msg->action = ACTION_CREATE;
jmarkel44 0:61364762ee0e 2436 msg->control = CONTROL_TIMER;
jmarkel44 0:61364762ee0e 2437 strncpy(msg->controlFile, argv[1], sizeof(msg->controlFile)-1);
jmarkel44 0:61364762ee0e 2438
jmarkel44 0:61364762ee0e 2439 printf("%s: Sending a create request for control %s type = %u\r\n",
jmarkel44 0:61364762ee0e 2440 __func__, msg->controlFile, msg->control);
jmarkel44 0:61364762ee0e 2441
jmarkel44 0:61364762ee0e 2442 ConfigHandlerMailBox.put(msg);
jmarkel44 0:61364762ee0e 2443 printf("\r\n");
jmarkel44 0:61364762ee0e 2444 return;
jmarkel44 0:61364762ee0e 2445 }
jmarkel44 0:61364762ee0e 2446
jmarkel44 0:61364762ee0e 2447 void cmd_createFailsafe(int argc, char **argv)
jmarkel44 0:61364762ee0e 2448 {
jmarkel44 0:61364762ee0e 2449 char buf[MAX_FILE_SIZE];
jmarkel44 0:61364762ee0e 2450 bool status;
jmarkel44 0:61364762ee0e 2451
jmarkel44 0:61364762ee0e 2452 std::string filename = "control_fs_rly01.json";
jmarkel44 0:61364762ee0e 2453 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 2454 "{"
jmarkel44 0:61364762ee0e 2455 "\"id\": \"BLOWDOWN-FS\", "
jmarkel44 0:61364762ee0e 2456 "\"input\": \"i_bdcond01\", "
jmarkel44 0:61364762ee0e 2457 "\"output\": \"o_rly01\", "
jmarkel44 0:61364762ee0e 2458 "\"priority\":\"700\", "
jmarkel44 0:61364762ee0e 2459 "\"lfsValue\":\"700\", "
jmarkel44 0:61364762ee0e 2460 "\"lfsDutyCycle\":\"0\", "
jmarkel44 0:61364762ee0e 2461 "\"lfsInterval\":\"1\", "
jmarkel44 0:61364762ee0e 2462 "\"hfsValue\":\"2700\", "
jmarkel44 0:61364762ee0e 2463 "\"hfsDutyCycle\":\"50\", "
jmarkel44 0:61364762ee0e 2464 "\"hfsInterval\":\"1\" "
jmarkel44 0:61364762ee0e 2465 "}");
jmarkel44 0:61364762ee0e 2466
jmarkel44 0:61364762ee0e 2467 status = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 2468 if ( status != true ) {
jmarkel44 0:61364762ee0e 2469 printf("\rFailed to create %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 2470 return;
jmarkel44 0:61364762ee0e 2471 } else {
jmarkel44 0:61364762ee0e 2472 printf("\r created %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 2473 }
jmarkel44 0:61364762ee0e 2474
jmarkel44 0:61364762ee0e 2475 ConfigMessage_t *msg = ConfigHandlerMailBox.alloc();
jmarkel44 0:61364762ee0e 2476 memset(msg, 0, sizeof(ConfigMessage_t));
jmarkel44 0:61364762ee0e 2477 msg->action = ACTION_CREATE;
jmarkel44 0:61364762ee0e 2478 msg->control = CONTROL_FAILSAFE;
jmarkel44 0:61364762ee0e 2479 strncpy(msg->controlFile, filename.c_str(), sizeof(msg->controlFile)-1);
jmarkel44 0:61364762ee0e 2480
jmarkel44 0:61364762ee0e 2481 printf("%s: Sending a create request for control %s type = %u\r\n",
jmarkel44 0:61364762ee0e 2482 __func__, msg->controlFile, msg->control);
jmarkel44 0:61364762ee0e 2483
jmarkel44 0:61364762ee0e 2484 ConfigHandlerMailBox.put(msg);
jmarkel44 0:61364762ee0e 2485 Thread::wait(1000);
jmarkel44 0:61364762ee0e 2486
jmarkel44 0:61364762ee0e 2487 filename = "control_fs_rly02.json";
jmarkel44 0:61364762ee0e 2488 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 2489 " {"
jmarkel44 0:61364762ee0e 2490 "\"id\": \"TRASAR-FS\", "
jmarkel44 0:61364762ee0e 2491 "\"input\": \"i_tra01\", "
jmarkel44 0:61364762ee0e 2492 "\"output\": \"o_rly02\", "
jmarkel44 0:61364762ee0e 2493 "\"priority\":\"700\", "
jmarkel44 0:61364762ee0e 2494 "\"lfsValue\":\"70\", "
jmarkel44 0:61364762ee0e 2495 "\"lfsDutyCycle\":\"20\", "
jmarkel44 0:61364762ee0e 2496 "\"lfsInterval\":\"15\", "
jmarkel44 0:61364762ee0e 2497 "\"hfsValue\":\"200\", "
jmarkel44 0:61364762ee0e 2498 "\"hfsDutyCycle\":\"0\", "
jmarkel44 0:61364762ee0e 2499 "\"hfsInterval\":\"15\" "
jmarkel44 0:61364762ee0e 2500 "}");
jmarkel44 0:61364762ee0e 2501
jmarkel44 0:61364762ee0e 2502 status = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 2503 if ( status != true ) {
jmarkel44 0:61364762ee0e 2504 printf("\rFailed to create %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 2505 return;
jmarkel44 0:61364762ee0e 2506 } else {
jmarkel44 0:61364762ee0e 2507 printf("\r created %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 2508 }
jmarkel44 0:61364762ee0e 2509
jmarkel44 0:61364762ee0e 2510 msg = ConfigHandlerMailBox.alloc();
jmarkel44 0:61364762ee0e 2511 memset(msg, 0, sizeof(ConfigMessage_t));
jmarkel44 0:61364762ee0e 2512 msg->action = ACTION_CREATE;
jmarkel44 0:61364762ee0e 2513 msg->control = CONTROL_FAILSAFE;
jmarkel44 0:61364762ee0e 2514 strncpy(msg->controlFile, filename.c_str(), sizeof(msg->controlFile)-1);
jmarkel44 0:61364762ee0e 2515
jmarkel44 0:61364762ee0e 2516 printf("%s: Sending a create request for control %s type = %u\r\n",
jmarkel44 0:61364762ee0e 2517 __func__, msg->controlFile, msg->control);
jmarkel44 0:61364762ee0e 2518
jmarkel44 0:61364762ee0e 2519 ConfigHandlerMailBox.put(msg);
jmarkel44 0:61364762ee0e 2520 }
jmarkel44 0:61364762ee0e 2521
jmarkel44 0:61364762ee0e 2522 /*****************************************************************************
jmarkel44 0:61364762ee0e 2523 * Function: cmd_logLevel
jmarkel44 0:61364762ee0e 2524 * Description: get or set the current log-level
jmarkel44 0:61364762ee0e 2525 *
jmarkel44 0:61364762ee0e 2526 * @param argc (not used)
jmarkel44 0:61364762ee0e 2527 * @param argv (not used)
jmarkel44 0:61364762ee0e 2528 * @return none
jmarkel44 0:61364762ee0e 2529 *****************************************************************************/
jmarkel44 0:61364762ee0e 2530 void cmd_logLevel(int argc, char **argv)
jmarkel44 0:61364762ee0e 2531 {
jmarkel44 0:61364762ee0e 2532 uint8_t logLevel = 0;
jmarkel44 0:61364762ee0e 2533
jmarkel44 0:61364762ee0e 2534 const char *mapper[] = { "NONE",
jmarkel44 0:61364762ee0e 2535 "FATAL",
jmarkel44 0:61364762ee0e 2536 "ERROR",
jmarkel44 0:61364762ee0e 2537 "WARNING",
jmarkel44 0:61364762ee0e 2538 "INFO",
jmarkel44 0:61364762ee0e 2539 "DEBUG",
jmarkel44 0:61364762ee0e 2540 "TRACE"
jmarkel44 0:61364762ee0e 2541 };
jmarkel44 0:61364762ee0e 2542
jmarkel44 0:61364762ee0e 2543 if ( argc == 1 ) {
jmarkel44 0:61364762ee0e 2544 printf("\r current log-level set to %s\r\n",
jmarkel44 0:61364762ee0e 2545 mapper[ICELog::getLogLevel()]);
jmarkel44 0:61364762ee0e 2546 goto usage;
jmarkel44 0:61364762ee0e 2547 }
jmarkel44 0:61364762ee0e 2548
jmarkel44 0:61364762ee0e 2549 if ( argc != 2 ) {
jmarkel44 0:61364762ee0e 2550 usage:
jmarkel44 0:61364762ee0e 2551 printf("\rusage: log-level [0-6]\n");
jmarkel44 0:61364762ee0e 2552 printf("\r 0 = NONE\n");
jmarkel44 0:61364762ee0e 2553 printf("\r 1 = FATAL\n");
jmarkel44 0:61364762ee0e 2554 printf("\r 2 = ERROR\n");
jmarkel44 0:61364762ee0e 2555 printf("\r 3 = WARNING\n");
jmarkel44 0:61364762ee0e 2556 printf("\r 4 = INFO\n");
jmarkel44 0:61364762ee0e 2557 printf("\r 5 = DEBUG\n");
jmarkel44 0:61364762ee0e 2558 printf("\r 6 = TRACE\r\n");
jmarkel44 0:61364762ee0e 2559 return;
jmarkel44 0:61364762ee0e 2560 }
jmarkel44 0:61364762ee0e 2561
jmarkel44 0:61364762ee0e 2562 logLevel = atoi(argv[1]);
jmarkel44 0:61364762ee0e 2563 if ( logLevel > 6 )
jmarkel44 0:61364762ee0e 2564 goto usage;
jmarkel44 0:61364762ee0e 2565
jmarkel44 0:61364762ee0e 2566 // reassign the log level
jmarkel44 0:61364762ee0e 2567 printf("...setting log-level to %s\r\n", mapper[logLevel]);
jmarkel44 0:61364762ee0e 2568 ICELog::setLogLevel(logLevel);
jmarkel44 0:61364762ee0e 2569 printf("\r\n");
jmarkel44 0:61364762ee0e 2570 }
jmarkel44 0:61364762ee0e 2571
jmarkel44 0:61364762ee0e 2572
jmarkel44 0:61364762ee0e 2573 /*****************************************************************************
jmarkel44 0:61364762ee0e 2574 * Function: cmd_vregmap
jmarkel44 0:61364762ee0e 2575 * Description: show virtual register map
jmarkel44 0:61364762ee0e 2576 *
jmarkel44 0:61364762ee0e 2577 * @param argc-> number of args
jmarkel44 0:61364762ee0e 2578 * @param argv-> filename
jmarkel44 0:61364762ee0e 2579 * @return none
jmarkel44 0:61364762ee0e 2580 *****************************************************************************/
jmarkel44 0:61364762ee0e 2581 extern std::map<std::string,RegisterValue> RegisterValueMap;
jmarkel44 0:61364762ee0e 2582
jmarkel44 0:61364762ee0e 2583 void cmd_vregmap(int argc, char **argv)
jmarkel44 0:61364762ee0e 2584 {
jmarkel44 0:61364762ee0e 2585 UNUSED(argc);
jmarkel44 0:61364762ee0e 2586 UNUSED(argv);
jmarkel44 0:61364762ee0e 2587
jmarkel44 0:61364762ee0e 2588 std::map<std::string, RegisterValue>::iterator iter;
jmarkel44 0:61364762ee0e 2589 for (iter = RegisterValueMap.begin(); iter != RegisterValueMap.end(); ++iter) {
jmarkel44 0:61364762ee0e 2590 printf("id=%s, value=%.4f\r\n", iter->first.c_str(), iter->second.float_value );
jmarkel44 0:61364762ee0e 2591 }
jmarkel44 0:61364762ee0e 2592 }
jmarkel44 0:61364762ee0e 2593
jmarkel44 0:61364762ee0e 2594 void cmd_testPreBleed(int argc, char **argv)
jmarkel44 0:61364762ee0e 2595 {
jmarkel44 0:61364762ee0e 2596 char buf[MAX_FILE_SIZE];
jmarkel44 0:61364762ee0e 2597
jmarkel44 0:61364762ee0e 2598 // OUTPUT (virtual): variable set to TRUE when pre-bleed is done
jmarkel44 0:61364762ee0e 2599 std::string filename = "vreg_preBleedDone.json";
jmarkel44 0:61364762ee0e 2600 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 2601 "{ "
jmarkel44 0:61364762ee0e 2602 "\"id\": \"v_preBleedDone\", "
jmarkel44 0:61364762ee0e 2603 "\"value\": \"0\" "
jmarkel44 0:61364762ee0e 2604 "}");
jmarkel44 0:61364762ee0e 2605 bool rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 2606 if ( rc != true ) {
jmarkel44 0:61364762ee0e 2607 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 2608 return;
jmarkel44 0:61364762ee0e 2609 } else {
jmarkel44 0:61364762ee0e 2610 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 2611 }
jmarkel44 0:61364762ee0e 2612
jmarkel44 0:61364762ee0e 2613 // OUTPUT (virtual): variable is set to TRUE while pre-bleed time is running via timer control
jmarkel44 0:61364762ee0e 2614 filename = "vreg_pbTimer.json";
jmarkel44 0:61364762ee0e 2615 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 2616 "{ "
jmarkel44 0:61364762ee0e 2617 "\"id\": \"v_pbTimer\", "
jmarkel44 0:61364762ee0e 2618 "\"value\": \"0\" "
jmarkel44 0:61364762ee0e 2619 "}");
jmarkel44 0:61364762ee0e 2620 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 2621 if ( rc != true ) {
jmarkel44 0:61364762ee0e 2622 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 2623 return;
jmarkel44 0:61364762ee0e 2624 } else {
jmarkel44 0:61364762ee0e 2625 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 2626 }
jmarkel44 0:61364762ee0e 2627
jmarkel44 0:61364762ee0e 2628 // JavaScript Executor:
jmarkel44 0:61364762ee0e 2629 // IN: o_rly01
jmarkel44 0:61364762ee0e 2630 // IN: v_pbTimer
jmarkel44 0:61364762ee0e 2631 // OUT: v_preBleedDone
jmarkel44 0:61364762ee0e 2632 //
jmarkel44 0:61364762ee0e 2633 // Description: execute the js_nor_regs() script with arguments o_rly01
jmarkel44 0:61364762ee0e 2634 // and v_pbTimer; stores the result in v_preBleedDone
jmarkel44 0:61364762ee0e 2635 //
jmarkel44 0:61364762ee0e 2636 filename = "exe_js_prebleed_done.js";
jmarkel44 0:61364762ee0e 2637 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 2638 "{ "
jmarkel44 0:61364762ee0e 2639 "\"id\":\"PREBLEED_DONE\","
jmarkel44 0:61364762ee0e 2640 "\"script\":\"nor_regs\","
jmarkel44 0:61364762ee0e 2641 "\"args\":[{\"arg\":\"o_rly01\"},{\"arg\":\"v_pbTimer\"},{\"arg\":\"v_preBleedDone\"}]"
jmarkel44 0:61364762ee0e 2642 "};"
jmarkel44 0:61364762ee0e 2643 );
jmarkel44 0:61364762ee0e 2644 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 2645 if ( rc != true ) {
jmarkel44 0:61364762ee0e 2646 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 2647 return;
jmarkel44 0:61364762ee0e 2648 } else {
jmarkel44 0:61364762ee0e 2649 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 2650 }
jmarkel44 0:61364762ee0e 2651
jmarkel44 0:61364762ee0e 2652 // JavaScript: nor_regs(a, b) => c
jmarkel44 0:61364762ee0e 2653 filename = "js_nor_regs.js";
jmarkel44 0:61364762ee0e 2654 snprintf(buf, sizeof(buf),
jmarkel44 0:61364762ee0e 2655 "var nor_regs = function(a, b, c) {"
jmarkel44 0:61364762ee0e 2656 "res1 = getRegister(a);"
jmarkel44 0:61364762ee0e 2657 "res2 = getRegister(b);"
jmarkel44 0:61364762ee0e 2658 "if ( res1 == 0 || res2 == 0 ) { setRegister(c, 1); }"
jmarkel44 0:61364762ee0e 2659 "return 1;"
jmarkel44 0:61364762ee0e 2660 "};"
jmarkel44 0:61364762ee0e 2661 );
jmarkel44 0:61364762ee0e 2662 rc = GLOBAL_mdot->saveUserFile(filename.c_str(), (void *)buf, MAX_FILE_SIZE);
jmarkel44 0:61364762ee0e 2663 if ( rc != true ) {
jmarkel44 0:61364762ee0e 2664 printf("\rFailed to save %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 2665 return;
jmarkel44 0:61364762ee0e 2666 } else {
jmarkel44 0:61364762ee0e 2667 printf("\r...generated %s\n", filename.c_str());
jmarkel44 0:61364762ee0e 2668 }
jmarkel44 0:61364762ee0e 2669 }
jmarkel44 0:61364762ee0e 2670
jmarkel44 0:61364762ee0e 2671 /*****************************************************************************
jmarkel44 0:61364762ee0e 2672 * Function: cmd_setTime
jmarkel44 0:61364762ee0e 2673 * Description: set real-time clock
jmarkel44 0:61364762ee0e 2674 *
jmarkel44 0:61364762ee0e 2675 * @param argc-> number of args
jmarkel44 0:61364762ee0e 2676 * @param argv-> input
jmarkel44 0:61364762ee0e 2677 * @return none
jmarkel44 0:61364762ee0e 2678 *****************************************************************************/
jmarkel44 0:61364762ee0e 2679
jmarkel44 0:61364762ee0e 2680
jmarkel44 0:61364762ee0e 2681 void cmd_setTime(int argc, char **argv)
jmarkel44 0:61364762ee0e 2682 {
jmarkel44 0:61364762ee0e 2683 if ( argc != 7 ) {
jmarkel44 0:61364762ee0e 2684 printf("\rusage: set-time <yyyy> <mm> <dd> <hh> <mm> <ss>\n");
jmarkel44 0:61364762ee0e 2685 printf("\rexample: set-time 2017 1 24 9 0 0\r\n");
jmarkel44 0:61364762ee0e 2686 return;
jmarkel44 0:61364762ee0e 2687 }
jmarkel44 0:61364762ee0e 2688
jmarkel44 0:61364762ee0e 2689 int isc = atoi( argv[6] ); // sec
jmarkel44 0:61364762ee0e 2690 int imn = atoi( argv[5] ); // min
jmarkel44 0:61364762ee0e 2691 int ihr = atoi( argv[4] ); // hour
jmarkel44 0:61364762ee0e 2692 int idy = atoi( argv[3] ); // idy
jmarkel44 0:61364762ee0e 2693 int imo = atoi( argv[2] ); // imo
jmarkel44 0:61364762ee0e 2694 int iyr = atoi( argv[1] ); // year
jmarkel44 0:61364762ee0e 2695
jmarkel44 0:61364762ee0e 2696 // printf( "\r\n%s:%d: sec(0x%x) min(0x%x) hour(0x%x) day(0x%x) mon(0x%x) year(0x%x)\r\n", __func__, __LINE__, isc, imn, ihr, idy, imo, iyr );
jmarkel44 0:61364762ee0e 2697
jmarkel44 0:61364762ee0e 2698 rtc_set_time(iyr, imo, idy, ihr, imn, isc);
jmarkel44 0:61364762ee0e 2699 }
jmarkel44 0:61364762ee0e 2700 void getTime()
jmarkel44 0:61364762ee0e 2701 {
jmarkel44 0:61364762ee0e 2702 char time_string[80];
jmarkel44 0:61364762ee0e 2703 struct tm rtc_time;
jmarkel44 0:61364762ee0e 2704 struct tm * ts;
jmarkel44 0:61364762ee0e 2705 time_t curr_sec;
jmarkel44 0:61364762ee0e 2706 int year = 0;
jmarkel44 0:61364762ee0e 2707
jmarkel44 0:61364762ee0e 2708 rtc_get_time(&year, &rtc_time.tm_mon, &rtc_time.tm_mday, &rtc_time.tm_hour, &rtc_time.tm_min, &rtc_time.tm_sec);
jmarkel44 0:61364762ee0e 2709 // printf( "\r\n%s:%d:sec(0x%x) min(0x%x) hour(0x%x) day(0x%x) mon(0x%x) year(0x%x)\r\n", __func__, __LINE__, rtc_time.tm_sec, rtc_time.tm_min, rtc_time.tm_hour, rtc_time.tm_mday, rtc_time.tm_mon, year );
jmarkel44 0:61364762ee0e 2710
jmarkel44 0:61364762ee0e 2711 rtc_time.tm_mon = rtc_time.tm_mon - 1;
jmarkel44 0:61364762ee0e 2712 rtc_time.tm_year = year - 1900;
jmarkel44 0:61364762ee0e 2713 curr_sec = mktime( &rtc_time );
jmarkel44 0:61364762ee0e 2714
jmarkel44 0:61364762ee0e 2715 ts = localtime(&curr_sec);
jmarkel44 0:61364762ee0e 2716 strftime(time_string, sizeof(time_string), "%Y-%m-%d %H:%M:%S", ts);
jmarkel44 0:61364762ee0e 2717
jmarkel44 0:61364762ee0e 2718 printf("%s\r\n", time_string);
jmarkel44 0:61364762ee0e 2719 }
jmarkel44 0:61364762ee0e 2720
jmarkel44 0:61364762ee0e 2721 void cmd_getTime(int argc, char **argv)
jmarkel44 0:61364762ee0e 2722 {
jmarkel44 0:61364762ee0e 2723 getTime();
jmarkel44 0:61364762ee0e 2724 }
jmarkel44 0:61364762ee0e 2725