Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Revision:
21:0bd688722e81
Parent:
20:2d6ab23956e5
Child:
22:d2a4b5939115
--- a/prompt.cpp	Sat Sep 20 13:34:52 2014 +0000
+++ b/prompt.cpp	Sat Sep 20 20:28:24 2014 +0000
@@ -3,13 +3,14 @@
 #include "configs.h"
 #include "vz_protocol.h"
 #include "parallelcpld.h"
+#include "flood.h"
 //#include "debug.h"
 
-uint8_t debug_alive = 1;
+uint8_t debug_alive = 0;
 
 #define PVERSION 1          // Sempre atualizar a versao do prompt
 
-#define DEBUGBUFSIZE 40
+#define DEBUGBUFSIZE 50
 char debug_buf[DEBUGBUFSIZE];
 FILE *fip,*fmask,*fgate,*fport,*fsip,*fsport; 
 uint8_t dog = 1;
@@ -38,6 +39,19 @@
   while (size--) *dest++ = *src++;
 }
 
+int str2uint (char * s, unsigned int * val) {
+  int i = 0;
+  unsigned int ret = 0;
+  for (;;) {
+    if (s[i] < '0') {
+      *val = ret;
+      return i;
+    }
+    ret *= 10;
+    ret += s[i] - '0';
+    i++;
+  }
+}
 
 void cat(const char* fname)                                                     // Print the content of a given file
 {
@@ -166,7 +180,6 @@
 void prompt_process(){              // main prompt process
     volatile char b = 0;
     static uint8_t bufret = 0;
-    static bool test = false;
     
     if (pc.readable()){
             
@@ -264,37 +277,48 @@
           dog = 0;
           }
         
-        if( xstrmatch( (uint8_t*)debug_buf, (uint8_t*) "debug off" )) {
-          pc.printf("Disable debug");
-          debug_alive = 0;
-        }
+        if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "flood ",6 )) {
+             if (xmemmatch( (uint8_t*)(debug_buf+6), (uint8_t*) "on",2 )){
+             pc.printf("\n\r\t Flood ON\n\r\t");
+             tflood.start();
+             tflood.reset();
+             floodcount =0;
+             pflood = 1;
+             }
+             if (xmemmatch( (uint8_t*)(debug_buf+6), (uint8_t*) "off",3 )){
+             pc.printf("\n\r\t Flood OFF\n\r\t");
+             pflood = 0;
+             tflood.stop();
+             }
+          }  
         
-        if( xstrmatch( (uint8_t*)debug_buf, (uint8_t*) "debug on" )) {
-          pc.printf("Disable debug");
-          debug_alive = 1;
-        }
-        
-        if( xstrmatch( (uint8_t*)debug_buf, (uint8_t*) "test on" )) {
-            test = true;
+        if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "debug ",6 )) {
+              if (xmemmatch( (uint8_t*)(debug_buf+6), (uint8_t*) "on",2 )){
+                pc.printf("\n\r\tDebug ON\n\r\t");
+                debug_alive = 1;
+              }
+              if (xmemmatch( (uint8_t*)(debug_buf+6), (uint8_t*) "off",3 )){
+                pc.printf("\n\r\tDebug OFF\n\r\t");  
+                debug_alive = 0;
+                }
         }
         
-        if( xstrmatch( (uint8_t*)debug_buf, (uint8_t*) "test off" )) {
-            test = false;
-        }
-        
-        if( test ){
-            static int id_msg = 0x10;
-            static int value = 0x00;
-            char data[ 300 ];
-            uint8_t write_buffer[ 300 ];
-            for( register int i = 0; i < 300; i++ ) data[ i ] = value;
+        if( xmemmatch( (uint8_t*)debug_buf, (uint8_t*) "promptcb ", 9)) {         //promptcb ramal porta comando 
+            static int id_msg = 0x10;                                           
+            uint8_t write_buffer[300];
+            unsigned int ext,port;
+            int ant1,ant2;
             
-            if( ++value == 255 ){
-                value = 0x00;
-                pc.printf("\n\rPkgs enviados\n\r");
-            }
-            __send_to_cb__( __build_cb_package__( 5002, 5002, __TEST__, data, id_msg++, __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
-            __send_to_cb__( __build_cb_package__( 5003, 5003, __TEST__, data, id_msg++, __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
+            debug_buf[bufptr++] = 0x0D;
+            debug_buf[bufptr++] = 0x00;
+            
+            ant1 = str2uint( (debug_buf+9), &ext);
+            ant2 = str2uint( ((debug_buf+9)+ant1+1), &port);
+            
+            pc.printf("\r\next=%d port=%d\r\ncmd=%s\r\n",ext, port, debug_buf+9+ant1+2+ant2);
+                
+            __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 ) );
+            pc.printf("\n\rComando enviado\n\r");
         }