Modularizando o src
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
fw_handler.cpp@126:1f90756250fb, 2015-05-20 (annotated)
- Committer:
- klauss
- Date:
- Wed May 20 19:50:31 2015 +0000
- Revision:
- 126:1f90756250fb
- Parent:
- 125:8ff4dc96ad58
- Child:
- 132:05cd37f7e007
under validation
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
klauss | 122:480c44b0e205 | 1 | #include "fw.h" |
klauss | 99:e80850c51106 | 2 | |
klauss | 99:e80850c51106 | 3 | UDPSocket fw_sock; |
klauss | 99:e80850c51106 | 4 | Endpoint fw_server; |
klauss | 119:ee6a53069455 | 5 | uint16_t miss_fw_send_pkg = 0; |
klauss | 99:e80850c51106 | 6 | |
klauss | 119:ee6a53069455 | 7 | int init_fw_handler( void ){ |
klauss | 99:e80850c51106 | 8 | char buff_ip[ 16 ] = ""; |
klauss | 99:e80850c51106 | 9 | char buff_port[ 8 ] = ""; |
klauss | 99:e80850c51106 | 10 | int fw_port = 0; |
klauss | 99:e80850c51106 | 11 | |
klauss | 125:8ff4dc96ad58 | 12 | FILE *fip = fopen( "/qspi/fw_ip.txt", "r"); |
klauss | 125:8ff4dc96ad58 | 13 | if( fip == NULL ){ |
klauss | 119:ee6a53069455 | 14 | if( debug_file || debug_reconnect ) send_msg ("Failed to open /qspi/fw_ip.txt" ); |
klauss | 99:e80850c51106 | 15 | strncpy( buff_ip, __FW_SERVER_IP__, 20 ); |
klauss | 99:e80850c51106 | 16 | }else{ |
klauss | 125:8ff4dc96ad58 | 17 | int read = fread( buff_ip, 1, 512, fip ); |
klauss | 99:e80850c51106 | 18 | if( read > 0 ){ |
klauss | 99:e80850c51106 | 19 | for( int i = 0; i < read; i++ ) |
klauss | 99:e80850c51106 | 20 | if( buff_ip[ i ] == '\n' || buff_ip[ i ] == '\r' ){ |
klauss | 99:e80850c51106 | 21 | buff_ip[ i ] = '\0'; |
klauss | 99:e80850c51106 | 22 | break; |
klauss | 99:e80850c51106 | 23 | } |
klauss | 119:ee6a53069455 | 24 | if( debug_file || debug_reconnect ) send_msg ("fw server ip %s", buff_ip ); |
klauss | 99:e80850c51106 | 25 | }else{ |
klauss | 119:ee6a53069455 | 26 | if( debug_file || debug_reconnect ) send_msg ("Failed to open /qspi/fw_ip.txt" ); |
klauss | 99:e80850c51106 | 27 | strncpy( buff_ip, __FW_SERVER_IP__, 20 ); |
klauss | 99:e80850c51106 | 28 | } |
klauss | 99:e80850c51106 | 29 | } |
klauss | 126:1f90756250fb | 30 | |
klauss | 125:8ff4dc96ad58 | 31 | if( fip != NULL ) fclose( fip ); |
klauss | 124:c1b6c893e1c3 | 32 | |
klauss | 125:8ff4dc96ad58 | 33 | FILE * fport = fopen( "/qspi/fw_port.txt", "r"); |
klauss | 125:8ff4dc96ad58 | 34 | |
klauss | 125:8ff4dc96ad58 | 35 | if( fport == NULL ) { |
klauss | 119:ee6a53069455 | 36 | if( debug_fw || debug_reconnect ) send_msg ("Failed to open /qspi/fw_port.txt" ); |
klauss | 99:e80850c51106 | 37 | fw_port = __FW_SERVER_PORT__; |
klauss | 99:e80850c51106 | 38 | } else { |
klauss | 125:8ff4dc96ad58 | 39 | if( fread ( (void *) buff_port, 1, 32, fport ) > 0 ) |
klauss | 125:8ff4dc96ad58 | 40 | { |
klauss | 125:8ff4dc96ad58 | 41 | fw_port = atoi ( buff_port ); |
klauss | 119:ee6a53069455 | 42 | if( debug_fw || debug_reconnect ) send_msg ( "fw server port %d", fw_port ); |
klauss | 99:e80850c51106 | 43 | } else { |
klauss | 119:ee6a53069455 | 44 | if( debug_fw || debug_reconnect ) send_msg ( "Failed to read /qspi/fw_port.txt" ); |
klauss | 99:e80850c51106 | 45 | fw_port = __FW_SERVER_PORT__; |
klauss | 99:e80850c51106 | 46 | } |
klauss | 99:e80850c51106 | 47 | } |
klauss | 126:1f90756250fb | 48 | |
klauss | 125:8ff4dc96ad58 | 49 | if( fport != NULL ) fclose( fport ); |
klauss | 125:8ff4dc96ad58 | 50 | |
klauss | 99:e80850c51106 | 51 | int addr = fw_server.set_address( buff_ip , fw_port ); |
klauss | 114:472502b31a12 | 52 | if( debug_fw ) send_msg(" Valor de retorno set_address -- %d ", addr ); |
klauss | 99:e80850c51106 | 53 | fw_sock.set_blocking( false, 0 ); |
klauss | 99:e80850c51106 | 54 | int bind = fw_sock.bind( __FW_HEADER_PORT__ ); |
klauss | 114:472502b31a12 | 55 | if( debug_fw ) send_msg(" Valor de retorno bind -- %d ", bind ); |
klauss | 119:ee6a53069455 | 56 | |
klauss | 119:ee6a53069455 | 57 | return ( 0 ); |
klauss | 99:e80850c51106 | 58 | } |
klauss | 99:e80850c51106 | 59 | |
klauss | 99:e80850c51106 | 60 | void re_start_fw( void ){ |
klauss | 99:e80850c51106 | 61 | int close = fw_sock.close(); |
klauss | 119:ee6a53069455 | 62 | if( debug_fw || debug_reconnect ) send_msg (" Valor de retorno close-- %d ", close ); |
klauss | 99:e80850c51106 | 63 | |
klauss | 99:e80850c51106 | 64 | init_fw_handler(); |
klauss | 99:e80850c51106 | 65 | } |
klauss | 99:e80850c51106 | 66 | |
klauss | 126:1f90756250fb | 67 | void fw_cbx_pkg ( const int ext, char * data ) |
klauss | 126:1f90756250fb | 68 | { |
klauss | 99:e80850c51106 | 69 | static uint8_t fw_cbx_pkg_id = 0x00; |
klauss | 126:1f90756250fb | 70 | |
klauss | 126:1f90756250fb | 71 | data [ CB_BUFFER_SIZE - 1 ] = fw_cbx_pkg_id++; |
klauss | 99:e80850c51106 | 72 | |
klauss | 126:1f90756250fb | 73 | int send = fw_sock.sendTo ( fw_server, data, CB_BUFFER_SIZE ); |
klauss | 119:ee6a53069455 | 74 | |
klauss | 119:ee6a53069455 | 75 | if( send != CB_BUFFER_SIZE ) |
klauss | 119:ee6a53069455 | 76 | { |
klauss | 119:ee6a53069455 | 77 | if( debug_reconnect ) |
klauss | 119:ee6a53069455 | 78 | { |
klauss | 119:ee6a53069455 | 79 | send_msg("[%d] Reconnect FW - %d", ext, send ); |
klauss | 119:ee6a53069455 | 80 | } |
klauss | 119:ee6a53069455 | 81 | |
klauss | 119:ee6a53069455 | 82 | miss_fw_send_pkg++; |
klauss | 119:ee6a53069455 | 83 | re_start_fw(); |
klauss | 119:ee6a53069455 | 84 | } |
klauss | 99:e80850c51106 | 85 | } |