VZTECH / Mbed 2 deprecated main_src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Files at this revision

API Documentation at this revision

Comitter:
klauss
Date:
Wed Sep 10 14:32:19 2014 +0000
Parent:
1:a1758104fa1d
Child:
3:cd9148672e25
Commit message:
versao estavel, testando registro de master/slave

Changed in this revision

debug.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
rtp.cpp Show annotated file Show diff for this revision Revisions of this file
utils.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/debug.h	Wed Sep 10 12:50:57 2014 +0000
+++ b/debug.h	Wed Sep 10 14:32:19 2014 +0000
@@ -8,8 +8,8 @@
 
 #include "configs.h"
 
-extern UDPSocket debug;
-extern Endpoint debug_server;
+//extern UDPSocket debug;
+//extern Endpoint debug_server;
 extern char debug_msg1[ 1024+64 ];
 extern char debug_msg2[ 1024 ];
  
@@ -20,10 +20,11 @@
   sprintf(debug_msg1, "%s:%d ", __FILE__, __LINE__); \
   sprintf(debug_msg2, __VA_ARGS__); \
   strcat(debug_msg1, debug_msg2); \
-  debug.sendTo( debug_server, debug_msg1, strlen( debug_msg1 ) ); \
+  pc.printf( "%s\n\r", debug_msg1 ); \
 }
 #endif
 
 
 //debug.sendTo( debug_server, debug_msg1, strlen( debug_msg1 ) ); \
-//pc.printf( "%s\n\r", debug_msg1 ); \
\ No newline at end of file
+//pc.printf( "%s\n\r", debug_msg1 ); \
+debug.sendTo( debug_server, debug_msg1, strlen( debug_msg1 ) ); \
\ No newline at end of file
--- a/main.cpp	Wed Sep 10 12:50:57 2014 +0000
+++ b/main.cpp	Wed Sep 10 14:32:19 2014 +0000
@@ -7,9 +7,6 @@
 #include "debug.h"
 #include "utils.h"
 
-// for aditional debugs
-#define on_work
-
 /*
 #define set_status(a,b) _set_status(a,b)
 #define _set_status(a,b) { \
@@ -36,12 +33,11 @@
     __init_eth__( &eth );
         
     /* debugs */
-    debug_server.set_address( "192.168.120.144", 9897 );
-    debug.bind( 72133 );
-    debug.init();
+//    debug_server.set_address( "192.168.120.144", 9897 );
+//    debug.bind( 72133 );
+//    debug.init();
     
     Timer t;
-    Timer reboot;
     t.start();
           
     /* representa ramal do call box */
@@ -99,36 +95,8 @@
         }
     }
     reset_leds();
-    reboot.start();
     debug_msg( " Ready " );
