From d188a1fa55b9a5755e263899c70a39ff53ebfdcb Mon Sep 17 00:00:00 2001 From: Daniel Ferguson Date: Mon, 11 Jan 2016 16:30:11 -0800 Subject: [PATCH] [Win32] Add conditional compilation directives. Several places, mostly related to networking and examples, needed conditional compilation directives inserted. Change-Id: Iad8f39c8ac28e760f5e3ded39d9c79b089aae6d7 Signed-off-by: Daniel Ferguson Reviewed-on: https://gerrit.iotivity.org/gerrit/5507 Reviewed-by: David Antler Tested-by: jenkins-iotivity --- resource/c_common/ocrandom/include/ocrandom.h | 4 +- resource/c_common/ocrandom/src/ocrandom.c | 11 +- .../connectivity/common/src/camutex_pthreads.c | 4 +- resource/csdk/connectivity/inc/caadapterutils.h | 7 +- .../csdk/connectivity/lib/libcoap-4.1.1/address.h | 5 + .../csdk/connectivity/lib/libcoap-4.1.1/config.h | 17 +-- resource/csdk/connectivity/lib/libcoap-4.1.1/net.c | 4 + .../src/adapter_util/caadapternetdtls.c | 6 ++ .../connectivity/src/adapter_util/caadapterutils.c | 23 ++++- resource/csdk/connectivity/src/caretransmission.c | 5 + .../csdk/connectivity/src/ip_adapter/caipserver.c | 114 +++++++++++++++++---- resource/csdk/logger/include/logger.h | 6 +- resource/csdk/logger/src/logger.c | 10 +- resource/csdk/security/src/iotvticalendar.c | 15 +++ resource/csdk/stack/src/ocstack.c | 6 +- resource/examples/lightserver.cpp | 1 + resource/examples/presenceclient.cpp | 2 +- resource/examples/presenceserver.cpp | 5 + resource/examples/simpleclient.cpp | 1 + resource/examples/simpleclientHQ.cpp | 5 + resource/examples/simpleserver.cpp | 2 +- resource/examples/simpleserverHQ.cpp | 9 +- resource/examples/threadingsample.cpp | 6 ++ 23 files changed, 218 insertions(+), 50 deletions(-) diff --git a/resource/c_common/ocrandom/include/ocrandom.h b/resource/c_common/ocrandom/include/ocrandom.h index e096fc5..7a91dea 100644 --- a/resource/c_common/ocrandom/include/ocrandom.h +++ b/resource/c_common/ocrandom/include/ocrandom.h @@ -29,9 +29,9 @@ extern "C" { #endif -#if defined(__ANDROID__) || defined(__linux__) +#ifndef ARDUINO #include -#elif defined ARDUINO +#else // MEGA has 16 input pins whereas Due has only 12 input pins #define ANALOG_IN (10) #endif diff --git a/resource/c_common/ocrandom/src/ocrandom.c b/resource/c_common/ocrandom/src/ocrandom.c index 95472b6..08c6777 100644 --- a/resource/c_common/ocrandom/src/ocrandom.c +++ b/resource/c_common/ocrandom/src/ocrandom.c @@ -30,7 +30,7 @@ #define _POSIX_C_SOURCE 200809L #endif -#if defined(__ANDROID__) || defined(__linux__) || defined(__APPLE__) +#if defined(__ANDROID__) || defined(__linux__) || defined(__APPLE__) || defined(__msys_nt__) #include "fcntl.h" #include "unistd.h" #include @@ -104,7 +104,7 @@ uint8_t GetRandomBit() int8_t OCSeedRandom() { -#if defined(__ANDROID__) || defined(__linux__) || defined(__APPLE__) || defined(__TIZEN__) +#ifndef ARDUINO // Get current time to Seed. uint64_t currentTime = 0; #ifdef __ANDROID__ @@ -120,7 +120,7 @@ int8_t OCSeedRandom() gettimeofday(&tv, NULL); currentTime = tv.tv_sec * (uint64_t)1000000 + tv.tv_usec; #endif - +#if defined(__unix__) || defined(__APPLE__) int32_t fd = open("/dev/urandom", O_RDONLY); if (fd >= 0) { @@ -140,6 +140,7 @@ int8_t OCSeedRandom() srand(randomSeed | currentTime); } else +#endif { // Do time based seed when problem in accessing "/dev/urandom" srand(currentTime); @@ -184,7 +185,7 @@ uint32_t OCGetRandom() uint8_t OCGetRandomByte(void) { -#if defined(__ANDROID__) || defined(__linux__) || defined(__APPLE__) +#if defined(__ANDROID__) || defined(__linux__) || defined(__APPLE__) || defined(__msys_nt__) return rand() & 0x00FF; #elif defined ARDUINO #ifdef HAVE_SRANDOM @@ -273,7 +274,7 @@ OCRandomUuidResult OCGenerateUuid(uint8_t uuid[UUID_SIZE]) uuid[15] = parseUuidPart(&uuidString[34]); return RAND_UUID_OK; -#elif !defined(__ANDROID__) && (defined(__linux__) || defined(__APPLE__)) +#elif (!defined(__ANDROID__) && !defined(__msys_nt__)) && (defined(__linux__) || defined(__APPLE__)) // note: uuid_t is typedefed as unsigned char[16] on linux/apple uuid_generate(uuid); return RAND_UUID_OK; diff --git a/resource/csdk/connectivity/common/src/camutex_pthreads.c b/resource/csdk/connectivity/common/src/camutex_pthreads.c index 834886c..95ee2eb 100644 --- a/resource/csdk/connectivity/common/src/camutex_pthreads.c +++ b/resource/csdk/connectivity/common/src/camutex_pthreads.c @@ -187,7 +187,7 @@ ca_cond ca_cond_new(void) return retVal; } -#if defined(__ANDROID__) || _POSIX_TIMERS > 0 +#if (defined(__ANDROID__) || _POSIX_TIMERS > 0) && !defined(__msys_nt__) #ifdef __ANDROID__ if (camutex_condattr_setclock) { ret = camutex_condattr_setclock(&(eventInfo->condattr), CLOCK_MONOTONIC); @@ -204,7 +204,7 @@ ca_cond ca_cond_new(void) return retVal; } } -#endif /* defined(__ANDROID__) || _POSIX_TIMERS > 0 */ +#endif /* (defined(__ANDROID__) || _POSIX_TIMERS > 0) && !defined(__msys_nt__)*/ ret = pthread_cond_init(&(eventInfo->cond), &(eventInfo->condattr)); if (0 == ret) { diff --git a/resource/csdk/connectivity/inc/caadapterutils.h b/resource/csdk/connectivity/inc/caadapterutils.h index cd3f102..cf22d0d 100644 --- a/resource/csdk/connectivity/inc/caadapterutils.h +++ b/resource/csdk/connectivity/inc/caadapterutils.h @@ -32,10 +32,15 @@ #include #endif -#ifndef WITH_ARDUINO +#if !defined(WITH_ARDUINO) && !defined(__msys_nt__) #include #endif +#if defined(_WIN32) +#include +#include +#endif + #include "cacommon.h" #include "logger.h" #include "pdu.h" diff --git a/resource/csdk/connectivity/lib/libcoap-4.1.1/address.h b/resource/csdk/connectivity/lib/libcoap-4.1.1/address.h index bb44a99..2a60272 100644 --- a/resource/csdk/connectivity/lib/libcoap-4.1.1/address.h +++ b/resource/csdk/connectivity/lib/libcoap-4.1.1/address.h @@ -36,6 +36,11 @@ #include #endif +#if defined(__msys_nt__) +#include +#include +#endif + #ifdef WITH_ARDUINO #define DEV_ADDR_SIZE_MAX (16) #endif diff --git a/resource/csdk/connectivity/lib/libcoap-4.1.1/config.h b/resource/csdk/connectivity/lib/libcoap-4.1.1/config.h index 71d396a..09f6583 100644 --- a/resource/csdk/connectivity/lib/libcoap-4.1.1/config.h +++ b/resource/csdk/connectivity/lib/libcoap-4.1.1/config.h @@ -5,8 +5,8 @@ /* #undef AC_APPLE_UNIVERSAL_BUILD */ /* Define to 1 if you have the header file. */ -#ifndef WITH_ARDUINO -#define HAVE_ARPA_INET_H 1 +#if !defined(WITH_ARDUINO) && !defined(__msys_nt__) + #define HAVE_ARPA_INET_H 1 #endif /* Define to 1 if you have the header file. */ @@ -38,8 +38,8 @@ #define HAVE_NETDB_H 1 /* Define to 1 if you have the header file. */ -#ifndef WITH_ARDUINO -#define HAVE_NETINET_IN_H 1 +#if !defined(WITH_ARDUINO) && !defined(__msys_nt__) + #define HAVE_NETINET_IN_H 1 #endif /* Define to 1 if you have the `select' function. */ @@ -70,16 +70,17 @@ #define HAVE_STRRCHR 1 /* Define to 1 if you have the header file. */ -#ifndef WITH_ARDUINO +#if !defined(WITH_ARDUINO) && !defined(__msys_nt__) #define HAVE_SYSLOG_H 1 #endif /* Define to 1 if you have the header file. */ -#ifndef WITH_ARDUINO +#if !defined(WITH_ARDUINO) && !defined(__msys_nt__) #define HAVE_SYS_SOCKET_H 1 #endif /* Define to 1 if you have the header file. */ +//TODO: arduino has this?? no i think. #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ @@ -93,7 +94,7 @@ #endif /* Define to 1 if you have the header file. */ -#ifndef WITH_ARDUINO +#if !defined(WITH_ARDUINO) && !defined(__msys_nt__) #define HAVE_SYS_UNISTD_H 1 #endif @@ -103,7 +104,7 @@ #endif /* Define to 1 if you have the header file. */ -#ifndef WITH_ARDUINO +#if !defined(WITH_ARDUINO) && !defined(__msys_nt__) #define HAVE_UNISTD_H 1 #endif diff --git a/resource/csdk/connectivity/lib/libcoap-4.1.1/net.c b/resource/csdk/connectivity/lib/libcoap-4.1.1/net.c index 580729b..50ce531 100644 --- a/resource/csdk/connectivity/lib/libcoap-4.1.1/net.c +++ b/resource/csdk/connectivity/lib/libcoap-4.1.1/net.c @@ -31,6 +31,10 @@ #include #endif +#if defined(_WIN32) +#include +#include +#endif #ifdef WITH_LWIP #include #include diff --git a/resource/csdk/connectivity/src/adapter_util/caadapternetdtls.c b/resource/csdk/connectivity/src/adapter_util/caadapternetdtls.c index 0220863..e47fd40 100644 --- a/resource/csdk/connectivity/src/adapter_util/caadapternetdtls.c +++ b/resource/csdk/connectivity/src/adapter_util/caadapternetdtls.c @@ -25,7 +25,13 @@ #include "oic_string.h" #include "global.h" #include "timer.h" + +#if defined(__msys_nt__) +#include +#include +#else #include +#endif /* tinyDTLS library error code */ #define TINY_DTLS_ERROR (-1) diff --git a/resource/csdk/connectivity/src/adapter_util/caadapterutils.c b/resource/csdk/connectivity/src/adapter_util/caadapterutils.c index 83f24eb..5d71b54 100644 --- a/resource/csdk/connectivity/src/adapter_util/caadapterutils.c +++ b/resource/csdk/connectivity/src/adapter_util/caadapterutils.c @@ -26,12 +26,17 @@ #include "oic_malloc.h" #include -#ifndef WITH_ARDUINO +#if !defined(WITH_ARDUINO) && !defined(__msys_nt__) #include #include #include #endif +#if defined(__msys_nt__) +#include +#include +#endif + #ifdef __ANDROID__ #include #endif @@ -137,6 +142,7 @@ void CAConvertAddrToName(const struct sockaddr_storage *sockAddr, socklen_t sock NI_NUMERICHOST|NI_NUMERICSERV); if (r) { +#if defined(EAI_SYSTEM) if (EAI_SYSTEM == r) { OIC_LOG_V(ERROR, CA_ADAPTER_UTILS_TAG, @@ -147,6 +153,13 @@ void CAConvertAddrToName(const struct sockaddr_storage *sockAddr, socklen_t sock OIC_LOG_V(ERROR, CA_ADAPTER_UTILS_TAG, "getnameinfo failed: %s", gai_strerror(r)); } +#elif defined(__msys_nt__) || defined(_WIN32) + OIC_LOG_V(ERROR, CA_ADAPTER_UTILS_TAG, + "getnameinfo failed: errno %i", WSAGetLastError()); +#else + OIC_LOG_V(ERROR, CA_ADAPTER_UTILS_TAG, + "getnameinfo failed: %s", gai_strerror(r)); +#endif return; } *port = ntohs(((struct sockaddr_in *)sockAddr)->sin_port); // IPv4 and IPv6 @@ -165,6 +178,7 @@ void CAConvertNameToAddr(const char *host, uint16_t port, struct sockaddr_storag int r = getaddrinfo(host, NULL, &hints, &addrs); if (r) { +#if defined(EAI_SYSTEM) if (EAI_SYSTEM == r) { OIC_LOG_V(ERROR, CA_ADAPTER_UTILS_TAG, @@ -175,6 +189,13 @@ void CAConvertNameToAddr(const char *host, uint16_t port, struct sockaddr_storag OIC_LOG_V(ERROR, CA_ADAPTER_UTILS_TAG, "getaddrinfo failed: %s", gai_strerror(r)); } +#elif defined(__msys_nt__) || defined(_WIN32) + OIC_LOG_V(ERROR, CA_ADAPTER_UTILS_TAG, + "getaddrinfo failed: errno %i", WSAGetLastError()); +#else + OIC_LOG_V(ERROR, CA_ADAPTER_UTILS_TAG, + "getaddrinfo failed: %s", gai_strerror(r)); +#endif return; } // assumption: in this case, getaddrinfo will only return one addrinfo diff --git a/resource/csdk/connectivity/src/caretransmission.c b/resource/csdk/connectivity/src/caretransmission.c index 5fa8df9..4702f17 100644 --- a/resource/csdk/connectivity/src/caretransmission.c +++ b/resource/csdk/connectivity/src/caretransmission.c @@ -94,8 +94,13 @@ uint64_t getCurrentTimeInMicroSeconds(); */ static uint64_t CAGetTimeoutValue() { +#if !defined(__msys_nt__) return ((DEFAULT_ACK_TIMEOUT_SEC * 1000) + ((1000 * (random() & 0xFF)) >> 8)) * (uint64_t) 1000; +#else + return ((DEFAULT_ACK_TIMEOUT_SEC * 1000) + ((1000 * (rand() & 0xFF)) >> 8)) * + (uint64_t) 1000; +#endif } CAResult_t CARetransmissionStart(CARetransmission_t *context) diff --git a/resource/csdk/connectivity/src/ip_adapter/caipserver.c b/resource/csdk/connectivity/src/ip_adapter/caipserver.c index 3d1c80a..837940b 100644 --- a/resource/csdk/connectivity/src/ip_adapter/caipserver.c +++ b/resource/csdk/connectivity/src/ip_adapter/caipserver.c @@ -26,15 +26,27 @@ #endif #include +#if !defined(__msys_nt__) #include +#endif + +#if defined(__msys_nt__) +#include +#include +#include +#include +#endif + #include #include #include #include +#if !defined(__msys_nt__) #include #include #include #include +#endif #include #ifdef __linux__ #include @@ -96,6 +108,18 @@ static char *ipv6mcnames[IPv6_DOMAINS] = { NULL }; +#if defined (__msys_nt__) + char* _caips_get_error(){ + static char buffer[32]; + snprintf(buffer, 32, "%i", WSAGetLastError()); + return buffer; + } + #define CAIPS_GET_ERROR \ + _caips_get_error() +#else + #define CAIPS_GET_ERROR \ + strerror(errno) +#endif static CAIPExceptionCallback g_exceptionCallback; static CAIPPacketReceivedCallback g_packetReceivedCallback; @@ -172,6 +196,8 @@ static void CAFindReadyMessage() SET(m6s, &readFds) SET(m4, &readFds) SET(m4s, &readFds) + +#if !defined(__msys_nt__) if (caglobals.ip.shutdownFds[0] != -1) { FD_SET(caglobals.ip.shutdownFds[0], &readFds); @@ -180,7 +206,7 @@ static void CAFindReadyMessage() { FD_SET(caglobals.ip.netlinkFd, &readFds); } - +#endif int ret = select(caglobals.ip.maxfd + 1, &readFds, NULL, NULL, tv); if (caglobals.ip.terminate) @@ -188,11 +214,12 @@ static void CAFindReadyMessage() OIC_LOG_V(DEBUG, TAG, "Packet receiver Stop request received."); return; } + if (ret <= 0) { if (ret < 0) { - OIC_LOG_V(FATAL, TAG, "select error %s", strerror(errno)); + OIC_LOG_V(FATAL, TAG, "select error %s", CAIPS_GET_ERROR); } return; } @@ -216,6 +243,7 @@ static void CASelectReturned(fd_set *readFds, int ret) else ISSET(m6s, readFds, CA_MULTICAST | CA_IPV6 | CA_SECURE) else ISSET(m4, readFds, CA_MULTICAST | CA_IPV4) else ISSET(m4s, readFds, CA_MULTICAST | CA_IPV4 | CA_SECURE) +#if !defined(__msys_nt__) else if (FD_ISSET(caglobals.ip.netlinkFd, readFds)) { CAInterface_t *ifchanged = CAFindInterfaceChange(); @@ -240,7 +268,12 @@ static void CASelectReturned(fd_set *readFds, int ret) { break; } - +#else + else + { + break; + } +#endif (void)CAReceiveMessage(fd, flags); FD_CLR(fd, readFds); } @@ -254,6 +287,7 @@ static CAResult_t CAReceiveMessage(int fd, CATransportFlags_t flags) int level, type, namelen; struct sockaddr_storage srcAddr; unsigned char *pktinfo = NULL; +#if !defined(__msys_nt__) struct cmsghdr *cmp = NULL; struct iovec iov = { recvBuffer, sizeof (recvBuffer) }; union control @@ -301,7 +335,9 @@ static CAResult_t CAReceiveMessage(int fd, CATransportFlags_t flags) } } } +#else // if defined(__msys_nt__) +#endif // !defined(__msys_nt__) CASecureEndpoint_t sep = {.endpoint = {.adapter = CA_ADAPTER_IP, .flags = flags}}; if (flags & CA_IPV6) @@ -332,9 +368,11 @@ static CAResult_t CAReceiveMessage(int fd, CATransportFlags_t flags) } } } - +#if !defined(__msys_nt__) CAConvertAddrToName(&srcAddr, msg.msg_namelen, sep.endpoint.addr, &sep.endpoint.port); +#else +#endif if (flags & CA_SECURE) { #ifdef __WITH_DTLS__ @@ -353,6 +391,8 @@ static CAResult_t CAReceiveMessage(int fd, CATransportFlags_t flags) } return CA_STATUS_OK; + + } void CAIPPullData() @@ -363,6 +403,7 @@ void CAIPPullData() static int CACreateSocket(int family, uint16_t *port) { +#if !defined(__msys_nt__) int socktype = SOCK_DGRAM; #ifdef SOCK_CLOEXEC socktype |= SOCK_CLOEXEC; @@ -383,7 +424,9 @@ static int CACreateSocket(int family, uint16_t *port) return -1; } #endif +#else // defined(__msys_nt__) +#endif struct sockaddr_storage sa = { .ss_family = family }; socklen_t socklen; @@ -398,9 +441,13 @@ static int CACreateSocket(int family, uint16_t *port) if (*port) // only do this for multicast ports { +#if !defined(__msys_nt__) if (-1 == setsockopt(fd, IPPROTO_IPV6, IPV6_RECVPKTINFO, &on, sizeof (on))) +#else + +#endif { - OIC_LOG_V(ERROR, TAG, "IPV6_RECVPKTINFO failed: %s", strerror(errno)); + OIC_LOG_V(ERROR, TAG, "IPV6_RECVPKTINFO failed: %s",CAIPS_GET_ERROR); } } @@ -414,7 +461,7 @@ static int CACreateSocket(int family, uint16_t *port) int on = 1; if (-1 == setsockopt(fd, IPPROTO_IP, IP_PKTINFO, &on, sizeof (on))) { - OIC_LOG_V(ERROR, TAG, "IP_PKTINFO failed: %s", strerror(errno)); + OIC_LOG_V(ERROR, TAG, "IP_PKTINFO failed: %s", CAIPS_GET_ERROR); } } @@ -427,7 +474,7 @@ static int CACreateSocket(int family, uint16_t *port) int on = 1; if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof (on))) { - OIC_LOG_V(ERROR, TAG, "SO_REUSEADDR failed: %s", strerror(errno)); + OIC_LOG_V(ERROR, TAG, "SO_REUSEADDR failed: %s", CAIPS_GET_ERROR); close(fd); return -1; } @@ -435,7 +482,7 @@ static int CACreateSocket(int family, uint16_t *port) if (-1 == bind(fd, (struct sockaddr *)&sa, socklen)) { - OIC_LOG_V(ERROR, TAG, "bind socket failed: %s", strerror(errno)); + OIC_LOG_V(ERROR, TAG, "bind socket failed: %s", CAIPS_GET_ERROR); close(fd); return -1; } @@ -444,7 +491,7 @@ static int CACreateSocket(int family, uint16_t *port) { if (-1 == getsockname(fd, (struct sockaddr *)&sa, &socklen)) { - OIC_LOG_V(ERROR, TAG, "getsockname failed: %s", strerror(errno)); + OIC_LOG_V(ERROR, TAG, "getsockname failed: %s", CAIPS_GET_ERROR); close(fd); return -1; } @@ -493,6 +540,7 @@ static void CAInitializeNetlink() static void CAInitializePipe() { +#if !defined(__msys_nt__) caglobals.ip.selectTimeout = -1; #ifdef HAVE_PIPE2 int ret = pipe2(caglobals.ip.shutdownFds, O_CLOEXEC); @@ -527,6 +575,9 @@ static void CAInitializePipe() OIC_LOG_V(ERROR, TAG, "pipe failed: %s", strerror(errno)); caglobals.ip.selectTimeout = SELECT_TIMEOUT; //poll needed for shutdown } +#else + //msys stuff here +#endif } CAResult_t CAIPStartServer(const ca_thread_pool_t threadPool) @@ -617,6 +668,7 @@ void CAIPStopServer() { caglobals.ip.started = false; caglobals.ip.terminate = true; +#if !defined(__msys_nt__) if (caglobals.ip.shutdownFds[1] != -1) { @@ -627,10 +679,14 @@ void CAIPStopServer() { // receive thread will stop in SELECT_TIMEOUT seconds. } +#else + //msys stuff here +#endif } void CAWakeUpForChange() { +#if !defined(__msys_nt__) if (caglobals.ip.shutdownFds[1] != -1) { ssize_t len = 0; @@ -643,6 +699,9 @@ void CAWakeUpForChange() OIC_LOG_V(DEBUG, TAG, "write failed: %s", strerror(errno)); } } +#else + //msys stuff here +#endif } static void applyMulticastToInterface4(struct in_addr inaddr) @@ -659,14 +718,14 @@ static void applyMulticastToInterface4(struct in_addr inaddr) { if (EADDRINUSE != errno) { - OIC_LOG_V(ERROR, TAG, "IPv4 IP_ADD_MEMBERSHIP failed: %s", strerror(errno)); + OIC_LOG_V(ERROR, TAG, "IPv4 IP_ADD_MEMBERSHIP failed: %s", CAIPS_GET_ERROR); } } if (setsockopt(caglobals.ip.m4s.fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof (mreq))) { if (EADDRINUSE != errno) { - OIC_LOG_V(ERROR, TAG, "secure IPv4 IP_ADD_MEMBERSHIP failed: %s", strerror(errno)); + OIC_LOG_V(ERROR, TAG, "secure IPv4 IP_ADD_MEMBERSHIP failed: %s", CAIPS_GET_ERROR); } } } @@ -678,7 +737,7 @@ static void applyMulticast6(int fd, struct in6_addr *addr, uint32_t ifindex) { if (EADDRINUSE != errno) { - OIC_LOG_V(ERROR, TAG, "IPv6 IP_ADD_MEMBERSHIP failed: %s", strerror(errno)); + OIC_LOG_V(ERROR, TAG, "IPv6 IP_ADD_MEMBERSHIP failed: %s", CAIPS_GET_ERROR); } } } @@ -726,7 +785,11 @@ CAResult_t CAIPStartListenServer() { continue; } +#if !defined(__msys_nt__) if ((ifitem->flags & (IFF_UP|IFF_RUNNING)) != (IFF_UP|IFF_RUNNING)) +#else + //IFF_RUNNING is not on msys or win32 +#endif { continue; } @@ -768,8 +831,11 @@ CAResult_t CAIPStopListenServer() { continue; } - +#if !defined(__msys_nt__) if ((ifitem->flags & (IFF_UP|IFF_RUNNING)) != (IFF_UP|IFF_RUNNING)) +#else + //IFF_RUNNING is not on msys or win32 +#endif { continue; } @@ -858,19 +924,22 @@ static void sendData(int fd, const CAEndpoint_t *endpoint, { socklen = sizeof(struct sockaddr_in); } - +#if !defined(__msys_nt__) ssize_t len = sendto(fd, data, dlen, 0, (struct sockaddr *)&sock, socklen); if (-1 == len) { // If logging is not defined/enabled. - (void)cast; - (void)fam; + (void)cast; + (void)fam; OIC_LOG_V(ERROR, TAG, "%s%s %s sendTo failed: %s", secure, cast, fam, strerror(errno)); } else { OIC_LOG_V(INFO, TAG, "%s%s %s sendTo is successful: %zd bytes", secure, cast, fam, len); } +#else + +#endif } static void sendMulticastData6(const u_arraylist_t *iflist, @@ -901,7 +970,11 @@ static void sendMulticastData6(const u_arraylist_t *iflist, { continue; } +#if !defined(__msys_nt__) if ((ifitem->flags & (IFF_UP|IFF_RUNNING)) != (IFF_UP|IFF_RUNNING)) +#else + +#endif { continue; } @@ -913,7 +986,8 @@ static void sendMulticastData6(const u_arraylist_t *iflist, int index = ifitem->index; if (setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_IF, &index, sizeof (index))) { - OIC_LOG_V(ERROR, TAG, "setsockopt6 failed: %s", strerror(errno)); + OIC_LOG_V(ERROR, TAG, "setsockopt6 failed: %s", CAIPS_GET_ERROR); + return; } sendData(fd, endpoint, data, datalen, "multicast", "ipv6"); @@ -939,7 +1013,11 @@ static void sendMulticastData4(const u_arraylist_t *iflist, { continue; } +#if !defined(__msys_nt__) if ((ifitem->flags & (IFF_UP|IFF_RUNNING)) != (IFF_UP|IFF_RUNNING)) +#else + +#endif { continue; } @@ -954,7 +1032,7 @@ static void sendMulticastData4(const u_arraylist_t *iflist, if (setsockopt(fd, IPPROTO_IP, IP_MULTICAST_IF, &mreq, sizeof (mreq))) { OIC_LOG_V(ERROR, TAG, "send IP_MULTICAST_IF failed: %s (using defualt)", - strerror(errno)); + CAIPS_GET_ERROR); } sendData(fd, endpoint, data, datalen, "multicast", "ipv4"); } diff --git a/resource/csdk/logger/include/logger.h b/resource/csdk/logger/include/logger.h index 932221d..cbd7bbf 100644 --- a/resource/csdk/logger/include/logger.h +++ b/resource/csdk/logger/include/logger.h @@ -89,7 +89,7 @@ void OCLogBuffer(LogLevel level, const char * tag, const uint8_t * buffer, uint1 #define OCLog(level,tag,mes) LOG_(LOG_ID_MAIN, (level), (tag), mes) #define OCLogv(level,tag,fmt,args...) LOG_(LOG_ID_MAIN, (level),tag,fmt,##args) -#elif defined(ANDROID) || defined(__linux__) || defined(__APPLE__) +#elif !defined(ARDUINO) /** * Configure logger to use a context that defines a custom logger function * @@ -196,7 +196,7 @@ void OCLogBuffer(LogLevel level, const char * tag, const uint8_t * buffer, uint1 #define OIC_LOG_BUFFER(level, tag, buffer, bufferSize)\ OCLogBuffer((level), (tag), (buffer), (bufferSize)) -#else // These macros are defined for Linux, Android, and Arduino +#else // These macros are defined for Linux, Android, MSYS_NT, and Arduino #define OIC_LOG_INIT() OCLogInit() @@ -217,7 +217,7 @@ void OCLogBuffer(LogLevel level, const char * tag, const uint8_t * buffer, uint1 #define OIC_LOG_CONFIG(ctx) OCLogConfig((ctx)) #define OIC_LOG_SHUTDOWN() OCLogShutdown() #define OIC_LOG(level, tag, logStr) OCLog((level), (tag), (logStr)) -// Define variable argument log function for Linux and Android +// Define variable argument log function for Linux, Android, and MSYS_NT #define OIC_LOG_V(level, tag, ...) OCLogv((level), (tag), __VA_ARGS__) #endif //ARDUINO diff --git a/resource/csdk/logger/src/logger.c b/resource/csdk/logger/src/logger.c index b2de15d..a92fd9a 100644 --- a/resource/csdk/logger/src/logger.c +++ b/resource/csdk/logger/src/logger.c @@ -72,9 +72,6 @@ static const uint16_t LINE_BUFFER_SIZE = (16 * 2) + 16 + 1; static android_LogPriority LEVEL[] = {ANDROID_LOG_DEBUG, ANDROID_LOG_INFO, ANDROID_LOG_WARN, ANDROID_LOG_ERROR, ANDROID_LOG_FATAL}; #endif -#elif defined (__linux__) || defined (__APPLE__) - static const char *LEVEL[] __attribute__ ((unused)) = - {"DEBUG", "INFO", "WARNING", "ERROR", "FATAL"}; #elif defined ARDUINO #include #include "Arduino.h" @@ -98,7 +95,10 @@ static const uint16_t LINE_BUFFER_SIZE = (16 * 2) + 16 + 1; #else #define GET_PROGMEM_BUFFER(buffer, addr) { buffer[0] = '\0';} #endif -#endif // __ANDROID__ +#else // !defined(__ANDROID__) && !defined(ARDUINO) + static const char *LEVEL[] __attribute__ ((unused)) = + {"DEBUG", "INFO", "WARNING", "ERROR", "FATAL"}; +#endif #ifndef ARDUINO @@ -155,7 +155,7 @@ void OCLogInit() void OCLogShutdown() { -#if defined(__linux__) || defined(__APPLE__) +#if defined(__linux__) || defined(__APPLE__) || defined(__msys_nt__) if (logCtx && logCtx->destroy) { logCtx->destroy(logCtx); diff --git a/resource/csdk/security/src/iotvticalendar.c b/resource/csdk/security/src/iotvticalendar.c index d3b6cb1..2a47a44 100644 --- a/resource/csdk/security/src/iotvticalendar.c +++ b/resource/csdk/security/src/iotvticalendar.c @@ -34,6 +34,21 @@ static const char UNTIL[] = "UNTIL"; static const char BYDAY[] = "BYDAY"; static const char DAILY[] = "DAILY"; +#if defined(__msys_nt__) +// ### to be fixed later +#define strptime(a,b,c) NULL +#endif + +/** + * Parses periodStr and populate struct IotvtICalPeriod_t + * + * @param periodStr string to be parsed. + * @param period IotvtICalPeriod_t struct to be populated. + * + * @return IOTVTICAL_INVALID_PARAMETER -- if parameter are invalid + * IOTVTICAL_INVALID_PERIOD -- if period string has invalid format + * IOTVTICAL_INVALID_SUCCESS -- if no error while parsing + */ IotvtICalResult_t ParsePeriod(const char *periodStr, IotvtICalPeriod_t *period) { if ((NULL == periodStr) || (NULL == period)) diff --git a/resource/csdk/stack/src/ocstack.c b/resource/csdk/stack/src/ocstack.c index 3bd1d12..112ba82 100644 --- a/resource/csdk/stack/src/ocstack.c +++ b/resource/csdk/stack/src/ocstack.c @@ -81,10 +81,14 @@ #include "utlist.h" #include "pdu.h" -#ifndef ARDUINO +#if !defined(WITH_ARDUINO) && !defined(__msys_nt__) #include #endif +#if defined(__msys_nt__) +#include +#endif + #ifndef UINT32_MAX #define UINT32_MAX (0xFFFFFFFFUL) #endif diff --git a/resource/examples/lightserver.cpp b/resource/examples/lightserver.cpp index dd207d5..2fd5bb3 100644 --- a/resource/examples/lightserver.cpp +++ b/resource/examples/lightserver.cpp @@ -24,6 +24,7 @@ /// (properties and methods) and host this resource on the server. /// +#include #include #include diff --git a/resource/examples/presenceclient.cpp b/resource/examples/presenceclient.cpp index 3755b57..328e1e7 100644 --- a/resource/examples/presenceclient.cpp +++ b/resource/examples/presenceclient.cpp @@ -25,7 +25,7 @@ #include #include #include - +#include #include "OCPlatform.h" #include "OCApi.h" diff --git a/resource/examples/presenceserver.cpp b/resource/examples/presenceserver.cpp index cad22ac..601e1d6 100644 --- a/resource/examples/presenceserver.cpp +++ b/resource/examples/presenceserver.cpp @@ -33,6 +33,11 @@ #include "OCPlatform.h" #include "OCApi.h" +#if defined(__msys_nt__) +#include +#define sleep(x) Sleep(1000*x) +#endif + using namespace OC; using namespace std; diff --git a/resource/examples/simpleclient.cpp b/resource/examples/simpleclient.cpp index 07d55f0..c700714 100644 --- a/resource/examples/simpleclient.cpp +++ b/resource/examples/simpleclient.cpp @@ -20,6 +20,7 @@ // OCClient.cpp : Defines the entry point for the console application. // +#include #include #include #include diff --git a/resource/examples/simpleclientHQ.cpp b/resource/examples/simpleclientHQ.cpp index 86081f8..17f04a1 100644 --- a/resource/examples/simpleclientHQ.cpp +++ b/resource/examples/simpleclientHQ.cpp @@ -29,6 +29,11 @@ #include "OCPlatform.h" #include "OCApi.h" +#if defined(__msys_nt__) +#include +#define sleep(x) Sleep(1000*x) +#endif + using namespace OC; struct dereference_compare diff --git a/resource/examples/simpleserver.cpp b/resource/examples/simpleserver.cpp index 97a6074..2b81008 100644 --- a/resource/examples/simpleserver.cpp +++ b/resource/examples/simpleserver.cpp @@ -22,7 +22,7 @@ /// This sample provides steps to define an interface for a resource /// (properties and methods) and host this resource on the server. /// - +#include #include #include diff --git a/resource/examples/simpleserverHQ.cpp b/resource/examples/simpleserverHQ.cpp index f9e439e..f3f017e 100644 --- a/resource/examples/simpleserverHQ.cpp +++ b/resource/examples/simpleserverHQ.cpp @@ -32,6 +32,11 @@ #include "OCPlatform.h" #include "OCApi.h" +#if defined(__msys_nt__) +#include +#define sleep(x) Sleep(1000*x) +#endif + using namespace OC; using namespace std; namespace PH = std::placeholders; @@ -214,9 +219,9 @@ public: } } - void addInterface(const std::string& interface) const + void addInterface(const std::string& iface) const { - OCStackResult result = OCPlatform::bindInterfaceToResource(m_resourceHandle, interface); + OCStackResult result = OCPlatform::bindInterfaceToResource(m_resourceHandle, iface); if (OC_STACK_OK != result) { cout << "Binding TypeName to Resource was unsuccessful\n"; diff --git a/resource/examples/threadingsample.cpp b/resource/examples/threadingsample.cpp index 994858e..effdb86 100644 --- a/resource/examples/threadingsample.cpp +++ b/resource/examples/threadingsample.cpp @@ -33,6 +33,12 @@ #include "OCPlatform.h" #include "OCApi.h" + +#if defined(__msys_nt__) +#include +#define sleep(x) Sleep(1000*x) +#endif + using namespace OC; static std::ostringstream requestURI; -- 2.7.4