[Win32] Add conditional compilation directives.
authorDaniel Ferguson <daniel.j.ferguson@intel.com>
Tue, 12 Jan 2016 00:30:11 +0000 (16:30 -0800)
committerDavid Antler <david.a.antler@intel.com>
Tue, 24 May 2016 20:36:17 +0000 (20:36 +0000)
Several places, mostly related to networking and examples, needed
conditional compilation directives inserted.

Change-Id: Iad8f39c8ac28e760f5e3ded39d9c79b089aae6d7
Signed-off-by: Daniel Ferguson <daniel.j.ferguson@intel.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/5507
Reviewed-by: David Antler <david.a.antler@intel.com>
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
23 files changed:
resource/c_common/ocrandom/include/ocrandom.h
resource/c_common/ocrandom/src/ocrandom.c
resource/csdk/connectivity/common/src/camutex_pthreads.c
resource/csdk/connectivity/inc/caadapterutils.h
resource/csdk/connectivity/lib/libcoap-4.1.1/address.h
resource/csdk/connectivity/lib/libcoap-4.1.1/config.h
resource/csdk/connectivity/lib/libcoap-4.1.1/net.c
resource/csdk/connectivity/src/adapter_util/caadapternetdtls.c
resource/csdk/connectivity/src/adapter_util/caadapterutils.c
resource/csdk/connectivity/src/caretransmission.c
resource/csdk/connectivity/src/ip_adapter/caipserver.c
resource/csdk/logger/include/logger.h
resource/csdk/logger/src/logger.c
resource/csdk/security/src/iotvticalendar.c
resource/csdk/stack/src/ocstack.c
resource/examples/lightserver.cpp
resource/examples/presenceclient.cpp
resource/examples/presenceserver.cpp
resource/examples/simpleclient.cpp
resource/examples/simpleclientHQ.cpp
resource/examples/simpleserver.cpp
resource/examples/simpleserverHQ.cpp
resource/examples/threadingsample.cpp

index e096fc5..7a91dea 100644 (file)
@@ -29,9 +29,9 @@
 extern "C" {
 #endif
 
-#if defined(__ANDROID__) || defined(__linux__)
+#ifndef ARDUINO
 #include <time.h>
-#elif defined ARDUINO
+#else
 // MEGA has 16 input pins whereas Due has only 12 input pins
 #define ANALOG_IN (10)
 #endif
index 95472b6..08c6777 100644 (file)
@@ -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 <stdlib.h>
@@ -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;
index 834886c..95ee2eb 100644 (file)
@@ -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)
         {
index cd3f102..cf22d0d 100644 (file)
 #include <jni.h>
 #endif
 
-#ifndef WITH_ARDUINO
+#if !defined(WITH_ARDUINO) && !defined(__msys_nt__)
 #include <sys/socket.h>
 #endif
 
+#if defined(_WIN32)
+#include <winsock2.h>
+#include <ws2tcpip.h>
+#endif
+
 #include "cacommon.h"
 #include "logger.h"
 #include "pdu.h"
index bb44a99..2a60272 100644 (file)
 #include <sys/socket.h>
 #endif
 
+#if defined(__msys_nt__)
+#include <winsock2.h>
+#include <ws2tcpip.h>
+#endif
+
 #ifdef WITH_ARDUINO
 #define DEV_ADDR_SIZE_MAX (16)
 #endif
index 71d396a..09f6583 100644 (file)
@@ -5,8 +5,8 @@
 /* #undef AC_APPLE_UNIVERSAL_BUILD */
 
 /* Define to 1 if you have the <arpa/inet.h> 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 <assert.h> header file. */
@@ -38,8 +38,8 @@
 #define HAVE_NETDB_H 1
 
 /* Define to 1 if you have the <netinet/in.h> 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. */
 #define HAVE_STRRCHR 1
 
 /* Define to 1 if you have the <syslog.h> 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 <sys/socket.h> 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 <sys/stat.h> header file. */
+//TODO:  arduino has this?? no i think.
 #define HAVE_SYS_STAT_H 1
 
 /* Define to 1 if you have the <sys/time.h> header file. */
@@ -93,7 +94,7 @@
 #endif
 
 /* Define to 1 if you have the <sys/unistd.h> header file. */
-#ifndef WITH_ARDUINO
+#if !defined(WITH_ARDUINO) && !defined(__msys_nt__)
 #define HAVE_SYS_UNISTD_H 1
 #endif
 
 #endif
 
 /* Define to 1 if you have the <unistd.h> header file. */
-#ifndef WITH_ARDUINO
+#if !defined(WITH_ARDUINO) && !defined(__msys_nt__)
 #define HAVE_UNISTD_H 1
 #endif
 
index 580729b..50ce531 100644 (file)
 #include <arpa/inet.h>
 #endif
 
+#if defined(_WIN32)
+#include <winsock2.h>
+#include <ws2tcpip.h>
+#endif
 #ifdef WITH_LWIP
 #include <lwip/pbuf.h>
 #include <lwip/udp.h>
index 0220863..e47fd40 100644 (file)
 #include "oic_string.h"
 #include "global.h"
 #include "timer.h"
+
+#if defined(__msys_nt__)
+#include <winsock2.h>
+#include <ws2tcpip.h>
+#else
 #include <netdb.h>
+#endif
 
 /* tinyDTLS library error code */
 #define TINY_DTLS_ERROR (-1)
index 83f24eb..5d71b54 100644 (file)
 #include "oic_malloc.h"
 #include <errno.h>
 
-#ifndef WITH_ARDUINO
+#if !defined(WITH_ARDUINO) && !defined(__msys_nt__)
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <netdb.h>
 #endif
 
+#if defined(__msys_nt__)
+#include <winsock2.h>
+#include <ws2tcpip.h>
+#endif
+
 #ifdef __ANDROID__
 #include <jni.h>
 #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
index 5fa8df9..4702f17 100644 (file)
@@ -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)
index 3d1c80a..837940b 100644 (file)
 #endif
 
 #include <sys/types.h>
