Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Revision:
87:679ee0d594a9
Parent:
86:bf7b0d4c3232
Child:
89:0fe315117b00
--- a/main.cpp	Mon Jan 05 12:43:12 2015 +0000
+++ b/main.cpp	Tue Jan 06 16:37:03 2015 +0000
@@ -13,8 +13,9 @@
 #include "shared_variables.h"
 #include "prompt.h"
 #include "configs.h"
+#include "sdram.h"
 
-volatile u16_t bleuba = 0;
+volatile u16_t lpc_low_level_input_counter = 0;
 
 int main(){
     init_wdt();
@@ -23,11 +24,21 @@
     
     start_cpld();
     
+    if( sdram_init() == 1 )
+    {
+        send_msg("******* Failed to initialize SDRAM *******");
+        return 1;
+    }
+        else
+    {
+        send_msg("******* Success to initialize SDRAM *******");
+    }
+    
     init_fsystem();
     
     short int eth_status = __init_eth__();
     if( eth_status ){
-        send_msg("Cannot connect to eth\n\r");
+        send_msg("******* Cannot connect to eth *******");
     }else{
         send_msg("******* Connection eth - ok *******");
         init_prompt_eth();
@@ -61,7 +72,7 @@
     /* gerencia o tipo do pacote para providenciar tratamento adequado */
     volatile uint8_t type = __DO_NOTHING__;
     
-    /* representa a lista dos Call Boxes atualmente reconhecidos pela cabeceira */
+    /* representa a lista dos Call Boxes atualmente recfonhecidos pela cabeceira */
     Vector * v_cb = new Vector();
     
     /* representa a lista de ligacoes ativas na cabeceira */
@@ -69,6 +80,7 @@
     
     /* gerencia a distribuicao de timeslice para os call boxes */
     Timeslice * ts = new Timeslice();
+    if( ts == NULL ) memory_is_over = true;
     
     /* instancia o vetor de call boxes // calls  */
     if( v_cb == NULL ){
@@ -89,6 +101,9 @@
         }
     }
     
+    if( v_cb == NULL ) memory_is_over = true;
+    if( v_call == NULL ) memory_is_over = true;
+    
     for( register uint16_t i = 0; i < __CB_BUFFER_SIZE__; i++ ){
         cb_rx_buffer[ i ] = 0;
         cb_tx_buffer[ i ] = 0;
@@ -136,9 +151,9 @@
         send_msg( "::Mac::%02x:%02x:%02x:%02x:%02x:%02x:: ", s[0],s[1],s[2],s[3],s[4],s[5] );
     }
             
-#define NUM_SOCK 50
-#define TEST_SERVER_IP "192.168.120.7"
-#define ETH_MSG_SIZE 1600   
+//#define NUM_SOCK 50
+//#define TEST_SERVER_IP "192.168.120.7"
+//#define ETH_MSG_SIZE 1600   
 
     //UDPSocket sock[ NUM_SOCK ];
     //Endpoint server[ NUM_SOCK ];
@@ -386,20 +401,7 @@
                                     ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
                             }else if( ( data[ 0 ] & BIT7 ) == BIT7 ){
                                 if( debug_main ) debug_msg("Received ack pkg with seq_num %d", data[ 0 ] );
-                                //algum motivo pra sempre receber alguma coisa com o type == 7 ???
-                                if( type == 0x07 ){
-                                    char str[ 1024 ];
-                                    strcpy( str, "RX :: \n\r " );
-                                    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 + 1 ) % 50 ) ) strcat( str, "\n\r " );
-                                        
-                                        else strcat( str, " " );
-                                    }
-                                    send_msg( "%s", str );
-                                    rx = false;    
-                                }                
+                
                                 switch( type ){
                                     case __INVITE__ : {
                                         if( debug_main || debug_invite ) debug_msg("Invite Ack from %d on msg_id %d", ext, cb->get_msg_id() );
@@ -428,36 +430,49 @@
             }else type = __DO_NOTHING__;
         }
         
