add gettimeofday() compatibility function for windows

plugins that need that:
  - remotesink
  - remotesource
This commit is contained in:
Davide Gerhard 2019-05-27 16:51:15 +02:00
parent d49e28e266
commit f61d1c3908
No known key found for this signature in database
GPG Key ID: 7CBEFA144857DC97
9 changed files with 63 additions and 5 deletions

View File

@ -145,6 +145,10 @@ set(INSTALL_PLUGINS_DIR "${INSTALL_LIB_DIR}/plugins")
set(INSTALL_PLUGINSSRV_DIR "${INSTALL_LIB_DIR}/pluginssrv")
set(EXTERNAL_BUILD_LIBRARIES "${CMAKE_BINARY_DIR}/external")
# custom libraries
set(CUSTOM_APPLE_INCLUDE "${CMAKE_SOURCE_DIR}/custom/apple" CACHE INTERNAL "")
set(CUSTOM_WINDOWS_INCLUDE "${CMAKE_SOURCE_DIR}/custom/windows" CACHE INTERNAL "")
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
set(LINUX TRUE)
# populate distribution name

View File

@ -0,0 +1,44 @@
#if (defined _WIN32_) || (defined _MSC_VER)
/*
* missing gettimeofday implementation
* for windows; based on postgresql
*/
#ifndef CUSTOM_WINDOWS_TIME_H_
#define CUSTOM_WINDOWS_TIME_H_
#define _WINSOCKAPI_ // stops windows.h including winsock.h; timeval redefine
#include <Windows.h>
#include <stdint.h> // portable: uint64_t MSVC: __int64
// MSVC defines this in winsock2.h!?
typedef struct timeval {
long tv_sec;
long tv_usec;
} timeval;
int gettimeofday(struct timeval * tp, struct timezone * tzp)
{
// Note: some broken versions only have 8 trailing zero's, the correct epoch has 9 trailing zero's
// This magic number is the number of 100 nanosecond intervals since January 1, 1601 (UTC)
// until 00:00:00 January 1, 1970
static const uint64_t EPOCH = ((uint64_t) 116444736000000000ULL);
SYSTEMTIME system_time;
FILETIME file_time;
uint64_t time;
GetSystemTime( &system_time );
SystemTimeToFileTime( &system_time, &file_time );
time = ((uint64_t)file_time.dwLowDateTime ) ;
time += ((uint64_t)file_time.dwHighDateTime) << 32;
tp->tv_sec = (long) ((time - EPOCH) / 10000000L);
tp->tv_usec = (long) (system_time.wMilliseconds * 1000);
return 0;
}
#endif // CUSTOM_WINDOWS_TIME_H_
#endif // _WIN32_

View File

@ -7,7 +7,6 @@ set(fcdhid_SOURCES
)
set(fcdhid_HEADERS
../custom/apple/apple_compat.h
fcdhid.h
hid-libusb.h
hidapi.h
@ -16,6 +15,7 @@ set(fcdhid_HEADERS
include_directories(
${LIBUSB_INCLUDE_DIR}
${ICONV_INCLUDE_DIR}
${CUSTOM_APPLE_INCLUDE}
)
add_library(fcdhid SHARED

View File

@ -69,9 +69,7 @@ extern "C" {
* MacOS does not implement POSIX Thread Barriers
*/
#ifdef __APPLE__
#include "../custom/apple/apple_compat.h"
#include "apple_compat.h"
#endif
/* Uncomment to enable the retrieval of Usage and Usage Page in

View File

@ -27,6 +27,7 @@ include_directories(
${CMAKE_SOURCE_DIR}/swagger/sdrangel/code/qt5/client
${Boost_INCLUDE_DIRS}
${CM256CC_INCLUDE_DIR}
${CUSTOM_WINDOWS_INCLUDE}
)
if(NOT SERVER_MODE)

View File

@ -23,8 +23,13 @@
#include "remotesink.h"
#if (defined _WIN32_) || (defined _MSC_VER)
#include "windows_time.h"
#include <stdint.h>
#else
#include <sys/time.h>
#include <unistd.h>
#endif
#include <boost/crc.hpp>
#include <boost/cstdint.hpp>

View File

@ -27,6 +27,7 @@ include_directories(
${CMAKE_SOURCE_DIR}/swagger/sdrangel/code/qt5/client
${Boost_INCLUDE_DIRS}
${CM256CC_INCLUDE_DIR}
${CUSTOM_WINDOWS_INCLUDE}
)
if(NOT SERVER_MODE)

View File

@ -17,8 +17,13 @@
#include "remotesource.h"
#if (defined _WIN32_) || (defined _MSC_VER)
#include "windows_time.h"
#include <stdint.h>
#else
#include <sys/time.h>
#include <unistd.h>
#endif
#include <boost/crc.hpp>
#include <boost/cstdint.hpp>

View File

@ -61,7 +61,7 @@
#endif // RTP_HAVE_VSUINT64SUFFIX
#ifdef __APPLE__
#include "../custom/apple/apple_compat.h"
#include "../custom/apple/apple_compat.h"
#endif
namespace qrtplib