From f658e97ed0e2768d084f7d2972ac5e4c1e92dd33 Mon Sep 17 00:00:00 2001 From: Hayodea Hekol Date: Thu, 30 Oct 2025 11:49:54 -0400 Subject: [PATCH] livoxProto1: export getReturnModeReq; cache result in Device --- commonLibs/livoxProto1/device.cpp | 2 ++ commonLibs/livoxProto1/device.h | 11 +++++++++++ commonLibs/livoxProto1/livoxProto1.cpp | 14 ++++++++++++++ commonLibs/livoxProto1/livoxProto1.h | 6 ++++++ 4 files changed, 33 insertions(+) diff --git a/commonLibs/livoxProto1/device.cpp b/commonLibs/livoxProto1/device.cpp index 57aa4a8..0e92464 100644 --- a/commonLibs/livoxProto1/device.cpp +++ b/commonLibs/livoxProto1/device.cpp @@ -2124,6 +2124,7 @@ public: return; } + device.currentReturnMode = Device::ReturnMode(context->returnMode); context->callOriginalCallback(true); } @@ -2369,6 +2370,7 @@ public: return; } + device.currentReturnMode = Device::ReturnMode(response->mode); context->callOriginalCallback(true, response->mode); } diff --git a/commonLibs/livoxProto1/device.h b/commonLibs/livoxProto1/device.h index 4d795f9..73b3b78 100644 --- a/commonLibs/livoxProto1/device.h +++ b/commonLibs/livoxProto1/device.h @@ -103,6 +103,14 @@ private: class GetReturnModeReq; public: + enum class ReturnMode : uint8_t + { + SingleFirst = 0x00, + SingleStrongest = 0x01, + Dual = 0x02, + Triple = 0x03 + }; + // Utility methods std::optional getSmoIp(const std::string& deviceIP); @@ -158,6 +166,9 @@ public: std::unique_ptr pcloudDataSocketDesc; std::atomic pcloudDataActive; + // Cached last-known return mode for this device + ReturnMode currentReturnMode = ReturnMode::SingleFirst; + public: // UDP datagram handling void handleUdpDgram( diff --git a/commonLibs/livoxProto1/livoxProto1.cpp b/commonLibs/livoxProto1/livoxProto1.cpp index 7c185e9..dd01338 100644 --- a/commonLibs/livoxProto1/livoxProto1.cpp +++ b/commonLibs/livoxProto1/livoxProto1.cpp @@ -90,4 +90,18 @@ void livoxProto1_device_disablePcloudDataReq( device->disablePcloudDataReq(callback); } +void livoxProto1_device_getReturnModeReq( + std::shared_ptr device, + smo::Callback callback +) +{ + if (!device) + { + throw std::runtime_error(std::string(__func__) + + ": Device pointer is null"); + } + + device->getReturnModeReq(callback); +} + } // extern "C" diff --git a/commonLibs/livoxProto1/livoxProto1.h b/commonLibs/livoxProto1/livoxProto1.h index b054411..b6ba497 100644 --- a/commonLibs/livoxProto1/livoxProto1.h +++ b/commonLibs/livoxProto1/livoxProto1.h @@ -79,6 +79,11 @@ typedef void livoxProto1_device_disablePcloudDataReqFn( std::shared_ptr device, smo::Callback callback); +typedef std::function + livoxProto1_device_getReturnModeReqCbFn; +typedef void livoxProto1_device_getReturnModeReqFn( + std::shared_ptr device, + smo::Callback callback); livoxProto1_mainFn livoxProto1_main; livoxProto1_exitFn livoxProto1_exit; @@ -87,6 +92,7 @@ livoxProto1_destroyDeviceReqFn livoxProto1_destroyDeviceReq; livoxProto1_device_enablePcloudDataReqFn livoxProto1_device_enablePcloudDataReq; livoxProto1_device_disablePcloudDataReqFn livoxProto1_device_disablePcloudDataReq; +livoxProto1_device_getReturnModeReqFn livoxProto1_device_getReturnModeReq; #ifdef __cplusplus }