Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Committer:
klauss
Date:
Wed Sep 24 18:02:18 2014 +0000
Revision:
29:7246460b73f8
Parent:
28:94aec56c6329
Child:
30:8dfb6d8de53d
- Mudancas no prompt; - Timer do cb off enquanto ele estiver em ligacao

Who changed what in which revision?

UserRevisionLine numberNew contents of line
klauss 19:ab2088e0dec6 1 #include "mbed.h"
klauss 19:ab2088e0dec6 2 #include "stdint.h"
klauss 19:ab2088e0dec6 3 #include "configs.h"
klauss 19:ab2088e0dec6 4 #include "vz_protocol.h"
klauss 19:ab2088e0dec6 5 #include "parallelcpld.h"
Cola 21:0bd688722e81 6 #include "flood.h"
klauss 28:94aec56c6329 7 #include "debug.h"
Cola 24:270b436a1bb0 8
klauss 19:ab2088e0dec6 9 //#include "debug.h"
klauss 19:ab2088e0dec6 10
klauss 28:94aec56c6329 11 uint8_t debug_alive = 0;
klauss 28:94aec56c6329 12 uint8_t debug_sip = 0;
klauss 29:7246460b73f8 13 uint8_t debug_vector = 0;
klauss 29:7246460b73f8 14 uint8_t debug_cb = 0;
Cola 22:d2a4b5939115 15 uint8_t pcks_s = 0;
Cola 24:270b436a1bb0 16 uint8_t pshowcb = 0;
klauss 28:94aec56c6329 17
klauss 29:7246460b73f8 18 uint8_t test_debug = 1;
klauss 19:ab2088e0dec6 19 #define PVERSION 1 // Sempre atualizar a versao do prompt
klauss 19:ab2088e0dec6 20
Cola 21:0bd688722e81 21 #define DEBUGBUFSIZE 50
klauss 19:ab2088e0dec6 22 char debug_buf[DEBUGBUFSIZE];
klauss 28:94aec56c6329 23 FILE *fip, *fmask, *fgate, *fport, *fsip, *fsport, *fext, *fserext;
klauss 19:ab2088e0dec6 24 uint8_t dog = 1;
klauss 19:ab2088e0dec6 25 uint8_t debug_prompt = 0;
klauss 19:ab2088e0dec6 26 uint8_t bufptr = 0;
klauss 19:ab2088e0dec6 27
klauss 19:ab2088e0dec6 28 uint8_t xmemmatch(const uint8_t * s1, const uint8_t * s2, uint16_t size) { // presente da lib.h pode retirar da versao final
klauss 19:ab2088e0dec6 29 while (size--) {
klauss 19:ab2088e0dec6 30 if (*s1++ != *s2++) return 0; /* does not match */
klauss 19:ab2088e0dec6 31 }
klauss 19:ab2088e0dec6 32 return 1; /* matches */
klauss 19:ab2088e0dec6 33 }
klauss 19:ab2088e0dec6 34
klauss 19:ab2088e0dec6 35 uint8_t xstrmatch(const uint8_t * s1, const uint8_t * s2) { // presente na lib.h pode retirar da versao final
klauss 19:ab2088e0dec6 36 while (*s1) {
klauss 19:ab2088e0dec6 37 if (*s1++ != *s2++) return 0; /* does not match */
klauss 19:ab2088e0dec6 38 }
klauss 19:ab2088e0dec6 39 if ( *s2 == 0 )
klauss 19:ab2088e0dec6 40 return 1; /* matches */
klauss 19:ab2088e0dec6 41 else
klauss 19:ab2088e0dec6 42 return 0; /* does not match */
klauss 19:ab2088e0dec6 43 }
klauss 19:ab2088e0dec6 44
klauss 19:ab2088e0dec6 45 void xmemcpy(uint8_t * dest, const uint8_t * src, uint16_t size) { // presente na lib.h pode retirar da versao final
klauss 19:ab2088e0dec6 46 while (size--) *dest++ = *src++;
klauss 19:ab2088e0dec6 47 }
klauss 19:ab2088e0dec6 48
Cola 21:0bd688722e81 49 int str2uint (char * s, unsigned int * val) {
Cola 21:0bd688722e81 50 int i = 0;
Cola 21:0bd688722e81 51 unsigned int ret = 0;
Cola 21:0bd688722e81 52 for (;;) {
Cola 21:0bd688722e81 53 if (s[i] < '0') {
Cola 21:0bd688722e81 54 *val = ret;
Cola 21:0bd688722e81 55 return i;
Cola 21:0bd688722e81 56 }
Cola 21:0bd688722e81 57 ret *= 10;
Cola 21:0bd688722e81 58 ret += s[i] - '0';
Cola 21:0bd688722e81 59 i++;
Cola 21:0bd688722e81 60 }
Cola 21:0bd688722e81 61 }
klauss 19:ab2088e0dec6 62
klauss 19:ab2088e0dec6 63 void cat(const char* fname) // Print the content of a given file
klauss 19:ab2088e0dec6 64 {
klauss 19:ab2088e0dec6 65 char buff[513];
klauss 19:ab2088e0dec6 66 int num;
klauss 19:ab2088e0dec6 67
klauss 19:ab2088e0dec6 68 FILE *fp = fopen(fname, "r");
klauss 19:ab2088e0dec6 69 if (fp == NULL) {
klauss 28:94aec56c6329 70 pc.printf("Failed to open %s", fname);
klauss 19:ab2088e0dec6 71 return;
klauss 19:ab2088e0dec6 72 }
klauss 19:ab2088e0dec6 73
klauss 19:ab2088e0dec6 74 while ((num = fread(buff, 1, 512, fp)) > 0)
klauss 19:ab2088e0dec6 75 {
klauss 19:ab2088e0dec6 76 buff[num] = '\0';
klauss 19:ab2088e0dec6 77 pc.printf(buff);
klauss 19:ab2088e0dec6 78
klauss 19:ab2088e0dec6 79 }
klauss 19:ab2088e0dec6 80 fclose(fp);
klauss 19:ab2088e0dec6 81 }
klauss 19:ab2088e0dec6 82
klauss 28:94aec56c6329 83 // operantion with the system config files
klauss 28:94aec56c6329 84 void files (const char type) {
klauss 19:ab2088e0dec6 85 if (type == 's' ){ // show files
klauss 19:ab2088e0dec6 86 pc.printf("\n\r");
klauss 28:94aec56c6329 87 pc.printf("Header IP " );
klauss 19:ab2088e0dec6 88 cat("/qspi/myip.txt");
klauss 28:94aec56c6329 89 pc.printf("\n\rHeader ext ");
klauss 28:94aec56c6329 90 cat("/qspi/myext.txt");
klauss 28:94aec56c6329 91 pc.printf("\n\rHeader port ");
klauss 28:94aec56c6329 92 cat("/qspi/mysipport.txt");
klauss 28:94aec56c6329 93
klauss 28:94aec56c6329 94 pc.printf("\n\rServer ip ");
klauss 28:94aec56c6329 95 cat("/qspi/serverip.txt");
klauss 28:94aec56c6329 96 pc.printf("\n\rServer ext ");
klauss 28:94aec56c6329 97 cat("/qspi/peerext.txt");
klauss 28:94aec56c6329 98 pc.printf("\n\rServer port ");
klauss 28:94aec56c6329 99 cat("/qspi/serverport.txt");
klauss 28:94aec56c6329 100
klauss 28:94aec56c6329 101 pc.printf("\n\rMascara de rede ");
klauss 19:ab2088e0dec6 102 cat("/qspi/mymask.txt");
klauss 28:94aec56c6329 103 pc.printf("\n\rGateway IP ");
klauss 19:ab2088e0dec6 104 cat("/qspi/mygate.txt");
klauss 19:ab2088e0dec6 105 }
klauss 19:ab2088e0dec6 106
klauss 19:ab2088e0dec6 107 if (type == 'c' ){ // close all files
klauss 28:94aec56c6329 108 fclose( fip );
klauss 28:94aec56c6329 109 fclose( fmask );
klauss 28:94aec56c6329 110 fclose( fgate );
klauss 28:94aec56c6329 111 fclose( fport );
klauss 28:94aec56c6329 112 fclose( fsip );
klauss 28:94aec56c6329 113 fclose( fsport );
klauss 28:94aec56c6329 114 fclose( fext );
klauss 28:94aec56c6329 115 fclose( fserext );
klauss 19:ab2088e0dec6 116 }
klauss 19:ab2088e0dec6 117
klauss 19:ab2088e0dec6 118 if (type == 'i' ){ // Check if files exist, if not create the files
klauss 19:ab2088e0dec6 119 fip = fopen("/qspi/myip.txt", "r");
klauss 19:ab2088e0dec6 120 if (fip == NULL){
klauss 19:ab2088e0dec6 121 fip = fopen("/qspi/myip.txt", "w");
klauss 29:7246460b73f8 122 //fprintf(fip, "%s\n\r",__MY_IP__); //myip
klauss 29:7246460b73f8 123 fprintf(fip, "%s",__MY_IP__); //myip
klauss 19:ab2088e0dec6 124 }
klauss 28:94aec56c6329 125
klauss 28:94aec56c6329 126 fserext = fopen("/qspi/myext.txt", "r");
klauss 28:94aec56c6329 127 if ( fserext == NULL ){
klauss 28:94aec56c6329 128 fserext = fopen("/qspi/myext.txt", "w");
klauss 28:94aec56c6329 129 fprintf( fserext, "%i\n\r" ,__MY_EXT__ ); //asterisk ext
klauss 28:94aec56c6329 130 }
klauss 28:94aec56c6329 131 fport = fopen("/qspi/mysipport.txt", "r");
klauss 28:94aec56c6329 132 if (fport == NULL){
klauss 28:94aec56c6329 133 fport = fopen("/qspi/mysipport.txt", "w");
klauss 28:94aec56c6329 134 fprintf(fport, "%i\n\r",__MY_PORT__); //mysipport
klauss 28:94aec56c6329 135 }
klauss 28:94aec56c6329 136 fsip = fopen("/qspi/serverip.txt", "r");
klauss 28:94aec56c6329 137 if (fsip == NULL){
klauss 28:94aec56c6329 138 fsip = fopen("/qspi/serverip.txt", "w");
klauss 29:7246460b73f8 139 //fprintf(fsip, "%s\n\r",__SERVER_IP__ ); //asterisk ip
klauss 29:7246460b73f8 140 fprintf(fsip, "%s",__SERVER_IP__ ); //asterisk ip
klauss 28:94aec56c6329 141 }
klauss 28:94aec56c6329 142
klauss 28:94aec56c6329 143 fext = fopen("/qspi/peerext.txt", "r");
klauss 28:94aec56c6329 144 if ( fext == NULL ){
klauss 28:94aec56c6329 145 fext = fopen("/qspi/peerext.txt", "w");
klauss 28:94aec56c6329 146 fprintf( fext, "%d\n\r",__PEER_EXT__ ); //asterisk ip
klauss 28:94aec56c6329 147 }
klauss 28:94aec56c6329 148 fsport = fopen("/qspi/serverport.txt", "r");
klauss 28:94aec56c6329 149 if (fsport == NULL){
klauss 28:94aec56c6329 150 fsport = fopen("/qspi/serverport.txt", "w");
klauss 28:94aec56c6329 151 fprintf(fsport, "%i\n\r",__SERVER_PORT__ ); //asterisk port
klauss 28:94aec56c6329 152 pc.printf("\n\r Default configurations set! \n\r");
klauss 28:94aec56c6329 153 }
klauss 28:94aec56c6329 154
klauss 19:ab2088e0dec6 155 fmask = fopen("/qspi/mymask.txt", "r");
klauss 19:ab2088e0dec6 156 if (fmask == NULL){
klauss 19:ab2088e0dec6 157 fmask = fopen("/qspi/mymask.txt", "w");
klauss 28:94aec56c6329 158 fprintf(fmask, "%s\n\r",__MY_MSK__); //mymask
klauss 19:ab2088e0dec6 159 }
klauss 19:ab2088e0dec6 160 fgate = fopen("/qspi/mygateway.txt", "r");
klauss 19:ab2088e0dec6 161 if (fgate == NULL){
klauss 19:ab2088e0dec6 162 fgate = fopen("/qspi/mygate.txt", "w");
klauss 28:94aec56c6329 163 fprintf(fgate, "%s\n\r",__MY_GTW__); //mygateway
klauss 19:ab2088e0dec6 164 }
klauss 19:ab2088e0dec6 165 }
klauss 19:ab2088e0dec6 166
klauss 19:ab2088e0dec6 167 if (type == 'r' ){ // Just open for read
klauss 19:ab2088e0dec6 168 fip = fopen("/qspi/myip.txt", "r");
klauss 19:ab2088e0dec6 169 fmask = fopen("/qspi/mymask.txt", "r");
klauss 19:ab2088e0dec6 170 fgate = fopen("/qspi/mygateway.txt", "r");
klauss 19:ab2088e0dec6 171 fport = fopen("/qspi/mysipport.txt", "r");
klauss 19:ab2088e0dec6 172 fsip = fopen("/qspi/serverip.txt", "r");
klauss 19:ab2088e0dec6 173 fsport = fopen("/qspi/serverport.txt", "r");
klauss 28:94aec56c6329 174 fext = fopen( "/qspi/myext.txt", "r" );
klauss 28:94aec56c6329 175 fserext = fopen( "/qspi/peerext.txt", "r" );
klauss 19:ab2088e0dec6 176 }
klauss 19:ab2088e0dec6 177
klauss 19:ab2088e0dec6 178 if (type == 'w'){ // Create and write the default configs
klauss 19:ab2088e0dec6 179 fip = fopen("/qspi/myip.txt", "w");
klauss 19:ab2088e0dec6 180 fmask = fopen("/qspi/mymask.txt", "w");
klauss 19:ab2088e0dec6 181 fgate = fopen("/qspi/mygateway.txt", "w");
klauss 19:ab2088e0dec6 182 fport = fopen("/qspi/mysipport.txt", "w");
klauss 19:ab2088e0dec6 183 fsip = fopen("/qspi/serverip.txt", "w");
klauss 19:ab2088e0dec6 184 fsport = fopen("/qspi/serverport.txt", "w");
klauss 28:94aec56c6329 185 fext = fopen( "/qspi/myext.txt", "w" );
klauss 28:94aec56c6329 186 fserext = fopen( "/qspi/peerext.txt", "w" );
klauss 19:ab2088e0dec6 187
klauss 29:7246460b73f8 188 //fprintf( fip, "%s\n\r", __MY_IP__ ); //myip
klauss 29:7246460b73f8 189 fprintf( fip, "%s", __MY_IP__ ); //myip
klauss 28:94aec56c6329 190 fprintf( fport, "%d\n\r", __MY_PORT__ ); //mysipport
klauss 29:7246460b73f8 191 fprintf( fext, "%d\n\r", __MY_EXT__ ); //myext
klauss 28:94aec56c6329 192
klauss 29:7246460b73f8 193 //fprintf( fsip, "%s\n\r", __SERVER_IP__ ); //asterisk ip
klauss 29:7246460b73f8 194 fprintf( fsip, "%s", __SERVER_IP__ ); //asterisk ip
klauss 28:94aec56c6329 195 fprintf( fserext, "%d\n\r",__PEER_EXT__ ); //asterisk port
klauss 28:94aec56c6329 196 fprintf( fsport, "%d\n\r",__SERVER_PORT__ ); //asterisk port
klauss 28:94aec56c6329 197
klauss 28:94aec56c6329 198 fprintf( fmask, "%s\n\r",__MY_MSK__ ); //mymask
klauss 28:94aec56c6329 199 fprintf( fgate, "%s\n\r", __MY_GTW__ ); //mygateway
klauss 19:ab2088e0dec6 200
klauss 19:ab2088e0dec6 201 files('c');
klauss 19:ab2088e0dec6 202
klauss 19:ab2088e0dec6 203 pc.printf("\n\r Default configurations set! \n\r");
klauss 19:ab2088e0dec6 204
klauss 19:ab2088e0dec6 205 }
klauss 19:ab2088e0dec6 206
klauss 19:ab2088e0dec6 207 }
klauss 26:725cbbedadd5 208 void init_fsystem(){
klauss 26:725cbbedadd5 209 // init file system and check if files exist
klauss 26:725cbbedadd5 210 if (!qspifs.isformatted()) {
klauss 26:725cbbedadd5 211 qspifs.format();
klauss 26:725cbbedadd5 212 pc.printf("File system configured!!\n\r");
klauss 26:725cbbedadd5 213 }
klauss 26:725cbbedadd5 214 files('i'); // check if the files are created
klauss 26:725cbbedadd5 215 files('c');
klauss 26:725cbbedadd5 216 pc.printf("*******System Ready*******\n\r");
klauss 19:ab2088e0dec6 217 }
klauss 19:ab2088e0dec6 218
klauss 28:94aec56c6329 219 // main prompt process
klauss 28:94aec56c6329 220 void prompt_process(){
klauss 28:94aec56c6329 221 //FIXME dar flush na serial
klauss 28:94aec56c6329 222
klauss 19:ab2088e0dec6 223 volatile char b = 0;
klauss 19:ab2088e0dec6 224 static uint8_t bufret = 0;
klauss 19:ab2088e0dec6 225
klauss 27:98f824719d1c 226 if ( pc.readable() ){
klauss 26:725cbbedadd5 227 // imput do teclado
klauss 19:ab2088e0dec6 228 b = pc.getc();
klauss 19:ab2088e0dec6 229
klauss 29:7246460b73f8 230 if( b == 0x0D ){ // enter
klauss 27:98f824719d1c 231 bufret = 1;
klauss 29:7246460b73f8 232 }else{
klauss 29:7246460b73f8 233 //FIXME como mudar o contador quando eu aperto backspace
klauss 29:7246460b73f8 234 pc.putc( b );
klauss 29:7246460b73f8 235 if( b == 0x08 || b == 0x7F ){ // BS | DEL
klauss 29:7246460b73f8 236 if( bufptr > 0 ) debug_buf[ --bufptr ] = 0;
klauss 29:7246460b73f8 237 //bufptr--;
klauss 29:7246460b73f8 238 //pc.printf(".");
klauss 29:7246460b73f8 239 }else{
klauss 29:7246460b73f8 240 debug_buf[bufptr] = b;
klauss 29:7246460b73f8 241 //pc.printf("(%x)", (uint8_t)b );
klauss 29:7246460b73f8 242 bufptr++;
klauss 29:7246460b73f8 243 }
klauss 19:ab2088e0dec6 244 }
klauss 19:ab2088e0dec6 245 }
klauss 19:ab2088e0dec6 246
klauss 28:94aec56c6329 247 // Prompt commands here
klauss 29:7246460b73f8 248 if ( bufret == 1 ) {
klauss 28:94aec56c6329 249 bool miss_match = true;
klauss 29:7246460b73f8 250 static unsigned int promptcb_last_ext = 0;
klauss 29:7246460b73f8 251 static unsigned int promptcb_last_port = 0;
klauss 28:94aec56c6329 252
klauss 28:94aec56c6329 253 if( !bufptr ){
klauss 28:94aec56c6329 254 miss_match = false;
klauss 28:94aec56c6329 255 }
klauss 27:98f824719d1c 256 if( xstrmatch( (uint8_t*)debug_buf, (uint8_t*) "sconfig" )) {
klauss 28:94aec56c6329 257 miss_match = false;
klauss 27:98f824719d1c 258 pc.printf("\n\r");
klauss 27:98f824719d1c 259 files('s');
klauss 27:98f824719d1c 260 }
klauss 27:98f824719d1c 261 if( xstrmatch( (uint8_t*)debug_buf, (uint8_t*) "format" )) {
klauss 28:94aec56c6329 262 miss_match = false;
klauss 27:98f824719d1c 263 pc.printf("\n Formatando o sistema de arquivos... espere o sistema reiniciar \n\r");
klauss 27:98f824719d1c 264 //qspifs.format();
klauss 27:98f824719d1c 265 NVIC_SystemReset();
klauss 27:98f824719d1c 266 }
klauss 27:98f824719d1c 267
klauss 28:94aec56c6329 268 if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "ipset ", 6 )) {
klauss 28:94aec56c6329 269 miss_match = false;
klauss 27:98f824719d1c 270 fip = fopen("/qspi/myip.txt", "w");
klauss 29:7246460b73f8 271 //fprintf(fip,"%s\n\r",(debug_buf+6));
klauss 29:7246460b73f8 272 fprintf(fip,"%s",(debug_buf+6));
klauss 27:98f824719d1c 273 fclose(fip);
klauss 27:98f824719d1c 274 pc.printf("\n\r");
klauss 27:98f824719d1c 275 files('s');
klauss 27:98f824719d1c 276 }
klauss 28:94aec56c6329 277
klauss 28:94aec56c6329 278 if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "extset ", 7 )) {
klauss 28:94aec56c6329 279 miss_match = false;
klauss 28:94aec56c6329 280 fip = fopen("/qspi/myext.txt", "w");
klauss 28:94aec56c6329 281 fprintf(fip, "%s\n\r" , ( debug_buf + 7) );
klauss 28:94aec56c6329 282 fclose(fip);
klauss 28:94aec56c6329 283 pc.printf("\n\r");
klauss 28:94aec56c6329 284 files('s');
klauss 28:94aec56c6329 285 }
klauss 28:94aec56c6329 286
klauss 28:94aec56c6329 287 if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "serextset ", 10 )) {
klauss 28:94aec56c6329 288 miss_match = false;
klauss 28:94aec56c6329 289 fip = fopen("/qspi/peerext.txt", "w");
klauss 28:94aec56c6329 290 fprintf(fip, "%s\n\r" , ( debug_buf + 10 ) );
klauss 28:94aec56c6329 291 fclose(fip);
klauss 28:94aec56c6329 292 pc.printf("\n\r");
klauss 28:94aec56c6329 293 files('s');
klauss 28:94aec56c6329 294 }
klauss 27:98f824719d1c 295
klauss 19:ab2088e0dec6 296 if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "maskset ",8 )) {
klauss 28:94aec56c6329 297 miss_match = false;
klauss 27:98f824719d1c 298 fmask = fopen("/qspi/mymask.txt", "w");
klauss 27:98f824719d1c 299 fprintf(fmask,"%s\n\r",(debug_buf+8));
klauss 27:98f824719d1c 300 fclose(fmask);
klauss 27:98f824719d1c 301 pc.printf("\n\r");
klauss 27:98f824719d1c 302 files('s');
klauss 27:98f824719d1c 303 }
klauss 27:98f824719d1c 304
klauss 19:ab2088e0dec6 305 if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "gatewayset ",11 )) {
klauss 28:94aec56c6329 306 miss_match = false;
klauss 27:98f824719d1c 307 fgate = fopen("/qspi/mygate.txt", "w");
klauss 27:98f824719d1c 308 fprintf(fgate,"%s\n\r",(debug_buf+11));
klauss 27:98f824719d1c 309 fclose(fgate);
klauss 27:98f824719d1c 310 pc.printf("\n\r");
klauss 27:98f824719d1c 311 files('s');
klauss 27:98f824719d1c 312 }
klauss 27:98f824719d1c 313
klauss 27:98f824719d1c 314
klauss 27:98f824719d1c 315 if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "msipport ",9 )) {
klauss 28:94aec56c6329 316 miss_match = false;
klauss 27:98f824719d1c 317 fport = fopen("/qspi/mysipport.txt", "w");
klauss 27:98f824719d1c 318 fprintf(fport,"%s\n\r",(debug_buf+9));
klauss 27:98f824719d1c 319 fclose(fport);
klauss 27:98f824719d1c 320 pc.printf("\n\r");
klauss 27:98f824719d1c 321 files('s');
klauss 27:98f824719d1c 322 }
klauss 27:98f824719d1c 323
klauss 27:98f824719d1c 324 if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "serverip ",9 )) {
klauss 28:94aec56c6329 325 miss_match = false;
klauss 27:98f824719d1c 326 fsip = fopen("/qspi/serverip.txt", "w");
klauss 29:7246460b73f8 327 //fprintf(fsip,"%s\n\r",(debug_buf+9));
klauss 29:7246460b73f8 328 fprintf(fsip,"%s",(debug_buf+9));
klauss 27:98f824719d1c 329 fclose(fsip);
klauss 27:98f824719d1c 330 pc.printf("\n\r");
klauss 27:98f824719d1c 331 files('s');
klauss 27:98f824719d1c 332 }
klauss 27:98f824719d1c 333
klauss 27:98f824719d1c 334 if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "ssport ",7 )) {
klauss 28:94aec56c6329 335 miss_match = false;
klauss 27:98f824719d1c 336 fsport = fopen("/qspi/serverport.txt", "w");
klauss 27:98f824719d1c 337 fprintf(fsport,"%s\n\r",(debug_buf+7));
klauss 27:98f824719d1c 338 fclose(fsport);
klauss 27:98f824719d1c 339 pc.printf("\n\r");
klauss 19:ab2088e0dec6 340 files('s');
klauss 27:98f824719d1c 341 }
klauss 27:98f824719d1c 342
klauss 27:98f824719d1c 343
klauss 27:98f824719d1c 344 if( xstrmatch( (uint8_t*)debug_buf, (uint8_t*) "dconfig" )) {
klauss 28:94aec56c6329 345 miss_match = false;
klauss 27:98f824719d1c 346 files('w');
klauss 27:98f824719d1c 347 files('s');
klauss 27:98f824719d1c 348 }
klauss 27:98f824719d1c 349
klauss 27:98f824719d1c 350 if( xstrmatch( (uint8_t*)debug_buf, (uint8_t*) "reset" )) {
klauss 28:94aec56c6329 351 miss_match = false;
klauss 28:94aec56c6329 352 //pc.printf("\n\r reset!!! \n\r");
klauss 28:94aec56c6329 353 pc.printf("\n\rJob is done\n\r");
klauss 27:98f824719d1c 354 pc.putc(0x01);
klauss 27:98f824719d1c 355 NVIC_SystemReset();
klauss 27:98f824719d1c 356 }
klauss 27:98f824719d1c 357
klauss 27:98f824719d1c 358 if( xstrmatch( (uint8_t*)debug_buf, (uint8_t*) "dog" )) {
klauss 28:94aec56c6329 359 miss_match = false;
klauss 27:98f824719d1c 360 pc.printf("\n\r MUUUUUUUuuuuUUUUUU - I'm not a dog!!!! \n\r");
klauss 27:98f824719d1c 361 dog = 0;
klauss 27:98f824719d1c 362 }
klauss 27:98f824719d1c 363
Cola 21:0bd688722e81 364 if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "flood ",6 )) {
klauss 27:98f824719d1c 365 if (xmemmatch( (uint8_t*)(debug_buf+6), (uint8_t*) "on",2 )) {
klauss 28:94aec56c6329 366 miss_match = false;
klauss 27:98f824719d1c 367 pc.printf("\n\r\t Flood ON\n\r\t");
klauss 27:98f824719d1c 368 tflood.start();
klauss 27:98f824719d1c 369 tflood.reset();
klauss 27:98f824719d1c 370 floodcount =0;
klauss 27:98f824719d1c 371 pflood = 1;
klauss 27:98f824719d1c 372 }
klauss 27:98f824719d1c 373 if (xmemmatch( (uint8_t*)(debug_buf+6), (uint8_t*) "off",3 )) {
klauss 28:94aec56c6329 374 miss_match = false;
klauss 27:98f824719d1c 375 pc.printf("\n\r\t Flood OFF\n\r\t");
klauss 27:98f824719d1c 376 pflood = 0;
klauss 27:98f824719d1c 377 tflood.stop();
klauss 27:98f824719d1c 378 }
klauss 27:98f824719d1c 379 }
klauss 27:98f824719d1c 380
Cola 21:0bd688722e81 381 if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "debug ",6 )) {
klauss 27:98f824719d1c 382 if (xmemmatch( (uint8_t*)(debug_buf+6), (uint8_t*) "on",2 )) {
klauss 28:94aec56c6329 383 miss_match = false;
Cola 21:0bd688722e81 384 pc.printf("\n\r\tDebug ON\n\r\t");
Cola 21:0bd688722e81 385 debug_alive = 1;
klauss 27:98f824719d1c 386 }
klauss 27:98f824719d1c 387 if (xmemmatch( (uint8_t*)(debug_buf+6), (uint8_t*) "off",3 )) {
klauss 28:94aec56c6329 388 miss_match = false;
klauss 27:98f824719d1c 389 pc.printf("\n\r\tDebug OFF\n\r\t");
Cola 21:0bd688722e81 390 debug_alive = 0;
klauss 27:98f824719d1c 391 }
klauss 19:ab2088e0dec6 392 }
klauss 28:94aec56c6329 393
klauss 28:94aec56c6329 394 if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "debug_sip ", 10 )) {
klauss 28:94aec56c6329 395 if (xmemmatch( (uint8_t*)(debug_buf + 10 ), (uint8_t*) "on",2 )) {
klauss 28:94aec56c6329 396 miss_match = false;
klauss 29:7246460b73f8 397 pc.printf( "\n\rSip Debug ON\n\r" );
klauss 28:94aec56c6329 398 debug_sip = 1;
klauss 28:94aec56c6329 399 }
klauss 28:94aec56c6329 400 if (xmemmatch( (uint8_t*)(debug_buf + 10 ), (uint8_t*) "off",3 )) {
klauss 28:94aec56c6329 401 miss_match = false;
klauss 29:7246460b73f8 402 pc.printf( "\n\rSip Debug OFF\n\r" );
klauss 28:94aec56c6329 403 debug_sip = 0;
klauss 28:94aec56c6329 404 }
klauss 28:94aec56c6329 405 }
klauss 29:7246460b73f8 406
klauss 27:98f824719d1c 407 if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "promptcb ", 9)) { //promptcb ramal porta comando
klauss 27:98f824719d1c 408 static int id_msg = 0x10;
Cola 21:0bd688722e81 409 uint8_t write_buffer[300];
Cola 21:0bd688722e81 410 unsigned int ext,port;
Cola 21:0bd688722e81 411 int ant1,ant2;
klauss 27:98f824719d1c 412
Cola 21:0bd688722e81 413 debug_buf[bufptr++] = 0x0D;
Cola 21:0bd688722e81 414 debug_buf[bufptr++] = 0x00;
klauss 27:98f824719d1c 415
Cola 21:0bd688722e81 416 ant1 = str2uint( (debug_buf+9), &ext);
Cola 21:0bd688722e81 417 ant2 = str2uint( ((debug_buf+9)+ant1+1), &port);
klauss 27:98f824719d1c 418
klauss 29:7246460b73f8 419 promptcb_last_ext = ext;
klauss 29:7246460b73f8 420 promptcb_last_port = port;
klauss 29:7246460b73f8 421 pc.printf("\r\next=%d port=%d\r\ncmd=%s\r\n",ext, port, debug_buf+9+ant1+2+ant2);
klauss 29:7246460b73f8 422 promptcb_last_ext = ext;
klauss 29:7246460b73f8 423 __send_to_cb__( __build_cb_package__( ext, port, __PROMPT__, debug_buf+9+ant1+2+ant2, id_msg++, __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
klauss 29:7246460b73f8 424 pc.printf("\n\rComando enviado\n\r");
klauss 29:7246460b73f8 425 }
klauss 29:7246460b73f8 426 if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "pcb ",4 )) {
klauss 29:7246460b73f8 427 static int id_msg = 0x30;
klauss 29:7246460b73f8 428 uint8_t write_buffer[300];
klauss 29:7246460b73f8 429 debug_buf[bufptr++] = 0x0D;
klauss 29:7246460b73f8 430 debug_buf[bufptr++] = 0x00;
klauss 27:98f824719d1c 431
klauss 29:7246460b73f8 432 pc.printf("\r\next=%d port=%d\r\ncmd=%s\r\n",promptcb_last_ext, promptcb_last_port, debug_buf+4);
klauss 29:7246460b73f8 433
klauss 29:7246460b73f8 434 __send_to_cb__( __build_cb_package__( promptcb_last_ext, promptcb_last_port, __PROMPT__, debug_buf+4, id_msg++, __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
klauss 29:7246460b73f8 435 pc.printf("\n\rComando enviado\n\r");
klauss 19:ab2088e0dec6 436 }
klauss 27:98f824719d1c 437
Cola 22:d2a4b5939115 438 if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "cks",3 )) {
klauss 28:94aec56c6329 439 miss_match = false;
klauss 27:98f824719d1c 440 pcks_s = 1;
Cola 22:d2a4b5939115 441 }
klauss 27:98f824719d1c 442
Cola 24:270b436a1bb0 443 if (xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "showcb",6 )) {
klauss 28:94aec56c6329 444 miss_match = false;
Cola 24:270b436a1bb0 445 pshowcb = 1;
Cola 24:270b436a1bb0 446 }
klauss 27:98f824719d1c 447
klauss 27:98f824719d1c 448 if (xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "debugsip ", 9 )) {
klauss 27:98f824719d1c 449 if (xmemmatch( (uint8_t*)( debug_buf + 9 ), (uint8_t*) "on",2 )) {
klauss 28:94aec56c6329 450 miss_match = false;
klauss 28:94aec56c6329 451 pc.printf("\tDebug Sip ON");
klauss 27:98f824719d1c 452 debug_sip = 1;
klauss 27:98f824719d1c 453 }
klauss 27:98f824719d1c 454 if (xmemmatch( (uint8_t*)( debug_buf + 9 ), (uint8_t*) "off",3 )) {
klauss 28:94aec56c6329 455 miss_match = false;
klauss 28:94aec56c6329 456 pc.printf("Debug Sip OFF");
klauss 27:98f824719d1c 457 debug_sip = 0;
klauss 27:98f824719d1c 458 }
klauss 27:98f824719d1c 459 }
klauss 27:98f824719d1c 460
klauss 19:ab2088e0dec6 461 if( xstrmatch( (uint8_t*)debug_buf, (uint8_t*) "help" )) {
klauss 28:94aec56c6329 462 miss_match = false;
klauss 27:98f824719d1c 463 pc.printf("\n\r****************************PROMPT HELP******************\n\r");
klauss 27:98f824719d1c 464 pc.printf("sconfig - mostra o arquivo de configuracao do sistema\n\r");
klauss 27:98f824719d1c 465 pc.printf("dconfig - volta as configuracoes do sistema para o padrao de fabrica\n\r");
klauss 27:98f824719d1c 466 pc.printf("callme [ramal porta] - envia o pedido de ligacao para o callbox com o ramal e porta indicada\n\r");
klauss 27:98f824719d1c 467 pc.printf("promptcb ramal porta comando - envia o <comando> para o cbx <ramal> e <porta> executar\n\r");
klauss 27:98f824719d1c 468 pc.printf("format - formata o sistema de arquivos\n\r");
klauss 27:98f824719d1c 469 pc.printf("reset - resta o sistema\n\r");
klauss 27:98f824719d1c 470 pc.printf("ipset [ip] - Configura o IP da cabeceira\n\r");
klauss 28:94aec56c6329 471 pc.printf("extset [ext] - Configura a ext da cabeceira\n\r");
klauss 28:94aec56c6329 472 pc.printf("msipport [port] - Configura a porta SIP da cabeceira\n\r");
klauss 28:94aec56c6329 473 pc.printf("serverip [ip] - Configura o ip do servidor asterisk\n\r");
klauss 28:94aec56c6329 474 pc.printf("serextset [ext] - Configura a server ext da cabeceira\n\r");
klauss 28:94aec56c6329 475 pc.printf("ssport [port] - Configura a porta SIP do servidor asterisk\n\r");
klauss 27:98f824719d1c 476 pc.printf("maskset [mask] - Configura a mascara da cabeceira\n\r");
klauss 27:98f824719d1c 477 pc.printf("gatewayset [gateway] - Configura o gateway da cabeceira\n\r");
klauss 27:98f824719d1c 478 pc.printf("showcb - lista os Cbx registrados na header\n\r");
klauss 27:98f824719d1c 479 pc.printf("cks - exibe estatisticas de check sum\n\r");
klauss 27:98f824719d1c 480 pc.printf("debug [on|off] - enable debugs\n\r");
klauss 27:98f824719d1c 481 pc.printf("flood [on|off] - simula envio de pacotes de audio\n\r");
klauss 28:94aec56c6329 482 pc.printf("PROMPT VERSION: V%d\n\r",PVERSION);
klauss 27:98f824719d1c 483 }
klauss 27:98f824719d1c 484 /*
klauss 19:ab2088e0dec6 485 if ( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "callme ", 7 )) {
klauss 19:ab2088e0dec6 486 if ( debug_buf[16] != 0 && debug_buf[11] != 0x20 )
klauss 19:ab2088e0dec6 487 pc.printf("\n\r Error: formato errado! ramal=xxxx porta=xxxx \n\r");
klauss 19:ab2088e0dec6 488 else {
klauss 19:ab2088e0dec6 489 uint8_t data[300];
klauss 19:ab2088e0dec6 490 uint16_t cks=0;
klauss 27:98f824719d1c 491
klauss 19:ab2088e0dec6 492 //data[0] = (uint8_t)( (debug_buf[7]&0xf0)<<4 + (debug_buf[8]&0x0f) ) ;
klauss 19:ab2088e0dec6 493 //data[1] = (uint8_t)( (debug_buf[9]&0xf0)<<4 + (debug_buf[10]&0x0f) ) ;
klauss 19:ab2088e0dec6 494 //data[2] = (uint8_t)( (debug_buf[12]&0xf0)<<4 + (debug_buf[13]&0x0f) ) ;
klauss 19:ab2088e0dec6 495 /data[3] = (uint8_t)( (debug_buf[14]&0xf0)<<4 + (debug_buf[15]&0x0f) ) ;
klauss 27:98f824719d1c 496
klauss 19:ab2088e0dec6 497 data[0] = (uint8_t)( debug_buf[ 7 ] & 0xFF00 >> 8 );
klauss 19:ab2088e0dec6 498 data[1] = (uint8_t)( debug_buf[ 9 ] & 0x00FF );
klauss 19:ab2088e0dec6 499 data[2] = (uint8_t)( debug_buf[ 12 ] & 0xFF00 >> 8 );
klauss 19:ab2088e0dec6 500 data[3] = (uint8_t)( debug_buf[ 14 ] & 0x00FF );
klauss 27:98f824719d1c 501
klauss 19:ab2088e0dec6 502 data[6] = 0x04;
klauss 19:ab2088e0dec6 503 for (int i = 7; i < 300; i++) data[i] = 0x00;
klauss 19:ab2088e0dec6 504 cks = __checksum__(data,300);
klauss 19:ab2088e0dec6 505 data[4] = cks>>8;
klauss 19:ab2088e0dec6 506 data[5] = cks&0xff;
klauss 27:98f824719d1c 507
klauss 19:ab2088e0dec6 508 pc.printf("\n\r");
klauss 19:ab2088e0dec6 509 for( int i = 0; i < 300; i++ )
klauss 19:ab2088e0dec6 510 pc.printf("%x ", data[ i ] );
klauss 19:ab2088e0dec6 511 pc.printf("\n\r");
klauss 27:98f824719d1c 512
klauss 19:ab2088e0dec6 513 xmemcpy(TXBuffer,data,300);
klauss 27:98f824719d1c 514
klauss 19:ab2088e0dec6 515 pc.printf("\n\r");
klauss 19:ab2088e0dec6 516 for( int i = 0; i < 300; i++ )
klauss 19:ab2088e0dec6 517 pc.printf("%x ", data[ i ] );
klauss 19:ab2088e0dec6 518 pc.printf("\n\r");
klauss 27:98f824719d1c 519
klauss 19:ab2088e0dec6 520 send2callboxes();
klauss 27:98f824719d1c 521
klauss 19:ab2088e0dec6 522 pc.printf("\n\r calling callbox %s \n\r",debug_buf+7);
klauss 19:ab2088e0dec6 523 }
klauss 19:ab2088e0dec6 524
klauss 19:ab2088e0dec6 525 }
klauss 27:98f824719d1c 526 */
klauss 29:7246460b73f8 527 if( miss_match ) pc.printf("\n\r%s: command not found\n\r", debug_buf );
klauss 19:ab2088e0dec6 528 }
klauss 28:94aec56c6329 529
klauss 28:94aec56c6329 530 if ( b == 0x0D || bufret == 1 || bufptr > DEBUGBUFSIZE ) {
klauss 27:98f824719d1c 531 bufptr = 0;
klauss 27:98f824719d1c 532 for (uint8_t i =0; i < DEBUGBUFSIZE; i++) {
klauss 27:98f824719d1c 533 debug_buf[i] = 0;
klauss 19:ab2088e0dec6 534 }
klauss 27:98f824719d1c 535 bufret = 0;
klauss 27:98f824719d1c 536 pc.putc(0x0A);
klauss 27:98f824719d1c 537 pc.putc(0x0D);
klauss 29:7246460b73f8 538 pc.printf("> ");
klauss 19:ab2088e0dec6 539 }
klauss 28:94aec56c6329 540 }