Modularizando o src
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
Diff: fw_handler.cpp
- Revision:
- 99:e80850c51106
- Child:
- 100:09a23fcd3bdf
diff -r 43b45f26b430 -r e80850c51106 fw_handler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fw_handler.cpp Mon Jan 19 18:00:42 2015 +0000 @@ -0,0 +1,76 @@ +#include "fw.h" + +UDPSocket fw_sock; +Endpoint fw_server; + +void init_fw_handler( void ){ + char buff_ip[ 16 ] = ""; + char buff_port[ 8 ] = ""; + int fw_port = 0; + + FILE *fp = fopen( "/qspi/fw_ip.txt", "r"); + //debug_msg(""); + if( fp == NULL ){ + if( debug_file ) debug_msg("Failed to open /qspi/fw_ip.txt" ); + strncpy( buff_ip, __FW_SERVER_IP__, 20 ); + //debug_msg(""); + }else{ + //debug_msg(""); + int read = fread( buff_ip, 1, 512, fp ); + if( read > 0 ){ + for( int i = 0; i < read; i++ ) + if( buff_ip[ i ] == '\n' || buff_ip[ i ] == '\r' ){ + buff_ip[ i ] = '\0'; + break; + } + if( debug_file ) debug_msg("fw server ip %s", buff_ip ); + //debug_msg(""); + }else{ + if( debug_file ) debug_msg("Failed to open /qspi/fw_ip.txt" ); + strncpy( buff_ip, __FW_SERVER_IP__, 20 ); + //debug_msg(""); + } + } + if( fp != NULL ) fclose( fp ); + //debug_msg(""); + fp = fopen( "/qspi/fw_port.txt", "r"); + if( fp == NULL ) { + if( debug_fw ) debug_msg("Failed to open /qspi/fw_port.txt" ); + fw_port = __FW_SERVER_PORT__; + } else { + //debug_msg(""); + if( fread( (void *)buff_port, 1, 32, fp ) > 0 ) { + fw_port = atoi( buff_port ); + if( debug_fw ) debug_msg( "fw server port %d", fw_port ); + } else { + if( debug_fw ) debug_msg( "Failed to read /qspi/fw_port.txt" ); + fw_port = __FW_SERVER_PORT__; + } + } + if( fp != NULL ) fclose( fp ); + //debug_msg(""); + int addr = fw_server.set_address( buff_ip , fw_port ); + if( debug_fw ) send_msg(" Valor de retorno set_address -- %d ", addr ); + fw_sock.set_blocking( false, 0 ); + //debug_msg(""); + int bind = fw_sock.bind( __FW_HEADER_PORT__ ); + if( debug_fw ) send_msg(" Valor de retorno bind -- %d ", bind ); + //debug_msg(""); +} + +void re_start_fw( void ){ + int close = fw_sock.close(); + if( debug_fw ) send_msg(" Valor de retorno close-- %d ", close ); + + init_fw_handler(); +} + +void fw_cbx_pkg( int ext, int port, char * data ){ + static uint8_t fw_cbx_pkg_id = 0x00; + data[ __CB_BUFFER_SIZE__ - 1 ] = fw_cbx_pkg_id++; + + int8_t sent = 0; + do{ + sent = fw_sock.sendTo( fw_server, data, __CB_BUFFER_SIZE__ ); + }while( sent == 0 ); +} \ No newline at end of file