UmberHubManager/api/lib/BrainStem2/aSocket.h

108 lines
3.9 KiB
C

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* */
/* file: aSocket.h */
/* */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* */
/* description: General cross-platform socket defines. */
/* */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* */
/* Copyright (c) 2018 Acroname Inc. - All Rights Reserved */
/* */
/* This file is part of the BrainStem release. See the license.txt */
/* file included with this package or go to */
/* https://acroname.com/software/brainstem-development-kit */
/* for full license details. */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef _aSocket_H_
#define _aSocket_H_
#ifdef _WIN32 /* Platform is Windows. */
#include <winsock2.h>
#include <Ws2ipdef.h>
#include <stdint.h>
#include <iphlpapi.h>
#include "ws2tcpip.h"
#define aSOCKET_ERRVAL WSAGetLastError()
#define aSOCKET_TCP_PROTO IPPROTO_TCP
#define aSOCKET_BOOL_VAL u_long
#define aSOCKET_ERR_WOULDBLOCK WSAEWOULDBLOCK
#define aSOCKET_ERR_TIMEOUT WSAETIMEDOUT
#define aSOCKET_ERR_CONNREFUSED WSAECONNREFUSED
#define aSOCKET_ERR_CONNRESET WSAECONNRESET
#define aSOCKET_ERR_NOTCONN WSAENOTCONN
#define aSOCKET_ERR_PIPE WSAECONNABORTED
#define aSOCKET_ERR_INPROGRESS WSAEINPROGRESS
#define aSOCKET_ERR_AGAIN WSAEWOULDBLOCK
#define aSOCKET_SEND_SIZE int
#define aSOCKET_LEN_TYPE int
#define aSOCKET_CLOSE closesocket
#define aSOCKET_INVALID INVALID_SOCKET
#define aSOCKET_ERROR SOCKET_ERROR
#define aSOCKET_IOCTL ioctlsocket
#define aSOCKET_SHUTDOWN_RDWR SD_BOTH
#define aSOCKET_MSG_WAITALL 0
#else // Else platform is Mac or Linux.
#include <unistd.h>
#include <errno.h>
#include <sys/socket.h>
#include <netdb.h>
#include <netinet/tcp.h>
#include <netinet/in.h>
#include <net/if.h>
#include <arpa/inet.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <ifaddrs.h>
typedef int32_t SOCKET;
#define aSOCKET_ERRVAL errno
#define aSOCKET_TCP_PROTO (getprotobyname("TCP")->p_proto)
#define aSOCKET_BOOL_VAL int
#define aSOCKET_ERR_WOULDBLOCK EWOULDBLOCK
#define aSOCKET_ERR_TIMEOUT ETIMEDOUT
#define aSOCKET_ERR_CONNREFUSED ECONNREFUSED
#define aSOCKET_ERR_CONNRESET ECONNRESET
#define aSOCKET_ERR_NOTCONN ENOTCONN
#define aSOCKET_ERR_PIPE EPIPE
#define aSOCKET_ERR_INPROGRESS EINPROGRESS
#define aSOCKET_ERR_AGAIN EAGAIN
#define aSOCKET_SEND_SIZE ssize_t
#define aSOCKET_LEN_TYPE unsigned int
#define aSOCKET_CLOSE close
#define aSOCKET_INVALID -1
#define aSOCKET_ERROR -1
#define aSOCKET_IOCTL ioctl
#define aSOCKET_SHUTDOWN_RDWR SHUT_RDWR
#define aSOCKET_MSG_WAITALL MSG_WAITALL
#endif /* End of Platform Specific defines. */
#define aIP4_BROADCAST 0xFFFFFFFF
#define aIP4_DISCOVER_MULTICAST 0xE8020202
#define aIP4_DISCOVER_MULTICAST_NATIVE 0x020202E8
#define aIP4_DISCOVER_REQUEST_PORT 9888
#define aIP4_DISCOVER_REPLY_PORT 9889
#define aIP4DISCOVERY_VERSION 1
#define aIPDISCOVERY_FLAG_SIMULATION 0x00000001
typedef struct aIPDiscoveryInfo {
uint8_t version;
uint8_t module;
uint16_t port;
uint32_t serialNum;
uint32_t flags;
uint8_t model;
} aIPDiscoveryInfo;
#endif /* _aSocket_H_ */