+#if !defined(__msys_nt__)
 #include <sys/socket.h>
+#endif
+
+#if defined(__msys_nt__)
+#include <winsock2.h>
+#include <ws2def.h>
+#include <mswsock.h>
+#include <ws2tcpip.h>
+#endif
+
 #include <stdio.h>
 #include <unistd.h>
 #include <sys/types.h>
 #include <fcntl.h>
+#if !defined(__msys_nt__)
 #include <sys/select.h>
 #include <arpa/inet.h>
 #include <netinet/in.h>
 #include <net/if.h>
+#endif
 #include <errno.h>
 #ifdef __linux__
 #include <linux/netlink.h>
@@ -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");
     }
index 932221d..cbd7bbf 100644 (file)
@@ -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
index b2de15d..a92fd9a 100644 (file)
@@ -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 <stdarg.h>
 #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);
index d3b6cb1..2a47a44 100644 (file)
@@ -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))
index 3bd1d12..112ba82 100644 (file)
 #include "utlist.h"
 #include "pdu.h"
 
-#ifndef ARDUINO
+#if !defined(WITH_ARDUINO) && !defined(__msys_nt__)
 #include <arpa/inet.h>
 #endif
 
+#if defined(__msys_nt__)
+#include <winsock2.h>
+#endif
+
 #ifndef UINT32_MAX
 #define UINT32_MAX   (0xFFFFFFFFUL)
 #endif
index dd207d5..2fd5bb3 100644 (file)
@@ -24,6 +24,7 @@
 /// (properties and methods) and host this resource on the server.
 ///
 
+#include <unistd.h>
 #include <functional>
 
 #include <pthread.h>
index 3755b57..328e1e7 100644 (file)
@@ -25,7 +25,7 @@
 #include <pthread.h>
 #include <mutex>
 #include <condition_variable>
-
+#include <getopt.h>
 #include "OCPlatform.h"
 #include "OCApi.h"
 
index cad22ac..601e1d6 100644 (file)
 #include "OCPlatform.h"
 #include "OCApi.h"
 
+#if defined(__msys_nt__)
+#include <Windows.h>
+#define sleep(x) Sleep(1000*x)
+#endif
+
 using namespace OC;
 using namespace std;
 
index 07d55f0..c700714 100644 (file)
@@ -20,6 +20,7 @@
 
 // OCClient.cpp : Defines the entry point for the console application.
 //
+#include <unistd.h>
 #include <string>
 #include <map>
 #include <cstdlib>
index 86081f8..17f04a1 100644 (file)
 #include "OCPlatform.h"
 #include "OCApi.h"
 
+#if defined(__msys_nt__)
+#include <Windows.h>
+#define sleep(x) Sleep(1000*x)
+#endif
+
 using namespace OC;
 
 struct dereference_compare
index 97a6074..2b81008 100644 (file)
@@ -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 <unistd.h>
 #include <functional>
 
 #include <pthread.h>
index f9e439e..f3f017e 100644 (file)
 #include "OCPlatform.h"
 #include "OCApi.h"
 
+#if defined(__msys_nt__)
+#include <Windows.h>
+#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";
index 994858e..effdb86 100644 (file)
 
 #include "OCPlatform.h"
 #include "OCApi.h"
+
+#if defined(__msys_nt__)
+#include <Windows.h>
+#define sleep(x) Sleep(1000*x)
+#endif
+
 using namespace OC;
 
 static std::ostringstream requestURI;