static NET_SOCK_ID socket_open(void)
{
    NET_SOCK_ID       sock;
    NET_SOCK_ADDR_IP  sock_addr_ip;
    NET_ERR           err;

    Mem_Clr(
        (void *)    &sock_addr_ip,
        (CPU_SIZE_T) sizeof(sock_addr_ip)
    );

    sock_addr_ip.AddrFamily = NET_SOCK_ADDR_FAMILY_IP_V4;
    sock_addr_ip.Addr       = NET_UTIL_HOST_TO_NET_32(IP);
    sock_addr_ip.Port       = NET_UTIL_HOST_TO_NET_16(PORT);

    sock = NetSock_Open(
        NET_SOCK_ADDR_FAMILY_IP_V4,
        NET_SOCK_TYPE_STREAM,
        NET_SOCK_PROTOCOL_TCP,
        &err
    );

    if (NET_SOCK_ERR_NONE != err)
    {
        return -1;
    }

    NetSock_CfgTimeoutConnReqSet(sock, 4000, &err);

    if (NET_SOCK_ERR_NONE != err)
    {
        NetSock_Close(sock, &err);
        return -1;
    }

    NetSock_Conn(
        (NET_SOCK_ID)       sock,
        (NET_SOCK_ADDR *)  &sock_addr_ip,
        (NET_SOCK_ADDR_LEN) sizeof(sock_addr_ip),
        (NET_ERR *)        &err
    );

    if (NET_SOCK_ERR_NONE != err)
    {
        NetSock_Close(sock, &err);
        return -1;
    }

    return sock;
}
示例#2
0
static  void  tcp_ip_Thread_Method (void *p_arg)
{
	NET_SOCK_ID sock;
	NET_SOCK_ADDR_IP server_sock_addr_ip;
	NET_SOCK_ADDR_LEN server_sock_addr_ip_size;
	NET_SOCK_ADDR_IP client_sock_addr_ip;
	NET_SOCK_ADDR_LEN client_sock_addr_ip_size;
	NET_SOCK_RTN_CODE rx_size, tx_size;
	CPU_BOOLEAN attempt_rx;
	NET_ERR err;
	dispatchMsg* dmPtr;
	INT8U continueInt = 1;

	sock = NetSock_Open( NET_SOCK_ADDR_FAMILY_IP_V4,
					NET_SOCK_TYPE_DATAGRAM,
					NET_SOCK_PROTOCOL_UDP,
					&err);
	if (err != NET_SOCK_ERR_NONE) {
		err_printf("NetSock Open failed\n");
	}
	
	server_sock_addr_ip_size = sizeof(server_sock_addr_ip);
	Mem_Clr((void *)&server_sock_addr_ip,   (CPU_SIZE_T) server_sock_addr_ip_size);
	
	server_sock_addr_ip.Family = NET_SOCK_ADDR_FAMILY_IP_V4;
	server_sock_addr_ip.Addr = NET_UTIL_HOST_TO_NET_32(NET_SOCK_ADDR_IP_WILD_CARD);
	server_sock_addr_ip.Port = NET_UTIL_HOST_TO_NET_16(UDP_SERVER_PORT);
#warning: 	" tobe debugged  in method  tcp_ip_Thread_Method    ip.addr in server_sock_add_ip"
	NetSock_Bind((NET_SOCK_ID ) sock,
				(NET_SOCK_ADDR *)&server_sock_addr_ip,
				(NET_SOCK_ADDR_LEN) NET_SOCK_ADDR_SIZE,
				(NET_ERR *)&err);
	if (err != NET_SOCK_ERR_NONE) {
		NetSock_Close(sock, &err);
		err_printf("Net sock Bind failed\n");
	}
	
	while (continueInt)  {
		do {
			client_sock_addr_ip_size = sizeof(client_sock_addr_ip);
			
			rx_size = NetSock_RxDataFrom((NET_SOCK_ID ) sock,
								(void *) tcp_ip_RecvBuffer,
								(CPU_INT16S ) sizeof(tcp_ip_RecvBuffer),
								(CPU_INT16S ) NET_SOCK_FLAG_NONE,
								(NET_SOCK_ADDR *)&client_sock_addr_ip,
								(NET_SOCK_ADDR_LEN *)&client_sock_addr_ip_size,
								(void *) 0,
								(CPU_INT08U ) 0,
								(CPU_INT08U *) 0,
								(NET_ERR *)&err);
			switch (err) {
				case NET_SOCK_ERR_NONE:
				attempt_rx = DEF_NO;
				break;
				case NET_SOCK_ERR_RX_Q_EMPTY:
				case NET_OS_ERR_LOCK:
				attempt_rx = DEF_YES;
				break;
				default:
				attempt_rx = DEF_NO;
				break;
			}
		} while (attempt_rx == DEF_YES);
		info_printf("Net received %i  bytes : %X\n",rx_size,tcp_ip_RecvBuffer);
		dmPtr = OSMemGet(dispatchMsgMem,&err);
		if (err != OS_NO_ERR) {
			err_printf("error get memory in method tcp_ip_Thread_Method, err = %d\n ",err);
		}  else {
			dmPtr->dispatchData = (INT32U) tcp_ip_RecvBuffer;
			err = OSQPost(dispatchMsgQ,dmPtr);
			if (err != OS_NO_ERR) {
				err_printf("error OSQPost in method tcp_ip_Thread_Method, err = %d\n ",err);
			}		
		}
		
		snprintf((char*)&tcp_ip_SendBuffer,sizeof(tcp_ip_SendBuffer)," msg received");
		
		tx_size = NetSock_TxDataTo((NET_SOCK_ID ) sock,
					(void *) tcp_ip_SendBuffer,
					(CPU_INT16S ) strlen((char*) tcp_ip_SendBuffer)+ 1,
					(CPU_INT16S ) NET_SOCK_FLAG_NONE,
					(NET_SOCK_ADDR *)&client_sock_addr_ip,
					(NET_SOCK_ADDR_LEN) client_sock_addr_ip_size,
					(NET_ERR *)&err);
		
		info_printf("net sent (ret error code %i) %i bytes : &s\n",err,tx_size, tcp_ip_SendBuffer);
	}
	NetSock_Close(sock, &err);
	if (err != NET_SOCK_ERR_NONE) {
		err_printf("Net Sock Close error\n");
	}
}