-    /*
-    char test_buffer[400];
-    UDPSocket test_sock;
-    Endpoint test_server;
-    test_server.set_address( "192.168.120.144" , 12345 );
-    test_sock.set_blocking( false, 1 ); 
-    test_sock.bind( 78965 );
-    test_sock.init();
-    int n = 0;
-    strcpy( test_buffer, "a");
-    test_sock.sendTo( test_server, test_buffer, sizeof( test_buffer ) );
-    Timer reconnect;
-    reconnect.start();
-    */
     while( true ){    
-        /*
-        n  = test_sock.receiveFrom( test_server, test_buffer, sizeof( test_buffer ) );
-        if( n > 0 ){
-            test_sock.sendTo( test_server, test_buffer, n );
-            reconnect.reset();
-        }else if( reconnect.read() > 1 ){
-            test_sock.close();
-            test_sock.bind( 78965 );
-            test_sock.init();
-            reconnect.reset();
-            test_sock.sendTo( test_server, test_buffer, n );
-            led4 = !led4;
-        }*/
         if( status != __WAITING__ ){
             __read_cb_buffer__( buffer, buffer_from_cb_ptr );     
             status = __WAITING__;
@@ -164,7 +132,8 @@
             if( data == NULL ) type = __DO_NOTHING__;
             */
         }
-//----------------------            
+//----------------------
+/*
             if( t.read() > 5 ){            
                 for( register uint8_t i = 0; i < v_cb->size(); i++ ){
                     Call_Box * cb = ( Call_Box * )v_cb->get_element( i );
@@ -173,22 +142,7 @@
                 t.reset();
                 led3 = !led3;
             }
-            if( reboot.read() > 180 ){
-                for( register uint8_t i = 0; i < v_cb->size(); i++ ){
-                    Call_Box * cb = ( Call_Box * )v_cb->get_element( i );
-                    cb->set_timeslice( 0x00 );
-                    set_status(cb->status,cb_idle);
-                    set_status( cb->sip->status, sip_idle );
-                    debug_msg( "Erased >> Type ::  %d -- Ext :: %d -- TimeSlice :: %d -- remain_timeslices :: %d :: v_call->size() :: %d  :: Status :: %d", type , cb->get_ext(), cb->get_timeslice(), ts->remain_timeslices(), v_call->size(), cb->status );
-                }
-                for( register uint8_t i = 0; i < v_call->size(); i++ ){
-                    VZ_call * call = ( VZ_call * )v_call->get_element( i );
-                    v_call->remove_element( i );
-                    delete( call );   
-                }
-                reboot.reset();
-                led4 = !led4;
-            }
+*/
 //----------------------
         switch( type ){
             case __DO_NOTHING__ :{}
@@ -220,73 +174,6 @@
             
             case __INVITE__ : {
                 debug_msg("ok -- recebido o invite pelo menos");
-                #ifndef on_work
-                // invite de uma ligacao em andamento ?
-                Call_Box * cb = __find_CB__( v_cb, ext );
-                if( cb != NULL ){
-                    cb->reset_elapsed_time();
-                    if( cb->status == cb_on_call ){
-                        VZ_call * vz = __find_Call__( v_call, cb->get_ext() );
-                        if( vz != NULL ) break;
-                        ts->return_timeslice( cb->get_timeslice() );
-                        cb->set_timeslice( 0x00 );
-                        set_status(cb->status,cb_idle);
-                    }
-                }else{
-                    cb = new Call_Box( ext, port );
-                    v_cb->add( cb );
-                }
-                if( cb->status != cb_on_call ) set_status(cb->status,cb_ringing);
-                if( data[ __TIMESLICE_PLACE__ ] == __CB_BYE__ ){ 
-                    if( cb->status == cb_on_call ){    
-                        for( register uint8_t i = 0; i < v_call->size(); i++ ){
-                            if( ( (VZ_call *)v_call->get_element( i ) )->get_cb_ext() == ext ){
-                                v_call->remove_element( i );
-                                ts->return_timeslice( cb->get_timeslice() );
-                                cb->set_timeslice( 0x00 );
-                                set_status(cb->status,cb_idle);
-                                cb->send_bye();
-                                break;
-                            }
-                        }
-                    }
-                }
-                if( cb->status == cb_ringing ){
-                    data[ 0 ] |= BIT7;
-                    cb->set_msg_id( data[ 0 ] );
-                    cb->set_timeslice( ts->get_timeslice() );
-                    if( cb->get_timeslice() == 0x00 ){
-                        set_status(cb->status,cb_idle);
-                        data[ __CLOCK_SYNC_SIZE__ ] = 0x00;
-                        __send_to_cb__( __build_cb_package__( ext, port, __INVITE__, 
-                            ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
-                        break;
-                    }
-                    if( cb->status == cb_ringing ){
-                        data[ __CLOCK_SYNC_SIZE__ ] = cb->get_timeslice();
-                        __send_to_cb__( __build_cb_package__( ext, port, __INVITE__, 
-                            ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
-                        
-                        VZ_call * call = cb->invite();
-                        
-                        if( call != NULL ){
-                            v_call->add( call );
-                            set_status(cb->status,cb_on_call);
-                            data[ __CLOCK_SYNC_SIZE__ ] = cb->get_timeslice();
-                            __send_to_cb__( __build_cb_package__( ext, port, __INVITE__, 
-                                ( char * )data, cb->get_msg_id()+1, __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
-                        }else{
-                            set_status(cb->status,cb_idle);
-                            ts->return_timeslice( cb->get_timeslice() );
-                            data[ __CLOCK_SYNC_SIZE__ ] = 0x00;
-                            __send_to_cb__( __build_cb_package__( ext, port, __INVITE__, 
-                                ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
-                        }
-                    }
-                }
-            }break;      
-            #endif
-            #ifdef on_work
                 Call_Box * cb = __find_CB__( v_cb, ext );
                 if( cb == NULL ){
                     cb = new Call_Box( ext, port );
@@ -360,19 +247,26 @@
                     }break;
                 }                            
             }break;
-            #endif
             case __REGISTRY__ :
               {
-                Call_Box * cb;
+                Call_Box * cb_master;
+                Call_Box * cb_slave;
+                
                 data[ 0 ] |= BIT7;
-                cb = __find_CB__( v_cb, ext );
-                if( cb != NULL ){
-                    cb->reset_elapsed_time();
+                cb_master = __find_CB__( v_cb, ext );
+                cb_slave = __find_CB__( v_cb, ext+1 );
+                if( cb_master != NULL ){
+                    cb_master->reset_elapsed_time();
+                }else if( cb_slave != NULL ){
+                    cb_slave->reset_elapsed_time();
                 }else{
-                    cb = new Call_Box( ext, port );
-                    v_cb->add( cb );
+                    cb_master = new Call_Box( ext, port );
+                    cb_slave = new Call_Box( ext + 1, port + 1 );
+                    v_cb->add( cb_master );
+                    v_cb->add( cb_slave );
                 }
-                cb->registry();
+                cb_master->registry();
+                cb_slave->registry();
               }break;
             case __BOOT__ :
                     __send_to_cb__( __build_cb_package__( ext, port, __REGISTRY__, 
@@ -425,7 +319,10 @@
                 cb->set_msg_id( ( ( cb->get_msg_id() ) + 1 ) & ( BIT7 ^ 0xff ) );
                 for( register uint8_t i = 0; i < v_call->size(); i++ ){
                     VZ_call * call = ( VZ_call * )v_call->get_element( i );
-                    v_call->remove_element( i );
+                    if( call->get_cb_ext() == ret ){
+                        v_call->remove_element( i );
+                        delete( call );
+                    }
                 }
                 __send_to_cb__( __build_cb_package__( ext, port, __CB_BYE__, 
                     ( char * )buffer, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
--- a/rtp.cpp	Wed Sep 10 12:50:57 2014 +0000
+++ b/rtp.cpp	Wed Sep 10 14:32:19 2014 +0000
@@ -70,6 +70,7 @@
 RTP::~RTP(){
     if( rtp_header ) delete( rtp_header );
     if( rtp_body ) delete( rtp_body );
+    debug_msg("Fui destruido");
 }
 
 char * RTP::build_eth_package( char * buffer ){
--- a/utils.cpp	Wed Sep 10 12:50:57 2014 +0000
+++ b/utils.cpp	Wed Sep 10 14:32:19 2014 +0000
@@ -73,7 +73,8 @@
         if( cb->is_timeout() ){
             cb->reset_elapsed_time();
             cb->registry();
-            /*if( cb->reconfigure_timeout() == 0x00 ){
+            /*
+            if( cb->reconfigure_timeout() == 0x00 ){
                 v_cb->remove_element( i );
                 cb->unregistry();
                 delete( cb );
@@ -81,7 +82,8 @@
                 __send_to_cb__( __build_cb_package__( cb->get_ext(), cb->get_port(), __REGISTRY__, 
                     ( char * )data, __REGISTRY__, __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
                 cb->registry();
-            }*/
+            }
+            */
         }
     }
 }