Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
Revision 2:93bec7313ccc, committed 2014-09-10
- 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
--- 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__( ð );
/* 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();
- }*/
+ }
+ */
}
}
}
