Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Committer:
klauss
Date:
Tue Apr 07 18:26:21 2015 +0000
Revision:
111:c0833f2455ed
Parent:
109:a5b8264ffbbc
Child:
112:6ae726539ab9
wip bl with bt

Who changed what in which revision?

UserRevisionLine numberNew contents of line
klauss 109:a5b8264ffbbc 1 #include "telemetry.h"
klauss 109:a5b8264ffbbc 2 #include "eth.h"
klauss 109:a5b8264ffbbc 3 #include "bits.h"
klauss 109:a5b8264ffbbc 4 #include "UART3Interrupt.h" // for RXBuffer[ __CB_BUFFER_SIZE__ ];
klauss 109:a5b8264ffbbc 5 #include "utils.h"
klauss 109:a5b8264ffbbc 6 #include "parallelcpld.h"
klauss 109:a5b8264ffbbc 7 #include "debug.h"
klauss 109:a5b8264ffbbc 8 #include "flood.h"
klauss 109:a5b8264ffbbc 9 #include "bootloader_cbx.h"
klauss 109:a5b8264ffbbc 10 #include "call_manager.h"
klauss 109:a5b8264ffbbc 11 #include "call_box_manager.h"
klauss 109:a5b8264ffbbc 12 #include "sip_manager.h"
klauss 109:a5b8264ffbbc 13 #include "shared_variables.h"
klauss 109:a5b8264ffbbc 14 #include "prompt.h"
klauss 109:a5b8264ffbbc 15 #include "configs.h"
klauss 109:a5b8264ffbbc 16 #include "sdram.h"
klauss 109:a5b8264ffbbc 17 #include "fw.h"
klauss 111:c0833f2455ed 18 #include "bootloader.h"
klauss 0:4d17cd9c8f9d 19
klauss 87:679ee0d594a9 20 volatile u16_t lpc_low_level_input_counter = 0;
klauss 85:b6f2dc1d0f4f 21
klauss 91:c2a86b1f8aaa 22 int main()
klauss 109:a5b8264ffbbc 23 {
klauss 81:3656f00ab3db 24 init_wdt();
klauss 91:c2a86b1f8aaa 25
klauss 81:3656f00ab3db 26 config_lpc();
klauss 91:c2a86b1f8aaa 27
klauss 0:4d17cd9c8f9d 28 start_cpld();
klauss 91:c2a86b1f8aaa 29
klauss 100:09a23fcd3bdf 30 debug_uart3 = true;
klauss 91:c2a86b1f8aaa 31 if( sdram_init() == 1 ) {
klauss 109:a5b8264ffbbc 32 send_msg("******* Failed to initialize SDRAM *******");
klauss 87:679ee0d594a9 33 return 1;
klauss 89:0fe315117b00 34 } else {
klauss 109:a5b8264ffbbc 35 send_msg("******* Success to initialize SDRAM *******");
klauss 87:679ee0d594a9 36 }
klauss 91:c2a86b1f8aaa 37
klauss 43:455522f98de5 38 init_fsystem();
klauss 91:c2a86b1f8aaa 39
klauss 89:0fe315117b00 40 {
klauss 89:0fe315117b00 41 char s[ 32 ];
klauss 89:0fe315117b00 42 mbed_mac_address( s );
klauss 109:a5b8264ffbbc 43 send_msg( "::Mac::%02x:%02x:%02x:%02x:%02x:%02x:: ", s[0],s[1],s[2],s[3],s[4],s[5] );
klauss 89:0fe315117b00 44 }
klauss 91:c2a86b1f8aaa 45
klauss 78:1353744f01e1 46 short int eth_status = __init_eth__();
klauss 91:c2a86b1f8aaa 47 if( eth_status ) {
klauss 109:a5b8264ffbbc 48 send_msg("******* Cannot connect to eth *******");
klauss 91:c2a86b1f8aaa 49 } else {
klauss 109:a5b8264ffbbc 50 send_msg("******* Connection eth - ok *******");
klauss 78:1353744f01e1 51 init_prompt_eth();
klauss 111:c0833f2455ed 52 init_external_wdt();
klauss 111:c0833f2455ed 53 init_bl();
klauss 8:e3bfe62a477e 54 }
klauss 91:c2a86b1f8aaa 55
klauss 78:1353744f01e1 56 Timer sync_timer, led_sync_timer;
klauss 109:a5b8264ffbbc 57 sync_timer.start(), led_sync_timer.start();
klauss 91:c2a86b1f8aaa 58
klauss 109:a5b8264ffbbc 59 /* representa ramal do call box */
klauss 0:4d17cd9c8f9d 60 int ext = 0;
klauss 91:c2a86b1f8aaa 61
klauss 109:a5b8264ffbbc 62 /* representa porta do call box */
klauss 78:1353744f01e1 63 int port = 0;
klauss 91:c2a86b1f8aaa 64
klauss 109:a5b8264ffbbc 65 /* buffer para onde se copia os dados vindos do cb para tratameno interno */
klauss 109:a5b8264ffbbc 66 uint8_t buffer[ __CB_BUFFER_SIZE__ ];
klauss 91:c2a86b1f8aaa 67
klauss 109:a5b8264ffbbc 68 /* buffer de escrita do pacote de saida que sera enviado pro cb / servidor */
klauss 109:a5b8264ffbbc 69 uint8_t write_buffer[ __CB_BUFFER_SIZE__ ];
klauss 91:c2a86b1f8aaa 70
klauss 109:a5b8264ffbbc 71 /* ponteiro que aponta para os dados vindo do CPLD */
klauss 0:4d17cd9c8f9d 72 uint8_t * buffer_from_cb_ptr = ( uint8_t * )RXBuffer;
klauss 91:c2a86b1f8aaa 73
klauss 109:a5b8264ffbbc 74 /* Armazena o ultimo pacote recebido dos CBx */
klauss 109:a5b8264ffbbc 75 uint8_t cb_rx_buffer[ __CB_BUFFER_SIZE__ ];
klauss 91:c2a86b1f8aaa 76
klauss 109:a5b8264ffbbc 77 /* referencia para os dados contidos no pacote, sem o header */
klauss 0:4d17cd9c8f9d 78 uint8_t * data = NULL;
klauss 91:c2a86b1f8aaa 79
klauss 109:a5b8264ffbbc 80 /* gerencia o tipo do pacote para providenciar tratamento adequado */
klauss 0:4d17cd9c8f9d 81 volatile uint8_t type = __DO_NOTHING__;
klauss 91:c2a86b1f8aaa 82
klauss 109:a5b8264ffbbc 83 /* representa a lista dos Call Boxes atualmente recfonhecidos pela cabeceira */
klauss 0:4d17cd9c8f9d 84 Vector * v_cb = new Vector();
klauss 91:c2a86b1f8aaa 85
klauss 109:a5b8264ffbbc 86 /* representa a lista de ligacoes ativas na cabeceira */
klauss 0:4d17cd9c8f9d 87 Vector * v_call = new Vector();
klauss 91:c2a86b1f8aaa 88
klauss 109:a5b8264ffbbc 89 /* gerencia a distribuicao de timeslice para os call boxes */
klauss 0:4d17cd9c8f9d 90 Timeslice * ts = new Timeslice();
klauss 91:c2a86b1f8aaa 91 if( ts == NULL ) {
klauss 89:0fe315117b00 92 memory_is_over = true;
klauss 89:0fe315117b00 93 if( debug_memory ) debug_msg("TS allocation fail");
klauss 89:0fe315117b00 94 }
klauss 91:c2a86b1f8aaa 95
klauss 109:a5b8264ffbbc 96 /* instancia o vetor de call boxes // calls */
klauss 91:c2a86b1f8aaa 97 if( v_cb == NULL ) {
klauss 91:c2a86b1f8aaa 98 while( v_cb == NULL ) {
klauss 0:4d17cd9c8f9d 99 Vector * v_cb = new Vector();
klauss 91:c2a86b1f8aaa 100 if( sync_timer.read() > 5 ) {
klauss 48:195c97f12e8e 101 send_msg("Erro ao alocar o vetor de CBx");
klauss 78:1353744f01e1 102 sync_timer.reset();
klauss 0:4d17cd9c8f9d 103 }
klauss 0:4d17cd9c8f9d 104 }
klauss 109:a5b8264ffbbc 105 } else if( v_call == NULL ) {
klauss 91:c2a86b1f8aaa 106 while( v_call == NULL ) {
klauss 0:4d17cd9c8f9d 107 Vector * v_call = new Vector();
klauss 91:c2a86b1f8aaa 108 if( sync_timer.read() > 5 ) {
klauss 48:195c97f12e8e 109 send_msg("Erro ao alocar o vetor de Calls");
klauss 78:1353744f01e1 110 sync_timer.reset();
klauss 0:4d17cd9c8f9d 111 }
klauss 0:4d17cd9c8f9d 112 }
klauss 0:4d17cd9c8f9d 113 }
klauss 91:c2a86b1f8aaa 114
klauss 91:c2a86b1f8aaa 115 if( v_cb == NULL ) {
klauss 89:0fe315117b00 116 memory_is_over = true;
klauss 89:0fe315117b00 117 if( debug_memory ) debug_msg("Call_Box vector allocation fail");
klauss 89:0fe315117b00 118 }
klauss 91:c2a86b1f8aaa 119
klauss 91:c2a86b1f8aaa 120 if( v_call == NULL ) {
klauss 89:0fe315117b00 121 memory_is_over = true;
klauss 89:0fe315117b00 122 if( debug_memory ) debug_msg("Call vector allocation fail");
klauss 89:0fe315117b00 123 }
klauss 91:c2a86b1f8aaa 124
klauss 109:a5b8264ffbbc 125 for( register uint16_t i = 0; i < __CB_BUFFER_SIZE__; i++ ) {
klauss 63:0d95da692bb4 126 cb_rx_buffer[ i ] = 0;
klauss 63:0d95da692bb4 127 cb_tx_buffer[ i ] = 0;
klauss 63:0d95da692bb4 128 }
klauss 91:c2a86b1f8aaa 129
klauss 0:4d17cd9c8f9d 130 reset_leds();
klauss 91:c2a86b1f8aaa 131
klauss 33:735fd60e96d8 132 udp_timer.start();
klauss 109:a5b8264ffbbc 133
klauss 109:a5b8264ffbbc 134 init_telemetry_handler();
klauss 99:e80850c51106 135
klauss 109:a5b8264ffbbc 136 //debug_msg("");
klauss 99:e80850c51106 137 init_fw_handler();
klauss 109:a5b8264ffbbc 138 //debug_msg("");
klauss 99:e80850c51106 139
klauss 99:e80850c51106 140 led2 = 0;
klauss 81:3656f00ab3db 141 init_ranges();
klauss 109:a5b8264ffbbc 142
klauss 80:61d61c9eb75c 143 init_refresh();
klauss 91:c2a86b1f8aaa 144
klauss 78:1353744f01e1 145 init_aging();
klauss 91:c2a86b1f8aaa 146
klauss 89:0fe315117b00 147 init_sync_refresh();
klauss 91:c2a86b1f8aaa 148
klauss 109:a5b8264ffbbc 149 //init_invite_pgk_retry_manager();
klauss 109:a5b8264ffbbc 150
klauss 109:a5b8264ffbbc 151 //void init_bye_pgk_retry_manager();
klauss 109:a5b8264ffbbc 152
klauss 62:07e5bdc9f8f7 153 static uint8_t count = 0;
klauss 91:c2a86b1f8aaa 154
klauss 109:a5b8264ffbbc 155 //short int bl_ret = init_bl_handler();
klauss 109:a5b8264ffbbc 156 //if( dbl ) send_msg("Valor de retorno do bl_habdler = %d", bl_ret );
klauss 109:a5b8264ffbbc 157
klauss 78:1353744f01e1 158 uint8_t max_registered_cbx = 0;
klauss 91:c2a86b1f8aaa 159
klauss 81:3656f00ab3db 160 bool wake_all = false;
klauss 91:c2a86b1f8aaa 161
klauss 81:3656f00ab3db 162 uint16_t pkg_wdt = RX_CB_IDLE;
klauss 81:3656f00ab3db 163 uint16_t eth_wdt = ETH_CONNECT_TIMEOUT;
klauss 109:a5b8264ffbbc 164 uint32_t uptime = 0;
klauss 109:a5b8264ffbbc 165 led1 = 0;
klauss 109:a5b8264ffbbc 166 send_msg("Ready");
klauss 109:a5b8264ffbbc 167
klauss 109:a5b8264ffbbc 168 //bool registry_test = false;
klauss 109:a5b8264ffbbc 169 //static int next_value = 5002;
klauss 109:a5b8264ffbbc 170 //static int nex_test_registry = next_value;
klauss 105:a930035b6556 171
klauss 109:a5b8264ffbbc 172 //bool invite_retry_time = false;
klauss 99:e80850c51106 173 Timer invite_retry_timer;
klauss 99:e80850c51106 174 invite_retry_timer.start();
klauss 109:a5b8264ffbbc 175 debug_uart3 = false;
klauss 105:a930035b6556 176
klauss 109:a5b8264ffbbc 177 Timer test_timer;
klauss 91:c2a86b1f8aaa 178
klauss 78:1353744f01e1 179 /*------------------------------------------ main loop ---------------------------------------------------------------*/
klauss 91:c2a86b1f8aaa 180 while( true ) {
klauss 109:a5b8264ffbbc 181 reset_leds();
klauss 109:a5b8264ffbbc 182 // need be removed;
klauss 99:e80850c51106 183
klauss 78:1353744f01e1 184 if( v_cb->size() > max_registered_cbx ) max_registered_cbx = v_cb->size();
klauss 91:c2a86b1f8aaa 185
klauss 91:c2a86b1f8aaa 186 if( sync_timer.read() > 5 ) {
klauss 78:1353744f01e1 187 sync_timer.reset();
klauss 91:c2a86b1f8aaa 188
klauss 91:c2a86b1f8aaa 189 if( debug_cks == true ) {
klauss 81:3656f00ab3db 190 pcks_s = true;
klauss 78:1353744f01e1 191 }
klauss 91:c2a86b1f8aaa 192
klauss 91:c2a86b1f8aaa 193 if( debug_alive == true ) {
klauss 81:3656f00ab3db 194 pshowcb = true;
klauss 78:1353744f01e1 195 }
klauss 100:09a23fcd3bdf 196
klauss 109:a5b8264ffbbc 197
klauss 105:a930035b6556 198 {
klauss 109:a5b8264ffbbc 199 // debug_msg("Enviei");
klauss 109:a5b8264ffbbc 200 // send2callboxes( __build_cb_package__( 5000, 5000, __INVITE__,
klauss 109:a5b8264ffbbc 201 // ( char * )buffer, 0x12, __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
klauss 109:a5b8264ffbbc 202 // v_cb -> add ( new Call_Box ( 5010, 5010 ) );
klauss 105:a930035b6556 203 }
klauss 105:a930035b6556 204
klauss 109:a5b8264ffbbc 205 if( !( ++count % 15 ) ) {
klauss 91:c2a86b1f8aaa 206 if( eth_status ) {
klauss 78:1353744f01e1 207 eth_status = __init_eth__();
klauss 91:c2a86b1f8aaa 208 if( eth_status ) {
klauss 109:a5b8264ffbbc 209 if( debug_main ) debug_msg("Cannot connect to eth");
klauss 91:c2a86b1f8aaa 210 } else {
klauss 109:a5b8264ffbbc 211 if( debug_main ) debug_msg("Connection eth - ok");
klauss 78:1353744f01e1 212 init_prompt_eth();
klauss 111:c0833f2455ed 213 init_external_wdt();
klauss 111:c0833f2455ed 214 init_bl();
klauss 78:1353744f01e1 215 }
klauss 78:1353744f01e1 216 }
klauss 78:1353744f01e1 217 }
klauss 100:09a23fcd3bdf 218
klauss 109:a5b8264ffbbc 219 //35 sec.
klauss 91:c2a86b1f8aaa 220 if( ( count > 7 ) && ( wake_all == false ) ) {
klauss 81:3656f00ab3db 221 wake_all = true;
klauss 78:1353744f01e1 222 if( debug_wake == true ) send_msg( "Time to wake" );
klauss 78:1353744f01e1 223 }
klauss 109:a5b8264ffbbc 224 }
klauss 91:c2a86b1f8aaa 225
klauss 109:a5b8264ffbbc 226 //FIXMEj colocar uma condicao aqui caso necessario pra nao comprometer ligacoes ...
klauss 109:a5b8264ffbbc 227 prompt_process( NULL );
klauss 109:a5b8264ffbbc 228
klauss 91:c2a86b1f8aaa 229 if( r_stats ) {
klauss 91:c2a86b1f8aaa 230 boot_counter = 0;
klauss 91:c2a86b1f8aaa 231 registry_counter = 0;
klauss 91:c2a86b1f8aaa 232 invite_counter = 0;
klauss 91:c2a86b1f8aaa 233 audio_counter = 0;
klauss 91:c2a86b1f8aaa 234 telemetry_counter = 0;
klauss 91:c2a86b1f8aaa 235 cb_bye_counter = 0;
klauss 91:c2a86b1f8aaa 236 prompt_counter = 0;
klauss 91:c2a86b1f8aaa 237 flood_counter = 0;
klauss 67:cdedc64d9921 238 bootloader_cbx_counter = 0;
klauss 99:e80850c51106 239 cb_stats_counter = 0;
klauss 63:0d95da692bb4 240 r_stats = false;
klauss 63:0d95da692bb4 241 stats = true;
klauss 63:0d95da692bb4 242 }
klauss 91:c2a86b1f8aaa 243
klauss 91:c2a86b1f8aaa 244 if( stats ) {
klauss 63:0d95da692bb4 245 char str[ 200 ];
klauss 109:a5b8264ffbbc 246 snprintf( str, 200, "\n\rReceived Pkgs::\n\r Boot :: %u\n\r Registry :: %u\n\r Invite :: %u\n\r Audio :: %u\n\r Telemetry :: %u\n\r CB_stats :: %u\n\r CB_bye :: %u\n\r Prompt :: %u\n\r Flood :: %u\n\r Bootloader_cbx :: %u\n\r",
klauss 109:a5b8264ffbbc 247 boot_counter, registry_counter, invite_counter, audio_counter, telemetry_counter, cb_stats_counter, cb_bye_counter, prompt_counter, flood_counter, bootloader_cbx_counter );
klauss 63:0d95da692bb4 248 send_msg( str );
klauss 63:0d95da692bb4 249 stats =false;
klauss 63:0d95da692bb4 250 }
klauss 109:a5b8264ffbbc 251
klauss 109:a5b8264ffbbc 252 if( list ) {
klauss 78:1353744f01e1 253 uint8_t missed_cb = ( ( max_ext - min_ext ) + 1 ) - v_cb->size();
klauss 91:c2a86b1f8aaa 254
klauss 78:1353744f01e1 255 if( ( max_ext % 2 ) == 0 ) missed_cb++;
klauss 91:c2a86b1f8aaa 256
klauss 78:1353744f01e1 257 if( min_ext % 2 ) missed_cb++;
klauss 91:c2a86b1f8aaa 258
klauss 78:1353744f01e1 259 if( min_ext == 0 && max_ext == 0 ) missed_cb = 0;
klauss 91:c2a86b1f8aaa 260
klauss 78:1353744f01e1 261 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 91:c2a86b1f8aaa 262 if( v_cb->size() == 1 ) {
klauss 78:1353744f01e1 263 send_msg(" %d ", ( ( Call_Box * )v_cb->get_element( 0 ) )->get_ext() );
klauss 91:c2a86b1f8aaa 264 } else if( v_cb->size() > 1 ) {
klauss 62:07e5bdc9f8f7 265 char str[ 1024 ];
klauss 78:1353744f01e1 266 int ext_list[ __MAX_CB_IN_A_BRANCH__ ];
klauss 62:07e5bdc9f8f7 267 register int i = 0;
klauss 91:c2a86b1f8aaa 268 for( ; i < v_cb->size(); i++ ) {
klauss 78:1353744f01e1 269 ext_list[ i ] = ( ( Call_Box * )v_cb->get_element( i ) )->get_ext();
klauss 62:07e5bdc9f8f7 270 }
klauss 91:c2a86b1f8aaa 271
klauss 62:07e5bdc9f8f7 272 qsort( ext_list, v_cb->size(), sizeof( int ), ls_comp );
klauss 91:c2a86b1f8aaa 273
klauss 62:07e5bdc9f8f7 274 char aux[ 16 ];
klauss 78:1353744f01e1 275 strcpy( str, "\r\n> " );
klauss 91:c2a86b1f8aaa 276 for( i = 0; i < v_cb->size() - 1; i++ ) {
klauss 62:07e5bdc9f8f7 277 sprintf( aux, "%i, ", ext_list[ i ] );
klauss 62:07e5bdc9f8f7 278 strcat( str, aux );
klauss 78:1353744f01e1 279 if( ( i != 0 ) && !( ( i + 1 ) % 16 ) ) strcat( str, "\r\n> " );
klauss 62:07e5bdc9f8f7 280 }
klauss 62:07e5bdc9f8f7 281 sprintf( aux, "%i ", ext_list[ i ] );
klauss 62:07e5bdc9f8f7 282 strcat( str, aux );
klauss 62:07e5bdc9f8f7 283 send_msg( "%s", str );
klauss 62:07e5bdc9f8f7 284 }
klauss 91:c2a86b1f8aaa 285 list = false;
klauss 109:a5b8264ffbbc 286 }
klauss 109:a5b8264ffbbc 287
klauss 106:a34fcf9f0e02 288 if( long_list )
klauss 106:a34fcf9f0e02 289 {
klauss 106:a34fcf9f0e02 290 uint8_t missed_cb = ( ( max_ext - min_ext ) + 1 ) - v_cb->size();
klauss 91:c2a86b1f8aaa 291
klauss 106:a34fcf9f0e02 292 if( ( max_ext % 2 ) == 0 ) missed_cb++;
klauss 106:a34fcf9f0e02 293
klauss 106:a34fcf9f0e02 294 if( min_ext % 2 ) missed_cb++;
klauss 106:a34fcf9f0e02 295
klauss 106:a34fcf9f0e02 296 if( min_ext == 0 && max_ext == 0 ) missed_cb = 0;
klauss 106:a34fcf9f0e02 297
klauss 106:a34fcf9f0e02 298 {
klauss 106:a34fcf9f0e02 299 int ext_list[ __MAX_CB_IN_A_BRANCH__ ];
klauss 106:a34fcf9f0e02 300
klauss 106:a34fcf9f0e02 301 if( v_cb->size() >= 1 ) {
klauss 106:a34fcf9f0e02 302 for( register int i = 0; i < v_cb->size(); i++ )
klauss 106:a34fcf9f0e02 303 {
klauss 106:a34fcf9f0e02 304 ext_list[ i ] = ( ( Call_Box * )v_cb->get_element( i ) )->get_ext();
klauss 106:a34fcf9f0e02 305 }
klauss 106:a34fcf9f0e02 306 qsort( ext_list, v_cb->size(), sizeof( int ), ls_comp );
klauss 106:a34fcf9f0e02 307 }
klauss 106:a34fcf9f0e02 308
klauss 106:a34fcf9f0e02 309 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 106:a34fcf9f0e02 310
klauss 106:a34fcf9f0e02 311 for( register uint8_t i = 0; i < v_cb->size(); i++ ) {
klauss 106:a34fcf9f0e02 312
klauss 106:a34fcf9f0e02 313 Call_Box * cb = __find_CB__( v_cb, ext_list[ i ] );
klauss 106:a34fcf9f0e02 314
klauss 106:a34fcf9f0e02 315 if( cb != NULL )
klauss 106:a34fcf9f0e02 316 {
klauss 106:a34fcf9f0e02 317 char cb_status[ 32 ];
klauss 106:a34fcf9f0e02 318 char cb_sip_status[ 32 ];
klauss 106:a34fcf9f0e02 319 switch( cb->status ) {
klauss 106:a34fcf9f0e02 320 case cb_idle : {
klauss 106:a34fcf9f0e02 321 strcpy( cb_status, "cb_idle" );
klauss 106:a34fcf9f0e02 322 break;
klauss 106:a34fcf9f0e02 323 }
klauss 106:a34fcf9f0e02 324 case cb_ringing : {
klauss 106:a34fcf9f0e02 325 strcpy( cb_status, "cb_ringing" );
klauss 106:a34fcf9f0e02 326 break;
klauss 106:a34fcf9f0e02 327 }
klauss 106:a34fcf9f0e02 328 case cb_trying : {
klauss 106:a34fcf9f0e02 329 strcpy( cb_status,"cb_trying" );
klauss 106:a34fcf9f0e02 330 break;
klauss 106:a34fcf9f0e02 331 }
klauss 106:a34fcf9f0e02 332 case cb_on_call : {
klauss 106:a34fcf9f0e02 333 strcpy( cb_status, "cb_on_call" );
klauss 106:a34fcf9f0e02 334 break;
klauss 106:a34fcf9f0e02 335 }
klauss 106:a34fcf9f0e02 336 case cb_busy : {
klauss 106:a34fcf9f0e02 337 strcpy( cb_status, "cb_busy" );
klauss 106:a34fcf9f0e02 338 break;
klauss 106:a34fcf9f0e02 339 }
klauss 106:a34fcf9f0e02 340 case cb_denied : {
klauss 106:a34fcf9f0e02 341 strcpy( cb_status, "cb_denied" );
klauss 106:a34fcf9f0e02 342 break;
klauss 106:a34fcf9f0e02 343 }
klauss 106:a34fcf9f0e02 344 }
klauss 106:a34fcf9f0e02 345 switch( cb->sip->status ) {
klauss 106:a34fcf9f0e02 346 case sip_idle : {
klauss 106:a34fcf9f0e02 347 strcpy( cb_sip_status, "sip_idle" );
klauss 106:a34fcf9f0e02 348 break;
klauss 106:a34fcf9f0e02 349 }
klauss 106:a34fcf9f0e02 350 case sip_waiting_trying : {
klauss 106:a34fcf9f0e02 351 strcpy( cb_sip_status, "sip_waiting_trying" );
klauss 106:a34fcf9f0e02 352 break;
klauss 106:a34fcf9f0e02 353 }
klauss 106:a34fcf9f0e02 354 case sip_trying : {
klauss 106:a34fcf9f0e02 355 strcpy( cb_sip_status, "sip_trying" );
klauss 106:a34fcf9f0e02 356 break;
klauss 106:a34fcf9f0e02 357 }
klauss 106:a34fcf9f0e02 358 case sip_ringing : {
klauss 106:a34fcf9f0e02 359 strcpy( cb_sip_status, "sip_ringing" );
klauss 106:a34fcf9f0e02 360 break;
klauss 106:a34fcf9f0e02 361 }
klauss 106:a34fcf9f0e02 362 case sip_busy : {
klauss 106:a34fcf9f0e02 363 strcpy( cb_sip_status, "sip_busy" );
klauss 106:a34fcf9f0e02 364 break;
klauss 106:a34fcf9f0e02 365 }
klauss 106:a34fcf9f0e02 366 case sip_ok : {
klauss 106:a34fcf9f0e02 367 strcpy( cb_sip_status, "sip_ok" );
klauss 106:a34fcf9f0e02 368 break;
klauss 106:a34fcf9f0e02 369 }
klauss 106:a34fcf9f0e02 370 case sip_on_call : {
klauss 106:a34fcf9f0e02 371 strcpy( cb_sip_status, "sip_on_call" );
klauss 106:a34fcf9f0e02 372 break;
klauss 106:a34fcf9f0e02 373 }
klauss 106:a34fcf9f0e02 374 case sip_denied : {
klauss 106:a34fcf9f0e02 375 strcpy( cb_sip_status, "sip_denied" );
klauss 106:a34fcf9f0e02 376 break;
klauss 106:a34fcf9f0e02 377 }
klauss 106:a34fcf9f0e02 378 }
klauss 106:a34fcf9f0e02 379 char cbx_to_string[ 254 ];
klauss 106:a34fcf9f0e02 380 char aux[ 16 ];
klauss 106:a34fcf9f0e02 381 strcpy( cbx_to_string, "Ext :: " );
klauss 106:a34fcf9f0e02 382 itoa( cb->get_ext(), aux , 10 );
klauss 106:a34fcf9f0e02 383 strcat( cbx_to_string, aux );
klauss 106:a34fcf9f0e02 384 strcat( cbx_to_string, " :: Port :: " );
klauss 106:a34fcf9f0e02 385 itoa( cb->get_port(), aux , 10 );
klauss 106:a34fcf9f0e02 386 strcat( cbx_to_string, aux );
klauss 106:a34fcf9f0e02 387 strcat( cbx_to_string, " :: Status -- " );
klauss 106:a34fcf9f0e02 388 strcat( cbx_to_string, cb_status );
klauss 106:a34fcf9f0e02 389 strcat( cbx_to_string, " - " );
klauss 106:a34fcf9f0e02 390 strcat( cbx_to_string, cb_sip_status );
klauss 106:a34fcf9f0e02 391 if( cb->get_timeslice() != 0 ) {
klauss 106:a34fcf9f0e02 392 strcat( cbx_to_string, " -- on TimeSlice :: " );
klauss 106:a34fcf9f0e02 393 itoa( cb->get_timeslice(), aux , 10 );
klauss 106:a34fcf9f0e02 394 strcat( cbx_to_string, aux );
klauss 106:a34fcf9f0e02 395 }
klauss 106:a34fcf9f0e02 396 send_msg( cbx_to_string );
klauss 106:a34fcf9f0e02 397 }
klauss 106:a34fcf9f0e02 398 }
klauss 106:a34fcf9f0e02 399
klauss 106:a34fcf9f0e02 400 }
klauss 91:c2a86b1f8aaa 401 long_list = false;
klauss 52:12930cef17c4 402 }
klauss 91:c2a86b1f8aaa 403
klauss 109:a5b8264ffbbc 404 if( pshowcb == true ) {
klauss 78:1353744f01e1 405 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 91:c2a86b1f8aaa 406 for( register uint8_t i = 0; i < v_cb->size(); i++ ) {
klauss 30:8dfb6d8de53d 407 Call_Box * cb = ( Call_Box * )v_cb->get_element( i );
klauss 78:1353744f01e1 408 char cb_status[ 32 ];
klauss 78:1353744f01e1 409 char cb_sip_status[ 32 ];
klauss 91:c2a86b1f8aaa 410 switch( cb->status ) {
klauss 91:c2a86b1f8aaa 411 case cb_idle : {
klauss 91:c2a86b1f8aaa 412 strcpy( cb_status, "cb_idle" );
klauss 91:c2a86b1f8aaa 413 break;
klauss 91:c2a86b1f8aaa 414 }
klauss 91:c2a86b1f8aaa 415 case cb_ringing : {
klauss 91:c2a86b1f8aaa 416 strcpy( cb_status, "cb_ringing" );
klauss 91:c2a86b1f8aaa 417 break;
klauss 91:c2a86b1f8aaa 418 }
klauss 91:c2a86b1f8aaa 419 case cb_trying : {
klauss 91:c2a86b1f8aaa 420 strcpy( cb_status,"cb_trying" );
klauss 91:c2a86b1f8aaa 421 break;
klauss 91:c2a86b1f8aaa 422 }
klauss 91:c2a86b1f8aaa 423 case cb_on_call : {
klauss 91:c2a86b1f8aaa 424 strcpy( cb_status, "cb_on_call" );
klauss 91:c2a86b1f8aaa 425 break;
klauss 91:c2a86b1f8aaa 426 }
klauss 91:c2a86b1f8aaa 427 case cb_busy : {
klauss 91:c2a86b1f8aaa 428 strcpy( cb_status, "cb_busy" );
klauss 91:c2a86b1f8aaa 429 break;
klauss 91:c2a86b1f8aaa 430 }
klauss 91:c2a86b1f8aaa 431 case cb_denied : {
klauss 91:c2a86b1f8aaa 432 strcpy( cb_status, "cb_denied" );
klauss 91:c2a86b1f8aaa 433 break;
klauss 91:c2a86b1f8aaa 434 }
klauss 78:1353744f01e1 435 }
klauss 91:c2a86b1f8aaa 436 switch( cb->sip->status ) {
klauss 91:c2a86b1f8aaa 437 case sip_idle : {
klauss 91:c2a86b1f8aaa 438 strcpy( cb_sip_status, "sip_idle" );
klauss 91:c2a86b1f8aaa 439 break;
klauss 91:c2a86b1f8aaa 440 }
klauss 91:c2a86b1f8aaa 441 case sip_waiting_trying : {
klauss 91:c2a86b1f8aaa 442 strcpy( cb_sip_status, "sip_waiting_trying" );
klauss 91:c2a86b1f8aaa 443 break;
klauss 91:c2a86b1f8aaa 444 }
klauss 91:c2a86b1f8aaa 445 case sip_trying : {
klauss 91:c2a86b1f8aaa 446 strcpy( cb_sip_status, "sip_trying" );
klauss 91:c2a86b1f8aaa 447 break;
klauss 91:c2a86b1f8aaa 448 }
klauss 91:c2a86b1f8aaa 449 case sip_ringing : {
klauss 91:c2a86b1f8aaa 450 strcpy( cb_sip_status, "sip_ringing" );
klauss 91:c2a86b1f8aaa 451 break;
klauss 91:c2a86b1f8aaa 452 }
klauss 91:c2a86b1f8aaa 453 case sip_busy : {
klauss 91:c2a86b1f8aaa 454 strcpy( cb_sip_status, "sip_busy" );
klauss 91:c2a86b1f8aaa 455 break;
klauss 91:c2a86b1f8aaa 456 }
klauss 91:c2a86b1f8aaa 457 case sip_ok : {
klauss 91:c2a86b1f8aaa 458 strcpy( cb_sip_status, "sip_ok" );
klauss 91:c2a86b1f8aaa 459 break;
klauss 91:c2a86b1f8aaa 460 }
klauss 91:c2a86b1f8aaa 461 case sip_on_call : {
klauss 91:c2a86b1f8aaa 462 strcpy( cb_sip_status, "sip_on_call" );
klauss 91:c2a86b1f8aaa 463 break;
klauss 91:c2a86b1f8aaa 464 }
klauss 91:c2a86b1f8aaa 465 case sip_denied : {
klauss 91:c2a86b1f8aaa 466 strcpy( cb_sip_status, "sip_denied" );
klauss 91:c2a86b1f8aaa 467 break;
klauss 91:c2a86b1f8aaa 468 }
klauss 78:1353744f01e1 469 }
klauss 78:1353744f01e1 470 char cbx_to_string[ 254 ];
klauss 78:1353744f01e1 471 char aux[ 16 ];
klauss 78:1353744f01e1 472 strcpy( cbx_to_string, "Ext :: " );
klauss 78:1353744f01e1 473 itoa( cb->get_ext(), aux , 10 );
klauss 98:43b45f26b430 474 strcat( cbx_to_string, aux );
klauss 97:8985817e8847 475 strcat( cbx_to_string, " :: Port :: " );
klauss 97:8985817e8847 476 itoa( cb->get_port(), aux , 10 );
klauss 78:1353744f01e1 477 strcat( cbx_to_string, aux );
klauss 78:1353744f01e1 478 strcat( cbx_to_string, " :: Status -- " );
klauss 78:1353744f01e1 479 strcat( cbx_to_string, cb_status );
klauss 78:1353744f01e1 480 strcat( cbx_to_string, " - " );
klauss 78:1353744f01e1 481 strcat( cbx_to_string, cb_sip_status );
klauss 91:c2a86b1f8aaa 482 if( cb->get_timeslice() != 0 ) {
klauss 78:1353744f01e1 483 strcat( cbx_to_string, " -- on TimeSlice :: " );
klauss 78:1353744f01e1 484 itoa( cb->get_timeslice(), aux , 10 );
klauss 78:1353744f01e1 485 strcat( cbx_to_string, aux );
klauss 78:1353744f01e1 486 }
klauss 78:1353744f01e1 487 send_msg( cbx_to_string );
klauss 48:195c97f12e8e 488 }
klauss 78:1353744f01e1 489 pshowcb = false;
klauss 48:195c97f12e8e 490 }
klauss 97:8985817e8847 491
klauss 97:8985817e8847 492 if( show_sip == true ){
klauss 97:8985817e8847 493 show_sip = false;
klauss 99:e80850c51106 494 send_msg(":: Sip :: %u", v_cb->size() );
klauss 97:8985817e8847 495 for( register uint8_t i = 0; i < v_cb->size(); i++ ) {
klauss 97:8985817e8847 496 Call_Box * cb = ( Call_Box * )v_cb->get_element( i );
klauss 109:a5b8264ffbbc 497 send_msg("ext :: %d -- port :: %d -- timer %d", cb->get_sip_ext(), cb->get_sip_port(), cb->get_timer() );
klauss 97:8985817e8847 498 }
klauss 97:8985817e8847 499 }
klauss 91:c2a86b1f8aaa 500
klauss 81:3656f00ab3db 501 if( pflood == true ) flood();
klauss 91:c2a86b1f8aaa 502
klauss 91:c2a86b1f8aaa 503 if( debug_eth ) {
klauss 81:3656f00ab3db 504 debug_eth = false;
klauss 81:3656f00ab3db 505 send_msg("Eth status %s", ( eth_status == 0 ) ? "Connected" : "Disconnected" );
klauss 81:3656f00ab3db 506 }
klauss 91:c2a86b1f8aaa 507
klauss 91:c2a86b1f8aaa 508 if( status != __WAITING__ ) {
klauss 81:3656f00ab3db 509 pkg_wdt = RX_CB_IDLE;
klauss 109:a5b8264ffbbc 510 xmemcpy( cb_rx_buffer, buffer_from_cb_ptr, __CB_BUFFER_SIZE__ );
klauss 0:4d17cd9c8f9d 511 status = __WAITING__;
klauss 81:3656f00ab3db 512 missed_pkg--;
klauss 109:a5b8264ffbbc 513 xmemcpy( buffer, cb_rx_buffer, __CB_BUFFER_SIZE__ );
klauss 109:a5b8264ffbbc 514
klauss 109:a5b8264ffbbc 515 /*
klauss 109:a5b8264ffbbc 516 {
klauss 109:a5b8264ffbbc 517 uint16_t e, p;
klauss 109:a5b8264ffbbc 518 e = buffer[0];
klauss 109:a5b8264ffbbc 519 e <<= 8;
klauss 109:a5b8264ffbbc 520 e |= buffer[1];
klauss 109:a5b8264ffbbc 521 p = buffer[2];
klauss 109:a5b8264ffbbc 522 p <<= 8;
klauss 109:a5b8264ffbbc 523 p |= buffer[3];
klauss 109:a5b8264ffbbc 524 //if (e != (p+100)) {
klauss 109:a5b8264ffbbc 525 if( ( buffer[0] == 0x14 ) && ( buffer[1] == 0x0a ) ) {
klauss 109:a5b8264ffbbc 526 int i;
klauss 109:a5b8264ffbbc 527 char s[400], ss[4];;
klauss 109:a5b8264ffbbc 528 strcpy(s,"OPS-PKG:");
klauss 109:a5b8264ffbbc 529 for (i=0; i<40; i++) {
klauss 109:a5b8264ffbbc 530 sprintf(ss," %02x",buffer[i]);
klauss 109:a5b8264ffbbc 531 strcat(s,ss);
klauss 109:a5b8264ffbbc 532 }
klauss 109:a5b8264ffbbc 533 debug_msg( s );
klauss 109:a5b8264ffbbc 534 }
klauss 109:a5b8264ffbbc 535 }
klauss 109:a5b8264ffbbc 536 */
klauss 109:a5b8264ffbbc 537
klauss 109:a5b8264ffbbc 538 if( debug_cpld ) {
klauss 109:a5b8264ffbbc 539 rx = true;
klauss 109:a5b8264ffbbc 540 tx = true;
klauss 109:a5b8264ffbbc 541 }
klauss 91:c2a86b1f8aaa 542
klauss 91:c2a86b1f8aaa 543 if( rx ) {
klauss 81:3656f00ab3db 544 char str[ 1024 ];
klauss 81:3656f00ab3db 545 strcpy( str, "RX :: \n\r " );
klauss 109:a5b8264ffbbc 546 for( register uint16_t i = 0; i < __CB_BUFFER_SIZE__; i++ ) {
klauss 81:3656f00ab3db 547 char tmp[ 16 ];
klauss 81:3656f00ab3db 548 strcat( str, itoa( cb_rx_buffer[ i ], tmp, 16 ) );
klauss 81:3656f00ab3db 549 if( ( i != 0 ) && !( ( i + 1 ) % 50 ) ) strcat( str, "\n\r " );
klauss 91:c2a86b1f8aaa 550
klauss 81:3656f00ab3db 551 else strcat( str, " " );
klauss 81:3656f00ab3db 552 }
klauss 81:3656f00ab3db 553 send_msg( "%s", str );
klauss 91:c2a86b1f8aaa 554 rx = false;
klauss 81:3656f00ab3db 555 }
klauss 91:c2a86b1f8aaa 556
klauss 109:a5b8264ffbbc 557 data = __parse_vz_pkg__( &ext, &port, &type, buffer );
klauss 109:a5b8264ffbbc 558
klauss 91:c2a86b1f8aaa 559 if( data != NULL ) {
klauss 78:1353744f01e1 560 if( min_ext == 0 ) min_ext = ext;
klauss 91:c2a86b1f8aaa 561
klauss 78:1353744f01e1 562 if( ext > max_ext ) max_ext = ext;
klauss 91:c2a86b1f8aaa 563
klauss 78:1353744f01e1 564 if( ext < min_ext ) min_ext = ext;
klauss 99:e80850c51106 565
klauss 99:e80850c51106 566 if( debug_fw ){
klauss 99:e80850c51106 567 fw_cbx_pkg( ext, port, ( char *)buffer );
klauss 99:e80850c51106 568 }
klauss 99:e80850c51106 569
klauss 109:a5b8264ffbbc 570 if( type == __TELEMETRY__ ) telemetry_counter++;
klauss 109:a5b8264ffbbc 571
klauss 109:a5b8264ffbbc 572 if( type != __AUDIO__ ) {
klauss 99:e80850c51106 573 if(
klauss 99:e80850c51106 574 type == __TELEMETRY__ ||
klauss 99:e80850c51106 575 type == __CB_STATS__ ||
klauss 99:e80850c51106 576 type == __FW1__ ||
klauss 99:e80850c51106 577 type == __FW2__ ||
klauss 99:e80850c51106 578 type == __FW3__ ||
klauss 99:e80850c51106 579 type == __FW4__ ||
klauss 99:e80850c51106 580 type == __FW5__ ||
klauss 99:e80850c51106 581 type == __FW6__
klauss 99:e80850c51106 582 ) type = __FW__;
klauss 99:e80850c51106 583
klauss 99:e80850c51106 584 if( debug_cb_rx == true ){
klauss 99:e80850c51106 585 send_msg("Pkg from CBx :: ( %d, %d ) -- Type :: %d", ext, port, type );
klauss 99:e80850c51106 586 }
klauss 99:e80850c51106 587
klauss 0:4d17cd9c8f9d 588 Call_Box * cb = __find_CB__( v_cb, ext );
klauss 91:c2a86b1f8aaa 589 if( cb != NULL ) {
klauss 92:92df17f538a8 590 if( data[ 0 ] & BIT7 ) {
klauss 91:c2a86b1f8aaa 591 if( type == __BOOT__ ) {
klauss 109:a5b8264ffbbc 592 send2callboxes( __build_cb_package__( ext, port, __REGISTRY__,
klauss 109:a5b8264ffbbc 593 ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
klauss 92:92df17f538a8 594 } else {
klauss 81:3656f00ab3db 595 if( debug_main ) debug_msg("Received ack pkg with seq_num %d", data[ 0 ] );
klauss 91:c2a86b1f8aaa 596
klauss 91:c2a86b1f8aaa 597 switch( type ) {
klauss 81:3656f00ab3db 598 case __INVITE__ : {
klauss 81:3656f00ab3db 599 if( debug_main || debug_invite ) debug_msg("Invite Ack from %d on msg_id %d", ext, cb->get_msg_id() );
klauss 109:a5b8264ffbbc 600 //cb->first_invite_response_ok();
klauss 91:c2a86b1f8aaa 601 break;
klauss 81:3656f00ab3db 602 }
klauss 81:3656f00ab3db 603 case __CB_BYE__ : {
klauss 81:3656f00ab3db 604 if( debug_main || debug_invite ) debug_msg("BYE Ack from %d on msg_id %d", ext, cb->get_msg_id() );
klauss 81:3656f00ab3db 605 cb->set_bye_response_ok();
klauss 91:c2a86b1f8aaa 606 break;
klauss 81:3656f00ab3db 607 }
klauss 81:3656f00ab3db 608 case __REGISTRY__ : {
klauss 81:3656f00ab3db 609 if( debug_main || debug_aging ) debug_msg("Registry ACK from %d in pkg :: %d", ext, cb->get_msg_id() );
klauss 81:3656f00ab3db 610 break;
klauss 81:3656f00ab3db 611 }
klauss 81:3656f00ab3db 612 default : {
klauss 91:c2a86b1f8aaa 613 if( debug_main || debug_aging ) debug_msg("ACK from %d in pkg :: %d :: type %d", ext, cb->get_msg_id(), type );
klauss 91:c2a86b1f8aaa 614 }
klauss 81:3656f00ab3db 615 }
klauss 92:92df17f538a8 616 if( type != __REGISTRY__ && type != __CB_BYE__ ) type = __DO_NOTHING__;
klauss 92:92df17f538a8 617 if( type == __CB_BYE__ ){
klauss 92:92df17f538a8 618 VZ_call * call = __find_Call__( v_call, ext );
klauss 92:92df17f538a8 619 if( call != NULL ){
klauss 92:92df17f538a8 620 if( call->get_elapsed_time() < 120000 ){
klauss 92:92df17f538a8 621 if( debug_invite ) debug_msg("%d ack bye ignored", ext );
klauss 92:92df17f538a8 622 type = __DO_NOTHING__;
klauss 92:92df17f538a8 623 }
klauss 92:92df17f538a8 624 }
klauss 92:92df17f538a8 625 }
klauss 0:4d17cd9c8f9d 626 }
klauss 0:4d17cd9c8f9d 627 }
klauss 0:4d17cd9c8f9d 628 }
klauss 0:4d17cd9c8f9d 629 }
klauss 91:c2a86b1f8aaa 630 } else type = __DO_NOTHING__;
klauss 0:4d17cd9c8f9d 631 }
klauss 91:c2a86b1f8aaa 632
klauss 109:a5b8264ffbbc 633 if( main_test == true ) {
klauss 109:a5b8264ffbbc 634 main_test = false;
klauss 85:b6f2dc1d0f4f 635 send_msg("CB_New (%u) -- CB_Delete (%u)", cb_new_counter, cb_delete_counter );
klauss 85:b6f2dc1d0f4f 636 send_msg("SIP_New (%u) -- SIP_Delete (%u)", sip_new_counter, sip_delete_counter );
klauss 87:679ee0d594a9 637 send_msg("RTP_header_New (%u) -- RTP_header_Delete (%u)", rtp_header_new_counter, rtp_header_delete_counter );
klauss 87:679ee0d594a9 638 send_msg("RTP_body_New (%u) -- RTP_body_Delete (%u)", rtp_body_new_counter, rtp_body_delete_counter );
klauss 109:a5b8264ffbbc 639 send_msg("Call_New (%u) -- Call_Delete (%u)", call_new_counter, call_delete_counter );
klauss 87:679ee0d594a9 640 send_msg("lpc_low_level_input_counter :: %d", lpc_low_level_input_counter );
klauss 87:679ee0d594a9 641 send_msg("Memory is %s", ( memory_is_over ) ? "Over" : "Ok" );
klauss 81:3656f00ab3db 642 send_msg("Missed_Pkg :: %d ::", missed_pkg );
klauss 87:679ee0d594a9 643 send_msg("Sizeof Sip :: %u", sizeof( Sip ) );
klauss 87:679ee0d594a9 644 send_msg("Sizeof VZ_call :: %u", sizeof( VZ_call ) );
klauss 87:679ee0d594a9 645 send_msg("Sizeof RTP :: %u", sizeof( RTP ) );
klauss 87:679ee0d594a9 646 send_msg("Sizeof RTP_Header :: %u", sizeof( RTP_Header ) );
klauss 87:679ee0d594a9 647 send_msg("Sizeof RTP_Body :: %u", sizeof( RTP_Body ) );
klauss 87:679ee0d594a9 648 send_msg("Sizeof Vector :: %u", sizeof( Vector ) );
klauss 87:679ee0d594a9 649 send_msg("Sizeof Timeslice :: %u", sizeof( Timeslice ) );
klauss 87:679ee0d594a9 650 send_msg("Sizeof Watchdog :: %u", sizeof( Watchdog ) );
klauss 109:a5b8264ffbbc 651 VZ_call * call = new VZ_call( 1234, 9876, 413, 12093 );
klauss 109:a5b8264ffbbc 652 v_call -> add ( call );
klauss 109:a5b8264ffbbc 653 }
klauss 109:a5b8264ffbbc 654
klauss 109:a5b8264ffbbc 655 //static int wdt_count = 0;
klauss 109:a5b8264ffbbc 656 /*
klauss 109:a5b8264ffbbc 657 if( registry_test == true ) {
klauss 109:a5b8264ffbbc 658 registry_test = false;
klauss 109:a5b8264ffbbc 659
klauss 109:a5b8264ffbbc 660 if( wdt_count++ > 5 || v_cb->size() < 66 ) {
klauss 109:a5b8264ffbbc 661 wdt_count = 0;
klauss 109:a5b8264ffbbc 662
klauss 109:a5b8264ffbbc 663 if( type == __DO_NOTHING__ ) {
klauss 109:a5b8264ffbbc 664 if( next_value < ( 5002 + __MAX_CB_IN_A_BRANCH__ - 2 ) ) {
klauss 109:a5b8264ffbbc 665 //type = __REGISTRY__;
klauss 109:a5b8264ffbbc 666 data = buffer;
klauss 109:a5b8264ffbbc 667 ext = next_value;
klauss 109:a5b8264ffbbc 668 port = next_value++;
klauss 109:a5b8264ffbbc 669 } else {
klauss 109:a5b8264ffbbc 670 if( nex_test_registry > ( 5002 + __MAX_CB_IN_A_BRANCH__ - 1 - 2 ) ) nex_test_registry = 5002;
klauss 109:a5b8264ffbbc 671 //type = __REGISTRY__;
klauss 109:a5b8264ffbbc 672 data = buffer;
klauss 109:a5b8264ffbbc 673 ext = nex_test_registry;
klauss 109:a5b8264ffbbc 674 port = nex_test_registry++;
klauss 109:a5b8264ffbbc 675 }
klauss 109:a5b8264ffbbc 676 }
klauss 109:a5b8264ffbbc 677 }
klauss 109:a5b8264ffbbc 678 }
klauss 109:a5b8264ffbbc 679 */
klauss 109:a5b8264ffbbc 680
klauss 109:a5b8264ffbbc 681 {
klauss 109:a5b8264ffbbc 682 fd_set fdSet;
klauss 109:a5b8264ffbbc 683 FD_ZERO(&fdSet);
klauss 109:a5b8264ffbbc 684
klauss 109:a5b8264ffbbc 685 for( register uint8_t i = 0; i < v_cb->size(); i++ ) {
klauss 109:a5b8264ffbbc 686 Call_Box * cb = (Call_Box *)v_cb->get_element( i );
klauss 109:a5b8264ffbbc 687 FD_SET( cb->get_sip_socket_fd(), &fdSet);
klauss 109:a5b8264ffbbc 688 }
klauss 109:a5b8264ffbbc 689
klauss 109:a5b8264ffbbc 690 FD_SET( udp_wdt_client.get_fd(), &fdSet);
klauss 109:a5b8264ffbbc 691
klauss 109:a5b8264ffbbc 692 struct timeval t;
klauss 109:a5b8264ffbbc 693 t.tv_sec = 0;
klauss 109:a5b8264ffbbc 694 t.tv_usec = 0;
klauss 109:a5b8264ffbbc 695 int ret = lwip_select( FD_SETSIZE, &fdSet, NULL, NULL, &t );
klauss 109:a5b8264ffbbc 696
klauss 109:a5b8264ffbbc 697 if(ret > 0 ) {
klauss 109:a5b8264ffbbc 698 for( register uint8_t i = 0; i < v_cb->size(); i++ ) {
klauss 109:a5b8264ffbbc 699 Call_Box * cb = (Call_Box *)v_cb->get_element( i );
klauss 109:a5b8264ffbbc 700 int fd = cb->get_sip_socket_fd();
klauss 109:a5b8264ffbbc 701 if( FD_ISSET( fd, &fdSet ) ) {
klauss 109:a5b8264ffbbc 702 int rcv = cb->sip_udp_incomming_pkg();
klauss 109:a5b8264ffbbc 703 }
klauss 109:a5b8264ffbbc 704 }
klauss 109:a5b8264ffbbc 705 if( FD_ISSET( udp_wdt_client.get_fd(), &fdSet ) ) {
klauss 109:a5b8264ffbbc 706 char wake_msg[ 768 ];
klauss 109:a5b8264ffbbc 707 Endpoint udp_wdt_server;
klauss 109:a5b8264ffbbc 708
klauss 109:a5b8264ffbbc 709 if( udp_wdt_client.receiveFrom( udp_wdt_server, wake_msg, sizeof( wake_msg ) ) > 0 ){
klauss 109:a5b8264ffbbc 710 if( !( strncmp( wake_msg, "alive", 5 ) ) ) {
klauss 109:a5b8264ffbbc 711 // Just ckeck but not set 'alive?'
klauss 109:a5b8264ffbbc 712 // 'alive*' - force wdt tick right now
klauss 109:a5b8264ffbbc 713 // Ckecking and set 'alive'
klauss 109:a5b8264ffbbc 714 bool question_alive = ( wake_msg[ 5 ] == '?' );
klauss 109:a5b8264ffbbc 715 if( wake_msg[ 5 ] == '*' ) wdt.kick();
klauss 109:a5b8264ffbbc 716
klauss 109:a5b8264ffbbc 717 /*
klauss 109:a5b8264ffbbc 718 uint8_t registered_cbx = v_cb->size();
klauss 109:a5b8264ffbbc 719 for( register int i = 0; i < v_cb->size(); i++ ){
klauss 109:a5b8264ffbbc 720 Call_Box * cb = (Call_Box * )v_cb->get_element( i );
klauss 109:a5b8264ffbbc 721 if( cb->is_timeout() ){ if( registered_cbx ) registered_cbx--; }
klauss 109:a5b8264ffbbc 722 }
klauss 109:a5b8264ffbbc 723 */
klauss 109:a5b8264ffbbc 724
klauss 109:a5b8264ffbbc 725 snprintf( wake_msg, 48,"wdt:%u,%u,%u,%c,%u,%u,%u,%u,%u:",
klauss 109:a5b8264ffbbc 726 uptime,
klauss 109:a5b8264ffbbc 727 invite_counter,
klauss 109:a5b8264ffbbc 728 external_wdt,
klauss 109:a5b8264ffbbc 729 ( wdt.WatchdogCausedReset() ) ? '1' : '0',
klauss 109:a5b8264ffbbc 730 cb_new_counter,
klauss 109:a5b8264ffbbc 731 v_cb->size(),
klauss 109:a5b8264ffbbc 732 ts->remain_timeslices(),
klauss 109:a5b8264ffbbc 733 sip_socket_send_failure,
klauss 109:a5b8264ffbbc 734 v_call->size()
klauss 109:a5b8264ffbbc 735 // registered_cbx
klauss 109:a5b8264ffbbc 736 );
klauss 109:a5b8264ffbbc 737 wake_msg[ 768 - 1 ] = 0;
klauss 109:a5b8264ffbbc 738 udp_wdt_client.sendTo( udp_wdt_server, wake_msg, strlen( wake_msg ) );
klauss 109:a5b8264ffbbc 739
klauss 109:a5b8264ffbbc 740 if( ( (!question_alive) && ( cb_new_counter <= __MAX_CB_IN_A_BRANCH__ ) && ( cb_new_counter >= 2 ) ) ) {
klauss 109:a5b8264ffbbc 741 external_wdt = EXTERN_WDT_IDLE;
klauss 109:a5b8264ffbbc 742 }
klauss 109:a5b8264ffbbc 743 } else if( !( strncmp( wake_msg, "reset", 5 ) ) ) {
klauss 109:a5b8264ffbbc 744 external_wdt = 0;
klauss 109:a5b8264ffbbc 745
klauss 109:a5b8264ffbbc 746 sprintf( wake_msg, "rst:%u:", uptime );
klauss 109:a5b8264ffbbc 747 udp_wdt_client.sendTo( udp_wdt_server, wake_msg, strlen( wake_msg ) );
klauss 109:a5b8264ffbbc 748 }
klauss 109:a5b8264ffbbc 749 }
klauss 109:a5b8264ffbbc 750 }
klauss 109:a5b8264ffbbc 751 }
klauss 109:a5b8264ffbbc 752 }
klauss 109:a5b8264ffbbc 753
klauss 109:a5b8264ffbbc 754 if( dshow_rtp == true ){
klauss 109:a5b8264ffbbc 755 dshow_rtp = false;
klauss 109:a5b8264ffbbc 756 send_msg(":: RTP :: %u", v_cb->size() );
klauss 109:a5b8264ffbbc 757
klauss 109:a5b8264ffbbc 758 int ext_list[ __MAX_CB_IN_A_BRANCH__ ];
klauss 109:a5b8264ffbbc 759
klauss 109:a5b8264ffbbc 760 if( v_cb->size() >= 1 ) {
klauss 109:a5b8264ffbbc 761 for( register int i = 0; i < v_cb->size(); i++ )
klauss 109:a5b8264ffbbc 762 {
klauss 109:a5b8264ffbbc 763 ext_list[ i ] = ( ( Call_Box * )v_cb->get_element( i ) )->get_ext();
klauss 109:a5b8264ffbbc 764 }
klauss 109:a5b8264ffbbc 765 qsort( ext_list, v_cb->size(), sizeof( int ), ls_comp );
klauss 109:a5b8264ffbbc 766 }
klauss 109:a5b8264ffbbc 767
klauss 109:a5b8264ffbbc 768 for ( register uint8_t i = 0; i < v_cb->size(); i++ )
klauss 109:a5b8264ffbbc 769 {
klauss 109:a5b8264ffbbc 770 Call_Box * cb = __find_CB__( v_cb, ext_list[ i ] );
klauss 109:a5b8264ffbbc 771 if( cb != NULL )
klauss 109:a5b8264ffbbc 772 {
klauss 109:a5b8264ffbbc 773 send_msg("CBX ( %d, %d ) - SIP ( %d, %d ) - RTP ( %d )",
klauss 109:a5b8264ffbbc 774 cb -> get_ext (),
klauss 109:a5b8264ffbbc 775 cb -> get_port (),
klauss 109:a5b8264ffbbc 776 cb -> get_sip_ext (),
klauss 109:a5b8264ffbbc 777 cb -> get_sip_port (),
klauss 109:a5b8264ffbbc 778 cb -> get_rtp_port ()
klauss 109:a5b8264ffbbc 779 );
klauss 109:a5b8264ffbbc 780 }
klauss 109:a5b8264ffbbc 781 }
klauss 109:a5b8264ffbbc 782 }
klauss 109:a5b8264ffbbc 783
klauss 109:a5b8264ffbbc 784 if( malasia )
klauss 109:a5b8264ffbbc 785 {
klauss 109:a5b8264ffbbc 786 malasia = false;
klauss 109:a5b8264ffbbc 787 // conclusao, mudar o nro nao impala, talvez mudar o nro no pacote ...
klauss 109:a5b8264ffbbc 788 Call_Box * cb = __find_CB__( v_cb, 5016 );
klauss 109:a5b8264ffbbc 789 if( cb != NULL )
klauss 109:a5b8264ffbbc 790 {
klauss 109:a5b8264ffbbc 791 cb -> set_rtp_port ( cb -> get_rtp_port () * 10 + 1 );
klauss 109:a5b8264ffbbc 792 send_msg("CBX ( %d, %d ) - SIP ( %d, %d ) - RTP ( %d )",
klauss 109:a5b8264ffbbc 793 cb -> get_ext (),
klauss 109:a5b8264ffbbc 794 cb -> get_port (),
klauss 109:a5b8264ffbbc 795 cb -> get_sip_ext (),
klauss 109:a5b8264ffbbc 796 cb -> get_sip_port (),
klauss 109:a5b8264ffbbc 797 cb -> get_rtp_port ()
klauss 109:a5b8264ffbbc 798 );
klauss 109:a5b8264ffbbc 799 }
klauss 109:a5b8264ffbbc 800 }
klauss 109:a5b8264ffbbc 801
klauss 109:a5b8264ffbbc 802 if( york )
klauss 109:a5b8264ffbbc 803 {
klauss 109:a5b8264ffbbc 804 york = false;
klauss 109:a5b8264ffbbc 805 Call_Box * cb = __find_CB__( v_cb, 5016 );
klauss 109:a5b8264ffbbc 806 if( cb != NULL )
klauss 109:a5b8264ffbbc 807 {
klauss 109:a5b8264ffbbc 808 cb -> set_rtp_port ( 80 );
klauss 109:a5b8264ffbbc 809 send_msg("CBX ( %d, %d ) - SIP ( %d, %d ) - RTP ( %d )",
klauss 109:a5b8264ffbbc 810 cb -> get_ext (),
klauss 109:a5b8264ffbbc 811 cb -> get_port (),
klauss 109:a5b8264ffbbc 812 cb -> get_sip_ext (),
klauss 109:a5b8264ffbbc 813 cb -> get_sip_port (),
klauss 109:a5b8264ffbbc 814 cb -> get_rtp_port ()
klauss 109:a5b8264ffbbc 815 );
klauss 109:a5b8264ffbbc 816 }
klauss 109:a5b8264ffbbc 817 }
klauss 109:a5b8264ffbbc 818
klauss 109:a5b8264ffbbc 819 if ( frtp )
klauss 109:a5b8264ffbbc 820 {
klauss 109:a5b8264ffbbc 821 frtp = false;
klauss 109:a5b8264ffbbc 822 Call_Box * cb = __find_CB__( v_cb, frtp_target );
klauss 109:a5b8264ffbbc 823 if ( cb != NULL )
klauss 109:a5b8264ffbbc 824 {
klauss 109:a5b8264ffbbc 825 cb -> set_rtp_port ( -1008789032 );
klauss 109:a5b8264ffbbc 826 }
klauss 109:a5b8264ffbbc 827 else
klauss 109:a5b8264ffbbc 828 {
klauss 109:a5b8264ffbbc 829 debug_msg("frtp fail");
klauss 109:a5b8264ffbbc 830 }
klauss 109:a5b8264ffbbc 831
klauss 109:a5b8264ffbbc 832 }
klauss 109:a5b8264ffbbc 833
klauss 109:a5b8264ffbbc 834 if ( rescue_rtp )
klauss 109:a5b8264ffbbc 835 {
klauss 109:a5b8264ffbbc 836 rescue_rtp = false;
klauss 109:a5b8264ffbbc 837 Call_Box * cb = __find_CB__( v_cb, rescue_rtp_target );
klauss 109:a5b8264ffbbc 838 if ( cb != NULL )
klauss 109:a5b8264ffbbc 839 {
klauss 109:a5b8264ffbbc 840 cb -> set_rtp_port ( rescue_rtp_value );
klauss 109:a5b8264ffbbc 841 }
klauss 109:a5b8264ffbbc 842 else
klauss 109:a5b8264ffbbc 843 {
klauss 109:a5b8264ffbbc 844 debug_msg("rescue rtp fail");
klauss 109:a5b8264ffbbc 845 }
klauss 109:a5b8264ffbbc 846
klauss 109:a5b8264ffbbc 847 }
klauss 109:a5b8264ffbbc 848
klauss 109:a5b8264ffbbc 849 if( america )
klauss 109:a5b8264ffbbc 850 {
klauss 109:a5b8264ffbbc 851 america = false;
klauss 109:a5b8264ffbbc 852 Call_Box * cb = __find_CB__( v_cb, 5016 );
klauss 109:a5b8264ffbbc 853 if( cb != NULL )
klauss 109:a5b8264ffbbc 854 {
klauss 109:a5b8264ffbbc 855 cb -> set_rtp_port ( 8929415 );
klauss 109:a5b8264ffbbc 856 send_msg("CBX ( %d, %d ) - SIP ( %d, %d ) - RTP ( %d )",
klauss 109:a5b8264ffbbc 857 cb -> get_ext (),
klauss 109:a5b8264ffbbc 858 cb -> get_port (),
klauss 109:a5b8264ffbbc 859 cb -> get_sip_ext (),
klauss 109:a5b8264ffbbc 860 cb -> get_sip_port (),
klauss 109:a5b8264ffbbc 861 cb -> get_rtp_port ()
klauss 109:a5b8264ffbbc 862 );
klauss 109:a5b8264ffbbc 863 }
klauss 109:a5b8264ffbbc 864 }
klauss 109:a5b8264ffbbc 865
klauss 109:a5b8264ffbbc 866 //begin debug_print
klauss 109:a5b8264ffbbc 867 if ( print_v_cb )
klauss 109:a5b8264ffbbc 868 {
klauss 109:a5b8264ffbbc 869 print_v_cb = false;
klauss 109:a5b8264ffbbc 870 v_cb->print_yourself ();
klauss 109:a5b8264ffbbc 871 }
klauss 109:a5b8264ffbbc 872
klauss 109:a5b8264ffbbc 873 if ( print_v_call )
klauss 109:a5b8264ffbbc 874 {
klauss 109:a5b8264ffbbc 875 print_v_call = false;
klauss 109:a5b8264ffbbc 876 v_call->print_yourself ();
klauss 109:a5b8264ffbbc 877 }
klauss 109:a5b8264ffbbc 878
klauss 109:a5b8264ffbbc 879 if ( print_cb_var )
klauss 109:a5b8264ffbbc 880 {
klauss 109:a5b8264ffbbc 881 print_cb_var = false;
klauss 109:a5b8264ffbbc 882 Call_Box * cb = __find_CB__ ( v_cb, print_this_cb );
klauss 109:a5b8264ffbbc 883 if ( cb != NULL )
klauss 109:a5b8264ffbbc 884 {
klauss 109:a5b8264ffbbc 885 cb -> print_yourself ();
klauss 109:a5b8264ffbbc 886 }
klauss 109:a5b8264ffbbc 887 else
klauss 109:a5b8264ffbbc 888 {
klauss 109:a5b8264ffbbc 889 if( print_values )
klauss 109:a5b8264ffbbc 890 {
klauss 109:a5b8264ffbbc 891 debug_msg ("Objeto CBx ( %d ) nao encontrado", print_this_cb );
klauss 109:a5b8264ffbbc 892 }
klauss 109:a5b8264ffbbc 893 else
klauss 109:a5b8264ffbbc 894 {
klauss 109:a5b8264ffbbc 895 send_msg ("Objeto CBx ( %d ) nao encontrado", print_this_cb );
klauss 109:a5b8264ffbbc 896 }
klauss 109:a5b8264ffbbc 897 }
klauss 109:a5b8264ffbbc 898 }
klauss 109:a5b8264ffbbc 899
klauss 109:a5b8264ffbbc 900 if ( print_cb_all )
klauss 109:a5b8264ffbbc 901 {
klauss 109:a5b8264ffbbc 902 print_cb_all = false;
klauss 109:a5b8264ffbbc 903
klauss 109:a5b8264ffbbc 904 if ( v_cb -> size () == 0 )
klauss 109:a5b8264ffbbc 905 {
klauss 109:a5b8264ffbbc 906 send_msg("known CBx :: 0");
klauss 109:a5b8264ffbbc 907 }
klauss 109:a5b8264ffbbc 908
klauss 109:a5b8264ffbbc 909 for ( register uint8_t i = 0; i < v_cb->size(); i++ )
klauss 109:a5b8264ffbbc 910 {
klauss 109:a5b8264ffbbc 911 Call_Box * cb = (Call_Box *)v_cb->get_element( i );
klauss 109:a5b8264ffbbc 912
klauss 109:a5b8264ffbbc 913 if ( cb != NULL )
klauss 109:a5b8264ffbbc 914 {
klauss 109:a5b8264ffbbc 915 cb -> print_yourself ();
klauss 109:a5b8264ffbbc 916 }
klauss 109:a5b8264ffbbc 917 else
klauss 109:a5b8264ffbbc 918 {
klauss 109:a5b8264ffbbc 919 if ( print_values ) debug_msg ("Objeto CBx ( %d ) nao encontrado", i );
klauss 109:a5b8264ffbbc 920 }
klauss 109:a5b8264ffbbc 921 }
klauss 109:a5b8264ffbbc 922 }
klauss 109:a5b8264ffbbc 923
klauss 109:a5b8264ffbbc 924 if ( print_hex_cb_var )
klauss 109:a5b8264ffbbc 925 {
klauss 109:a5b8264ffbbc 926 print_hex_cb_var = false;
klauss 109:a5b8264ffbbc 927 uint8_t * ptr = ( uint8_t * ) __find_CB__ ( v_cb, print_hex_this_cb );
klauss 109:a5b8264ffbbc 928
klauss 109:a5b8264ffbbc 929 if ( ptr != NULL )
klauss 109:a5b8264ffbbc 930 {
klauss 109:a5b8264ffbbc 931 send_msg ("Values :: %p\r\n", ( void *) ptr );
klauss 109:a5b8264ffbbc 932 for ( register int i = 0; i < sizeof( Call_Box ); i++ )
klauss 109:a5b8264ffbbc 933 {
klauss 109:a5b8264ffbbc 934 if( debug_uart3 ) pc.printf("%x", *ptr++ );
klauss 109:a5b8264ffbbc 935
klauss 109:a5b8264ffbbc 936 if ( ( i % 32 ) == 0 )
klauss 109:a5b8264ffbbc 937 {
klauss 109:a5b8264ffbbc 938 if( i != 0 )
klauss 109:a5b8264ffbbc 939 {
klauss 109:a5b8264ffbbc 940 if( debug_uart3 ) pc.printf("\n\r> ");
klauss 109:a5b8264ffbbc 941 }
klauss 109:a5b8264ffbbc 942 else
klauss 109:a5b8264ffbbc 943 {
klauss 109:a5b8264ffbbc 944 if( debug_uart3 ) pc.printf(" ");
klauss 109:a5b8264ffbbc 945 }
klauss 109:a5b8264ffbbc 946 }
klauss 109:a5b8264ffbbc 947 else
klauss 109:a5b8264ffbbc 948 {
klauss 109:a5b8264ffbbc 949 if( debug_uart3 ) pc.printf(" ");
klauss 109:a5b8264ffbbc 950 }
klauss 109:a5b8264ffbbc 951 }
klauss 109:a5b8264ffbbc 952 if ( debug_uart3 ) pc.printf("\n\r> ");
klauss 109:a5b8264ffbbc 953
klauss 109:a5b8264ffbbc 954 if ( tcp_session ) {
klauss 109:a5b8264ffbbc 955 char aux[ ( sizeof( Call_Box ) * 3 ) + 3 ];
klauss 109:a5b8264ffbbc 956
klauss 109:a5b8264ffbbc 957 for ( register int i = 0; i < ( sizeof( Call_Box ) * 3 ) + 3 ; i++ ) aux [ i ] = 0;
klauss 109:a5b8264ffbbc 958
klauss 109:a5b8264ffbbc 959 uint8_t * ptr = ( uint8_t * ) __find_CB__ ( v_cb, print_hex_this_cb );
klauss 109:a5b8264ffbbc 960
klauss 109:a5b8264ffbbc 961 for ( register int i = 0; i < sizeof( Call_Box ); i++ )
klauss 109:a5b8264ffbbc 962 {
klauss 109:a5b8264ffbbc 963 char tmp[ 16 ];
klauss 109:a5b8264ffbbc 964 sprintf( tmp, "%x ", *ptr++ );
klauss 109:a5b8264ffbbc 965 strcat( aux, tmp );
klauss 109:a5b8264ffbbc 966 }
klauss 109:a5b8264ffbbc 967
klauss 109:a5b8264ffbbc 968 strcat( aux, "\n\r\0" );
klauss 109:a5b8264ffbbc 969 tcp_client.send_all( ( char *)aux, strlen( (char * )aux ) );
klauss 109:a5b8264ffbbc 970 tcp_client.send_all( "\r\n> ", strlen( "\r\n> " ) );
klauss 109:a5b8264ffbbc 971 }
klauss 109:a5b8264ffbbc 972 }
klauss 109:a5b8264ffbbc 973 else
klauss 109:a5b8264ffbbc 974 {
klauss 109:a5b8264ffbbc 975 if ( print_values ) debug_msg ("Objeto CBx ( %d ) nao encontrado", print_this_cb );
klauss 109:a5b8264ffbbc 976 }
klauss 81:3656f00ab3db 977 }
klauss 106:a34fcf9f0e02 978
klauss 109:a5b8264ffbbc 979 if ( print_hex_cb_all )
klauss 109:a5b8264ffbbc 980 {
klauss 109:a5b8264ffbbc 981 print_hex_cb_all = false;
klauss 109:a5b8264ffbbc 982
klauss 109:a5b8264ffbbc 983 if ( v_cb -> size () == 0 )
klauss 109:a5b8264ffbbc 984 {
klauss 109:a5b8264ffbbc 985 send_msg("known CBx :: 0");
klauss 109:a5b8264ffbbc 986 }
klauss 109:a5b8264ffbbc 987
klauss 109:a5b8264ffbbc 988 for ( register uint8_t j = 0; j < v_cb->size(); j++ )
klauss 109:a5b8264ffbbc 989 {
klauss 109:a5b8264ffbbc 990 uint8_t * ptr = ( uint8_t * ) v_cb->get_element( j );
klauss 109:a5b8264ffbbc 991
klauss 109:a5b8264ffbbc 992 if ( ptr != NULL )
klauss 109:a5b8264ffbbc 993 {
klauss 109:a5b8264ffbbc 994 send_msg ("Values :: %p\r\n", ( void *) ptr );
klauss 109:a5b8264ffbbc 995 for ( register int i = 0; i < sizeof( Call_Box ); i++ )
klauss 109:a5b8264ffbbc 996 {
klauss 109:a5b8264ffbbc 997 if( debug_uart3 ) pc.printf("%x", *ptr++ );
klauss 109:a5b8264ffbbc 998
klauss 109:a5b8264ffbbc 999 if ( ( i % 32 ) == 0 )
klauss 109:a5b8264ffbbc 1000 {
klauss 109:a5b8264ffbbc 1001 if( i != 0 )
klauss 109:a5b8264ffbbc 1002 {
klauss 109:a5b8264ffbbc 1003 if( debug_uart3 ) pc.printf("\n\r> ");
klauss 109:a5b8264ffbbc 1004 }
klauss 109:a5b8264ffbbc 1005 else
klauss 109:a5b8264ffbbc 1006 {
klauss 109:a5b8264ffbbc 1007 if( debug_uart3 ) pc.printf(" ");
klauss 109:a5b8264ffbbc 1008 }
klauss 109:a5b8264ffbbc 1009 }
klauss 109:a5b8264ffbbc 1010 else
klauss 109:a5b8264ffbbc 1011 {
klauss 109:a5b8264ffbbc 1012 if( debug_uart3 ) pc.printf(" ");
klauss 109:a5b8264ffbbc 1013 }
klauss 109:a5b8264ffbbc 1014 }
klauss 109:a5b8264ffbbc 1015 if ( debug_uart3 ) pc.printf("\n\r> ");
klauss 109:a5b8264ffbbc 1016
klauss 109:a5b8264ffbbc 1017 if ( tcp_session ) {
klauss 109:a5b8264ffbbc 1018 char aux[ ( sizeof( Call_Box ) * 3 ) + 3 ];
klauss 109:a5b8264ffbbc 1019
klauss 109:a5b8264ffbbc 1020 for ( register int i = 0; i < ( sizeof( Call_Box ) * 3 ) + 3 ; i++ ) aux [ i ] = 0;
klauss 109:a5b8264ffbbc 1021
klauss 109:a5b8264ffbbc 1022 uint8_t * ptr = ( uint8_t * ) v_cb->get_element( j );
klauss 109:a5b8264ffbbc 1023
klauss 109:a5b8264ffbbc 1024 for ( register int i = 0; i < sizeof( Call_Box ); i++ )
klauss 109:a5b8264ffbbc 1025 {
klauss 109:a5b8264ffbbc 1026 char tmp[ 16 ];
klauss 109:a5b8264ffbbc 1027 sprintf( tmp, "%x ", *ptr++ );
klauss 109:a5b8264ffbbc 1028 strcat( aux, tmp );
klauss 109:a5b8264ffbbc 1029 }
klauss 109:a5b8264ffbbc 1030
klauss 109:a5b8264ffbbc 1031 strcat( aux, "\n\r\0" );
klauss 109:a5b8264ffbbc 1032 tcp_client.send_all( ( char *)aux, strlen( (char * )aux ) );
klauss 109:a5b8264ffbbc 1033 tcp_client.send_all( "\r\n> ", strlen( "\r\n> " ) );
klauss 109:a5b8264ffbbc 1034 }
klauss 109:a5b8264ffbbc 1035 }
klauss 109:a5b8264ffbbc 1036 else
klauss 109:a5b8264ffbbc 1037 {
klauss 109:a5b8264ffbbc 1038 if ( print_values )
klauss 109:a5b8264ffbbc 1039 {
klauss 109:a5b8264ffbbc 1040 debug_msg ("Objeto CBx ( %d ) nao encontrado", j );
klauss 109:a5b8264ffbbc 1041 }
klauss 109:a5b8264ffbbc 1042 else
klauss 109:a5b8264ffbbc 1043 {
klauss 109:a5b8264ffbbc 1044 send_msg ("Objeto CBx ( %d ) nao encontrado", j );
klauss 109:a5b8264ffbbc 1045 }
klauss 109:a5b8264ffbbc 1046 }
klauss 109:a5b8264ffbbc 1047 }
klauss 109:a5b8264ffbbc 1048 }
klauss 106:a34fcf9f0e02 1049
klauss 109:a5b8264ffbbc 1050 //begin Sip debug print
klauss 109:a5b8264ffbbc 1051 {
klauss 109:a5b8264ffbbc 1052 if ( print_sip_var )
klauss 109:a5b8264ffbbc 1053 {
klauss 109:a5b8264ffbbc 1054 print_sip_var = false;
klauss 109:a5b8264ffbbc 1055 Call_Box * cb = __find_CB__ ( v_cb, print_this_sip );
klauss 109:a5b8264ffbbc 1056 if ( cb != NULL )
klauss 109:a5b8264ffbbc 1057 {
klauss 109:a5b8264ffbbc 1058 if( ( cb -> sip ) != NULL )
klauss 109:a5b8264ffbbc 1059 {
klauss 109:a5b8264ffbbc 1060 cb -> sip -> print_yourself ();
klauss 109:a5b8264ffbbc 1061 }
klauss 109:a5b8264ffbbc 1062 else
klauss 109:a5b8264ffbbc 1063 {
klauss 109:a5b8264ffbbc 1064 if( print_values )
klauss 109:a5b8264ffbbc 1065 {
klauss 109:a5b8264ffbbc 1066 debug_msg("Sip param of %d equals NULL", print_this_sip );
klauss 109:a5b8264ffbbc 1067 }
klauss 109:a5b8264ffbbc 1068 else
klauss 109:a5b8264ffbbc 1069 {
klauss 109:a5b8264ffbbc 1070 send_msg("Sip param of %d equals NULL", print_this_sip );
klauss 109:a5b8264ffbbc 1071 }
klauss 109:a5b8264ffbbc 1072 }
klauss 109:a5b8264ffbbc 1073 }
klauss 109:a5b8264ffbbc 1074 else
klauss 109:a5b8264ffbbc 1075 {
klauss 109:a5b8264ffbbc 1076 if ( print_values )
klauss 109:a5b8264ffbbc 1077 {
klauss 109:a5b8264ffbbc 1078 debug_msg ("Objeto CBx ( %d ) nao encontrado", print_this_cb );
klauss 109:a5b8264ffbbc 1079 }
klauss 109:a5b8264ffbbc 1080 else
klauss 109:a5b8264ffbbc 1081 {
klauss 109:a5b8264ffbbc 1082 send_msg ("Objeto CBx ( %d ) nao encontrado", print_this_cb );
klauss 109:a5b8264ffbbc 1083 } }
klauss 109:a5b8264ffbbc 1084 }
klauss 109:a5b8264ffbbc 1085
klauss 109:a5b8264ffbbc 1086 if ( print_sip_all )
klauss 109:a5b8264ffbbc 1087 {
klauss 109:a5b8264ffbbc 1088 print_sip_all = false;
klauss 109:a5b8264ffbbc 1089
klauss 109:a5b8264ffbbc 1090 if ( v_cb -> size () == 0 )
klauss 109:a5b8264ffbbc 1091 {
klauss 109:a5b8264ffbbc 1092 send_msg("known CBx :: 0");
klauss 109:a5b8264ffbbc 1093 }
klauss 109:a5b8264ffbbc 1094
klauss 109:a5b8264ffbbc 1095 for ( register uint8_t i = 0; i < v_cb->size(); i++ )
klauss 109:a5b8264ffbbc 1096 {
klauss 109:a5b8264ffbbc 1097 Call_Box * cb = (Call_Box *)v_cb->get_element( i );
klauss 109:a5b8264ffbbc 1098
klauss 109:a5b8264ffbbc 1099 if ( cb != NULL )
klauss 109:a5b8264ffbbc 1100 {
klauss 109:a5b8264ffbbc 1101 if( ( cb -> sip ) != NULL )
klauss 109:a5b8264ffbbc 1102 {
klauss 109:a5b8264ffbbc 1103 cb -> sip -> print_yourself ();
klauss 109:a5b8264ffbbc 1104 }
klauss 109:a5b8264ffbbc 1105 else
klauss 109:a5b8264ffbbc 1106 {
klauss 109:a5b8264ffbbc 1107 if( print_values )
klauss 109:a5b8264ffbbc 1108 {
klauss 109:a5b8264ffbbc 1109 debug_msg("Sip param of %d equals NULL", print_this_sip );
klauss 109:a5b8264ffbbc 1110 }
klauss 109:a5b8264ffbbc 1111 else
klauss 109:a5b8264ffbbc 1112 {
klauss 109:a5b8264ffbbc 1113 send_msg("Sip param of %d equals NULL", print_this_sip );
klauss 109:a5b8264ffbbc 1114 }
klauss 109:a5b8264ffbbc 1115 }
klauss 109:a5b8264ffbbc 1116 }
klauss 109:a5b8264ffbbc 1117 else
klauss 109:a5b8264ffbbc 1118 {
klauss 109:a5b8264ffbbc 1119 if( print_values )
klauss 109:a5b8264ffbbc 1120 {
klauss 109:a5b8264ffbbc 1121 debug_msg("CBx %d not found", print_this_sip );
klauss 109:a5b8264ffbbc 1122 }
klauss 109:a5b8264ffbbc 1123 else
klauss 109:a5b8264ffbbc 1124 {
klauss 109:a5b8264ffbbc 1125 send_msg("CBx %d not found", print_this_sip );
klauss 109:a5b8264ffbbc 1126 }
klauss 109:a5b8264ffbbc 1127 }
klauss 109:a5b8264ffbbc 1128 }
klauss 109:a5b8264ffbbc 1129 }
klauss 109:a5b8264ffbbc 1130
klauss 109:a5b8264ffbbc 1131 if ( print_hex_sip_var )
klauss 109:a5b8264ffbbc 1132 {
klauss 109:a5b8264ffbbc 1133 uint8_t * ptr = NULL;
klauss 109:a5b8264ffbbc 1134
klauss 109:a5b8264ffbbc 1135 print_hex_sip_var = false;
klauss 109:a5b8264ffbbc 1136 Call_Box * cb = __find_CB__ ( v_cb, print_hex_this_sip );
klauss 109:a5b8264ffbbc 1137 if( cb != NULL )
klauss 109:a5b8264ffbbc 1138 {
klauss 109:a5b8264ffbbc 1139 if( ( cb -> sip ) != NULL )
klauss 109:a5b8264ffbbc 1140 ptr = ( uint8_t * ) cb -> sip;
klauss 109:a5b8264ffbbc 1141 }
klauss 109:a5b8264ffbbc 1142
klauss 109:a5b8264ffbbc 1143 if ( ptr != NULL )
klauss 109:a5b8264ffbbc 1144 {
klauss 109:a5b8264ffbbc 1145 send_msg ("Values :: %p\r\n", ( void *) ptr );
klauss 109:a5b8264ffbbc 1146 for ( register int i = 0; i < sizeof( Sip ); i++ )
klauss 109:a5b8264ffbbc 1147 {
klauss 109:a5b8264ffbbc 1148 if( debug_uart3 ) pc.printf("%x", *ptr++ );
klauss 109:a5b8264ffbbc 1149
klauss 109:a5b8264ffbbc 1150 if ( ( i % 32 ) == 0 )
klauss 109:a5b8264ffbbc 1151 {
klauss 109:a5b8264ffbbc 1152 if( i != 0 )
klauss 109:a5b8264ffbbc 1153 {
klauss 109:a5b8264ffbbc 1154 if( debug_uart3 ) pc.printf("\n\r> ");
klauss 109:a5b8264ffbbc 1155 }
klauss 109:a5b8264ffbbc 1156 else
klauss 109:a5b8264ffbbc 1157 {
klauss 109:a5b8264ffbbc 1158 if( debug_uart3 ) pc.printf(" ");
klauss 109:a5b8264ffbbc 1159 }
klauss 109:a5b8264ffbbc 1160 }
klauss 109:a5b8264ffbbc 1161 else
klauss 109:a5b8264ffbbc 1162 {
klauss 109:a5b8264ffbbc 1163 if( debug_uart3 ) pc.printf(" ");
klauss 109:a5b8264ffbbc 1164 }
klauss 109:a5b8264ffbbc 1165 }
klauss 109:a5b8264ffbbc 1166 if ( debug_uart3 ) pc.printf("\n\r> ");
klauss 109:a5b8264ffbbc 1167
klauss 109:a5b8264ffbbc 1168 if ( tcp_session ) {
klauss 109:a5b8264ffbbc 1169 char aux[ ( 32 * 3 ) + 5 ];
klauss 109:a5b8264ffbbc 1170
klauss 109:a5b8264ffbbc 1171 for ( register int i = 0; i < ( 32 * 3 ) + 5 ; i++ ) aux [ i ] = 0;
klauss 109:a5b8264ffbbc 1172
klauss 109:a5b8264ffbbc 1173 ptr = NULL;
klauss 109:a5b8264ffbbc 1174
klauss 109:a5b8264ffbbc 1175 print_hex_sip_var = false;
klauss 109:a5b8264ffbbc 1176 Call_Box * cb = __find_CB__ ( v_cb, print_hex_this_sip );
klauss 109:a5b8264ffbbc 1177 if( cb != NULL )
klauss 109:a5b8264ffbbc 1178 {
klauss 109:a5b8264ffbbc 1179 if( ( cb -> sip ) != NULL )
klauss 109:a5b8264ffbbc 1180 ptr = ( uint8_t * ) cb -> sip;
klauss 109:a5b8264ffbbc 1181 }
klauss 109:a5b8264ffbbc 1182
klauss 109:a5b8264ffbbc 1183 if ( ptr != NULL )
klauss 109:a5b8264ffbbc 1184 {
klauss 109:a5b8264ffbbc 1185 bool finished = false;
klauss 109:a5b8264ffbbc 1186 volatile int i = 0;
klauss 109:a5b8264ffbbc 1187 int count = 0;
klauss 109:a5b8264ffbbc 1188 Timer dont_overwrite_tcp_buffer;
klauss 109:a5b8264ffbbc 1189 dont_overwrite_tcp_buffer.reset ();
klauss 109:a5b8264ffbbc 1190 dont_overwrite_tcp_buffer.start ();
klauss 109:a5b8264ffbbc 1191
klauss 109:a5b8264ffbbc 1192 while ( !finished )
klauss 109:a5b8264ffbbc 1193 {
klauss 109:a5b8264ffbbc 1194 if( dont_overwrite_tcp_buffer.read_ms () >= 500 )
klauss 109:a5b8264ffbbc 1195 {
klauss 109:a5b8264ffbbc 1196 dont_overwrite_tcp_buffer.reset();
klauss 109:a5b8264ffbbc 1197 for ( ; i < sizeof( Sip ); i++ )
klauss 109:a5b8264ffbbc 1198 {
klauss 109:a5b8264ffbbc 1199 char tmp[ 16 ];
klauss 109:a5b8264ffbbc 1200 sprintf( tmp, "%x ", *ptr++ );
klauss 109:a5b8264ffbbc 1201 strcat( aux, tmp );
klauss 109:a5b8264ffbbc 1202 count++;
klauss 109:a5b8264ffbbc 1203
klauss 109:a5b8264ffbbc 1204 if ( count >= 32 )
klauss 109:a5b8264ffbbc 1205 {
klauss 109:a5b8264ffbbc 1206 count = 0;
klauss 109:a5b8264ffbbc 1207 i++;
klauss 109:a5b8264ffbbc 1208 break;
klauss 109:a5b8264ffbbc 1209 }
klauss 109:a5b8264ffbbc 1210 }
klauss 109:a5b8264ffbbc 1211 strcat ( aux, "\n\r\0" );
klauss 109:a5b8264ffbbc 1212 tcp_client.send_all ( ( char *)aux, strlen( (char * )aux ) );
klauss 109:a5b8264ffbbc 1213 if ( i >= sizeof ( Sip ) ) finished = true;
klauss 109:a5b8264ffbbc 1214 strcpy ( aux, "\0" );
klauss 109:a5b8264ffbbc 1215 }
klauss 109:a5b8264ffbbc 1216 }
klauss 109:a5b8264ffbbc 1217 dont_overwrite_tcp_buffer.reset();
klauss 109:a5b8264ffbbc 1218 dont_overwrite_tcp_buffer.stop();
klauss 109:a5b8264ffbbc 1219 tcp_client.send_all ( "\r\n> ", strlen( "\r\n> " ) );
klauss 109:a5b8264ffbbc 1220 }
klauss 109:a5b8264ffbbc 1221 }
klauss 109:a5b8264ffbbc 1222 }
klauss 109:a5b8264ffbbc 1223 else
klauss 109:a5b8264ffbbc 1224 {
klauss 109:a5b8264ffbbc 1225 if ( print_values ) debug_msg ("Objeto CBx ( %d ) nao encontrado", print_this_cb );
klauss 109:a5b8264ffbbc 1226 }
klauss 109:a5b8264ffbbc 1227 }
klauss 109:a5b8264ffbbc 1228 /*
klauss 109:a5b8264ffbbc 1229 if ( print_hex_cb_all )
klauss 109:a5b8264ffbbc 1230 {
klauss 109:a5b8264ffbbc 1231 print_hex_cb_all = false;
klauss 109:a5b8264ffbbc 1232
klauss 109:a5b8264ffbbc 1233 if ( v_cb -> size () == 0 )
klauss 109:a5b8264ffbbc 1234 {
klauss 109:a5b8264ffbbc 1235 send_msg("known CBx :: 0");
klauss 109:a5b8264ffbbc 1236 }
klauss 109:a5b8264ffbbc 1237
klauss 109:a5b8264ffbbc 1238 for ( register uint8_t j = 0; j < v_cb->size(); j++ )
klauss 109:a5b8264ffbbc 1239 {
klauss 109:a5b8264ffbbc 1240 uint8_t * ptr = ( uint8_t * ) v_cb->get_element( j );
klauss 109:a5b8264ffbbc 1241
klauss 109:a5b8264ffbbc 1242 if ( ptr != NULL )
klauss 109:a5b8264ffbbc 1243 {
klauss 109:a5b8264ffbbc 1244 send_msg ("Values :: %p\r\n", ( void *) ptr );
klauss 109:a5b8264ffbbc 1245 for ( register int i = 0; i < sizeof( Call_Box ); i++ )
klauss 109:a5b8264ffbbc 1246 {
klauss 109:a5b8264ffbbc 1247 if( debug_uart3 ) pc.printf("%x", *ptr++ );
klauss 109:a5b8264ffbbc 1248
klauss 109:a5b8264ffbbc 1249 if ( ( i % 32 ) == 0 )
klauss 109:a5b8264ffbbc 1250 {
klauss 109:a5b8264ffbbc 1251 if( i != 0 )
klauss 109:a5b8264ffbbc 1252 {
klauss 109:a5b8264ffbbc 1253 if( debug_uart3 ) pc.printf("\n\r> ");
klauss 109:a5b8264ffbbc 1254 }
klauss 109:a5b8264ffbbc 1255 else
klauss 109:a5b8264ffbbc 1256 {
klauss 109:a5b8264ffbbc 1257 if( debug_uart3 ) pc.printf(" ");
klauss 109:a5b8264ffbbc 1258 }
klauss 109:a5b8264ffbbc 1259 }
klauss 109:a5b8264ffbbc 1260 else
klauss 109:a5b8264ffbbc 1261 {
klauss 109:a5b8264ffbbc 1262 if( debug_uart3 ) pc.printf(" ");
klauss 109:a5b8264ffbbc 1263 }
klauss 109:a5b8264ffbbc 1264 }
klauss 109:a5b8264ffbbc 1265 if ( debug_uart3 ) pc.printf("\n\r> ");
klauss 109:a5b8264ffbbc 1266
klauss 109:a5b8264ffbbc 1267 if ( tcp_session ) {
klauss 109:a5b8264ffbbc 1268 char aux[ ( sizeof( Call_Box ) * 3 ) + 3 ];
klauss 109:a5b8264ffbbc 1269
klauss 109:a5b8264ffbbc 1270 for ( register int i = 0; i < ( sizeof( Call_Box ) * 3 ) + 3 ; i++ ) aux [ i ] = 0;
klauss 109:a5b8264ffbbc 1271
klauss 109:a5b8264ffbbc 1272 uint8_t * ptr = ( uint8_t * ) v_cb->get_element( j );
klauss 109:a5b8264ffbbc 1273
klauss 109:a5b8264ffbbc 1274 for ( register int i = 0; i < sizeof( Call_Box ); i++ )
klauss 109:a5b8264ffbbc 1275 {
klauss 109:a5b8264ffbbc 1276 char tmp[ 16 ];
klauss 109:a5b8264ffbbc 1277 sprintf( tmp, "%x ", *ptr++ );
klauss 109:a5b8264ffbbc 1278 strcat( aux, tmp );
klauss 109:a5b8264ffbbc 1279 }
klauss 109:a5b8264ffbbc 1280
klauss 109:a5b8264ffbbc 1281 strcat( aux, "\n\r\0" );
klauss 109:a5b8264ffbbc 1282 tcp_client.send_all( ( char *)aux, strlen( (char * )aux ) );
klauss 109:a5b8264ffbbc 1283 tcp_client.send_all( "\r\n> ", strlen( "\r\n> " ) );
klauss 109:a5b8264ffbbc 1284 }
klauss 109:a5b8264ffbbc 1285 }
klauss 109:a5b8264ffbbc 1286 else
klauss 109:a5b8264ffbbc 1287 {
klauss 109:a5b8264ffbbc 1288 if ( print_values ) debug_msg ("Objeto CBx ( %d ) nao encontrado", j );
klauss 109:a5b8264ffbbc 1289 }
klauss 109:a5b8264ffbbc 1290 }
klauss 109:a5b8264ffbbc 1291 }
klauss 109:a5b8264ffbbc 1292 */
klauss 109:a5b8264ffbbc 1293 }//end Sip debug print
klauss 109:a5b8264ffbbc 1294
klauss 109:a5b8264ffbbc 1295 if( dcallshow_rtp == true ){
klauss 109:a5b8264ffbbc 1296 dcallshow_rtp = false;
klauss 109:a5b8264ffbbc 1297 send_msg(":: CAll RTP :: %u", v_call->size() );
klauss 109:a5b8264ffbbc 1298 for( register uint8_t i = 0; i < v_call->size(); i++ ) {
klauss 109:a5b8264ffbbc 1299 VZ_call * call = ( VZ_call * )v_call->get_element( i );
klauss 109:a5b8264ffbbc 1300 if( call != NULL )
klauss 109:a5b8264ffbbc 1301 {
klauss 109:a5b8264ffbbc 1302 send_msg("CBX ( %d, %d ) - Server ( %d, %d )",
klauss 109:a5b8264ffbbc 1303 call->get_cb_ext(),
klauss 109:a5b8264ffbbc 1304 call->get_cb_port(),
klauss 109:a5b8264ffbbc 1305 call->get_rtp_server_ext(),
klauss 109:a5b8264ffbbc 1306 call->get_rtp_server_port()
klauss 109:a5b8264ffbbc 1307 );
klauss 109:a5b8264ffbbc 1308 }
klauss 109:a5b8264ffbbc 1309 }
klauss 109:a5b8264ffbbc 1310 }
klauss 109:a5b8264ffbbc 1311
klauss 109:a5b8264ffbbc 1312 if ( print_call_var )
klauss 109:a5b8264ffbbc 1313 {
klauss 109:a5b8264ffbbc 1314 print_call_var = false;
klauss 109:a5b8264ffbbc 1315 VZ_call * call = __find_Call__( v_call, print_this_call );
klauss 109:a5b8264ffbbc 1316 if ( call != NULL )
klauss 109:a5b8264ffbbc 1317 {
klauss 109:a5b8264ffbbc 1318 send_msg ("Values :: %p\r\n", ( void *) call );
klauss 109:a5b8264ffbbc 1319 call -> print_yourself ();
klauss 109:a5b8264ffbbc 1320 }
klauss 109:a5b8264ffbbc 1321 else
klauss 109:a5b8264ffbbc 1322 {
klauss 109:a5b8264ffbbc 1323 if( print_values )
klauss 109:a5b8264ffbbc 1324 {
klauss 109:a5b8264ffbbc 1325 debug_msg("Call %d not found", print_this_call );
klauss 109:a5b8264ffbbc 1326 }
klauss 109:a5b8264ffbbc 1327 else
klauss 109:a5b8264ffbbc 1328 {
klauss 109:a5b8264ffbbc 1329 send_msg("Call %d not found", print_this_call );
klauss 109:a5b8264ffbbc 1330 }
klauss 109:a5b8264ffbbc 1331 }
klauss 109:a5b8264ffbbc 1332 }
klauss 109:a5b8264ffbbc 1333
klauss 109:a5b8264ffbbc 1334 if ( print_hex_call_var )
klauss 109:a5b8264ffbbc 1335 {
klauss 109:a5b8264ffbbc 1336 print_hex_call_var = false;
klauss 109:a5b8264ffbbc 1337 VZ_call * call = __find_Call__( v_call, print_hex_this_call );
klauss 109:a5b8264ffbbc 1338
klauss 109:a5b8264ffbbc 1339 uint8_t * ptr = NULL;
klauss 109:a5b8264ffbbc 1340 if( call != NULL )
klauss 109:a5b8264ffbbc 1341 {
klauss 109:a5b8264ffbbc 1342 ptr = ( uint8_t * ) call;
klauss 109:a5b8264ffbbc 1343 }
klauss 109:a5b8264ffbbc 1344
klauss 109:a5b8264ffbbc 1345 if ( ptr != NULL )
klauss 109:a5b8264ffbbc 1346 {
klauss 109:a5b8264ffbbc 1347 send_msg ("Values :: %p\r\n", ( void *) ptr );
klauss 109:a5b8264ffbbc 1348 for ( register int i = 0; i < sizeof( VZ_call ); i++ )
klauss 109:a5b8264ffbbc 1349 {
klauss 109:a5b8264ffbbc 1350 if( debug_uart3 ) pc.printf("%x", *ptr++ );
klauss 109:a5b8264ffbbc 1351
klauss 109:a5b8264ffbbc 1352 if ( ( i % 32 ) == 0 )
klauss 109:a5b8264ffbbc 1353 {
klauss 109:a5b8264ffbbc 1354 if( i != 0 )
klauss 109:a5b8264ffbbc 1355 {
klauss 109:a5b8264ffbbc 1356 if( debug_uart3 ) pc.printf("\n\r> ");
klauss 109:a5b8264ffbbc 1357 }
klauss 109:a5b8264ffbbc 1358 else
klauss 109:a5b8264ffbbc 1359 {
klauss 109:a5b8264ffbbc 1360 if( debug_uart3 ) pc.printf(" ");
klauss 109:a5b8264ffbbc 1361 }
klauss 109:a5b8264ffbbc 1362 }
klauss 109:a5b8264ffbbc 1363 else
klauss 109:a5b8264ffbbc 1364 {
klauss 109:a5b8264ffbbc 1365 if( debug_uart3 ) pc.printf(" ");
klauss 109:a5b8264ffbbc 1366 }
klauss 109:a5b8264ffbbc 1367 }
klauss 109:a5b8264ffbbc 1368 if ( debug_uart3 ) pc.printf("\n\r> ");
klauss 109:a5b8264ffbbc 1369
klauss 109:a5b8264ffbbc 1370 if ( tcp_session ) {
klauss 109:a5b8264ffbbc 1371 char aux[ ( 32 * 3 ) + 5 ];
klauss 109:a5b8264ffbbc 1372
klauss 109:a5b8264ffbbc 1373 for ( register int i = 0; i < ( 32 * 3 ) + 5 ; i++ ) aux [ i ] = 0;
klauss 109:a5b8264ffbbc 1374
klauss 109:a5b8264ffbbc 1375 ptr = NULL;
klauss 109:a5b8264ffbbc 1376
klauss 109:a5b8264ffbbc 1377 VZ_call * call = __find_Call__( v_call, print_hex_this_call );
klauss 109:a5b8264ffbbc 1378
klauss 109:a5b8264ffbbc 1379 uint8_t * ptr = NULL;
klauss 109:a5b8264ffbbc 1380 if( call != NULL )
klauss 109:a5b8264ffbbc 1381 {
klauss 109:a5b8264ffbbc 1382 ptr = ( uint8_t * ) call;
klauss 109:a5b8264ffbbc 1383 }
klauss 109:a5b8264ffbbc 1384
klauss 109:a5b8264ffbbc 1385 if ( ptr != NULL )
klauss 109:a5b8264ffbbc 1386 {
klauss 109:a5b8264ffbbc 1387 bool finished = false;
klauss 109:a5b8264ffbbc 1388 volatile int i = 0;
klauss 109:a5b8264ffbbc 1389 int count = 0;
klauss 109:a5b8264ffbbc 1390 Timer dont_overwrite_tcp_buffer;
klauss 109:a5b8264ffbbc 1391 dont_overwrite_tcp_buffer.reset ();
klauss 109:a5b8264ffbbc 1392 dont_overwrite_tcp_buffer.start ();
klauss 109:a5b8264ffbbc 1393
klauss 109:a5b8264ffbbc 1394 while ( !finished )
klauss 109:a5b8264ffbbc 1395 {
klauss 109:a5b8264ffbbc 1396 if( dont_overwrite_tcp_buffer.read_ms () >= 20 )
klauss 109:a5b8264ffbbc 1397 {
klauss 109:a5b8264ffbbc 1398 dont_overwrite_tcp_buffer.reset();
klauss 109:a5b8264ffbbc 1399 for ( ; i < sizeof( VZ_call ); i++ )
klauss 109:a5b8264ffbbc 1400 {
klauss 109:a5b8264ffbbc 1401 char tmp[ 16 ];
klauss 109:a5b8264ffbbc 1402 sprintf( tmp, "%x ", *ptr++ );
klauss 109:a5b8264ffbbc 1403 strcat( aux, tmp );
klauss 109:a5b8264ffbbc 1404 count++;
klauss 109:a5b8264ffbbc 1405
klauss 109:a5b8264ffbbc 1406 if ( count >= 32 )
klauss 109:a5b8264ffbbc 1407 {
klauss 109:a5b8264ffbbc 1408 count = 0;
klauss 109:a5b8264ffbbc 1409 i++;
klauss 109:a5b8264ffbbc 1410 break;
klauss 109:a5b8264ffbbc 1411 }
klauss 109:a5b8264ffbbc 1412 }
klauss 109:a5b8264ffbbc 1413 strcat ( aux, "\n\r\0" );
klauss 109:a5b8264ffbbc 1414 tcp_client.send_all ( ( char *)aux, strlen( (char * )aux ) );
klauss 109:a5b8264ffbbc 1415 if ( i >= sizeof ( VZ_call ) ) finished = true;
klauss 109:a5b8264ffbbc 1416 strcpy ( aux, "\0" );
klauss 109:a5b8264ffbbc 1417 }
klauss 109:a5b8264ffbbc 1418 }
klauss 109:a5b8264ffbbc 1419 dont_overwrite_tcp_buffer.reset();
klauss 109:a5b8264ffbbc 1420 dont_overwrite_tcp_buffer.stop();
klauss 109:a5b8264ffbbc 1421 tcp_client.send_all ( "\r\n> ", strlen( "\r\n> " ) );
klauss 109:a5b8264ffbbc 1422 }
klauss 109:a5b8264ffbbc 1423 }
klauss 109:a5b8264ffbbc 1424 }
klauss 109:a5b8264ffbbc 1425 else
klauss 109:a5b8264ffbbc 1426 {
klauss 109:a5b8264ffbbc 1427 if( print_values )
klauss 109:a5b8264ffbbc 1428 {
klauss 109:a5b8264ffbbc 1429 debug_msg("Call %d not found", print_this_call );
klauss 109:a5b8264ffbbc 1430 }
klauss 109:a5b8264ffbbc 1431 else
klauss 109:a5b8264ffbbc 1432 {
klauss 109:a5b8264ffbbc 1433 send_msg("Call %d not found", print_this_call );
klauss 109:a5b8264ffbbc 1434 }
klauss 109:a5b8264ffbbc 1435 }
klauss 109:a5b8264ffbbc 1436 }
klauss 109:a5b8264ffbbc 1437
klauss 109:a5b8264ffbbc 1438
klauss 109:a5b8264ffbbc 1439 if ( print_hex_rtp_var )
klauss 109:a5b8264ffbbc 1440 {
klauss 109:a5b8264ffbbc 1441 print_hex_rtp_var = false;
klauss 109:a5b8264ffbbc 1442 VZ_call * call = __find_Call__( v_call, print_hex_this_rtp );
klauss 109:a5b8264ffbbc 1443
klauss 109:a5b8264ffbbc 1444 uint8_t * ptr = NULL;
klauss 109:a5b8264ffbbc 1445 if( call != NULL )
klauss 109:a5b8264ffbbc 1446 {
klauss 109:a5b8264ffbbc 1447 ptr = ( uint8_t * ) call -> check_rtp ();
klauss 109:a5b8264ffbbc 1448 }
klauss 109:a5b8264ffbbc 1449
klauss 109:a5b8264ffbbc 1450 if ( ptr != NULL )
klauss 109:a5b8264ffbbc 1451 {
klauss 109:a5b8264ffbbc 1452 send_msg ("Values :: %p\r\n", ( void *) ptr );
klauss 109:a5b8264ffbbc 1453 for ( register int i = 0; i < sizeof( RTP ); i++ )
klauss 109:a5b8264ffbbc 1454 {
klauss 109:a5b8264ffbbc 1455 if( debug_uart3 ) pc.printf("%x", *ptr++ );
klauss 109:a5b8264ffbbc 1456
klauss 109:a5b8264ffbbc 1457 if ( ( i % 32 ) == 0 )
klauss 109:a5b8264ffbbc 1458 {
klauss 109:a5b8264ffbbc 1459 if( i != 0 )
klauss 109:a5b8264ffbbc 1460 {
klauss 109:a5b8264ffbbc 1461 if( debug_uart3 ) pc.printf("\n\r> ");
klauss 109:a5b8264ffbbc 1462 }
klauss 109:a5b8264ffbbc 1463 else
klauss 109:a5b8264ffbbc 1464 {
klauss 109:a5b8264ffbbc 1465 if( debug_uart3 ) pc.printf(" ");
klauss 109:a5b8264ffbbc 1466 }
klauss 109:a5b8264ffbbc 1467 }
klauss 109:a5b8264ffbbc 1468 else
klauss 109:a5b8264ffbbc 1469 {
klauss 109:a5b8264ffbbc 1470 if( debug_uart3 ) pc.printf(" ");
klauss 109:a5b8264ffbbc 1471 }
klauss 109:a5b8264ffbbc 1472 }
klauss 109:a5b8264ffbbc 1473 if ( debug_uart3 ) pc.printf("\n\r> ");
klauss 109:a5b8264ffbbc 1474
klauss 109:a5b8264ffbbc 1475 if ( tcp_session ) {
klauss 109:a5b8264ffbbc 1476 char aux[ ( 32 * 3 ) + 5 ];
klauss 109:a5b8264ffbbc 1477
klauss 109:a5b8264ffbbc 1478 for ( register int i = 0; i < ( 32 * 3 ) + 5 ; i++ ) aux [ i ] = 0;
klauss 109:a5b8264ffbbc 1479
klauss 109:a5b8264ffbbc 1480 ptr = NULL;
klauss 109:a5b8264ffbbc 1481
klauss 109:a5b8264ffbbc 1482 VZ_call * call = __find_Call__( v_call, print_hex_this_rtp );
klauss 109:a5b8264ffbbc 1483
klauss 109:a5b8264ffbbc 1484 uint8_t * ptr = NULL;
klauss 109:a5b8264ffbbc 1485 if( call != NULL )
klauss 109:a5b8264ffbbc 1486 {
klauss 109:a5b8264ffbbc 1487 ptr = ( uint8_t * ) call -> check_rtp ();
klauss 109:a5b8264ffbbc 1488 }
klauss 109:a5b8264ffbbc 1489
klauss 109:a5b8264ffbbc 1490 if ( ptr != NULL )
klauss 109:a5b8264ffbbc 1491 {
klauss 109:a5b8264ffbbc 1492 bool finished = false;
klauss 109:a5b8264ffbbc 1493 volatile int i = 0;
klauss 109:a5b8264ffbbc 1494 int count = 0;
klauss 109:a5b8264ffbbc 1495 Timer dont_overwrite_tcp_buffer;
klauss 109:a5b8264ffbbc 1496 dont_overwrite_tcp_buffer.reset ();
klauss 109:a5b8264ffbbc 1497 dont_overwrite_tcp_buffer.start ();
klauss 109:a5b8264ffbbc 1498
klauss 109:a5b8264ffbbc 1499 while ( !finished )
klauss 109:a5b8264ffbbc 1500 {
klauss 109:a5b8264ffbbc 1501 if( dont_overwrite_tcp_buffer.read_ms () >= 20 )
klauss 109:a5b8264ffbbc 1502 {
klauss 109:a5b8264ffbbc 1503 dont_overwrite_tcp_buffer.reset();
klauss 109:a5b8264ffbbc 1504 for ( ; i < sizeof( RTP ); i++ )
klauss 109:a5b8264ffbbc 1505 {
klauss 109:a5b8264ffbbc 1506 char tmp[ 16 ];
klauss 109:a5b8264ffbbc 1507 sprintf( tmp, "%x ", *ptr++ );
klauss 109:a5b8264ffbbc 1508 strcat( aux, tmp );
klauss 109:a5b8264ffbbc 1509 count++;
klauss 109:a5b8264ffbbc 1510
klauss 109:a5b8264ffbbc 1511 if ( count >= 32 )
klauss 109:a5b8264ffbbc 1512 {
klauss 109:a5b8264ffbbc 1513 count = 0;
klauss 109:a5b8264ffbbc 1514 i++;
klauss 109:a5b8264ffbbc 1515 break;
klauss 109:a5b8264ffbbc 1516 }
klauss 109:a5b8264ffbbc 1517 }
klauss 109:a5b8264ffbbc 1518 strcat ( aux, "\n\r\0" );
klauss 109:a5b8264ffbbc 1519 tcp_client.send_all ( ( char *)aux, strlen( (char * )aux ) );
klauss 109:a5b8264ffbbc 1520 if ( i >= sizeof ( RTP ) ) finished = true;
klauss 109:a5b8264ffbbc 1521 strcpy ( aux, "\0" );
klauss 109:a5b8264ffbbc 1522 }
klauss 109:a5b8264ffbbc 1523 }
klauss 109:a5b8264ffbbc 1524 dont_overwrite_tcp_buffer.reset();
klauss 109:a5b8264ffbbc 1525 dont_overwrite_tcp_buffer.stop();
klauss 109:a5b8264ffbbc 1526 tcp_client.send_all ( "\r\n> ", strlen( "\r\n> " ) );
klauss 109:a5b8264ffbbc 1527 }
klauss 109:a5b8264ffbbc 1528 }
klauss 109:a5b8264ffbbc 1529 }
klauss 109:a5b8264ffbbc 1530 else
klauss 109:a5b8264ffbbc 1531 {
klauss 109:a5b8264ffbbc 1532 if( print_values )
klauss 109:a5b8264ffbbc 1533 {
klauss 109:a5b8264ffbbc 1534 debug_msg("Call %d not found", print_this_rtp );
klauss 109:a5b8264ffbbc 1535 }
klauss 109:a5b8264ffbbc 1536 else
klauss 109:a5b8264ffbbc 1537 {
klauss 109:a5b8264ffbbc 1538 send_msg("Call %d not found", print_this_rtp );
klauss 109:a5b8264ffbbc 1539 }
klauss 109:a5b8264ffbbc 1540 }
klauss 109:a5b8264ffbbc 1541 }
klauss 109:a5b8264ffbbc 1542
klauss 109:a5b8264ffbbc 1543 if ( print_rtp_var )
klauss 109:a5b8264ffbbc 1544 {
klauss 109:a5b8264ffbbc 1545 print_rtp_var = false;
klauss 109:a5b8264ffbbc 1546 VZ_call * call = __find_Call__( v_call, print_this_rtp );
klauss 109:a5b8264ffbbc 1547 if ( call != NULL )
klauss 109:a5b8264ffbbc 1548 {
klauss 109:a5b8264ffbbc 1549 if ( call -> check_rtp () != NULL )
klauss 109:a5b8264ffbbc 1550 {
klauss 109:a5b8264ffbbc 1551 send_msg ("Values :: %p\r\n", ( void *) call -> check_rtp () );
klauss 109:a5b8264ffbbc 1552 call -> rtp_print_yourself ();
klauss 109:a5b8264ffbbc 1553 }
klauss 109:a5b8264ffbbc 1554 else
klauss 109:a5b8264ffbbc 1555 {
klauss 109:a5b8264ffbbc 1556 if( print_values )
klauss 109:a5b8264ffbbc 1557 {
klauss 109:a5b8264ffbbc 1558 debug_msg("Call->RTP %d not found", print_this_rtp );
klauss 109:a5b8264ffbbc 1559 }
klauss 109:a5b8264ffbbc 1560 else
klauss 109:a5b8264ffbbc 1561 {
klauss 109:a5b8264ffbbc 1562 send_msg("Call->RTP %d not found", print_this_rtp );
klauss 109:a5b8264ffbbc 1563 }
klauss 109:a5b8264ffbbc 1564 }
klauss 109:a5b8264ffbbc 1565 }
klauss 109:a5b8264ffbbc 1566 else
klauss 109:a5b8264ffbbc 1567 {
klauss 109:a5b8264ffbbc 1568 if( print_values )
klauss 109:a5b8264ffbbc 1569 {
klauss 109:a5b8264ffbbc 1570 debug_msg("Call->RTP %d not found", print_this_rtp );
klauss 109:a5b8264ffbbc 1571 }
klauss 109:a5b8264ffbbc 1572 else
klauss 109:a5b8264ffbbc 1573 {
klauss 109:a5b8264ffbbc 1574 send_msg("Call->RTP %d not found", print_this_rtp );
klauss 109:a5b8264ffbbc 1575 }
klauss 109:a5b8264ffbbc 1576 }
klauss 109:a5b8264ffbbc 1577 }
klauss 109:a5b8264ffbbc 1578
klauss 109:a5b8264ffbbc 1579 //end debug_print
klauss 91:c2a86b1f8aaa 1580
klauss 91:c2a86b1f8aaa 1581 if( reset_cks == true ) {
klauss 81:3656f00ab3db 1582 pkg_cksok = 0;
klauss 81:3656f00ab3db 1583 pkg_ckserr = 0;
klauss 99:e80850c51106 1584 pkg_zero = 0;
klauss 81:3656f00ab3db 1585 reset_cks = false;
klauss 99:e80850c51106 1586 out_of_range = 0;
klauss 99:e80850c51106 1587 missed_pkg = 0;
klauss 100:09a23fcd3bdf 1588 delayed_pkg_to_cb = 0;
klauss 99:e80850c51106 1589 cpld_pkg_tx_counter = 0;
klauss 99:e80850c51106 1590 cpld_pkg_rx_counter = 0;
klauss 81:3656f00ab3db 1591 pcks_s = true;
klauss 81:3656f00ab3db 1592 }
klauss 91:c2a86b1f8aaa 1593
klauss 91:c2a86b1f8aaa 1594 if( pcks_s == true ) {
klauss 109:a5b8264ffbbc 1595 send_msg("PKG_CKS OK: %d :: PKG_CKS ERR: %d :: PKG_0: %d :: Out_of_range: %d :: Miss_Pkg :: %d"
klauss 109:a5b8264ffbbc 1596 "\n\r> TX_delayed :: %d :: TX_Counter :: %d :: RX_Counter :: %d", pkg_cksok, pkg_ckserr, pkg_zero, out_of_range, missed_pkg, delayed_pkg_to_cb, cpld_pkg_tx_counter, cpld_pkg_rx_counter );
klauss 81:3656f00ab3db 1597 pcks_s = false;
klauss 81:3656f00ab3db 1598 }
klauss 109:a5b8264ffbbc 1599
klauss 100:09a23fcd3bdf 1600 if( flood_bug_pkg ){
klauss 100:09a23fcd3bdf 1601 static int id = 0x10;
klauss 100:09a23fcd3bdf 1602 if( id < 10 ) id = 0x0b;
klauss 109:a5b8264ffbbc 1603 send2callboxes( __build_cb_package__( 5828, 5123, __REGISTRY__,
klauss 109:a5b8264ffbbc 1604 ( char * )buffer, id++, __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
klauss 100:09a23fcd3bdf 1605 }
klauss 100:09a23fcd3bdf 1606
klauss 109:a5b8264ffbbc 1607 if( led_sync_timer.read() > 1 ) {
klauss 78:1353744f01e1 1608 led_sync_timer.reset();
klauss 78:1353744f01e1 1609 led3 = !led3;
klauss 78:1353744f01e1 1610 CAB_LED = !CAB_LED;
klauss 78:1353744f01e1 1611 }
klauss 109:a5b8264ffbbc 1612
klauss 109:a5b8264ffbbc 1613 static int test_ext = 5102;
klauss 109:a5b8264ffbbc 1614 static int test_port = 5102;
klauss 109:a5b8264ffbbc 1615
klauss 109:a5b8264ffbbc 1616 if ( tango )
klauss 109:a5b8264ffbbc 1617 {
klauss 109:a5b8264ffbbc 1618 if ( v_cb -> size () >= 27 )
klauss 108:18a3702650f3 1619 {
klauss 109:a5b8264ffbbc 1620 tango = false;
klauss 109:a5b8264ffbbc 1621 test_timer.start ();
klauss 109:a5b8264ffbbc 1622 }
klauss 109:a5b8264ffbbc 1623
klauss 109:a5b8264ffbbc 1624 ext = test_ext++;
klauss 109:a5b8264ffbbc 1625 port = test_port++;
klauss 109:a5b8264ffbbc 1626 type = __REGISTRY__;
klauss 109:a5b8264ffbbc 1627 data = buffer;
klauss 105:a930035b6556 1628 }
klauss 109:a5b8264ffbbc 1629
klauss 109:a5b8264ffbbc 1630 if( v_cb -> size () >= 27 )
klauss 109:a5b8264ffbbc 1631 {
klauss 109:a5b8264ffbbc 1632 if( ( test_timer.read_ms () > 500 ) && ( type == __DO_NOTHING__ ) )
klauss 109:a5b8264ffbbc 1633 {
klauss 109:a5b8264ffbbc 1634 if( test_ext >= ( 5102 + 26 ) ) test_ext = 5102;
klauss 109:a5b8264ffbbc 1635 if( test_port >= ( 5102 + 26 ) ) test_port = 5102;
klauss 109:a5b8264ffbbc 1636
klauss 109:a5b8264ffbbc 1637 ext = test_ext++;
klauss 109:a5b8264ffbbc 1638 port = test_port++;
klauss 109:a5b8264ffbbc 1639 type = __REGISTRY__;
klauss 109:a5b8264ffbbc 1640 data = buffer;
klauss 109:a5b8264ffbbc 1641 test_timer.reset ();
klauss 109:a5b8264ffbbc 1642 }
klauss 109:a5b8264ffbbc 1643 }
klauss 109:a5b8264ffbbc 1644
klauss 91:c2a86b1f8aaa 1645 switch( type ) {
klauss 91:c2a86b1f8aaa 1646 case __DO_NOTHING__ :
klauss 91:c2a86b1f8aaa 1647 {}
klauss 91:c2a86b1f8aaa 1648 break;
klauss 91:c2a86b1f8aaa 1649
klauss 0:4d17cd9c8f9d 1650 case __CB_BYE__ : {
klauss 63:0d95da692bb4 1651 cb_bye_counter++;
klauss 0:4d17cd9c8f9d 1652 Call_Box * cb = __find_CB__( v_cb, ext );
klauss 91:c2a86b1f8aaa 1653 if( cb != NULL ) {
klauss 81:3656f00ab3db 1654 if( debug_invite || debug_main ) debug_msg("Received bye pkg with msg_id %d e pkg_id %d", cb->get_msg_id(), data[ 0 ] );
klauss 0:4d17cd9c8f9d 1655 data[ 0 ] |= BIT7;
klauss 0:4d17cd9c8f9d 1656 cb->set_msg_id( data[ 0 ] );
klauss 81:3656f00ab3db 1657 if( debug_main || debug_invite ) debug_msg( "Request bye from CBx " );
klauss 92:92df17f538a8 1658
klauss 81:3656f00ab3db 1659 bool already_removed = true;
klauss 91:c2a86b1f8aaa 1660 for( register uint8_t i = 0; i < v_call->size(); i++ ) {
klauss 0:4d17cd9c8f9d 1661 VZ_call * call = (VZ_call *)v_call->get_element( i );
klauss 91:c2a86b1f8aaa 1662 if( call->get_cb_ext() == ext ) {
klauss 81:3656f00ab3db 1663 already_removed = false;
klauss 4:de46f0d9b14d 1664 cb->send_bye();
klauss 91:c2a86b1f8aaa 1665
klauss 0:4d17cd9c8f9d 1666 ts->return_timeslice( cb->get_timeslice() );
klauss 0:4d17cd9c8f9d 1667 cb->set_timeslice( 0x00 );
klauss 78:1353744f01e1 1668 data[ __TIMESLICE_PLACE__ ] = 0x00;
klauss 91:c2a86b1f8aaa 1669
klauss 0:4d17cd9c8f9d 1670 set_status( cb->status, cb_idle );
klauss 78:1353744f01e1 1671 set_status( cb->sip->status, sip_idle );
klauss 91:c2a86b1f8aaa 1672
klauss 81:3656f00ab3db 1673 v_call->remove_element( i );
klauss 109:a5b8264ffbbc 1674
klauss 109:a5b8264ffbbc 1675 //cb->set_msg_id( ( cb->get_msg_id() & ~BIT7 ) + 1 );
klauss 109:a5b8264ffbbc 1676 //cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ~BIT7 );
klauss 91:c2a86b1f8aaa 1677
klauss 109:a5b8264ffbbc 1678 send2callboxes( __build_cb_package__( ext, port, __CB_BYE__,
klauss 109:a5b8264ffbbc 1679 ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
klauss 92:92df17f538a8 1680
klauss 92:92df17f538a8 1681 // envia o ack bye depois atualiza o msg_id
klauss 92:92df17f538a8 1682 cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ~BIT7 );
klauss 91:c2a86b1f8aaa 1683
klauss 3:cd9148672e25 1684 delete( call );
klauss 109:a5b8264ffbbc 1685 //cb->re_start_timer();
klauss 0:4d17cd9c8f9d 1686 }
klauss 0:4d17cd9c8f9d 1687 }
klauss 82:f55d13babca0 1688 if( already_removed ) if( debug_main || debug_invite ) debug_msg( "Already removed from vector call" );
klauss 109:a5b8264ffbbc 1689
klauss 109:a5b8264ffbbc 1690 //ok, mas nem sempre o cbx "entrou em call
klauss 82:f55d13babca0 1691 for( register uint8_t i = 0; i < v_cb->size(); i++ ) {
klauss 82:f55d13babca0 1692 Call_Box * cb = (Call_Box *)v_cb->get_element( i );
klauss 82:f55d13babca0 1693 if( cb->get_ext() == ext ) {
klauss 82:f55d13babca0 1694 already_removed = true;
klauss 82:f55d13babca0 1695 if( cb->get_status() != cb_idle ) {
klauss 82:f55d13babca0 1696 already_removed = false;
klauss 82:f55d13babca0 1697 cb->send_bye();
klauss 82:f55d13babca0 1698
klauss 82:f55d13babca0 1699 ts->return_timeslice( cb->get_timeslice() );
klauss 82:f55d13babca0 1700 cb->set_timeslice( 0x00 );
klauss 82:f55d13babca0 1701 data[ __TIMESLICE_PLACE__ ] = 0x00;
klauss 82:f55d13babca0 1702
klauss 82:f55d13babca0 1703 set_status( cb->status, cb_idle );
klauss 82:f55d13babca0 1704 set_status( cb->sip->status, sip_idle );
klauss 82:f55d13babca0 1705
klauss 109:a5b8264ffbbc 1706 send2callboxes( __build_cb_package__( ext, port, __CB_BYE__,
klauss 109:a5b8264ffbbc 1707 ( char * )data, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
klauss 82:f55d13babca0 1708
klauss 109:a5b8264ffbbc 1709 //cb->set_msg_id( ( cb->get_msg_id() & ~BIT7 ) + 1 );
klauss 92:92df17f538a8 1710 cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ~BIT7 );
klauss 109:a5b8264ffbbc 1711
klauss 109:a5b8264ffbbc 1712 //cb->re_start_timer();
klauss 82:f55d13babca0 1713 }
klauss 82:f55d13babca0 1714 }
klauss 82:f55d13babca0 1715 }
klauss 91:c2a86b1f8aaa 1716
klauss 82:f55d13babca0 1717 if( already_removed ) if( debug_main || debug_invite ) debug_msg( "Already removed from inviting queue" );
klauss 91:c2a86b1f8aaa 1718
klauss 78:1353744f01e1 1719 cb->registry();
klauss 91:c2a86b1f8aaa 1720 } else if( debug_invite || debug_main ) debug_msg("Bye from who ? %d", ext );
klauss 91:c2a86b1f8aaa 1721 }
klauss 91:c2a86b1f8aaa 1722 break;
klauss 91:c2a86b1f8aaa 1723
klauss 0:4d17cd9c8f9d 1724 case __INVITE__ : {
klauss 109:a5b8264ffbbc 1725 if( drop_invite_pkg ){
klauss 109:a5b8264ffbbc 1726 debug_msg("Dropando invite pck msg id :: %d", data[ 0 ] );
klauss 109:a5b8264ffbbc 1727 break;
klauss 109:a5b8264ffbbc 1728 }
klauss 63:0d95da692bb4 1729 invite_counter++;
klauss 78:1353744f01e1 1730 if( debug_invite ) debug_msg("Request Invite received from Cbx %i", ext);
klauss 0:4d17cd9c8f9d 1731 Call_Box * cb = __find_CB__( v_cb, ext );
klauss 91:c2a86b1f8aaa 1732 if( cb == NULL ) {
klauss 91:c2a86b1f8aaa 1733 if( v_cb->size() < __MAX_CB_IN_A_BRANCH__ ) {
klauss 91:c2a86b1f8aaa 1734 if( debug_main ) debug_msg( "Adding CBx :: %i", ext );
klauss 91:c2a86b1f8aaa 1735 cb = new Call_Box( ext, port );
klauss 91:c2a86b1f8aaa 1736
klauss 91:c2a86b1f8aaa 1737 if( cb == NULL ) {
klauss 91:c2a86b1f8aaa 1738 memory_is_over = true;
klauss 91:c2a86b1f8aaa 1739 if( debug_memory ) debug_msg("Invite allocation cb fail");
klauss 91:c2a86b1f8aaa 1740 } else {
klauss 91:c2a86b1f8aaa 1741 v_cb->add( cb );
klauss 91:c2a86b1f8aaa 1742 }
klauss 89:0fe315117b00 1743 }
klauss 0:4d17cd9c8f9d 1744 }
klauss 91:c2a86b1f8aaa 1745 if( cb != NULL ) {
klauss 91:c2a86b1f8aaa 1746 cb->set_msg_id( data[ 0 ] );
klauss 92:92df17f538a8 1747 if( cb->status == cb_idle ){
klauss 92:92df17f538a8 1748 cb->set_invite_response_ok();
klauss 92:92df17f538a8 1749 cb->invite_retry_count_reset();
klauss 92:92df17f538a8 1750 }
klauss 87:679ee0d594a9 1751 invite_handler( v_call, v_cb, ts, cb );
klauss 87:679ee0d594a9 1752 }
klauss 91:c2a86b1f8aaa 1753 }
klauss 91:c2a86b1f8aaa 1754 break;
klauss 4:de46f0d9b14d 1755 case __REGISTRY__ : {
klauss 63:0d95da692bb4 1756 registry_counter++;
klauss 78:1353744f01e1 1757 Call_Box * cb = __find_CB__( v_cb, ext );
klauss 91:c2a86b1f8aaa 1758 if( v_cb->size() < __MAX_CB_IN_A_BRANCH__ ) {
klauss 91:c2a86b1f8aaa 1759 if( cb == NULL ) {
klauss 91:c2a86b1f8aaa 1760 if( debug_main ) debug_msg("Adding Cbx :: %d", ext );
klauss 91:c2a86b1f8aaa 1761 cb = new Call_Box( ext, port );
klauss 91:c2a86b1f8aaa 1762
klauss 91:c2a86b1f8aaa 1763 if( cb == NULL ) {
klauss 91:c2a86b1f8aaa 1764 memory_is_over = true;
klauss 91:c2a86b1f8aaa 1765 if( debug_memory ) debug_msg("Registry cb allocation fail");
klauss 91:c2a86b1f8aaa 1766 } else {
klauss 91:c2a86b1f8aaa 1767 v_cb->add( cb );
klauss 91:c2a86b1f8aaa 1768 if( debug_main ) debug_msg("Added CBx -- %d", ext );
klauss 91:c2a86b1f8aaa 1769 }
klauss 87:679ee0d594a9 1770 }
klauss 0:4d17cd9c8f9d 1771 }
klauss 78:1353744f01e1 1772 if( debug_main ) debug_msg("Registered %d - %d", ext, port );
klauss 91:c2a86b1f8aaa 1773
klauss 87:679ee0d594a9 1774 if( cb != NULL ) cb->registry();
klauss 109:a5b8264ffbbc 1775
klauss 91:c2a86b1f8aaa 1776 }
klauss 91:c2a86b1f8aaa 1777 break;
klauss 4:de46f0d9b14d 1778 case __BOOT__ : {
klauss 63:0d95da692bb4 1779 boot_counter++;
klauss 99:e80850c51106 1780 if( debug_boot == true ){
klauss 99:e80850c51106 1781 send_msg("Rcv boot pkg from (%d, %d) pkg-id %d", ext, port, data[ 0 ] );
klauss 99:e80850c51106 1782 }
klauss 109:a5b8264ffbbc 1783 send2callboxes( __build_cb_package__( ext, port, __REGISTRY__,
klauss 109:a5b8264ffbbc 1784 ( char * )data, data[ 0 ] | BIT7, __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
klauss 109:a5b8264ffbbc 1785 }
klauss 109:a5b8264ffbbc 1786 break;
klauss 109:a5b8264ffbbc 1787
klauss 109:a5b8264ffbbc 1788 case __TELEMETRY__ : {
klauss 109:a5b8264ffbbc 1789 if( debug_telemetry ) send_msg("::Telemetry from %d - %d::", ext, port );
klauss 109:a5b8264ffbbc 1790 build_telemetry_report( ext, port, ( char *)data );
klauss 91:c2a86b1f8aaa 1791 }
klauss 91:c2a86b1f8aaa 1792 break;
klauss 99:e80850c51106 1793
klauss 99:e80850c51106 1794 case __FW__ : {
klauss 99:e80850c51106 1795 if( debug_fw_print ) send_msg("::FW pkg from %d - %d::", ext, port );
klauss 99:e80850c51106 1796 fw_cbx_pkg( ext, port, ( char *)buffer );
klauss 99:e80850c51106 1797 }
klauss 99:e80850c51106 1798 break;
klauss 91:c2a86b1f8aaa 1799
klauss 67:cdedc64d9921 1800 case __BOOTLOADER_CBX__ : {
klauss 67:cdedc64d9921 1801 bootloader_cbx_counter++;
klauss 109:a5b8264ffbbc 1802 //int ret = bl_cbx_reply_to_eth( ext, ( char * )data );
klauss 91:c2a86b1f8aaa 1803 }
klauss 91:c2a86b1f8aaa 1804 break;
klauss 91:c2a86b1f8aaa 1805
klauss 109:a5b8264ffbbc 1806 case __PROMPT__ : {
klauss 78:1353744f01e1 1807 Call_Box * cb = __find_CB__( v_cb, ext );
klauss 91:c2a86b1f8aaa 1808
klauss 91:c2a86b1f8aaa 1809 if( cb == NULL ) {
klauss 109:a5b8264ffbbc 1810 // send2callboxes( __build_cb_package__( ext, port, __REGISTRY__,
klauss 109:a5b8264ffbbc 1811 // ( char * )data, ( ( data[ 0 ] & ~BIT7 ) + 1 ), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
klauss 109:a5b8264ffbbc 1812
klauss 109:a5b8264ffbbc 1813 if( debug_main ) debug_msg("Adding Cbx :: %d", ext );
klauss 109:a5b8264ffbbc 1814 cb = new Call_Box( ext, port );
klauss 109:a5b8264ffbbc 1815 if( cb == NULL ){
klauss 109:a5b8264ffbbc 1816 memory_is_over = true;
klauss 109:a5b8264ffbbc 1817 }else{
klauss 109:a5b8264ffbbc 1818 v_cb->add( cb );
klauss 109:a5b8264ffbbc 1819 if( debug_main ) debug_msg("Added CBx -- %d", ext );
klauss 87:679ee0d594a9 1820 }
klauss 48:195c97f12e8e 1821 }
klauss 91:c2a86b1f8aaa 1822
klauss 92:92df17f538a8 1823 if( cb!= NULL ) cb->registry();
klauss 91:c2a86b1f8aaa 1824
klauss 91:c2a86b1f8aaa 1825 if( xstrmatch( ( uint8_t * )data, ( uint8_t * )"ping" ) ) {
klauss 78:1353744f01e1 1826 if( debug_ping ) send_msg( "Prompt pkg from ( %i, %i ) :: Ping", ext, port );
klauss 91:c2a86b1f8aaa 1827 } else {
klauss 78:1353744f01e1 1828 prompt_counter++;
klauss 109:a5b8264ffbbc 1829 //fixme isso nao poderia ser resolvido com um sendmsg ?
klauss 78:1353744f01e1 1830 send_msg( "Prompt pkg from ( %i, %i ) ::", ext, port );
klauss 91:c2a86b1f8aaa 1831 for( register uint8_t i = 0; i < 32; i++ ) {
klauss 100:09a23fcd3bdf 1832 if( debug_uart3 ) pc.printf("%c", data[ i ] );
klauss 100:09a23fcd3bdf 1833 if( i == 15 ) if( debug_uart3 ) pc.printf( "\r\n" );
klauss 78:1353744f01e1 1834 }
klauss 100:09a23fcd3bdf 1835 if( debug_uart3 ) pc.printf("\n\r> ");
klauss 91:c2a86b1f8aaa 1836
klauss 109:a5b8264ffbbc 1837 if( tcp_session ) {
klauss 109:a5b8264ffbbc 1838 char aux[ __CB_BUFFER_SIZE__ + 3 ];
klauss 109:a5b8264ffbbc 1839 strncpy( aux, (char * )data, __CB_BUFFER_SIZE__ );
klauss 78:1353744f01e1 1840 strcat( aux, "\n\r\0" );
klauss 78:1353744f01e1 1841 tcp_client.send_all( ( char *)data, strlen( (char * )data ) );
klauss 78:1353744f01e1 1842 tcp_client.send_all( "\r\n> ", strlen( "\r\n> " ) );
klauss 78:1353744f01e1 1843 }
klauss 48:195c97f12e8e 1844 }
klauss 91:c2a86b1f8aaa 1845 }
klauss 91:c2a86b1f8aaa 1846 break;
klauss 0:4d17cd9c8f9d 1847 case __AUDIO__ : {
klauss 63:0d95da692bb4 1848 audio_counter++;
klauss 78:1353744f01e1 1849 VZ_call * call = __find_Call__( v_call, ext );
klauss 91:c2a86b1f8aaa 1850 if( call != NULL ) {
klauss 91:c2a86b1f8aaa 1851 char * pkg = call->build_eth_package( data + 2 );
klauss 0:4d17cd9c8f9d 1852 call->send_message( pkg );
klauss 92:92df17f538a8 1853 call->cbx_pkg_idle_timer_reset();
klauss 78:1353744f01e1 1854 Call_Box * cb = __find_CB__( v_cb, ext );
klauss 109:a5b8264ffbbc 1855
klauss 109:a5b8264ffbbc 1856 if ( drop_rtp_from_cbx_pkg )
klauss 109:a5b8264ffbbc 1857 {
klauss 109:a5b8264ffbbc 1858 led2 = !led2;
klauss 109:a5b8264ffbbc 1859 break;
klauss 109:a5b8264ffbbc 1860 }
klauss 109:a5b8264ffbbc 1861
klauss 109:a5b8264ffbbc 1862 if( cb != NULL ){
klauss 109:a5b8264ffbbc 1863 //cb->reset_elapsed_time();
klauss 92:92df17f538a8 1864 cb->set_invite_response_ok();
klauss 92:92df17f538a8 1865 cb->invite_retry_count_reset();
klauss 92:92df17f538a8 1866 }
klauss 91:c2a86b1f8aaa 1867 } else {
klauss 78:1353744f01e1 1868 if( debug_main ) debug_msg("received missed package from CBx :: %i", ext );
klauss 0:4d17cd9c8f9d 1869 }
klauss 91:c2a86b1f8aaa 1870 }
klauss 91:c2a86b1f8aaa 1871 break;
klauss 109:a5b8264ffbbc 1872 }// fim switch
klauss 105:a930035b6556 1873
klauss 99:e80850c51106 1874 { // rajada
klauss 109:a5b8264ffbbc 1875 //if( invite_retry_time == true ){
klauss 109:a5b8264ffbbc 1876 // invite_retry_time = false;
klauss 99:e80850c51106 1877 if( invite_retry_timer.read_ms() > 30 ) {
klauss 99:e80850c51106 1878 invite_retry_timer.reset();
klauss 92:92df17f538a8 1879 static int retry_invite_pkg = 0;
klauss 99:e80850c51106 1880
klauss 92:92df17f538a8 1881 if( retry_invite_pkg >= v_cb->size() ) retry_invite_pkg = 0;
klauss 99:e80850c51106 1882
klauss 109:a5b8264ffbbc 1883 register int i = 0;
klauss 109:a5b8264ffbbc 1884 for( ; i < v_cb->size(); i++ ) {
klauss 99:e80850c51106 1885 Call_Box * cb = (Call_Box * )v_cb->get_element( i );
klauss 99:e80850c51106 1886 if( ( cb->status == cb_ringing ) || ( cb->status == cb_trying ) || ( cb->status == cb_on_call ) ) {
klauss 99:e80850c51106 1887 if( i > retry_invite_pkg ) {
klauss 99:e80850c51106 1888 retry_invite_pkg = i;
klauss 99:e80850c51106 1889 break;
klauss 99:e80850c51106 1890 }
klauss 92:92df17f538a8 1891 }
klauss 99:e80850c51106 1892 }
klauss 109:a5b8264ffbbc 1893
klauss 99:e80850c51106 1894 if( i != v_cb->size() ){
klauss 99:e80850c51106 1895 Call_Box * cb = (Call_Box *)v_cb->get_element( retry_invite_pkg++ );
klauss 109:a5b8264ffbbc 1896
klauss 99:e80850c51106 1897 if( ( cb->status == cb_ringing ) || ( cb->status == cb_trying ) || ( cb->status == cb_on_call ) ) {
klauss 99:e80850c51106 1898 if( cb->get_invite_response() == false ) {
klauss 109:a5b8264ffbbc 1899 //cb->set_msg_id( ( cb->get_msg_id() & ~BIT7 ) + 1 );
klauss 99:e80850c51106 1900 cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ~BIT7 );
klauss 99:e80850c51106 1901
klauss 99:e80850c51106 1902 buffer[ __TIMESLICE_PLACE__ ] = cb->get_timeslice();
klauss 109:a5b8264ffbbc 1903
klauss 109:a5b8264ffbbc 1904 send2callboxes( __build_cb_package__( cb->get_ext(), cb->get_port(), __INVITE__, ( char * )buffer,
klauss 109:a5b8264ffbbc 1905 cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
klauss 99:e80850c51106 1906 if( debug_invite ) debug_msg("resend invite OK to Cbx : ( %d, %d )", cb->get_ext(), cb->get_port() );
klauss 99:e80850c51106 1907 }
klauss 99:e80850c51106 1908 if( cb->get_invite_retry_count() == 0 ) {
klauss 99:e80850c51106 1909 cb->send_bye();
klauss 92:92df17f538a8 1910
klauss 99:e80850c51106 1911 ts->return_timeslice( cb->get_timeslice() );
klauss 99:e80850c51106 1912 cb->set_timeslice( 0x00 );
klauss 99:e80850c51106 1913
klauss 109:a5b8264ffbbc 1914 //cb->set_msg_id( ( cb->get_msg_id() & ~BIT7 ) + 1 );
klauss 99:e80850c51106 1915 cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ~BIT7 );
klauss 99:e80850c51106 1916
klauss 99:e80850c51106 1917 for( register uint8_t i = 0; i < v_call->size(); i++ ) {
klauss 99:e80850c51106 1918 VZ_call * call = ( VZ_call * )v_call->get_element( i );
klauss 99:e80850c51106 1919 if( call->get_cb_ext() == cb->get_ext() ) {
klauss 99:e80850c51106 1920 v_call->remove_element( i );
klauss 99:e80850c51106 1921 if( call != NULL ) delete( call );
klauss 99:e80850c51106 1922 break;
klauss 99:e80850c51106 1923 }
klauss 92:92df17f538a8 1924 }
klauss 99:e80850c51106 1925
klauss 99:e80850c51106 1926 if( debug_invite ) debug_msg( "-- No audio pkgs --" );
klauss 99:e80850c51106 1927 set_status( cb->status, cb_idle );
klauss 99:e80850c51106 1928 set_status( cb->sip->status, sip_idle );
klauss 92:92df17f538a8 1929 }
klauss 92:92df17f538a8 1930 }
klauss 92:92df17f538a8 1931 }
klauss 92:92df17f538a8 1932 }
klauss 109:a5b8264ffbbc 1933 } // fim rajada
klauss 109:a5b8264ffbbc 1934
klauss 91:c2a86b1f8aaa 1935 for( register uint8_t i = 0; i < v_call->size(); i++ ) {
klauss 0:4d17cd9c8f9d 1936 VZ_call * call = ( VZ_call * )v_call->get_element( i );
klauss 109:a5b8264ffbbc 1937 int length = 0;
klauss 109:a5b8264ffbbc 1938 char * tmp = call->get_eth_message( &length );
klauss 109:a5b8264ffbbc 1939 if( tmp != NULL ) {
klauss 109:a5b8264ffbbc 1940 int cb_port = 0xffff;
klauss 109:a5b8264ffbbc 1941 Call_Box * cb = __find_CB__( v_cb, call->get_cb_ext() );
klauss 109:a5b8264ffbbc 1942
klauss 109:a5b8264ffbbc 1943 if( cb != NULL ) {
klauss 109:a5b8264ffbbc 1944 cb_port = cb->get_port();
klauss 109:a5b8264ffbbc 1945
klauss 109:a5b8264ffbbc 1946 if ( drop_rtp_from_ast_pkg )
klauss 109:a5b8264ffbbc 1947 {
klauss 109:a5b8264ffbbc 1948 led1 = !led1;
klauss 109:a5b8264ffbbc 1949 }
klauss 109:a5b8264ffbbc 1950 else
klauss 109:a5b8264ffbbc 1951 {
klauss 109:a5b8264ffbbc 1952 uint8_t * pkg2cb = __build_cb_package__( call->get_cb_ext(), cb_port, __AUDIO__,
klauss 108:18a3702650f3 1953 tmp, __AUDIO__, length, write_buffer );
klauss 109:a5b8264ffbbc 1954
klauss 108:18a3702650f3 1955 send2callboxes( pkg2cb );
klauss 109:a5b8264ffbbc 1956 }
klauss 109:a5b8264ffbbc 1957
klauss 109:a5b8264ffbbc 1958 } else if( debug_main ) debug_msg("received missed package from CBx :: %i -- Type :: %i", ext, type );
klauss 0:4d17cd9c8f9d 1959 }
klauss 14:22a35f575502 1960 }
klauss 109:a5b8264ffbbc 1961
klauss 109:a5b8264ffbbc 1962 //if( v_call->size() == 0 ) refresh( v_cb, buffer, write_buffer, NULL );
klauss 109:a5b8264ffbbc 1963
klauss 109:a5b8264ffbbc 1964 if( timer_sync_refresh.read_ms() > 250 ) {
klauss 109:a5b8264ffbbc 1965 timer_sync_refresh.reset();
klauss 106:a34fcf9f0e02 1966
klauss 109:a5b8264ffbbc 1967 static uint8_t mode = TIME_TO_REFRESH;
klauss 109:a5b8264ffbbc 1968
klauss 109:a5b8264ffbbc 1969 if( mode == TIME_TO_REFRESH ) {
klauss 109:a5b8264ffbbc 1970 mode = TIME_TO_WAKE_UP;
klauss 109:a5b8264ffbbc 1971 refresh( v_cb, buffer, write_buffer, NULL );
klauss 109:a5b8264ffbbc 1972 } else {
klauss 109:a5b8264ffbbc 1973 mode = TIME_TO_REFRESH;
klauss 109:a5b8264ffbbc 1974 if( wake_all ) if( v_call->size() == 0 ) wake_all_up( v_cb, buffer, write_buffer );
klauss 89:0fe315117b00 1975 }
klauss 89:0fe315117b00 1976 }
klauss 108:18a3702650f3 1977
klauss 109:a5b8264ffbbc 1978
klauss 109:a5b8264ffbbc 1979 //refresh( v_cb, buffer, write_buffer, NULL );
klauss 109:a5b8264ffbbc 1980
klauss 109:a5b8264ffbbc 1981 //Fixme pensar melhor nessa parte durante ligacoes, pode complicar com muitos cbx ...
klauss 109:a5b8264ffbbc 1982 //if( v_call->size() == 0 ) registry_aging( v_cb, buffer, write_buffer );
klauss 109:a5b8264ffbbc 1983
klauss 78:1353744f01e1 1984 // check sip messages only for cbx in call ?
klauss 78:1353744f01e1 1985 int ext_to__be_removed = sip_manager( v_cb );
klauss 91:c2a86b1f8aaa 1986 if( ext_to__be_removed > 0x00 ) {
klauss 78:1353744f01e1 1987 Call_Box * cb = __find_CB__( v_cb, ext_to__be_removed );
klauss 91:c2a86b1f8aaa 1988 if( cb != NULL ) {
klauss 91:c2a86b1f8aaa 1989 if( cb->status == cb_on_call ) {
klauss 4:de46f0d9b14d 1990 ts->return_timeslice( cb->get_timeslice() );
klauss 4:de46f0d9b14d 1991 cb->set_timeslice( 0x00 );
klauss 4:de46f0d9b14d 1992 buffer[ __TIMESLICE_PLACE__ ] = 0x00;
klauss 91:c2a86b1f8aaa 1993
klauss 78:1353744f01e1 1994 set_status( cb->status, cb_idle );
klauss 78:1353744f01e1 1995 set_status( cb->sip->status, sip_idle );
klauss 91:c2a86b1f8aaa 1996
klauss 91:c2a86b1f8aaa 1997 for( register uint8_t i = 0; i < v_call->size(); i++ ) {
klauss 4:de46f0d9b14d 1998 VZ_call * call = ( VZ_call * )v_call->get_element( i );
klauss 91:c2a86b1f8aaa 1999 if( call->get_cb_ext() == ext_to__be_removed ) {
klauss 4:de46f0d9b14d 2000 v_call->remove_element( i );
klauss 4:de46f0d9b14d 2001 delete( call );
klauss 4:de46f0d9b14d 2002 }
klauss 2:93bec7313ccc 2003 }
klauss 91:c2a86b1f8aaa 2004
klauss 109:a5b8264ffbbc 2005 //cb->set_msg_id( ( cb->get_msg_id() & ~BIT7 ) + 1 );
klauss 92:92df17f538a8 2006 cb->set_msg_id( ( cb->get_msg_id() + 1 ) & ~BIT7 );
klauss 109:a5b8264ffbbc 2007
klauss 109:a5b8264ffbbc 2008 //debug_msg("msg_id -- %d", cb->get_msg_id() );
klauss 91:c2a86b1f8aaa 2009
klauss 109:a5b8264ffbbc 2010 send2callboxes( __build_cb_package__( ext, port, __CB_BYE__,
klauss 109:a5b8264ffbbc 2011 ( char * )buffer, cb->get_msg_id(), __CB_BUFFER_SIZE__ - __VZ_HEADER_OFFSET__, write_buffer ) );
klauss 91:c2a86b1f8aaa 2012
klauss 91:c2a86b1f8aaa 2013 if( debug_invite ) debug_msg("Received Bye from *");
klauss 109:a5b8264ffbbc 2014 //cb->re_start_timer();
klauss 0:4d17cd9c8f9d 2015 }
klauss 91:c2a86b1f8aaa 2016 } else if( debug_main ) debug_msg("Missed bye request from * CBx :: %d", ext );
klauss 109:a5b8264ffbbc 2017 }
klauss 91:c2a86b1f8aaa 2018
klauss 81:3656f00ab3db 2019 /* Verifica andamento de ligações para eventualmente encerra-las por timeout */
klauss 109:a5b8264ffbbc 2020 call_manager( v_call, v_cb, buffer, write_buffer, ts );
klauss 91:c2a86b1f8aaa 2021
klauss 109:a5b8264ffbbc 2022 /* tratamento de pedidos de ligação */
klauss 81:3656f00ab3db 2023 invite_handler( v_call, v_cb, ts, NULL );
klauss 109:a5b8264ffbbc 2024
klauss 81:3656f00ab3db 2025 /* rotina de verificação de TS's perdidos */
klauss 91:c2a86b1f8aaa 2026 if( ( v_call->size() == 0 ) && ( ts->remain_timeslices() != __MAX_TIMESLICES__ ) ) {
klauss 91:c2a86b1f8aaa 2027 bool ts_reset = true;
klauss 91:c2a86b1f8aaa 2028 for( register uint8_t i = 0; i < v_cb->size(); i++ ) {
klauss 82:f55d13babca0 2029 if ( ( ( Call_Box * )v_cb->get_element( i ) )->get_status() != cb_idle &&
klauss 91:c2a86b1f8aaa 2030 ( ( Call_Box * )v_cb->get_element( i ) )->get_sip_status() != sip_idle ) {
klauss 78:1353744f01e1 2031 ts_reset = false;
klauss 78:1353744f01e1 2032 break;
klauss 78:1353744f01e1 2033 }
klauss 91:c2a86b1f8aaa 2034 }
klauss 109:a5b8264ffbbc 2035 if( ts_reset ) {
klauss 109:a5b8264ffbbc 2036 if( debug_invite ) debug_msg("Resetando TS");
klauss 109:a5b8264ffbbc 2037 ts->reset();
klauss 78:1353744f01e1 2038 }
klauss 0:4d17cd9c8f9d 2039 }
klauss 109:a5b8264ffbbc 2040
klauss 109:a5b8264ffbbc 2041 //invite_pgk_retry_manager( v_call, v_cb, buffer, write_buffer );
klauss 109:a5b8264ffbbc 2042
klauss 109:a5b8264ffbbc 2043 /* escuta se existe algum procedimento de gravação de cbx */
klauss 109:a5b8264ffbbc 2044 //bl_handler();
klauss 109:a5b8264ffbbc 2045
klauss 81:3656f00ab3db 2046 /* rotina que esvazia possiveis pacotes que não foram transmitidos para evitar conflito */
klauss 72:895ca792c647 2047 tx_buffer_ring_buffer_handler();
klauss 91:c2a86b1f8aaa 2048
klauss 30:8dfb6d8de53d 2049 type = __DO_NOTHING__;
klauss 109:a5b8264ffbbc 2050
klauss 81:3656f00ab3db 2051 if( eth_status == 0 ) eth_wdt = ETH_CONNECT_TIMEOUT;
klauss 109:a5b8264ffbbc 2052
klauss 91:c2a86b1f8aaa 2053 if( wdt_timer.read() >= 1 ) {
klauss 91:c2a86b1f8aaa 2054 //FIXME remove myself
klauss 109:a5b8264ffbbc 2055 //registry_test = true;
klauss 109:a5b8264ffbbc 2056 //invite_retry_time = true;
klauss 109:a5b8264ffbbc 2057
klauss 83:b8a1d8fdeaeb 2058 uptime++;
klauss 91:c2a86b1f8aaa 2059
klauss 81:3656f00ab3db 2060 wdt_timer.reset();
klauss 91:c2a86b1f8aaa 2061
klauss 81:3656f00ab3db 2062 if( wdt_show ) debug_wdt = true;
klauss 91:c2a86b1f8aaa 2063
klauss 81:3656f00ab3db 2064 if( external_wdt ) external_wdt--;
klauss 81:3656f00ab3db 2065 if( pkg_wdt ) pkg_wdt--;
klauss 81:3656f00ab3db 2066 if( eth_wdt ) eth_wdt--;
klauss 91:c2a86b1f8aaa 2067
klauss 91:c2a86b1f8aaa 2068 if( eth_wdt && external_wdt && pkg_wdt ){
klauss 81:3656f00ab3db 2069 wdt.kick();
klauss 81:3656f00ab3db 2070 }
klauss 109:a5b8264ffbbc 2071 }
klauss 109:a5b8264ffbbc 2072
klauss 91:c2a86b1f8aaa 2073 if( debug_wdt ) {
klauss 87:679ee0d594a9 2074 send_msg("lpc_low_level_input_counter :: %d", lpc_low_level_input_counter );
klauss 87:679ee0d594a9 2075 lpc_low_level_input_counter = 0;
klauss 91:c2a86b1f8aaa 2076
klauss 81:3656f00ab3db 2077 debug_wdt = false;
klauss 91:c2a86b1f8aaa 2078 if( eth_status == 0 ) {
klauss 91:c2a86b1f8aaa 2079 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 91:c2a86b1f8aaa 2080 ( wdt.WatchdogCausedReset() ) ? "true" : "false",
klauss 91:c2a86b1f8aaa 2081 EXTERN_WDT_IDLE - external_wdt,
klauss 91:c2a86b1f8aaa 2082 EXTERN_WDT_IDLE,
klauss 91:c2a86b1f8aaa 2083 RX_CB_IDLE - pkg_wdt,
klauss 91:c2a86b1f8aaa 2084 RX_CB_IDLE
klauss 91:c2a86b1f8aaa 2085 );
klauss 91:c2a86b1f8aaa 2086 } else {
klauss 91:c2a86b1f8aaa 2087 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 91:c2a86b1f8aaa 2088 ( wdt.WatchdogCausedReset() ) ? "true" : "false",
klauss 91:c2a86b1f8aaa 2089 ETH_CONNECT_TIMEOUT - eth_wdt,
klauss 91:c2a86b1f8aaa 2090 EXTERN_WDT_IDLE - external_wdt,
klauss 91:c2a86b1f8aaa 2091 EXTERN_WDT_IDLE,
klauss 91:c2a86b1f8aaa 2092 RX_CB_IDLE - pkg_wdt,
klauss 91:c2a86b1f8aaa 2093 RX_CB_IDLE
klauss 91:c2a86b1f8aaa 2094 );
klauss 81:3656f00ab3db 2095 }
klauss 109:a5b8264ffbbc 2096 }
klauss 109:a5b8264ffbbc 2097 }
klauss 0:4d17cd9c8f9d 2098 }