Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Committer:
klauss
Date:
Tue Sep 30 18:15:08 2014 +0000
Revision:
35:96885a7931f0
Parent:
33:735fd60e96d8
Child:
36:728498a78e1e
recebe instrucoes simples por porta udp, executa e devolve resultado na serial

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