Modularizando o src
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
fw_handler.cpp@105:a930035b6556, 2015-03-10 (annotated)
- Committer:
- klauss
- Date:
- Tue Mar 10 18:10:57 2015 +0000
- Revision:
- 105:a930035b6556
- Parent:
- 104:62646ef786a3
- Child:
- 109:a5b8264ffbbc
sprint 0;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
klauss | 99:e80850c51106 | 1 | #include "fw.h" |
klauss | 99:e80850c51106 | 2 | |
klauss | 99:e80850c51106 | 3 | UDPSocket fw_sock; |
klauss | 99:e80850c51106 | 4 | Endpoint fw_server; |
klauss | 104:62646ef786a3 | 5 | uint16_t miss_fw_send_pkg = 0; |
klauss | 99:e80850c51106 | 6 | |
klauss | 99:e80850c51106 | 7 | void 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 | 99:e80850c51106 | 12 | FILE *fp = fopen( "/qspi/fw_ip.txt", "r"); |
klauss | 99:e80850c51106 | 13 | if( fp == NULL ){ |
klauss | 105:a930035b6556 | 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 | 99:e80850c51106 | 17 | int read = fread( buff_ip, 1, 512, fp ); |
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 | 105:a930035b6556 | 24 | if( debug_file | debug_reconnect ) send_msg("fw server ip %s", buff_ip ); |
klauss | 99:e80850c51106 | 25 | }else{ |
klauss | 105:a930035b6556 | 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 | 99:e80850c51106 | 30 | if( fp != NULL ) fclose( fp ); |
klauss | 99:e80850c51106 | 31 | fp = fopen( "/qspi/fw_port.txt", "r"); |
klauss | 99:e80850c51106 | 32 | if( fp == NULL ) { |
klauss | 105:a930035b6556 | 33 | if( debug_fw | debug_reconnect ) send_msg("Failed to open /qspi/fw_port.txt" ); |
klauss | 99:e80850c51106 | 34 | fw_port = __FW_SERVER_PORT__; |
klauss | 99:e80850c51106 | 35 | } else { |
klauss | 99:e80850c51106 | 36 | if( fread( (void *)buff_port, 1, 32, fp ) > 0 ) { |
klauss | 99:e80850c51106 | 37 | fw_port = atoi( buff_port ); |
klauss | 104:62646ef786a3 | 38 | if( debug_fw | debug_reconnect ) send_msg( "fw server port %d", fw_port ); |
klauss | 99:e80850c51106 | 39 | } else { |
klauss | 104:62646ef786a3 | 40 | if( debug_fw | debug_reconnect ) send_msg( "Failed to read /qspi/fw_port.txt" ); |
klauss | 99:e80850c51106 | 41 | fw_port = __FW_SERVER_PORT__; |
klauss | 99:e80850c51106 | 42 | } |
klauss | 99:e80850c51106 | 43 | } |
klauss | 104:62646ef786a3 | 44 | if( fp != NULL ) fclose( fp ); |
klauss | 99:e80850c51106 | 45 | int addr = fw_server.set_address( buff_ip , fw_port ); |
klauss | 105:a930035b6556 | 46 | if( debug_fw | debug_reconnect ) send_msg("Valor de retorno set_address -- %d ", addr ); |
klauss | 99:e80850c51106 | 47 | fw_sock.set_blocking( false, 0 ); |
klauss | 99:e80850c51106 | 48 | int bind = fw_sock.bind( __FW_HEADER_PORT__ ); |
klauss | 105:a930035b6556 | 49 | if( debug_fw | debug_reconnect ) send_msg("Valor de retorno bind -- %d ", bind ); |
klauss | 99:e80850c51106 | 50 | } |
klauss | 99:e80850c51106 | 51 | |
klauss | 99:e80850c51106 | 52 | void re_start_fw( void ){ |
klauss | 99:e80850c51106 | 53 | int close = fw_sock.close(); |
klauss | 105:a930035b6556 | 54 | if( debug_fw | debug_reconnect ) send_msg("Valor de retorno close -- %d ", close ); |
klauss | 99:e80850c51106 | 55 | |
klauss | 99:e80850c51106 | 56 | init_fw_handler(); |
klauss | 99:e80850c51106 | 57 | } |
klauss | 99:e80850c51106 | 58 | |
klauss | 99:e80850c51106 | 59 | void fw_cbx_pkg( int ext, int port, char * data ){ |
klauss | 99:e80850c51106 | 60 | static uint8_t fw_cbx_pkg_id = 0x00; |
klauss | 105:a930035b6556 | 61 | data[ CB_BUFFER_SIZE - 1 ] = fw_cbx_pkg_id++; |
klauss | 99:e80850c51106 | 62 | |
klauss | 105:a930035b6556 | 63 | int send = fw_sock.sendTo( fw_server, data, CB_BUFFER_SIZE ); |
klauss | 104:62646ef786a3 | 64 | |
klauss | 105:a930035b6556 | 65 | if( send != CB_BUFFER_SIZE ) |
klauss | 104:62646ef786a3 | 66 | { |
klauss | 104:62646ef786a3 | 67 | if( debug_reconnect ) |
klauss | 104:62646ef786a3 | 68 | { |
klauss | 105:a930035b6556 | 69 | send_msg("Reconnect FW - %d", send ); |
klauss | 104:62646ef786a3 | 70 | } |
klauss | 104:62646ef786a3 | 71 | |
klauss | 104:62646ef786a3 | 72 | miss_fw_send_pkg++; |
klauss | 104:62646ef786a3 | 73 | re_start_fw(); |
klauss | 104:62646ef786a3 | 74 | } |
klauss | 99:e80850c51106 | 75 | } |