diff --git a/src/rf625.cpp b/src/rf625.cpp index 24857b751b41a2db4185b8645fe17100e89215bd..7d3786a6763cbcb6134968da2a27d3b396211e5e 100644 --- a/src/rf625.cpp +++ b/src/rf625.cpp @@ -203,6 +203,7 @@ rf625::rf625(const rf625_info &info) , m_buf(nullptr) , m_callback(nullptr) , m_thread(nullptr) + , m_callback_mx(new std::mutex()) { int nret; memcpy(&m_info, &info, sizeof(m_info)); @@ -863,12 +864,12 @@ void rf625::udp_proc() while(m_callback != nullptr) { if (udp_get_result(profile)) { - if(m_callback_mx.try_lock()) + if(m_callback_mx->try_lock()) { if (m_callback) m_callback(profile); - m_callback_mx.unlock(); + m_callback_mx->unlock(); } } } @@ -879,7 +880,7 @@ void rf625::udp_register_callback(rf625_udp_proc proc) if(m_callback) udp_unregister_callback(); - std::lock_guard g(m_callback_mx); + std::lock_guard g(*m_callback_mx); m_callback = proc; m_thread = new std::thread(&rf625::udp_proc, this); @@ -887,7 +888,7 @@ void rf625::udp_register_callback(rf625_udp_proc proc) void rf625::udp_unregister_callback() { - m_callback_mx.lock(); + m_callback_mx->lock(); if (m_callback) { m_callback = nullptr; @@ -896,7 +897,7 @@ void rf625::udp_unregister_callback() m_thread = nullptr; } - m_callback_mx.unlock(); + m_callback_mx->unlock(); } /*! Main routine for processing broadcast commands diff --git a/src/rf625.h b/src/rf625.h index 4b4ee11b61ed1db7a29c72e29027dc69a3aff240..430fc07731849006c8f430fc9aee4b269e9e3d80 100644 --- a/src/rf625.h +++ b/src/rf625.h @@ -28,7 +28,6 @@ #include #include #include -#include #define INVALID_SOCKET (-1) typedef int SOCKET; #endif @@ -39,7 +38,7 @@ typedef int SOCKET; #define RF625_API_VERSION (0x00040000) -#if (defined _WIN32 && defined RF625_LIBRARY) +#if (defined _WIN32 && defined RF625_LIBRARY && !defined TEST) #define RF625_API __declspec(dllexport) #else #define RF625_API @@ -194,7 +193,7 @@ struct rf625_profile }; class rf625; -typedef std::vector> rf625_list; +using rf625_list = std::vector>; typedef void (*rf625_udp_proc)(rf625_profile profile); @@ -366,7 +365,7 @@ private: uint8_t* m_buf; rf625_udp_proc m_callback; std::thread* m_thread; - std::mutex m_callback_mx; + std::mutex* m_callback_mx; void udp_proc(); }; diff --git a/src/wshlp.cpp b/src/wshlp.cpp index 5542024f28888a9baf7852d499a4056159d0f3d7..311ed91bb4c616dbd5fef5fbdd1fe987e2b7d3bb 100644 --- a/src/wshlp.cpp +++ b/src/wshlp.cpp @@ -11,7 +11,20 @@ /************************************************** */ char* _ifs[64]; -unsigned int _ifs_cnt; +int _ifs_cnt; + +int GetAdaptersCount() +{ + return _ifs_cnt; +} + +const char* GetAdapterAddress(int index) +{ + if (index >= 0 && index < _ifs_cnt) { + return _ifs[index]; + } + return NULL; +} BOOL WinSockInit() {