Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

vz_stdio.cpp

Committer:
klauss
Date:
2015-11-24
Revision:
137:32dd35a6dbc9
Parent:
135:2f4290590e51

File content as of revision 137:32dd35a6dbc9:

%: include "vz_stdio.h"

Serial serial_pc ( USBTX, USBRX );

UDPSocket udp_client;

Endpoint udp_server;

TCPSocketServer tcp_server;

TCPSocketConnection tcp_client;

bool debug_io_eth = false;

bool udp_request = false;

bool udp_query = false;

bool tcp_session = false;

bool from_eth = false;

char io_msg1 [ IO_MSG_SIZE + IO_AUX_MSG_SIZE ];

char io_msg2 [ IO_MSG_SIZE ];

char io_debug_msg1 [ IO_MSG_SIZE + IO_AUX_MSG_SIZE ];

char io_debug_msg2 [ IO_MSG_SIZE ];

char io_msg_ [ IO_MSG_SIZE ];

int 
vz_io_eth_init ( void )
{
    int return_value = 0;

    int udp_bind = udp_client.bind ( u16_UDP_PORT_LISTENER );

    udp_client.set_blocking ( false, 0 );

    if ( debug_io_eth ) serial_pc.printf ( "udp_client.bind :: %d", udp_bind );

    if ( udp_bind == 0 ) return_value |= BIT0;

    int tcp_bind = tcp_server.bind ( u16_TCP_PORT_LISTENER );

    tcp_server.set_blocking ( false, 0 );

    tcp_server.listen ();  

    if ( debug_io_eth ) serial_pc.printf ( "tcp_server.bind :: %d", tcp_bind );

    if ( tcp_bind == 0 ) return_value |= BIT1;

    return ( return_value );
}

int
vz_printf ( const char * format, ... )
{
        va_list arg;

        va_start ( arg, format );

        int done = vsnprintf ( io_msg_, IO_MSG_SIZE -1, format, arg );
        
        snprintf ( io_msg1, sizeof ( io_msg1 ) - 1, "%s\r\n> ", io_msg_ );
        
        if ( debug_uart3 && !udp_query && !from_eth ) serial_pc.printf ( "%s",io_msg1 );
        
        if ( tcp_session && !udp_query )
        {
            while ( !( tcp_client.send_all ( io_msg1, strlen ( io_msg1 ) ) ) );
        }
        
        if ( udp_query )
        {
            int send = udp_client.sendTo ( udp_server, io_msg_, strlen ( io_msg_ ) );
            if ( send not_eq strlen ( io_msg_ ) )
            {
                if ( debug_reconnect && debug_uart3 ) serial_pc.printf ("\n\rReconnect udp_query client\n\r");
                reconnect_prompt_udp_socket ();
                miss_prompt_udp_send_pkg ++;
            }
        }
        
        va_end ( arg );
        
        return done;
}

void 
udp_query_send_msg ( char * msg )
{
    if ( ( msg != NULL ) && ( strlen ( msg ) > 0 ) )
    {   
        int send = udp_client.sendTo ( udp_server, msg, strlen ( msg ) );
        
        if( send not_eq strlen ( msg ) )
        {
            reconnect_prompt_udp_socket ();
            miss_prompt_udp_send_pkg ++;
        }
    }
}