From a156bd8e9d32492e43350d289360a270ba608cf0 Mon Sep 17 00:00:00 2001 From: pfilipch Date: Wed, 31 Jan 2018 14:24:07 +0300 Subject: [PATCH] move from github --- src/rf625.cpp | 11 ++++++----- src/rf625.h | 7 +++---- src/wshlp.cpp | 15 ++++++++++++++- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/rf625.cpp b/src/rf625.cpp index 24857b7..7d3786a 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 4b4ee11..430fc07 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 5542024..311ed91 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() { -- GitLab