Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
/*****************************************************************************
** 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;
}