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 04 17:25:29 2015 +0000
Revision:
120:770f00554b1e
Child:
121:ee02790d00b7
clock request to server XXX port 123

Who changed what in which revision?

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