From ed40a6e9009a64085e502281f0d000c6c4156c0b Mon Sep 17 00:00:00 2001 From: Livox-SDK Date: Tue, 20 Apr 2021 12:20:54 +0800 Subject: [PATCH] fix: retry to query device info when command timeout --- sdk_core/src/device_manager.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/sdk_core/src/device_manager.cpp b/sdk_core/src/device_manager.cpp index ee4eed9..4c3414d 100644 --- a/sdk_core/src/device_manager.cpp +++ b/sdk_core/src/device_manager.cpp @@ -160,6 +160,18 @@ void DeviceManager::HubLidarInfomationCallback(livox_status status, uint8_t, Hub if (connected_cb_) { connected_cb_(&(devices_[kHubDefaultHandle].info), kEventHubConnectionChange); } + } else if (status == kStatusTimeout) { + LOG_WARN("Query lidars information Timeout."); + if (IsDeviceConnected(kHubDefaultHandle)) { + LOG_INFO("Retry to query lidars information."); + command_handler().SendCommand(kHubDefaultHandle, + kCommandSetHub, + kCommandIDHubQueryLidarInformation, + NULL, + 0, + MakeCommandCallback( + this, &DeviceManager::HubLidarInfomationCallback)); + } } else { LOG_ERROR("Failed to query lidars information connected to hub."); } @@ -178,6 +190,18 @@ void DeviceManager::QueryDeviceInformationCallback(livox_status status, uint8_t if (connected_cb_) { connected_cb_(&devices_[handle].info, kEventConnect); } + } else if (status == kStatusTimeout) { + LOG_WARN("Query lidar information Timeout."); + if (IsDeviceConnected(handle)) { + LOG_INFO("Retry to query lidar information."); + command_handler().SendCommand(handle, + kCommandSetGeneral, + kCommandIDGeneralDeviceInfo, + NULL, + 0, + MakeCommandCallback( + this, &DeviceManager::QueryDeviceInformationCallback)); + } } else { LOG_ERROR("Failed to query lidar information."); }