Modularizando o src
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
Diff: call_box_manager.cpp
- Revision:
- 81:3656f00ab3db
- Parent:
- 80:61d61c9eb75c
- Child:
- 86:bf7b0d4c3232
--- a/call_box_manager.cpp Tue Dec 16 19:34:30 2014 +0000 +++ b/call_box_manager.cpp Tue Dec 30 12:37:40 2014 +0000 @@ -12,41 +12,44 @@ return( NULL ); } -int init_refresh( void ){ - timer_refresh.start(); - return( 0 ); -} - -int init_aging( void ){ - timer_aging.start(); - return( 0 ); -} - int refresh( Vector * v_cb, uint8_t * data, uint8_t * write_buffer, Call_Box * cb ){ if( v_cb != NULL && data != NULL && write_buffer != NULL ){ + static int lst_index = 0; + + //eu nao deveria precisar disso if( cb != NULL ){ timer_refresh.reset(); + cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ( ~BIT7 ) ); + send2callboxes( __build_cb_package__( cb->get_ext(), cb->get_port(), __REGISTRY__, ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) ); + if( debug_refresh ) send_msg("Refresh specific %d", cb->get_ext() ); + return( 0x10 ); - } - - static int lst_index = 0; - if( timer_refresh.read_ms() > 500 ){ + //}else if( timer_refresh.read() > 1 ){ + }else if( timer_refresh.read() > 1 ){ timer_refresh.reset(); if( v_cb->size() > 0 ){ - if( lst_index == v_cb->size() ) lst_index = 0; + if( lst_index >= v_cb->size() ) lst_index = 0; Call_Box * cb = (Call_Box * )v_cb->get_element( lst_index++ ); - if( cb != NULL ){ + if( cb != NULL && cb->status != cb_on_call ){ + if( cb->get_ext() % 2 == 1 ){ + Call_Box * cb_master = __find_CB__( v_cb, cb->get_ext() - 1 ); + + if( cb_master != NULL && cb_master->status == cb_on_call ) return( 0x20 ); + } + cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ( ~BIT7 ) ); - + send2callboxes( __build_cb_package__( cb->get_ext(), cb->get_port(), __REGISTRY__, ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) ); + if( debug_refresh ) send_msg("Refresh %d", cb->get_ext() ); + return( 0 ); }else return( -3 ); }else return( 1 ); @@ -65,9 +68,9 @@ v_cb->remove_element( i ); delete( cb ); break; - }else{ - refresh( v_cb, data, write_buffer, cb ); - } + }//else{ + //refresh( v_cb, data, write_buffer, cb ); + //} } } /*