Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Committer:
klauss
Date:
Thu Sep 10 20:11:35 2015 +0000
Revision:
135:2f4290590e51
Parent:
132:05cd37f7e007
Child:
136:2da626f30efa
inclus?o das funcionalidades; - [get|set]_cbx_wake_mode; - [get|set]_cbx_detach_mode; - [get|set]_cbx_mode; - simula < ext > <msg_id > < type >; - refresh_status

Who changed what in which revision?

UserRevisionLine numberNew contents of line
klauss 121:ee02790d00b7 1 #include "main_app_functions.h"
klauss 120:770f00554b1e 2 #include "main_app_var_configs.h"
klauss 85:b6f2dc1d0f4f 3
klauss 91:c2a86b1f8aaa 4 int main()
klauss 114:472502b31a12 5 {
klauss 100:09a23fcd3bdf 6 debug_uart3 = true;
klauss 119:ee6a53069455 7
klauss 119:ee6a53069455 8 int header_app_init_ret = header_app_init ();
klauss 117:e9facba9db27 9
klauss 132:05cd37f7e007 10 vz_printf ( "header_app_init %s" , ( header_app_init_ret == 0 ) ? "Ok" : "Failure" );
klauss 99:e80850c51106 11
klauss 132:05cd37f7e007 12 if ( header_app_init_ret == 0 ) vz_printf ("Ready");
klauss 105:a930035b6556 13
klauss 114:472502b31a12 14 debug_uart3 = false;
klauss 105:a930035b6556 15
klauss 132:05cd37f7e007 16 power_source_timer.start ();
klauss 132:05cd37f7e007 17
klauss 119:ee6a53069455 18 /*------------------------------------------ main loop ---------------------------------------------------------------*/
klauss 115:a1e1e2e60a2c 19
klauss 119:ee6a53069455 20 while( true )
klauss 119:ee6a53069455 21 {
klauss 132:05cd37f7e007 22 prompt_process ( NULL, 0 );
klauss 132:05cd37f7e007 23
klauss 132:05cd37f7e007 24 if ( cm -> was_modified () )
klauss 132:05cd37f7e007 25 {
klauss 132:05cd37f7e007 26 update_config_values ();
klauss 132:05cd37f7e007 27 cm -> set_modified_false ();
klauss 132:05cd37f7e007 28 }
klauss 126:1f90756250fb 29
klauss 126:1f90756250fb 30 if ( show_last_rx )
klauss 126:1f90756250fb 31 {
klauss 127:e7160a463b6c 32 if ( v_call -> size () == 0 ) show_last_rx_pkg_from_cbx ();
klauss 126:1f90756250fb 33 show_last_rx = false;
klauss 126:1f90756250fb 34 }
klauss 126:1f90756250fb 35
klauss 126:1f90756250fb 36 if ( show_last_tx )
klauss 126:1f90756250fb 37 {
klauss 127:e7160a463b6c 38 if ( v_call -> size () == 0 ) show_last_tx_pkg_from_cbx ();
klauss 126:1f90756250fb 39 show_last_tx = false;
klauss 126:1f90756250fb 40 }
klauss 126:1f90756250fb 41
klauss 124:c1b6c893e1c3 42 if ( show_hello_status )
klauss 124:c1b6c893e1c3 43 {
klauss 124:c1b6c893e1c3 44 show_hello_status_function ();
klauss 124:c1b6c893e1c3 45 show_hello_status = false;
klauss 124:c1b6c893e1c3 46 }
klauss 124:c1b6c893e1c3 47
klauss 78:1353744f01e1 48 if( v_cb->size() > max_registered_cbx ) max_registered_cbx = v_cb->size();
klauss 91:c2a86b1f8aaa 49
klauss 120:770f00554b1e 50 if ( sync_timer.read() > 5 )
klauss 119:ee6a53069455 51 {
klauss 78:1353744f01e1 52 sync_timer.reset();
klauss 91:c2a86b1f8aaa 53
klauss 119:ee6a53069455 54 if( debug_cks == true ) { pcks_s = true; }
klauss 91:c2a86b1f8aaa 55
klauss 119:ee6a53069455 56 if( debug_alive == true ) { pshowcb = true; }
klauss 105:a930035b6556 57
klauss 114:472502b31a12 58 if( !( ++count % 15 ) ) {
klauss 91:c2a86b1f8aaa 59 if( eth_status ) {
klauss 119:ee6a53069455 60 try_reconnect_with_eth ();
klauss 78:1353744f01e1 61 }
klauss 78:1353744f01e1 62 }
klauss 100:09a23fcd3bdf 63
klauss 114:472502b31a12 64 //35 sec.
klauss 135:2f4290590e51 65 if( ( count > 7 ) and ( wake_all == false ) and ( not wake_all_disable ) and ( cm -> get_cbx_wake_mode () ) ) {
klauss 81:3656f00ab3db 66 wake_all = true;
klauss 132:05cd37f7e007 67 if( debug_wake == true ) vz_printf ( "Time to wake" );
klauss 78:1353744f01e1 68 }
klauss 119:ee6a53069455 69
klauss 119:ee6a53069455 70 // enable na variavel que exibe lista com estatisticas de pacotes que falharam ao serem enviados via interface eth
klauss 119:ee6a53069455 71 if ( debug_missed ) { missed_send_udp_pkg = true; }
klauss 119:ee6a53069455 72
klauss 114:472502b31a12 73 }
klauss 124:c1b6c893e1c3 74
klauss 124:c1b6c893e1c3 75 if ( show_wake_all_up_status )
klauss 124:c1b6c893e1c3 76 {
klauss 135:2f4290590e51 77 vz_printf ( "wake_all_up status :: %s", ( wake_all ) ? "Enable" : "Disable" );
klauss 124:c1b6c893e1c3 78 show_wake_all_up_status = false;
klauss 124:c1b6c893e1c3 79 }
klauss 119:ee6a53069455 80
klauss 119:ee6a53069455 81 check_clock ();
klauss 114:472502b31a12 82
klauss 119:ee6a53069455 83 if ( r_stats )
klauss 119:ee6a53069455 84 {
klauss 119:ee6a53069455 85 reset_stats ();
klauss 120:770f00554b1e 86 stats = true;
klauss 63:0d95da692bb4 87 r_stats = false;
klauss 63:0d95da692bb4 88 }
klauss 91:c2a86b1f8aaa 89
klauss 119:ee6a53069455 90 if ( stats )
klauss 119:ee6a53069455 91 {
klauss 119:ee6a53069455 92 show_stats ();
klauss 63:0d95da692bb4 93 stats =false;
klauss 63:0d95da692bb4 94 }
klauss 114:472502b31a12 95
klauss 119:ee6a53069455 96 if ( list )
klauss 119:ee6a53069455 97 {
klauss 119:ee6a53069455 98 show_cb_list ( v_cb );
klauss 91:c2a86b1f8aaa 99 list = false;
klauss 114:472502b31a12 100 }
klauss 114:472502b31a12 101
klauss 119:ee6a53069455 102 if ( long_list )
klauss 106:a34fcf9f0e02 103 {
klauss 132:05cd37f7e007 104 show_cb_long_list ( v_cb, show_time, show_invites );
klauss 91:c2a86b1f8aaa 105 long_list = false;
klauss 123:1d395b5a4cad 106 show_time = false;
klauss 132:05cd37f7e007 107 show_invites = false;
klauss 52:12930cef17c4 108 }
klauss 119:ee6a53069455 109
klauss 119:ee6a53069455 110 if ( pshowcb )
klauss 119:ee6a53069455 111 {
klauss 119:ee6a53069455 112 show_cb ( v_cb );
klauss 78:1353744f01e1 113 pshowcb = false;
klauss 48:195c97f12e8e 114 }
klauss 97:8985817e8847 115
klauss 124:c1b6c893e1c3 116 if ( request_clock_now )
klauss 124:c1b6c893e1c3 117 {
klauss 124:c1b6c893e1c3 118 request_clock_to_server ();
klauss 124:c1b6c893e1c3 119 show_current_time = true;
klauss 124:c1b6c893e1c3 120 request_clock_now = false;
klauss 124:c1b6c893e1c3 121 }
klauss 124:c1b6c893e1c3 122
klauss 119:ee6a53069455 123 if ( show_current_time )
klauss 119:ee6a53069455 124 {
klauss 119:ee6a53069455 125 show_clock ();
klauss 119:ee6a53069455 126 show_current_time = false;;
klauss 119:ee6a53069455 127 }
klauss 119:ee6a53069455 128
klauss 120:770f00554b1e 129 if( show_sip ){
klauss 120:770f00554b1e 130 show_cb_sip ( v_cb );
klauss 97:8985817e8847 131 show_sip = false;
klauss 97:8985817e8847 132 }
klauss 91:c2a86b1f8aaa 133
klauss 81:3656f00ab3db 134 if( pflood == true ) flood();
klauss 91:c2a86b1f8aaa 135
klauss 91:c2a86b1f8aaa 136 if( debug_eth ) {
klauss 132:05cd37f7e007 137 vz_printf ("Eth status %s", ( eth_status == 0 ) ? "Connected" : "Disconnected" );
klauss 81:3656f00ab3db 138 debug_eth = false;
klauss 81:3656f00ab3db 139 }
klauss 132:05cd37f7e007 140
klauss 91:c2a86b1f8aaa 141
klauss 120:770f00554b1e 142 // chechando se existe um pacote vindo do cbx pendente
klauss 121:ee02790d00b7 143 if( status != WAITING )
klauss 121:ee02790d00b7 144 {
klauss 126:1f90756250fb 145 process_received_pkg_from_cbx ();
klauss 126:1f90756250fb 146 }
klauss 126:1f90756250fb 147 else if ( test_ts and test_ts_timer.read_ms () > 10 )
klauss 126:1f90756250fb 148 {
klauss 126:1f90756250fb 149 if ( v_cb -> size () not_eq 0 )
klauss 126:1f90756250fb 150 {
klauss 126:1f90756250fb 151 Call_Box * cb = ( Call_Box * ) v_cb -> get_element ( 0 );
klauss 126:1f90756250fb 152 if ( cb not_eq NULL )
klauss 126:1f90756250fb 153 {
klauss 126:1f90756250fb 154 ext = cb -> get_ext ();
klauss 126:1f90756250fb 155 port = cb -> get_port ();
klauss 126:1f90756250fb 156 }
klauss 126:1f90756250fb 157 }
klauss 126:1f90756250fb 158 else
klauss 126:1f90756250fb 159 {
klauss 126:1f90756250fb 160 ext = 5000;
klauss 126:1f90756250fb 161 port = 5000;
klauss 126:1f90756250fb 162 }
klauss 126:1f90756250fb 163
klauss 126:1f90756250fb 164 type = INVITE;
klauss 126:1f90756250fb 165 data = buffer;
klauss 126:1f90756250fb 166
klauss 126:1f90756250fb 167 test_ts_timer.reset ();
klauss 0:4d17cd9c8f9d 168 }
klauss 135:2f4290590e51 169 else if ( simulate )
klauss 135:2f4290590e51 170 {
klauss 135:2f4290590e51 171 simulate = false;
klauss 135:2f4290590e51 172
klauss 135:2f4290590e51 173 data = buffer;
klauss 135:2f4290590e51 174
klauss 135:2f4290590e51 175 data [ SEQ_NUM_PLACE ] = seq_num_to_simulate;
klauss 135:2f4290590e51 176
klauss 135:2f4290590e51 177 ext = ext_to_simulate;
klauss 135:2f4290590e51 178
klauss 135:2f4290590e51 179 port = port_to_simulate;
klauss 135:2f4290590e51 180
klauss 135:2f4290590e51 181 type = num_type_to_simulate;
klauss 135:2f4290590e51 182 }
klauss 91:c2a86b1f8aaa 183
klauss 119:ee6a53069455 184 if( sizes == true )
klauss 119:ee6a53069455 185 {
klauss 120:770f00554b1e 186 show_sizes ();
klauss 119:ee6a53069455 187 sizes = false;
klauss 109:a5b8264ffbbc 188 }
klauss 109:a5b8264ffbbc 189
klauss 120:770f00554b1e 190 // usado pra testes
klauss 112:6ae726539ab9 191 {
klauss 132:05cd37f7e007 192 if ( registra )
klauss 132:05cd37f7e007 193 {
klauss 132:05cd37f7e007 194 int internal_ext = 8000;
klauss 132:05cd37f7e007 195 registra = false;
klauss 135:2f4290590e51 196 for( register uint8_t i = 0; i < u8_MAX_CB_IN_A_BRANCH - 2; i++ ) {
klauss 132:05cd37f7e007 197 v_cb -> add ( new Call_Box ( internal_ext, internal_ext++ ) );
klauss 132:05cd37f7e007 198 }
klauss 132:05cd37f7e007 199 }
klauss 132:05cd37f7e007 200
klauss 132:05cd37f7e007 201 if ( registra4 )
klauss 132:05cd37f7e007 202 {
klauss 132:05cd37f7e007 203 int internal_ext = 8000;
klauss 132:05cd37f7e007 204 registra4 = false;
klauss 132:05cd37f7e007 205 for( register uint8_t i = 0; i < 4; i++ )
klauss 132:05cd37f7e007 206 {
klauss 132:05cd37f7e007 207 v_cb -> add ( new Call_Box ( internal_ext, internal_ext++ ) );
klauss 132:05cd37f7e007 208 }
klauss 132:05cd37f7e007 209 }
klauss 135:2f4290590e51 210
klauss 135:2f4290590e51 211 if ( need_registry_someone )
klauss 135:2f4290590e51 212 {
klauss 135:2f4290590e51 213 need_registry_someone = false;
klauss 135:2f4290590e51 214
klauss 135:2f4290590e51 215 v_cb -> add ( new Call_Box ( ext_to_be_registered, ext_to_be_registered ) );
klauss 135:2f4290590e51 216
klauss 135:2f4290590e51 217 ext_to_be_registered = 0;
klauss 135:2f4290590e51 218 }
klauss 112:6ae726539ab9 219 }
klauss 112:6ae726539ab9 220
klauss 132:05cd37f7e007 221 check_udp_packages_pending ( v_cb );
klauss 120:770f00554b1e 222
klauss 120:770f00554b1e 223 if( dshow_rtp == true )
klauss 109:a5b8264ffbbc 224 {
klauss 120:770f00554b1e 225 show_rtp ();
klauss 120:770f00554b1e 226 dshow_rtp = false;
klauss 120:770f00554b1e 227 }
klauss 117:e9facba9db27 228
klauss 120:770f00554b1e 229 // usado pra test
klauss 120:770f00554b1e 230 if ( frtp )
klauss 120:770f00554b1e 231 {
klauss 120:770f00554b1e 232 fuck_rtp ( v_cb );
klauss 120:770f00554b1e 233 frtp = false;
klauss 109:a5b8264ffbbc 234 }
klauss 109:a5b8264ffbbc 235
klauss 120:770f00554b1e 236 // usado pra test
klauss 109:a5b8264ffbbc 237 if ( rescue_rtp )
klauss 109:a5b8264ffbbc 238 {
klauss 109:a5b8264ffbbc 239 rescue_rtp = false;
klauss 121:ee02790d00b7 240 Call_Box * cb = find_CB( v_cb, rescue_rtp_target );
klauss 109:a5b8264ffbbc 241 if ( cb != NULL )
klauss 109:a5b8264ffbbc 242 {
klauss 109:a5b8264ffbbc 243 cb -> set_rtp_port ( rescue_rtp_value );
klauss 109:a5b8264ffbbc 244 }
klauss 109:a5b8264ffbbc 245 else
klauss 109:a5b8264ffbbc 246 {
klauss 132:05cd37f7e007 247 vz_debug ("rescue rtp fail");
klauss 109:a5b8264ffbbc 248 }
klauss 109:a5b8264ffbbc 249 }
klauss 109:a5b8264ffbbc 250
klauss 109:a5b8264ffbbc 251 if ( print_v_cb )
klauss 109:a5b8264ffbbc 252 {
klauss 120:770f00554b1e 253 v_cb->print_yourself ();
klauss 109:a5b8264ffbbc 254 print_v_cb = false;
klauss 109:a5b8264ffbbc 255 }
klauss 109:a5b8264ffbbc 256
klauss 109:a5b8264ffbbc 257 if ( print_v_call )
klauss 109:a5b8264ffbbc 258 {
klauss 109:a5b8264ffbbc 259 v_call->print_yourself ();
klauss 120:770f00554b1e 260 print_v_call = false;
klauss 109:a5b8264ffbbc 261 }
klauss 109:a5b8264ffbbc 262
klauss 109:a5b8264ffbbc 263 if ( print_cb_var )
klauss 109:a5b8264ffbbc 264 {
klauss 120:770f00554b1e 265 show_cb_content ();
klauss 109:a5b8264ffbbc 266 print_cb_var = false;
klauss 109:a5b8264ffbbc 267 }
klauss 109:a5b8264ffbbc 268
klauss 109:a5b8264ffbbc 269 if ( print_cb_all )
klauss 109:a5b8264ffbbc 270 {
klauss 120:770f00554b1e 271 show_cb_content_all ();
klauss 109:a5b8264ffbbc 272 print_cb_all = false;
klauss 109:a5b8264ffbbc 273 }
klauss 109:a5b8264ffbbc 274
klauss 109:a5b8264ffbbc 275 if ( print_hex_cb_var )
klauss 109:a5b8264ffbbc 276 {
klauss 120:770f00554b1e 277 show_hex_cb_content ();
klauss 109:a5b8264ffbbc 278 print_hex_cb_var = false;
klauss 81:3656f00ab3db 279 }
klauss 106:a34fcf9f0e02 280
klauss 109:a5b8264ffbbc 281 if ( print_hex_cb_all )
klauss 109:a5b8264ffbbc 282 {
klauss 120:770f00554b1e 283 show_hex_cb_content_all ();
klauss 109:a5b8264ffbbc 284 print_hex_cb_all = false;
klauss 109:a5b8264ffbbc 285 }
klauss 106:a34fcf9f0e02 286
klauss 120:770f00554b1e 287 if ( print_sip_var )
klauss 109:a5b8264ffbbc 288 {
klauss 132:05cd37f7e007 289 show_cb_sip ();
klauss 120:770f00554b1e 290 print_sip_var = false;
klauss 120:770f00554b1e 291 }
klauss 109:a5b8264ffbbc 292
klauss 120:770f00554b1e 293 if ( print_sip_all )
klauss 120:770f00554b1e 294 {
klauss 132:05cd37f7e007 295 show_cb_sip_all ();
klauss 120:770f00554b1e 296 print_sip_all = false;
klauss 120:770f00554b1e 297 }
klauss 120:770f00554b1e 298
klauss 120:770f00554b1e 299 if ( print_hex_sip_var )
klauss 120:770f00554b1e 300 {
klauss 132:05cd37f7e007 301 show_cb_hex_sip ();
klauss 120:770f00554b1e 302 print_hex_sip_var = false;
klauss 120:770f00554b1e 303 }
klauss 109:a5b8264ffbbc 304
klauss 109:a5b8264ffbbc 305 if( dcallshow_rtp == true ){
klauss 120:770f00554b1e 306 show_rtp_on_call ();
klauss 109:a5b8264ffbbc 307 dcallshow_rtp = false;
klauss 109:a5b8264ffbbc 308 }
klauss 109:a5b8264ffbbc 309
klauss 109:a5b8264ffbbc 310 if ( print_call_var )
klauss 109:a5b8264ffbbc 311 {
klauss 120:770f00554b1e 312 show_call ();
klauss 109:a5b8264ffbbc 313 print_call_var = false;
klauss 120:770f00554b1e 314
klauss 109:a5b8264ffbbc 315 }
klauss 109:a5b8264ffbbc 316
klauss 109:a5b8264ffbbc 317 if ( print_hex_call_var )
klauss 109:a5b8264ffbbc 318 {
klauss 120:770f00554b1e 319 show_hex_call ();
klauss 109:a5b8264ffbbc 320 print_hex_call_var = false;
klauss 109:a5b8264ffbbc 321 }
klauss 109:a5b8264ffbbc 322
klauss 109:a5b8264ffbbc 323
klauss 109:a5b8264ffbbc 324 if ( print_hex_rtp_var )
klauss 109:a5b8264ffbbc 325 {
klauss 120:770f00554b1e 326 show_cb_rtp ();
klauss 109:a5b8264ffbbc 327 print_hex_rtp_var = false;
klauss 109:a5b8264ffbbc 328 }
klauss 109:a5b8264ffbbc 329
klauss 109:a5b8264ffbbc 330 if ( print_rtp_var )
klauss 109:a5b8264ffbbc 331 {
klauss 120:770f00554b1e 332 show_cb_hex_rtp ();
klauss 109:a5b8264ffbbc 333 print_rtp_var = false;
klauss 81:3656f00ab3db 334 }
klauss 91:c2a86b1f8aaa 335
klauss 120:770f00554b1e 336 if( reset_cks == true )
klauss 120:770f00554b1e 337 {
klauss 120:770f00554b1e 338 reset_stats_cks ();
klauss 120:770f00554b1e 339 pcks_s = true;
klauss 120:770f00554b1e 340 reset_cks = false;
klauss 120:770f00554b1e 341 }
klauss 120:770f00554b1e 342
klauss 91:c2a86b1f8aaa 343 if( pcks_s == true ) {
klauss 120:770f00554b1e 344 show_cb_stats ();
klauss 81:3656f00ab3db 345 pcks_s = false;
klauss 81:3656f00ab3db 346 }
klauss 119:ee6a53069455 347
klauss 132:05cd37f7e007 348 if ( show_wdt_string )
klauss 132:05cd37f7e007 349 {
klauss 132:05cd37f7e007 350 char wdt_msg [ 1024 ];
klauss 132:05cd37f7e007 351 build_wdt_string ( wdt_msg, sizeof ( wdt_msg ) - 1 );
klauss 132:05cd37f7e007 352
klauss 132:05cd37f7e007 353 int siRet = strlen ( wdt_msg );
klauss 132:05cd37f7e007 354
klauss 132:05cd37f7e007 355 vz_printf ( "wdt_msg.length::%d\r\n%s", siRet, wdt_msg );
klauss 132:05cd37f7e007 356
klauss 132:05cd37f7e007 357 show_wdt_string = false;
klauss 132:05cd37f7e007 358 }
klauss 132:05cd37f7e007 359
klauss 120:770f00554b1e 360 if( reset_missed_send_udp_pkg )
klauss 120:770f00554b1e 361 {
klauss 120:770f00554b1e 362 reset_missed_send_udp ();
klauss 120:770f00554b1e 363 missed_send_udp_pkg = true;
klauss 119:ee6a53069455 364 reset_missed_send_udp_pkg = false;
klauss 119:ee6a53069455 365 }
klauss 119:ee6a53069455 366
klauss 124:c1b6c893e1c3 367 if ( missed_send_udp_pkg )
klauss 119:ee6a53069455 368 {
klauss 120:770f00554b1e 369 show_missed_send_udp_pkg ();
klauss 119:ee6a53069455 370 missed_send_udp_pkg = false;
klauss 119:ee6a53069455 371 }
klauss 124:c1b6c893e1c3 372
klauss 121:ee02790d00b7 373 // usado pra test
klauss 126:1f90756250fb 374 if ( flood_bug_pkg ){
klauss 100:09a23fcd3bdf 375 static int id = 0x10;
klauss 100:09a23fcd3bdf 376 if( id < 10 ) id = 0x0b;
klauss 119:ee6a53069455 377 send2callboxes( build_cb_package( 5828, 5123, REGISTRY,
klauss 119:ee6a53069455 378 ( char * )buffer, id++, CB_BUFFER_SIZE - VZ_HEADER_OFFSET, write_buffer ) );
klauss 100:09a23fcd3bdf 379 }
klauss 100:09a23fcd3bdf 380
klauss 126:1f90756250fb 381 if ( led_sync_timer.read() > 1 ) {
klauss 78:1353744f01e1 382 led_sync_timer.reset();
klauss 78:1353744f01e1 383 led3 = !led3;
klauss 78:1353744f01e1 384 CAB_LED = !CAB_LED;
klauss 78:1353744f01e1 385 }
klauss 126:1f90756250fb 386
klauss 135:2f4290590e51 387 if ( boolWho_is_your_pair )
klauss 135:2f4290590e51 388 {
klauss 135:2f4290590e51 389 boolWho_is_your_pair = false;
klauss 135:2f4290590e51 390
klauss 135:2f4290590e51 391 Call_Box * cb = find_CB ( v_cb, u16Who_is_your_pair );
klauss 135:2f4290590e51 392
klauss 135:2f4290590e51 393 if ( cb not_eq NULL )
klauss 135:2f4290590e51 394 {
klauss 135:2f4290590e51 395 cb = cb -> get_pair_cbx ();
klauss 135:2f4290590e51 396
klauss 135:2f4290590e51 397 if ( cb not_eq NULL ) vz_printf ( "[%d] pair [%d]", u16Who_is_your_pair, cb -> get_ext () );
klauss 135:2f4290590e51 398
klauss 135:2f4290590e51 399 else vz_printf ( "[%d] pair nao encontrado", u16Who_is_your_pair );
klauss 135:2f4290590e51 400
klauss 135:2f4290590e51 401 } else vz_printf ( "[%d] nao encontrado", u16Who_is_your_pair );
klauss 135:2f4290590e51 402
klauss 135:2f4290590e51 403 u16Who_is_your_pair = 0;
klauss 135:2f4290590e51 404 }
klauss 135:2f4290590e51 405
klauss 135:2f4290590e51 406 switch ( type )
klauss 126:1f90756250fb 407 {
klauss 126:1f90756250fb 408 case DO_NOTHING :{}
klauss 91:c2a86b1f8aaa 409 break;
klauss 91:c2a86b1f8aaa 410
klauss 126:1f90756250fb 411 case CB_BYE :
klauss 126:1f90756250fb 412 {
klauss 132:05cd37f7e007 413 cb_bye_counter ++;
klauss 132:05cd37f7e007 414 Call_Box * cb = find_CB ( v_cb, ext );
klauss 132:05cd37f7e007 415 if ( cb != NULL )
klauss 132:05cd37f7e007 416 {
klauss 132:05cd37f7e007 417 if ( debug_invite or debug_main ) vz_debug ("[%d] Bye pkg - msg_id %d e pkg_id %d", ext, cb -> get_msg_id (), data [ 0 ] );
klauss 92:92df17f538a8 418
klauss 81:3656f00ab3db 419 bool already_removed = true;
klauss 119:ee6a53069455 420
klauss 132:05cd37f7e007 421 if ( cb -> get_status () != cb_idle )
klauss 132:05cd37f7e007 422 {
klauss 119:ee6a53069455 423 already_removed = false;
klauss 119:ee6a53069455 424
klauss 132:05cd37f7e007 425 data [ TIMESLICE_PLACE ] = 0;
klauss 119:ee6a53069455 426
klauss 132:05cd37f7e007 427 send2callboxes ( build_cb_package ( ext, port, CB_BYE,
klauss 132:05cd37f7e007 428 ( char * )data, data [ 0 ] or_eq BIT7, CB_BUFFER_SIZE - VZ_HEADER_OFFSET, write_buffer ) );
klauss 119:ee6a53069455 429
klauss 132:05cd37f7e007 430 ts -> return_timeslice ( cb -> call_end () );
klauss 119:ee6a53069455 431 }
klauss 119:ee6a53069455 432
klauss 132:05cd37f7e007 433 if ( already_removed ) if ( debug_main or debug_invite ) vz_debug ( "[%d] Already removed from inviting queue", ext );
klauss 119:ee6a53069455 434
klauss 119:ee6a53069455 435 already_removed = true;
klauss 119:ee6a53069455 436
klauss 119:ee6a53069455 437 for ( register uint8_t i = 0; i < v_call->size(); i++ )
klauss 119:ee6a53069455 438 {
klauss 0:4d17cd9c8f9d 439 VZ_call * call = (VZ_call *)v_call->get_element( i );
klauss 119:ee6a53069455 440 if( call->get_cb_ext() == ext )
klauss 119:ee6a53069455 441 {
klauss 81:3656f00ab3db 442 already_removed = false;
klauss 119:ee6a53069455 443
klauss 119:ee6a53069455 444 data[ TIMESLICE_PLACE ] = 0;
klauss 91:c2a86b1f8aaa 445
klauss 81:3656f00ab3db 446 v_call->remove_element( i );
klauss 119:ee6a53069455 447
klauss 119:ee6a53069455 448 send2callboxes( build_cb_package( ext, port, CB_BYE,
klauss 126:1f90756250fb 449 ( char * )data, data[ 0 ] or_eq BIT7, CB_BUFFER_SIZE - VZ_HEADER_OFFSET, write_buffer ) );
klauss 117:e9facba9db27 450
klauss 3:cd9148672e25 451 delete( call );
klauss 119:ee6a53069455 452
klauss 135:2f4290590e51 453 ts -> return_timeslice ( cb -> call_end () );
klauss 0:4d17cd9c8f9d 454 }
klauss 0:4d17cd9c8f9d 455 }
klauss 119:ee6a53069455 456
klauss 132:05cd37f7e007 457 if( already_removed ) if( debug_main or debug_invite ) vz_debug ( "[%d] Already removed from vector call", ext );
klauss 82:f55d13babca0 458
klauss 135:2f4290590e51 459 cb -> registry ();
klauss 119:ee6a53069455 460
klauss 132:05cd37f7e007 461 } else if ( debug_invite or debug_main ) vz_debug ("[%d] Bye from who ?", ext );
klauss 91:c2a86b1f8aaa 462 }
klauss 91:c2a86b1f8aaa 463 break;
klauss 91:c2a86b1f8aaa 464
klauss 126:1f90756250fb 465 case INVITE :
klauss 126:1f90756250fb 466 {
klauss 126:1f90756250fb 467 if ( drop_invite_pkg )
klauss 126:1f90756250fb 468 {
klauss 132:05cd37f7e007 469 vz_debug ("[%d] Dropando invite pck - msg id :: %d", ext, data[ 0 ] );
klauss 114:472502b31a12 470 break;
klauss 114:472502b31a12 471 }
klauss 119:ee6a53069455 472
klauss 135:2f4290590e51 473 invite_counter ++;
klauss 119:ee6a53069455 474
klauss 132:05cd37f7e007 475 if ( debug_invite ) vz_debug ("[%d] Invite request", ext );
klauss 119:ee6a53069455 476
klauss 122:480c44b0e205 477 Call_Box * cb = find_CB ( v_cb, ext );
klauss 119:ee6a53069455 478
klauss 135:2f4290590e51 479 if ( cb == NULL ) cb = try_add_new_cbx ( v_cb, ext );
klauss 135:2f4290590e51 480
klauss 135:2f4290590e51 481 if ( cb == NULL ) {
klauss 135:2f4290590e51 482 if ( debug_memory or debug_invite ) vz_debug ("[%d] Invite allocation cb fail", ext );
klauss 135:2f4290590e51 483 } else {
klauss 132:05cd37f7e007 484 cb -> update_invite_counter ();
klauss 132:05cd37f7e007 485
klauss 122:480c44b0e205 486 cb -> invite_retry_count_reset ();
klauss 119:ee6a53069455 487
klauss 122:480c44b0e205 488 cb -> set_msg_id ( data [ 0 ] );
klauss 119:ee6a53069455 489
klauss 122:480c44b0e205 490 if ( cb -> get_status () == cb_idle ) {
klauss 119:ee6a53069455 491 cb -> call_config ();
klauss 132:05cd37f7e007 492 if ( test_ts ) vz_debug ("TST::IDLE");
klauss 119:ee6a53069455 493 } else {
klauss 122:480c44b0e205 494 data [ TIMESLICE_PLACE ] = cb -> get_timeslice ();
klauss 119:ee6a53069455 495
klauss 122:480c44b0e205 496 cb -> set_invite_response_pending ();
klauss 126:1f90756250fb 497
klauss 132:05cd37f7e007 498 if ( test_ts ) vz_debug ("TST::%u ", data [ TIMESLICE_PLACE ]);
klauss 126:1f90756250fb 499
klauss 126:1f90756250fb 500 send2callboxes ( build_cb_package ( ext, port, INVITE,
klauss 119:ee6a53069455 501 ( char * )data, cb->msg_id_update (), CB_BUFFER_SIZE - VZ_HEADER_OFFSET, write_buffer ) );
klauss 92:92df17f538a8 502 }
klauss 119:ee6a53069455 503
klauss 121:ee02790d00b7 504 invite_handler ( v_call, v_cb, ts, cb );
klauss 87:679ee0d594a9 505 }
klauss 91:c2a86b1f8aaa 506 }
klauss 126:1f90756250fb 507
klauss 91:c2a86b1f8aaa 508 break;
klauss 120:770f00554b1e 509
klauss 119:ee6a53069455 510 case REGISTRY : {
klauss 135:2f4290590e51 511 /*
klauss 135:2f4290590e51 512 Colocar um if, de que se o cbx já existia, e tinha dado timeout
klauss 135:2f4290590e51 513 ou por slave ou por mestre, resetar o timer dos 2
klauss 135:2f4290590e51 514 */
klauss 135:2f4290590e51 515 registry_counter ++;
klauss 121:ee02790d00b7 516 Call_Box * cb = find_CB ( v_cb, ext );
klauss 119:ee6a53069455 517
klauss 135:2f4290590e51 518 if ( cb == NULL ) cb = try_add_new_cbx ( v_cb, ext );
klauss 119:ee6a53069455 519
klauss 135:2f4290590e51 520 if ( cb == NULL and debug_memory ) vz_debug ( "[%d] Registry cb allocation fail", ext );
klauss 135:2f4290590e51 521
klauss 126:1f90756250fb 522 int registry_ret = -1;
klauss 126:1f90756250fb 523
klauss 135:2f4290590e51 524 if ( cb not_eq NULL ) registry_ret = cb -> registry ();
klauss 126:1f90756250fb 525
klauss 130:850163037da5 526 if ( ( registry_ret > 0 ) and eth_status ) try_reconnect_with_eth ();
klauss 130:850163037da5 527
klauss 135:2f4290590e51 528 if ( debug_main and registry_ret ) vz_debug ( "[%d %d] Registered", ext, port );
klauss 135:2f4290590e51 529
klauss 130:850163037da5 530 pkg_wdt = RX_CB_IDLE;
klauss 91:c2a86b1f8aaa 531 }
klauss 91:c2a86b1f8aaa 532 break;
klauss 120:770f00554b1e 533
klauss 119:ee6a53069455 534 case BOOT : {
klauss 63:0d95da692bb4 535 boot_counter++;
klauss 99:e80850c51106 536 if( debug_boot == true ){
klauss 132:05cd37f7e007 537 vz_printf ("[%d %d] Boot pkg -- pkg-id %d", ext, port, data[ 0 ] );
klauss 99:e80850c51106 538 }
klauss 119:ee6a53069455 539 send2callboxes( build_cb_package( ext, port, REGISTRY,
klauss 126:1f90756250fb 540 ( char * )data, data[ 0 ] bitor BIT7, CB_BUFFER_SIZE - VZ_HEADER_OFFSET, write_buffer ) );
klauss 117:e9facba9db27 541 }
klauss 117:e9facba9db27 542 break;
klauss 117:e9facba9db27 543
klauss 119:ee6a53069455 544 case FW : {
klauss 132:05cd37f7e007 545 if ( debug_fw_print ) vz_printf ("[%d %d]::FW pkg::", ext, port );
klauss 126:1f90756250fb 546 fw_cbx_pkg ( ext, ( char *) buffer );
klauss 99:e80850c51106 547 }
klauss 99:e80850c51106 548 break;
klauss 91:c2a86b1f8aaa 549
klauss 119:ee6a53069455 550 case BOOTLOADER_CBX : {
klauss 117:e9facba9db27 551 uint16_t bl_cnt2 = 0;
klauss 117:e9facba9db27 552 if (debug_bootloader) {
klauss 117:e9facba9db27 553 pc.printf("\r\npacote CBX->HDR {");
klauss 117:e9facba9db27 554 for (bl_cnt2 = 0;bl_cnt2 < BL_SIZE + 1;bl_cnt2++) {
klauss 117:e9facba9db27 555 if ((bl_cnt2 % 30) == 0) {
klauss 117:e9facba9db27 556 pc.printf("\r\n ");
klauss 117:e9facba9db27 557 pc.printf(hex16(bl_cnt2));
klauss 117:e9facba9db27 558 pc.printf(" : ");
klauss 117:e9facba9db27 559 }
klauss 117:e9facba9db27 560 pc.printf(hex8(data[bl_cnt2]));
klauss 117:e9facba9db27 561 pc.printf(", ");
klauss 117:e9facba9db27 562 }
klauss 117:e9facba9db27 563 pc.printf("\r\n}");
klauss 117:e9facba9db27 564 }
klauss 67:cdedc64d9921 565 bootloader_cbx_counter++;
klauss 117:e9facba9db27 566 bl_send_buffer[0] = (char)(ext >> 8);
klauss 117:e9facba9db27 567 bl_send_buffer[1] = (char)(ext & 0xff);
klauss 117:e9facba9db27 568 for (bl_cnt2 = 0; bl_cnt2 < BL_SIZE; bl_cnt2++) {
klauss 117:e9facba9db27 569 bl_send_buffer[bl_cnt2 + 2] = data[bl_cnt2 + 1];
klauss 117:e9facba9db27 570 }
klauss 117:e9facba9db27 571 if (debug_bootloader) {
klauss 117:e9facba9db27 572 pc.printf("\r\npacote HDR->SRV {");
klauss 117:e9facba9db27 573 for (bl_cnt2 = 0;bl_cnt2 < UDP_BL_SIZE;bl_cnt2++) {
klauss 117:e9facba9db27 574 if ((bl_cnt2 % 30) == 0) {
klauss 117:e9facba9db27 575 pc.printf("\r\n ");
klauss 117:e9facba9db27 576 pc.printf(hex16(bl_cnt2));
klauss 117:e9facba9db27 577 pc.printf(" : ");
klauss 117:e9facba9db27 578 }
klauss 117:e9facba9db27 579 pc.printf(hex8(bl_send_buffer[bl_cnt2]));
klauss 117:e9facba9db27 580 pc.printf(", ");
klauss 117:e9facba9db27 581 }
klauss 117:e9facba9db27 582 pc.printf("\r\n}");
klauss 117:e9facba9db27 583 }
klauss 132:05cd37f7e007 584 int udp_bl_client_ret = udp_bl_client.sendTo ( udp_bl_server, bl_send_buffer, UDP_BL_SIZE );
klauss 132:05cd37f7e007 585 if ( udp_bl_client_ret not_eq UDP_BL_SIZE )
klauss 132:05cd37f7e007 586 {
klauss 132:05cd37f7e007 587 reconnect_bl ();
klauss 132:05cd37f7e007 588 miss_bl_udp_send_pkg ++;
klauss 132:05cd37f7e007 589 if ( debug_reconnect ) vz_printf ( "[%d] Reconnect BL - %d", ext, udp_bl_client_ret );
klauss 132:05cd37f7e007 590 }
klauss 91:c2a86b1f8aaa 591 }
klauss 91:c2a86b1f8aaa 592 break;
klauss 91:c2a86b1f8aaa 593
klauss 119:ee6a53069455 594 case PROMPT : {
klauss 129:d73538fbc017 595 Call_Box * cb = find_CB ( v_cb, ext );
klauss 91:c2a86b1f8aaa 596
klauss 135:2f4290590e51 597 if ( cb == NULL ) cb = try_add_new_cbx ( v_cb, ext );
klauss 91:c2a86b1f8aaa 598
klauss 135:2f4290590e51 599 if( cb != NULL ) cb -> registry ();
klauss 91:c2a86b1f8aaa 600
klauss 126:1f90756250fb 601 if ( ( strncasecmp ( ( const char * )data, "ping", 4 ) == 0 ) or ( strncasecmp ( ( const char * )data, "pong", 4 ) == 0 ) )
klauss 126:1f90756250fb 602 {
klauss 132:05cd37f7e007 603 if( debug_ping ) vz_printf ( "[%d %d] Prompt pkg :: Ping", ext, port );
klauss 126:1f90756250fb 604 }
klauss 126:1f90756250fb 605 else
klauss 126:1f90756250fb 606 {
klauss 78:1353744f01e1 607 prompt_counter++;
klauss 135:2f4290590e51 608
klauss 132:05cd37f7e007 609 vz_printf ( "[%i, %i] Prompt pkg::", ext, port );
klauss 135:2f4290590e51 610
klauss 91:c2a86b1f8aaa 611 for( register uint8_t i = 0; i < 32; i++ ) {
klauss 100:09a23fcd3bdf 612 if( debug_uart3 ) pc.printf("%c", data[ i ] );
klauss 100:09a23fcd3bdf 613 if( i == 15 ) if( debug_uart3 ) pc.printf( "\r\n" );
klauss 78:1353744f01e1 614 }
klauss 100:09a23fcd3bdf 615 if( debug_uart3 ) pc.printf("\n\r> ");
klauss 91:c2a86b1f8aaa 616
klauss 114:472502b31a12 617 if( tcp_session ) {
klauss 119:ee6a53069455 618 char aux[ CB_BUFFER_SIZE + 3 ];
klauss 119:ee6a53069455 619 strncpy( aux, (char * )data, CB_BUFFER_SIZE );
klauss 78:1353744f01e1 620 strcat( aux, "\n\r\0" );
klauss 78:1353744f01e1 621 tcp_client.send_all( ( char *)data, strlen( (char * )data ) );
klauss 78:1353744f01e1 622 tcp_client.send_all( "\r\n> ", strlen( "\r\n> " ) );
klauss 78:1353744f01e1 623 }
klauss 48:195c97f12e8e 624 }
klauss 91:c2a86b1f8aaa 625 }
klauss 91:c2a86b1f8aaa 626 break;
klauss 120:770f00554b1e 627
klauss 119:ee6a53069455 628 case AUDIO : {
klauss 63:0d95da692bb4 629 audio_counter++;
klauss 119:ee6a53069455 630 if ( received_audio_from_cb ) {
klauss 132:05cd37f7e007 631 vz_debug ("[%d] audio pkg", ext );
klauss 119:ee6a53069455 632 }
klauss 119:ee6a53069455 633
klauss 126:1f90756250fb 634 VZ_call * call = find_Call ( v_call, ext );
klauss 126:1f90756250fb 635 if ( call != NULL )
klauss 126:1f90756250fb 636 {
klauss 126:1f90756250fb 637 if ( drop_rtp_from_cbx_pkg )
klauss 126:1f90756250fb 638 {
klauss 114:472502b31a12 639 led2 = !led2;
klauss 114:472502b31a12 640 break;
klauss 119:ee6a53069455 641 } else {
klauss 126:1f90756250fb 642 char * pkg = call -> build_eth_package ( data + 2 );
klauss 126:1f90756250fb 643 call -> send_message ( pkg );
klauss 132:05cd37f7e007 644 call -> cbx_pkg_idle_timer_reset ();
klauss 114:472502b31a12 645 }
klauss 119:ee6a53069455 646 }
klauss 119:ee6a53069455 647
klauss 132:05cd37f7e007 648 Call_Box * cb = find_CB ( v_cb, ext );
klauss 126:1f90756250fb 649 if ( cb != NULL )
klauss 126:1f90756250fb 650 {
klauss 132:05cd37f7e007 651 if ( cb -> get_invite_response () == false )
klauss 126:1f90756250fb 652 {
klauss 126:1f90756250fb 653 cb -> set_invite_response_ok ();
klauss 126:1f90756250fb 654 cb -> invite_retry_count_reset ();
klauss 126:1f90756250fb 655 }
klauss 126:1f90756250fb 656 } else {
klauss 132:05cd37f7e007 657 if ( debug_main ) vz_debug ("[%d] received missed package", ext );
klauss 0:4d17cd9c8f9d 658 }
klauss 91:c2a86b1f8aaa 659 }
klauss 91:c2a86b1f8aaa 660 break;
klauss 114:472502b31a12 661 }// fim switch
klauss 105:a930035b6556 662
klauss 120:770f00554b1e 663 // rajada
klauss 120:770f00554b1e 664 if( invite_retry_timer.read_ms() >= 20 )
klauss 120:770f00554b1e 665 {
klauss 120:770f00554b1e 666 invite_ack_to_cb_handler ( v_cb, v_call );
klauss 112:6ae726539ab9 667
klauss 120:770f00554b1e 668 invite_retry_timer.reset();
klauss 120:770f00554b1e 669 }
klauss 120:770f00554b1e 670
klauss 120:770f00554b1e 671 check_audio_from_ast ( v_cb, v_call );
klauss 99:e80850c51106 672
klauss 120:770f00554b1e 673 wake_up_or_refresh_handler ( v_cb );
klauss 117:e9facba9db27 674
klauss 120:770f00554b1e 675 check_sip_messages_from_ast ( v_cb, v_call );
klauss 119:ee6a53069455 676
klauss 81:3656f00ab3db 677 /* Verifica andamento de ligações para eventualmente encerra-las por timeout */
klauss 119:ee6a53069455 678 call_manager( v_call, v_cb, ts );
klauss 91:c2a86b1f8aaa 679
klauss 81:3656f00ab3db 680 invite_handler( v_call, v_cb, ts, NULL );
klauss 114:472502b31a12 681
klauss 120:770f00554b1e 682 check_for_runaways_ts ( v_cb, ts );
klauss 112:6ae726539ab9 683
klauss 120:770f00554b1e 684 check_for_unwanted_rtp_ports ( v_cb );
klauss 120:770f00554b1e 685
klauss 72:895ca792c647 686 tx_buffer_ring_buffer_handler();
klauss 91:c2a86b1f8aaa 687
klauss 119:ee6a53069455 688 type = DO_NOTHING;
klauss 114:472502b31a12 689
klauss 81:3656f00ab3db 690 if( eth_status == 0 ) eth_wdt = ETH_CONNECT_TIMEOUT;
klauss 114:472502b31a12 691
klauss 91:c2a86b1f8aaa 692 if( wdt_timer.read() >= 1 ) {
klauss 132:05cd37f7e007 693 if ( -1 == wdt_update () ) vz_debug ("Erro!!!!!");
klauss 81:3656f00ab3db 694 wdt_timer.reset();
klauss 114:472502b31a12 695 }
klauss 114:472502b31a12 696
klauss 120:770f00554b1e 697 if( debug_wdt )
klauss 120:770f00554b1e 698 {
klauss 120:770f00554b1e 699 show_wdt_status ();
klauss 132:05cd37f7e007 700 debug_wdt = false;
klauss 114:472502b31a12 701 }
klauss 123:1d395b5a4cad 702
klauss 123:1d395b5a4cad 703 update_all_cb_timer ( v_cb );
klauss 123:1d395b5a4cad 704
klauss 124:c1b6c893e1c3 705 if ( !dont_say_hello_again ) send_hello_to_cbx ();
klauss 124:c1b6c893e1c3 706
klauss 128:3ae1c74773a8 707 /* Verificacao da fonte de alimentacao */
klauss 132:05cd37f7e007 708 if ( power_source_timer.read () > 1 )
klauss 128:3ae1c74773a8 709 {
klauss 132:05cd37f7e007 710 check_power_source ();
klauss 128:3ae1c74773a8 711 }
klauss 132:05cd37f7e007 712
klauss 132:05cd37f7e007 713 %: ifdef MODE_TEST
klauss 132:05cd37f7e007 714 wdt.kick();
klauss 132:05cd37f7e007 715 %: endif
klauss 120:770f00554b1e 716 }// fim while
klauss 120:770f00554b1e 717 }// fim main \o/