Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

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