int system_send_buf_to_host( char* buf, int buf_size ) { char* sendbuf; int stat = 0; if( g_send_package_socket != 0) { stat = tcp_get_state( g_send_package_socket ); switch ( stat ) { case TCP_STATE_FREE: case TCP_STATE_CLOSED: tcp_connect ( g_send_package_socket, g_send_package_socket_ip, g_send_package_socket_port, 0); #if 1 return -2; #else // wait connect // maybe need while( 1 ){ stat = tcp_get_state( g_send_package_socket ); timer_poll (); main_TcpNet (); if( stat == TCP_STATE_CONNECT ) break; } #endif break; } if( stat == TCP_STATE_CONNECT ) { while(tcp_check_send ( g_send_package_socket) != __TRUE) { timer_poll (); main_TcpNet (); } if (tcp_check_send ( g_send_package_socket) == __TRUE) { sendbuf = tcp_get_buf( buf_size ); memcpy( sendbuf, buf, buf_size ); tcp_send ( g_send_package_socket, sendbuf, buf_size); #if 1 return 1; #else while( 1 ){ stat = tcp_get_state( g_send_package_socket ); timer_poll (); main_TcpNet (); if( stat == TCP_STATE_CONNECT ) break; } #endif } } else{ return -3; } } else return -4; return -5; }
/***************************************************************************** ** Function name: U16 tcpSend (void) ** ** Descriptions: Envia dados TCP *****************************************************************************/ U16 tcpSend (char *p, U8 sz,U8 soc,U8 send) { U8 *sendbuf,ip[4]; switch (tcp_get_state (soc)) { case TCP_STATE_FREE: case TCP_STATE_CLOSED: if(send == CMD_SEND_TO_SERVER) { inet_aton((U8*)cfg.tcp.ip_serv_rem,ip); tcp_connect(soc,ip,atoi(cfg.tcp.port_serv_rem),atoi(cfg.tcp.port_serv_loc)); } break; case TCP_STATE_CONNECT: /* We are connected, send command to remote peer. */ if(tcp_check_send (soc)) { sendbuf = tcp_get_buf (sz); strncpy((char *)sendbuf,(const char *)p,sz); if(tcp_send (soc, sendbuf, sz)) return __TRUE; /*Packet Sent*/ else return __FALSE; /*Send Error*/ } break; } return __TRUE; }