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; }
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"); } }