Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Revision:
62:07e5bdc9f8f7
Parent:
58:af7e8788f106
Child:
63:0d95da692bb4
diff -r 06e77dff6f00 -r 07e5bdc9f8f7 main.cpp
--- a/main.cpp	Fri Oct 24 16:38:47 2014 +0000
+++ b/main.cpp	Tue Oct 28 11:32:06 2014 +0000
@@ -46,6 +46,9 @@
     /* ponteiro que aponta para os dados vindo do CPLD */
     uint8_t * buffer_from_cb_ptr = ( uint8_t * )RXBuffer;
     
+    /* Armazena o ultimo pacote recebido dos CBx */
+    uint8_t cb_rx_buffer[ __CB_BUFFER_SIZE__ ];
+    
     /* referencia para os dados contidos no pacote, sem o header */
     uint8_t * data = NULL;
     
@@ -87,13 +90,60 @@
     udp_timer.start();
     send_msg("Ready");
     uint8_t before = t.read();
+    static uint8_t count = 0;
     while( true ){
         //FIXME colocar uma condicao aqui
         prompt_process( NULL );
         wdt.kick();
+        
+        if( rx ){
+            char str[ 1024 ];
+            strcpy( str, "RX ::  " );
+            for( register uint16_t i = 0; i < __CB_BUFFER_SIZE__; i++ ){
+                char tmp[ 16 ];
+                strcat( str, itoa( cb_rx_buffer[ i ], tmp, 16 ) );
+                if( ( i != 0 ) && !( i % 15 ) ) strcat( str, "\n\r " );
+                
+                else strcat( str, " " );
+            }
+            send_msg( "%s", str );
+            rx = false;    
+        }
+        
+        if( list ){
+            send_msg("Registred %d CBx", v_cb->size() );
+            if( v_cb->size() == 0 ){
+                send_msg("{-/-}");
+            }else if( v_cb->size() == 1 ){
+                Call_Box * cb = ( Call_Box * )v_cb->get_element( 0 );
+                send_msg(" %d ", cb->get_ext() );    
+            }else{
+                char str[ 1024 ];
+                int ext_list[ 128 ];
+                Call_Box * cb = NULL;
+                register int i = 0;
+                for( ; i < v_cb->size(); i++ ){
+                    cb = ( Call_Box * )v_cb->get_element( i );
+                    ext_list[ i ] = cb->get_ext();
+                }
+                
+                qsort( ext_list, v_cb->size(), sizeof( int ), ls_comp );
+        
+                char aux[ 16 ];
+                strcpy( str, "\r\n " );
+                for( i = 0; i < v_cb->size() - 1; i++ ){
+                    sprintf( aux, "%i, ", ext_list[ i ] );
+                    strcat( str, aux );
+                    if( ( i != 0 ) && !( ( i + 1 ) % 8 ) ) strcat( str, "\r\n " );
+                }
+                sprintf( aux, "%i ", ext_list[ i ] );
+                strcat( str, aux );
+                send_msg( "%s", str );
+            }
+            list = false;    
+        }
+        
         if (pcks_s == 1){
-            //pc.printf("\n\r PKG_CSK OK: %d", pkg_cksok);
-            //pc.printf("\n\r PKG_CSK ERR: %d\n\r", pkg_ckserr); 
             send_msg("PKG_CSK OK: %d :: PKG_CSK ERR: %d", pkg_cksok, pkg_ckserr );
             pcks_s =0;
         }
@@ -122,22 +172,20 @@
                 send_msg("{-/-}");
             }else if( v_cb->size() == 1 ){
                 Call_Box * cb = ( Call_Box * )v_cb->get_element( 0 );
-                send_msg("{ %d }", cb->get_ext() );    
+                send_msg(" %i ", cb->get_ext() );    
             }else{
                 register uint8_t i;
                 char aux[ 16 ];
                 Call_Box * cb = NULL;
-                strcpy( str, "{ " );
                 for( i = 0; i < v_cb->size() - 1; i++ ){
                     cb = ( Call_Box * )v_cb->get_element( i );
-                    sprintf( aux, "%5d, ", cb->get_ext() );
+                    sprintf( aux, "%i, ", cb->get_ext() );
                     strcat( str, aux );
-                    if( ( i != 0 ) && !( i % 10 ) ) strcat( str, "\n\r  " );
+                    if( ( i != 0 ) && !( ( i + 1 ) % 8 ) ) strcat( str, "\n\r " );
                 }
                 cb = ( Call_Box * )v_cb->get_element( i );
-                sprintf( aux, "%5d ", cb->get_ext() );
+                sprintf( aux, "%i ", cb->get_ext() );
                 strcat( str, aux );
-                strcat( str, " }" );
                 send_msg( "%s", str );
             }
         }
@@ -145,6 +193,7 @@
         if( pflood == 1 ) flood();               
         
         if( status != __WAITING__ ){
+            xmemcpy( cb_rx_buffer, buffer_from_cb_ptr, __CB_BUFFER_SIZE__ );
             __read_cb_buffer__( buffer, buffer_from_cb_ptr );     
             status = __WAITING__;
         
@@ -182,9 +231,8 @@
             }
 
             if( t.read() > 5 ){
-                static uint8_t count = 0;
-                static int test_ext = 65531;
-                static int test_port = 65531;
+                static int test_ext = 5010;
+                static int test_port = 5010;
                 //send_msg("from_eth = %s - tcp_session = %s", ( from_eth ) ? "true" : "false", ( tcp_session ) ? "true" : "false" );
                 if( debug_alive ){
                     send_msg("Registred %d CBx", v_cb->size() );
@@ -220,12 +268,12 @@
                         }
                     }
                 }
-                //if( count == 4 ){
-                    //debug_msg("Colocar simulacoes de cbx aqui");
-                    //main_test = true;
-                //}
                 
                 if( main_test ){
+                    data = buffer;
+                    ext = test_ext++ + ( ( test_ext % 2  ) ? 100 : 50 );
+                    port = test_port++;
+                    type = __REGISTRY__;
                 }
                 
                 /*
@@ -403,17 +451,18 @@
                     tcp_client.send_all( tmp, strlen( tmp ) );
                 }
                 */
-                for( register int i = 0; i < __CB_BUFFER_SIZE__; i++ ){
+                for( register int i = 0; i < 32; i++ ){
                     pc.printf("%3i ", data[ i ] );
+                    if( i == 15 ) pc.printf( "\r\n" );
                 }
-                //FIXMEj isso nao vai funcionar em udp, mudar pra send_msg
-                pc.printf("\n\r");
+                pc.printf("\n\r> ");
                 
                 if( tcp_session ){
                     char aux[ __CB_BUFFER_SIZE__ + 3 ];
                     strncpy( aux, (char * )data, __CB_BUFFER_SIZE__ );
                     strcat( aux, "\n\r\0" );
                     tcp_client.send_all( ( char *)data, strlen( (char * )data ) );
+                    tcp_client.send_all( "\r\n> ", strlen( "\r\n> " ) );
                 }
                 }break;
             case __AUDIO__ : {