diff --git a/README.md b/README.md
index 2dc72c1d..bea5ba5b 100644
--- a/README.md
+++ b/README.md
@@ -25,22 +25,26 @@ There're two ways to run rplidar ros package
I. Run rplidar node and view in the rviz
------------------------------------------------------------
roslaunch rplidar_ros view_rplidar.launch (for RPLIDAR A1/A2)
-or
+,
roslaunch rplidar_ros view_rplidar_a3.launch (for RPLIDAR A3)
+or
+roslaunch rplidar_ros view_rplidar_s1launch (for RPLIDAR S1)
You should see rplidar's scan result in the rviz.
II. Run rplidar node and view using test application
------------------------------------------------------------
roslaunch rplidar_ros rplidar.launch (for RPLIDAR A1/A2)
-or
+,
roslaunch rplidar_ros rplidar_a3.launch (for RPLIDAR A3)
+or
+roslaunch rplidar_ros rplidar_s1.launch (for RPLIDAR S1)
rosrun rplidar_ros rplidarNodeClient
You should see rplidar's scan result in the console
-Notice: the different is serial_baudrate between A1/A2 and A3
+Notice: the different is serial_baudrate between A1/A2 and A3/S1
RPLidar frame
=====================================================================
diff --git a/launch/rplidar_s1.launch b/launch/rplidar_s1.launch
new file mode 100644
index 00000000..11753abd
--- /dev/null
+++ b/launch/rplidar_s1.launch
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/launch/view_rplidar_s1.launch b/launch/view_rplidar_s1.launch
new file mode 100644
index 00000000..e3c3127e
--- /dev/null
+++ b/launch/view_rplidar_s1.launch
@@ -0,0 +1,10 @@
+
+
+
+
+
+
diff --git a/package.xml b/package.xml
index 9954fde6..78c1a295 100644
--- a/package.xml
+++ b/package.xml
@@ -1,8 +1,8 @@
rplidar_ros
- 1.9.0
- The rplidar ros package, support rplidar A2/A1 and A3
+ 1.10.0
+ The rplidar ros package, support rplidar A2/A1 and A3/S1
Slamtec ROS Maintainer
BSD
diff --git a/sdk/README.txt b/sdk/README.txt
index 689bb8da..b05d81fd 100644
--- a/sdk/README.txt
+++ b/sdk/README.txt
@@ -1,5 +1,5 @@
Copyright (c) 2009 - 2014 RoboPeak Team
-Copyright (c) 2014 - 2018 Shanghai Slamtec Co., Ltd.
+Copyright (c) 2014 - 2019 Shanghai Slamtec Co., Ltd.
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -29,6 +29,6 @@ This folder contains RPLIDAR SDK source code which is provided by RoboPeak.
RoboPeak Website: http://www.robopeak.com
SlamTec HomePage: http://www.slamtec.com
-RPLIDAR_SDK_VERSION: 1.9.0
+RPLIDAR_SDK_VERSION: 1.10.0
Note: The SDK version may not up-to-date.
rplidar product: http://www.slamtec.com/en/Lidar
diff --git a/sdk/include/rplidar.h b/sdk/include/rplidar.h
index 660a5e1a..4e14aa06 100644
--- a/sdk/include/rplidar.h
+++ b/sdk/include/rplidar.h
@@ -3,7 +3,7 @@
*
* Copyright (c) 2009 - 2014 RoboPeak Team
* http://www.robopeak.com
- * Copyright (c) 2014 - 2018 Shanghai Slamtec Co., Ltd.
+ * Copyright (c) 2014 - 2019 Shanghai Slamtec Co., Ltd.
* http://www.slamtec.com
*
*/
@@ -41,4 +41,4 @@
#include "rplidar_driver.h"
-#define RPLIDAR_SDK_VERSION "1.9.0"
+#define RPLIDAR_SDK_VERSION "1.10.0"
diff --git a/sdk/include/rplidar_cmd.h b/sdk/include/rplidar_cmd.h
index 2aadfbb0..cfe07604 100644
--- a/sdk/include/rplidar_cmd.h
+++ b/sdk/include/rplidar_cmd.h
@@ -3,7 +3,7 @@
*
* Copyright (c) 2009 - 2014 RoboPeak Team
* http://www.robopeak.com
- * Copyright (c) 2014 - 2018 Shanghai Slamtec Co., Ltd.
+ * Copyright (c) 2014 - 2019 Shanghai Slamtec Co., Ltd.
* http://www.slamtec.com
*
*/
@@ -127,7 +127,7 @@ typedef struct _rplidar_payload_acc_board_flag_t {
//added in FW ver 1.24
#define RPLIDAR_ANS_TYPE_GET_LIDAR_CONF 0x20
#define RPLIDAR_ANS_TYPE_SET_LIDAR_CONF 0x21
-
+#define RPLIDAR_ANS_TYPE_MEASUREMENT_DENSE_CAPSULED 0x85
#define RPLIDAR_ANS_TYPE_ACC_BOARD_FLAG 0xFF
#define RPLIDAR_RESP_ACC_BOARD_FLAG_MOTOR_CTRL_SUPPORT_MASK (0x1)
@@ -183,6 +183,18 @@ typedef struct _rplidar_response_capsule_measurement_nodes_t {
_u16 start_angle_sync_q6;
rplidar_response_cabin_nodes_t cabins[16];
} __attribute__((packed)) rplidar_response_capsule_measurement_nodes_t;
+
+typedef struct _rplidar_response_dense_cabin_nodes_t {
+ _u16 distance;
+} __attribute__((packed)) rplidar_response_dense_cabin_nodes_t;
+
+typedef struct _rplidar_response_dense_capsule_measurement_nodes_t {
+ _u8 s_checksum_1; // see [s_checksum_1]
+ _u8 s_checksum_2; // see [s_checksum_1]
+ _u16 start_angle_sync_q6;
+ rplidar_response_dense_cabin_nodes_t cabins[40];
+} __attribute__((packed)) rplidar_response_dense_capsule_measurement_nodes_t;
+
// ext1 : x2 boost mode
#define RPLIDAR_RESP_MEASUREMENT_EXP_ULTRA_MAJOR_BITS 12
diff --git a/sdk/include/rplidar_driver.h b/sdk/include/rplidar_driver.h
index 8db32280..b73b8459 100644
--- a/sdk/include/rplidar_driver.h
+++ b/sdk/include/rplidar_driver.h
@@ -3,7 +3,7 @@
*
* Copyright (c) 2009 - 2014 RoboPeak Team
* http://www.robopeak.com
- * Copyright (c) 2014 - 2018 Shanghai Slamtec Co., Ltd.
+ * Copyright (c) 2014 - 2019 Shanghai Slamtec Co., Ltd.
* http://www.slamtec.com
*
*/
@@ -132,6 +132,7 @@ class RPlidarDriver {
/// \param timeout The operation timeout value (in millisecond) for the serial port communication
virtual u_result reset(_u32 timeout = DEFAULT_TIMEOUT) = 0;
+ virtual u_result clearNetSerialRxCache() = 0;
// FW1.24
/// Get all scan modes that supported by lidar
virtual u_result getAllSupportedScanModes(std::vector& outModes, _u32 timeoutInMs = DEFAULT_TIMEOUT) = 0;
diff --git a/sdk/include/rplidar_protocol.h b/sdk/include/rplidar_protocol.h
index be2dba34..2f8231b7 100644
--- a/sdk/include/rplidar_protocol.h
+++ b/sdk/include/rplidar_protocol.h
@@ -3,7 +3,7 @@
*
* Copyright (c) 2009 - 2014 RoboPeak Team
* http://www.robopeak.com
- * Copyright (c) 2014 - 2018 Shanghai Slamtec Co., Ltd.
+ * Copyright (c) 2014 - 2019 Shanghai Slamtec Co., Ltd.
* http://www.slamtec.com
*
*/
diff --git a/sdk/include/rptypes.h b/sdk/include/rptypes.h
index 5036eeff..34d8ecb1 100644
--- a/sdk/include/rptypes.h
+++ b/sdk/include/rptypes.h
@@ -3,7 +3,7 @@
*
* Copyright (c) 2009 - 2014 RoboPeak Team
* http://www.robopeak.com
- * Copyright (c) 2014 - 2018 Shanghai Slamtec Co., Ltd.
+ * Copyright (c) 2014 - 2019 Shanghai Slamtec Co., Ltd.
* http://www.slamtec.com
*
*/
diff --git a/sdk/src/arch/win32/arch_win32.h b/sdk/src/arch/win32/arch_win32.h
index d17b0b41..10852f36 100644
--- a/sdk/src/arch/win32/arch_win32.h
+++ b/sdk/src/arch/win32/arch_win32.h
@@ -3,7 +3,7 @@
*
* Copyright (c) 2009 - 2014 RoboPeak Team
* http://www.robopeak.com
- * Copyright (c) 2014 - 2018 Shanghai Slamtec Co., Ltd.
+ * Copyright (c) 2014 - 2019 Shanghai Slamtec Co., Ltd.
* http://www.slamtec.com
*
*/
diff --git a/sdk/src/arch/win32/net_serial.cpp b/sdk/src/arch/win32/net_serial.cpp
index a0a68247..7a35a172 100644
--- a/sdk/src/arch/win32/net_serial.cpp
+++ b/sdk/src/arch/win32/net_serial.cpp
@@ -3,7 +3,7 @@
*
* Copyright (c) 2009 - 2014 RoboPeak Team
* http://www.robopeak.com
- * Copyright (c) 2014 - 2018 Shanghai Slamtec Co., Ltd.
+ * Copyright (c) 2014 - 2019 Shanghai Slamtec Co., Ltd.
* http://www.slamtec.com
*
*/
diff --git a/sdk/src/arch/win32/net_serial.h b/sdk/src/arch/win32/net_serial.h
index ffa4265d..a390f94c 100644
--- a/sdk/src/arch/win32/net_serial.h
+++ b/sdk/src/arch/win32/net_serial.h
@@ -3,7 +3,7 @@
*
* Copyright (c) 2009 - 2014 RoboPeak Team
* http://www.robopeak.com
- * Copyright (c) 2014 - 2018 Shanghai Slamtec Co., Ltd.
+ * Copyright (c) 2014 - 2019 Shanghai Slamtec Co., Ltd.
* http://www.slamtec.com
*
*/
diff --git a/sdk/src/arch/win32/timer.cpp b/sdk/src/arch/win32/timer.cpp
index f85a15b1..b95c0542 100644
--- a/sdk/src/arch/win32/timer.cpp
+++ b/sdk/src/arch/win32/timer.cpp
@@ -3,7 +3,7 @@
*
* Copyright (c) 2009 - 2014 RoboPeak Team
* http://www.robopeak.com
- * Copyright (c) 2014 - 2018 Shanghai Slamtec Co., Ltd.
+ * Copyright (c) 2014 - 2019 Shanghai Slamtec Co., Ltd.
* http://www.slamtec.com
*
*/
diff --git a/sdk/src/arch/win32/timer.h b/sdk/src/arch/win32/timer.h
index 11bba613..59b3982f 100644
--- a/sdk/src/arch/win32/timer.h
+++ b/sdk/src/arch/win32/timer.h
@@ -3,7 +3,7 @@
*
* Copyright (c) 2009 - 2014 RoboPeak Team
* http://www.robopeak.com
- * Copyright (c) 2014 - 2018 Shanghai Slamtec Co., Ltd.
+ * Copyright (c) 2014 - 2019 Shanghai Slamtec Co., Ltd.
* http://www.slamtec.com
*
*/
diff --git a/sdk/src/arch/win32/winthread.hpp b/sdk/src/arch/win32/winthread.hpp
index 673eeaf2..604f1d39 100644
--- a/sdk/src/arch/win32/winthread.hpp
+++ b/sdk/src/arch/win32/winthread.hpp
@@ -3,7 +3,7 @@
*
* Copyright (c) 2009 - 2014 RoboPeak Team
* http://www.robopeak.com
- * Copyright (c) 2014 - 2018 Shanghai Slamtec Co., Ltd.
+ * Copyright (c) 2014 - 2019 Shanghai Slamtec Co., Ltd.
* http://www.slamtec.com
*
*/
diff --git a/sdk/src/hal/abs_rxtx.h b/sdk/src/hal/abs_rxtx.h
index 4cb7832d..3c0e8373 100644
--- a/sdk/src/hal/abs_rxtx.h
+++ b/sdk/src/hal/abs_rxtx.h
@@ -3,7 +3,7 @@
*
* Copyright (c) 2009 - 2014 RoboPeak Team
* http://www.robopeak.com
- * Copyright (c) 2014 - 2018 Shanghai Slamtec Co., Ltd.
+ * Copyright (c) 2014 - 2019 Shanghai Slamtec Co., Ltd.
* http://www.slamtec.com
*
*/
diff --git a/sdk/src/hal/event.h b/sdk/src/hal/event.h
index 27362eeb..5e05234d 100644
--- a/sdk/src/hal/event.h
+++ b/sdk/src/hal/event.h
@@ -3,7 +3,7 @@
*
* Copyright (c) 2009 - 2014 RoboPeak Team
* http://www.robopeak.com
- * Copyright (c) 2014 - 2018 Shanghai Slamtec Co., Ltd.
+ * Copyright (c) 2014 - 2019 Shanghai Slamtec Co., Ltd.
* http://www.slamtec.com
*
*/
diff --git a/sdk/src/hal/locker.h b/sdk/src/hal/locker.h
index ce8d98ff..d7a13fbf 100644
--- a/sdk/src/hal/locker.h
+++ b/sdk/src/hal/locker.h
@@ -3,7 +3,7 @@
*
* Copyright (c) 2009 - 2014 RoboPeak Team
* http://www.robopeak.com
- * Copyright (c) 2014 - 2018 Shanghai Slamtec Co., Ltd.
+ * Copyright (c) 2014 - 2019 Shanghai Slamtec Co., Ltd.
* http://www.slamtec.com
*
*/
diff --git a/sdk/src/hal/thread.cpp b/sdk/src/hal/thread.cpp
index 28064af3..16ccb905 100644
--- a/sdk/src/hal/thread.cpp
+++ b/sdk/src/hal/thread.cpp
@@ -3,7 +3,7 @@
*
* Copyright (c) 2009 - 2014 RoboPeak Team
* http://www.robopeak.com
- * Copyright (c) 2014 - 2018 Shanghai Slamtec Co., Ltd.
+ * Copyright (c) 2014 - 2019 Shanghai Slamtec Co., Ltd.
* http://www.slamtec.com
*
*/
diff --git a/sdk/src/hal/thread.h b/sdk/src/hal/thread.h
index 167c5a4c..94074b8c 100644
--- a/sdk/src/hal/thread.h
+++ b/sdk/src/hal/thread.h
@@ -3,7 +3,7 @@
*
* Copyright (c) 2009 - 2014 RoboPeak Team
* http://www.robopeak.com
- * Copyright (c) 2014 - 2018 Shanghai Slamtec Co., Ltd.
+ * Copyright (c) 2014 - 2019 Shanghai Slamtec Co., Ltd.
* http://www.slamtec.com
*
*/
diff --git a/sdk/src/hal/util.h b/sdk/src/hal/util.h
index 72700aab..2882b1d6 100644
--- a/sdk/src/hal/util.h
+++ b/sdk/src/hal/util.h
@@ -3,7 +3,7 @@
*
* Copyright (c) 2009 - 2014 RoboPeak Team
* http://www.robopeak.com
- * Copyright (c) 2014 - 2018 Shanghai Slamtec Co., Ltd.
+ * Copyright (c) 2014 - 2019 Shanghai Slamtec Co., Ltd.
* http://www.slamtec.com
*
*/
diff --git a/sdk/src/rplidar_driver.cpp b/sdk/src/rplidar_driver.cpp
index c8a08b82..1cc6774f 100644
--- a/sdk/src/rplidar_driver.cpp
+++ b/sdk/src/rplidar_driver.cpp
@@ -3,7 +3,7 @@
*
* Copyright (c) 2009 - 2014 RoboPeak Team
* http://www.robopeak.com
- * Copyright (c) 2014 - 2018 Shanghai Slamtec Co., Ltd.
+ * Copyright (c) 2014 - 2019 Shanghai Slamtec Co., Ltd.
* http://www.slamtec.com
*
*/
@@ -132,6 +132,16 @@ u_result RPlidarDriverImplCommon::reset(_u32 timeout)
return RESULT_OK;
}
+
+u_result RPlidarDriverImplCommon::clearNetSerialRxCache()
+{
+ if (!isConnected()) return RESULT_OPERATION_FAIL;
+
+ _chanDev->flush();
+
+ return RESULT_OK;
+}
+
u_result RPlidarDriverImplCommon::_waitResponseHeader(rplidar_ans_header_t * header, _u32 timeout)
{
int recvPos = 0;
@@ -671,9 +681,17 @@ u_result RPlidarDriverImplCommon::_cacheCapsuledScanData()
continue;
}
}
+ switch (_cached_express_flag)
+ {
+ case 0:
+ _capsuleToNormal(capsule_node, local_buf, count);
+ break;
+ case 1:
+ _dense_capsuleToNormal(capsule_node, local_buf, count);
+ break;
+ }
+ //
- _capsuleToNormal(capsule_node, local_buf, count);
-
for (size_t pos = 0; pos < count; ++pos)
{
if (local_buf[pos].flag & RPLIDAR_RESP_MEASUREMENT_SYNCBIT)
@@ -821,7 +839,55 @@ void RPlidarDriverImplCommon::_capsuleToNormal(const rplidar_response_capsul
_is_previous_capsuledataRdy = true;
}
-//*******************************************HQ support********************************
+void RPlidarDriverImplCommon::_dense_capsuleToNormal(const rplidar_response_capsule_measurement_nodes_t & capsule, rplidar_response_measurement_node_hq_t *nodebuffer, size_t &nodeCount)
+{
+ const rplidar_response_dense_capsule_measurement_nodes_t *dense_capsule = reinterpret_cast(&capsule);
+ nodeCount = 0;
+ if (_is_previous_capsuledataRdy) {
+ int diffAngle_q8;
+ int currentStartAngle_q8 = ((dense_capsule->start_angle_sync_q6 & 0x7FFF) << 2);
+ int prevStartAngle_q8 = ((_cached_previous_dense_capsuledata.start_angle_sync_q6 & 0x7FFF) << 2);
+
+ diffAngle_q8 = (currentStartAngle_q8)-(prevStartAngle_q8);
+ if (prevStartAngle_q8 > currentStartAngle_q8) {
+ diffAngle_q8 += (360 << 8);
+ }
+
+ int angleInc_q16 = (diffAngle_q8 << 8)/40;
+ int currentAngle_raw_q16 = (prevStartAngle_q8 << 8);
+ for (size_t pos = 0; pos < _countof(_cached_previous_dense_capsuledata.cabins); ++pos)
+ {
+ int dist_q2;
+ int angle_q6;
+ int syncBit;
+ const int dist = static_cast(_cached_previous_dense_capsuledata.cabins[pos].distance);
+ dist_q2 = dist << 2;
+ angle_q6 = (currentAngle_raw_q16 >> 10);
+ syncBit = (((currentAngle_raw_q16 + angleInc_q16) % (360 << 16)) < angleInc_q16) ? 1 : 0;
+ currentAngle_raw_q16 += angleInc_q16;
+
+ if (angle_q6 < 0) angle_q6 += (360 << 6);
+ if (angle_q6 >= (360 << 6)) angle_q6 -= (360 << 6);
+
+
+
+ rplidar_response_measurement_node_hq_t node;
+
+ node.angle_z_q14 = _u16((angle_q6 << 8) / 90);
+ node.flag = (syncBit | ((!syncBit) << 1));
+ node.quality = dist_q2 ? (0x2f << RPLIDAR_RESP_MEASUREMENT_QUALITY_SHIFT) : 0;
+ node.dist_mm_q2 = dist_q2;
+
+ nodebuffer[nodeCount++] = node;
+
+
+ }
+ }
+
+ _cached_previous_dense_capsuledata = *dense_capsule;
+ _is_previous_capsuledataRdy = true;
+}
+
u_result RPlidarDriverImplCommon::_cacheHqScanData()
{
rplidar_response_hq_capsule_measurement_nodes_t hq_node;
@@ -1601,6 +1667,8 @@ u_result RPlidarDriverImplCommon::startScanExpress(bool force, _u16 scanMode, _u
{
return RESULT_INVALID_DATA;
}
+
+
}
else
{
@@ -1618,9 +1686,13 @@ u_result RPlidarDriverImplCommon::startScanExpress(bool force, _u16 scanMode, _u
//get scan answer type to specify how to wait data
_u8 scanAnsType;
if (ifSupportLidarConf)
+ {
getScanModeAnsType(scanAnsType, scanMode);
+ }
else
+ {
scanAnsType = RPLIDAR_ANS_TYPE_MEASUREMENT_CAPSULED;
+ }
{
rp::hal::AutoLocker l(_lock);
@@ -1630,7 +1702,7 @@ u_result RPlidarDriverImplCommon::startScanExpress(bool force, _u16 scanMode, _u
if (scanMode != RPLIDAR_CONF_SCAN_COMMAND_STD && scanMode != RPLIDAR_CONF_SCAN_COMMAND_EXPRESS)
scanReq.working_mode = _u8(scanMode);
scanReq.working_flags = options;
-
+
if (IS_FAIL(ans = _sendCommand(RPLIDAR_CMD_EXPRESS_SCAN, &scanReq, sizeof(scanReq)))) {
return ans;
}
@@ -1647,22 +1719,32 @@ u_result RPlidarDriverImplCommon::startScanExpress(bool force, _u16 scanMode, _u
}
_u32 header_size = (response_header.size_q30_subtype & RPLIDAR_ANS_HEADER_SIZE_MASK);
-
+
if (scanAnsType == RPLIDAR_ANS_TYPE_MEASUREMENT_CAPSULED)
{
if (header_size < sizeof(rplidar_response_capsule_measurement_nodes_t)) {
return RESULT_INVALID_DATA;
}
+ _cached_express_flag = 0;
+ _isScanning = true;
+ _cachethread = CLASS_THREAD(RPlidarDriverImplCommon, _cacheCapsuledScanData);
+ }
+ else if (scanAnsType == RPLIDAR_ANS_TYPE_MEASUREMENT_DENSE_CAPSULED)
+ {
+ if (header_size < sizeof(rplidar_response_capsule_measurement_nodes_t)) {
+ return RESULT_INVALID_DATA;
+ }
+ _cached_express_flag = 1;
_isScanning = true;
_cachethread = CLASS_THREAD(RPlidarDriverImplCommon, _cacheCapsuledScanData);
- }else if(scanAnsType ==RPLIDAR_ANS_TYPE_MEASUREMENT_HQ ){
- if (header_size < sizeof(rplidar_response_hq_capsule_measurement_nodes_t)) {
+ }
+ else if (scanAnsType == RPLIDAR_ANS_TYPE_MEASUREMENT_HQ) {
+ if (header_size < sizeof(rplidar_response_hq_capsule_measurement_nodes_t)) {
return RESULT_INVALID_DATA;
}
- _isScanning = true;
- _cachethread = CLASS_THREAD(RPlidarDriverImplCommon, _cacheHqScanData);
-
- }
+ _isScanning = true;
+ _cachethread = CLASS_THREAD(RPlidarDriverImplCommon, _cacheHqScanData);
+ }
else
{
if (header_size < sizeof(rplidar_response_ultra_capsule_measurement_nodes_t)) {
diff --git a/sdk/src/rplidar_driver_TCP.h b/sdk/src/rplidar_driver_TCP.h
index 8de2343d..0bd7ffdb 100644
--- a/sdk/src/rplidar_driver_TCP.h
+++ b/sdk/src/rplidar_driver_TCP.h
@@ -3,7 +3,7 @@
*
* Copyright (c) 2009 - 2014 RoboPeak Team
* http://www.robopeak.com
- * Copyright (c) 2014 - 2018 Shanghai Slamtec Co., Ltd.
+ * Copyright (c) 2014 - 2019 Shanghai Slamtec Co., Ltd.
* http://www.slamtec.com
*
*/
diff --git a/sdk/src/rplidar_driver_impl.h b/sdk/src/rplidar_driver_impl.h
index b25cf3fa..a8db47d7 100644
--- a/sdk/src/rplidar_driver_impl.h
+++ b/sdk/src/rplidar_driver_impl.h
@@ -3,7 +3,7 @@
*
* Copyright (c) 2009 - 2014 RoboPeak Team
* http://www.robopeak.com
- * Copyright (c) 2014 - 2018 Shanghai Slamtec Co., Ltd.
+ * Copyright (c) 2014 - 2019 Shanghai Slamtec Co., Ltd.
* http://www.slamtec.com
*
*/
@@ -41,7 +41,7 @@ namespace rp { namespace standalone{ namespace rplidar {
virtual bool isConnected();
virtual u_result reset(_u32 timeout = DEFAULT_TIMEOUT);
-
+ virtual u_result clearNetSerialRxCache();
virtual u_result getAllSupportedScanModes(std::vector& outModes, _u32 timeoutInMs = DEFAULT_TIMEOUT);
virtual u_result getTypicalScanMode(_u16& outMode, _u32 timeoutInMs = DEFAULT_TIMEOUT);
virtual u_result checkSupportConfigCommands(bool& outSupport, _u32 timeoutInMs = DEFAULT_TIMEOUT);
@@ -56,6 +56,7 @@ namespace rp { namespace standalone{ namespace rplidar {
virtual u_result startScan(bool force, bool useTypicalScan, _u32 options = 0, RplidarScanMode* outUsedScanMode = NULL);
virtual u_result startScanExpress(bool force, _u16 scanMode, _u32 options = 0, RplidarScanMode* outUsedScanMode = NULL, _u32 timeout = DEFAULT_TIMEOUT);
+
virtual u_result getHealth(rplidar_response_device_health_t & health, _u32 timeout = DEFAULT_TIMEOUT);
virtual u_result getDeviceInfo(rplidar_response_device_info_t & info, _u32 timeout = DEFAULT_TIMEOUT);
virtual u_result getSampleDuration_uS(rplidar_response_sample_rate_t & rateInfo, _u32 timeout = DEFAULT_TIMEOUT);
@@ -87,6 +88,7 @@ namespace rp { namespace standalone{ namespace rplidar {
virtual u_result _cacheCapsuledScanData();
virtual u_result _waitCapsuledNode(rplidar_response_capsule_measurement_nodes_t & node, _u32 timeout = DEFAULT_TIMEOUT);
virtual void _capsuleToNormal(const rplidar_response_capsule_measurement_nodes_t & capsule, rplidar_response_measurement_node_hq_t *nodebuffer, size_t &nodeCount);
+ virtual void _dense_capsuleToNormal(const rplidar_response_capsule_measurement_nodes_t & capsule, rplidar_response_measurement_node_hq_t *nodebuffer, size_t &nodeCount);
//FW1.23
virtual u_result _cacheUltraCapsuledScanData();
@@ -109,12 +111,15 @@ namespace rp { namespace standalone{ namespace rplidar {
_u16 _cached_sampleduration_std;
_u16 _cached_sampleduration_express;
+ _u8 _cached_express_flag;
rplidar_response_capsule_measurement_nodes_t _cached_previous_capsuledata;
+ rplidar_response_dense_capsule_measurement_nodes_t _cached_previous_dense_capsuledata;
rplidar_response_ultra_capsule_measurement_nodes_t _cached_previous_ultracapsuledata;
rplidar_response_hq_capsule_measurement_nodes_t _cached_previous_Hqdata;
bool _is_previous_capsuledataRdy;
bool _is_previous_HqdataRdy;
+
rp::hal::Locker _lock;
diff --git a/sdk/src/rplidar_driver_serial.h b/sdk/src/rplidar_driver_serial.h
index 5ec017e4..abc1468a 100644
--- a/sdk/src/rplidar_driver_serial.h
+++ b/sdk/src/rplidar_driver_serial.h
@@ -3,7 +3,7 @@
*
* Copyright (c) 2009 - 2014 RoboPeak Team
* http://www.robopeak.com
- * Copyright (c) 2014 - 2018 Shanghai Slamtec Co., Ltd.
+ * Copyright (c) 2014 - 2019 Shanghai Slamtec Co., Ltd.
* http://www.slamtec.com
*
*/
diff --git a/sdk/src/sdkcommon.h b/sdk/src/sdkcommon.h
index afb53737..d025dfb1 100644
--- a/sdk/src/sdkcommon.h
+++ b/sdk/src/sdkcommon.h
@@ -3,7 +3,7 @@
*
* Copyright (c) 2009 - 2014 RoboPeak Team
* http://www.robopeak.com
- * Copyright (c) 2014 - 2018 Shanghai Slamtec Co., Ltd.
+ * Copyright (c) 2014 - 2019 Shanghai Slamtec Co., Ltd.
* http://www.slamtec.com
*
*/