Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Committer:
klauss
Date:
Mon May 25 13:11:00 2015 +0000
Revision:
128:3ae1c74773a8
Parent:
127:e7160a463b6c
Child:
129:d73538fbc017
Merge com as funcionalidade de monitoramento de bateria

Who changed what in which revision?

UserRevisionLine numberNew contents of line
klauss 121:ee02790d00b7 1 #include "main_app_functions.h"
klauss 121:ee02790d00b7 2
klauss 121:ee02790d00b7 3 inline void reset_leds() { led1 = led2 = 1; led3 = led4 = 0; }
klauss 121:ee02790d00b7 4
klauss 121:ee02790d00b7 5 int header_app_init ( void )
klauss 121:ee02790d00b7 6 {
klauss 121:ee02790d00b7 7
klauss 121:ee02790d00b7 8 send_msg ( "" );
klauss 121:ee02790d00b7 9
klauss 122:480c44b0e205 10 if ( debug_app_init ) send_msg ( "init_wdt() :: %s", ( init_wdt () == 0 ) ? "Ok" : "Failure" );
klauss 121:ee02790d00b7 11
klauss 122:480c44b0e205 12 if ( debug_app_init ) send_msg ( "config_lpc() :: %s", ( config_lpc () == 0 ) ? "Ok" : "Failure" );
klauss 121:ee02790d00b7 13
klauss 122:480c44b0e205 14 if ( debug_app_init ) send_msg ( "start_cpld() :: %s", ( start_cpld () == 0 ) ? "Ok" : "Failure" );
klauss 121:ee02790d00b7 15
klauss 121:ee02790d00b7 16 if( sdram_init() == 1 ) {
klauss 121:ee02790d00b7 17 send_msg("******* Failed to initialize SDRAM *******");
klauss 121:ee02790d00b7 18 return 1;
klauss 121:ee02790d00b7 19 } else {
klauss 121:ee02790d00b7 20 send_msg("******* Success to initialize SDRAM *******");
klauss 121:ee02790d00b7 21 }
klauss 121:ee02790d00b7 22
klauss 121:ee02790d00b7 23 int init_fsystem_ret = init_fsystem();
klauss 121:ee02790d00b7 24 if( init_fsystem_ret & BIT0 )
klauss 121:ee02790d00b7 25 {
klauss 121:ee02790d00b7 26 send_msg("******* File system configured!!*******");
klauss 121:ee02790d00b7 27 }
klauss 121:ee02790d00b7 28
klauss 121:ee02790d00b7 29 if( init_fsystem_ret & BIT1 )
klauss 121:ee02790d00b7 30 {
klauss 121:ee02790d00b7 31 send_msg("******* File System Ready *******");
klauss 121:ee02790d00b7 32 }
klauss 121:ee02790d00b7 33
klauss 121:ee02790d00b7 34 {
klauss 121:ee02790d00b7 35 char s[ 32 ];
klauss 121:ee02790d00b7 36 mbed_mac_address( s );
klauss 121:ee02790d00b7 37 send_msg( "::Mac::%02x:%02x:%02x:%02x:%02x:%02x:: ", s[0],s[1],s[2],s[3],s[4],s[5] );
klauss 121:ee02790d00b7 38 }
klauss 121:ee02790d00b7 39
klauss 126:1f90756250fb 40 eth_status = __init_eth__ ();
klauss 126:1f90756250fb 41 if ( eth_status )
klauss 126:1f90756250fb 42 {
klauss 121:ee02790d00b7 43 send_msg("******* Cannot connect to eth *******");
klauss 121:ee02790d00b7 44 } else {
klauss 121:ee02790d00b7 45 send_msg("******* Connection eth - ok *******");
klauss 121:ee02790d00b7 46 int init_prompt_eth_ret = init_prompt_eth();
klauss 121:ee02790d00b7 47
klauss 121:ee02790d00b7 48 if ( init_prompt_eth_ret == BIT0 ) send_msg("******* Prompt eth UDP Ready *******");
klauss 121:ee02790d00b7 49
klauss 121:ee02790d00b7 50 if ( init_prompt_eth_ret == BIT1 ) send_msg("******* Prompt eth TCP Ready *******");
klauss 121:ee02790d00b7 51
klauss 126:1f90756250fb 52 if ( debug_app_init ) send_msg ( "init_prompt_eth() :: %s", ( init_prompt_eth_ret == ( BIT0 bitor BIT1 ) ) ? "Ok" : "Failure" );
klauss 121:ee02790d00b7 53
klauss 122:480c44b0e205 54 if ( debug_app_init ) send_msg ( "init_external_wdt() :: %s", ( init_external_wdt () == 0 ) ? "Ok" : "Failure" );
klauss 121:ee02790d00b7 55
klauss 121:ee02790d00b7 56 if ( debug_app_init ) send_msg ( "init_bl() :: %s", ( init_bl() == 0 ) ? "Ok" : "Failure" );
klauss 121:ee02790d00b7 57
klauss 121:ee02790d00b7 58 if ( debug_app_init ) send_msg ( "init_clock () :: %s", ( init_clock () == 0 ) ? "Ok" : "Failure" );
klauss 128:3ae1c74773a8 59
klauss 128:3ae1c74773a8 60 if ( debug_app_init ) send_msg ( "init_pwr_src () :: %s", ( init_pwr_src () == 0 ) ? "Ok" : "Failure" );
klauss 121:ee02790d00b7 61 }
klauss 121:ee02790d00b7 62
klauss 121:ee02790d00b7 63 sync_timer.start();
klauss 121:ee02790d00b7 64
klauss 121:ee02790d00b7 65 led_sync_timer.start();
klauss 121:ee02790d00b7 66
klauss 121:ee02790d00b7 67 ext = 0;
klauss 121:ee02790d00b7 68
klauss 121:ee02790d00b7 69 port = 0;
klauss 121:ee02790d00b7 70
klauss 121:ee02790d00b7 71 buffer_from_cb_ptr = ( uint8_t * )RXBuffer;
klauss 121:ee02790d00b7 72
klauss 121:ee02790d00b7 73 data = NULL;
klauss 121:ee02790d00b7 74
klauss 121:ee02790d00b7 75 type = DO_NOTHING;
klauss 121:ee02790d00b7 76
klauss 121:ee02790d00b7 77 v_cb = new Vector();
klauss 121:ee02790d00b7 78 if( v_cb == NULL ) {
klauss 121:ee02790d00b7 79 while( v_cb == NULL ) {
klauss 121:ee02790d00b7 80 Vector * v_cb = new Vector();
klauss 121:ee02790d00b7 81 if( sync_timer.read() > 5 ) {
klauss 121:ee02790d00b7 82 if( debug_memory ) send_msg("Call_Box vector allocation fail");
klauss 121:ee02790d00b7 83 sync_timer.reset();
klauss 121:ee02790d00b7 84 }
klauss 121:ee02790d00b7 85 }
klauss 121:ee02790d00b7 86 }
klauss 121:ee02790d00b7 87
klauss 126:1f90756250fb 88 if ( debug_app_init ) send_msg ( "v_cb :: %s", ( v_cb not_eq NULL ) ? "Ok" : "Failure" );
klauss 121:ee02790d00b7 89
klauss 121:ee02790d00b7 90 v_call = new Vector();
klauss 121:ee02790d00b7 91 if( v_call == NULL ) {
klauss 121:ee02790d00b7 92 while( v_call == NULL ) {
klauss 121:ee02790d00b7 93 Vector * v_call = new Vector();
klauss 121:ee02790d00b7 94 if( sync_timer.read() > 5 ) {
klauss 121:ee02790d00b7 95 if( debug_memory ) send_msg("Call vector allocation fail");
klauss 121:ee02790d00b7 96 sync_timer.reset();
klauss 121:ee02790d00b7 97 }
klauss 121:ee02790d00b7 98 }
klauss 121:ee02790d00b7 99 }
klauss 121:ee02790d00b7 100
klauss 126:1f90756250fb 101 if ( debug_app_init ) send_msg ( "v_call :: %s", ( v_call not_eq NULL ) ? "Ok" : "Failure" );
klauss 121:ee02790d00b7 102
klauss 121:ee02790d00b7 103 ts = new Timeslice();
klauss 121:ee02790d00b7 104 if( ts == NULL ) {
klauss 121:ee02790d00b7 105 memory_is_over = true;
klauss 121:ee02790d00b7 106 if( debug_memory ) send_msg("TS allocation fail");
klauss 121:ee02790d00b7 107 }
klauss 121:ee02790d00b7 108
klauss 126:1f90756250fb 109 if ( debug_app_init ) send_msg ( "TS :: %s", ( ts not_eq NULL ) ? "Ok" : "Failure" );
klauss 121:ee02790d00b7 110
klauss 121:ee02790d00b7 111 for( register uint16_t i = 0; i < CB_BUFFER_SIZE; i++ ) {
klauss 121:ee02790d00b7 112 cb_rx_buffer[ i ] = 0;
klauss 121:ee02790d00b7 113 cb_tx_buffer[ i ] = 0;
klauss 121:ee02790d00b7 114 }
klauss 121:ee02790d00b7 115
klauss 121:ee02790d00b7 116 reset_leds();
klauss 121:ee02790d00b7 117
klauss 121:ee02790d00b7 118 udp_timer.start();
klauss 121:ee02790d00b7 119
klauss 121:ee02790d00b7 120 if ( debug_app_init ) send_msg ( "init_fw_handler() :: %s", ( init_fw_handler() == 0 ) ? "Ok" : "Failure" );
klauss 121:ee02790d00b7 121
klauss 121:ee02790d00b7 122 if ( debug_app_init ) send_msg ( "init_ranges() :: %s", ( init_ranges() == 0 ) ? "Ok" : "Failure" );
klauss 121:ee02790d00b7 123
klauss 121:ee02790d00b7 124 if ( debug_app_init ) send_msg ( "init_refresh() :: %s", ( init_refresh() == 0 ) ? "Ok" : "Failure" );
klauss 121:ee02790d00b7 125
klauss 121:ee02790d00b7 126 if ( debug_app_init ) send_msg ( "init_sync_refresh() :: %s", ( init_sync_refresh() == 0 ) ? "Ok" : "Failure" );
klauss 121:ee02790d00b7 127
klauss 121:ee02790d00b7 128 count = 0;
klauss 121:ee02790d00b7 129
klauss 121:ee02790d00b7 130 max_registered_cbx = 0;
klauss 121:ee02790d00b7 131
klauss 121:ee02790d00b7 132 wake_all = false;
klauss 121:ee02790d00b7 133
klauss 121:ee02790d00b7 134 pkg_wdt = RX_CB_IDLE;
klauss 121:ee02790d00b7 135
klauss 121:ee02790d00b7 136 eth_wdt = ETH_CONNECT_TIMEOUT;
klauss 121:ee02790d00b7 137
klauss 121:ee02790d00b7 138 invite_retry_timer.start();
klauss 121:ee02790d00b7 139
klauss 121:ee02790d00b7 140 if ( debug_app_init ) send_msg ( "hex_init() :: %s", ( hex_init() == 0 ) ? "Ok" : "Failure" );
klauss 121:ee02790d00b7 141
klauss 121:ee02790d00b7 142 reset_leds();
klauss 121:ee02790d00b7 143
klauss 121:ee02790d00b7 144 lpc_low_level_input_counter = 0;
klauss 121:ee02790d00b7 145
klauss 124:c1b6c893e1c3 146 if ( debug_app_init ) send_msg ( "init_hello () :: %s", ( init_hello () == 0 ) ? "Ok" : "Failure" );
klauss 124:c1b6c893e1c3 147
klauss 126:1f90756250fb 148 test_ts_timer.start ();
klauss 126:1f90756250fb 149
klauss 128:3ae1c74773a8 150 pwr_src_timer.start ();
klauss 128:3ae1c74773a8 151
klauss 121:ee02790d00b7 152 send_msg ( "" );
klauss 121:ee02790d00b7 153
klauss 121:ee02790d00b7 154 return ( 0 );
klauss 121:ee02790d00b7 155 }
klauss 121:ee02790d00b7 156
klauss 121:ee02790d00b7 157
klauss 121:ee02790d00b7 158 int try_reconnect_with_eth ( void )
klauss 121:ee02790d00b7 159 {
klauss 121:ee02790d00b7 160 eth_status = __init_eth__();
klauss 121:ee02790d00b7 161
klauss 126:1f90756250fb 162 if ( eth_status )
klauss 126:1f90756250fb 163 {
klauss 121:ee02790d00b7 164 send_msg("******* Cannot connect to eth *******");
klauss 121:ee02790d00b7 165 } else {
klauss 121:ee02790d00b7 166 send_msg("******* Connection eth - ok *******");
klauss 121:ee02790d00b7 167 int init_prompt_eth_ret = init_prompt_eth();
klauss 121:ee02790d00b7 168
klauss 121:ee02790d00b7 169 if ( init_prompt_eth_ret == BIT0 ) send_msg("******* Prompt eth UDP Ready *******");
klauss 121:ee02790d00b7 170
klauss 121:ee02790d00b7 171 if ( init_prompt_eth_ret == BIT1 ) send_msg("******* Prompt eth TCP Ready *******");
klauss 121:ee02790d00b7 172
klauss 126:1f90756250fb 173 if ( debug_app_init ) send_msg ( "init_prompt_eth() :: %s", ( init_prompt_eth_ret == ( BIT0 bitor BIT1 ) ) ? "Ok" : "Failure" );
klauss 121:ee02790d00b7 174
klauss 121:ee02790d00b7 175 if ( debug_app_init ) send_msg ( "init_external_wdt() :: %s", ( init_external_wdt() == 0 ) ? "Ok" : "Failure" );
klauss 121:ee02790d00b7 176
klauss 121:ee02790d00b7 177 if ( debug_app_init ) send_msg ( "init_bl() :: %s", ( init_bl() == 0 ) ? "Ok" : "Failure" );
klauss 121:ee02790d00b7 178
klauss 121:ee02790d00b7 179 if ( debug_app_init ) send_msg ( "init_clock() :: %s", ( init_clock() == 0 ) ? "Ok" : "Failure" );
klauss 128:3ae1c74773a8 180
klauss 128:3ae1c74773a8 181 if ( debug_app_init ) send_msg ( "init_pwr_src () :: %s", ( init_pwr_src () == 0 ) ? "Ok" : "Failure" );
klauss 121:ee02790d00b7 182 }
klauss 121:ee02790d00b7 183
klauss 121:ee02790d00b7 184 return eth_status;
klauss 121:ee02790d00b7 185 }
klauss 121:ee02790d00b7 186
klauss 121:ee02790d00b7 187
klauss 121:ee02790d00b7 188 int show_stats ( void )
klauss 121:ee02790d00b7 189 {
klauss 121:ee02790d00b7 190 char str[ 200 ];
klauss 121:ee02790d00b7 191 int snprintf_ret = snprintf( str, 200, ""
klauss 121:ee02790d00b7 192 "\n\rReceived Pkgs::\n\r "
klauss 121:ee02790d00b7 193 "Boot :: %u\n\r "
klauss 121:ee02790d00b7 194 "Registry :: %u\n\r "
klauss 121:ee02790d00b7 195 "Invite :: %u\n\r "
klauss 121:ee02790d00b7 196 "Audio :: %u\n\r "
klauss 121:ee02790d00b7 197 "Telemetry :: %u\n\r "
klauss 121:ee02790d00b7 198 "CB_stats :: %u\n\r "
klauss 121:ee02790d00b7 199 "CB_bye :: %u\n\r "
klauss 121:ee02790d00b7 200 "Prompt :: %u\n\r "
klauss 121:ee02790d00b7 201 "Flood :: %u\n\r "
klauss 121:ee02790d00b7 202 "Flood :: %u\n\r "
klauss 121:ee02790d00b7 203 "Bootloader_cbx :: %u\n\r",
klauss 121:ee02790d00b7 204 boot_counter,
klauss 121:ee02790d00b7 205 registry_counter,
klauss 121:ee02790d00b7 206 invite_counter,
klauss 121:ee02790d00b7 207 audio_counter,
klauss 121:ee02790d00b7 208 telemetry_counter,
klauss 121:ee02790d00b7 209 cb_stats_counter,
klauss 121:ee02790d00b7 210 cb_bye_counter,
klauss 121:ee02790d00b7 211 prompt_counter,
klauss 121:ee02790d00b7 212 flood_counter,
klauss 121:ee02790d00b7 213 flood_counter,
klauss 121:ee02790d00b7 214 bootloader_cbx_counter
klauss 121:ee02790d00b7 215 );
klauss 121:ee02790d00b7 216 send_msg( str );
klauss 121:ee02790d00b7 217
klauss 121:ee02790d00b7 218 if ( debug_string_length ) debug_msg("str.length ( %d )", snprintf_ret );
klauss 121:ee02790d00b7 219 return ( snprintf_ret );
klauss 121:ee02790d00b7 220 }
klauss 121:ee02790d00b7 221
klauss 121:ee02790d00b7 222
klauss 121:ee02790d00b7 223 int reset_stats ( void )
klauss 121:ee02790d00b7 224 {
klauss 121:ee02790d00b7 225 boot_counter = 0;
klauss 121:ee02790d00b7 226 registry_counter = 0;
klauss 121:ee02790d00b7 227 invite_counter = 0;
klauss 121:ee02790d00b7 228 audio_counter = 0;
klauss 121:ee02790d00b7 229 telemetry_counter = 0;
klauss 121:ee02790d00b7 230 cb_bye_counter = 0;
klauss 121:ee02790d00b7 231 prompt_counter = 0;
klauss 121:ee02790d00b7 232 flood_counter = 0;
klauss 121:ee02790d00b7 233 bootloader_cbx_counter = 0;
klauss 121:ee02790d00b7 234 cb_stats_counter = 0;
klauss 121:ee02790d00b7 235 fw_counter = 0;
klauss 121:ee02790d00b7 236
klauss 121:ee02790d00b7 237 return ( 0 );
klauss 121:ee02790d00b7 238 }
klauss 121:ee02790d00b7 239
klauss 121:ee02790d00b7 240 int show_cb_list ( Vector * v_cb )
klauss 121:ee02790d00b7 241 {
klauss 121:ee02790d00b7 242 uint8_t missed_cb = ( ( max_ext - min_ext ) + 1 ) - v_cb->size();
klauss 121:ee02790d00b7 243
klauss 121:ee02790d00b7 244 if( ( max_ext % 2 ) == 0 ) missed_cb++;
klauss 121:ee02790d00b7 245
klauss 121:ee02790d00b7 246 if( min_ext % 2 ) missed_cb++;
klauss 121:ee02790d00b7 247
klauss 121:ee02790d00b7 248 if( min_ext == 0 && max_ext == 0 ) missed_cb = 0;
klauss 121:ee02790d00b7 249
klauss 121:ee02790d00b7 250 send_msg("Registered %d[ %d ] CBx ( %d - %d ) - Missed %d -- Remain_timeslices :: %d :: v_call->size() :: %d", v_cb->size(), max_registered_cbx, min_ext, max_ext, missed_cb, ts->remain_timeslices(), v_call->size() );
klauss 121:ee02790d00b7 251 if( v_cb->size() == 1 ) {
klauss 121:ee02790d00b7 252 send_msg(" %d ", ( ( Call_Box * )v_cb->get_element( 0 ) )->get_ext() );
klauss 121:ee02790d00b7 253 } else if( v_cb->size() > 1 ) {
klauss 121:ee02790d00b7 254 char str[ 1024 ];
klauss 121:ee02790d00b7 255 int ext_list[ MAX_CB_IN_A_BRANCH ];
klauss 121:ee02790d00b7 256 register int i = 0;
klauss 121:ee02790d00b7 257 for( ; i < v_cb->size(); i++ ) {
klauss 121:ee02790d00b7 258 ext_list[ i ] = ( ( Call_Box * )v_cb->get_element( i ) )->get_ext();
klauss 121:ee02790d00b7 259 }
klauss 121:ee02790d00b7 260
klauss 121:ee02790d00b7 261 qsort( ext_list, v_cb->size(), sizeof( int ), ls_comp );
klauss 121:ee02790d00b7 262
klauss 121:ee02790d00b7 263 char aux[ 16 ];
klauss 121:ee02790d00b7 264 strcpy( str, "\r\n> " );
klauss 121:ee02790d00b7 265 for( i = 0; i < v_cb->size() - 1; i++ ) {
klauss 121:ee02790d00b7 266 sprintf( aux, "%i, ", ext_list[ i ] );
klauss 121:ee02790d00b7 267 strcat( str, aux );
klauss 126:1f90756250fb 268 if( ( i not_eq 0 ) and not( ( i + 1 ) % 16 ) ) strcat( str, "\r\n> " );
klauss 121:ee02790d00b7 269 }
klauss 121:ee02790d00b7 270 sprintf( aux, "%i ", ext_list[ i ] );
klauss 121:ee02790d00b7 271 strcat( str, aux );
klauss 121:ee02790d00b7 272 send_msg( "%s", str );
klauss 121:ee02790d00b7 273 }
klauss 121:ee02790d00b7 274
klauss 121:ee02790d00b7 275 return ( 0 );
klauss 121:ee02790d00b7 276 }
klauss 121:ee02790d00b7 277
klauss 123:1d395b5a4cad 278 int show_cb_long_list ( Vector * v_cb, bool show_time )
klauss 121:ee02790d00b7 279 {
klauss 121:ee02790d00b7 280 uint8_t missed_cb = ( ( max_ext - min_ext ) + 1 ) - v_cb->size();
klauss 121:ee02790d00b7 281
klauss 121:ee02790d00b7 282 if( ( max_ext % 2 ) == 0 ) missed_cb++;
klauss 121:ee02790d00b7 283
klauss 121:ee02790d00b7 284 if( min_ext % 2 ) missed_cb++;
klauss 121:ee02790d00b7 285
klauss 121:ee02790d00b7 286 if( min_ext == 0 && max_ext == 0 ) missed_cb = 0;
klauss 121:ee02790d00b7 287
klauss 121:ee02790d00b7 288 {
klauss 121:ee02790d00b7 289 int ext_list[ MAX_CB_IN_A_BRANCH ];
klauss 121:ee02790d00b7 290
klauss 121:ee02790d00b7 291 if( v_cb->size() >= 1 ) {
klauss 121:ee02790d00b7 292 for( register int i = 0; i < v_cb->size(); i++ )
klauss 121:ee02790d00b7 293 {
klauss 121:ee02790d00b7 294 ext_list[ i ] = ( ( Call_Box * )v_cb->get_element( i ) )->get_ext();
klauss 121:ee02790d00b7 295 }
klauss 121:ee02790d00b7 296 qsort( ext_list, v_cb->size(), sizeof( int ), ls_comp );
klauss 121:ee02790d00b7 297 }
klauss 121:ee02790d00b7 298
klauss 121:ee02790d00b7 299 send_msg("Registered %d[ %d ] CBx ( %d - %d ) - Missed %d -- Remain_timeslices :: %d :: v_call->size() :: %d", v_cb->size(), max_registered_cbx, min_ext, max_ext, missed_cb, ts->remain_timeslices(), v_call->size() );
klauss 121:ee02790d00b7 300
klauss 121:ee02790d00b7 301 for( register uint8_t i = 0; i < v_cb->size(); i++ ) {
klauss 121:ee02790d00b7 302
klauss 121:ee02790d00b7 303 Call_Box * cb = find_CB( v_cb, ext_list[ i ] );
klauss 121:ee02790d00b7 304
klauss 126:1f90756250fb 305 if( cb not_eq NULL )
klauss 121:ee02790d00b7 306 {
klauss 121:ee02790d00b7 307 char cb_status[ 32 ];
klauss 121:ee02790d00b7 308 char cb_sip_status[ 32 ];
klauss 121:ee02790d00b7 309 switch ( cb -> get_status () )
klauss 121:ee02790d00b7 310 {
klauss 121:ee02790d00b7 311 case cb_idle : {
klauss 121:ee02790d00b7 312 strcpy( cb_status, "cb_idle" );
klauss 121:ee02790d00b7 313 break;
klauss 121:ee02790d00b7 314 }
klauss 121:ee02790d00b7 315 case cb_ringing : {
klauss 121:ee02790d00b7 316 strcpy( cb_status, "cb_ringing" );
klauss 121:ee02790d00b7 317 break;
klauss 121:ee02790d00b7 318 }
klauss 121:ee02790d00b7 319 case cb_trying : {
klauss 121:ee02790d00b7 320 strcpy( cb_status,"cb_trying" );
klauss 121:ee02790d00b7 321 break;
klauss 121:ee02790d00b7 322 }
klauss 121:ee02790d00b7 323 case cb_on_call : {
klauss 121:ee02790d00b7 324 strcpy( cb_status, "cb_on_call" );
klauss 121:ee02790d00b7 325 break;
klauss 121:ee02790d00b7 326 }
klauss 121:ee02790d00b7 327 case cb_busy : {
klauss 121:ee02790d00b7 328 strcpy( cb_status, "cb_busy" );
klauss 121:ee02790d00b7 329 break;
klauss 121:ee02790d00b7 330 }
klauss 121:ee02790d00b7 331 case cb_denied : {
klauss 121:ee02790d00b7 332 strcpy( cb_status, "cb_denied" );
klauss 121:ee02790d00b7 333 break;
klauss 121:ee02790d00b7 334 }
klauss 121:ee02790d00b7 335 case cb_bootloader : {
klauss 121:ee02790d00b7 336 strcpy( cb_status, "cb_bootloader" );
klauss 121:ee02790d00b7 337 break;
klauss 121:ee02790d00b7 338 }
klauss 121:ee02790d00b7 339 }
klauss 121:ee02790d00b7 340
klauss 121:ee02790d00b7 341 switch( cb -> get_sip_status () )
klauss 121:ee02790d00b7 342 {
klauss 121:ee02790d00b7 343 case sip_idle : {
klauss 121:ee02790d00b7 344 strcpy( cb_sip_status, "sip_idle" );
klauss 121:ee02790d00b7 345 break;
klauss 121:ee02790d00b7 346 }
klauss 121:ee02790d00b7 347 case sip_waiting_trying : {
klauss 121:ee02790d00b7 348 strcpy( cb_sip_status, "sip_waiting_trying" );
klauss 121:ee02790d00b7 349 break;
klauss 121:ee02790d00b7 350 }
klauss 121:ee02790d00b7 351 case sip_trying : {
klauss 121:ee02790d00b7 352 strcpy( cb_sip_status, "sip_trying" );
klauss 121:ee02790d00b7 353 break;
klauss 121:ee02790d00b7 354 }
klauss 121:ee02790d00b7 355 case sip_ringing : {
klauss 121:ee02790d00b7 356 strcpy( cb_sip_status, "sip_ringing" );
klauss 121:ee02790d00b7 357 break;
klauss 121:ee02790d00b7 358 }
klauss 121:ee02790d00b7 359 case sip_busy : {
klauss 121:ee02790d00b7 360 strcpy( cb_sip_status, "sip_busy" );
klauss 121:ee02790d00b7 361 break;
klauss 121:ee02790d00b7 362 }
klauss 121:ee02790d00b7 363 case sip_ok : {
klauss 121:ee02790d00b7 364 strcpy( cb_sip_status, "sip_ok" );
klauss 121:ee02790d00b7 365 break;
klauss 121:ee02790d00b7 366 }
klauss 121:ee02790d00b7 367 case sip_on_call : {
klauss 121:ee02790d00b7 368 strcpy( cb_sip_status, "sip_on_call" );
klauss 121:ee02790d00b7 369 break;
klauss 121:ee02790d00b7 370 }
klauss 121:ee02790d00b7 371 case sip_denied : {
klauss 121:ee02790d00b7 372 strcpy( cb_sip_status, "sip_denied" );
klauss 121:ee02790d00b7 373 break;
klauss 121:ee02790d00b7 374 }
klauss 121:ee02790d00b7 375 }
klauss 121:ee02790d00b7 376
klauss 121:ee02790d00b7 377 char cbx_to_string[ 254 ];
klauss 121:ee02790d00b7 378 snprintf ( cbx_to_string, sizeof ( cbx_to_string ),
klauss 123:1d395b5a4cad 379 "Ext :: %5i :: Port :: %5i :: Status -- %s - %s",
klauss 121:ee02790d00b7 380 cb->get_ext(), cb->get_port(), cb_status, cb_sip_status
klauss 121:ee02790d00b7 381 );
klauss 121:ee02790d00b7 382
klauss 126:1f90756250fb 383 if( cb->get_timeslice() not_eq 0 )
klauss 121:ee02790d00b7 384 {
klauss 121:ee02790d00b7 385 char aux[ 32 ];
klauss 121:ee02790d00b7 386 snprintf ( aux, sizeof ( aux ), " -- on TimeSlice :: %i", cb->get_timeslice() );
klauss 121:ee02790d00b7 387 strcat( cbx_to_string, aux );
klauss 121:ee02790d00b7 388 }
klauss 123:1d395b5a4cad 389
klauss 123:1d395b5a4cad 390 if ( show_time )
klauss 123:1d395b5a4cad 391 {
klauss 123:1d395b5a4cad 392 char get_timer_msg [ 128 ];
klauss 123:1d395b5a4cad 393
klauss 123:1d395b5a4cad 394 snprintf ( get_timer_msg, sizeof ( get_timer_msg ) -1, " -- timer %4i [ %s ",
klauss 123:1d395b5a4cad 395 cb -> get_timer (),
klauss 123:1d395b5a4cad 396 ( cb -> get_overflow_flag () ) ? "Overflow" : "Ok"
klauss 123:1d395b5a4cad 397 );
klauss 123:1d395b5a4cad 398
klauss 123:1d395b5a4cad 399 int get_overflow_times_tmp = cb -> get_overflow_times ();
klauss 123:1d395b5a4cad 400
klauss 123:1d395b5a4cad 401 if ( get_overflow_times_tmp == 0 ) strcat ( get_timer_msg, "]" );
klauss 123:1d395b5a4cad 402
klauss 123:1d395b5a4cad 403 else {
klauss 123:1d395b5a4cad 404 char strcat_tmp [ 16 ];
klauss 123:1d395b5a4cad 405 if ( get_overflow_times_tmp == 1 ) snprintf( strcat_tmp, sizeof ( strcat_tmp ) - 1, "1 time ]" );
klauss 123:1d395b5a4cad 406
klauss 123:1d395b5a4cad 407 else snprintf( strcat_tmp, sizeof ( strcat_tmp ) - 1, "%u times ]", get_overflow_times_tmp );
klauss 123:1d395b5a4cad 408
klauss 123:1d395b5a4cad 409 strcat ( get_timer_msg, strcat_tmp );
klauss 123:1d395b5a4cad 410 }
klauss 123:1d395b5a4cad 411
klauss 123:1d395b5a4cad 412 strcat ( cbx_to_string, get_timer_msg );
klauss 123:1d395b5a4cad 413 }
klauss 123:1d395b5a4cad 414
klauss 121:ee02790d00b7 415 send_msg( cbx_to_string );
klauss 121:ee02790d00b7 416 }
klauss 121:ee02790d00b7 417 }
klauss 121:ee02790d00b7 418 }
klauss 121:ee02790d00b7 419
klauss 121:ee02790d00b7 420 return ( 0 );
klauss 121:ee02790d00b7 421 }
klauss 121:ee02790d00b7 422
klauss 121:ee02790d00b7 423 int show_cb ( Vector * v_cb )
klauss 121:ee02790d00b7 424 {
klauss 121:ee02790d00b7 425 send_msg("Registered %d ( of %d ) CBx ( %d - %d ) -- Remain_timeslices :: %d :: v_call->size() :: %d", v_cb->size(), max_registered_cbx, min_ext, max_ext, ts->remain_timeslices(), v_call->size() );
klauss 121:ee02790d00b7 426 for( register uint8_t i = 0; i < v_cb->size(); i++ ) {
klauss 121:ee02790d00b7 427 Call_Box * cb = ( Call_Box * )v_cb->get_element( i );
klauss 121:ee02790d00b7 428 char cb_status[ 32 ];
klauss 121:ee02790d00b7 429 char cb_sip_status[ 32 ];
klauss 121:ee02790d00b7 430 switch ( cb -> get_status () )
klauss 121:ee02790d00b7 431 {
klauss 121:ee02790d00b7 432 case cb_idle : {
klauss 121:ee02790d00b7 433 strcpy( cb_status, "cb_idle" );
klauss 121:ee02790d00b7 434 break;
klauss 121:ee02790d00b7 435 }
klauss 121:ee02790d00b7 436 case cb_ringing : {
klauss 121:ee02790d00b7 437 strcpy( cb_status, "cb_ringing" );
klauss 121:ee02790d00b7 438 break;
klauss 121:ee02790d00b7 439 }
klauss 121:ee02790d00b7 440 case cb_trying : {
klauss 121:ee02790d00b7 441 strcpy( cb_status,"cb_trying" );
klauss 121:ee02790d00b7 442 break;
klauss 121:ee02790d00b7 443 }
klauss 121:ee02790d00b7 444 case cb_on_call : {
klauss 121:ee02790d00b7 445 strcpy( cb_status, "cb_on_call" );
klauss 121:ee02790d00b7 446 break;
klauss 121:ee02790d00b7 447 }
klauss 121:ee02790d00b7 448 case cb_busy : {
klauss 121:ee02790d00b7 449 strcpy( cb_status, "cb_busy" );
klauss 121:ee02790d00b7 450 break;
klauss 121:ee02790d00b7 451 }
klauss 121:ee02790d00b7 452 case cb_denied : {
klauss 121:ee02790d00b7 453 strcpy( cb_status, "cb_denied" );
klauss 121:ee02790d00b7 454 break;
klauss 121:ee02790d00b7 455 }
klauss 121:ee02790d00b7 456 case cb_bootloader : {
klauss 121:ee02790d00b7 457 strcpy( cb_status, "cb_bootloader" );
klauss 121:ee02790d00b7 458 break;
klauss 121:ee02790d00b7 459 }
klauss 121:ee02790d00b7 460 }
klauss 121:ee02790d00b7 461 switch( cb -> get_sip_status () ) {
klauss 121:ee02790d00b7 462 case sip_idle : {
klauss 121:ee02790d00b7 463 strcpy( cb_sip_status, "sip_idle" );
klauss 121:ee02790d00b7 464 break;
klauss 121:ee02790d00b7 465 }
klauss 121:ee02790d00b7 466 case sip_waiting_trying : {
klauss 121:ee02790d00b7 467 strcpy( cb_sip_status, "sip_waiting_trying" );
klauss 121:ee02790d00b7 468 break;
klauss 121:ee02790d00b7 469 }
klauss 121:ee02790d00b7 470 case sip_trying : {
klauss 121:ee02790d00b7 471 strcpy( cb_sip_status, "sip_trying" );
klauss 121:ee02790d00b7 472 break;
klauss 121:ee02790d00b7 473 }
klauss 121:ee02790d00b7 474 case sip_ringing : {
klauss 121:ee02790d00b7 475 strcpy( cb_sip_status, "sip_ringing" );
klauss 121:ee02790d00b7 476 break;
klauss 121:ee02790d00b7 477 }
klauss 121:ee02790d00b7 478 case sip_busy : {
klauss 121:ee02790d00b7 479 strcpy( cb_sip_status, "sip_busy" );
klauss 121:ee02790d00b7 480 break;
klauss 121:ee02790d00b7 481 }
klauss 121:ee02790d00b7 482 case sip_ok : {
klauss 121:ee02790d00b7 483 strcpy( cb_sip_status, "sip_ok" );
klauss 121:ee02790d00b7 484 break;
klauss 121:ee02790d00b7 485 }
klauss 121:ee02790d00b7 486 case sip_on_call : {
klauss 121:ee02790d00b7 487 strcpy( cb_sip_status, "sip_on_call" );
klauss 121:ee02790d00b7 488 break;
klauss 121:ee02790d00b7 489 }
klauss 121:ee02790d00b7 490 case sip_denied : {
klauss 121:ee02790d00b7 491 strcpy( cb_sip_status, "sip_denied" );
klauss 121:ee02790d00b7 492 break;
klauss 121:ee02790d00b7 493 }
klauss 121:ee02790d00b7 494 }
klauss 121:ee02790d00b7 495
klauss 121:ee02790d00b7 496 char cbx_to_string[ 254 ];
klauss 121:ee02790d00b7 497 snprintf ( cbx_to_string, sizeof ( cbx_to_string ),
klauss 123:1d395b5a4cad 498 "Ext :: %5i :: Port :: %5i :: Status -- %s - %s",
klauss 121:ee02790d00b7 499 cb->get_ext(), cb->get_port(), cb_status, cb_sip_status
klauss 121:ee02790d00b7 500 );
klauss 121:ee02790d00b7 501
klauss 126:1f90756250fb 502 if( cb->get_timeslice() not_eq 0 )
klauss 121:ee02790d00b7 503 {
klauss 121:ee02790d00b7 504 char aux[ 32 ];
klauss 121:ee02790d00b7 505 snprintf ( aux, sizeof ( aux ), " -- on TimeSlice :: %i", cb->get_timeslice() );
klauss 121:ee02790d00b7 506 strcat( cbx_to_string, aux );
klauss 121:ee02790d00b7 507 }
klauss 121:ee02790d00b7 508
klauss 121:ee02790d00b7 509
klauss 121:ee02790d00b7 510 send_msg( cbx_to_string );
klauss 121:ee02790d00b7 511 }
klauss 121:ee02790d00b7 512
klauss 121:ee02790d00b7 513 return ( 0 );
klauss 121:ee02790d00b7 514 }
klauss 121:ee02790d00b7 515
klauss 121:ee02790d00b7 516 int show_cb_sip ( Vector * v_cb )
klauss 121:ee02790d00b7 517 {
klauss 122:480c44b0e205 518 send_msg(":: Sip :: %u", v_cb -> size () );
klauss 122:480c44b0e205 519 for ( register uint8_t i = 0; i < v_cb -> size (); i++ )
klauss 122:480c44b0e205 520 {
klauss 122:480c44b0e205 521 Call_Box * cb = ( Call_Box * ) v_cb -> get_element ( i );
klauss 121:ee02790d00b7 522
klauss 123:1d395b5a4cad 523 char tmp_send_msg [ 256 ];
klauss 123:1d395b5a4cad 524
klauss 123:1d395b5a4cad 525 snprintf ( tmp_send_msg, sizeof ( tmp_send_msg ) - 1,
klauss 123:1d395b5a4cad 526 "ext :: %5i -- port :: %5i -- timer %4i [ %s ",
klauss 122:480c44b0e205 527 cb -> get_sip_ext (),
klauss 121:ee02790d00b7 528 cb -> get_sip_port (),
klauss 121:ee02790d00b7 529 cb -> get_timer (),
klauss 121:ee02790d00b7 530 ( cb -> get_overflow_flag () ) ? "Overflow" : "Ok"
klauss 121:ee02790d00b7 531 );
klauss 123:1d395b5a4cad 532
klauss 123:1d395b5a4cad 533 int get_overflow_times_tmp = cb -> get_overflow_times ();
klauss 123:1d395b5a4cad 534
klauss 123:1d395b5a4cad 535 if ( get_overflow_times_tmp == 0 ) strcat ( tmp_send_msg, "]" );
klauss 123:1d395b5a4cad 536
klauss 123:1d395b5a4cad 537 else {
klauss 123:1d395b5a4cad 538 char strcat_tmp [ 16 ];
klauss 123:1d395b5a4cad 539 if ( get_overflow_times_tmp == 1 ) snprintf( strcat_tmp, sizeof ( strcat_tmp ) - 1, "1 time ]" );
klauss 123:1d395b5a4cad 540
klauss 123:1d395b5a4cad 541 else snprintf( strcat_tmp, sizeof ( strcat_tmp ) - 1, "%d times ]", get_overflow_times_tmp );
klauss 123:1d395b5a4cad 542
klauss 123:1d395b5a4cad 543 strcat ( tmp_send_msg, strcat_tmp );
klauss 123:1d395b5a4cad 544 }
klauss 123:1d395b5a4cad 545
klauss 123:1d395b5a4cad 546 send_msg ( tmp_send_msg );
klauss 121:ee02790d00b7 547 }
klauss 121:ee02790d00b7 548
klauss 121:ee02790d00b7 549 return ( 0 );
klauss 121:ee02790d00b7 550 }
klauss 121:ee02790d00b7 551
klauss 121:ee02790d00b7 552 int show_sizes ( void )
klauss 121:ee02790d00b7 553 {
klauss 121:ee02790d00b7 554 sizes = false;
klauss 121:ee02790d00b7 555 send_msg("CB_New (%u) -- CB_Delete (%u)", cb_new_counter, cb_delete_counter );
klauss 121:ee02790d00b7 556 send_msg("SIP_New (%u) -- SIP_Delete (%u)", sip_new_counter, sip_delete_counter );
klauss 121:ee02790d00b7 557 send_msg("RTP_header_New (%u) -- RTP_header_Delete (%u)", rtp_header_new_counter, rtp_header_delete_counter );
klauss 121:ee02790d00b7 558 send_msg("RTP_body_New (%u) -- RTP_body_Delete (%u)", rtp_body_new_counter, rtp_body_delete_counter );
klauss 121:ee02790d00b7 559 send_msg("Call_New (%u) -- Call_Delete (%u)", call_new_counter, call_delete_counter );
klauss 121:ee02790d00b7 560 send_msg("lpc_low_level_input_counter :: %d", lpc_low_level_input_counter );
klauss 121:ee02790d00b7 561 send_msg("Memory is %s", ( memory_is_over ) ? "Over" : "Ok" );
klauss 121:ee02790d00b7 562 send_msg("Missed_Pkg :: %d ::", missed_pkg );
klauss 121:ee02790d00b7 563 send_msg("Sizeof Sip :: %u", sizeof( Sip ) );
klauss 121:ee02790d00b7 564 send_msg("Sizeof Call_Box :: %u", sizeof ( Call_Box ) );
klauss 121:ee02790d00b7 565 send_msg("Sizeof VZ_call :: %u", sizeof( VZ_call ) );
klauss 121:ee02790d00b7 566 send_msg("Sizeof RTP :: %u", sizeof( RTP ) );
klauss 121:ee02790d00b7 567 send_msg("Sizeof RTP_Header :: %u", sizeof( RTP_Header ) );
klauss 121:ee02790d00b7 568 send_msg("Sizeof RTP_Body :: %u", sizeof( RTP_Body ) );
klauss 121:ee02790d00b7 569 send_msg("Sizeof Vector :: %u", sizeof( Vector ) );
klauss 121:ee02790d00b7 570 send_msg("Sizeof Timeslice :: %u", sizeof( Timeslice ) );
klauss 121:ee02790d00b7 571 send_msg("Sizeof Watchdog :: %u", sizeof( Watchdog ) );
klauss 121:ee02790d00b7 572
klauss 121:ee02790d00b7 573 return ( 0 );
klauss 121:ee02790d00b7 574 }
klauss 121:ee02790d00b7 575
klauss 121:ee02790d00b7 576 int check_udp_packages_pending ( Vector * v_cb )
klauss 121:ee02790d00b7 577 {
klauss 121:ee02790d00b7 578 fd_set fdSet;
klauss 121:ee02790d00b7 579 FD_ZERO(&fdSet);
klauss 121:ee02790d00b7 580
klauss 121:ee02790d00b7 581 for( register uint8_t i = 0; i < v_cb->size(); i++ ) {
klauss 121:ee02790d00b7 582 Call_Box * cb = (Call_Box *)v_cb->get_element( i );
klauss 121:ee02790d00b7 583 FD_SET( cb->get_sip_socket_fd(), &fdSet);
klauss 121:ee02790d00b7 584 }
klauss 121:ee02790d00b7 585
klauss 121:ee02790d00b7 586 /* Recepcao de pacotes UDP para atualizacao de callboxes */
klauss 124:c1b6c893e1c3 587 FD_SET( udp_bl_client.get_fd (), &fdSet);
klauss 121:ee02790d00b7 588
klauss 121:ee02790d00b7 589 /* Recepcao de pacotes UDP para "tickagem" do watchdog */
klauss 124:c1b6c893e1c3 590 FD_SET( udp_wdt_client.get_fd (), &fdSet);
klauss 121:ee02790d00b7 591
klauss 121:ee02790d00b7 592 // adiciona o socket de comandos prompt-UDP-ETH
klauss 124:c1b6c893e1c3 593 FD_SET( udp_client.get_fd (), &fdSet );
klauss 121:ee02790d00b7 594
klauss 121:ee02790d00b7 595 // adiciona o socket de pedido de clock para o servidor
klauss 124:c1b6c893e1c3 596 FD_SET( clock_sock.get_fd (), &fdSet );
klauss 121:ee02790d00b7 597
klauss 121:ee02790d00b7 598 struct timeval t;
klauss 121:ee02790d00b7 599 t.tv_sec = 0;
klauss 121:ee02790d00b7 600 t.tv_usec = 0;
klauss 124:c1b6c893e1c3 601 int ret = lwip_select ( FD_SETSIZE, &fdSet, NULL, NULL, &t );
klauss 121:ee02790d00b7 602
klauss 124:c1b6c893e1c3 603 if ( ( udp_bl_timer.read() > 30) and (bl_start_flag) )
klauss 124:c1b6c893e1c3 604 {
klauss 121:ee02790d00b7 605 udp_bl_timer.stop();
klauss 121:ee02790d00b7 606 udp_bl_timer.reset();
klauss 121:ee02790d00b7 607 bl_start_flag = 0;
klauss 126:1f90756250fb 608 if (bl_ts not_eq 0) {
klauss 121:ee02790d00b7 609 ts->return_timeslice( bl_ts );
klauss 121:ee02790d00b7 610 bl_ts = 0;
klauss 121:ee02790d00b7 611 }
klauss 126:1f90756250fb 612 if (bl_cb not_eq NULL) {
klauss 121:ee02790d00b7 613 bl_cb -> set_timeslice( 0 );
klauss 121:ee02790d00b7 614 bl_cb -> cb_set_status ( cb_idle );
klauss 121:ee02790d00b7 615 bl_cb = NULL;
klauss 121:ee02790d00b7 616 }
klauss 121:ee02790d00b7 617 }
klauss 121:ee02790d00b7 618
klauss 121:ee02790d00b7 619 if ( ret > 0 )
klauss 121:ee02790d00b7 620 {
klauss 121:ee02790d00b7 621 for( register uint8_t i = 0; i < v_cb->size(); i++ ) {
klauss 121:ee02790d00b7 622 Call_Box * cb = (Call_Box *)v_cb->get_element( i );
klauss 121:ee02790d00b7 623 int fd = cb->get_sip_socket_fd();
klauss 121:ee02790d00b7 624 if( FD_ISSET( fd, &fdSet ) ) {
klauss 121:ee02790d00b7 625 int rcv = cb->sip_udp_incomming_pkg();
klauss 121:ee02790d00b7 626 }
klauss 121:ee02790d00b7 627 }
klauss 121:ee02790d00b7 628
klauss 121:ee02790d00b7 629 /* Tratamento dos pacotes de bootloader vindo do servidor */
klauss 121:ee02790d00b7 630 if( FD_ISSET( udp_bl_client.get_fd(), &fdSet ) ) {
klauss 121:ee02790d00b7 631 if( udp_bl_client.receiveFrom( udp_bl_server, bl_recv_buffer, sizeof( bl_recv_buffer ) ) > 0 ) {
klauss 121:ee02790d00b7 632 uint16_t cnt = 0;
klauss 121:ee02790d00b7 633 if (debug_bootloader) {
klauss 121:ee02790d00b7 634 pc.printf("\r\nPACOTE SRV->HDR {");
klauss 121:ee02790d00b7 635 for (cnt = 0;cnt < UDP_BL_SIZE;cnt++) {
klauss 121:ee02790d00b7 636 if ((cnt % 30) == 0) {
klauss 121:ee02790d00b7 637 pc.printf("\r\n ");
klauss 121:ee02790d00b7 638 pc.printf(hex16(cnt));
klauss 121:ee02790d00b7 639 pc.printf(" : ");
klauss 121:ee02790d00b7 640 }
klauss 121:ee02790d00b7 641 pc.printf(hex8(bl_recv_buffer[cnt]));
klauss 121:ee02790d00b7 642 pc.printf(", ");
klauss 121:ee02790d00b7 643 }
klauss 121:ee02790d00b7 644 pc.printf("\r\n}");
klauss 121:ee02790d00b7 645 }
klauss 121:ee02790d00b7 646 bl_peer = ((uint8_t)bl_recv_buffer[0])*256 + (uint8_t)bl_recv_buffer[1];
klauss 121:ee02790d00b7 647 bl_send_buffer[0] = bl_recv_buffer[0];
klauss 121:ee02790d00b7 648 bl_send_buffer[1] = bl_recv_buffer[1];
klauss 121:ee02790d00b7 649 for (cnt = 2;cnt < UDP_BL_SIZE;cnt++) {
klauss 121:ee02790d00b7 650 bl_send_buffer[cnt] = 0;
klauss 121:ee02790d00b7 651 }
klauss 121:ee02790d00b7 652
klauss 121:ee02790d00b7 653 if ((bl_ts == 0) and !(bl_start_flag)) {
klauss 121:ee02790d00b7 654 bl_ts = ts->get_timeslice();
klauss 121:ee02790d00b7 655 }
klauss 121:ee02790d00b7 656
klauss 121:ee02790d00b7 657 /* caso nao haja timeslice disponivel informar servidor */
klauss 121:ee02790d00b7 658 if ((bl_ts == 0) and !(bl_start_flag)) {
klauss 121:ee02790d00b7 659 strncpy(bl_send_buffer + 2,"cbxdead\x00",8);
klauss 121:ee02790d00b7 660 int udp_bl_client_ret = udp_bl_client.sendTo( udp_bl_server, bl_send_buffer, strlen( bl_send_buffer ) );
klauss 121:ee02790d00b7 661
klauss 126:1f90756250fb 662 if ( udp_bl_client_ret not_eq strlen( bl_send_buffer ) )
klauss 121:ee02790d00b7 663 {
klauss 121:ee02790d00b7 664 // TODO implementar os reconnects do bl
klauss 121:ee02790d00b7 665 }
klauss 121:ee02790d00b7 666 } else {
klauss 121:ee02790d00b7 667
klauss 121:ee02790d00b7 668 /* pacote para verificar se o callbox esta disponivel */
klauss 121:ee02790d00b7 669 if (!(strncmp(bl_recv_buffer + 2,"avaiable?",9))) {
klauss 121:ee02790d00b7 670 bl_start_flag = 1;
klauss 121:ee02790d00b7 671 udp_bl_timer.start();
klauss 121:ee02790d00b7 672 udp_bl_timer.reset();
klauss 121:ee02790d00b7 673 strncpy(bl_send_buffer + 2,"cbxalive\x00",9);
klauss 121:ee02790d00b7 674 if (debug_bootloader) {
klauss 121:ee02790d00b7 675 pc.printf("\r\nPACOTE HDR->SRV {");
klauss 121:ee02790d00b7 676 for (cnt = 0;cnt < UDP_BL_SIZE;cnt++) {
klauss 121:ee02790d00b7 677 if ((cnt % 30) == 0) {
klauss 121:ee02790d00b7 678 pc.printf("\r\n ");
klauss 121:ee02790d00b7 679 pc.printf(hex16(cnt));
klauss 121:ee02790d00b7 680 pc.printf(" : ");
klauss 121:ee02790d00b7 681 }
klauss 121:ee02790d00b7 682 pc.printf(hex8(bl_send_buffer[cnt]));
klauss 121:ee02790d00b7 683 pc.printf(", ");
klauss 121:ee02790d00b7 684 }
klauss 121:ee02790d00b7 685 pc.printf("\r\n}");
klauss 121:ee02790d00b7 686 }
klauss 121:ee02790d00b7 687 udp_bl_client.sendTo( udp_bl_server, bl_send_buffer, strlen( bl_send_buffer ) );
klauss 121:ee02790d00b7 688 }
klauss 121:ee02790d00b7 689
klauss 121:ee02790d00b7 690 /* pacote para indicar o termino do processo de atualizacao */
klauss 121:ee02790d00b7 691 else if (!(strncmp(bl_recv_buffer + 2,"finished",8))) {
klauss 121:ee02790d00b7 692 bl_start_flag = 0;
klauss 126:1f90756250fb 693 if (bl_ts not_eq 0) {
klauss 121:ee02790d00b7 694 ts->return_timeslice( bl_ts );
klauss 121:ee02790d00b7 695 bl_ts = 0;
klauss 121:ee02790d00b7 696 }
klauss 126:1f90756250fb 697 if (bl_cb not_eq NULL) {
klauss 121:ee02790d00b7 698 bl_cb->set_timeslice( 0 );
klauss 121:ee02790d00b7 699 bl_cb -> cb_set_status( cb_idle );
klauss 121:ee02790d00b7 700 bl_cb = NULL;
klauss 121:ee02790d00b7 701 }
klauss 121:ee02790d00b7 702 }
klauss 121:ee02790d00b7 703
klauss 121:ee02790d00b7 704 /* pacotes a serem repassados para o callbox */
klauss 121:ee02790d00b7 705 else if (bl_start_flag) {
klauss 121:ee02790d00b7 706 uint16_t bl_cnt = 0;
klauss 121:ee02790d00b7 707 udp_bl_timer.reset();
klauss 121:ee02790d00b7 708 /* pacote de ERASE enviado para o cbx */
klauss 121:ee02790d00b7 709 /* neste momento a cabeceira sabe que o servidor se comunicou com o callbox */
klauss 121:ee02790d00b7 710 if (!(strncmp(bl_recv_buffer + 2,"\x45",1))) {
klauss 121:ee02790d00b7 711 bl_cb = find_CB( v_cb, bl_peer );
klauss 126:1f90756250fb 712 if (bl_cb not_eq NULL) {
klauss 121:ee02790d00b7 713 bl_cb->set_timeslice( bl_ts );
klauss 121:ee02790d00b7 714 bl_cb -> cb_set_status ( cb_bootloader );
klauss 121:ee02790d00b7 715 }
klauss 121:ee02790d00b7 716 }
klauss 121:ee02790d00b7 717 /* pacote de OK enviado para o cbx */
klauss 121:ee02790d00b7 718 /* neste momento a cabeceira desaloca o timeslice do callbox */
klauss 121:ee02790d00b7 719 if (!(strncmp(bl_recv_buffer + 2,"\x4f\x00\x00\x00",4))) {
klauss 121:ee02790d00b7 720 ts->return_timeslice( bl_ts );
klauss 121:ee02790d00b7 721 bl_ts = 0;
klauss 126:1f90756250fb 722 if (bl_cb not_eq NULL) {
klauss 121:ee02790d00b7 723 bl_cb->set_timeslice( 0 );
klauss 121:ee02790d00b7 724 }
klauss 121:ee02790d00b7 725 }
klauss 121:ee02790d00b7 726 bl_cbx_buffer[0] = bl_ts;
klauss 121:ee02790d00b7 727 for (bl_cnt = 0; bl_cnt < BL_SIZE; bl_cnt++) {
klauss 121:ee02790d00b7 728 bl_cbx_buffer[bl_cnt + 1] = bl_recv_buffer[bl_cnt + 2];
klauss 121:ee02790d00b7 729 }
klauss 121:ee02790d00b7 730 if (debug_bootloader) {
klauss 121:ee02790d00b7 731 pc.printf("\r\nPACOTE HDR->CBX {");
klauss 121:ee02790d00b7 732 for (cnt = 0;cnt < BL_SIZE + 1;cnt++) {
klauss 121:ee02790d00b7 733 if ((cnt % 30) == 0) {
klauss 121:ee02790d00b7 734 pc.printf("\r\n ");
klauss 121:ee02790d00b7 735 pc.printf(hex16(cnt));
klauss 121:ee02790d00b7 736 pc.printf(" : ");
klauss 121:ee02790d00b7 737 }
klauss 121:ee02790d00b7 738 pc.printf(hex8(bl_cbx_buffer[cnt]));
klauss 121:ee02790d00b7 739 pc.printf(", ");
klauss 121:ee02790d00b7 740 }
klauss 121:ee02790d00b7 741 pc.printf("\r\n}");
klauss 121:ee02790d00b7 742 }
klauss 126:1f90756250fb 743 if (bl_cb not_eq NULL) {
klauss 121:ee02790d00b7 744 bl_port = bl_cb->get_port();
klauss 121:ee02790d00b7 745 } else {
klauss 121:ee02790d00b7 746 bl_port = bl_peer;
klauss 121:ee02790d00b7 747 }
klauss 121:ee02790d00b7 748 send2callboxes( build_cb_package( bl_peer, bl_port, BOOTLOADER_CBX,bl_cbx_buffer, 0, BL_SIZE + 1, write_buffer) );
klauss 121:ee02790d00b7 749 }
klauss 121:ee02790d00b7 750 }
klauss 121:ee02790d00b7 751 }
klauss 121:ee02790d00b7 752 }
klauss 121:ee02790d00b7 753
klauss 121:ee02790d00b7 754 // verifica o socket do prompt-UDP-ETH
klauss 121:ee02790d00b7 755 if( FD_ISSET( udp_client.get_fd(), &fdSet ) ) {
klauss 121:ee02790d00b7 756 char to_prompt_process[ PROMPT_UDP_COMMAND_SIZE ];
klauss 121:ee02790d00b7 757 for( register int i = 0; i < PROMPT_UDP_COMMAND_SIZE; i++ ) to_prompt_process[ i ] = 0;
klauss 121:ee02790d00b7 758
klauss 121:ee02790d00b7 759 int prompt_process_msg_rcv = udp_client.receiveFrom( udp_server, to_prompt_process, ( sizeof( to_prompt_process ) - 1 ) );
klauss 121:ee02790d00b7 760
klauss 121:ee02790d00b7 761 to_prompt_process[ prompt_process_msg_rcv ] = 0;
klauss 121:ee02790d00b7 762 if( prompt_process_msg_rcv == -1 )
klauss 121:ee02790d00b7 763 {
klauss 121:ee02790d00b7 764 if( debug_reconnect ) send_msg("Reconnect Prompt Process");
klauss 121:ee02790d00b7 765 reconnect_udp_prompt_process();
klauss 121:ee02790d00b7 766 miss_prompt_udp_rcv_pkg++;
klauss 121:ee02790d00b7 767 }
klauss 121:ee02790d00b7 768 else if( prompt_process_msg_rcv > 0 )
klauss 121:ee02790d00b7 769 {
klauss 121:ee02790d00b7 770 udp_query = true;
klauss 121:ee02790d00b7 771 prompt_process( to_prompt_process, prompt_process_msg_rcv );
klauss 121:ee02790d00b7 772 }
klauss 121:ee02790d00b7 773 }
klauss 121:ee02790d00b7 774
klauss 121:ee02790d00b7 775 // verifica o socket do watchdog
klauss 124:c1b6c893e1c3 776 if ( FD_ISSET ( udp_wdt_client.get_fd(), &fdSet ) )
klauss 124:c1b6c893e1c3 777 {
klauss 122:480c44b0e205 778 const uint16_t WAKE_MSG_SIZE = 768;
klauss 122:480c44b0e205 779 static char wake_msg [ WAKE_MSG_SIZE ];
klauss 122:480c44b0e205 780
klauss 122:480c44b0e205 781 for ( register uint16_t i = 0; i < WAKE_MSG_SIZE; i ++ ) wake_msg [ i ] = 0;
klauss 122:480c44b0e205 782
klauss 121:ee02790d00b7 783 Endpoint udp_wdt_server;
klauss 121:ee02790d00b7 784
klauss 121:ee02790d00b7 785 int wake_msg_rcv = udp_wdt_client.receiveFrom( udp_wdt_server, wake_msg, sizeof( wake_msg ) );
klauss 121:ee02790d00b7 786
klauss 122:480c44b0e205 787 if ( dmissed_wdt ) debug_msg("wake_msg_rcv :: %d -- wake_msg :: %s", wake_msg_rcv, wake_msg );
klauss 122:480c44b0e205 788
klauss 121:ee02790d00b7 789 if( wake_msg_rcv == -1 )
klauss 121:ee02790d00b7 790 {
klauss 121:ee02790d00b7 791 if( debug_reconnect ) send_msg("Reconnect Extern wdt");
klauss 121:ee02790d00b7 792 reconnect_extern_wdt_socket();
klauss 121:ee02790d00b7 793 miss_wdt_send_pkg++;
klauss 121:ee02790d00b7 794 }
klauss 121:ee02790d00b7 795 else if( wake_msg_rcv > 0 )
klauss 121:ee02790d00b7 796 {
klauss 121:ee02790d00b7 797 if( !( strncmp( wake_msg, "alive", 5 ) ) ) {
klauss 121:ee02790d00b7 798 // Just ckeck but not set 'alive?'
klauss 121:ee02790d00b7 799 // 'alive*' - force wdt tick right now
klauss 121:ee02790d00b7 800 // Ckecking and set 'alive'
klauss 121:ee02790d00b7 801 bool question_alive = ( wake_msg[ 5 ] == '?' );
klauss 121:ee02790d00b7 802 if( wake_msg[ 5 ] == '*' ) wdt.kick();
klauss 121:ee02790d00b7 803
klauss 122:480c44b0e205 804 if ( dmissed_wdt ) if ( wake_msg [ 5 ] == '?' ) debug_msg("Recebi o alive ???");
klauss 122:480c44b0e205 805
klauss 122:480c44b0e205 806 snprintf( wake_msg, WAKE_MSG_SIZE - 1,"wdt:%u,%u,%u,%c,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u:",
klauss 121:ee02790d00b7 807 uptime,
klauss 121:ee02790d00b7 808 invite_counter,
klauss 121:ee02790d00b7 809 external_wdt,
klauss 121:ee02790d00b7 810 ( wdt.WatchdogCausedReset() ) ? '1' : '0',
klauss 121:ee02790d00b7 811 cb_new_counter,
klauss 121:ee02790d00b7 812 v_cb->size(),
klauss 121:ee02790d00b7 813 ts->remain_timeslices(),
klauss 121:ee02790d00b7 814 sip_socket_send_failure,
klauss 121:ee02790d00b7 815 v_call->size(),
klauss 121:ee02790d00b7 816 pkg_cksok,
klauss 121:ee02790d00b7 817 pkg_ckserr,
klauss 121:ee02790d00b7 818 pkg_zero,
klauss 121:ee02790d00b7 819 out_of_range,
klauss 121:ee02790d00b7 820 missed_pkg,
klauss 121:ee02790d00b7 821 delayed_pkg_to_cb,
klauss 121:ee02790d00b7 822 cpld_pkg_tx_counter,
klauss 121:ee02790d00b7 823 cpld_pkg_rx_counter,
klauss 121:ee02790d00b7 824 eth_wdt,
klauss 121:ee02790d00b7 825 pkg_wdt,
klauss 121:ee02790d00b7 826 miss_fw_send_pkg,
klauss 121:ee02790d00b7 827 miss_prompt_udp_send_pkg,
klauss 121:ee02790d00b7 828 miss_sip_registry_send_pkg,
klauss 121:ee02790d00b7 829 miss_sip_invite_send_pkg,
klauss 121:ee02790d00b7 830 miss_sip_bye_send_pkg,
klauss 121:ee02790d00b7 831 miss_sip_unregistry_send_pkg,
klauss 121:ee02790d00b7 832 miss_sip_ok_send_pkg,
klauss 121:ee02790d00b7 833 miss_sip_rcv_bye_send_pkg,
klauss 121:ee02790d00b7 834 miss_wdt_send_pkg,
klauss 121:ee02790d00b7 835 miss_prompt_udp_send_pkg,
klauss 121:ee02790d00b7 836 miss_ftp_udp_send_pkg,
klauss 121:ee02790d00b7 837 miss_prompt_udp_rcv_pkg,
klauss 121:ee02790d00b7 838 miss_closk_send_pkg
klauss 121:ee02790d00b7 839 );
klauss 122:480c44b0e205 840 wake_msg[ WAKE_MSG_SIZE - 1 ] = 0;
klauss 122:480c44b0e205 841
klauss 122:480c44b0e205 842 int send = udp_wdt_client.sendTo ( udp_wdt_server, wake_msg, strlen( wake_msg ) );
klauss 126:1f90756250fb 843 if( send not_eq strlen( wake_msg ) )
klauss 121:ee02790d00b7 844 {
klauss 121:ee02790d00b7 845 if( debug_reconnect ) debug_msg("Reconnect Extern wdt (%d, %d)", send, strlen( wake_msg ) );
klauss 122:480c44b0e205 846 reconnect_extern_wdt_socket ();
klauss 121:ee02790d00b7 847 miss_wdt_send_pkg++;
klauss 121:ee02790d00b7 848 }
klauss 121:ee02790d00b7 849
klauss 121:ee02790d00b7 850 if( ( (!question_alive) && ( cb_new_counter <= MAX_CB_IN_A_BRANCH ) && ( cb_new_counter >= 2 ) ) ) {
klauss 121:ee02790d00b7 851 external_wdt = EXTERN_WDT_IDLE;
klauss 122:480c44b0e205 852 if ( dmissed_wdt ) debug_msg("kickando");
klauss 121:ee02790d00b7 853 }
klauss 122:480c44b0e205 854
klauss 122:480c44b0e205 855 if ( dmissed_wdt ) debug_msg("Mandei send = %d[::%s::] to [%s:%i]", send, wake_msg, udp_wdt_server.get_address (), udp_wdt_server.get_port () );
klauss 122:480c44b0e205 856
klauss 121:ee02790d00b7 857 } else if( !( strncmp( wake_msg, "reset", 5 ) ) ) {
klauss 121:ee02790d00b7 858 external_wdt = 0;
klauss 121:ee02790d00b7 859
klauss 121:ee02790d00b7 860 sprintf( wake_msg, "rst:%u:", uptime );
klauss 121:ee02790d00b7 861 int send = udp_wdt_client.sendTo( udp_wdt_server, wake_msg, strlen( wake_msg ) );
klauss 126:1f90756250fb 862 if( send not_eq strlen( wake_msg ) )
klauss 121:ee02790d00b7 863 {
klauss 121:ee02790d00b7 864 if( debug_reconnect ) send_msg("Reconnect Extern wdt");
klauss 121:ee02790d00b7 865 reconnect_extern_wdt_socket();
klauss 121:ee02790d00b7 866 miss_wdt_send_pkg++;
klauss 121:ee02790d00b7 867 }
klauss 121:ee02790d00b7 868 }
klauss 121:ee02790d00b7 869 }
klauss 121:ee02790d00b7 870 }
klauss 121:ee02790d00b7 871
klauss 121:ee02790d00b7 872 if( FD_ISSET( clock_sock.get_fd(), &fdSet ) )
klauss 121:ee02790d00b7 873 {
klauss 121:ee02790d00b7 874 update_clock ();
klauss 121:ee02790d00b7 875 }
klauss 121:ee02790d00b7 876 }
klauss 121:ee02790d00b7 877
klauss 121:ee02790d00b7 878 return ( ret );
klauss 121:ee02790d00b7 879 }
klauss 121:ee02790d00b7 880
klauss 121:ee02790d00b7 881 int show_cb_content ( void )
klauss 121:ee02790d00b7 882 {
klauss 121:ee02790d00b7 883 Call_Box * cb = find_CB ( v_cb, print_this_cb );
klauss 126:1f90756250fb 884 if ( cb not_eq NULL )
klauss 121:ee02790d00b7 885 {
klauss 121:ee02790d00b7 886 cb -> print_yourself ();
klauss 121:ee02790d00b7 887 }
klauss 121:ee02790d00b7 888 else
klauss 121:ee02790d00b7 889 {
klauss 121:ee02790d00b7 890 if( print_values )
klauss 121:ee02790d00b7 891 {
klauss 121:ee02790d00b7 892 debug_msg ("Objeto CBx ( %d ) nao encontrado", print_this_cb );
klauss 121:ee02790d00b7 893 }
klauss 121:ee02790d00b7 894 else
klauss 121:ee02790d00b7 895 {
klauss 121:ee02790d00b7 896 send_msg ("Objeto CBx ( %d ) nao encontrado", print_this_cb );
klauss 121:ee02790d00b7 897 }
klauss 121:ee02790d00b7 898 }
klauss 121:ee02790d00b7 899
klauss 121:ee02790d00b7 900 return ( 0 );
klauss 121:ee02790d00b7 901 }
klauss 121:ee02790d00b7 902
klauss 121:ee02790d00b7 903 int show_cb_content_all ( void )
klauss 121:ee02790d00b7 904 {
klauss 121:ee02790d00b7 905 if ( v_cb -> size () == 0 )
klauss 121:ee02790d00b7 906 {
klauss 121:ee02790d00b7 907 send_msg("known CBx :: 0");
klauss 121:ee02790d00b7 908 }
klauss 121:ee02790d00b7 909
klauss 121:ee02790d00b7 910 for ( register uint8_t i = 0; i < v_cb->size(); i++ )
klauss 121:ee02790d00b7 911 {
klauss 121:ee02790d00b7 912 Call_Box * cb = (Call_Box *)v_cb->get_element( i );
klauss 121:ee02790d00b7 913
klauss 126:1f90756250fb 914 if ( cb not_eq NULL )
klauss 121:ee02790d00b7 915 {
klauss 121:ee02790d00b7 916 cb -> print_yourself ();
klauss 121:ee02790d00b7 917 }
klauss 121:ee02790d00b7 918 else
klauss 121:ee02790d00b7 919 {
klauss 121:ee02790d00b7 920 if ( print_values ) debug_msg ("Objeto CBx ( %d ) nao encontrado", i );
klauss 121:ee02790d00b7 921 }
klauss 121:ee02790d00b7 922 }
klauss 121:ee02790d00b7 923
klauss 121:ee02790d00b7 924 return ( 0 );
klauss 121:ee02790d00b7 925 }
klauss 121:ee02790d00b7 926
klauss 121:ee02790d00b7 927 int show_rtp ( void )
klauss 121:ee02790d00b7 928 {
klauss 121:ee02790d00b7 929 send_msg(":: RTP :: %u", v_cb->size() );
klauss 121:ee02790d00b7 930
klauss 121:ee02790d00b7 931 int ext_list[ MAX_CB_IN_A_BRANCH ];
klauss 121:ee02790d00b7 932
klauss 121:ee02790d00b7 933 if( v_cb->size() >= 1 ) {
klauss 121:ee02790d00b7 934 for( register int i = 0; i < v_cb->size(); i++ )
klauss 121:ee02790d00b7 935 {
klauss 121:ee02790d00b7 936 ext_list[ i ] = ( ( Call_Box * )v_cb->get_element( i ) )->get_ext();
klauss 121:ee02790d00b7 937 }
klauss 121:ee02790d00b7 938 qsort( ext_list, v_cb->size(), sizeof( int ), ls_comp );
klauss 121:ee02790d00b7 939 }
klauss 121:ee02790d00b7 940
klauss 121:ee02790d00b7 941 for ( register uint8_t i = 0; i < v_cb->size(); i++ )
klauss 121:ee02790d00b7 942 {
klauss 121:ee02790d00b7 943 Call_Box * cb = find_CB( v_cb, ext_list[ i ] );
klauss 126:1f90756250fb 944 if( cb not_eq NULL )
klauss 121:ee02790d00b7 945 {
klauss 121:ee02790d00b7 946 send_msg("CBX ( %d, %d ) - SIP ( %d, %d ) - RTP ( %d )",
klauss 121:ee02790d00b7 947 cb -> get_ext (),
klauss 121:ee02790d00b7 948 cb -> get_port (),
klauss 121:ee02790d00b7 949 cb -> get_sip_ext (),
klauss 121:ee02790d00b7 950 cb -> get_sip_port (),
klauss 121:ee02790d00b7 951 cb -> get_rtp_port ()
klauss 121:ee02790d00b7 952 );
klauss 121:ee02790d00b7 953 }
klauss 121:ee02790d00b7 954 }
klauss 121:ee02790d00b7 955
klauss 121:ee02790d00b7 956 return ( 0 );
klauss 121:ee02790d00b7 957 }
klauss 121:ee02790d00b7 958
klauss 121:ee02790d00b7 959 int fuck_rtp ( Vector * v_cb )
klauss 121:ee02790d00b7 960 {
klauss 121:ee02790d00b7 961 Call_Box * cb = find_CB( v_cb, frtp_target );
klauss 126:1f90756250fb 962 if ( cb not_eq NULL )
klauss 121:ee02790d00b7 963 {
klauss 121:ee02790d00b7 964 cb -> set_rtp_port ( -1008789032 );
klauss 121:ee02790d00b7 965 }
klauss 121:ee02790d00b7 966 else
klauss 121:ee02790d00b7 967 {
klauss 121:ee02790d00b7 968 debug_msg("frtp fail");
klauss 121:ee02790d00b7 969 }
klauss 121:ee02790d00b7 970
klauss 121:ee02790d00b7 971 return ( 0 );
klauss 121:ee02790d00b7 972 }
klauss 121:ee02790d00b7 973
klauss 121:ee02790d00b7 974 int show_hex_cb_content ( void )
klauss 121:ee02790d00b7 975 {
klauss 121:ee02790d00b7 976 uint8_t * ptr = ( uint8_t * ) find_CB ( v_cb, print_hex_this_cb );
klauss 121:ee02790d00b7 977
klauss 126:1f90756250fb 978 if ( ptr not_eq NULL )
klauss 121:ee02790d00b7 979 {
klauss 121:ee02790d00b7 980 send_msg ("Values :: %p\r\n", ( void *) ptr );
klauss 121:ee02790d00b7 981 for ( register int i = 0; i < sizeof( Call_Box ); i++ )
klauss 121:ee02790d00b7 982 {
klauss 121:ee02790d00b7 983 if( debug_uart3 ) pc.printf("%x", *ptr++ );
klauss 121:ee02790d00b7 984
klauss 121:ee02790d00b7 985 if ( ( i % 32 ) == 0 )
klauss 121:ee02790d00b7 986 {
klauss 126:1f90756250fb 987 if( i not_eq 0 )
klauss 121:ee02790d00b7 988 {
klauss 121:ee02790d00b7 989 if( debug_uart3 ) pc.printf("\n\r> ");
klauss 121:ee02790d00b7 990 }
klauss 121:ee02790d00b7 991 else
klauss 121:ee02790d00b7 992 {
klauss 121:ee02790d00b7 993 if( debug_uart3 ) pc.printf(" ");
klauss 121:ee02790d00b7 994 }
klauss 121:ee02790d00b7 995 }
klauss 121:ee02790d00b7 996 else
klauss 121:ee02790d00b7 997 {
klauss 121:ee02790d00b7 998 if( debug_uart3 ) pc.printf(" ");
klauss 121:ee02790d00b7 999 }
klauss 121:ee02790d00b7 1000 }
klauss 121:ee02790d00b7 1001 if ( debug_uart3 ) pc.printf("\n\r> ");
klauss 121:ee02790d00b7 1002
klauss 121:ee02790d00b7 1003 if ( tcp_session ) {
klauss 121:ee02790d00b7 1004 char aux[ ( sizeof( Call_Box ) * 3 ) + 3 ];
klauss 121:ee02790d00b7 1005
klauss 121:ee02790d00b7 1006 for ( register int i = 0; i < ( sizeof( Call_Box ) * 3 ) + 3 ; i++ ) aux [ i ] = 0;
klauss 121:ee02790d00b7 1007
klauss 121:ee02790d00b7 1008 uint8_t * ptr = ( uint8_t * ) find_CB ( v_cb, print_hex_this_cb );
klauss 121:ee02790d00b7 1009
klauss 121:ee02790d00b7 1010 for ( register int i = 0; i < sizeof( Call_Box ); i++ )
klauss 121:ee02790d00b7 1011 {
klauss 121:ee02790d00b7 1012 char tmp[ 16 ];
klauss 121:ee02790d00b7 1013 sprintf( tmp, "%x ", *ptr++ );
klauss 121:ee02790d00b7 1014 strcat( aux, tmp );
klauss 121:ee02790d00b7 1015 }
klauss 121:ee02790d00b7 1016
klauss 121:ee02790d00b7 1017 strcat( aux, "\n\r\0" );
klauss 121:ee02790d00b7 1018 tcp_client.send_all( ( char *)aux, strlen( (char * )aux ) );
klauss 121:ee02790d00b7 1019 tcp_client.send_all( "\r\n> ", strlen( "\r\n> " ) );
klauss 121:ee02790d00b7 1020 }
klauss 121:ee02790d00b7 1021 }
klauss 121:ee02790d00b7 1022 else
klauss 121:ee02790d00b7 1023 {
klauss 121:ee02790d00b7 1024 if ( print_values ) debug_msg ("Objeto CBx ( %d ) nao encontrado", print_this_cb );
klauss 121:ee02790d00b7 1025 }
klauss 121:ee02790d00b7 1026
klauss 121:ee02790d00b7 1027 return ( 0 );
klauss 121:ee02790d00b7 1028 }
klauss 121:ee02790d00b7 1029
klauss 121:ee02790d00b7 1030 int show_hex_cb_content_all ()
klauss 121:ee02790d00b7 1031 {
klauss 121:ee02790d00b7 1032 if ( v_cb -> size () == 0 )
klauss 121:ee02790d00b7 1033 {
klauss 121:ee02790d00b7 1034 send_msg("known CBx :: 0");
klauss 121:ee02790d00b7 1035 }
klauss 121:ee02790d00b7 1036
klauss 121:ee02790d00b7 1037 for ( register uint8_t j = 0; j < v_cb->size(); j++ )
klauss 121:ee02790d00b7 1038 {
klauss 121:ee02790d00b7 1039 uint8_t * ptr = ( uint8_t * ) v_cb->get_element( j );
klauss 121:ee02790d00b7 1040
klauss 126:1f90756250fb 1041 if ( ptr not_eq NULL )
klauss 121:ee02790d00b7 1042 {
klauss 121:ee02790d00b7 1043 send_msg ("Values :: %p\r\n", ( void *) ptr );
klauss 121:ee02790d00b7 1044 for ( register int i = 0; i < sizeof( Call_Box ); i++ )
klauss 121:ee02790d00b7 1045 {
klauss 121:ee02790d00b7 1046 if( debug_uart3 ) pc.printf("%x", *ptr++ );
klauss 121:ee02790d00b7 1047
klauss 121:ee02790d00b7 1048 if ( ( i % 32 ) == 0 )
klauss 121:ee02790d00b7 1049 {
klauss 126:1f90756250fb 1050 if( i not_eq 0 )
klauss 121:ee02790d00b7 1051 {
klauss 121:ee02790d00b7 1052 if( debug_uart3 ) pc.printf("\n\r> ");
klauss 121:ee02790d00b7 1053 }
klauss 121:ee02790d00b7 1054 else
klauss 121:ee02790d00b7 1055 {
klauss 121:ee02790d00b7 1056 if( debug_uart3 ) pc.printf(" ");
klauss 121:ee02790d00b7 1057 }
klauss 121:ee02790d00b7 1058 }
klauss 121:ee02790d00b7 1059 else
klauss 121:ee02790d00b7 1060 {
klauss 121:ee02790d00b7 1061 if( debug_uart3 ) pc.printf(" ");
klauss 121:ee02790d00b7 1062 }
klauss 121:ee02790d00b7 1063 }
klauss 121:ee02790d00b7 1064 if ( debug_uart3 ) pc.printf("\n\r> ");
klauss 121:ee02790d00b7 1065
klauss 121:ee02790d00b7 1066 if ( tcp_session ) {
klauss 121:ee02790d00b7 1067 char aux[ ( sizeof( Call_Box ) * 3 ) + 3 ];
klauss 121:ee02790d00b7 1068
klauss 121:ee02790d00b7 1069 for ( register int i = 0; i < ( sizeof( Call_Box ) * 3 ) + 3 ; i++ ) aux [ i ] = 0;
klauss 121:ee02790d00b7 1070
klauss 121:ee02790d00b7 1071 uint8_t * ptr = ( uint8_t * ) v_cb->get_element( j );
klauss 121:ee02790d00b7 1072
klauss 121:ee02790d00b7 1073 for ( register int i = 0; i < sizeof( Call_Box ); i++ )
klauss 121:ee02790d00b7 1074 {
klauss 121:ee02790d00b7 1075 char tmp[ 16 ];
klauss 121:ee02790d00b7 1076 sprintf( tmp, "%x ", *ptr++ );
klauss 121:ee02790d00b7 1077 strcat( aux, tmp );
klauss 121:ee02790d00b7 1078 }
klauss 121:ee02790d00b7 1079
klauss 121:ee02790d00b7 1080 strcat( aux, "\n\r\0" );
klauss 121:ee02790d00b7 1081 tcp_client.send_all( ( char *)aux, strlen( (char * )aux ) );
klauss 121:ee02790d00b7 1082 tcp_client.send_all( "\r\n> ", strlen( "\r\n> " ) );
klauss 121:ee02790d00b7 1083 }
klauss 121:ee02790d00b7 1084 }
klauss 121:ee02790d00b7 1085 else
klauss 121:ee02790d00b7 1086 {
klauss 121:ee02790d00b7 1087 if ( print_values )
klauss 121:ee02790d00b7 1088 {
klauss 121:ee02790d00b7 1089 debug_msg ("Objeto CBx ( %d ) nao encontrado", j );
klauss 121:ee02790d00b7 1090 }
klauss 121:ee02790d00b7 1091 else
klauss 121:ee02790d00b7 1092 {
klauss 121:ee02790d00b7 1093 send_msg ("Objeto CBx ( %d ) nao encontrado", j );
klauss 121:ee02790d00b7 1094 }
klauss 121:ee02790d00b7 1095 }
klauss 121:ee02790d00b7 1096 }
klauss 121:ee02790d00b7 1097
klauss 121:ee02790d00b7 1098 return ( 0 );
klauss 121:ee02790d00b7 1099 }
klauss 121:ee02790d00b7 1100
klauss 121:ee02790d00b7 1101
klauss 121:ee02790d00b7 1102 int show_cB_sip ( void )
klauss 121:ee02790d00b7 1103 {
klauss 121:ee02790d00b7 1104 Call_Box * cb = find_CB ( v_cb, print_this_sip );
klauss 121:ee02790d00b7 1105
klauss 126:1f90756250fb 1106 if ( cb not_eq NULL )
klauss 121:ee02790d00b7 1107 {
klauss 121:ee02790d00b7 1108 if( cb -> sip_print_yourself () == -1 )
klauss 121:ee02790d00b7 1109 {
klauss 121:ee02790d00b7 1110 if( print_values )
klauss 121:ee02790d00b7 1111 {
klauss 121:ee02790d00b7 1112 debug_msg("Sip param of %d equals NULL", print_this_sip );
klauss 121:ee02790d00b7 1113 }
klauss 121:ee02790d00b7 1114 else
klauss 121:ee02790d00b7 1115 {
klauss 121:ee02790d00b7 1116 send_msg("Sip param of %d equals NULL", print_this_sip );
klauss 121:ee02790d00b7 1117 }
klauss 121:ee02790d00b7 1118 }
klauss 121:ee02790d00b7 1119 }
klauss 121:ee02790d00b7 1120 else
klauss 121:ee02790d00b7 1121 {
klauss 121:ee02790d00b7 1122 if ( print_values )
klauss 121:ee02790d00b7 1123 {
klauss 121:ee02790d00b7 1124 debug_msg ("Objeto CBx ( %d ) nao encontrado", print_this_cb );
klauss 121:ee02790d00b7 1125 }
klauss 121:ee02790d00b7 1126 else
klauss 121:ee02790d00b7 1127 {
klauss 121:ee02790d00b7 1128 send_msg ("Objeto CBx ( %d ) nao encontrado", print_this_cb );
klauss 121:ee02790d00b7 1129 }
klauss 121:ee02790d00b7 1130 }
klauss 121:ee02790d00b7 1131
klauss 121:ee02790d00b7 1132 return ( 0 );
klauss 121:ee02790d00b7 1133 }
klauss 121:ee02790d00b7 1134 int show_cB_sip_all ( void )
klauss 121:ee02790d00b7 1135 {
klauss 121:ee02790d00b7 1136 if ( v_cb -> size () == 0 )
klauss 121:ee02790d00b7 1137 {
klauss 121:ee02790d00b7 1138 send_msg("known CBx :: 0");
klauss 121:ee02790d00b7 1139 }
klauss 121:ee02790d00b7 1140
klauss 121:ee02790d00b7 1141 for ( register uint8_t i = 0; i < v_cb->size(); i++ )
klauss 121:ee02790d00b7 1142 {
klauss 121:ee02790d00b7 1143 Call_Box * cb = (Call_Box *)v_cb->get_element( i );
klauss 121:ee02790d00b7 1144
klauss 126:1f90756250fb 1145 if ( cb not_eq NULL )
klauss 121:ee02790d00b7 1146 {
klauss 121:ee02790d00b7 1147 if ( cb -> sip_print_yourself () == -1 )
klauss 121:ee02790d00b7 1148 {
klauss 121:ee02790d00b7 1149 if ( print_values )
klauss 121:ee02790d00b7 1150 {
klauss 121:ee02790d00b7 1151 debug_msg ("Sip param of %d equals NULL", print_this_sip );
klauss 121:ee02790d00b7 1152 }
klauss 121:ee02790d00b7 1153 else
klauss 121:ee02790d00b7 1154 {
klauss 121:ee02790d00b7 1155 send_msg ("Sip param of %d equals NULL", print_this_sip );
klauss 121:ee02790d00b7 1156 }
klauss 121:ee02790d00b7 1157 }
klauss 121:ee02790d00b7 1158 }
klauss 121:ee02790d00b7 1159 else
klauss 121:ee02790d00b7 1160 {
klauss 121:ee02790d00b7 1161 if( print_values )
klauss 121:ee02790d00b7 1162 {
klauss 121:ee02790d00b7 1163 debug_msg ("CBx %d not found", print_this_sip );
klauss 121:ee02790d00b7 1164 }
klauss 121:ee02790d00b7 1165 else
klauss 121:ee02790d00b7 1166 {
klauss 121:ee02790d00b7 1167 send_msg ("CBx %d not found", print_this_sip );
klauss 121:ee02790d00b7 1168 }
klauss 121:ee02790d00b7 1169 }
klauss 121:ee02790d00b7 1170 }
klauss 121:ee02790d00b7 1171 return ( 0 );
klauss 121:ee02790d00b7 1172 }
klauss 121:ee02790d00b7 1173
klauss 121:ee02790d00b7 1174 int show_cB_hex_sip ( void )
klauss 121:ee02790d00b7 1175 {
klauss 121:ee02790d00b7 1176 uint8_t * ptr = NULL;
klauss 121:ee02790d00b7 1177
klauss 121:ee02790d00b7 1178 Call_Box * cb = find_CB ( v_cb, print_hex_this_sip );
klauss 126:1f90756250fb 1179 if( cb not_eq NULL )
klauss 121:ee02790d00b7 1180 {
klauss 121:ee02790d00b7 1181 ptr = ( uint8_t * ) cb -> get_sip ();
klauss 121:ee02790d00b7 1182 }
klauss 121:ee02790d00b7 1183
klauss 126:1f90756250fb 1184 if ( ptr not_eq NULL )
klauss 121:ee02790d00b7 1185 {
klauss 121:ee02790d00b7 1186 send_msg ("Values :: %p\r\n", ( void *) ptr );
klauss 121:ee02790d00b7 1187 for ( register int i = 0; i < sizeof( Sip ); i++ )
klauss 121:ee02790d00b7 1188 {
klauss 121:ee02790d00b7 1189 if( debug_uart3 ) pc.printf("%x", *ptr++ );
klauss 121:ee02790d00b7 1190
klauss 121:ee02790d00b7 1191 if ( ( i % 32 ) == 0 )
klauss 121:ee02790d00b7 1192 {
klauss 126:1f90756250fb 1193 if( i not_eq 0 )
klauss 121:ee02790d00b7 1194 {
klauss 121:ee02790d00b7 1195 if( debug_uart3 ) pc.printf("\n\r> ");
klauss 121:ee02790d00b7 1196 }
klauss 121:ee02790d00b7 1197 else
klauss 121:ee02790d00b7 1198 {
klauss 121:ee02790d00b7 1199 if( debug_uart3 ) pc.printf(" ");
klauss 121:ee02790d00b7 1200 }
klauss 121:ee02790d00b7 1201 }
klauss 121:ee02790d00b7 1202 else
klauss 121:ee02790d00b7 1203 {
klauss 121:ee02790d00b7 1204 if( debug_uart3 ) pc.printf(" ");
klauss 121:ee02790d00b7 1205 }
klauss 121:ee02790d00b7 1206 }
klauss 121:ee02790d00b7 1207 if ( debug_uart3 ) pc.printf("\n\r> ");
klauss 121:ee02790d00b7 1208
klauss 121:ee02790d00b7 1209 if ( tcp_session ) {
klauss 121:ee02790d00b7 1210 char aux[ ( 32 * 3 ) + 5 ];
klauss 121:ee02790d00b7 1211
klauss 121:ee02790d00b7 1212 for ( register int i = 0; i < ( 32 * 3 ) + 5 ; i++ ) aux [ i ] = 0;
klauss 121:ee02790d00b7 1213
klauss 121:ee02790d00b7 1214 ptr = NULL;
klauss 121:ee02790d00b7 1215
klauss 121:ee02790d00b7 1216 print_hex_sip_var = false;
klauss 121:ee02790d00b7 1217 Call_Box * cb = find_CB ( v_cb, print_hex_this_sip );
klauss 126:1f90756250fb 1218 if( cb not_eq NULL )
klauss 121:ee02790d00b7 1219 {
klauss 121:ee02790d00b7 1220 ptr = ( uint8_t * ) cb -> get_sip ();
klauss 121:ee02790d00b7 1221 }
klauss 121:ee02790d00b7 1222
klauss 126:1f90756250fb 1223 if ( ptr not_eq NULL )
klauss 121:ee02790d00b7 1224 {
klauss 121:ee02790d00b7 1225 bool finished = false;
klauss 121:ee02790d00b7 1226 volatile int i = 0;
klauss 121:ee02790d00b7 1227 int count = 0;
klauss 121:ee02790d00b7 1228 Timer dont_overwrite_tcp_buffer;
klauss 121:ee02790d00b7 1229 dont_overwrite_tcp_buffer.reset ();
klauss 121:ee02790d00b7 1230 dont_overwrite_tcp_buffer.start ();
klauss 121:ee02790d00b7 1231
klauss 121:ee02790d00b7 1232 while ( !finished )
klauss 121:ee02790d00b7 1233 {
klauss 121:ee02790d00b7 1234 if( dont_overwrite_tcp_buffer.read_ms () >= 500 )
klauss 121:ee02790d00b7 1235 {
klauss 121:ee02790d00b7 1236 dont_overwrite_tcp_buffer.reset();
klauss 121:ee02790d00b7 1237 for ( ; i < sizeof( Sip ); i++ )
klauss 121:ee02790d00b7 1238 {
klauss 121:ee02790d00b7 1239 char tmp[ 16 ];
klauss 121:ee02790d00b7 1240 sprintf( tmp, "%x ", *ptr++ );
klauss 121:ee02790d00b7 1241 strcat( aux, tmp );
klauss 121:ee02790d00b7 1242 count++;
klauss 121:ee02790d00b7 1243
klauss 121:ee02790d00b7 1244 if ( count >= 32 )
klauss 121:ee02790d00b7 1245 {
klauss 121:ee02790d00b7 1246 count = 0;
klauss 121:ee02790d00b7 1247 i++;
klauss 121:ee02790d00b7 1248 break;
klauss 121:ee02790d00b7 1249 }
klauss 121:ee02790d00b7 1250 }
klauss 121:ee02790d00b7 1251 strcat ( aux, "\n\r\0" );
klauss 121:ee02790d00b7 1252 tcp_client.send_all ( ( char *)aux, strlen( (char * )aux ) );
klauss 121:ee02790d00b7 1253 if ( i >= sizeof ( Sip ) ) finished = true;
klauss 121:ee02790d00b7 1254 strcpy ( aux, "\0" );
klauss 121:ee02790d00b7 1255 }
klauss 121:ee02790d00b7 1256 }
klauss 121:ee02790d00b7 1257 dont_overwrite_tcp_buffer.reset();
klauss 121:ee02790d00b7 1258 dont_overwrite_tcp_buffer.stop();
klauss 121:ee02790d00b7 1259 tcp_client.send_all ( "\r\n> ", strlen( "\r\n> " ) );
klauss 121:ee02790d00b7 1260 }
klauss 121:ee02790d00b7 1261 }
klauss 121:ee02790d00b7 1262 }
klauss 121:ee02790d00b7 1263 else
klauss 121:ee02790d00b7 1264 {
klauss 121:ee02790d00b7 1265 if ( print_values ) debug_msg ("Objeto CBx ( %d ) nao encontrado", print_this_cb );
klauss 121:ee02790d00b7 1266 }
klauss 121:ee02790d00b7 1267
klauss 121:ee02790d00b7 1268
klauss 121:ee02790d00b7 1269 return ( 0 );
klauss 121:ee02790d00b7 1270 }
klauss 121:ee02790d00b7 1271
klauss 121:ee02790d00b7 1272 int show_rtp_on_call ( void )
klauss 121:ee02790d00b7 1273 {
klauss 121:ee02790d00b7 1274 send_msg(":: CAll RTP :: %u", v_call->size() );
klauss 121:ee02790d00b7 1275
klauss 121:ee02790d00b7 1276 for( register uint8_t i = 0; i < v_call->size(); i++ ) {
klauss 121:ee02790d00b7 1277 VZ_call * call = ( VZ_call * )v_call->get_element( i );
klauss 126:1f90756250fb 1278 if( call not_eq NULL )
klauss 121:ee02790d00b7 1279 {
klauss 121:ee02790d00b7 1280 send_msg("CBX ( %d, %d ) - Server ( %d, %d )",
klauss 121:ee02790d00b7 1281 call->get_cb_ext(),
klauss 121:ee02790d00b7 1282 call->get_cb_port(),
klauss 121:ee02790d00b7 1283 call->get_rtp_server_ext(),
klauss 121:ee02790d00b7 1284 call->get_rtp_server_port()
klauss 121:ee02790d00b7 1285 );
klauss 121:ee02790d00b7 1286 }
klauss 121:ee02790d00b7 1287 }
klauss 121:ee02790d00b7 1288
klauss 121:ee02790d00b7 1289 return ( 0 );
klauss 121:ee02790d00b7 1290 }
klauss 121:ee02790d00b7 1291
klauss 121:ee02790d00b7 1292 int show_call ( void )
klauss 121:ee02790d00b7 1293 {
klauss 126:1f90756250fb 1294 VZ_call * call = find_Call ( v_call, print_this_call );
klauss 121:ee02790d00b7 1295
klauss 126:1f90756250fb 1296 if ( call not_eq NULL )
klauss 121:ee02790d00b7 1297 {
klauss 121:ee02790d00b7 1298 send_msg ("Values :: %p\r\n", ( void *) call );
klauss 121:ee02790d00b7 1299 call -> print_yourself ();
klauss 121:ee02790d00b7 1300 }
klauss 121:ee02790d00b7 1301 else
klauss 121:ee02790d00b7 1302 {
klauss 121:ee02790d00b7 1303 if( print_values )
klauss 121:ee02790d00b7 1304 {
klauss 121:ee02790d00b7 1305 debug_msg("Call %d not found", print_this_call );
klauss 121:ee02790d00b7 1306 }
klauss 121:ee02790d00b7 1307 else
klauss 121:ee02790d00b7 1308 {
klauss 121:ee02790d00b7 1309 send_msg("Call %d not found", print_this_call );
klauss 121:ee02790d00b7 1310 }
klauss 121:ee02790d00b7 1311 }
klauss 121:ee02790d00b7 1312
klauss 121:ee02790d00b7 1313 return ( 0 );
klauss 121:ee02790d00b7 1314 }
klauss 121:ee02790d00b7 1315
klauss 121:ee02790d00b7 1316 int show_hex_call ( void )
klauss 121:ee02790d00b7 1317 {
klauss 126:1f90756250fb 1318 VZ_call * call = find_Call ( v_call, print_hex_this_call );
klauss 121:ee02790d00b7 1319
klauss 121:ee02790d00b7 1320 uint8_t * ptr = NULL;
klauss 126:1f90756250fb 1321 if( call not_eq NULL )
klauss 121:ee02790d00b7 1322 {
klauss 121:ee02790d00b7 1323 ptr = ( uint8_t * ) call;
klauss 121:ee02790d00b7 1324 }
klauss 121:ee02790d00b7 1325
klauss 126:1f90756250fb 1326 if ( ptr not_eq NULL )
klauss 121:ee02790d00b7 1327 {
klauss 121:ee02790d00b7 1328 send_msg ("Values :: %p\r\n", ( void *) ptr );
klauss 121:ee02790d00b7 1329 for ( register int i = 0; i < sizeof( VZ_call ); i++ )
klauss 121:ee02790d00b7 1330 {
klauss 121:ee02790d00b7 1331 if( debug_uart3 ) pc.printf("%x", *ptr++ );
klauss 121:ee02790d00b7 1332
klauss 121:ee02790d00b7 1333 if ( ( i % 32 ) == 0 )
klauss 121:ee02790d00b7 1334 {
klauss 126:1f90756250fb 1335 if( i not_eq 0 )
klauss 121:ee02790d00b7 1336 {
klauss 121:ee02790d00b7 1337 if( debug_uart3 ) pc.printf("\n\r> ");
klauss 121:ee02790d00b7 1338 }
klauss 121:ee02790d00b7 1339 else
klauss 121:ee02790d00b7 1340 {
klauss 121:ee02790d00b7 1341 if( debug_uart3 ) pc.printf(" ");
klauss 121:ee02790d00b7 1342 }
klauss 121:ee02790d00b7 1343 }
klauss 121:ee02790d00b7 1344 else
klauss 121:ee02790d00b7 1345 {
klauss 121:ee02790d00b7 1346 if( debug_uart3 ) pc.printf(" ");
klauss 121:ee02790d00b7 1347 }
klauss 121:ee02790d00b7 1348 }
klauss 121:ee02790d00b7 1349 if ( debug_uart3 ) pc.printf("\n\r> ");
klauss 121:ee02790d00b7 1350
klauss 121:ee02790d00b7 1351 if ( tcp_session ) {
klauss 121:ee02790d00b7 1352 char aux[ ( 32 * 3 ) + 5 ];
klauss 121:ee02790d00b7 1353
klauss 121:ee02790d00b7 1354 for ( register int i = 0; i < ( 32 * 3 ) + 5 ; i++ ) aux [ i ] = 0;
klauss 121:ee02790d00b7 1355
klauss 121:ee02790d00b7 1356 ptr = NULL;
klauss 121:ee02790d00b7 1357
klauss 126:1f90756250fb 1358 VZ_call * call = find_Call ( v_call, print_hex_this_call );
klauss 121:ee02790d00b7 1359
klauss 121:ee02790d00b7 1360 uint8_t * ptr = NULL;
klauss 126:1f90756250fb 1361 if( call not_eq NULL )
klauss 121:ee02790d00b7 1362 {
klauss 121:ee02790d00b7 1363 ptr = ( uint8_t * ) call;
klauss 121:ee02790d00b7 1364 }
klauss 121:ee02790d00b7 1365
klauss 126:1f90756250fb 1366 if ( ptr not_eq NULL )
klauss 121:ee02790d00b7 1367 {
klauss 121:ee02790d00b7 1368 bool finished = false;
klauss 121:ee02790d00b7 1369 volatile int i = 0;
klauss 121:ee02790d00b7 1370 int count = 0;
klauss 121:ee02790d00b7 1371 Timer dont_overwrite_tcp_buffer;
klauss 121:ee02790d00b7 1372 dont_overwrite_tcp_buffer.reset ();
klauss 121:ee02790d00b7 1373 dont_overwrite_tcp_buffer.start ();
klauss 121:ee02790d00b7 1374
klauss 121:ee02790d00b7 1375 while ( !finished )
klauss 121:ee02790d00b7 1376 {
klauss 121:ee02790d00b7 1377 if( dont_overwrite_tcp_buffer.read_ms () >= 20 )
klauss 121:ee02790d00b7 1378 {
klauss 121:ee02790d00b7 1379 dont_overwrite_tcp_buffer.reset();
klauss 121:ee02790d00b7 1380 for ( ; i < sizeof( VZ_call ); i++ )
klauss 121:ee02790d00b7 1381 {
klauss 121:ee02790d00b7 1382 char tmp[ 16 ];
klauss 121:ee02790d00b7 1383 sprintf( tmp, "%x ", *ptr++ );
klauss 121:ee02790d00b7 1384 strcat( aux, tmp );
klauss 121:ee02790d00b7 1385 count++;
klauss 121:ee02790d00b7 1386
klauss 121:ee02790d00b7 1387 if ( count >= 32 )
klauss 121:ee02790d00b7 1388 {
klauss 121:ee02790d00b7 1389 count = 0;
klauss 121:ee02790d00b7 1390 i++;
klauss 121:ee02790d00b7 1391 break;
klauss 121:ee02790d00b7 1392 }
klauss 121:ee02790d00b7 1393 }
klauss 121:ee02790d00b7 1394 strcat ( aux, "\n\r\0" );
klauss 121:ee02790d00b7 1395 tcp_client.send_all ( ( char *)aux, strlen( (char * )aux ) );
klauss 121:ee02790d00b7 1396 if ( i >= sizeof ( VZ_call ) ) finished = true;
klauss 121:ee02790d00b7 1397 strcpy ( aux, "\0" );
klauss 121:ee02790d00b7 1398 }
klauss 121:ee02790d00b7 1399 }
klauss 121:ee02790d00b7 1400 dont_overwrite_tcp_buffer.reset();
klauss 121:ee02790d00b7 1401 dont_overwrite_tcp_buffer.stop();
klauss 121:ee02790d00b7 1402 tcp_client.send_all ( "\r\n> ", strlen( "\r\n> " ) );
klauss 121:ee02790d00b7 1403 }
klauss 121:ee02790d00b7 1404 }
klauss 121:ee02790d00b7 1405 }
klauss 121:ee02790d00b7 1406 else
klauss 121:ee02790d00b7 1407 {
klauss 121:ee02790d00b7 1408 if( print_values )
klauss 121:ee02790d00b7 1409 {
klauss 121:ee02790d00b7 1410 debug_msg("Call %d not found", print_this_call );
klauss 121:ee02790d00b7 1411 }
klauss 121:ee02790d00b7 1412 else
klauss 121:ee02790d00b7 1413 {
klauss 121:ee02790d00b7 1414 send_msg("Call %d not found", print_this_call );
klauss 121:ee02790d00b7 1415 }
klauss 121:ee02790d00b7 1416 }
klauss 121:ee02790d00b7 1417
klauss 121:ee02790d00b7 1418 return ( 0 );
klauss 121:ee02790d00b7 1419 }
klauss 121:ee02790d00b7 1420
klauss 121:ee02790d00b7 1421
klauss 121:ee02790d00b7 1422 int show_cb_rtp ( void )
klauss 121:ee02790d00b7 1423 {
klauss 126:1f90756250fb 1424 VZ_call * call = find_Call ( v_call, print_hex_this_rtp );
klauss 121:ee02790d00b7 1425
klauss 121:ee02790d00b7 1426 uint8_t * ptr = NULL;
klauss 126:1f90756250fb 1427 if( call not_eq NULL )
klauss 121:ee02790d00b7 1428 {
klauss 121:ee02790d00b7 1429 ptr = ( uint8_t * ) call -> check_rtp ();
klauss 121:ee02790d00b7 1430 }
klauss 121:ee02790d00b7 1431
klauss 126:1f90756250fb 1432 if ( ptr not_eq NULL )
klauss 121:ee02790d00b7 1433 {
klauss 121:ee02790d00b7 1434 send_msg ("Values :: %p\r\n", ( void *) ptr );
klauss 121:ee02790d00b7 1435 for ( register int i = 0; i < sizeof( RTP ); i++ )
klauss 121:ee02790d00b7 1436 {
klauss 121:ee02790d00b7 1437 if( debug_uart3 ) pc.printf("%x", *ptr++ );
klauss 121:ee02790d00b7 1438
klauss 121:ee02790d00b7 1439 if ( ( i % 32 ) == 0 )
klauss 121:ee02790d00b7 1440 {
klauss 126:1f90756250fb 1441 if( i not_eq 0 )
klauss 121:ee02790d00b7 1442 {
klauss 121:ee02790d00b7 1443 if( debug_uart3 ) pc.printf("\n\r> ");
klauss 121:ee02790d00b7 1444 }
klauss 121:ee02790d00b7 1445 else
klauss 121:ee02790d00b7 1446 {
klauss 121:ee02790d00b7 1447 if( debug_uart3 ) pc.printf(" ");
klauss 121:ee02790d00b7 1448 }
klauss 121:ee02790d00b7 1449 }
klauss 121:ee02790d00b7 1450 else
klauss 121:ee02790d00b7 1451 {
klauss 121:ee02790d00b7 1452 if( debug_uart3 ) pc.printf(" ");
klauss 121:ee02790d00b7 1453 }
klauss 121:ee02790d00b7 1454 }
klauss 121:ee02790d00b7 1455 if ( debug_uart3 ) pc.printf("\n\r> ");
klauss 121:ee02790d00b7 1456
klauss 121:ee02790d00b7 1457 if ( tcp_session ) {
klauss 121:ee02790d00b7 1458 char aux[ ( 32 * 3 ) + 5 ];
klauss 121:ee02790d00b7 1459
klauss 121:ee02790d00b7 1460 for ( register int i = 0; i < ( 32 * 3 ) + 5 ; i++ ) aux [ i ] = 0;
klauss 121:ee02790d00b7 1461
klauss 121:ee02790d00b7 1462 ptr = NULL;
klauss 121:ee02790d00b7 1463
klauss 126:1f90756250fb 1464 VZ_call * call = find_Call ( v_call, print_hex_this_rtp );
klauss 121:ee02790d00b7 1465
klauss 121:ee02790d00b7 1466 uint8_t * ptr = NULL;
klauss 126:1f90756250fb 1467 if( call not_eq NULL )
klauss 121:ee02790d00b7 1468 {
klauss 121:ee02790d00b7 1469 ptr = ( uint8_t * ) call -> check_rtp ();
klauss 121:ee02790d00b7 1470 }
klauss 121:ee02790d00b7 1471
klauss 126:1f90756250fb 1472 if ( ptr not_eq NULL )
klauss 121:ee02790d00b7 1473 {
klauss 121:ee02790d00b7 1474 bool finished = false;
klauss 121:ee02790d00b7 1475 volatile int i = 0;
klauss 121:ee02790d00b7 1476 int count = 0;
klauss 121:ee02790d00b7 1477 Timer dont_overwrite_tcp_buffer;
klauss 121:ee02790d00b7 1478 dont_overwrite_tcp_buffer.reset ();
klauss 121:ee02790d00b7 1479 dont_overwrite_tcp_buffer.start ();
klauss 121:ee02790d00b7 1480
klauss 121:ee02790d00b7 1481 while ( !finished )
klauss 121:ee02790d00b7 1482 {
klauss 121:ee02790d00b7 1483 if( dont_overwrite_tcp_buffer.read_ms () >= 20 )
klauss 121:ee02790d00b7 1484 {
klauss 121:ee02790d00b7 1485 dont_overwrite_tcp_buffer.reset();
klauss 121:ee02790d00b7 1486 for ( ; i < sizeof( RTP ); i++ )
klauss 121:ee02790d00b7 1487 {
klauss 121:ee02790d00b7 1488 char tmp[ 16 ];
klauss 121:ee02790d00b7 1489 sprintf( tmp, "%x ", *ptr++ );
klauss 121:ee02790d00b7 1490 strcat( aux, tmp );
klauss 121:ee02790d00b7 1491 count++;
klauss 121:ee02790d00b7 1492
klauss 121:ee02790d00b7 1493 if ( count >= 32 )
klauss 121:ee02790d00b7 1494 {
klauss 121:ee02790d00b7 1495 count = 0;
klauss 121:ee02790d00b7 1496 i++;
klauss 121:ee02790d00b7 1497 break;
klauss 121:ee02790d00b7 1498 }
klauss 121:ee02790d00b7 1499 }
klauss 121:ee02790d00b7 1500 strcat ( aux, "\n\r\0" );
klauss 121:ee02790d00b7 1501 tcp_client.send_all ( ( char *)aux, strlen( (char * )aux ) );
klauss 121:ee02790d00b7 1502 if ( i >= sizeof ( RTP ) ) finished = true;
klauss 121:ee02790d00b7 1503 strcpy ( aux, "\0" );
klauss 121:ee02790d00b7 1504 }
klauss 121:ee02790d00b7 1505 }
klauss 121:ee02790d00b7 1506 dont_overwrite_tcp_buffer.reset();
klauss 121:ee02790d00b7 1507 dont_overwrite_tcp_buffer.stop();
klauss 121:ee02790d00b7 1508 tcp_client.send_all ( "\r\n> ", strlen( "\r\n> " ) );
klauss 121:ee02790d00b7 1509 }
klauss 121:ee02790d00b7 1510 }
klauss 121:ee02790d00b7 1511 }
klauss 121:ee02790d00b7 1512 else
klauss 121:ee02790d00b7 1513 {
klauss 121:ee02790d00b7 1514 if( print_values )
klauss 121:ee02790d00b7 1515 {
klauss 121:ee02790d00b7 1516 debug_msg("Call %d not found", print_this_rtp );
klauss 121:ee02790d00b7 1517 }
klauss 121:ee02790d00b7 1518 else
klauss 121:ee02790d00b7 1519 {
klauss 121:ee02790d00b7 1520 send_msg("Call %d not found", print_this_rtp );
klauss 121:ee02790d00b7 1521 }
klauss 121:ee02790d00b7 1522 }
klauss 121:ee02790d00b7 1523
klauss 121:ee02790d00b7 1524 return ( 0 );
klauss 121:ee02790d00b7 1525 }
klauss 121:ee02790d00b7 1526
klauss 121:ee02790d00b7 1527 int show_cb_hex_rtp ( void )
klauss 121:ee02790d00b7 1528 {
klauss 126:1f90756250fb 1529 VZ_call * call = find_Call ( v_call, print_this_rtp );
klauss 121:ee02790d00b7 1530
klauss 126:1f90756250fb 1531 if ( call not_eq NULL )
klauss 121:ee02790d00b7 1532 {
klauss 126:1f90756250fb 1533 if ( call -> check_rtp () not_eq NULL )
klauss 121:ee02790d00b7 1534 {
klauss 121:ee02790d00b7 1535 send_msg ("Values :: %p\r\n", ( void *) call -> check_rtp () );
klauss 121:ee02790d00b7 1536 call -> rtp_print_yourself ();
klauss 121:ee02790d00b7 1537 }
klauss 121:ee02790d00b7 1538 else
klauss 121:ee02790d00b7 1539 {
klauss 121:ee02790d00b7 1540 if( print_values )
klauss 121:ee02790d00b7 1541 {
klauss 121:ee02790d00b7 1542 debug_msg("Call->RTP %d not found", print_this_rtp );
klauss 121:ee02790d00b7 1543 }
klauss 121:ee02790d00b7 1544 else
klauss 121:ee02790d00b7 1545 {
klauss 121:ee02790d00b7 1546 send_msg("Call->RTP %d not found", print_this_rtp );
klauss 121:ee02790d00b7 1547 }
klauss 121:ee02790d00b7 1548 }
klauss 121:ee02790d00b7 1549 }
klauss 121:ee02790d00b7 1550 else
klauss 121:ee02790d00b7 1551 {
klauss 121:ee02790d00b7 1552 if( print_values )
klauss 121:ee02790d00b7 1553 {
klauss 121:ee02790d00b7 1554 debug_msg("Call->RTP %d not found", print_this_rtp );
klauss 121:ee02790d00b7 1555 }
klauss 121:ee02790d00b7 1556 else
klauss 121:ee02790d00b7 1557 {
klauss 121:ee02790d00b7 1558 send_msg("Call->RTP %d not found", print_this_rtp );
klauss 121:ee02790d00b7 1559 }
klauss 121:ee02790d00b7 1560 }
klauss 121:ee02790d00b7 1561
klauss 121:ee02790d00b7 1562 return ( 0 );
klauss 121:ee02790d00b7 1563 }
klauss 121:ee02790d00b7 1564
klauss 121:ee02790d00b7 1565
klauss 121:ee02790d00b7 1566 int reset_stats_cks ( void )
klauss 121:ee02790d00b7 1567 {
klauss 121:ee02790d00b7 1568 pkg_cksok = 0;
klauss 121:ee02790d00b7 1569 pkg_ckserr = 0;
klauss 121:ee02790d00b7 1570 pkg_zero = 0;
klauss 121:ee02790d00b7 1571 out_of_range = 0;
klauss 121:ee02790d00b7 1572 missed_pkg = 0;
klauss 121:ee02790d00b7 1573 delayed_pkg_to_cb = 0;
klauss 121:ee02790d00b7 1574 cpld_pkg_tx_counter = 0;
klauss 121:ee02790d00b7 1575 cpld_pkg_rx_counter = 0;
klauss 121:ee02790d00b7 1576
klauss 121:ee02790d00b7 1577 return ( 0 );
klauss 121:ee02790d00b7 1578 }
klauss 121:ee02790d00b7 1579
klauss 121:ee02790d00b7 1580 int show_cb_stats ( void )
klauss 121:ee02790d00b7 1581 {
klauss 121:ee02790d00b7 1582 send_msg(
klauss 121:ee02790d00b7 1583 "\r\n"
klauss 121:ee02790d00b7 1584 " PKG_CKS OK: %d ( %003.2f )\r\n"
klauss 121:ee02790d00b7 1585 " PKG_CKS ERR: %d ( %003.2f )\r\n"
klauss 121:ee02790d00b7 1586 " PKG_0: %d ( %003.2f )\r\n"
klauss 121:ee02790d00b7 1587 " Out_of_range: %d ( %003.2f )\r\n"
klauss 121:ee02790d00b7 1588 " Miss_Pkg: %d\r\n"
klauss 121:ee02790d00b7 1589 " TX_delayed: %d\n\r"
klauss 121:ee02790d00b7 1590 " TX_Counter: %d\n\r"
klauss 121:ee02790d00b7 1591 " RX_Counter: %d\r\n",
klauss 121:ee02790d00b7 1592 pkg_cksok, ( cpld_pkg_rx_counter == 0 ) ? 0.00 : ( ( double ) pkg_cksok / cpld_pkg_rx_counter ) * 100,
klauss 121:ee02790d00b7 1593 pkg_ckserr, ( cpld_pkg_rx_counter == 0 ) ? 0.00 : ( ( double ) pkg_ckserr / cpld_pkg_rx_counter ) * 100,
klauss 121:ee02790d00b7 1594 pkg_zero, ( cpld_pkg_rx_counter == 0 ) ? 0.00 : ( ( double ) pkg_zero / cpld_pkg_rx_counter ) * 100,
klauss 121:ee02790d00b7 1595 out_of_range, ( cpld_pkg_rx_counter == 0 ) ? 0.00 : ( ( double ) out_of_range / cpld_pkg_rx_counter ) * 100,
klauss 121:ee02790d00b7 1596 missed_pkg,
klauss 121:ee02790d00b7 1597 delayed_pkg_to_cb,
klauss 121:ee02790d00b7 1598 cpld_pkg_tx_counter,
klauss 121:ee02790d00b7 1599 cpld_pkg_rx_counter
klauss 121:ee02790d00b7 1600 );
klauss 121:ee02790d00b7 1601
klauss 121:ee02790d00b7 1602 return ( 0 );
klauss 121:ee02790d00b7 1603 }
klauss 121:ee02790d00b7 1604
klauss 121:ee02790d00b7 1605
klauss 121:ee02790d00b7 1606 int reset_missed_send_udp ( void )
klauss 121:ee02790d00b7 1607 {
klauss 121:ee02790d00b7 1608 miss_fw_send_pkg = 0;
klauss 121:ee02790d00b7 1609 miss_prompt_udp_send_pkg = 0;
klauss 121:ee02790d00b7 1610 miss_sip_registry_send_pkg = 0;
klauss 121:ee02790d00b7 1611 miss_sip_invite_send_pkg = 0;
klauss 121:ee02790d00b7 1612 miss_sip_bye_send_pkg = 0;
klauss 121:ee02790d00b7 1613 miss_sip_unregistry_send_pkg = 0;
klauss 121:ee02790d00b7 1614 miss_sip_ok_send_pkg = 0;
klauss 121:ee02790d00b7 1615 miss_sip_rcv_bye_send_pkg = 0;
klauss 121:ee02790d00b7 1616 miss_wdt_send_pkg = 0;
klauss 121:ee02790d00b7 1617 miss_prompt_udp_send_pkg = 0;
klauss 121:ee02790d00b7 1618 miss_ftp_udp_send_pkg = 0;
klauss 121:ee02790d00b7 1619 miss_prompt_udp_rcv_pkg = 0;
klauss 121:ee02790d00b7 1620
klauss 121:ee02790d00b7 1621 return ( 0 );
klauss 121:ee02790d00b7 1622 }
klauss 121:ee02790d00b7 1623
klauss 121:ee02790d00b7 1624 int show_missed_send_udp_pkg ( void )
klauss 121:ee02790d00b7 1625 {
klauss 121:ee02790d00b7 1626 send_msg( "\r\nMissed pkgs ::\r\n "
klauss 121:ee02790d00b7 1627 "FW: %d\r\n "
klauss 121:ee02790d00b7 1628 "Prompt UDP %d\r\n "
klauss 121:ee02790d00b7 1629 "Registry %d\r\n "
klauss 121:ee02790d00b7 1630 "Invite %d\r\n "
klauss 121:ee02790d00b7 1631 "Bye %d\r\n "
klauss 121:ee02790d00b7 1632 "Unregistry %d\r\n "
klauss 121:ee02790d00b7 1633 "UDP incoming ( invite ans ) %d\r\n "
klauss 121:ee02790d00b7 1634 "UDP incoming ( bye from * ) %d\r\n "
klauss 121:ee02790d00b7 1635 "Wdt [ alive | rst ] %d\r\n "
klauss 121:ee02790d00b7 1636 "Rcv prompt %d\r\n "
klauss 121:ee02790d00b7 1637 "[ debug | send ]_msg %d\r\n "
klauss 121:ee02790d00b7 1638 "RTP %d\r\n",
klauss 121:ee02790d00b7 1639 miss_fw_send_pkg,
klauss 121:ee02790d00b7 1640 miss_prompt_udp_send_pkg,
klauss 121:ee02790d00b7 1641 miss_sip_registry_send_pkg,
klauss 121:ee02790d00b7 1642 miss_sip_invite_send_pkg,
klauss 121:ee02790d00b7 1643 miss_sip_bye_send_pkg,
klauss 121:ee02790d00b7 1644 miss_sip_unregistry_send_pkg,
klauss 121:ee02790d00b7 1645 miss_sip_ok_send_pkg,
klauss 121:ee02790d00b7 1646 miss_sip_rcv_bye_send_pkg,
klauss 121:ee02790d00b7 1647 miss_wdt_send_pkg,
klauss 121:ee02790d00b7 1648 miss_prompt_udp_send_pkg,
klauss 121:ee02790d00b7 1649 miss_prompt_udp_rcv_pkg,
klauss 121:ee02790d00b7 1650 miss_ftp_udp_send_pkg
klauss 121:ee02790d00b7 1651 );
klauss 121:ee02790d00b7 1652
klauss 121:ee02790d00b7 1653 return ( 0 );
klauss 121:ee02790d00b7 1654 }
klauss 121:ee02790d00b7 1655
klauss 121:ee02790d00b7 1656 int invite_ack_to_cb_handler ( Vector * v_cb, Vector * v_call )
klauss 121:ee02790d00b7 1657 {
klauss 121:ee02790d00b7 1658 static int retry_invite_pkg = 0;
klauss 121:ee02790d00b7 1659 bool need_retry = false;
klauss 121:ee02790d00b7 1660 Call_Box * cb = NULL;
klauss 121:ee02790d00b7 1661
klauss 126:1f90756250fb 1662 for ( register int i = 0; i < v_cb -> size (); i++ )
klauss 121:ee02790d00b7 1663 {
klauss 121:ee02790d00b7 1664 retry_invite_pkg++;
klauss 126:1f90756250fb 1665 if ( retry_invite_pkg >= v_cb->size () ) retry_invite_pkg = 0;
klauss 121:ee02790d00b7 1666
klauss 126:1f90756250fb 1667 cb = (Call_Box * )v_cb -> get_element ( i );
klauss 126:1f90756250fb 1668 if ( cb not_eq NULL )
klauss 121:ee02790d00b7 1669 {
klauss 126:1f90756250fb 1670 if ( ( cb -> get_status () == cb_ringing ) or ( cb -> get_status () == cb_trying ) or ( cb -> get_status () == cb_on_call ) )
klauss 121:ee02790d00b7 1671 {
klauss 121:ee02790d00b7 1672 need_retry = true;
klauss 121:ee02790d00b7 1673 break;
klauss 121:ee02790d00b7 1674 }
klauss 121:ee02790d00b7 1675 }
klauss 121:ee02790d00b7 1676 }
klauss 121:ee02790d00b7 1677
klauss 121:ee02790d00b7 1678 if ( need_retry )
klauss 121:ee02790d00b7 1679 {
klauss 126:1f90756250fb 1680 if ( cb -> get_invite_response () == false )
klauss 121:ee02790d00b7 1681 {
klauss 126:1f90756250fb 1682 buffer [ TIMESLICE_PLACE ] = cb -> get_timeslice ();
klauss 126:1f90756250fb 1683
klauss 126:1f90756250fb 1684 do_not_show_this_invite_pkg = true;
klauss 126:1f90756250fb 1685
klauss 126:1f90756250fb 1686 send2callboxes ( build_cb_package ( cb -> get_ext (), cb -> get_port (), INVITE, ( char * )buffer,
klauss 126:1f90756250fb 1687 cb -> msg_id_update (), CB_BUFFER_SIZE - VZ_HEADER_OFFSET, write_buffer ) );
klauss 121:ee02790d00b7 1688
klauss 126:1f90756250fb 1689 //if ( debug_invite ) debug_msg ("[%d] resend invite OK to Cbx : ( %d, %d )", cb -> get_ext (), cb -> get_ext (), cb -> get_port () );
klauss 121:ee02790d00b7 1690 }
klauss 121:ee02790d00b7 1691
klauss 126:1f90756250fb 1692 if ( find_Call ( v_call, cb->get_ext () ) == NULL )
klauss 121:ee02790d00b7 1693 {
klauss 121:ee02790d00b7 1694
klauss 126:1f90756250fb 1695 if ( ( ( cb -> get_status () == cb_ringing ) or ( cb -> get_status () == cb_trying ) ) )
klauss 121:ee02790d00b7 1696 {
klauss 121:ee02790d00b7 1697 char rtp_src_tmp_write_buffer [ CB_BUFFER_SIZE ];
klauss 121:ee02790d00b7 1698 uint8_t rtp_dst_tmp_write_buffer [ CB_BUFFER_SIZE ];
klauss 121:ee02790d00b7 1699
klauss 126:1f90756250fb 1700 for ( register int i = 0; i < RTP_MSG_SIZE; i++ ) rtp_src_tmp_write_buffer [ i ] = 0x00;
klauss 121:ee02790d00b7 1701
klauss 126:1f90756250fb 1702 send2callboxes ( build_cb_package ( cb -> get_ext (), cb -> get_port (), AUDIO,
klauss 121:ee02790d00b7 1703 rtp_src_tmp_write_buffer, AUDIO, RTP_MSG_SIZE, rtp_dst_tmp_write_buffer ) );
klauss 121:ee02790d00b7 1704 } else {
klauss 121:ee02790d00b7 1705 if ( cb->get_invite_retry_count() == 0 )
klauss 121:ee02790d00b7 1706 {
klauss 121:ee02790d00b7 1707 cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ~BIT7 );
klauss 121:ee02790d00b7 1708
klauss 121:ee02790d00b7 1709 for ( register uint8_t i = 0; i < v_call->size(); i++ )
klauss 121:ee02790d00b7 1710 {
klauss 121:ee02790d00b7 1711 VZ_call * call = ( VZ_call * )v_call->get_element( i );
klauss 121:ee02790d00b7 1712 if( call->get_cb_ext() == cb->get_ext() )
klauss 121:ee02790d00b7 1713 {
klauss 121:ee02790d00b7 1714 v_call->remove_element( i );
klauss 126:1f90756250fb 1715 if( call not_eq NULL ) delete( call );
klauss 121:ee02790d00b7 1716 break;
klauss 121:ee02790d00b7 1717 }
klauss 121:ee02790d00b7 1718 }
klauss 121:ee02790d00b7 1719
klauss 121:ee02790d00b7 1720 ts->return_timeslice( cb->call_end () );
klauss 121:ee02790d00b7 1721
klauss 121:ee02790d00b7 1722 if( debug_invite ) debug_msg( "[%d]-- No audio pkgs --", cb->get_ext () );
klauss 121:ee02790d00b7 1723 }
klauss 121:ee02790d00b7 1724 }
klauss 121:ee02790d00b7 1725 }
klauss 121:ee02790d00b7 1726 }
klauss 121:ee02790d00b7 1727
klauss 121:ee02790d00b7 1728 return ( 0 );
klauss 121:ee02790d00b7 1729 }
klauss 121:ee02790d00b7 1730
klauss 121:ee02790d00b7 1731 int check_audio_from_ast ( Vector * v_cb, Vector * v_call )
klauss 121:ee02790d00b7 1732 {
klauss 126:1f90756250fb 1733 for( register uint8_t i = 0; i < v_call->size(); i++ )
klauss 126:1f90756250fb 1734 {
klauss 126:1f90756250fb 1735 VZ_call * call = ( VZ_call * ) v_call -> get_element ( i );
klauss 126:1f90756250fb 1736 if ( call not_eq NULL )
klauss 121:ee02790d00b7 1737 {
klauss 121:ee02790d00b7 1738 int length = 0;
klauss 126:1f90756250fb 1739 char * tmp = call -> get_eth_message ( &length );
klauss 126:1f90756250fb 1740 if( tmp not_eq NULL )
klauss 126:1f90756250fb 1741 {
klauss 121:ee02790d00b7 1742 int cb_port = 0xffff;
klauss 126:1f90756250fb 1743 Call_Box * cb = find_CB ( v_cb, call -> get_cb_ext () );
klauss 121:ee02790d00b7 1744
klauss 126:1f90756250fb 1745 if( cb not_eq NULL )
klauss 126:1f90756250fb 1746 {
klauss 126:1f90756250fb 1747 cb_port = cb -> get_port ();
klauss 121:ee02790d00b7 1748
klauss 121:ee02790d00b7 1749 if ( drop_rtp_from_ast_pkg )
klauss 121:ee02790d00b7 1750 {
klauss 121:ee02790d00b7 1751 led1 = !led1;
klauss 121:ee02790d00b7 1752 }
klauss 121:ee02790d00b7 1753 else
klauss 121:ee02790d00b7 1754 {
klauss 126:1f90756250fb 1755 uint8_t * pkg2cb = build_cb_package ( call -> get_cb_ext (), cb_port, AUDIO,
klauss 121:ee02790d00b7 1756 tmp, AUDIO, length, write_buffer );
klauss 121:ee02790d00b7 1757
klauss 121:ee02790d00b7 1758 send2callboxes( pkg2cb );
klauss 121:ee02790d00b7 1759 }
klauss 121:ee02790d00b7 1760
klauss 126:1f90756250fb 1761 } else if ( debug_main ) debug_msg ("[%d] received missed package -- Type :: %i", ext, type );
klauss 121:ee02790d00b7 1762 }
klauss 121:ee02790d00b7 1763 }
klauss 121:ee02790d00b7 1764 }
klauss 121:ee02790d00b7 1765
klauss 121:ee02790d00b7 1766 return ( 0 );
klauss 121:ee02790d00b7 1767 }
klauss 121:ee02790d00b7 1768
klauss 121:ee02790d00b7 1769 int wake_up_or_refresh_handler ( Vector * v_cb )
klauss 121:ee02790d00b7 1770 {
klauss 126:1f90756250fb 1771 int return_value = 0;
klauss 126:1f90756250fb 1772
klauss 126:1f90756250fb 1773 if( timer_sync_refresh.read_ms() > 250 * 2 )
klauss 126:1f90756250fb 1774 {
klauss 121:ee02790d00b7 1775 timer_sync_refresh.reset();
klauss 121:ee02790d00b7 1776
klauss 121:ee02790d00b7 1777 static uint8_t time_to_mode = TIME_TO_REFRESH;
klauss 121:ee02790d00b7 1778
klauss 121:ee02790d00b7 1779 if ( time_to_mode == TIME_TO_REFRESH ){
klauss 121:ee02790d00b7 1780 time_to_mode = TIME_TO_WAKE_UP;
klauss 126:1f90756250fb 1781 if ( !do_not_refresh ) return_value = refresh ( v_cb );
klauss 121:ee02790d00b7 1782 } else {
klauss 121:ee02790d00b7 1783 time_to_mode = TIME_TO_REFRESH;
klauss 121:ee02790d00b7 1784 if ( wake_all ) if ( v_call->size() == 0 ) wake_all_up ( v_cb );
klauss 121:ee02790d00b7 1785 }
klauss 121:ee02790d00b7 1786 }
klauss 121:ee02790d00b7 1787
klauss 126:1f90756250fb 1788 return ( return_value );
klauss 121:ee02790d00b7 1789 }
klauss 121:ee02790d00b7 1790
klauss 121:ee02790d00b7 1791 int check_sip_messages_from_ast ( Vector * v_cb, Vector * v_call )
klauss 121:ee02790d00b7 1792 {
klauss 121:ee02790d00b7 1793 // check sip messages only for cbx in call ?
klauss 121:ee02790d00b7 1794 int ext_to__be_removed = sip_manager( v_cb );
klauss 121:ee02790d00b7 1795 if( ext_to__be_removed > 0 ) {
klauss 121:ee02790d00b7 1796 Call_Box * cb = find_CB( v_cb, ext_to__be_removed );
klauss 126:1f90756250fb 1797 if( cb not_eq NULL ) {
klauss 126:1f90756250fb 1798 //if( cb->status == cb_on_call ) // poderia ser if( cb->status not_eq cb_idle ) ???
klauss 121:ee02790d00b7 1799 if ( cb -> get_status () == cb_on_call )
klauss 121:ee02790d00b7 1800 {
klauss 121:ee02790d00b7 1801 buffer[ TIMESLICE_PLACE ] = 0;
klauss 121:ee02790d00b7 1802
klauss 121:ee02790d00b7 1803 for( register uint8_t i = 0; i < v_call->size(); i++ ) {
klauss 121:ee02790d00b7 1804 VZ_call * call = ( VZ_call * )v_call->get_element( i );
klauss 121:ee02790d00b7 1805 if( call->get_cb_ext() == ext_to__be_removed ) {
klauss 121:ee02790d00b7 1806 v_call->remove_element( i );
klauss 121:ee02790d00b7 1807 delete( call );
klauss 121:ee02790d00b7 1808 }
klauss 121:ee02790d00b7 1809 }
klauss 121:ee02790d00b7 1810
klauss 121:ee02790d00b7 1811 ts->return_timeslice( cb->call_end ( false ) );
klauss 121:ee02790d00b7 1812
klauss 121:ee02790d00b7 1813 send2callboxes( build_cb_package( cb->get_ext (), cb->get_port (), CB_BYE,
klauss 121:ee02790d00b7 1814 ( char * )buffer, cb->get_msg_id(), CB_BUFFER_SIZE - VZ_HEADER_OFFSET, write_buffer ) );
klauss 121:ee02790d00b7 1815
klauss 121:ee02790d00b7 1816 if( debug_invite ) debug_msg("[%d] Received Bye from *", cb->get_ext () );
klauss 121:ee02790d00b7 1817 }
klauss 121:ee02790d00b7 1818 } else if( debug_main ) debug_msg("[%d] Missed bye request", ext_to__be_removed );
klauss 121:ee02790d00b7 1819 }
klauss 121:ee02790d00b7 1820
klauss 121:ee02790d00b7 1821 return ( 0 );
klauss 121:ee02790d00b7 1822 }
klauss 121:ee02790d00b7 1823
klauss 121:ee02790d00b7 1824 int check_for_runaways_ts ( Vector * v_cb, Timeslice * ts )
klauss 121:ee02790d00b7 1825 {
klauss 126:1f90756250fb 1826 if( ( v_call->size() == 0 ) && ( ts->remain_timeslices() not_eq MAX_TIMESLICES ) ) {
klauss 121:ee02790d00b7 1827 bool ts_reset = true;
klauss 121:ee02790d00b7 1828 for( register uint8_t i = 0; i < v_cb->size(); i++ ) {
klauss 121:ee02790d00b7 1829 uint16_t cb_status = ((Call_Box *)v_cb->get_element( i ))->get_status();
klauss 121:ee02790d00b7 1830 uint16_t cb_sip_status = ((Call_Box *)v_cb->get_element( i ))->get_sip_status();
klauss 121:ee02790d00b7 1831
klauss 126:1f90756250fb 1832 if ((cb_status not_eq cb_idle) and (cb_sip_status not_eq sip_idle)) {
klauss 121:ee02790d00b7 1833 ts_reset = false;
klauss 121:ee02790d00b7 1834 break;
klauss 121:ee02790d00b7 1835 }
klauss 121:ee02790d00b7 1836
klauss 121:ee02790d00b7 1837 }
klauss 121:ee02790d00b7 1838 if( ts_reset && !bl_start_flag )
klauss 121:ee02790d00b7 1839 {
klauss 121:ee02790d00b7 1840 if( debug_invite ) debug_msg("Resetando TS");
klauss 121:ee02790d00b7 1841 ts->reset();
klauss 121:ee02790d00b7 1842 }
klauss 121:ee02790d00b7 1843 }
klauss 121:ee02790d00b7 1844
klauss 121:ee02790d00b7 1845 return ( 0 );
klauss 121:ee02790d00b7 1846 }
klauss 121:ee02790d00b7 1847
klauss 121:ee02790d00b7 1848 int show_wdt_status ( void )
klauss 121:ee02790d00b7 1849 {
klauss 121:ee02790d00b7 1850 send_msg("lpc_low_level_input_counter :: %d", lpc_low_level_input_counter );
klauss 121:ee02790d00b7 1851
klauss 121:ee02790d00b7 1852 lpc_low_level_input_counter = 0;
klauss 121:ee02790d00b7 1853
klauss 121:ee02790d00b7 1854 if( eth_status == 0 ) {
klauss 121:ee02790d00b7 1855 send_msg( "Wdt last reset: %s - status_eth :: Connected - Extern Wdt idle for :: %3d sec ( %3d ) - Rx from CBx idle for :: %3d sec ( %3d )",
klauss 121:ee02790d00b7 1856 ( wdt.WatchdogCausedReset() ) ? "true" : "false",
klauss 121:ee02790d00b7 1857 EXTERN_WDT_IDLE - external_wdt,
klauss 121:ee02790d00b7 1858 EXTERN_WDT_IDLE,
klauss 121:ee02790d00b7 1859 RX_CB_IDLE - pkg_wdt,
klauss 121:ee02790d00b7 1860 RX_CB_IDLE
klauss 121:ee02790d00b7 1861 );
klauss 121:ee02790d00b7 1862 } else {
klauss 121:ee02790d00b7 1863 send_msg( "Wdt last reset: %s - status_eth :: Disconnected :: since %3d sec - Extern Wdt idle for :: %3d sec ( %3d ) - Rx from CBx idle for :: %3d sec ( %3d )",
klauss 121:ee02790d00b7 1864 ( wdt.WatchdogCausedReset() ) ? "true" : "false",
klauss 121:ee02790d00b7 1865 ETH_CONNECT_TIMEOUT - eth_wdt,
klauss 121:ee02790d00b7 1866 EXTERN_WDT_IDLE - external_wdt,
klauss 121:ee02790d00b7 1867 EXTERN_WDT_IDLE,
klauss 121:ee02790d00b7 1868 RX_CB_IDLE - pkg_wdt,
klauss 121:ee02790d00b7 1869 RX_CB_IDLE
klauss 121:ee02790d00b7 1870 );
klauss 121:ee02790d00b7 1871 }
klauss 121:ee02790d00b7 1872
klauss 121:ee02790d00b7 1873 return ( 0 );
klauss 121:ee02790d00b7 1874 }
klauss 121:ee02790d00b7 1875
klauss 121:ee02790d00b7 1876
klauss 121:ee02790d00b7 1877 int wdt_update ( void )
klauss 121:ee02790d00b7 1878 {
klauss 121:ee02790d00b7 1879 uptime++;
klauss 121:ee02790d00b7 1880
klauss 121:ee02790d00b7 1881 current_time++;
klauss 121:ee02790d00b7 1882
klauss 122:480c44b0e205 1883 if ( wdt_show ) debug_wdt = true;
klauss 121:ee02790d00b7 1884
klauss 122:480c44b0e205 1885 if ( external_wdt ) external_wdt--;
klauss 122:480c44b0e205 1886 if ( pkg_wdt ) pkg_wdt--;
klauss 122:480c44b0e205 1887 if ( eth_wdt ) eth_wdt--;
klauss 121:ee02790d00b7 1888
klauss 122:480c44b0e205 1889 if ( eth_wdt && external_wdt && pkg_wdt ){
klauss 121:ee02790d00b7 1890 wdt.kick();
klauss 122:480c44b0e205 1891 return ( 0 );
klauss 121:ee02790d00b7 1892 }
klauss 121:ee02790d00b7 1893
klauss 122:480c44b0e205 1894 return ( 1 );
klauss 121:ee02790d00b7 1895 }
klauss 121:ee02790d00b7 1896
klauss 121:ee02790d00b7 1897 int check_for_unwanted_rtp_ports ( Vector * v_cb )
klauss 121:ee02790d00b7 1898 {
klauss 121:ee02790d00b7 1899 for ( register uint8_t i = 0; i < v_cb->size(); i++ )
klauss 121:ee02790d00b7 1900 {
klauss 121:ee02790d00b7 1901 Call_Box * cb = (Call_Box *) v_cb->get_element (i);
klauss 126:1f90756250fb 1902 if ( cb not_eq NULL )
klauss 121:ee02790d00b7 1903 {
klauss 121:ee02790d00b7 1904 if ( ( cb->get_status () == cb_idle ) && ( cb->get_sip_status () == sip_idle ) && ( cb -> is_rtp_timer_timeout () ) )
klauss 121:ee02790d00b7 1905 {
klauss 121:ee02790d00b7 1906 if ( debug_reset_rtp ) debug_msg( "[%d] rtp reset", cb -> get_ext () );
klauss 121:ee02790d00b7 1907 cb -> cb_set_status( cb_idle );
klauss 121:ee02790d00b7 1908 cb -> set_sip_status ( sip_idle );
klauss 121:ee02790d00b7 1909 cb -> reset_rtp_timer ();
klauss 121:ee02790d00b7 1910 cb -> set_rtp_port ( 0 );
klauss 121:ee02790d00b7 1911 }
klauss 121:ee02790d00b7 1912 }
klauss 121:ee02790d00b7 1913 }
klauss 121:ee02790d00b7 1914 return ( 0 );
klauss 121:ee02790d00b7 1915 }
klauss 121:ee02790d00b7 1916
klauss 121:ee02790d00b7 1917
klauss 121:ee02790d00b7 1918 int process_received_pkg_from_cbx ( void )
klauss 121:ee02790d00b7 1919 {
klauss 121:ee02790d00b7 1920 pkg_wdt = RX_CB_IDLE;
klauss 124:c1b6c893e1c3 1921
klauss 126:1f90756250fb 1922 // short path
klauss 125:8ff4dc96ad58 1923 if ( buffer_from_cb_ptr [ TYPE_PLACE ] == AUDIO )
klauss 124:c1b6c893e1c3 1924 {
klauss 125:8ff4dc96ad58 1925 xmemcpy ( buffer, buffer_from_cb_ptr, CB_BUFFER_SIZE );
klauss 124:c1b6c893e1c3 1926 status = WAITING;
klauss 124:c1b6c893e1c3 1927 missed_pkg--;
klauss 124:c1b6c893e1c3 1928 }
klauss 124:c1b6c893e1c3 1929 else
klauss 126:1f90756250fb 1930 // long path
klauss 124:c1b6c893e1c3 1931 {
klauss 125:8ff4dc96ad58 1932 xmemcpy ( cb_rx_buffer, buffer_from_cb_ptr, CB_BUFFER_SIZE );
klauss 124:c1b6c893e1c3 1933 status = WAITING;
klauss 124:c1b6c893e1c3 1934 missed_pkg--;
klauss 125:8ff4dc96ad58 1935 xmemcpy ( buffer, cb_rx_buffer, CB_BUFFER_SIZE );
klauss 125:8ff4dc96ad58 1936
klauss 125:8ff4dc96ad58 1937 if ( debug_show_rx_cpld )
klauss 124:c1b6c893e1c3 1938 {
klauss 126:1f90756250fb 1939 char str [ 256 ];
klauss 126:1f90756250fb 1940 strcpy ( str, "RX :: \n\r" );
klauss 125:8ff4dc96ad58 1941
klauss 126:1f90756250fb 1942 for ( register uint16_t i = 0; i < 32; i++ )
klauss 125:8ff4dc96ad58 1943 {
klauss 126:1f90756250fb 1944 char tmp [ 8 ];
klauss 125:8ff4dc96ad58 1945 sprintf ( tmp, "%02x ", cb_rx_buffer [ i ] );
klauss 126:1f90756250fb 1946 strcat ( str, tmp );
klauss 124:c1b6c893e1c3 1947 }
klauss 125:8ff4dc96ad58 1948
klauss 125:8ff4dc96ad58 1949 strcat ( str, "\n\r " );
klauss 125:8ff4dc96ad58 1950
klauss 126:1f90756250fb 1951 send_msg ( "%s", str );
klauss 124:c1b6c893e1c3 1952 }
klauss 121:ee02790d00b7 1953 }
klauss 121:ee02790d00b7 1954
klauss 121:ee02790d00b7 1955 data = parse_vz_pkg ( &ext, &port, &type, buffer );
klauss 121:ee02790d00b7 1956
klauss 126:1f90756250fb 1957 if ( data not_eq NULL )
klauss 121:ee02790d00b7 1958 {
klauss 126:1f90756250fb 1959 if ( min_ext == 0 ) min_ext = ext;
klauss 121:ee02790d00b7 1960
klauss 126:1f90756250fb 1961 if ( ext > max_ext ) max_ext = ext;
klauss 121:ee02790d00b7 1962
klauss 126:1f90756250fb 1963 if ( ext < min_ext ) min_ext = ext;
klauss 121:ee02790d00b7 1964
klauss 126:1f90756250fb 1965 if ( debug_fw ) { fw_cbx_pkg ( ext, ( char *)buffer ); }
klauss 121:ee02790d00b7 1966
klauss 126:1f90756250fb 1967 if ( type == TELEMETRY )
klauss 126:1f90756250fb 1968 {
klauss 126:1f90756250fb 1969 telemetry_counter++;
klauss 126:1f90756250fb 1970 if ( debug_telemetry ) show_last_rx = true;
klauss 126:1f90756250fb 1971 }
klauss 121:ee02790d00b7 1972
klauss 127:e7160a463b6c 1973 if( type not_eq AUDIO )
klauss 127:e7160a463b6c 1974 {
klauss 127:e7160a463b6c 1975 if ( debug_cb_rx ) { send_msg ("[%d %d] -- Type :: %d", ext, port, type ); }
klauss 127:e7160a463b6c 1976
klauss 121:ee02790d00b7 1977 if(
klauss 126:1f90756250fb 1978 type == TELEMETRY or
klauss 126:1f90756250fb 1979 type == CB_STATS or
klauss 126:1f90756250fb 1980 type == FW1 or
klauss 126:1f90756250fb 1981 type == FW2 or
klauss 126:1f90756250fb 1982 type == FW3 or
klauss 126:1f90756250fb 1983 type == FW4 or
klauss 126:1f90756250fb 1984 type == FW5 or
klauss 121:ee02790d00b7 1985 type == FW6
klauss 121:ee02790d00b7 1986 ) type = FW;
klauss 121:ee02790d00b7 1987
klauss 126:1f90756250fb 1988 if ( debug_sqn ) { send_msg ("[%d %d] -- Type :: %d -- seq_num :: %u", ext, port, type, cb_tx_buffer [ SEQ_NUM_PLACE ] ); }
klauss 121:ee02790d00b7 1989
klauss 126:1f90756250fb 1990 Call_Box * cb = find_CB ( v_cb, ext );
klauss 126:1f90756250fb 1991 if ( cb not_eq NULL )
klauss 126:1f90756250fb 1992 {
klauss 126:1f90756250fb 1993 if ( data[ 0 ] bitand BIT7 )
klauss 126:1f90756250fb 1994 {
klauss 126:1f90756250fb 1995 if ( type == BOOT )
klauss 126:1f90756250fb 1996 {
klauss 121:ee02790d00b7 1997 send2callboxes( build_cb_package( ext, port, REGISTRY,
klauss 121:ee02790d00b7 1998 ( char * )data, cb->get_msg_id(), CB_BUFFER_SIZE - VZ_HEADER_OFFSET, write_buffer ) );
klauss 121:ee02790d00b7 1999 } else {
klauss 126:1f90756250fb 2000 if ( debug_main ) debug_msg("[%d] Received ack pkg with seq_num %d", ext, data[ 0 ] );
klauss 121:ee02790d00b7 2001
klauss 126:1f90756250fb 2002 switch ( type )
klauss 126:1f90756250fb 2003 {
klauss 121:ee02790d00b7 2004 case INVITE : {
klauss 126:1f90756250fb 2005 if ( debug_main or debug_invite ) debug_msg ("[%d] Invite Ack - msg_id %d -- Cbx seqNum %d", ext, cb->get_msg_id(), data[ 0 ] );
klauss 121:ee02790d00b7 2006 break;
klauss 121:ee02790d00b7 2007 }
klauss 121:ee02790d00b7 2008 case CB_BYE : {
klauss 126:1f90756250fb 2009 if ( debug_main or debug_invite ) debug_msg ("[%d] BYE Ack - msg_id %d", ext, cb->get_msg_id() );
klauss 126:1f90756250fb 2010 cb -> set_bye_response_ok ();
klauss 121:ee02790d00b7 2011 break;
klauss 121:ee02790d00b7 2012 }
klauss 121:ee02790d00b7 2013 case REGISTRY : {
klauss 126:1f90756250fb 2014 if ( debug_main or debug_aging ) debug_msg ("[%d] Registry ACK - msg_id %d", ext, cb->get_msg_id() );
klauss 121:ee02790d00b7 2015 break;
klauss 121:ee02790d00b7 2016 }
klauss 121:ee02790d00b7 2017 default : {
klauss 126:1f90756250fb 2018 if ( debug_main or debug_aging ) debug_msg ("[%d] ACK msg_id :: %d :: type %d", ext, cb->get_msg_id(), type );
klauss 121:ee02790d00b7 2019 }
klauss 121:ee02790d00b7 2020 }
klauss 126:1f90756250fb 2021 if ( type not_eq REGISTRY and type not_eq CB_BYE and type not_eq INVITE ) type = DO_NOTHING;
klauss 126:1f90756250fb 2022 if ( type == CB_BYE )
klauss 126:1f90756250fb 2023 {
klauss 126:1f90756250fb 2024 VZ_call * call = find_Call ( v_call, ext );
klauss 126:1f90756250fb 2025 if ( call not_eq NULL )
klauss 126:1f90756250fb 2026 {
klauss 126:1f90756250fb 2027 if ( call -> get_elapsed_time () < 120000 )
klauss 126:1f90756250fb 2028 {
klauss 126:1f90756250fb 2029 if ( debug_invite ) debug_msg("[%d] ack bye ignored", ext );
klauss 121:ee02790d00b7 2030 type = DO_NOTHING;
klauss 121:ee02790d00b7 2031 }
klauss 121:ee02790d00b7 2032 }
klauss 121:ee02790d00b7 2033 }
klauss 121:ee02790d00b7 2034 }
klauss 121:ee02790d00b7 2035 }
klauss 121:ee02790d00b7 2036 }
klauss 121:ee02790d00b7 2037 }
klauss 121:ee02790d00b7 2038 } else type = DO_NOTHING;
klauss 121:ee02790d00b7 2039
klauss 121:ee02790d00b7 2040 return 0;
klauss 123:1d395b5a4cad 2041 }
klauss 123:1d395b5a4cad 2042
klauss 123:1d395b5a4cad 2043 void update_all_cb_timer ( Vector * v_cb )
klauss 123:1d395b5a4cad 2044 {
klauss 123:1d395b5a4cad 2045 if ( v_cb == NULL ) return;
klauss 123:1d395b5a4cad 2046
klauss 123:1d395b5a4cad 2047 for( register uint8_t i = 0; i < v_cb->size(); i++ )
klauss 123:1d395b5a4cad 2048 {
klauss 123:1d395b5a4cad 2049 Call_Box * cb = ( Call_Box * )v_cb->get_element( i );
klauss 126:1f90756250fb 2050 if ( cb not_eq NULL ) cb -> update_time ();
klauss 123:1d395b5a4cad 2051 }
klauss 124:c1b6c893e1c3 2052 }
klauss 124:c1b6c893e1c3 2053
klauss 124:c1b6c893e1c3 2054 int init_hello ( void )
klauss 124:c1b6c893e1c3 2055 {
klauss 124:c1b6c893e1c3 2056 hello_sync.start ();
klauss 124:c1b6c893e1c3 2057 hello_times = 0;
klauss 124:c1b6c893e1c3 2058 return ( 0 );
klauss 124:c1b6c893e1c3 2059 }
klauss 124:c1b6c893e1c3 2060
klauss 124:c1b6c893e1c3 2061 void send_hello_to_cbx ( void )
klauss 124:c1b6c893e1c3 2062 {
klauss 124:c1b6c893e1c3 2063 if ( hello_times >= 3 ){
klauss 124:c1b6c893e1c3 2064 hello_sync.stop ();
klauss 124:c1b6c893e1c3 2065 hello_sync.reset ();
klauss 124:c1b6c893e1c3 2066 dont_say_hello_again = true;
klauss 124:c1b6c893e1c3 2067 }
klauss 124:c1b6c893e1c3 2068
klauss 124:c1b6c893e1c3 2069 if ( ( !dont_say_hello_again ) && ( hello_sync.read () > 3 ) && ( hello_times < 3 ) )
klauss 124:c1b6c893e1c3 2070 {
klauss 124:c1b6c893e1c3 2071 hello_times++;
klauss 124:c1b6c893e1c3 2072
klauss 124:c1b6c893e1c3 2073 char cmd_msg [ CB_BUFFER_SIZE ] = "pend\r";
klauss 124:c1b6c893e1c3 2074
klauss 124:c1b6c893e1c3 2075 if ( debug_hello ) debug_msg("Enviando pend_all nro [ %i ]", hello_times );
klauss 124:c1b6c893e1c3 2076
klauss 124:c1b6c893e1c3 2077 send2callboxes( build_cb_package( BROADCAST_EXT, BROADCAST_EXT, PROMPT, cmd_msg, ( 0x11 + hello_times ), CB_BUFFER_SIZE - VZ_HEADER_OFFSET, write_buffer ) );
klauss 124:c1b6c893e1c3 2078
klauss 124:c1b6c893e1c3 2079 hello_sync.reset ();
klauss 124:c1b6c893e1c3 2080 }
klauss 124:c1b6c893e1c3 2081 }
klauss 124:c1b6c893e1c3 2082
klauss 124:c1b6c893e1c3 2083 void show_hello_status_function ( void )
klauss 124:c1b6c893e1c3 2084 {
klauss 124:c1b6c893e1c3 2085 send_msg ("hello_sync.read :: %d -- hello_times :: %u", ( int ) hello_sync.read (), hello_times );
klauss 126:1f90756250fb 2086 }
klauss 126:1f90756250fb 2087
klauss 126:1f90756250fb 2088 void show_last_rx_pkg_from_cbx ( void )
klauss 126:1f90756250fb 2089 {
klauss 126:1f90756250fb 2090 char str [ 256 ] = "";
klauss 126:1f90756250fb 2091
klauss 126:1f90756250fb 2092 for ( register uint16_t i = 0; i < CB_BUFFER_SIZE; i++ )
klauss 126:1f90756250fb 2093 {
klauss 126:1f90756250fb 2094 char tmp[ 8 ];
klauss 126:1f90756250fb 2095
klauss 126:1f90756250fb 2096 sprintf ( tmp, "%02x", cb_rx_buffer [ i ] );
klauss 126:1f90756250fb 2097
klauss 126:1f90756250fb 2098 strcat ( str, tmp );
klauss 126:1f90756250fb 2099
klauss 126:1f90756250fb 2100 if ( ( i not_eq 0 ) && !( ( i + 1 ) % 25 ) )
klauss 126:1f90756250fb 2101 {
klauss 126:1f90756250fb 2102 send_msg ( "%s", str );
klauss 126:1f90756250fb 2103 strcpy ( str, "" );
klauss 126:1f90756250fb 2104 }
klauss 126:1f90756250fb 2105
klauss 126:1f90756250fb 2106 else { strcat ( str, " " ); }
klauss 126:1f90756250fb 2107 }
klauss 126:1f90756250fb 2108
klauss 126:1f90756250fb 2109 send_msg ( "%s", str );
klauss 126:1f90756250fb 2110 }
klauss 126:1f90756250fb 2111
klauss 126:1f90756250fb 2112 void show_last_tx_pkg_from_cbx ( void )
klauss 126:1f90756250fb 2113 {
klauss 126:1f90756250fb 2114 char str [ 256 ] = "";
klauss 126:1f90756250fb 2115
klauss 126:1f90756250fb 2116 for ( register uint16_t i = 0; i < CB_BUFFER_SIZE; i++ )
klauss 126:1f90756250fb 2117 {
klauss 126:1f90756250fb 2118 char tmp[ 8 ];
klauss 126:1f90756250fb 2119
klauss 126:1f90756250fb 2120 sprintf ( tmp, "%02x", cb_tx_buffer [ i ] );
klauss 126:1f90756250fb 2121
klauss 126:1f90756250fb 2122 strcat ( str, tmp );
klauss 126:1f90756250fb 2123
klauss 126:1f90756250fb 2124 if ( ( i not_eq 0 ) && !( ( i + 1 ) % 25 ) )
klauss 126:1f90756250fb 2125 {
klauss 126:1f90756250fb 2126 send_msg ( "%s", str );
klauss 126:1f90756250fb 2127 strcpy ( str, "" );
klauss 126:1f90756250fb 2128 }
klauss 126:1f90756250fb 2129
klauss 126:1f90756250fb 2130 else { strcat ( str, " " ); }
klauss 126:1f90756250fb 2131 }
klauss 126:1f90756250fb 2132
klauss 126:1f90756250fb 2133 send_msg ( "%s", str );
klauss 128:3ae1c74773a8 2134 }
klauss 128:3ae1c74773a8 2135
klauss 128:3ae1c74773a8 2136 /* Funcao para leitura da fonte de alimentacao e aviso ao servidor */
klauss 128:3ae1c74773a8 2137 void check_power_source ( void )
klauss 128:3ae1c74773a8 2138 {
klauss 128:3ae1c74773a8 2139 static uint8_t samples = 0, warn_back = 0, wait_to_warn = 0;
klauss 128:3ae1c74773a8 2140 //static uint16_t wait_to_warn = 0;
klauss 128:3ae1c74773a8 2141
klauss 128:3ae1c74773a8 2142 pwr_src_timer.stop();
klauss 128:3ae1c74773a8 2143 pwr_src_timer.reset();
klauss 128:3ae1c74773a8 2144
klauss 128:3ae1c74773a8 2145 if (pwr_src_in) {
klauss 128:3ae1c74773a8 2146 if (samples < 8) samples++;
klauss 128:3ae1c74773a8 2147 } else {
klauss 128:3ae1c74773a8 2148 if (samples > 0) samples--;
klauss 128:3ae1c74773a8 2149 }
klauss 128:3ae1c74773a8 2150
klauss 128:3ae1c74773a8 2151 if (wait_to_warn) wait_to_warn--;
klauss 128:3ae1c74773a8 2152
klauss 128:3ae1c74773a8 2153 if (samples >= 8) {
klauss 128:3ae1c74773a8 2154 pwr_src_status = 1;
klauss 128:3ae1c74773a8 2155 if (!wait_to_warn) {
klauss 128:3ae1c74773a8 2156 wait_to_warn = 255;
klauss 128:3ae1c74773a8 2157 warn_back = 1;
klauss 128:3ae1c74773a8 2158 pwr_src_client.sendTo( pwr_src_server, "mainpowerisdown", strlen( "mainpowerisdown" ) );
klauss 128:3ae1c74773a8 2159 debug_msg( "Main power is DOWN!" );
klauss 128:3ae1c74773a8 2160 } else {
klauss 128:3ae1c74773a8 2161 wait_to_warn--;
klauss 128:3ae1c74773a8 2162 }
klauss 128:3ae1c74773a8 2163 }
klauss 128:3ae1c74773a8 2164 if ((samples == 0) and (warn_back)) {
klauss 128:3ae1c74773a8 2165 pwr_src_status = 0;
klauss 128:3ae1c74773a8 2166 warn_back = 0;
klauss 128:3ae1c74773a8 2167 wait_to_warn = 0;
klauss 128:3ae1c74773a8 2168 pwr_src_client.sendTo( pwr_src_server, "mainpowerisback", strlen( "mainpowerisback" ) );
klauss 128:3ae1c74773a8 2169 debug_msg( "Main power is BACK!" );
klauss 128:3ae1c74773a8 2170 }
klauss 128:3ae1c74773a8 2171
klauss 128:3ae1c74773a8 2172 pwr_src_timer.start();
klauss 121:ee02790d00b7 2173 }