-        if( main_test == true ){
+        if( main_test == true )
+        {
+            main_test = false;
             send_msg("CB_New (%u) -- CB_Delete (%u)", cb_new_counter, cb_delete_counter );
             send_msg("SIP_New (%u) -- SIP_Delete (%u)", sip_new_counter, sip_delete_counter );
-            send_msg("RTP_New (%u) -- RTP_Delete (%u)", rtp_new_counter, rtp_delete_counter );
-            main_test = false;
+            send_msg("RTP_header_New (%u) -- RTP_header_Delete (%u)", rtp_header_new_counter, rtp_header_delete_counter );
+            send_msg("RTP_body_New (%u) -- RTP_body_Delete (%u)", rtp_body_new_counter, rtp_body_delete_counter );
+            send_msg("lpc_low_level_input_counter :: %d", lpc_low_level_input_counter );
+            send_msg("Memory is %s", ( memory_is_over ) ? "Over" : "Ok" );
             send_msg("Missed_Pkg :: %d ::", missed_pkg );
-            send_msg("Received ETH Pkg ( bleuba ) %d", bleuba );
+            send_msg("Sizeof Sip :: %u", sizeof( Sip ) );
+            send_msg("Sizeof Call_Box :: %u", sizeof( Call_Box ) );
+            send_msg("Sizeof VZ_call :: %u", sizeof( VZ_call ) );
+            send_msg("Sizeof RTP :: %u", sizeof( RTP ) );
+            send_msg("Sizeof RTP_Header :: %u", sizeof( RTP_Header ) );
+            send_msg("Sizeof RTP_Body :: %u", sizeof( RTP_Body ) );
+            send_msg("Sizeof Vector :: %u", sizeof( Vector ) );
+            send_msg("Sizeof Timeslice :: %u", sizeof( Timeslice ) );
+            send_msg("Sizeof Watchdog :: %u", sizeof( Watchdog ) );
         }
-        
         if( regystry_test == true )
         {
             regystry_test = false;
             
             if( type == __DO_NOTHING__ )
             {
-                if( next_value < ( 5010 + 38 ) )
+                //if( next_value < ( 5010 + __MAX_CB_IN_A_BRANCH__ - 2 ) )
                 {   
                     type = __REGISTRY__;
                     data = buffer;
                     ext = next_value;
                     port = next_value++;
                 }
+                /*
                     else
                 {
-                    if( nex_test_registry > ( 5010 + 38 - 1 ) ) nex_test_registry = 5010;
+                    if( nex_test_registry > ( 5010 + __MAX_CB_IN_A_BRANCH__ - 1 - 2 ) ) nex_test_registry = 5010;
                     type = __REGISTRY__;
                     data = buffer;
                     ext = nex_test_registry;
                     port = nex_test_registry++;
                 }
+                */
             }
         }
         
@@ -558,11 +573,17 @@
                 if( cb == NULL ){
                     if( debug_main ) debug_msg( "Adding CBx :: %i", ext );
                     cb = new Call_Box( ext, port );
-                    v_cb->add( cb );
+                    
+                    if( cb == NULL ){
+                        memory_is_over = true;
+                    }else{
+                        v_cb->add( cb );
+                    }
                 }
-                //cb->registry();
-                cb->set_msg_id( data[ 0 ] );    
-                invite_handler( v_call, v_cb, ts, cb );
+                if( cb != NULL ){
+                    cb->set_msg_id( data[ 0 ] );    
+                    invite_handler( v_call, v_cb, ts, cb );
+                }
             }break;
             case __REGISTRY__ : {
                 registry_counter++;
@@ -572,12 +593,16 @@
                     if( debug_main ) debug_msg("Adding Cbx :: %d", ext );
                     cb = new Call_Box( ext, port );
                     
-                    v_cb->add( cb );
-                    if( debug_main ) debug_msg("Added CBx -- %d", ext );
+                    if( cb == NULL ){
+                        memory_is_over = true;
+                    }else{
+                        v_cb->add( cb );
+                        if( debug_main ) debug_msg("Added CBx -- %d", ext );
+                    }
                 }
                 if( debug_main ) debug_msg("Registered %d - %d", ext, port );
                     
