Peter Cooper
/
diags
test code for our MBED board
cmd.c@1:6877bb99aa17, 2011-05-04 (annotated)
- Committer:
- lolpcc
- Date:
- Wed May 04 08:30:52 2011 +0000
- Revision:
- 1:6877bb99aa17
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lolpcc | 1:6877bb99aa17 | 1 | #include "mbed.h" |
lolpcc | 1:6877bb99aa17 | 2 | #include "useful.h" |
lolpcc | 1:6877bb99aa17 | 3 | |
lolpcc | 1:6877bb99aa17 | 4 | #include "led.h" /* Basic On-Board LED driver functions */ |
lolpcc | 1:6877bb99aa17 | 5 | #include "digital.h" /* Test the basic digital I/O of the MBED board */ |
lolpcc | 1:6877bb99aa17 | 6 | #include "analog.h" /* code to do things to the a2d sub system */ |
lolpcc | 1:6877bb99aa17 | 7 | #include "i2c.h" /* basic I2C Functions */ |
lolpcc | 1:6877bb99aa17 | 8 | #include "can.h" /* Basic CAN bus test functions */ |
lolpcc | 1:6877bb99aa17 | 9 | #include "ticker.h" /* Ticker look, flash a led et. al. */ |
lolpcc | 1:6877bb99aa17 | 10 | #include "serial.h" /* Talk to the RS232 line */ |
lolpcc | 1:6877bb99aa17 | 11 | #include "network.h" /* Test code for the TCP/IP network */ |
lolpcc | 1:6877bb99aa17 | 12 | #include "main.h" /* routines in this file */ |
lolpcc | 1:6877bb99aa17 | 13 | #include "breakup.h" /* breakup a string to its bits */ |
lolpcc | 1:6877bb99aa17 | 14 | #include "local_defines.h" |
lolpcc | 1:6877bb99aa17 | 15 | #include "pca9685_reg.h" /* Needed for the led driver init */ |
lolpcc | 1:6877bb99aa17 | 16 | #include "scripting.h" /* Lets see if we can get a simple scripting system going */ |
lolpcc | 1:6877bb99aa17 | 17 | #include "SNTPClient.h" /* Time handling code */ |
lolpcc | 1:6877bb99aa17 | 18 | #include "SDFileSystem.h" /* Look at the SD card */ |
lolpcc | 1:6877bb99aa17 | 19 | #include "sound.h" /* Test code for the sound I/I system */ |
lolpcc | 1:6877bb99aa17 | 20 | |
lolpcc | 1:6877bb99aa17 | 21 | #include "help_data.h" /* a text file for the command help data */ |
lolpcc | 1:6877bb99aa17 | 22 | |
lolpcc | 1:6877bb99aa17 | 23 | #include "cmd.h" |
lolpcc | 1:6877bb99aa17 | 24 | |
lolpcc | 1:6877bb99aa17 | 25 | |
lolpcc | 1:6877bb99aa17 | 26 | SDFileSystem sd(p5, p6, p7, p27, "sd"); |
lolpcc | 1:6877bb99aa17 | 27 | |
lolpcc | 1:6877bb99aa17 | 28 | LocalFileSystem local("local"); |
lolpcc | 1:6877bb99aa17 | 29 | |
lolpcc | 1:6877bb99aa17 | 30 | FILE *exec_fp; |
lolpcc | 1:6877bb99aa17 | 31 | |
lolpcc | 1:6877bb99aa17 | 32 | extern char station_id; |
lolpcc | 1:6877bb99aa17 | 33 | extern char pwd[0x20]; |
lolpcc | 1:6877bb99aa17 | 34 | extern int set_baud_rate; |
lolpcc | 1:6877bb99aa17 | 35 | extern int sys_state; |
lolpcc | 1:6877bb99aa17 | 36 | extern int var[MAX_VAR]; |
lolpcc | 1:6877bb99aa17 | 37 | extern int jmp[MAX_JMP]; |
lolpcc | 1:6877bb99aa17 | 38 | |
lolpcc | 1:6877bb99aa17 | 39 | |
lolpcc | 1:6877bb99aa17 | 40 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 41 | /* */ |
lolpcc | 1:6877bb99aa17 | 42 | /* Exec commands, for the Diags Code */ |
lolpcc | 1:6877bb99aa17 | 43 | /* */ |
lolpcc | 1:6877bb99aa17 | 44 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 45 | |
lolpcc | 1:6877bb99aa17 | 46 | struct cmd_callback { |
lolpcc | 1:6877bb99aa17 | 47 | char *label; /* command */ |
lolpcc | 1:6877bb99aa17 | 48 | int cmd; /* switch value */ |
lolpcc | 1:6877bb99aa17 | 49 | int args; /* Number of args for this command, 0 let sub-routine handle */ |
lolpcc | 1:6877bb99aa17 | 50 | void (*cmd_routine)(int,char **); /* call */ |
lolpcc | 1:6877bb99aa17 | 51 | }; |
lolpcc | 1:6877bb99aa17 | 52 | struct cmd_callback cmd_cb[] ={ |
lolpcc | 1:6877bb99aa17 | 53 | /* General commands for the command interpriter */ |
lolpcc | 1:6877bb99aa17 | 54 | { "exec", 0, 0, exec_file}, /* Run a script file from the local file store */ |
lolpcc | 1:6877bb99aa17 | 55 | { "cat", 0, 2, cat_file}, /* Cat a file on the file system to the current output device */ |
lolpcc | 1:6877bb99aa17 | 56 | { "cp", 0, 3, cp_file}, /* copy file from to */ |
lolpcc | 1:6877bb99aa17 | 57 | { "dir", 0, 1, dir_file}, /* Get a directory listing from the local file store */ |
lolpcc | 1:6877bb99aa17 | 58 | { "cd", 0, 0, cd_file}, /* Change directory */ |
lolpcc | 1:6877bb99aa17 | 59 | { "pwd", 0, 0, pwd_file}, /* show the user the current directory */ |
lolpcc | 1:6877bb99aa17 | 60 | { "wait", 0, 2, wait_control}, /* wait for X tenths of a second */ |
lolpcc | 1:6877bb99aa17 | 61 | { "baud", 0, 2, baud_rate}, /* Set the baudrate of the serial I/O */ |
lolpcc | 1:6877bb99aa17 | 62 | { "print", 0, 0, print_string}, /* Print a string to current output device */ |
lolpcc | 1:6877bb99aa17 | 63 | { "help", 0, 1, help_display}, /* Show the user some help data */ |
lolpcc | 1:6877bb99aa17 | 64 | { "state", 0, 0, show_state}, /* Show the current setup state of the SBC */ |
lolpcc | 1:6877bb99aa17 | 65 | { "date", 0, 1, date_cmd}, /* tell the user the data from the RTC */ |
lolpcc | 1:6877bb99aa17 | 66 | { "dateset", 0, 2, date_set}, /*Set the RTC to a new time */ |
lolpcc | 1:6877bb99aa17 | 67 | { "station", 0, 2, station_set}, /* Set the CAN bus station ID */ |
lolpcc | 1:6877bb99aa17 | 68 | { "netinit", 0, 1, netinit}, /* DHCP the network */ |
lolpcc | 1:6877bb99aa17 | 69 | { "set", 0, 0, set_var}, /* Set the variable to a value */ |
lolpcc | 1:6877bb99aa17 | 70 | { "sum", 0, 0, sum_var}, /* Add some basic maths */ |
lolpcc | 1:6877bb99aa17 | 71 | { "point", 0, 0, point_var}, /* Set out loop point */ |
lolpcc | 1:6877bb99aa17 | 72 | { "tst", 0, 0, tst_var}, /* test the value of a var */ |
lolpcc | 1:6877bb99aa17 | 73 | { "clr", 0, 0, clr_var}, /* Clear the var's to zero */ |
lolpcc | 1:6877bb99aa17 | 74 | /* Commands for the Diags */ |
lolpcc | 1:6877bb99aa17 | 75 | { "list", 0, 1, list}, /* List I2C Devices to user */ |
lolpcc | 1:6877bb99aa17 | 76 | { "i2cw", 0, 3, i2cw}, /* Write a value to the I2C bus */ |
lolpcc | 1:6877bb99aa17 | 77 | { "i2cr", 0, 2, i2cr}, /* Read a value from the I2C bus */ |
lolpcc | 1:6877bb99aa17 | 78 | { "led", 0, 0, led_test}, /* Simple test of the MBED LED's */ |
lolpcc | 1:6877bb99aa17 | 79 | { "sseg", 0, 0, sseg_test}, /* Simple test of the Seven Seg displays*/ |
lolpcc | 1:6877bb99aa17 | 80 | { "rs232", 0, 2, rs232_test_code}, /* Some test code for the RS232 interface */ |
lolpcc | 1:6877bb99aa17 | 81 | { "a2d", 0, 2, a2d_test}, /* Simple test of the A2D system */ |
lolpcc | 1:6877bb99aa17 | 82 | { "snd", 0, 1, snd_test}, /* Sound test code */ |
lolpcc | 1:6877bb99aa17 | 83 | { "digital", 0, 2, dig_test}, /* Simple test of the Digital I/O */ |
lolpcc | 1:6877bb99aa17 | 84 | { "lcd", 0, 2, lcd_test}, /* Test the attached LCD display */ |
lolpcc | 1:6877bb99aa17 | 85 | { "lcdprt", 0, 0, lcd_print}, /* print a string on the Batron LCD */ |
lolpcc | 1:6877bb99aa17 | 86 | { "lcdclr", 0, 0, lcd_clear}, /* Clear the Batron screen */ |
lolpcc | 1:6877bb99aa17 | 87 | { "kbd", 0, 2, kbd_test}, /* Test the attached keyboard */ |
lolpcc | 1:6877bb99aa17 | 88 | { "canrx", 0, 1, canrx}, /* Make this box a CAN Reciever */ |
lolpcc | 1:6877bb99aa17 | 89 | { "cantx", 0, 0, cantx}, /* Transmit a CAN message */ |
lolpcc | 1:6877bb99aa17 | 90 | { "cancmd", 0, 3, can_cmd}, /* send a command out on the can bus */ |
lolpcc | 1:6877bb99aa17 | 91 | { "ticker", 0, 1, ticker_test}, /* Test the ticker calls */ |
lolpcc | 1:6877bb99aa17 | 92 | /* End of command table marker */ |
lolpcc | 1:6877bb99aa17 | 93 | { "test", 0, 2, cmd_test}, /* We need somewhere to test commands first :-) */ |
lolpcc | 1:6877bb99aa17 | 94 | { "END", -1, -1, error_handler} |
lolpcc | 1:6877bb99aa17 | 95 | }; |
lolpcc | 1:6877bb99aa17 | 96 | |
lolpcc | 1:6877bb99aa17 | 97 | |
lolpcc | 1:6877bb99aa17 | 98 | /* Scan down tags, to find the match, else return -1 */ |
lolpcc | 1:6877bb99aa17 | 99 | int find_cmd(char *tag) |
lolpcc | 1:6877bb99aa17 | 100 | { |
lolpcc | 1:6877bb99aa17 | 101 | int cnt=0,c; |
lolpcc | 1:6877bb99aa17 | 102 | int length=strlen(tag); |
lolpcc | 1:6877bb99aa17 | 103 | char *elements[0x10]; |
lolpcc | 1:6877bb99aa17 | 104 | |
lolpcc | 1:6877bb99aa17 | 105 | if(tag[0]=='#') /* See is we have a command or a comment */ |
lolpcc | 1:6877bb99aa17 | 106 | return(0); |
lolpcc | 1:6877bb99aa17 | 107 | |
lolpcc | 1:6877bb99aa17 | 108 | c = breakup(tag,elements,' '); |
lolpcc | 1:6877bb99aa17 | 109 | while(1){ |
lolpcc | 1:6877bb99aa17 | 110 | if((strcmp(cmd_cb[cnt].label,"END"))==0){ |
lolpcc | 1:6877bb99aa17 | 111 | if(length>1) |
lolpcc | 1:6877bb99aa17 | 112 | cmd_cb[cnt].cmd_routine(c,elements); /* this will call the error routine */ |
lolpcc | 1:6877bb99aa17 | 113 | return(cmd_cb[cnt].cmd); |
lolpcc | 1:6877bb99aa17 | 114 | } else if((strcmp(cmd_cb[cnt].label,tag))==0){ |
lolpcc | 1:6877bb99aa17 | 115 | if((cmd_cb[cnt].args==c) || (cmd_cb[cnt].args==0)){ /* if arg count set to zero, can be anything */ |
lolpcc | 1:6877bb99aa17 | 116 | cmd_cb[cnt].cmd_routine(c,elements); /* Call the function with args */ |
lolpcc | 1:6877bb99aa17 | 117 | return(cnt); |
lolpcc | 1:6877bb99aa17 | 118 | } else { |
lolpcc | 1:6877bb99aa17 | 119 | lprintf("\n\rWrong number of args passed to %s\n\r",cmd_cb[cnt].label); |
lolpcc | 1:6877bb99aa17 | 120 | return(-1); |
lolpcc | 1:6877bb99aa17 | 121 | } |
lolpcc | 1:6877bb99aa17 | 122 | } |
lolpcc | 1:6877bb99aa17 | 123 | cnt++; |
lolpcc | 1:6877bb99aa17 | 124 | } |
lolpcc | 1:6877bb99aa17 | 125 | } |
lolpcc | 1:6877bb99aa17 | 126 | |
lolpcc | 1:6877bb99aa17 | 127 | |
lolpcc | 1:6877bb99aa17 | 128 | void error_handler(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 129 | { |
lolpcc | 1:6877bb99aa17 | 130 | int cnt=0; |
lolpcc | 1:6877bb99aa17 | 131 | lprintf("\n\rCommands available are "); |
lolpcc | 1:6877bb99aa17 | 132 | while(1){ |
lolpcc | 1:6877bb99aa17 | 133 | if((strcmp(cmd_cb[cnt].label,"END"))==0){ |
lolpcc | 1:6877bb99aa17 | 134 | lprintf("\n\r"); |
lolpcc | 1:6877bb99aa17 | 135 | return; |
lolpcc | 1:6877bb99aa17 | 136 | } else |
lolpcc | 1:6877bb99aa17 | 137 | lprintf("%s, ",cmd_cb[cnt].label); |
lolpcc | 1:6877bb99aa17 | 138 | cnt++; |
lolpcc | 1:6877bb99aa17 | 139 | } |
lolpcc | 1:6877bb99aa17 | 140 | } |
lolpcc | 1:6877bb99aa17 | 141 | |
lolpcc | 1:6877bb99aa17 | 142 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 143 | /* */ |
lolpcc | 1:6877bb99aa17 | 144 | /* Command stubs are here */ |
lolpcc | 1:6877bb99aa17 | 145 | /* */ |
lolpcc | 1:6877bb99aa17 | 146 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 147 | |
lolpcc | 1:6877bb99aa17 | 148 | void exec_file(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 149 | { |
lolpcc | 1:6877bb99aa17 | 150 | /* File on a[1] */ |
lolpcc | 1:6877bb99aa17 | 151 | |
lolpcc | 1:6877bb99aa17 | 152 | char buf[0x60]; |
lolpcc | 1:6877bb99aa17 | 153 | char cmd[0x60]; |
lolpcc | 1:6877bb99aa17 | 154 | int cnt=0; |
lolpcc | 1:6877bb99aa17 | 155 | |
lolpcc | 1:6877bb99aa17 | 156 | sprintf(buf,"%s%s",pwd,a[1]); |
lolpcc | 1:6877bb99aa17 | 157 | |
lolpcc | 1:6877bb99aa17 | 158 | if((exec_fp = fopen(buf,"r"))==NULL){ |
lolpcc | 1:6877bb99aa17 | 159 | lprintf("Unable to open %s\n\r",buf); |
lolpcc | 1:6877bb99aa17 | 160 | return; |
lolpcc | 1:6877bb99aa17 | 161 | } |
lolpcc | 1:6877bb99aa17 | 162 | sys_state = sys_state | EXEC_CALLED; |
lolpcc | 1:6877bb99aa17 | 163 | while(!feof(exec_fp)){ |
lolpcc | 1:6877bb99aa17 | 164 | fgets(buf,sizeof(buf),exec_fp); |
lolpcc | 1:6877bb99aa17 | 165 | cnt++; |
lolpcc | 1:6877bb99aa17 | 166 | if(c==3) |
lolpcc | 1:6877bb99aa17 | 167 | lprintf("exec line (%d) is :%s\n",cnt,buf); |
lolpcc | 1:6877bb99aa17 | 168 | if(strlen(buf) > 2){ |
lolpcc | 1:6877bb99aa17 | 169 | sprintf(cmd,"%s\n",buf); |
lolpcc | 1:6877bb99aa17 | 170 | find_cmd(cmd); |
lolpcc | 1:6877bb99aa17 | 171 | } |
lolpcc | 1:6877bb99aa17 | 172 | buf[0]='\0'; |
lolpcc | 1:6877bb99aa17 | 173 | buf[1]='\0'; |
lolpcc | 1:6877bb99aa17 | 174 | } |
lolpcc | 1:6877bb99aa17 | 175 | fclose(exec_fp); |
lolpcc | 1:6877bb99aa17 | 176 | sys_state = TO_USB; |
lolpcc | 1:6877bb99aa17 | 177 | } |
lolpcc | 1:6877bb99aa17 | 178 | void cat_file(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 179 | { |
lolpcc | 1:6877bb99aa17 | 180 | /* File on a[1] */ |
lolpcc | 1:6877bb99aa17 | 181 | |
lolpcc | 1:6877bb99aa17 | 182 | FILE *fp; |
lolpcc | 1:6877bb99aa17 | 183 | char buf[0x60]; |
lolpcc | 1:6877bb99aa17 | 184 | |
lolpcc | 1:6877bb99aa17 | 185 | sprintf(buf,"%s%s",pwd,a[1]); |
lolpcc | 1:6877bb99aa17 | 186 | |
lolpcc | 1:6877bb99aa17 | 187 | if((fp = fopen(buf,"r"))==NULL){ |
lolpcc | 1:6877bb99aa17 | 188 | lprintf("Unable to open %s\n\r",buf); |
lolpcc | 1:6877bb99aa17 | 189 | return; |
lolpcc | 1:6877bb99aa17 | 190 | } |
lolpcc | 1:6877bb99aa17 | 191 | |
lolpcc | 1:6877bb99aa17 | 192 | while(!feof(fp)){ |
lolpcc | 1:6877bb99aa17 | 193 | fgets(buf,sizeof(buf),fp); |
lolpcc | 1:6877bb99aa17 | 194 | if(strlen(buf) > 2){ |
lolpcc | 1:6877bb99aa17 | 195 | lprintf(buf); |
lolpcc | 1:6877bb99aa17 | 196 | } |
lolpcc | 1:6877bb99aa17 | 197 | buf[0]='\0'; |
lolpcc | 1:6877bb99aa17 | 198 | buf[1]='\0'; |
lolpcc | 1:6877bb99aa17 | 199 | } |
lolpcc | 1:6877bb99aa17 | 200 | fclose(fp); |
lolpcc | 1:6877bb99aa17 | 201 | } |
lolpcc | 1:6877bb99aa17 | 202 | |
lolpcc | 1:6877bb99aa17 | 203 | void cp_file(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 204 | { |
lolpcc | 1:6877bb99aa17 | 205 | /* from File on a[1] to file on a[2], full paths supplied */ |
lolpcc | 1:6877bb99aa17 | 206 | |
lolpcc | 1:6877bb99aa17 | 207 | FILE *fi,*fo; |
lolpcc | 1:6877bb99aa17 | 208 | char buf[0x60]; |
lolpcc | 1:6877bb99aa17 | 209 | |
lolpcc | 1:6877bb99aa17 | 210 | if((fi = fopen(a[1],"r"))==NULL){ |
lolpcc | 1:6877bb99aa17 | 211 | lprintf("Unable to open %s to read\n",a[1]); |
lolpcc | 1:6877bb99aa17 | 212 | return; |
lolpcc | 1:6877bb99aa17 | 213 | } |
lolpcc | 1:6877bb99aa17 | 214 | if((fo = fopen(a[2],"w"))==NULL){ |
lolpcc | 1:6877bb99aa17 | 215 | lprintf("Unable to open %s to write\n",a[2]); |
lolpcc | 1:6877bb99aa17 | 216 | fclose(fi); |
lolpcc | 1:6877bb99aa17 | 217 | return; |
lolpcc | 1:6877bb99aa17 | 218 | } |
lolpcc | 1:6877bb99aa17 | 219 | while(!feof(fi)){ |
lolpcc | 1:6877bb99aa17 | 220 | fgets(buf,sizeof(buf),fi); |
lolpcc | 1:6877bb99aa17 | 221 | if(strlen(buf) > 2){ |
lolpcc | 1:6877bb99aa17 | 222 | fprintf(fo,buf); |
lolpcc | 1:6877bb99aa17 | 223 | } |
lolpcc | 1:6877bb99aa17 | 224 | buf[0]='\0'; |
lolpcc | 1:6877bb99aa17 | 225 | buf[1]='\0'; |
lolpcc | 1:6877bb99aa17 | 226 | } |
lolpcc | 1:6877bb99aa17 | 227 | fclose(fi); |
lolpcc | 1:6877bb99aa17 | 228 | fclose(fo); |
lolpcc | 1:6877bb99aa17 | 229 | } |
lolpcc | 1:6877bb99aa17 | 230 | |
lolpcc | 1:6877bb99aa17 | 231 | void dir_file(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 232 | { |
lolpcc | 1:6877bb99aa17 | 233 | DIR *d; |
lolpcc | 1:6877bb99aa17 | 234 | struct dirent *p; |
lolpcc | 1:6877bb99aa17 | 235 | char buf[0x60]; |
lolpcc | 1:6877bb99aa17 | 236 | |
lolpcc | 1:6877bb99aa17 | 237 | sprintf(buf,"%s%s",pwd,a[1]); |
lolpcc | 1:6877bb99aa17 | 238 | d = opendir(buf); |
lolpcc | 1:6877bb99aa17 | 239 | if(d != NULL) { |
lolpcc | 1:6877bb99aa17 | 240 | while((p = readdir(d)) != NULL) { |
lolpcc | 1:6877bb99aa17 | 241 | lprintf("- %s\n\r", p->d_name); |
lolpcc | 1:6877bb99aa17 | 242 | } |
lolpcc | 1:6877bb99aa17 | 243 | } else { |
lolpcc | 1:6877bb99aa17 | 244 | error("Could not open directory!"); |
lolpcc | 1:6877bb99aa17 | 245 | } |
lolpcc | 1:6877bb99aa17 | 246 | closedir(d); |
lolpcc | 1:6877bb99aa17 | 247 | } |
lolpcc | 1:6877bb99aa17 | 248 | void cd_file(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 249 | { |
lolpcc | 1:6877bb99aa17 | 250 | int x; |
lolpcc | 1:6877bb99aa17 | 251 | char y; |
lolpcc | 1:6877bb99aa17 | 252 | |
lolpcc | 1:6877bb99aa17 | 253 | y = a[1][strlen(a[1])]; |
lolpcc | 1:6877bb99aa17 | 254 | |
lolpcc | 1:6877bb99aa17 | 255 | if(a[1][0]=='/'){ |
lolpcc | 1:6877bb99aa17 | 256 | if(y!='/') |
lolpcc | 1:6877bb99aa17 | 257 | sprintf(pwd,"%s/",a[1]); |
lolpcc | 1:6877bb99aa17 | 258 | else |
lolpcc | 1:6877bb99aa17 | 259 | sprintf(pwd,a[1]); |
lolpcc | 1:6877bb99aa17 | 260 | } else |
lolpcc | 1:6877bb99aa17 | 261 | lprintf("File Path like /local/\nCurrently you are in %s\n",pwd); |
lolpcc | 1:6877bb99aa17 | 262 | x = 0; |
lolpcc | 1:6877bb99aa17 | 263 | if((strcmp(pwd,"/sd/"))==0) |
lolpcc | 1:6877bb99aa17 | 264 | x = 1; |
lolpcc | 1:6877bb99aa17 | 265 | else if((strcmp(pwd,"/local/"))==0) |
lolpcc | 1:6877bb99aa17 | 266 | x = 1; |
lolpcc | 1:6877bb99aa17 | 267 | if(!x){ |
lolpcc | 1:6877bb99aa17 | 268 | lprintf("Only directories are /local/ or /sd/ (If the SD card is in slot, resetting to /local/\n"); |
lolpcc | 1:6877bb99aa17 | 269 | sprintf(pwd,"/local/"); |
lolpcc | 1:6877bb99aa17 | 270 | } |
lolpcc | 1:6877bb99aa17 | 271 | } |
lolpcc | 1:6877bb99aa17 | 272 | void pwd_file(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 273 | { |
lolpcc | 1:6877bb99aa17 | 274 | lprintf("%s\n",pwd); |
lolpcc | 1:6877bb99aa17 | 275 | } |
lolpcc | 1:6877bb99aa17 | 276 | void wait_control(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 277 | { |
lolpcc | 1:6877bb99aa17 | 278 | wait(htoi(a[1])/10); |
lolpcc | 1:6877bb99aa17 | 279 | } |
lolpcc | 1:6877bb99aa17 | 280 | |
lolpcc | 1:6877bb99aa17 | 281 | void print_string(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 282 | { |
lolpcc | 1:6877bb99aa17 | 283 | int cnt = 1; |
lolpcc | 1:6877bb99aa17 | 284 | int len; |
lolpcc | 1:6877bb99aa17 | 285 | while(cnt <= c){ |
lolpcc | 1:6877bb99aa17 | 286 | if(a[cnt][0]=='v' || a[cnt][0]=='V'){ |
lolpcc | 1:6877bb99aa17 | 287 | len = strlen(a[cnt]); |
lolpcc | 1:6877bb99aa17 | 288 | if(len == 2){ |
lolpcc | 1:6877bb99aa17 | 289 | lprintf(" %04x",htoi(a[cnt])); |
lolpcc | 1:6877bb99aa17 | 290 | } else { |
lolpcc | 1:6877bb99aa17 | 291 | lprintf("%s",a[cnt]); |
lolpcc | 1:6877bb99aa17 | 292 | } |
lolpcc | 1:6877bb99aa17 | 293 | } else |
lolpcc | 1:6877bb99aa17 | 294 | lprintf("%s",a[cnt]); |
lolpcc | 1:6877bb99aa17 | 295 | cnt++; |
lolpcc | 1:6877bb99aa17 | 296 | } |
lolpcc | 1:6877bb99aa17 | 297 | lprintf("\n"); |
lolpcc | 1:6877bb99aa17 | 298 | } |
lolpcc | 1:6877bb99aa17 | 299 | |
lolpcc | 1:6877bb99aa17 | 300 | void help_display(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 301 | { |
lolpcc | 1:6877bb99aa17 | 302 | lprintf("%s",HELP_STRING); |
lolpcc | 1:6877bb99aa17 | 303 | lprintf("%s",HELP_STRING2); |
lolpcc | 1:6877bb99aa17 | 304 | lprintf("%s",HELP_STRING3); |
lolpcc | 1:6877bb99aa17 | 305 | lprintf("%s",HELP_SCRIPT1); |
lolpcc | 1:6877bb99aa17 | 306 | } |
lolpcc | 1:6877bb99aa17 | 307 | |
lolpcc | 1:6877bb99aa17 | 308 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 309 | /* */ |
lolpcc | 1:6877bb99aa17 | 310 | /* Diag Command stubs are here */ |
lolpcc | 1:6877bb99aa17 | 311 | /* */ |
lolpcc | 1:6877bb99aa17 | 312 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 313 | |
lolpcc | 1:6877bb99aa17 | 314 | void list(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 315 | { |
lolpcc | 1:6877bb99aa17 | 316 | i2c_probe(); |
lolpcc | 1:6877bb99aa17 | 317 | } |
lolpcc | 1:6877bb99aa17 | 318 | |
lolpcc | 1:6877bb99aa17 | 319 | void i2cw(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 320 | { |
lolpcc | 1:6877bb99aa17 | 321 | pio_write(htoi(a[1]),htoi(a[2])); |
lolpcc | 1:6877bb99aa17 | 322 | } |
lolpcc | 1:6877bb99aa17 | 323 | |
lolpcc | 1:6877bb99aa17 | 324 | void i2cr(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 325 | { |
lolpcc | 1:6877bb99aa17 | 326 | pio_read(htoi(a[1])); |
lolpcc | 1:6877bb99aa17 | 327 | } |
lolpcc | 1:6877bb99aa17 | 328 | |
lolpcc | 1:6877bb99aa17 | 329 | void led_test(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 330 | { |
lolpcc | 1:6877bb99aa17 | 331 | if(c==2){ |
lolpcc | 1:6877bb99aa17 | 332 | test_leds(htoi(a[1])); |
lolpcc | 1:6877bb99aa17 | 333 | } else if(c==3){ |
lolpcc | 1:6877bb99aa17 | 334 | if((strcmp(a[1],"on"))==0){ |
lolpcc | 1:6877bb99aa17 | 335 | if((strcmp(a[2],"all"))==0) |
lolpcc | 1:6877bb99aa17 | 336 | led_on(htoi(0)); |
lolpcc | 1:6877bb99aa17 | 337 | else |
lolpcc | 1:6877bb99aa17 | 338 | led_on(htoi(a[2])); |
lolpcc | 1:6877bb99aa17 | 339 | } else if((strcmp(a[1],"off"))==0){ |
lolpcc | 1:6877bb99aa17 | 340 | if((strcmp(a[2],"all"))==0) |
lolpcc | 1:6877bb99aa17 | 341 | led_off(htoi(0)); |
lolpcc | 1:6877bb99aa17 | 342 | else |
lolpcc | 1:6877bb99aa17 | 343 | led_off(htoi(a[2])); |
lolpcc | 1:6877bb99aa17 | 344 | } else |
lolpcc | 1:6877bb99aa17 | 345 | lprintf("LED Control Error: led on/off <led>\n"); |
lolpcc | 1:6877bb99aa17 | 346 | |
lolpcc | 1:6877bb99aa17 | 347 | } else { |
lolpcc | 1:6877bb99aa17 | 348 | lprintf("led <num> - simple led test, go round loop num times\n"); |
lolpcc | 1:6877bb99aa17 | 349 | lprintf("led <on/off> <num> - Turn <led num> <on/off>\n"); |
lolpcc | 1:6877bb99aa17 | 350 | } |
lolpcc | 1:6877bb99aa17 | 351 | } |
lolpcc | 1:6877bb99aa17 | 352 | |
lolpcc | 1:6877bb99aa17 | 353 | void sseg_test(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 354 | { |
lolpcc | 1:6877bb99aa17 | 355 | if(c==2){ |
lolpcc | 1:6877bb99aa17 | 356 | lprintf("Testing the Seven Segment Display, will go roung the test loop %d times\n",htoi(a[1])); |
lolpcc | 1:6877bb99aa17 | 357 | test_seven_seg(htoi(a[1])); |
lolpcc | 1:6877bb99aa17 | 358 | } else if (c==3 & (strcmp(a[1],"val"))==0){ |
lolpcc | 1:6877bb99aa17 | 359 | sseg_four_digits(htoi(a[2])); |
lolpcc | 1:6877bb99aa17 | 360 | } else { |
lolpcc | 1:6877bb99aa17 | 361 | lprintf("sseg <num> - basic test of sseg, loop num times\n"); |
lolpcc | 1:6877bb99aa17 | 362 | lprintf("sseg val <num> - display number on the sseg display\n"); |
lolpcc | 1:6877bb99aa17 | 363 | } |
lolpcc | 1:6877bb99aa17 | 364 | } |
lolpcc | 1:6877bb99aa17 | 365 | |
lolpcc | 1:6877bb99aa17 | 366 | void a2d_test(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 367 | { |
lolpcc | 1:6877bb99aa17 | 368 | show_a2d(); |
lolpcc | 1:6877bb99aa17 | 369 | } |
lolpcc | 1:6877bb99aa17 | 370 | |
lolpcc | 1:6877bb99aa17 | 371 | void snd_test(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 372 | { |
lolpcc | 1:6877bb99aa17 | 373 | sound(); |
lolpcc | 1:6877bb99aa17 | 374 | } |
lolpcc | 1:6877bb99aa17 | 375 | |
lolpcc | 1:6877bb99aa17 | 376 | void dig_test(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 377 | { |
lolpcc | 1:6877bb99aa17 | 378 | lprintf("Testing the Digital I/O, will go roung the test loop %d times\n",htoi(a[1])); |
lolpcc | 1:6877bb99aa17 | 379 | digital_test(htoi(a[1])); |
lolpcc | 1:6877bb99aa17 | 380 | } |
lolpcc | 1:6877bb99aa17 | 381 | |
lolpcc | 1:6877bb99aa17 | 382 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 383 | /* */ |
lolpcc | 1:6877bb99aa17 | 384 | /* Test routines for the Keyboard and LCD */ |
lolpcc | 1:6877bb99aa17 | 385 | /* at the mo we need to know what type of */ |
lolpcc | 1:6877bb99aa17 | 386 | /* keyboard and LCD we have, carried on */ |
lolpcc | 1:6877bb99aa17 | 387 | /* the supplied argument */ |
lolpcc | 1:6877bb99aa17 | 388 | /* */ |
lolpcc | 1:6877bb99aa17 | 389 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 390 | void lcd_test(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 391 | { |
lolpcc | 1:6877bb99aa17 | 392 | switch(htoi(a[1])){ |
lolpcc | 1:6877bb99aa17 | 393 | case 1 : /* Robot Electronics I2C LCD interface */ |
lolpcc | 1:6877bb99aa17 | 394 | init_lcd(); /* Setup the LCD */ |
lolpcc | 1:6877bb99aa17 | 395 | clear_lcd(); /* Clear the screen */ |
lolpcc | 1:6877bb99aa17 | 396 | write_lcd("Hello"); /* Send it some text */ |
lolpcc | 1:6877bb99aa17 | 397 | break; |
lolpcc | 1:6877bb99aa17 | 398 | case 2 : /* Batron I2C LCD interface */ |
lolpcc | 1:6877bb99aa17 | 399 | batron_lcd_init(); |
lolpcc | 1:6877bb99aa17 | 400 | batron("Hello World"); |
lolpcc | 1:6877bb99aa17 | 401 | break; |
lolpcc | 1:6877bb99aa17 | 402 | default : |
lolpcc | 1:6877bb99aa17 | 403 | lprintf("Unknown LCD type %d\n",htoi(a[1])); |
lolpcc | 1:6877bb99aa17 | 404 | } |
lolpcc | 1:6877bb99aa17 | 405 | } |
lolpcc | 1:6877bb99aa17 | 406 | |
lolpcc | 1:6877bb99aa17 | 407 | void lcd_print(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 408 | { |
lolpcc | 1:6877bb99aa17 | 409 | batron_lcd_init(); |
lolpcc | 1:6877bb99aa17 | 410 | batron(a[1]); |
lolpcc | 1:6877bb99aa17 | 411 | } |
lolpcc | 1:6877bb99aa17 | 412 | void lcd_clear(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 413 | { |
lolpcc | 1:6877bb99aa17 | 414 | batron_clear(); |
lolpcc | 1:6877bb99aa17 | 415 | } |
lolpcc | 1:6877bb99aa17 | 416 | |
lolpcc | 1:6877bb99aa17 | 417 | void kbd_test(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 418 | { |
lolpcc | 1:6877bb99aa17 | 419 | char r; |
lolpcc | 1:6877bb99aa17 | 420 | switch(htoi(a[1])){ |
lolpcc | 1:6877bb99aa17 | 421 | case 3 : /* Robot Electronics I2C LCD interface */ |
lolpcc | 1:6877bb99aa17 | 422 | lprintf("Will take 4 key presses of the Robot Electronics key pad\n"); |
lolpcc | 1:6877bb99aa17 | 423 | lprintf("Displaying the results to the user\n"); |
lolpcc | 1:6877bb99aa17 | 424 | r = blocking_read_keyboard(); |
lolpcc | 1:6877bb99aa17 | 425 | lprintf("Key 1 %d, or 0x%x, or %c\n",r,r,r); |
lolpcc | 1:6877bb99aa17 | 426 | r = blocking_read_keyboard(); |
lolpcc | 1:6877bb99aa17 | 427 | lprintf("Key 2 %d, or 0x%x, or %c\n",r,r,r); |
lolpcc | 1:6877bb99aa17 | 428 | r = blocking_read_keyboard(); |
lolpcc | 1:6877bb99aa17 | 429 | lprintf("Key 3 %d, or 0x%x, or %c\n",r,r,r); |
lolpcc | 1:6877bb99aa17 | 430 | r = blocking_read_keyboard(); |
lolpcc | 1:6877bb99aa17 | 431 | lprintf("Key 4 %d, or 0x%x, or %c\n",r,r,r); |
lolpcc | 1:6877bb99aa17 | 432 | break; |
lolpcc | 1:6877bb99aa17 | 433 | case 4 : /* Work around, with PCF8574 when with Batron I2C LCD */ |
lolpcc | 1:6877bb99aa17 | 434 | lprintf("Will take 4 key presses of thePCF8574s key pad\n"); |
lolpcc | 1:6877bb99aa17 | 435 | lprintf("Displaying the results to the user\n"); |
lolpcc | 1:6877bb99aa17 | 436 | r = pcf8574_kbd(1); |
lolpcc | 1:6877bb99aa17 | 437 | lprintf("Key 1 %d, or 0x%x, or %c\n",r,r,r); |
lolpcc | 1:6877bb99aa17 | 438 | r = pcf8574_kbd(1); |
lolpcc | 1:6877bb99aa17 | 439 | lprintf("Key 2 %d, or 0x%x, or %c\n",r,r,r); |
lolpcc | 1:6877bb99aa17 | 440 | r = pcf8574_kbd(1); |
lolpcc | 1:6877bb99aa17 | 441 | lprintf("Key 3 %d, or 0x%x, or %c\n",r,r,r); |
lolpcc | 1:6877bb99aa17 | 442 | r = pcf8574_kbd(1); |
lolpcc | 1:6877bb99aa17 | 443 | lprintf("Key 4 %d, or 0x%x, or %c\n",r,r,r); |
lolpcc | 1:6877bb99aa17 | 444 | break; |
lolpcc | 1:6877bb99aa17 | 445 | default : |
lolpcc | 1:6877bb99aa17 | 446 | lprintf("Unknown KBD type %d\n",htoi(a[1])); |
lolpcc | 1:6877bb99aa17 | 447 | } |
lolpcc | 1:6877bb99aa17 | 448 | |
lolpcc | 1:6877bb99aa17 | 449 | } |
lolpcc | 1:6877bb99aa17 | 450 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 451 | /* */ |
lolpcc | 1:6877bb99aa17 | 452 | /* CAN Bus tests, run from here */ |
lolpcc | 1:6877bb99aa17 | 453 | /* */ |
lolpcc | 1:6877bb99aa17 | 454 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 455 | void canrx(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 456 | { |
lolpcc | 1:6877bb99aa17 | 457 | lprintf("Locking into the CAN message feed, till RESET is pressed\n"); |
lolpcc | 1:6877bb99aa17 | 458 | while(1){ |
lolpcc | 1:6877bb99aa17 | 459 | can_receive(); |
lolpcc | 1:6877bb99aa17 | 460 | } |
lolpcc | 1:6877bb99aa17 | 461 | } |
lolpcc | 1:6877bb99aa17 | 462 | void cantx(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 463 | { |
lolpcc | 1:6877bb99aa17 | 464 | if(c== 2 | c==4){ |
lolpcc | 1:6877bb99aa17 | 465 | if((strcmp(a[1],"prt"))==0){ |
lolpcc | 1:6877bb99aa17 | 466 | can_send_string(htoi(a[2]),a[3]); |
lolpcc | 1:6877bb99aa17 | 467 | } else if((strcmp(a[1],"raw"))==0){ |
lolpcc | 1:6877bb99aa17 | 468 | can_send_raw(htoi(a[2]),a[3]); |
lolpcc | 1:6877bb99aa17 | 469 | } else if((strcmp(a[1],"sync"))==0){ |
lolpcc | 1:6877bb99aa17 | 470 | can_send_sync(); |
lolpcc | 1:6877bb99aa17 | 471 | } else if((strcmp(a[1],"int"))==0){ |
lolpcc | 1:6877bb99aa17 | 472 | can_send_int(htoi(a[2]),htoi(a[3]),0); |
lolpcc | 1:6877bb99aa17 | 473 | } else if((strcmp(a[1],"time"))==0){ |
lolpcc | 1:6877bb99aa17 | 474 | can_send_int(htoi(a[2]),htoi(a[3]),1); |
lolpcc | 1:6877bb99aa17 | 475 | } else if((strcmp(a[1],"who"))==0){ |
lolpcc | 1:6877bb99aa17 | 476 | can_send_who(); |
lolpcc | 1:6877bb99aa17 | 477 | } else |
lolpcc | 1:6877bb99aa17 | 478 | lprintf("cantx commnads are, sync, int, raw, who, prt\n"); |
lolpcc | 1:6877bb99aa17 | 479 | } else { |
lolpcc | 1:6877bb99aa17 | 480 | lprintf("cantx <prt/raw> <remote station> <message>\n"); |
lolpcc | 1:6877bb99aa17 | 481 | lprintf("cantx int <remote station> <value>\n"); |
lolpcc | 1:6877bb99aa17 | 482 | lprintf("cantx time <remote station> <value>\n"); |
lolpcc | 1:6877bb99aa17 | 483 | lprintf("cantx sync\n"); |
lolpcc | 1:6877bb99aa17 | 484 | lprintf("cantx who\n"); |
lolpcc | 1:6877bb99aa17 | 485 | } |
lolpcc | 1:6877bb99aa17 | 486 | } |
lolpcc | 1:6877bb99aa17 | 487 | void can_cmd(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 488 | { |
lolpcc | 1:6877bb99aa17 | 489 | can_send_string(htoi(a[1]),a[2]); |
lolpcc | 1:6877bb99aa17 | 490 | } |
lolpcc | 1:6877bb99aa17 | 491 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 492 | /* */ |
lolpcc | 1:6877bb99aa17 | 493 | /* TCP/IP Networking test tool box */ |
lolpcc | 1:6877bb99aa17 | 494 | /* */ |
lolpcc | 1:6877bb99aa17 | 495 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 496 | void netinit(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 497 | { |
lolpcc | 1:6877bb99aa17 | 498 | network_init(); |
lolpcc | 1:6877bb99aa17 | 499 | lprintf("Starting SNTP\n"); |
lolpcc | 1:6877bb99aa17 | 500 | SNTPReadIniFile("/local/sntp.ini"); |
lolpcc | 1:6877bb99aa17 | 501 | // SNTPWriteIniFile(stdout); |
lolpcc | 1:6877bb99aa17 | 502 | SNTPClientInit(); |
lolpcc | 1:6877bb99aa17 | 503 | } |
lolpcc | 1:6877bb99aa17 | 504 | |
lolpcc | 1:6877bb99aa17 | 505 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 506 | /* */ |
lolpcc | 1:6877bb99aa17 | 507 | /* Test the Ticker system */ |
lolpcc | 1:6877bb99aa17 | 508 | /* */ |
lolpcc | 1:6877bb99aa17 | 509 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 510 | void ticker_test(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 511 | { |
lolpcc | 1:6877bb99aa17 | 512 | setup_ticker(); |
lolpcc | 1:6877bb99aa17 | 513 | } |
lolpcc | 1:6877bb99aa17 | 514 | |
lolpcc | 1:6877bb99aa17 | 515 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 516 | /* */ |
lolpcc | 1:6877bb99aa17 | 517 | /* Set the station ID for the CAN bus */ |
lolpcc | 1:6877bb99aa17 | 518 | /* */ |
lolpcc | 1:6877bb99aa17 | 519 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 520 | void station_set(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 521 | { |
lolpcc | 1:6877bb99aa17 | 522 | station_id = htoi(a[1]); |
lolpcc | 1:6877bb99aa17 | 523 | } |
lolpcc | 1:6877bb99aa17 | 524 | |
lolpcc | 1:6877bb99aa17 | 525 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 526 | /* */ |
lolpcc | 1:6877bb99aa17 | 527 | /* Display the system time to the user */ |
lolpcc | 1:6877bb99aa17 | 528 | /* */ |
lolpcc | 1:6877bb99aa17 | 529 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 530 | void date_cmd(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 531 | { |
lolpcc | 1:6877bb99aa17 | 532 | time_t seconds = time(NULL); |
lolpcc | 1:6877bb99aa17 | 533 | lprintf("mbed RTC time(%d): %s\n",seconds,ctime(&seconds)); |
lolpcc | 1:6877bb99aa17 | 534 | } |
lolpcc | 1:6877bb99aa17 | 535 | void date_set(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 536 | { |
lolpcc | 1:6877bb99aa17 | 537 | time_t seconds; |
lolpcc | 1:6877bb99aa17 | 538 | seconds = atoi(a[1]); /* http://www.onlineconversion.com/unix_time.htm */ |
lolpcc | 1:6877bb99aa17 | 539 | set_time(seconds); |
lolpcc | 1:6877bb99aa17 | 540 | } |
lolpcc | 1:6877bb99aa17 | 541 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 542 | /* */ |
lolpcc | 1:6877bb99aa17 | 543 | /* Display the system state to the user */ |
lolpcc | 1:6877bb99aa17 | 544 | /* */ |
lolpcc | 1:6877bb99aa17 | 545 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 546 | #define STATE_VAR 0x0001 |
lolpcc | 1:6877bb99aa17 | 547 | #define STATE_I2C 0x0002 |
lolpcc | 1:6877bb99aa17 | 548 | #define STATE_BRD 0x0004 |
lolpcc | 1:6877bb99aa17 | 549 | #define STATE_JMP 0x0008 |
lolpcc | 1:6877bb99aa17 | 550 | |
lolpcc | 1:6877bb99aa17 | 551 | void show_state(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 552 | { |
lolpcc | 1:6877bb99aa17 | 553 | int cnt = 0; |
lolpcc | 1:6877bb99aa17 | 554 | int show=0; |
lolpcc | 1:6877bb99aa17 | 555 | |
lolpcc | 1:6877bb99aa17 | 556 | if(c!=1){ |
lolpcc | 1:6877bb99aa17 | 557 | if((strcmp(a[1],"var"))==0) |
lolpcc | 1:6877bb99aa17 | 558 | show = STATE_VAR; |
lolpcc | 1:6877bb99aa17 | 559 | else if((strcmp(a[1],"i2c"))==0) |
lolpcc | 1:6877bb99aa17 | 560 | show = STATE_I2C; |
lolpcc | 1:6877bb99aa17 | 561 | else if((strcmp(a[1],"board"))==0) |
lolpcc | 1:6877bb99aa17 | 562 | show = STATE_BRD; |
lolpcc | 1:6877bb99aa17 | 563 | else if((strcmp(a[1],"jmp"))==0) |
lolpcc | 1:6877bb99aa17 | 564 | show = STATE_JMP; |
lolpcc | 1:6877bb99aa17 | 565 | else |
lolpcc | 1:6877bb99aa17 | 566 | lprintf("Unknown state %s, should be var, jmp, i2c, board\n",a[1]); |
lolpcc | 1:6877bb99aa17 | 567 | } else { |
lolpcc | 1:6877bb99aa17 | 568 | show = STATE_VAR | STATE_I2C | STATE_BRD | STATE_JMP; |
lolpcc | 1:6877bb99aa17 | 569 | } |
lolpcc | 1:6877bb99aa17 | 570 | |
lolpcc | 1:6877bb99aa17 | 571 | if(show & STATE_BRD){ |
lolpcc | 1:6877bb99aa17 | 572 | time_t seconds = time(NULL); |
lolpcc | 1:6877bb99aa17 | 573 | lprintf("mbed RTC time(%d): %s",seconds,ctime(&seconds)); |
lolpcc | 1:6877bb99aa17 | 574 | lprintf("Baudrate Setting is %d\n",set_baud_rate); |
lolpcc | 1:6877bb99aa17 | 575 | lprintf("Station CAN ID is %d\n",station_id); |
lolpcc | 1:6877bb99aa17 | 576 | lprintf("Sysem State is %08x\nVariables, ",sys_state); |
lolpcc | 1:6877bb99aa17 | 577 | } |
lolpcc | 1:6877bb99aa17 | 578 | if(show & STATE_VAR){ |
lolpcc | 1:6877bb99aa17 | 579 | lprintf("System Variables\n"); |
lolpcc | 1:6877bb99aa17 | 580 | while(cnt != MAX_VAR){ |
lolpcc | 1:6877bb99aa17 | 581 | lprintf("%04x, ",var[cnt]); |
lolpcc | 1:6877bb99aa17 | 582 | cnt++; |
lolpcc | 1:6877bb99aa17 | 583 | } |
lolpcc | 1:6877bb99aa17 | 584 | lprintf("\n"); |
lolpcc | 1:6877bb99aa17 | 585 | } |
lolpcc | 1:6877bb99aa17 | 586 | if(show & STATE_JMP){ |
lolpcc | 1:6877bb99aa17 | 587 | lprintf("System Jump Table\n"); |
lolpcc | 1:6877bb99aa17 | 588 | while(cnt != MAX_JMP){ |
lolpcc | 1:6877bb99aa17 | 589 | lprintf("%04x, ",jmp[cnt]); |
lolpcc | 1:6877bb99aa17 | 590 | cnt++; |
lolpcc | 1:6877bb99aa17 | 591 | } |
lolpcc | 1:6877bb99aa17 | 592 | lprintf("\n"); |
lolpcc | 1:6877bb99aa17 | 593 | } |
lolpcc | 1:6877bb99aa17 | 594 | if(show & STATE_I2C){ |
lolpcc | 1:6877bb99aa17 | 595 | lprintf("Attached I2C devices \n"); |
lolpcc | 1:6877bb99aa17 | 596 | i2c_probe(); |
lolpcc | 1:6877bb99aa17 | 597 | } |
lolpcc | 1:6877bb99aa17 | 598 | } |
lolpcc | 1:6877bb99aa17 | 599 | |
lolpcc | 1:6877bb99aa17 | 600 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 601 | /* */ |
lolpcc | 1:6877bb99aa17 | 602 | /* SD card file system test */ |
lolpcc | 1:6877bb99aa17 | 603 | /* */ |
lolpcc | 1:6877bb99aa17 | 604 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 605 | void sdcard_test(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 606 | { |
lolpcc | 1:6877bb99aa17 | 607 | sys_state = (sys_state & ~MEMSTICK) | SDCARD; |
lolpcc | 1:6877bb99aa17 | 608 | lprintf("Set the file system to the SD Card\n"); |
lolpcc | 1:6877bb99aa17 | 609 | } |
lolpcc | 1:6877bb99aa17 | 610 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 611 | /* */ |
lolpcc | 1:6877bb99aa17 | 612 | /* Mem Stick file system test */ |
lolpcc | 1:6877bb99aa17 | 613 | /* */ |
lolpcc | 1:6877bb99aa17 | 614 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 615 | void memstick_test(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 616 | { |
lolpcc | 1:6877bb99aa17 | 617 | sys_state = (sys_state & ~SDCARD) | MEMSTICK; |
lolpcc | 1:6877bb99aa17 | 618 | lprintf("Set the file system to the Memory Stick\n"); |
lolpcc | 1:6877bb99aa17 | 619 | } |
lolpcc | 1:6877bb99aa17 | 620 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 621 | /* */ |
lolpcc | 1:6877bb99aa17 | 622 | /* General Test command for the source */ |
lolpcc | 1:6877bb99aa17 | 623 | /* */ |
lolpcc | 1:6877bb99aa17 | 624 | /******************************************/ |
lolpcc | 1:6877bb99aa17 | 625 | void cmd_test(int c, char **a) |
lolpcc | 1:6877bb99aa17 | 626 | { |
lolpcc | 1:6877bb99aa17 | 627 | int b=0; |
lolpcc | 1:6877bb99aa17 | 628 | while(b!=htoi(a[1])){ |
lolpcc | 1:6877bb99aa17 | 629 | sseg_four_digits(b); |
lolpcc | 1:6877bb99aa17 | 630 | wait(0.1); |
lolpcc | 1:6877bb99aa17 | 631 | b++; |
lolpcc | 1:6877bb99aa17 | 632 | } |
lolpcc | 1:6877bb99aa17 | 633 | } |