-                cb->registry();
+                if( cb != NULL ) cb->registry();
                 
                 }break;
             case __BOOT__ : {
@@ -587,14 +612,28 @@
                 }break;
             case __TELEMETRY__ : {
                 Call_Box * cb = __find_CB__( v_cb, ext );
+                
                 if( cb == NULL ){
+                    send2callboxes( __build_cb_package__( ext, port, __REGISTRY__,
+                        ( char * )data, ( ( data[ 0 ] &  ~BIT7 ) + 1 ), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
+
+                    /*                    
                     if( debug_main ) debug_msg("Adding Cbx :: %d", ext );
                     cb = new Call_Box( ext, port );
-                    v_cb->add( cb );
-                    if( debug_main ) debug_msg("Added CBx -- %d", ext );
+                    
+                    if( cb == NULL ){
+                        memory_is_over = true;
+                    }else{
+                        v_cb->add( cb );
+                        if( debug_main ) debug_msg("Added CBx -- %d", ext );
+                    }
+                    */
                 }
-                cb->registry();
-                //FIXME mandar um pacote do tipo 2 pro cbx ?
+                /*
+                if( cb != NULL ){
+                    cb->registry();
+                }*/
+                
                 telemetry_counter++;
                 if( debug_telemetry ) send_msg("::Telemetry from %d - %d::", ext, port );
                     build_telemetry_report( ext, port, ( char *)data );
@@ -607,14 +646,23 @@
                 
             case __PROMPT__ : {
                 Call_Box * cb = __find_CB__( v_cb, ext );
+                
                 if( cb == NULL ){
+                    send2callboxes( __build_cb_package__( ext, port, __REGISTRY__,
+                        ( char * )data, ( ( data[ 0 ] &  ~BIT7 ) + 1 ), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
+                    /*
                     if( debug_main ) debug_msg("Adding Cbx :: %d", ext );
                     cb = new Call_Box( ext, port );
-                    v_cb->add( cb );
-                    if( debug_main ) debug_msg("Added CBx -- %d", ext );
+                    if( cb == NULL ){
+                        memory_is_over = true;
+                    }else{
+                        v_cb->add( cb );
+                        if( debug_main ) debug_msg("Added CBx -- %d", ext );
+                    }
+                    */
                 }
                 
-                cb->registry();
+                //if( cb!= NULL ) cb->registry();
                 
                 if( xstrmatch( ( uint8_t * )data, ( uint8_t * )"ping" ) ){
                     if( debug_ping ) send_msg( "Prompt pkg from ( %i, %i ) :: Ping", ext, port );
@@ -766,7 +814,7 @@
                     
                     if( wdt_show ) send_msg( "Sent %d bytes in response", sent );
                     
-                    if( (!question_alive) && ( cb_new_counter <= 46 ) && ( cb_new_counter >= 2 ) ) { 
+                    if( (!question_alive) && ( cb_new_counter <= __MAX_CB_IN_A_BRANCH__ ) && ( cb_new_counter >= 2 ) ) { 
                         external_wdt = EXTERN_WDT_IDLE;
                     }
                 }else if( !( strncmp( wake_msg, "reset", 5 ) ) ){
@@ -795,8 +843,8 @@
         }
         
         if( debug_wdt ){
-            send_msg("Received ETH Pkg ( bleuba ) %d", bleuba );
-            bleuba = 0;
+            send_msg("lpc_low_level_input_counter :: %d", lpc_low_level_input_counter );
+            lpc_low_level_input_counter = 0;
             
             debug_wdt = false;
             if( eth_status == 0 ){