From dd6c8de14479197e314270af8133f8a4cbe16ff9 Mon Sep 17 00:00:00 2001 From: "marvin.li" Date: Mon, 12 Dec 2022 18:31:25 +0800 Subject: [PATCH] release v1.0.0 --- .gitignore | 5 +- {common => 3rdparty}/rapidjson/allocators.h | 0 .../rapidjson/cursorstreamwrapper.h | 0 {common => 3rdparty}/rapidjson/document.h | 0 .../rapidjson/encodedstream.h | 0 {common => 3rdparty}/rapidjson/encodings.h | 0 {common => 3rdparty}/rapidjson/error/en.h | 0 {common => 3rdparty}/rapidjson/error/error.h | 0 .../rapidjson/filereadstream.h | 0 .../rapidjson/filewritestream.h | 0 {common => 3rdparty}/rapidjson/fwd.h | 0 .../rapidjson/internal/biginteger.h | 0 .../rapidjson/internal/clzll.h | 0 .../rapidjson/internal/diyfp.h | 0 .../rapidjson/internal/dtoa.h | 0 .../rapidjson/internal/ieee754.h | 0 .../rapidjson/internal/itoa.h | 0 .../rapidjson/internal/meta.h | 0 .../rapidjson/internal/pow10.h | 0 .../rapidjson/internal/regex.h | 0 .../rapidjson/internal/stack.h | 0 .../rapidjson/internal/strfunc.h | 0 .../rapidjson/internal/strtod.h | 0 .../rapidjson/internal/swap.h | 0 .../rapidjson/istreamwrapper.h | 0 3rdparty/rapidjson/license.txt | 57 + {common => 3rdparty}/rapidjson/memorybuffer.h | 0 {common => 3rdparty}/rapidjson/memorystream.h | 0 .../rapidjson/msinttypes/inttypes.h | 0 .../rapidjson/msinttypes/stdint.h | 0 .../rapidjson/ostreamwrapper.h | 0 {common => 3rdparty}/rapidjson/pointer.h | 0 {common => 3rdparty}/rapidjson/prettywriter.h | 0 {common => 3rdparty}/rapidjson/rapidjson.h | 0 {common => 3rdparty}/rapidjson/reader.h | 0 {common => 3rdparty}/rapidjson/schema.h | 0 {common => 3rdparty}/rapidjson/stream.h | 0 {common => 3rdparty}/rapidjson/stringbuffer.h | 0 {common => 3rdparty}/rapidjson/writer.h | 0 CHANGELOG.md | 22 + CMakeLists.txt | 338 + CMakeLists_ROS1.txt | 220 - LICENSE.txt | 414 + README.md | 376 +- build.sh | 26 +- common/FastCRC/FastCRC.h | 80 - common/FastCRC/FastCRC_tables.hpp | 201 - common/FastCRC/FastCRCsw.cpp | 143 - common/FastCRC/LICENSE.md | 21 - common/FastCRC/README.md | 56 - common/comm/comm_device.h | 71 - common/comm/comm_protocol.cpp | 224 - common/comm/comm_protocol.h | 105 - common/comm/gps_protocol.cpp | 125 - common/comm/gps_protocol.h | 79 - common/comm/protocol.h | 106 - common/comm/sdk_protocol.cpp | 134 - common/comm/sdk_protocol.h | 86 - common/rapidxml/rapidxml.hpp | 2457 --- common/rapidxml/rapidxml_iterators.hpp | 132 - common/rapidxml/rapidxml_print.hpp | 428 - common/rapidxml/rapidxml_utils.hpp | 101 - config/HAP_config.json | 43 + config/MID360_config.json | 42 + .../display_point_cloud_ROS1.rviz | 0 config/display_point_cloud_ROS2.rviz | 137 + config/mixed_HAP_MID360_config.json | 77 + config_ROS1/HAP_config.json | 43 - dedicated_sdk/CMakeLists.txt | 42 - dedicated_sdk/CMakeLists.txt.shared | 24 - dedicated_sdk/CMakeLists.txt.static | 42 - dedicated_sdk/build.sh | 77 - dedicated_sdk/livox_lidar_sdk/CMakeLists.txt | 19 - dedicated_sdk/livox_lidar_sdk/Doxyfile | 2567 --- dedicated_sdk/livox_lidar_sdk/LICENSE.txt | 325 - dedicated_sdk/livox_lidar_sdk/README.md | 237 - dedicated_sdk/livox_lidar_sdk/README_CN.md | 238 - .../livox_lidar_sdk/doc/images/1.png | Bin 5082 -> 0 bytes .../doc/images/broadcast_code.png | Bin 117381 -> 0 bytes .../livox_lidar_sdk/doc/images/sample.png | Bin 72917 -> 0 bytes .../livox_lidar_sdk/doc/images/sdk.png | Bin 24853 -> 0 bytes .../livox_lidar_sdk/doc/images/sdk_init.png | Bin 1660 -> 0 bytes .../livox_lidar_sdk/sdk_core/CMakeLists.txt | 110 - .../sdk_core/CMakeLists.txt.shared | 117 - .../sdk_core/CMakeLists.txt.static | 110 - .../sdk_core/include/comm/comm_port.h | 50 - .../sdk_core/include/comm/protocol.h | 92 - .../sdk_core/include/livox_lidar_api.h | 491 - .../sdk_core/include/livox_lidar_cfg.h | 49 - .../sdk_core/include/livox_lidar_def.h | 450 - .../include/third_party/FastCRC/FastCRC.h | 79 - .../include/third_party/cmdline/cmdline.h | 823 - .../include/third_party/spdlog/spdlog/async.h | 87 - .../third_party/spdlog/spdlog/async_logger.h | 73 - .../third_party/spdlog/spdlog/common.h | 246 - .../spdlog/spdlog/details/async_logger_impl.h | 110 - .../spdlog/spdlog/details/circular_q.h | 72 - .../spdlog/spdlog/details/console_globals.h | 74 - .../spdlog/spdlog/details/file_helper.h | 152 - .../spdlog/spdlog/details/fmt_helper.h | 122 - .../spdlog/spdlog/details/log_msg.h | 55 - .../spdlog/spdlog/details/logger_impl.h | 435 - .../spdlog/spdlog/details/mpmc_blocking_q.h | 121 - .../spdlog/spdlog/details/null_mutex.h | 45 - .../third_party/spdlog/spdlog/details/os.h | 421 - .../spdlog/spdlog/details/pattern_formatter.h | 1336 -- .../spdlog/spdlog/details/periodic_worker.h | 71 - .../spdlog/spdlog/details/registry.h | 285 - .../spdlog/spdlog/details/thread_pool.h | 238 - .../spdlog/spdlog/fmt/bin_to_hex.h | 172 - .../spdlog/spdlog/fmt/bundled/LICENSE.rst | 23 - .../spdlog/spdlog/fmt/bundled/chrono.h | 452 - .../spdlog/spdlog/fmt/bundled/color.h | 577 - .../spdlog/spdlog/fmt/bundled/core.h | 1502 -- .../spdlog/spdlog/fmt/bundled/format-inl.h | 972 - .../spdlog/spdlog/fmt/bundled/format.h | 3555 ---- .../spdlog/spdlog/fmt/bundled/locale.h | 77 - .../spdlog/spdlog/fmt/bundled/ostream.h | 153 - .../spdlog/spdlog/fmt/bundled/posix.h | 324 - .../spdlog/spdlog/fmt/bundled/printf.h | 855 - .../spdlog/spdlog/fmt/bundled/ranges.h | 308 - .../spdlog/spdlog/fmt/bundled/time.h | 160 - .../third_party/spdlog/spdlog/fmt/fmt.h | 25 - .../third_party/spdlog/spdlog/fmt/ostr.h | 18 - .../third_party/spdlog/spdlog/formatter.h | 20 - .../third_party/spdlog/spdlog/logger.h | 183 - .../spdlog/spdlog/sinks/android_sink.h | 121 - .../spdlog/spdlog/sinks/ansicolor_sink.h | 166 - .../spdlog/spdlog/sinks/base_sink.h | 69 - .../spdlog/spdlog/sinks/basic_file_sink.h | 75 - .../spdlog/spdlog/sinks/daily_file_sink.h | 141 - .../spdlog/spdlog/sinks/dist_sink.h | 94 - .../spdlog/spdlog/sinks/msvc_sink.h | 54 - .../spdlog/spdlog/sinks/null_sink.h | 49 - .../spdlog/spdlog/sinks/ostream_sink.h | 57 - .../spdlog/spdlog/sinks/rotating_file_sink.h | 164 - .../third_party/spdlog/spdlog/sinks/sink.h | 54 - .../spdlog/spdlog/sinks/stdout_color_sinks.h | 56 - .../spdlog/spdlog/sinks/stdout_sinks.h | 102 - .../spdlog/spdlog/sinks/syslog_sink.h | 94 - .../spdlog/spdlog/sinks/wincolor_sink.h | 143 - .../third_party/spdlog/spdlog/spdlog.h | 366 - .../third_party/spdlog/spdlog/tweakme.h | 152 - .../third_party/spdlog/spdlog/version.h | 12 - .../sdk_core/src/base/command_callback.h | 249 - .../sdk_core/src/base/io_loop.cpp | 131 - .../sdk_core/src/base/io_loop.h | 92 - .../sdk_core/src/base/io_thread.cpp | 61 - .../sdk_core/src/base/io_thread.h | 50 - .../sdk_core/src/base/logging.cpp | 59 - .../sdk_core/src/base/logging.h | 66 - .../src/base/multiple_io/multiple_io_base.cpp | 86 - .../src/base/multiple_io/multiple_io_base.h | 75 - .../base/multiple_io/multiple_io_epoll.cpp | 109 - .../src/base/multiple_io/multiple_io_epoll.h | 54 - .../base/multiple_io/multiple_io_factory.h | 58 - .../base/multiple_io/multiple_io_kqueue.cpp | 142 - .../src/base/multiple_io/multiple_io_kqueue.h | 54 - .../src/base/multiple_io/multiple_io_poll.cpp | 116 - .../src/base/multiple_io/multiple_io_poll.h | 55 - .../base/multiple_io/multiple_io_select.cpp | 123 - .../src/base/multiple_io/multiple_io_select.h | 54 - .../sdk_core/src/base/network/network_util.h | 61 - .../src/base/network/unix/network_util.cpp | 205 - .../src/base/network/win/network_util.cpp | 155 - .../sdk_core/src/base/noncopyable.h | 43 - .../sdk_core/src/base/thread_base.cpp | 55 - .../sdk_core/src/base/thread_base.h | 57 - .../src/base/wake_up/unix/wake_up_pipe.cpp | 118 - .../sdk_core/src/base/wake_up/wake_up_pipe.h | 48 - .../src/base/wake_up/win/wake_up_pipe.cpp | 134 - .../sdk_core/src/comm/CRC/Crc.cpp | 268 - .../sdk_core/src/comm/CRC/Crc.h | 61 - .../sdk_core/src/comm/CRC/Crc_Cfg.cpp | 328 - .../sdk_core/src/comm/CRC/Crc_Cfg.h | 123 - .../sdk_core/src/comm/comm_port.cpp | 58 - .../sdk_core/src/comm/define.h | 211 - .../sdk_core/src/comm/generate_seq.cpp | 46 - .../sdk_core/src/comm/generate_seq.h | 44 - .../sdk_core/src/comm/sdk_protocol.cpp | 160 - .../sdk_core/src/comm/sdk_protocol.h | 91 - .../src/command_handler/build_request.cpp | 359 - .../src/command_handler/build_request.h | 65 - .../src/command_handler/command_handler.h | 64 - .../src/command_handler/command_impl.cpp | 693 - .../src/command_handler/command_impl.h | 127 - .../general_command_handler.cpp | 619 - .../command_handler/general_command_handler.h | 137 - .../command_handler/hap_command_handler.cpp | 283 - .../src/command_handler/hap_command_handler.h | 92 - .../mid360_command_handler.cpp | 120 - .../command_handler/mid360_command_handler.h | 91 - .../command_handler/pa_command_handler.cpp | 118 - .../src/command_handler/pa_command_handler.h | 92 - .../parse_lidar_state_info.cpp | 451 - .../command_handler/parse_lidar_state_info.h | 81 - .../src/data_handler/data_handler.cpp | 131 - .../sdk_core/src/data_handler/data_handler.h | 91 - .../sdk_core/src/device_manager.cpp | 832 - .../sdk_core/src/device_manager.h | 199 - .../sdk_core/src/livox_lidar_sdk.cpp | 298 - .../sdk_core/src/params_check.cpp | 138 - .../sdk_core/src/params_check.h | 58 - .../sdk_core/src/parse_cfg_file.cpp | 303 - .../sdk_core/src/parse_cfg_file.h | 63 - .../third_party/FastCRC/FastCRC_tables.hpp | 241 - .../src/third_party/FastCRC/FastCRCsw.cpp | 154 - .../src/third_party/FastCRC/LICENSE.md | 21 - .../src/third_party/FastCRC/README.md | 56 - .../src/third_party/rapidjson/allocators.h | 308 - .../rapidjson/cursorstreamwrapper.h | 81 - .../src/third_party/rapidjson/document.h | 3309 ---- .../src/third_party/rapidjson/encodedstream.h | 407 - .../src/third_party/rapidjson/encodings.h | 816 - .../src/third_party/rapidjson/error/en.h | 104 - .../src/third_party/rapidjson/error/error.h | 186 - .../third_party/rapidjson/filereadstream.h | 123 - .../third_party/rapidjson/filewritestream.h | 128 - .../sdk_core/src/third_party/rapidjson/fwd.h | 170 - .../rapidjson/internal/biginteger.h | 295 - .../third_party/rapidjson/internal/clzll.h | 77 - .../third_party/rapidjson/internal/diyfp.h | 305 - .../src/third_party/rapidjson/internal/dtoa.h | 269 - .../third_party/rapidjson/internal/ieee754.h | 100 - .../src/third_party/rapidjson/internal/itoa.h | 288 - .../src/third_party/rapidjson/internal/meta.h | 243 - .../third_party/rapidjson/internal/pow10.h | 77 - .../third_party/rapidjson/internal/regex.h | 753 - .../third_party/rapidjson/internal/stack.h | 245 - .../third_party/rapidjson/internal/strfunc.h | 74 - .../third_party/rapidjson/internal/strtod.h | 303 - .../src/third_party/rapidjson/internal/swap.h | 50 - .../third_party/rapidjson/istreamwrapper.h | 161 - .../src/third_party/rapidjson/memorybuffer.h | 78 - .../src/third_party/rapidjson/memorystream.h | 84 - .../rapidjson/msinttypes/inttypes.h | 316 - .../third_party/rapidjson/msinttypes/stdint.h | 301 - .../third_party/rapidjson/ostreamwrapper.h | 96 - .../src/third_party/rapidjson/pointer.h | 1712 -- .../src/third_party/rapidjson/prettywriter.h | 333 - .../src/third_party/rapidjson/rapidjson.h | 719 - .../src/third_party/rapidjson/reader.h | 2458 --- .../src/third_party/rapidjson/schema.h | 2743 --- .../src/third_party/rapidjson/stream.h | 242 - .../src/third_party/rapidjson/stringbuffer.h | 130 - .../src/third_party/rapidjson/writer.h | 811 - dedicated_sdk/livox_sdk/CMakeLists.txt | 27 - dedicated_sdk/livox_sdk/Doxyfile | 2567 --- dedicated_sdk/livox_sdk/LICENSE.txt | 325 - dedicated_sdk/livox_sdk/README.md | 237 - dedicated_sdk/livox_sdk/README_CN.md | 238 - dedicated_sdk/livox_sdk/doc/images/1.png | Bin 5082 -> 0 bytes .../livox_sdk/doc/images/broadcast_code.png | Bin 117381 -> 0 bytes dedicated_sdk/livox_sdk/doc/images/sample.png | Bin 72917 -> 0 bytes dedicated_sdk/livox_sdk/doc/images/sdk.png | Bin 24853 -> 0 bytes .../livox_sdk/doc/images/sdk_init.png | Bin 1660 -> 0 bytes .../livox_sdk/sample/hub/CMakeLists.txt | 9 - dedicated_sdk/livox_sdk/sample/hub/main.c | 291 - .../sample/hub_lvx_file/CMakeLists.txt | 9 - .../sample/hub_lvx_file/lvx_file.cpp | 179 - .../livox_sdk/sample/hub_lvx_file/lvx_file.h | 119 - .../livox_sdk/sample/hub_lvx_file/main.cpp | 367 - .../livox_sdk/sample/lidar/CMakeLists.txt | 9 - dedicated_sdk/livox_sdk/sample/lidar/main.c | 283 - .../sample/lidar_lvx_file/CMakeLists.txt | 9 - .../sample/lidar_lvx_file/lvx_file.cpp | 206 - .../sample/lidar_lvx_file/lvx_file.h | 119 - .../livox_sdk/sample/lidar_lvx_file/main.cpp | 401 - .../third_party/rapidxml/rapidxml.hpp | 2596 --- .../rapidxml/rapidxml_iterators.hpp | 174 - .../third_party/rapidxml/rapidxml_print.hpp | 421 - .../third_party/rapidxml/rapidxml_utils.hpp | 122 - .../livox_sdk/sample_cc/hub/CMakeLists.txt | 9 - .../livox_sdk/sample_cc/hub/lds_hub.cpp | 571 - .../livox_sdk/sample_cc/hub/lds_hub.h | 136 - .../livox_sdk/sample_cc/hub/main.cpp | 78 - .../livox_sdk/sample_cc/lidar/CMakeLists.txt | 9 - .../livox_sdk/sample_cc/lidar/lds_lidar.cpp | 473 - .../livox_sdk/sample_cc/lidar/lds_lidar.h | 130 - .../livox_sdk/sample_cc/lidar/main.cpp | 83 - .../sample_cc/lidar_utc_sync/CMakeLists.txt | 13 - .../sample_cc/lidar_utc_sync/lds_lidar.cpp | 315 - .../sample_cc/lidar_utc_sync/lds_lidar.h | 97 - .../sample_cc/lidar_utc_sync/main.cpp | 106 - .../sample_cc/lidar_utc_sync/synchro.cpp | 352 - .../sample_cc/lidar_utc_sync/synchro.h | 120 - .../sample_cc/trouble_shooting/CMakeLists.txt | 9 - .../sample_cc/trouble_shooting/main.cpp | 94 - .../livox_sdk/sdk_core/CMakeLists.txt | 93 - .../livox_sdk/sdk_core/CMakeLists.txt.shared | 93 - .../livox_sdk/sdk_core/CMakeLists.txt.static | 93 - .../sdk_core/include/comm/comm_port.h | 72 - .../sdk_core/include/comm/protocol.h | 82 - .../livox_sdk/sdk_core/include/config.h | 49 - .../livox_sdk/sdk_core/include/livox_def.h | 1001 - .../livox_sdk/sdk_core/include/livox_sdk.h | 1158 -- .../include/third_party/FastCRC/FastCRC.h | 79 - .../include/third_party/cmdline/cmdline.h | 823 - .../include/third_party/spdlog/spdlog/async.h | 87 - .../third_party/spdlog/spdlog/async_logger.h | 73 - .../third_party/spdlog/spdlog/common.h | 246 - .../spdlog/spdlog/details/async_logger_impl.h | 110 - .../spdlog/spdlog/details/circular_q.h | 72 - .../spdlog/spdlog/details/console_globals.h | 74 - .../spdlog/spdlog/details/file_helper.h | 152 - .../spdlog/spdlog/details/fmt_helper.h | 122 - .../spdlog/spdlog/details/log_msg.h | 55 - .../spdlog/spdlog/details/logger_impl.h | 435 - .../spdlog/spdlog/details/mpmc_blocking_q.h | 121 - .../spdlog/spdlog/details/null_mutex.h | 45 - .../third_party/spdlog/spdlog/details/os.h | 421 - .../spdlog/spdlog/details/pattern_formatter.h | 1336 -- .../spdlog/spdlog/details/periodic_worker.h | 71 - .../spdlog/spdlog/details/registry.h | 285 - .../spdlog/spdlog/details/thread_pool.h | 238 - .../spdlog/spdlog/fmt/bin_to_hex.h | 172 - .../spdlog/spdlog/fmt/bundled/LICENSE.rst | 23 - .../spdlog/spdlog/fmt/bundled/chrono.h | 452 - .../spdlog/spdlog/fmt/bundled/color.h | 577 - .../spdlog/spdlog/fmt/bundled/core.h | 1502 -- .../spdlog/spdlog/fmt/bundled/format-inl.h | 972 - .../spdlog/spdlog/fmt/bundled/format.h | 3555 ---- .../spdlog/spdlog/fmt/bundled/locale.h | 77 - .../spdlog/spdlog/fmt/bundled/ostream.h | 153 - .../spdlog/spdlog/fmt/bundled/posix.h | 324 - .../spdlog/spdlog/fmt/bundled/printf.h | 855 - .../spdlog/spdlog/fmt/bundled/ranges.h | 308 - .../spdlog/spdlog/fmt/bundled/time.h | 160 - .../third_party/spdlog/spdlog/fmt/fmt.h | 25 - .../third_party/spdlog/spdlog/fmt/ostr.h | 18 - .../third_party/spdlog/spdlog/formatter.h | 20 - .../third_party/spdlog/spdlog/logger.h | 183 - .../spdlog/spdlog/sinks/android_sink.h | 121 - .../spdlog/spdlog/sinks/ansicolor_sink.h | 166 - .../spdlog/spdlog/sinks/base_sink.h | 69 - .../spdlog/spdlog/sinks/basic_file_sink.h | 75 - .../spdlog/spdlog/sinks/daily_file_sink.h | 141 - .../spdlog/spdlog/sinks/dist_sink.h | 94 - .../spdlog/spdlog/sinks/msvc_sink.h | 54 - .../spdlog/spdlog/sinks/null_sink.h | 49 - .../spdlog/spdlog/sinks/ostream_sink.h | 57 - .../spdlog/spdlog/sinks/rotating_file_sink.h | 164 - .../third_party/spdlog/spdlog/sinks/sink.h | 54 - .../spdlog/spdlog/sinks/stdout_color_sinks.h | 56 - .../spdlog/spdlog/sinks/stdout_sinks.h | 102 - .../spdlog/spdlog/sinks/syslog_sink.h | 94 - .../spdlog/spdlog/sinks/wincolor_sink.h | 143 - .../third_party/spdlog/spdlog/spdlog.h | 366 - .../third_party/spdlog/spdlog/tweakme.h | 152 - .../third_party/spdlog/spdlog/version.h | 12 - .../sdk_core/src/base/command_callback.h | 247 - .../livox_sdk/sdk_core/src/base/io_loop.cpp | 130 - .../livox_sdk/sdk_core/src/base/io_loop.h | 84 - .../livox_sdk/sdk_core/src/base/io_thread.cpp | 59 - .../livox_sdk/sdk_core/src/base/io_thread.h | 47 - .../livox_sdk/sdk_core/src/base/logging.cpp | 59 - .../livox_sdk/sdk_core/src/base/logging.h | 66 - .../src/base/multiple_io/multiple_io_base.cpp | 84 - .../src/base/multiple_io/multiple_io_base.h | 73 - .../base/multiple_io/multiple_io_epoll.cpp | 107 - .../src/base/multiple_io/multiple_io_epoll.h | 51 - .../base/multiple_io/multiple_io_factory.h | 56 - .../base/multiple_io/multiple_io_kqueue.cpp | 140 - .../src/base/multiple_io/multiple_io_kqueue.h | 52 - .../src/base/multiple_io/multiple_io_poll.cpp | 114 - .../src/base/multiple_io/multiple_io_poll.h | 53 - .../base/multiple_io/multiple_io_select.cpp | 121 - .../src/base/multiple_io/multiple_io_select.h | 52 - .../sdk_core/src/base/network/network_util.h | 58 - .../src/base/network/unix/network_util.cpp | 133 - .../src/base/network/win/network_util.cpp | 139 - .../livox_sdk/sdk_core/src/base/noncopyable.h | 40 - .../sdk_core/src/base/thread_base.cpp | 52 - .../livox_sdk/sdk_core/src/base/thread_base.h | 55 - .../src/base/wake_up/unix/wake_up_pipe.cpp | 115 - .../sdk_core/src/base/wake_up/wake_up_pipe.h | 45 - .../src/base/wake_up/win/wake_up_pipe.cpp | 132 - .../livox_sdk/sdk_core/src/comm/comm_port.cpp | 164 - .../sdk_core/src/comm/sdk_protocol.cpp | 128 - .../sdk_core/src/comm/sdk_protocol.h | 84 - .../src/command_handler/command_channel.cpp | 253 - .../src/command_handler/command_channel.h | 132 - .../src/command_handler/command_handler.cpp | 205 - .../src/command_handler/command_handler.h | 108 - .../src/command_handler/command_impl.cpp | 1082 - .../src/command_handler/command_impl.h | 320 - .../command_handler/hub_command_handler.cpp | 65 - .../src/command_handler/hub_command_handler.h | 48 - .../command_handler/lidar_command_handler.cpp | 79 - .../command_handler/lidar_command_handler.h | 54 - .../src/data_handler/data_handler.cpp | 175 - .../sdk_core/src/data_handler/data_handler.h | 93 - .../src/data_handler/hub_data_handler.cpp | 108 - .../src/data_handler/hub_data_handler.h | 56 - .../src/data_handler/lidar_data_handler.cpp | 129 - .../src/data_handler/lidar_data_handler.h | 59 - .../sdk_core/src/device_discovery.cpp | 244 - .../livox_sdk/sdk_core/src/device_discovery.h | 101 - .../livox_sdk/sdk_core/src/device_manager.cpp | 393 - .../livox_sdk/sdk_core/src/device_manager.h | 166 - .../sdk_core/src/direct_mode_handler.cpp | 437 - .../sdk_core/src/direct_mode_handler.h | 116 - .../livox_sdk/sdk_core/src/livox_sdk.cpp | 134 - .../third_party/FastCRC/FastCRC_tables.hpp | 241 - .../src/third_party/FastCRC/FastCRCsw.cpp | 154 - .../src/third_party/FastCRC/LICENSE.md | 21 - .../src/third_party/FastCRC/README.md | 56 - dedicated_sdk/livox_sdk_common/CMakeLists.txt | 81 - .../livox_sdk_common/CMakeLists.txt.shared | 75 - .../livox_sdk_common/CMakeLists.txt.static | 81 - .../include/livox_def_common.h | 280 - .../include/livox_sdk_common.h | 126 - .../include/livox_sdk_common_util.h | 215 - .../include/third_party/FastCRC/FastCRC.h | 79 - .../include/third_party/spdlog/spdlog/async.h | 87 - .../third_party/spdlog/spdlog/async_logger.h | 73 - .../third_party/spdlog/spdlog/common.h | 246 - .../spdlog/spdlog/details/async_logger_impl.h | 110 - .../spdlog/spdlog/details/circular_q.h | 72 - .../spdlog/spdlog/details/console_globals.h | 74 - .../spdlog/spdlog/details/file_helper.h | 152 - .../spdlog/spdlog/details/fmt_helper.h | 122 - .../spdlog/spdlog/details/log_msg.h | 55 - .../spdlog/spdlog/details/logger_impl.h | 435 - .../spdlog/spdlog/details/mpmc_blocking_q.h | 121 - .../spdlog/spdlog/details/null_mutex.h | 45 - .../third_party/spdlog/spdlog/details/os.h | 421 - .../spdlog/spdlog/details/pattern_formatter.h | 1336 -- .../spdlog/spdlog/details/periodic_worker.h | 71 - .../spdlog/spdlog/details/registry.h | 285 - .../spdlog/spdlog/details/thread_pool.h | 238 - .../spdlog/spdlog/fmt/bin_to_hex.h | 172 - .../spdlog/spdlog/fmt/bundled/LICENSE.rst | 23 - .../spdlog/spdlog/fmt/bundled/chrono.h | 452 - .../spdlog/spdlog/fmt/bundled/color.h | 577 - .../spdlog/spdlog/fmt/bundled/core.h | 1502 -- .../spdlog/spdlog/fmt/bundled/format-inl.h | 972 - .../spdlog/spdlog/fmt/bundled/format.h | 3555 ---- .../spdlog/spdlog/fmt/bundled/locale.h | 77 - .../spdlog/spdlog/fmt/bundled/ostream.h | 153 - .../spdlog/spdlog/fmt/bundled/posix.h | 324 - .../spdlog/spdlog/fmt/bundled/printf.h | 855 - .../spdlog/spdlog/fmt/bundled/ranges.h | 308 - .../spdlog/spdlog/fmt/bundled/time.h | 160 - .../third_party/spdlog/spdlog/fmt/fmt.h | 25 - .../third_party/spdlog/spdlog/fmt/ostr.h | 18 - .../third_party/spdlog/spdlog/formatter.h | 20 - .../third_party/spdlog/spdlog/logger.h | 183 - .../spdlog/spdlog/sinks/android_sink.h | 121 - .../spdlog/spdlog/sinks/ansicolor_sink.h | 166 - .../spdlog/spdlog/sinks/base_sink.h | 69 - .../spdlog/spdlog/sinks/basic_file_sink.h | 75 - .../spdlog/spdlog/sinks/daily_file_sink.h | 141 - .../spdlog/spdlog/sinks/dist_sink.h | 94 - .../spdlog/spdlog/sinks/msvc_sink.h | 54 - .../spdlog/spdlog/sinks/null_sink.h | 49 - .../spdlog/spdlog/sinks/ostream_sink.h | 57 - .../spdlog/spdlog/sinks/rotating_file_sink.h | 164 - .../third_party/spdlog/spdlog/sinks/sink.h | 54 - .../spdlog/spdlog/sinks/stdout_color_sinks.h | 56 - .../spdlog/spdlog/sinks/stdout_sinks.h | 102 - .../spdlog/spdlog/sinks/syslog_sink.h | 94 - .../spdlog/spdlog/sinks/wincolor_sink.h | 143 - .../third_party/spdlog/spdlog/spdlog.h | 366 - .../third_party/spdlog/spdlog/tweakme.h | 152 - .../third_party/spdlog/spdlog/version.h | 12 - .../obstacle_zone_converter.cpp | 645 - .../obstacle_zone_converter.h | 101 - .../converter/lvx_to_point_cloud_frame.cpp | 271 - .../src/converter/lvx_to_point_cloud_frame.h | 76 - .../livox_sdk_common/src/livox_sdk_common.cpp | 238 - .../src/lvx_handler/lvx_file_converter.cpp | 231 - .../src/lvx_handler/lvx_file_converter.h | 68 - .../src/lvx_handler/lvx_file_def.h | 70 - .../src/lvx_handler/lvx_file_manager.cpp | 68 - .../src/lvx_handler/lvx_file_manager.h | 48 - .../lvx_handler/lvx_file_parse_handler.cpp | 413 - .../src/lvx_handler/lvx_file_parse_handler.h | 109 - .../lvx_handler/lvx_file_record_handler.cpp | 1143 -- .../src/lvx_handler/lvx_file_record_handler.h | 122 - .../src/pub_handler/lidar_pub_handler.cpp | 505 - .../src/pub_handler/lidar_pub_handler.h | 63 - .../src/pub_handler/pub_handler.cpp | 308 - .../src/pub_handler/pub_handler.h | 98 - .../eigen/include/eigen3/Eigen/Cholesky | 46 - .../eigen/include/eigen3/Eigen/CholmodSupport | 48 - .../eigen/include/eigen3/Eigen/Core | 542 - .../eigen/include/eigen3/Eigen/Dense | 7 - .../eigen/include/eigen3/Eigen/Eigen | 2 - .../eigen/include/eigen3/Eigen/Eigenvalues | 61 - .../eigen/include/eigen3/Eigen/Geometry | 62 - .../eigen/include/eigen3/Eigen/Householder | 30 - .../eigen3/Eigen/IterativeLinearSolvers | 48 - .../eigen/include/eigen3/Eigen/Jacobi | 33 - .../third_party/eigen/include/eigen3/Eigen/LU | 50 - .../eigen/include/eigen3/Eigen/MetisSupport | 35 - .../include/eigen3/Eigen/OrderingMethods | 73 - .../eigen/include/eigen3/Eigen/PaStiXSupport | 48 - .../eigen/include/eigen3/Eigen/PardisoSupport | 35 - .../third_party/eigen/include/eigen3/Eigen/QR | 51 - .../include/eigen3/Eigen/QtAlignedMalloc | 40 - .../eigen/include/eigen3/Eigen/SPQRSupport | 34 - .../eigen/include/eigen3/Eigen/SVD | 51 - .../eigen/include/eigen3/Eigen/Sparse | 36 - .../eigen/include/eigen3/Eigen/SparseCholesky | 45 - .../eigen/include/eigen3/Eigen/SparseCore | 69 - .../eigen/include/eigen3/Eigen/SparseLU | 46 - .../eigen/include/eigen3/Eigen/SparseQR | 36 - .../eigen/include/eigen3/Eigen/StdDeque | 27 - .../eigen/include/eigen3/Eigen/StdList | 26 - .../eigen/include/eigen3/Eigen/StdVector | 27 - .../eigen/include/eigen3/Eigen/SuperLUSupport | 64 - .../eigen/include/eigen3/Eigen/UmfPackSupport | 40 - .../include/eigen3/Eigen/src/Cholesky/LDLT.h | 673 - .../include/eigen3/Eigen/src/Cholesky/LLT.h | 542 - .../eigen3/Eigen/src/Cholesky/LLT_LAPACKE.h | 99 - .../Eigen/src/CholmodSupport/CholmodSupport.h | 639 - .../include/eigen3/Eigen/src/Core/Array.h | 329 - .../include/eigen3/Eigen/src/Core/ArrayBase.h | 226 - .../eigen3/Eigen/src/Core/ArrayWrapper.h | 209 - .../include/eigen3/Eigen/src/Core/Assign.h | 90 - .../eigen3/Eigen/src/Core/AssignEvaluator.h | 935 - .../eigen3/Eigen/src/Core/Assign_MKL.h | 178 - .../eigen3/Eigen/src/Core/BandMatrix.h | 353 - .../include/eigen3/Eigen/src/Core/Block.h | 452 - .../eigen3/Eigen/src/Core/BooleanRedux.h | 164 - .../eigen3/Eigen/src/Core/CommaInitializer.h | 160 - .../Eigen/src/Core/ConditionEstimator.h | 175 - .../eigen3/Eigen/src/Core/CoreEvaluators.h | 1688 -- .../eigen3/Eigen/src/Core/CoreIterators.h | 127 - .../eigen3/Eigen/src/Core/CwiseBinaryOp.h | 184 - .../eigen3/Eigen/src/Core/CwiseNullaryOp.h | 866 - .../eigen3/Eigen/src/Core/CwiseTernaryOp.h | 197 - .../eigen3/Eigen/src/Core/CwiseUnaryOp.h | 103 - .../eigen3/Eigen/src/Core/CwiseUnaryView.h | 130 - .../include/eigen3/Eigen/src/Core/DenseBase.h | 612 - .../eigen3/Eigen/src/Core/DenseCoeffsBase.h | 681 - .../eigen3/Eigen/src/Core/DenseStorage.h | 570 - .../include/eigen3/Eigen/src/Core/Diagonal.h | 260 - .../eigen3/Eigen/src/Core/DiagonalMatrix.h | 343 - .../eigen3/Eigen/src/Core/DiagonalProduct.h | 28 - .../eigen/include/eigen3/Eigen/src/Core/Dot.h | 318 - .../include/eigen3/Eigen/src/Core/EigenBase.h | 159 - .../Eigen/src/Core/ForceAlignedAccess.h | 146 - .../include/eigen3/Eigen/src/Core/Fuzzy.h | 155 - .../eigen3/Eigen/src/Core/GeneralProduct.h | 455 - .../eigen3/Eigen/src/Core/GenericPacketMath.h | 590 - .../eigen3/Eigen/src/Core/GlobalFunctions.h | 187 - .../eigen/include/eigen3/Eigen/src/Core/IO.h | 225 - .../include/eigen3/Eigen/src/Core/Inverse.h | 118 - .../eigen/include/eigen3/Eigen/src/Core/Map.h | 171 - .../include/eigen3/Eigen/src/Core/MapBase.h | 308 - .../eigen3/Eigen/src/Core/MathFunctions.h | 1421 -- .../eigen3/Eigen/src/Core/MathFunctionsImpl.h | 101 - .../include/eigen3/Eigen/src/Core/Matrix.h | 459 - .../eigen3/Eigen/src/Core/MatrixBase.h | 530 - .../eigen3/Eigen/src/Core/NestByValue.h | 110 - .../include/eigen3/Eigen/src/Core/NoAlias.h | 108 - .../include/eigen3/Eigen/src/Core/NumTraits.h | 248 - .../eigen3/Eigen/src/Core/PermutationMatrix.h | 605 - .../eigen3/Eigen/src/Core/PlainObjectBase.h | 1037 - .../include/eigen3/Eigen/src/Core/Product.h | 186 - .../eigen3/Eigen/src/Core/ProductEvaluators.h | 1138 -- .../include/eigen3/Eigen/src/Core/Random.h | 182 - .../include/eigen3/Eigen/src/Core/Redux.h | 505 - .../eigen/include/eigen3/Eigen/src/Core/Ref.h | 284 - .../include/eigen3/Eigen/src/Core/Replicate.h | 142 - .../eigen3/Eigen/src/Core/ReturnByValue.h | 117 - .../include/eigen3/Eigen/src/Core/Reverse.h | 211 - .../include/eigen3/Eigen/src/Core/Select.h | 162 - .../eigen3/Eigen/src/Core/SelfAdjointView.h | 352 - .../eigen3/Eigen/src/Core/SelfCwiseBinaryOp.h | 47 - .../include/eigen3/Eigen/src/Core/Solve.h | 188 - .../eigen3/Eigen/src/Core/SolveTriangular.h | 235 - .../eigen3/Eigen/src/Core/SolverBase.h | 130 - .../eigen3/Eigen/src/Core/StableNorm.h | 221 - .../include/eigen3/Eigen/src/Core/Stride.h | 111 - .../include/eigen3/Eigen/src/Core/Swap.h | 67 - .../include/eigen3/Eigen/src/Core/Transpose.h | 405 - .../eigen3/Eigen/src/Core/Transpositions.h | 368 - .../eigen3/Eigen/src/Core/TriangularMatrix.h | 985 - .../eigen3/Eigen/src/Core/VectorBlock.h | 96 - .../eigen3/Eigen/src/Core/VectorwiseOp.h | 695 - .../include/eigen3/Eigen/src/Core/Visitor.h | 273 - .../eigen3/Eigen/src/Core/arch/AVX/Complex.h | 451 - .../Eigen/src/Core/arch/AVX/MathFunctions.h | 439 - .../Eigen/src/Core/arch/AVX/PacketMath.h | 637 - .../Eigen/src/Core/arch/AVX/TypeCasting.h | 51 - .../src/Core/arch/AVX512/MathFunctions.h | 389 - .../Eigen/src/Core/arch/AVX512/PacketMath.h | 1305 -- .../Eigen/src/Core/arch/AltiVec/Complex.h | 430 - .../src/Core/arch/AltiVec/MathFunctions.h | 322 - .../Eigen/src/Core/arch/AltiVec/PacketMath.h | 1061 - .../eigen3/Eigen/src/Core/arch/CUDA/Complex.h | 103 - .../eigen3/Eigen/src/Core/arch/CUDA/Half.h | 675 - .../Eigen/src/Core/arch/CUDA/MathFunctions.h | 91 - .../Eigen/src/Core/arch/CUDA/PacketMath.h | 333 - .../Eigen/src/Core/arch/CUDA/PacketMathHalf.h | 1124 -- .../Eigen/src/Core/arch/CUDA/TypeCasting.h | 212 - .../Eigen/src/Core/arch/Default/ConjHelper.h | 29 - .../Eigen/src/Core/arch/Default/Settings.h | 49 - .../eigen3/Eigen/src/Core/arch/NEON/Complex.h | 490 - .../Eigen/src/Core/arch/NEON/MathFunctions.h | 91 - .../Eigen/src/Core/arch/NEON/PacketMath.h | 760 - .../eigen3/Eigen/src/Core/arch/SSE/Complex.h | 471 - .../Eigen/src/Core/arch/SSE/MathFunctions.h | 562 - .../Eigen/src/Core/arch/SSE/PacketMath.h | 895 - .../Eigen/src/Core/arch/SSE/TypeCasting.h | 77 - .../Eigen/src/Core/arch/ZVector/Complex.h | 397 - .../src/Core/arch/ZVector/MathFunctions.h | 137 - .../Eigen/src/Core/arch/ZVector/PacketMath.h | 945 - .../src/Core/functors/AssignmentFunctors.h | 168 - .../Eigen/src/Core/functors/BinaryFunctors.h | 475 - .../Eigen/src/Core/functors/NullaryFunctors.h | 188 - .../Eigen/src/Core/functors/StlFunctors.h | 136 - .../Eigen/src/Core/functors/TernaryFunctors.h | 25 - .../Eigen/src/Core/functors/UnaryFunctors.h | 792 - .../Core/products/GeneralBlockPanelKernel.h | 2157 -- .../src/Core/products/GeneralMatrixMatrix.h | 495 - .../products/GeneralMatrixMatrixTriangular.h | 317 - .../GeneralMatrixMatrixTriangular_BLAS.h | 145 - .../Core/products/GeneralMatrixMatrix_BLAS.h | 124 - .../src/Core/products/GeneralMatrixVector.h | 619 - .../Core/products/GeneralMatrixVector_BLAS.h | 136 - .../Eigen/src/Core/products/Parallelizer.h | 166 - .../Core/products/SelfadjointMatrixMatrix.h | 527 - .../products/SelfadjointMatrixMatrix_BLAS.h | 295 - .../Core/products/SelfadjointMatrixVector.h | 260 - .../products/SelfadjointMatrixVector_BLAS.h | 118 - .../src/Core/products/SelfadjointProduct.h | 133 - .../Core/products/SelfadjointRank2Update.h | 93 - .../Core/products/TriangularMatrixMatrix.h | 472 - .../products/TriangularMatrixMatrix_BLAS.h | 317 - .../Core/products/TriangularMatrixVector.h | 350 - .../products/TriangularMatrixVector_BLAS.h | 255 - .../Core/products/TriangularSolverMatrix.h | 335 - .../products/TriangularSolverMatrix_BLAS.h | 167 - .../Core/products/TriangularSolverVector.h | 145 - .../eigen3/Eigen/src/Core/util/BlasUtil.h | 499 - .../eigen3/Eigen/src/Core/util/Constants.h | 547 - .../src/Core/util/DisableStupidWarnings.h | 94 - .../Eigen/src/Core/util/ForwardDeclarations.h | 298 - .../eigen3/Eigen/src/Core/util/MKL_support.h | 130 - .../eigen3/Eigen/src/Core/util/Macros.h | 1053 - .../eigen3/Eigen/src/Core/util/Memory.h | 993 - .../include/eigen3/Eigen/src/Core/util/Meta.h | 568 - .../eigen3/Eigen/src/Core/util/NonMPL2.h | 3 - .../src/Core/util/ReenableStupidWarnings.h | 31 - .../eigen3/Eigen/src/Core/util/StaticAssert.h | 218 - .../eigen3/Eigen/src/Core/util/XprHelper.h | 838 - .../src/Eigenvalues/ComplexEigenSolver.h | 346 - .../Eigen/src/Eigenvalues/ComplexSchur.h | 462 - .../src/Eigenvalues/ComplexSchur_LAPACKE.h | 91 - .../Eigen/src/Eigenvalues/EigenSolver.h | 622 - .../src/Eigenvalues/GeneralizedEigenSolver.h | 418 - .../GeneralizedSelfAdjointEigenSolver.h | 226 - .../src/Eigenvalues/HessenbergDecomposition.h | 374 - .../src/Eigenvalues/MatrixBaseEigenvalues.h | 158 - .../eigen3/Eigen/src/Eigenvalues/RealQZ.h | 654 - .../eigen3/Eigen/src/Eigenvalues/RealSchur.h | 553 - .../Eigen/src/Eigenvalues/RealSchur_LAPACKE.h | 77 - .../src/Eigenvalues/SelfAdjointEigenSolver.h | 871 - .../SelfAdjointEigenSolver_LAPACKE.h | 87 - .../src/Eigenvalues/Tridiagonalization.h | 556 - .../eigen3/Eigen/src/Geometry/AlignedBox.h | 392 - .../eigen3/Eigen/src/Geometry/AngleAxis.h | 247 - .../eigen3/Eigen/src/Geometry/EulerAngles.h | 114 - .../eigen3/Eigen/src/Geometry/Homogeneous.h | 497 - .../eigen3/Eigen/src/Geometry/Hyperplane.h | 282 - .../eigen3/Eigen/src/Geometry/OrthoMethods.h | 234 - .../Eigen/src/Geometry/ParametrizedLine.h | 195 - .../eigen3/Eigen/src/Geometry/Quaternion.h | 832 - .../eigen3/Eigen/src/Geometry/Rotation2D.h | 199 - .../eigen3/Eigen/src/Geometry/RotationBase.h | 206 - .../eigen3/Eigen/src/Geometry/Scaling.h | 170 - .../eigen3/Eigen/src/Geometry/Transform.h | 1542 -- .../eigen3/Eigen/src/Geometry/Translation.h | 202 - .../eigen3/Eigen/src/Geometry/Umeyama.h | 166 - .../Eigen/src/Geometry/arch/Geometry_SSE.h | 161 - .../Eigen/src/Householder/BlockHouseholder.h | 103 - .../Eigen/src/Householder/Householder.h | 172 - .../src/Householder/HouseholderSequence.h | 470 - .../BasicPreconditioners.h | 226 - .../src/IterativeLinearSolvers/BiCGSTAB.h | 228 - .../ConjugateGradient.h | 246 - .../IncompleteCholesky.h | 400 - .../IterativeLinearSolvers/IncompleteLUT.h | 462 - .../IterativeSolverBase.h | 394 - .../LeastSquareConjugateGradient.h | 216 - .../IterativeLinearSolvers/SolveWithGuess.h | 115 - .../include/eigen3/Eigen/src/Jacobi/Jacobi.h | 462 - .../include/eigen3/Eigen/src/LU/Determinant.h | 101 - .../include/eigen3/Eigen/src/LU/FullPivLU.h | 891 - .../include/eigen3/Eigen/src/LU/InverseImpl.h | 415 - .../eigen3/Eigen/src/LU/PartialPivLU.h | 614 - .../Eigen/src/LU/PartialPivLU_LAPACKE.h | 83 - .../eigen3/Eigen/src/LU/arch/Inverse_SSE.h | 338 - .../Eigen/src/MetisSupport/MetisSupport.h | 137 - .../eigen3/Eigen/src/OrderingMethods/Amd.h | 445 - .../Eigen/src/OrderingMethods/Eigen_Colamd.h | 1843 -- .../Eigen/src/OrderingMethods/Ordering.h | 157 - .../Eigen/src/PaStiXSupport/PaStiXSupport.h | 678 - .../Eigen/src/PardisoSupport/PardisoSupport.h | 544 - .../eigen3/Eigen/src/QR/ColPivHouseholderQR.h | 653 - .../src/QR/ColPivHouseholderQR_LAPACKE.h | 97 - .../src/QR/CompleteOrthogonalDecomposition.h | 562 - .../Eigen/src/QR/FullPivHouseholderQR.h | 676 - .../eigen3/Eigen/src/QR/HouseholderQR.h | 409 - .../Eigen/src/QR/HouseholderQR_LAPACKE.h | 68 - .../src/SPQRSupport/SuiteSparseQRSupport.h | 313 - .../include/eigen3/Eigen/src/SVD/BDCSVD.h | 1277 -- .../include/eigen3/Eigen/src/SVD/JacobiSVD.h | 804 - .../eigen3/Eigen/src/SVD/JacobiSVD_LAPACKE.h | 91 - .../include/eigen3/Eigen/src/SVD/SVDBase.h | 315 - .../Eigen/src/SVD/UpperBidiagonalization.h | 414 - .../src/SparseCholesky/SimplicialCholesky.h | 689 - .../SparseCholesky/SimplicialCholesky_impl.h | 199 - .../eigen3/Eigen/src/SparseCore/AmbiVector.h | 378 - .../Eigen/src/SparseCore/CompressedStorage.h | 258 - .../ConservativeSparseSparseProduct.h | 352 - .../Eigen/src/SparseCore/MappedSparseMatrix.h | 67 - .../Eigen/src/SparseCore/SparseAssign.h | 216 - .../eigen3/Eigen/src/SparseCore/SparseBlock.h | 603 - .../Eigen/src/SparseCore/SparseColEtree.h | 206 - .../src/SparseCore/SparseCompressedBase.h | 341 - .../src/SparseCore/SparseCwiseBinaryOp.h | 726 - .../Eigen/src/SparseCore/SparseCwiseUnaryOp.h | 150 - .../Eigen/src/SparseCore/SparseDenseProduct.h | 320 - .../src/SparseCore/SparseDiagonalProduct.h | 138 - .../eigen3/Eigen/src/SparseCore/SparseDot.h | 98 - .../eigen3/Eigen/src/SparseCore/SparseFuzzy.h | 29 - .../eigen3/Eigen/src/SparseCore/SparseMap.h | 305 - .../Eigen/src/SparseCore/SparseMatrix.h | 1404 -- .../Eigen/src/SparseCore/SparseMatrixBase.h | 405 - .../Eigen/src/SparseCore/SparsePermutation.h | 178 - .../Eigen/src/SparseCore/SparseProduct.h | 169 - .../eigen3/Eigen/src/SparseCore/SparseRedux.h | 49 - .../eigen3/Eigen/src/SparseCore/SparseRef.h | 397 - .../src/SparseCore/SparseSelfAdjointView.h | 656 - .../Eigen/src/SparseCore/SparseSolverBase.h | 124 - .../SparseSparseProductWithPruning.h | 198 - .../Eigen/src/SparseCore/SparseTranspose.h | 92 - .../src/SparseCore/SparseTriangularView.h | 189 - .../eigen3/Eigen/src/SparseCore/SparseUtil.h | 178 - .../Eigen/src/SparseCore/SparseVector.h | 478 - .../eigen3/Eigen/src/SparseCore/SparseView.h | 254 - .../Eigen/src/SparseCore/TriangularSolver.h | 315 - .../eigen3/Eigen/src/SparseLU/SparseLU.h | 773 - .../eigen3/Eigen/src/SparseLU/SparseLUImpl.h | 66 - .../Eigen/src/SparseLU/SparseLU_Memory.h | 226 - .../Eigen/src/SparseLU/SparseLU_Structs.h | 110 - .../src/SparseLU/SparseLU_SupernodalMatrix.h | 301 - .../Eigen/src/SparseLU/SparseLU_Utils.h | 80 - .../Eigen/src/SparseLU/SparseLU_column_bmod.h | 181 - .../Eigen/src/SparseLU/SparseLU_column_dfs.h | 179 - .../src/SparseLU/SparseLU_copy_to_ucol.h | 107 - .../Eigen/src/SparseLU/SparseLU_gemm_kernel.h | 280 - .../src/SparseLU/SparseLU_heap_relax_snode.h | 126 - .../Eigen/src/SparseLU/SparseLU_kernel_bmod.h | 130 - .../Eigen/src/SparseLU/SparseLU_panel_bmod.h | 223 - .../Eigen/src/SparseLU/SparseLU_panel_dfs.h | 258 - .../Eigen/src/SparseLU/SparseLU_pivotL.h | 137 - .../Eigen/src/SparseLU/SparseLU_pruneL.h | 136 - .../Eigen/src/SparseLU/SparseLU_relax_snode.h | 83 - .../eigen3/Eigen/src/SparseQR/SparseQR.h | 745 - .../eigen3/Eigen/src/StlSupport/StdDeque.h | 128 - .../eigen3/Eigen/src/StlSupport/StdList.h | 106 - .../eigen3/Eigen/src/StlSupport/StdVector.h | 131 - .../eigen3/Eigen/src/StlSupport/details.h | 84 - .../Eigen/src/SuperLUSupport/SuperLUSupport.h | 1027 - .../Eigen/src/UmfPackSupport/UmfPackSupport.h | 506 - .../include/eigen3/Eigen/src/misc/Image.h | 82 - .../include/eigen3/Eigen/src/misc/Kernel.h | 79 - .../eigen3/Eigen/src/misc/RealSvd2x2.h | 55 - .../include/eigen3/Eigen/src/misc/blas.h | 440 - .../include/eigen3/Eigen/src/misc/lapack.h | 152 - .../include/eigen3/Eigen/src/misc/lapacke.h | 16291 ---------------- .../eigen3/Eigen/src/misc/lapacke_mangling.h | 17 - .../Eigen/src/plugins/ArrayCwiseBinaryOps.h | 332 - .../Eigen/src/plugins/ArrayCwiseUnaryOps.h | 552 - .../eigen3/Eigen/src/plugins/BlockMethods.h | 1058 - .../Eigen/src/plugins/CommonCwiseBinaryOps.h | 115 - .../Eigen/src/plugins/CommonCwiseUnaryOps.h | 163 - .../Eigen/src/plugins/MatrixCwiseBinaryOps.h | 152 - .../Eigen/src/plugins/MatrixCwiseUnaryOps.h | 85 - .../eigen3/signature_of_eigen3_matrix_library | 1 - .../eigen3/unsupported/Eigen/AdolcForward | 156 - .../eigen3/unsupported/Eigen/AlignedVector3 | 224 - .../eigen3/unsupported/Eigen/ArpackSupport | 31 - .../include/eigen3/unsupported/Eigen/AutoDiff | 40 - .../include/eigen3/unsupported/Eigen/BVH | 95 - .../eigen3/unsupported/Eigen/CXX11/Tensor | 154 - .../unsupported/Eigen/CXX11/TensorSymmetry | 42 - .../eigen3/unsupported/Eigen/CXX11/ThreadPool | 65 - .../Eigen/CXX11/src/Tensor/Tensor.h | 527 - .../Eigen/CXX11/src/Tensor/TensorArgMax.h | 299 - .../Eigen/CXX11/src/Tensor/TensorAssign.h | 181 - .../Eigen/CXX11/src/Tensor/TensorBase.h | 1012 - .../CXX11/src/Tensor/TensorBroadcasting.h | 392 - .../Eigen/CXX11/src/Tensor/TensorChipping.h | 384 - .../CXX11/src/Tensor/TensorConcatenation.h | 361 - .../CXX11/src/Tensor/TensorContraction.h | 628 - .../src/Tensor/TensorContractionBlocking.h | 56 - .../CXX11/src/Tensor/TensorContractionCuda.h | 1391 -- .../src/Tensor/TensorContractionMapper.h | 469 - .../src/Tensor/TensorContractionThreadPool.h | 1043 - .../Eigen/CXX11/src/Tensor/TensorConversion.h | 279 - .../CXX11/src/Tensor/TensorConvolution.h | 1104 -- .../Eigen/CXX11/src/Tensor/TensorCostModel.h | 212 - .../Eigen/CXX11/src/Tensor/TensorCustomOp.h | 313 - .../Eigen/CXX11/src/Tensor/TensorDevice.h | 68 - .../Eigen/CXX11/src/Tensor/TensorDeviceCuda.h | 337 - .../CXX11/src/Tensor/TensorDeviceDefault.h | 81 - .../Eigen/CXX11/src/Tensor/TensorDeviceSycl.h | 122 - .../CXX11/src/Tensor/TensorDeviceThreadPool.h | 282 - .../CXX11/src/Tensor/TensorDimensionList.h | 236 - .../Eigen/CXX11/src/Tensor/TensorDimensions.h | 428 - .../Eigen/CXX11/src/Tensor/TensorEvalTo.h | 181 - .../Eigen/CXX11/src/Tensor/TensorEvaluator.h | 633 - .../Eigen/CXX11/src/Tensor/TensorExecutor.h | 288 - .../Eigen/CXX11/src/Tensor/TensorExpr.h | 371 - .../Eigen/CXX11/src/Tensor/TensorFFT.h | 651 - .../Eigen/CXX11/src/Tensor/TensorFixedSize.h | 389 - .../Eigen/CXX11/src/Tensor/TensorForcedEval.h | 169 - .../src/Tensor/TensorForwardDeclarations.h | 109 - .../Eigen/CXX11/src/Tensor/TensorFunctors.h | 489 - .../Eigen/CXX11/src/Tensor/TensorGenerator.h | 185 - .../CXX11/src/Tensor/TensorGlobalFunctions.h | 33 - .../Eigen/CXX11/src/Tensor/TensorIO.h | 79 - .../Eigen/CXX11/src/Tensor/TensorImagePatch.h | 509 - .../Eigen/CXX11/src/Tensor/TensorIndexList.h | 725 - .../Eigen/CXX11/src/Tensor/TensorInflation.h | 229 - .../CXX11/src/Tensor/TensorInitializer.h | 82 - .../Eigen/CXX11/src/Tensor/TensorIntDiv.h | 253 - .../Eigen/CXX11/src/Tensor/TensorLayoutSwap.h | 209 - .../Eigen/CXX11/src/Tensor/TensorMacros.h | 54 - .../Eigen/CXX11/src/Tensor/TensorMap.h | 323 - .../Eigen/CXX11/src/Tensor/TensorMeta.h | 218 - .../Eigen/CXX11/src/Tensor/TensorMorphing.h | 888 - .../Eigen/CXX11/src/Tensor/TensorPadding.h | 397 - .../Eigen/CXX11/src/Tensor/TensorPatch.h | 269 - .../Eigen/CXX11/src/Tensor/TensorRandom.h | 276 - .../Eigen/CXX11/src/Tensor/TensorReduction.h | 781 - .../CXX11/src/Tensor/TensorReductionCuda.h | 750 - .../CXX11/src/Tensor/TensorReductionSycl.h | 242 - .../Eigen/CXX11/src/Tensor/TensorRef.h | 429 - .../Eigen/CXX11/src/Tensor/TensorReverse.h | 288 - .../Eigen/CXX11/src/Tensor/TensorScan.h | 287 - .../Eigen/CXX11/src/Tensor/TensorShuffling.h | 264 - .../Eigen/CXX11/src/Tensor/TensorStorage.h | 146 - .../Eigen/CXX11/src/Tensor/TensorStriding.h | 338 - .../Eigen/CXX11/src/Tensor/TensorSycl.h | 82 - .../TensorSyclConvertToDeviceExpression.h | 121 - .../src/Tensor/TensorSyclExprConstructor.h | 239 - .../src/Tensor/TensorSyclExtractAccessor.h | 204 - .../src/Tensor/TensorSyclExtractFunctors.h | 177 - .../CXX11/src/Tensor/TensorSyclLeafCount.h | 114 - .../src/Tensor/TensorSyclPlaceHolderExpr.h | 181 - .../Eigen/CXX11/src/Tensor/TensorSyclRun.h | 70 - .../Eigen/CXX11/src/Tensor/TensorSyclTuple.h | 237 - .../Eigen/CXX11/src/Tensor/TensorTraits.h | 272 - .../Eigen/CXX11/src/Tensor/TensorUInt128.h | 248 - .../CXX11/src/Tensor/TensorVolumePatch.h | 608 - .../src/TensorSymmetry/DynamicSymmetry.h | 293 - .../CXX11/src/TensorSymmetry/StaticSymmetry.h | 236 - .../Eigen/CXX11/src/TensorSymmetry/Symmetry.h | 338 - .../TensorSymmetry/util/TemplateGroupTheory.h | 669 - .../Eigen/CXX11/src/ThreadPool/EventCount.h | 233 - .../src/ThreadPool/NonBlockingThreadPool.h | 274 - .../Eigen/CXX11/src/ThreadPool/RunQueue.h | 210 - .../CXX11/src/ThreadPool/SimpleThreadPool.h | 154 - .../CXX11/src/ThreadPool/ThreadEnvironment.h | 38 - .../Eigen/CXX11/src/ThreadPool/ThreadLocal.h | 22 - .../src/ThreadPool/ThreadPoolInterface.h | 33 - .../Eigen/CXX11/src/ThreadPool/ThreadYield.h | 20 - .../Eigen/CXX11/src/util/CXX11Meta.h | 542 - .../Eigen/CXX11/src/util/CXX11Workarounds.h | 88 - .../Eigen/CXX11/src/util/EmulateArray.h | 267 - .../Eigen/CXX11/src/util/EmulateCXX11Meta.h | 311 - .../Eigen/CXX11/src/util/MaxSizeVector.h | 141 - .../eigen3/unsupported/Eigen/EulerAngles | 43 - .../include/eigen3/unsupported/Eigen/FFT | 419 - .../eigen3/unsupported/Eigen/IterativeSolvers | 42 - .../eigen3/unsupported/Eigen/KroneckerProduct | 36 - .../unsupported/Eigen/LevenbergMarquardt | 45 - .../eigen3/unsupported/Eigen/MPRealSupport | 209 - .../eigen3/unsupported/Eigen/MatrixFunctions | 500 - .../unsupported/Eigen/MoreVectorization | 24 - .../unsupported/Eigen/NonLinearOptimization | 134 - .../eigen3/unsupported/Eigen/NumericalDiff | 56 - .../eigen3/unsupported/Eigen/OpenGLSupport | 322 - .../eigen3/unsupported/Eigen/Polynomials | 138 - .../include/eigen3/unsupported/Eigen/Skyline | 39 - .../eigen3/unsupported/Eigen/SparseExtra | 53 - .../eigen3/unsupported/Eigen/SpecialFunctions | 63 - .../include/eigen3/unsupported/Eigen/Splines | 31 - .../Eigen/src/AutoDiff/AutoDiffJacobian.h | 108 - .../Eigen/src/AutoDiff/AutoDiffScalar.h | 720 - .../Eigen/src/AutoDiff/AutoDiffVector.h | 220 - .../unsupported/Eigen/src/BVH/BVAlgorithms.h | 293 - .../eigen3/unsupported/Eigen/src/BVH/KdBVH.h | 223 - .../ArpackSelfAdjointEigenSolver.h | 790 - .../Eigen/src/EulerAngles/EulerAngles.h | 386 - .../Eigen/src/EulerAngles/EulerSystem.h | 326 - .../unsupported/Eigen/src/FFT/ei_fftw_impl.h | 263 - .../Eigen/src/FFT/ei_kissfft_impl.h | 420 - .../IterativeSolvers/ConstrainedConjGrad.h | 189 - .../Eigen/src/IterativeSolvers/DGMRES.h | 510 - .../Eigen/src/IterativeSolvers/GMRES.h | 343 - .../Eigen/src/IterativeSolvers/IncompleteLU.h | 90 - .../IterativeSolvers/IterationController.h | 154 - .../Eigen/src/IterativeSolvers/MINRES.h | 289 - .../Eigen/src/IterativeSolvers/Scaling.h | 187 - .../KroneckerProduct/KroneckerTensorProduct.h | 305 - .../Eigen/src/LevenbergMarquardt/LMcovar.h | 84 - .../Eigen/src/LevenbergMarquardt/LMonestep.h | 202 - .../Eigen/src/LevenbergMarquardt/LMpar.h | 160 - .../Eigen/src/LevenbergMarquardt/LMqrsolv.h | 188 - .../LevenbergMarquardt/LevenbergMarquardt.h | 396 - .../src/MatrixFunctions/MatrixExponential.h | 442 - .../src/MatrixFunctions/MatrixFunction.h | 580 - .../src/MatrixFunctions/MatrixLogarithm.h | 373 - .../Eigen/src/MatrixFunctions/MatrixPower.h | 709 - .../src/MatrixFunctions/MatrixSquareRoot.h | 368 - .../Eigen/src/MatrixFunctions/StemFunction.h | 117 - .../src/MoreVectorization/MathFunctions.h | 95 - .../HybridNonLinearSolver.h | 601 - .../LevenbergMarquardt.h | 657 - .../Eigen/src/NonLinearOptimization/chkder.h | 66 - .../Eigen/src/NonLinearOptimization/covar.h | 70 - .../Eigen/src/NonLinearOptimization/dogleg.h | 107 - .../Eigen/src/NonLinearOptimization/fdjac1.h | 79 - .../Eigen/src/NonLinearOptimization/lmpar.h | 298 - .../Eigen/src/NonLinearOptimization/qrsolv.h | 91 - .../Eigen/src/NonLinearOptimization/r1mpyq.h | 30 - .../Eigen/src/NonLinearOptimization/r1updt.h | 99 - .../Eigen/src/NonLinearOptimization/rwupdt.h | 49 - .../Eigen/src/NumericalDiff/NumericalDiff.h | 130 - .../Eigen/src/Polynomials/Companion.h | 275 - .../Eigen/src/Polynomials/PolynomialSolver.h | 428 - .../Eigen/src/Polynomials/PolynomialUtils.h | 143 - .../Eigen/src/Skyline/SkylineInplaceLU.h | 352 - .../Eigen/src/Skyline/SkylineMatrix.h | 862 - .../Eigen/src/Skyline/SkylineMatrixBase.h | 212 - .../Eigen/src/Skyline/SkylineProduct.h | 295 - .../Eigen/src/Skyline/SkylineStorage.h | 259 - .../Eigen/src/Skyline/SkylineUtil.h | 89 - .../SparseExtra/BlockOfDynamicSparseMatrix.h | 122 - .../Eigen/src/SparseExtra/BlockSparseMatrix.h | 1079 - .../src/SparseExtra/DynamicSparseMatrix.h | 404 - .../Eigen/src/SparseExtra/MarketIO.h | 275 - .../src/SparseExtra/MatrixMarketIterator.h | 247 - .../Eigen/src/SparseExtra/RandomSetter.h | 327 - .../SpecialFunctionsArrayAPI.h | 124 - .../SpecialFunctionsFunctors.h | 236 - .../SpecialFunctions/SpecialFunctionsHalf.h | 47 - .../SpecialFunctions/SpecialFunctionsImpl.h | 1565 -- .../SpecialFunctionsPacketMath.h | 58 - .../arch/CUDA/CudaSpecialFunctions.h | 165 - .../unsupported/Eigen/src/Splines/Spline.h | 507 - .../Eigen/src/Splines/SplineFitting.h | 430 - .../unsupported/Eigen/src/Splines/SplineFwd.h | 93 - .../share/eigen3/cmake/Eigen3Config.cmake | 35 - .../eigen3/cmake/Eigen3ConfigVersion.cmake | 58 - .../share/eigen3/cmake/Eigen3Targets.cmake | 98 - .../eigen/share/eigen3/cmake/UseEigen3.cmake | 6 - .../src/upgrader/firmware/firmware.cpp | 105 - .../src/upgrader/firmware/firmware.h | 141 - .../upgrader/industry/industry_upgrader.cpp | 317 - .../src/upgrader/industry/industry_upgrader.h | 95 - .../livox_lidar/livox_lidar_upgrader.cpp | 350 - .../livox_lidar/livox_lidar_upgrader.h | 95 - .../src/upgrader/upgrade_manager.cpp | 169 - .../src/upgrader/upgrade_manager.h | 117 - .../vehicle/vehicle_lidar_upgrader.cpp | 350 - .../upgrader/vehicle/vehicle_lidar_upgrader.h | 95 - .../src/upgrader/vehicle/vehicle_upgrader.cpp | 317 - .../src/upgrader/vehicle/vehicle_upgrader.h | 97 - dedicated_sdk/livox_sdk_vehicle/.gitignore | 24 - .../livox_sdk_vehicle/CMakeLists.txt | 22 - dedicated_sdk/livox_sdk_vehicle/Doxyfile | 2567 --- dedicated_sdk/livox_sdk_vehicle/LICENSE.txt | 325 - dedicated_sdk/livox_sdk_vehicle/README.md | 237 - dedicated_sdk/livox_sdk_vehicle/README_CN.md | 238 - .../livox_sdk_vehicle/doc/images/1.png | Bin 5082 -> 0 bytes .../doc/images/broadcast_code.png | Bin 117381 -> 0 bytes .../livox_sdk_vehicle/doc/images/sample.png | Bin 72917 -> 0 bytes .../livox_sdk_vehicle/doc/images/sdk.png | Bin 24853 -> 0 bytes .../livox_sdk_vehicle/doc/images/sdk_init.png | Bin 1660 -> 0 bytes .../sample/upgrade/CMakeLists.txt | 24 - .../sample/upgrade/firmware.cpp | 103 - .../sample/upgrade/firmware.h | 102 - .../livox_sdk_vehicle/sample/upgrade/lidar.h | 85 - .../sample/upgrade/livox_manager.cpp | 552 - .../sample/upgrade/livox_manager.h | 89 - .../sample/upgrade/livox_upgrade_tool.cpp | 122 - .../sample/upgrade/livox_upgrade_tool.h | 40 - .../upgrade/livox_upgrade_user_guide_cn.md | 52 - .../sample/upgrade/upgrade.cpp | 315 - .../sample/upgrade/upgrade.h | 136 - .../livox_sdk_vehicle/sdk_core/CMakeLists.txt | 81 - .../sdk_core/CMakeLists.txt.shared | 81 - .../sdk_core/CMakeLists.txt.static | 81 - .../sdk_core/include/comm/comm_port.h | 74 - .../sdk_core/include/comm/protocol.h | 84 - .../sdk_core/include/livox_config_vehicle.h | 49 - .../sdk_core/include/livox_def_vehicle.h | 476 - .../sdk_core/include/livox_sdk_vehicle.h | 210 - .../include/third_party/FastCRC/FastCRC.h | 79 - .../include/third_party/spdlog/spdlog/async.h | 87 - .../third_party/spdlog/spdlog/async_logger.h | 73 - .../third_party/spdlog/spdlog/common.h | 246 - .../spdlog/spdlog/details/async_logger_impl.h | 110 - .../spdlog/spdlog/details/circular_q.h | 72 - .../spdlog/spdlog/details/console_globals.h | 74 - .../spdlog/spdlog/details/file_helper.h | 152 - .../spdlog/spdlog/details/fmt_helper.h | 122 - .../spdlog/spdlog/details/log_msg.h | 55 - .../spdlog/spdlog/details/logger_impl.h | 435 - .../spdlog/spdlog/details/mpmc_blocking_q.h | 121 - .../spdlog/spdlog/details/null_mutex.h | 45 - .../third_party/spdlog/spdlog/details/os.h | 421 - .../spdlog/spdlog/details/pattern_formatter.h | 1336 -- .../spdlog/spdlog/details/periodic_worker.h | 71 - .../spdlog/spdlog/details/registry.h | 285 - .../spdlog/spdlog/details/thread_pool.h | 238 - .../spdlog/spdlog/fmt/bin_to_hex.h | 172 - .../spdlog/spdlog/fmt/bundled/LICENSE.rst | 23 - .../spdlog/spdlog/fmt/bundled/chrono.h | 452 - .../spdlog/spdlog/fmt/bundled/color.h | 577 - .../spdlog/spdlog/fmt/bundled/core.h | 1502 -- .../spdlog/spdlog/fmt/bundled/format-inl.h | 972 - .../spdlog/spdlog/fmt/bundled/format.h | 3555 ---- .../spdlog/spdlog/fmt/bundled/locale.h | 77 - .../spdlog/spdlog/fmt/bundled/ostream.h | 153 - .../spdlog/spdlog/fmt/bundled/posix.h | 324 - .../spdlog/spdlog/fmt/bundled/printf.h | 855 - .../spdlog/spdlog/fmt/bundled/ranges.h | 308 - .../spdlog/spdlog/fmt/bundled/time.h | 160 - .../third_party/spdlog/spdlog/fmt/fmt.h | 25 - .../third_party/spdlog/spdlog/fmt/ostr.h | 18 - .../third_party/spdlog/spdlog/formatter.h | 20 - .../third_party/spdlog/spdlog/logger.h | 183 - .../spdlog/spdlog/sinks/android_sink.h | 121 - .../spdlog/spdlog/sinks/ansicolor_sink.h | 166 - .../spdlog/spdlog/sinks/base_sink.h | 69 - .../spdlog/spdlog/sinks/basic_file_sink.h | 75 - .../spdlog/spdlog/sinks/daily_file_sink.h | 141 - .../spdlog/spdlog/sinks/dist_sink.h | 94 - .../spdlog/spdlog/sinks/msvc_sink.h | 54 - .../spdlog/spdlog/sinks/null_sink.h | 49 - .../spdlog/spdlog/sinks/ostream_sink.h | 57 - .../spdlog/spdlog/sinks/rotating_file_sink.h | 164 - .../third_party/spdlog/spdlog/sinks/sink.h | 54 - .../spdlog/spdlog/sinks/stdout_color_sinks.h | 56 - .../spdlog/spdlog/sinks/stdout_sinks.h | 102 - .../spdlog/spdlog/sinks/syslog_sink.h | 94 - .../spdlog/spdlog/sinks/wincolor_sink.h | 143 - .../third_party/spdlog/spdlog/spdlog.h | 366 - .../third_party/spdlog/spdlog/tweakme.h | 152 - .../third_party/spdlog/spdlog/version.h | 12 - .../sdk_core/src/base/command_callback.h | 249 - .../sdk_core/src/base/io_loop.cpp | 132 - .../sdk_core/src/base/io_loop.h | 86 - .../sdk_core/src/base/io_thread.cpp | 61 - .../sdk_core/src/base/io_thread.h | 49 - .../sdk_core/src/base/logging.cpp | 59 - .../sdk_core/src/base/logging.h | 66 - .../src/base/multiple_io/multiple_io_base.cpp | 86 - .../src/base/multiple_io/multiple_io_base.h | 75 - .../base/multiple_io/multiple_io_epoll.cpp | 109 - .../src/base/multiple_io/multiple_io_epoll.h | 53 - .../base/multiple_io/multiple_io_factory.h | 58 - .../base/multiple_io/multiple_io_kqueue.cpp | 142 - .../src/base/multiple_io/multiple_io_kqueue.h | 54 - .../src/base/multiple_io/multiple_io_poll.cpp | 116 - .../src/base/multiple_io/multiple_io_poll.h | 55 - .../base/multiple_io/multiple_io_select.cpp | 123 - .../src/base/multiple_io/multiple_io_select.h | 54 - .../sdk_core/src/base/network/network_util.h | 61 - .../src/base/network/unix/network_util.cpp | 151 - .../src/base/network/win/network_util.cpp | 166 - .../sdk_core/src/base/noncopyable.h | 41 - .../sdk_core/src/base/thread_base.cpp | 53 - .../sdk_core/src/base/thread_base.h | 55 - .../src/base/wake_up/unix/wake_up_pipe.cpp | 117 - .../sdk_core/src/base/wake_up/wake_up_pipe.h | 48 - .../src/base/wake_up/win/wake_up_pipe.cpp | 133 - .../sdk_core/src/comm/comm_port.cpp | 167 - .../sdk_core/src/comm/sdk_protocol.cpp | 132 - .../sdk_core/src/comm/sdk_protocol.h | 91 - .../src/command_handler/command_channel.cpp | 257 - .../src/command_handler/command_channel.h | 126 - .../src/command_handler/command_handler.cpp | 273 - .../src/command_handler/command_handler.h | 119 - .../src/command_handler/command_impl.cpp | 550 - .../src/command_handler/command_impl.h | 93 - .../src/data_handler/data_handler.cpp | 163 - .../sdk_core/src/data_handler/data_handler.h | 93 - .../src/data_handler/lidar_data_handler.cpp | 59 - .../src/data_handler/lidar_data_handler.h | 48 - .../sdk_core/src/livox_sdk_vehicle.cpp | 51 - .../sdk_core/src/preconfig_manager.cpp | 240 - .../sdk_core/src/preconfig_manager.h | 88 - .../third_party/FastCRC/FastCRC_tables.hpp | 241 - .../src/third_party/FastCRC/FastCRCsw.cpp | 154 - .../src/third_party/FastCRC/LICENSE.md | 21 - .../src/third_party/FastCRC/README.md | 56 - .../hap/livox_lidar_for_test/CMakeLists.txt | 9 - .../hap/livox_lidar_for_test/config.json | 23 - .../sample/hap/livox_lidar_for_test/main.cpp | 382 - .../CMakeLists.txt | 12 - .../hap/livox_lidar_parse_lvx2_file/main.cpp | 90 - .../livox_lidar_quick_start/CMakeLists.txt | 9 - .../hap/livox_lidar_quick_start/config.json | 23 - .../hap/livox_lidar_quick_start/main.cpp | 198 - .../CMakeLists.txt | 10 - .../livox_lidar_record_lvx2_file/config.json | 23 - .../hap/livox_lidar_record_lvx2_file/main.cpp | 144 - .../CMakeLists.txt | 9 - .../hap/livox_lidar_view_quick_start/main.cpp | 163 - .../livox_multi_lidar_upgrade/CMakeLists.txt | 10 - .../hap/livox_multi_lidar_upgrade/config.json | 23 - .../hap/livox_multi_lidar_upgrade/main.cpp | 127 - .../industry_lidar_sample/CMakeLists.txt | 9 - .../industry/industry_lidar_sample/main.c | 289 - .../industry_lidar_upgrade/CMakeLists.txt | 11 - .../industry/industry_lidar_upgrade/main.cpp | 120 - .../industry/lidar_upgrade/CMakeLists.txt | 11 - .../sample/industry/lidar_upgrade/main.cpp | 100 - .../sample/lvx/lvx2_to_lvx3/CMakeLists.txt | 14 - .../sample/lvx/lvx2_to_lvx3/main.cpp | 66 - .../sample/lvx/lvx3_to_lvx2/CMakeLists.txt | 14 - .../sample/lvx/lvx3_to_lvx2/main.cpp | 66 - .../obstacle_avoidance_test/CMakeLists.txt | 10 - .../lvx/obstacle_avoidance_test/main.cpp | 106 - .../sample/lvx/parse_lvx_file/CMakeLists.txt | 11 - .../sample/lvx/parse_lvx_file/main.cpp | 162 - .../lvx/record_lvx2_file/CMakeLists.txt | 10 - .../sample/lvx/record_lvx2_file/main.cpp | 172 - .../CMakeLists.txt | 11 - .../lvx/record_lvx2_file_industrial/main.cpp | 344 - .../CMakeLists.txt | 14 - .../lvx/record_lvx3_file_industrial/main.cpp | 342 - .../vehicle_lidar_preconfig/CMakeLists.txt | 9 - .../vehicle/vehicle_lidar_preconfig/main.cpp | 57 - .../vehicle_lidar_quick_start/CMakeLists.txt | 9 - .../vehicle_lidar_quick_start/main.cpp | 157 - .../vehicle_lidar_upgrade/CMakeLists.txt | 11 - .../vehicle/vehicle_lidar_upgrade/main.cpp | 99 - .../CMakeLists.txt | 11 - .../vehicle_multi_lidar_upgrade/main.cpp | 116 - ...ox_lidar_msg_HAP.launch => msg_HAP.launch} | 11 +- launch_ROS1/msg_MID360.launch | 40 + launch_ROS1/msg_mixed.launch | 40 + ..._lidar_rviz_HAP.launch => rviz_HAP.launch} | 12 +- launch_ROS1/rviz_MID360.launch | 45 + launch_ROS1/rviz_mixed.launch | 45 + launch_ROS2/msg_HAP_launch.py | 55 + launch_ROS2/msg_MID360_launch.py | 54 + launch_ROS2/rviz_HAP_launch.py | 63 + launch_ROS2/rviz_MID360_launch.py | 63 + launch_ROS2/rviz_mixed.py | 63 + package.xml | 82 - package_ROS1.xml | 2 +- package_ROS2.xml | 35 + src/call_back/hub_callback.cpp | 392 - src/call_back/hub_callback.h | 74 - src/call_back/industrial_lidar_callback.cpp | 504 - src/call_back/industrial_lidar_callback.h | 72 - src/call_back/lidar_common_callback.cpp | 21 +- src/call_back/lidar_common_callback.h | 20 +- src/call_back/livox_lidar_callback.cpp | 3 +- src/call_back/livox_lidar_callback.h | 7 +- src/call_back/vehicle_lidar_callback.cpp | 224 - src/call_back/vehicle_lidar_callback.h | 64 - src/comm/cache_index.cpp | 10 +- src/comm/cache_index.h | 12 +- src/comm/comm.cpp | 37 +- src/comm/comm.h | 195 +- src/comm/ldq.cpp | 300 +- src/comm/ldq.h | 34 +- src/comm/lidar_imu_data_queue.cpp | 40 +- src/comm/lidar_imu_data_queue.h | 44 +- src/comm/pub_handler.cpp | 449 + src/comm/pub_handler.h | 137 + src/comm/semaphore.cpp | 5 +- src/comm/semaphore.h | 7 +- src/driver_node.cpp | 13 +- src/driver_node.h | 47 +- src/include/livox_ros_driver2.h | 80 +- src/include/ros1_headers.h | 6 +- src/include/ros2_headers.h | 10 +- src/include/ros_headers.h | 3 +- src/lddc.cpp | 1343 +- src/lddc.h | 21 +- src/lds.cpp | 402 +- src/lds.h | 29 +- src/lds_hub.cpp | 240 - src/lds_hub.h | 101 - src/lds_lidar.cpp | 697 +- src/lds_lidar.h | 55 +- src/lds_lvx.cpp | 187 +- src/lds_lvx.h | 9 +- src/livox_ros_driver2.cpp | 609 +- src/parse_cfg_file/parse_cfg_file.cpp | 6 +- src/parse_cfg_file/parse_cfg_file.h | 10 +- .../parse_industrial_lidar_cfg.cpp | 262 - .../parse_industrial_lidar_cfg.h | 60 - src/parse_cfg_file/parse_livox_lidar_cfg.cpp | 10 +- src/parse_cfg_file/parse_livox_lidar_cfg.h | 13 +- .../parse_vehicle_lidar_cfg.cpp | 182 - src/parse_cfg_file/parse_vehicle_lidar_cfg.h | 64 - src/vehicle_lidar_thread.cpp | 56 - src/vehicle_lidar_thread.h | 53 - timesync/README.txt | 18 - timesync/package.xml | 82 - timesync/timesync.cpp | 200 - timesync/timesync.h | 110 - timesync/user_uart/user_uart.cpp | 194 - timesync/user_uart/user_uart.h | 90 - 1221 files changed, 4511 insertions(+), 320347 deletions(-) rename {common => 3rdparty}/rapidjson/allocators.h (100%) rename {common => 3rdparty}/rapidjson/cursorstreamwrapper.h (100%) rename {common => 3rdparty}/rapidjson/document.h (100%) rename {common => 3rdparty}/rapidjson/encodedstream.h (100%) rename {common => 3rdparty}/rapidjson/encodings.h (100%) rename {common => 3rdparty}/rapidjson/error/en.h (100%) rename {common => 3rdparty}/rapidjson/error/error.h (100%) rename {common => 3rdparty}/rapidjson/filereadstream.h (100%) rename {common => 3rdparty}/rapidjson/filewritestream.h (100%) rename {common => 3rdparty}/rapidjson/fwd.h (100%) rename {common => 3rdparty}/rapidjson/internal/biginteger.h (100%) rename {common => 3rdparty}/rapidjson/internal/clzll.h (100%) rename {common => 3rdparty}/rapidjson/internal/diyfp.h (100%) rename {common => 3rdparty}/rapidjson/internal/dtoa.h (100%) rename {common => 3rdparty}/rapidjson/internal/ieee754.h (100%) rename {common => 3rdparty}/rapidjson/internal/itoa.h (100%) rename {common => 3rdparty}/rapidjson/internal/meta.h (100%) rename {common => 3rdparty}/rapidjson/internal/pow10.h (100%) rename {common => 3rdparty}/rapidjson/internal/regex.h (100%) rename {common => 3rdparty}/rapidjson/internal/stack.h (100%) rename {common => 3rdparty}/rapidjson/internal/strfunc.h (100%) rename {common => 3rdparty}/rapidjson/internal/strtod.h (100%) rename {common => 3rdparty}/rapidjson/internal/swap.h (100%) rename {common => 3rdparty}/rapidjson/istreamwrapper.h (100%) create mode 100644 3rdparty/rapidjson/license.txt rename {common => 3rdparty}/rapidjson/memorybuffer.h (100%) rename {common => 3rdparty}/rapidjson/memorystream.h (100%) rename {common => 3rdparty}/rapidjson/msinttypes/inttypes.h (100%) rename {common => 3rdparty}/rapidjson/msinttypes/stdint.h (100%) rename {common => 3rdparty}/rapidjson/ostreamwrapper.h (100%) rename {common => 3rdparty}/rapidjson/pointer.h (100%) rename {common => 3rdparty}/rapidjson/prettywriter.h (100%) rename {common => 3rdparty}/rapidjson/rapidjson.h (100%) rename {common => 3rdparty}/rapidjson/reader.h (100%) rename {common => 3rdparty}/rapidjson/schema.h (100%) rename {common => 3rdparty}/rapidjson/stream.h (100%) rename {common => 3rdparty}/rapidjson/stringbuffer.h (100%) rename {common => 3rdparty}/rapidjson/writer.h (100%) create mode 100644 CHANGELOG.md create mode 100644 CMakeLists.txt delete mode 100644 CMakeLists_ROS1.txt create mode 100644 LICENSE.txt delete mode 100644 common/FastCRC/FastCRC.h delete mode 100644 common/FastCRC/FastCRC_tables.hpp delete mode 100644 common/FastCRC/FastCRCsw.cpp delete mode 100644 common/FastCRC/LICENSE.md delete mode 100644 common/FastCRC/README.md delete mode 100644 common/comm/comm_device.h delete mode 100644 common/comm/comm_protocol.cpp delete mode 100644 common/comm/comm_protocol.h delete mode 100644 common/comm/gps_protocol.cpp delete mode 100644 common/comm/gps_protocol.h delete mode 100644 common/comm/protocol.h delete mode 100644 common/comm/sdk_protocol.cpp delete mode 100644 common/comm/sdk_protocol.h delete mode 100644 common/rapidxml/rapidxml.hpp delete mode 100644 common/rapidxml/rapidxml_iterators.hpp delete mode 100644 common/rapidxml/rapidxml_print.hpp delete mode 100644 common/rapidxml/rapidxml_utils.hpp create mode 100644 config/HAP_config.json create mode 100644 config/MID360_config.json rename config_ROS1/display_lidar_points.rviz => config/display_point_cloud_ROS1.rviz (100%) create mode 100644 config/display_point_cloud_ROS2.rviz create mode 100644 config/mixed_HAP_MID360_config.json delete mode 100644 config_ROS1/HAP_config.json delete mode 100644 dedicated_sdk/CMakeLists.txt delete mode 100644 dedicated_sdk/CMakeLists.txt.shared delete mode 100644 dedicated_sdk/CMakeLists.txt.static delete mode 100755 dedicated_sdk/build.sh delete mode 100644 dedicated_sdk/livox_lidar_sdk/CMakeLists.txt delete mode 100644 dedicated_sdk/livox_lidar_sdk/Doxyfile delete mode 100644 dedicated_sdk/livox_lidar_sdk/LICENSE.txt delete mode 100644 dedicated_sdk/livox_lidar_sdk/README.md delete mode 100644 dedicated_sdk/livox_lidar_sdk/README_CN.md delete mode 100644 dedicated_sdk/livox_lidar_sdk/doc/images/1.png delete mode 100644 dedicated_sdk/livox_lidar_sdk/doc/images/broadcast_code.png delete mode 100644 dedicated_sdk/livox_lidar_sdk/doc/images/sample.png delete mode 100644 dedicated_sdk/livox_lidar_sdk/doc/images/sdk.png delete mode 100644 dedicated_sdk/livox_lidar_sdk/doc/images/sdk_init.png delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/CMakeLists.txt delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/CMakeLists.txt.shared delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/CMakeLists.txt.static delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/comm/comm_port.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/comm/protocol.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/livox_lidar_api.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/livox_lidar_cfg.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/livox_lidar_def.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/FastCRC/FastCRC.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/cmdline/cmdline.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/async.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/async_logger.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/common.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/details/async_logger_impl.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/details/circular_q.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/details/console_globals.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/details/file_helper.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/details/fmt_helper.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/details/log_msg.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/details/logger_impl.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/details/mpmc_blocking_q.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/details/null_mutex.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/details/os.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/details/pattern_formatter.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/details/periodic_worker.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/details/registry.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/details/thread_pool.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bin_to_hex.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/LICENSE.rst delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/chrono.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/color.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/core.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/format-inl.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/format.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/locale.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/ostream.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/posix.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/printf.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/ranges.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/time.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/fmt.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/ostr.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/formatter.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/logger.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/android_sink.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/ansicolor_sink.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/base_sink.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/basic_file_sink.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/daily_file_sink.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/dist_sink.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/msvc_sink.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/null_sink.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/ostream_sink.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/rotating_file_sink.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/sink.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/stdout_color_sinks.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/stdout_sinks.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/syslog_sink.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/wincolor_sink.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/spdlog.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/tweakme.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/include/third_party/spdlog/spdlog/version.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/command_callback.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/io_loop.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/io_loop.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/io_thread.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/io_thread.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/logging.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/logging.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/multiple_io/multiple_io_base.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/multiple_io/multiple_io_base.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/multiple_io/multiple_io_epoll.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/multiple_io/multiple_io_epoll.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/multiple_io/multiple_io_factory.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/multiple_io/multiple_io_kqueue.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/multiple_io/multiple_io_kqueue.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/multiple_io/multiple_io_poll.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/multiple_io/multiple_io_poll.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/multiple_io/multiple_io_select.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/multiple_io/multiple_io_select.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/network/network_util.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/network/unix/network_util.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/network/win/network_util.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/noncopyable.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/thread_base.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/thread_base.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/wake_up/unix/wake_up_pipe.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/wake_up/wake_up_pipe.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/base/wake_up/win/wake_up_pipe.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/comm/CRC/Crc.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/comm/CRC/Crc.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/comm/CRC/Crc_Cfg.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/comm/CRC/Crc_Cfg.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/comm/comm_port.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/comm/define.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/comm/generate_seq.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/comm/generate_seq.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/comm/sdk_protocol.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/comm/sdk_protocol.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/command_handler/build_request.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/command_handler/build_request.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/command_handler/command_handler.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/command_handler/command_impl.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/command_handler/command_impl.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/command_handler/general_command_handler.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/command_handler/general_command_handler.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/command_handler/hap_command_handler.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/command_handler/hap_command_handler.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/command_handler/mid360_command_handler.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/command_handler/mid360_command_handler.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/command_handler/pa_command_handler.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/command_handler/pa_command_handler.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/command_handler/parse_lidar_state_info.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/command_handler/parse_lidar_state_info.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/data_handler/data_handler.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/data_handler/data_handler.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/device_manager.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/device_manager.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/livox_lidar_sdk.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/params_check.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/params_check.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/parse_cfg_file.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/parse_cfg_file.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/FastCRC/FastCRC_tables.hpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/FastCRC/FastCRCsw.cpp delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/FastCRC/LICENSE.md delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/FastCRC/README.md delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/allocators.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/cursorstreamwrapper.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/document.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/encodedstream.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/encodings.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/error/en.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/error/error.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/filereadstream.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/filewritestream.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/fwd.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/internal/biginteger.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/internal/clzll.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/internal/diyfp.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/internal/dtoa.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/internal/ieee754.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/internal/itoa.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/internal/meta.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/internal/pow10.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/internal/regex.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/internal/stack.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/internal/strfunc.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/internal/strtod.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/internal/swap.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/istreamwrapper.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/memorybuffer.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/memorystream.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/msinttypes/inttypes.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/msinttypes/stdint.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/ostreamwrapper.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/pointer.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/prettywriter.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/rapidjson.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/reader.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/schema.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/stream.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/stringbuffer.h delete mode 100644 dedicated_sdk/livox_lidar_sdk/sdk_core/src/third_party/rapidjson/writer.h delete mode 100644 dedicated_sdk/livox_sdk/CMakeLists.txt delete mode 100644 dedicated_sdk/livox_sdk/Doxyfile delete mode 100644 dedicated_sdk/livox_sdk/LICENSE.txt delete mode 100644 dedicated_sdk/livox_sdk/README.md delete mode 100644 dedicated_sdk/livox_sdk/README_CN.md delete mode 100644 dedicated_sdk/livox_sdk/doc/images/1.png delete mode 100644 dedicated_sdk/livox_sdk/doc/images/broadcast_code.png delete mode 100644 dedicated_sdk/livox_sdk/doc/images/sample.png delete mode 100644 dedicated_sdk/livox_sdk/doc/images/sdk.png delete mode 100644 dedicated_sdk/livox_sdk/doc/images/sdk_init.png delete mode 100644 dedicated_sdk/livox_sdk/sample/hub/CMakeLists.txt delete mode 100644 dedicated_sdk/livox_sdk/sample/hub/main.c delete mode 100644 dedicated_sdk/livox_sdk/sample/hub_lvx_file/CMakeLists.txt delete mode 100644 dedicated_sdk/livox_sdk/sample/hub_lvx_file/lvx_file.cpp delete mode 100644 dedicated_sdk/livox_sdk/sample/hub_lvx_file/lvx_file.h delete mode 100644 dedicated_sdk/livox_sdk/sample/hub_lvx_file/main.cpp delete mode 100644 dedicated_sdk/livox_sdk/sample/lidar/CMakeLists.txt delete mode 100644 dedicated_sdk/livox_sdk/sample/lidar/main.c delete mode 100644 dedicated_sdk/livox_sdk/sample/lidar_lvx_file/CMakeLists.txt delete mode 100644 dedicated_sdk/livox_sdk/sample/lidar_lvx_file/lvx_file.cpp delete mode 100644 dedicated_sdk/livox_sdk/sample/lidar_lvx_file/lvx_file.h delete mode 100644 dedicated_sdk/livox_sdk/sample/lidar_lvx_file/main.cpp delete mode 100644 dedicated_sdk/livox_sdk/sample/lidar_lvx_file/third_party/rapidxml/rapidxml.hpp delete mode 100644 dedicated_sdk/livox_sdk/sample/lidar_lvx_file/third_party/rapidxml/rapidxml_iterators.hpp delete mode 100644 dedicated_sdk/livox_sdk/sample/lidar_lvx_file/third_party/rapidxml/rapidxml_print.hpp delete mode 100644 dedicated_sdk/livox_sdk/sample/lidar_lvx_file/third_party/rapidxml/rapidxml_utils.hpp delete mode 100644 dedicated_sdk/livox_sdk/sample_cc/hub/CMakeLists.txt delete mode 100644 dedicated_sdk/livox_sdk/sample_cc/hub/lds_hub.cpp delete mode 100644 dedicated_sdk/livox_sdk/sample_cc/hub/lds_hub.h delete mode 100644 dedicated_sdk/livox_sdk/sample_cc/hub/main.cpp delete mode 100644 dedicated_sdk/livox_sdk/sample_cc/lidar/CMakeLists.txt delete mode 100644 dedicated_sdk/livox_sdk/sample_cc/lidar/lds_lidar.cpp delete mode 100644 dedicated_sdk/livox_sdk/sample_cc/lidar/lds_lidar.h delete mode 100644 dedicated_sdk/livox_sdk/sample_cc/lidar/main.cpp delete mode 100644 dedicated_sdk/livox_sdk/sample_cc/lidar_utc_sync/CMakeLists.txt delete mode 100644 dedicated_sdk/livox_sdk/sample_cc/lidar_utc_sync/lds_lidar.cpp delete mode 100644 dedicated_sdk/livox_sdk/sample_cc/lidar_utc_sync/lds_lidar.h delete mode 100644 dedicated_sdk/livox_sdk/sample_cc/lidar_utc_sync/main.cpp delete mode 100644 dedicated_sdk/livox_sdk/sample_cc/lidar_utc_sync/synchro.cpp delete mode 100644 dedicated_sdk/livox_sdk/sample_cc/lidar_utc_sync/synchro.h delete mode 100644 dedicated_sdk/livox_sdk/sample_cc/trouble_shooting/CMakeLists.txt delete mode 100644 dedicated_sdk/livox_sdk/sample_cc/trouble_shooting/main.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/CMakeLists.txt delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/CMakeLists.txt.shared delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/CMakeLists.txt.static delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/comm/comm_port.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/comm/protocol.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/config.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/livox_def.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/livox_sdk.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/FastCRC/FastCRC.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/cmdline/cmdline.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/async.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/async_logger.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/common.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/details/async_logger_impl.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/details/circular_q.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/details/console_globals.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/details/file_helper.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/details/fmt_helper.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/details/log_msg.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/details/logger_impl.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/details/mpmc_blocking_q.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/details/null_mutex.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/details/os.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/details/pattern_formatter.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/details/periodic_worker.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/details/registry.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/details/thread_pool.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bin_to_hex.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/LICENSE.rst delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/chrono.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/color.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/core.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/format-inl.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/format.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/locale.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/ostream.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/posix.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/printf.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/ranges.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/time.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/fmt.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/fmt/ostr.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/formatter.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/logger.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/android_sink.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/ansicolor_sink.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/base_sink.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/basic_file_sink.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/daily_file_sink.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/dist_sink.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/msvc_sink.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/null_sink.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/ostream_sink.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/rotating_file_sink.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/sink.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/stdout_color_sinks.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/stdout_sinks.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/syslog_sink.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/sinks/wincolor_sink.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/spdlog.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/tweakme.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/include/third_party/spdlog/spdlog/version.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/command_callback.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/io_loop.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/io_loop.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/io_thread.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/io_thread.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/logging.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/logging.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/multiple_io/multiple_io_base.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/multiple_io/multiple_io_base.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/multiple_io/multiple_io_epoll.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/multiple_io/multiple_io_epoll.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/multiple_io/multiple_io_factory.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/multiple_io/multiple_io_kqueue.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/multiple_io/multiple_io_kqueue.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/multiple_io/multiple_io_poll.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/multiple_io/multiple_io_poll.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/multiple_io/multiple_io_select.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/multiple_io/multiple_io_select.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/network/network_util.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/network/unix/network_util.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/network/win/network_util.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/noncopyable.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/thread_base.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/thread_base.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/wake_up/unix/wake_up_pipe.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/wake_up/wake_up_pipe.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/base/wake_up/win/wake_up_pipe.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/comm/comm_port.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/comm/sdk_protocol.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/comm/sdk_protocol.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/command_handler/command_channel.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/command_handler/command_channel.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/command_handler/command_handler.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/command_handler/command_handler.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/command_handler/command_impl.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/command_handler/command_impl.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/command_handler/hub_command_handler.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/command_handler/hub_command_handler.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/command_handler/lidar_command_handler.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/command_handler/lidar_command_handler.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/data_handler/data_handler.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/data_handler/data_handler.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/data_handler/hub_data_handler.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/data_handler/hub_data_handler.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/data_handler/lidar_data_handler.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/data_handler/lidar_data_handler.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/device_discovery.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/device_discovery.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/device_manager.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/device_manager.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/direct_mode_handler.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/direct_mode_handler.h delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/livox_sdk.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/third_party/FastCRC/FastCRC_tables.hpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/third_party/FastCRC/FastCRCsw.cpp delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/third_party/FastCRC/LICENSE.md delete mode 100644 dedicated_sdk/livox_sdk/sdk_core/src/third_party/FastCRC/README.md delete mode 100644 dedicated_sdk/livox_sdk_common/CMakeLists.txt delete mode 100644 dedicated_sdk/livox_sdk_common/CMakeLists.txt.shared delete mode 100644 dedicated_sdk/livox_sdk_common/CMakeLists.txt.static delete mode 100644 dedicated_sdk/livox_sdk_common/include/livox_def_common.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/livox_sdk_common.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/livox_sdk_common_util.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/FastCRC/FastCRC.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/async.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/async_logger.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/common.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/details/async_logger_impl.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/details/circular_q.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/details/console_globals.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/details/file_helper.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/details/fmt_helper.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/details/log_msg.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/details/logger_impl.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/details/mpmc_blocking_q.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/details/null_mutex.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/details/os.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/details/pattern_formatter.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/details/periodic_worker.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/details/registry.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/details/thread_pool.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/fmt/bin_to_hex.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/fmt/bundled/LICENSE.rst delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/fmt/bundled/chrono.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/fmt/bundled/color.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/fmt/bundled/core.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/fmt/bundled/format-inl.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/fmt/bundled/format.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/fmt/bundled/locale.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/fmt/bundled/ostream.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/fmt/bundled/posix.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/fmt/bundled/printf.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/fmt/bundled/ranges.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/fmt/bundled/time.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/fmt/fmt.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/fmt/ostr.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/formatter.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/logger.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/sinks/android_sink.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/sinks/ansicolor_sink.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/sinks/base_sink.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/sinks/basic_file_sink.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/sinks/daily_file_sink.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/sinks/dist_sink.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/sinks/msvc_sink.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/sinks/null_sink.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/sinks/ostream_sink.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/sinks/rotating_file_sink.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/sinks/sink.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/sinks/stdout_color_sinks.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/sinks/stdout_sinks.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/sinks/syslog_sink.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/sinks/wincolor_sink.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/spdlog.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/tweakme.h delete mode 100644 dedicated_sdk/livox_sdk_common/include/third_party/spdlog/spdlog/version.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/algorithm/obstacle_zone_converter/obstacle_zone_converter.cpp delete mode 100644 dedicated_sdk/livox_sdk_common/src/algorithm/obstacle_zone_converter/obstacle_zone_converter.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/converter/lvx_to_point_cloud_frame.cpp delete mode 100644 dedicated_sdk/livox_sdk_common/src/converter/lvx_to_point_cloud_frame.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/livox_sdk_common.cpp delete mode 100644 dedicated_sdk/livox_sdk_common/src/lvx_handler/lvx_file_converter.cpp delete mode 100644 dedicated_sdk/livox_sdk_common/src/lvx_handler/lvx_file_converter.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/lvx_handler/lvx_file_def.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/lvx_handler/lvx_file_manager.cpp delete mode 100644 dedicated_sdk/livox_sdk_common/src/lvx_handler/lvx_file_manager.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/lvx_handler/lvx_file_parse_handler.cpp delete mode 100644 dedicated_sdk/livox_sdk_common/src/lvx_handler/lvx_file_parse_handler.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/lvx_handler/lvx_file_record_handler.cpp delete mode 100644 dedicated_sdk/livox_sdk_common/src/lvx_handler/lvx_file_record_handler.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/pub_handler/lidar_pub_handler.cpp delete mode 100644 dedicated_sdk/livox_sdk_common/src/pub_handler/lidar_pub_handler.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/pub_handler/pub_handler.cpp delete mode 100644 dedicated_sdk/livox_sdk_common/src/pub_handler/pub_handler.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/Cholesky delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/CholmodSupport delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/Core delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/Dense delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/Eigen delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/Eigenvalues delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/Geometry delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/Householder delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/IterativeLinearSolvers delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/Jacobi delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/LU delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/MetisSupport delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/OrderingMethods delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/PaStiXSupport delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/PardisoSupport delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/QR delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/QtAlignedMalloc delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/SPQRSupport delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/SVD delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/Sparse delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/SparseCholesky delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/SparseCore delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/SparseLU delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/SparseQR delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/StdDeque delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/StdList delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/StdVector delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/SuperLUSupport delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/UmfPackSupport delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Cholesky/LDLT.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Cholesky/LLT.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Cholesky/LLT_LAPACKE.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/CholmodSupport/CholmodSupport.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/Array.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/ArrayBase.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/ArrayWrapper.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/Assign.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/AssignEvaluator.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/Assign_MKL.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/BandMatrix.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/Block.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/BooleanRedux.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/CommaInitializer.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/ConditionEstimator.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/CoreEvaluators.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/CoreIterators.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/CwiseBinaryOp.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/CwiseNullaryOp.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/CwiseTernaryOp.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/CwiseUnaryOp.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/CwiseUnaryView.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/DenseBase.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/DenseStorage.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/Diagonal.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/DiagonalMatrix.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/DiagonalProduct.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/Dot.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/EigenBase.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/ForceAlignedAccess.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/Fuzzy.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/GeneralProduct.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/GenericPacketMath.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/GlobalFunctions.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/IO.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/Inverse.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/Map.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/MapBase.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/MathFunctions.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/MathFunctionsImpl.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/Matrix.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/MatrixBase.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/NestByValue.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/NoAlias.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/NumTraits.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/PermutationMatrix.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/PlainObjectBase.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/Product.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/ProductEvaluators.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/Random.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/Redux.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/Ref.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/Replicate.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/ReturnByValue.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/Reverse.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/Select.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/SelfAdjointView.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/SelfCwiseBinaryOp.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/Solve.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/SolveTriangular.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/SolverBase.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/StableNorm.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/Stride.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/Swap.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/Transpose.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/Transpositions.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/TriangularMatrix.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/VectorBlock.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/VectorwiseOp.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/Visitor.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/AVX/Complex.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/AVX/MathFunctions.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/AVX/PacketMath.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/AVX/TypeCasting.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/AVX512/MathFunctions.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/AVX512/PacketMath.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/AltiVec/Complex.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/AltiVec/MathFunctions.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/AltiVec/PacketMath.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/CUDA/Complex.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/CUDA/Half.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/CUDA/MathFunctions.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/CUDA/PacketMath.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/CUDA/PacketMathHalf.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/CUDA/TypeCasting.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/Default/ConjHelper.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/Default/Settings.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/NEON/Complex.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/NEON/MathFunctions.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/SSE/Complex.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/SSE/MathFunctions.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/SSE/TypeCasting.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/ZVector/Complex.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/ZVector/MathFunctions.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/arch/ZVector/PacketMath.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/functors/AssignmentFunctors.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/functors/BinaryFunctors.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/functors/NullaryFunctors.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/functors/StlFunctors.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/functors/TernaryFunctors.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/functors/UnaryFunctors.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/products/GeneralBlockPanelKernel.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/products/GeneralMatrixVector.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/products/Parallelizer.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/products/SelfadjointProduct.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/products/SelfadjointRank2Update.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/products/TriangularMatrixVector.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/products/TriangularSolverVector.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/util/BlasUtil.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/util/Constants.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/util/DisableStupidWarnings.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/util/ForwardDeclarations.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/util/MKL_support.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/util/Macros.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/util/Memory.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/util/Meta.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/util/NonMPL2.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/util/ReenableStupidWarnings.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/util/StaticAssert.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Core/util/XprHelper.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Eigenvalues/ComplexEigenSolver.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Eigenvalues/ComplexSchur.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Eigenvalues/EigenSolver.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Eigenvalues/HessenbergDecomposition.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Eigenvalues/RealQZ.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Eigenvalues/RealSchur.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Eigenvalues/Tridiagonalization.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Geometry/AlignedBox.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Geometry/AngleAxis.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Geometry/EulerAngles.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Geometry/Homogeneous.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Geometry/Hyperplane.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Geometry/OrthoMethods.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Geometry/ParametrizedLine.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Geometry/Quaternion.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Geometry/Rotation2D.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Geometry/RotationBase.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Geometry/Scaling.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Geometry/Transform.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Geometry/Translation.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Geometry/Umeyama.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Geometry/arch/Geometry_SSE.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Householder/BlockHouseholder.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Householder/Householder.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Householder/HouseholderSequence.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/IterativeLinearSolvers/SolveWithGuess.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/Jacobi/Jacobi.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/LU/Determinant.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/LU/FullPivLU.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/LU/InverseImpl.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/LU/PartialPivLU.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/LU/PartialPivLU_LAPACKE.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/LU/arch/Inverse_SSE.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/MetisSupport/MetisSupport.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/OrderingMethods/Amd.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/OrderingMethods/Eigen_Colamd.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/OrderingMethods/Ordering.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/PaStiXSupport/PaStiXSupport.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/PardisoSupport/PardisoSupport.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/QR/ColPivHouseholderQR.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/QR/CompleteOrthogonalDecomposition.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/QR/FullPivHouseholderQR.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/QR/HouseholderQR.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/QR/HouseholderQR_LAPACKE.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SVD/BDCSVD.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SVD/JacobiSVD.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SVD/JacobiSVD_LAPACKE.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SVD/SVDBase.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SVD/UpperBidiagonalization.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/AmbiVector.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/CompressedStorage.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/MappedSparseMatrix.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparseAssign.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparseBlock.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparseColEtree.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparseCompressedBase.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparseCwiseBinaryOp.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparseCwiseUnaryOp.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparseDenseProduct.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparseDiagonalProduct.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparseDot.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparseFuzzy.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparseMap.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparseMatrix.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparseMatrixBase.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparsePermutation.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparseProduct.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparseRedux.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparseRef.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparseSelfAdjointView.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparseSolverBase.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparseSparseProductWithPruning.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparseTranspose.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparseTriangularView.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparseUtil.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparseVector.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/SparseView.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseCore/TriangularSolver.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseLU/SparseLU.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseLU/SparseLUImpl.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseLU/SparseLU_Memory.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseLU/SparseLU_Structs.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseLU/SparseLU_Utils.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseLU/SparseLU_column_bmod.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseLU/SparseLU_column_dfs.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseLU/SparseLU_gemm_kernel.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseLU/SparseLU_kernel_bmod.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseLU/SparseLU_panel_bmod.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseLU/SparseLU_panel_dfs.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseLU/SparseLU_pivotL.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseLU/SparseLU_pruneL.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseLU/SparseLU_relax_snode.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SparseQR/SparseQR.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/StlSupport/StdDeque.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/StlSupport/StdList.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/StlSupport/StdVector.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/StlSupport/details.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/SuperLUSupport/SuperLUSupport.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/UmfPackSupport/UmfPackSupport.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/misc/Image.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/misc/Kernel.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/misc/RealSvd2x2.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/misc/blas.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/misc/lapack.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/misc/lapacke.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/misc/lapacke_mangling.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/plugins/ArrayCwiseBinaryOps.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/plugins/ArrayCwiseUnaryOps.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/plugins/BlockMethods.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/plugins/CommonCwiseBinaryOps.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/plugins/CommonCwiseUnaryOps.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/plugins/MatrixCwiseBinaryOps.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/Eigen/src/plugins/MatrixCwiseUnaryOps.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/signature_of_eigen3_matrix_library delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/AdolcForward delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/AlignedVector3 delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/ArpackSupport delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/AutoDiff delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/BVH delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/Tensor delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/TensorSymmetry delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/ThreadPool delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/Tensor.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorArgMax.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorAssign.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBase.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorBroadcasting.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorChipping.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContraction.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionBlocking.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionCuda.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionMapper.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorContractionThreadPool.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorConvolution.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCostModel.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorCustomOp.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDevice.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceCuda.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceDefault.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceSycl.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDeviceThreadPool.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensionList.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorDimensions.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvalTo.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorEvaluator.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExecutor.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorExpr.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFFT.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFixedSize.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForcedEval.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorForwardDeclarations.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorFunctors.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGenerator.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorGlobalFunctions.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIO.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorImagePatch.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIndexList.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInflation.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorInitializer.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorIntDiv.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorLayoutSwap.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMacros.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMap.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMeta.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorMorphing.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorPatch.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRandom.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReduction.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionCuda.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReductionSycl.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorRef.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorReverse.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorScan.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorShuffling.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStorage.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorStriding.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorSycl.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorSyclConvertToDeviceExpression.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorSyclExprConstructor.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorSyclExtractAccessor.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorSyclExtractFunctors.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorSyclLeafCount.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorSyclPlaceHolderExpr.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorSyclRun.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorSyclTuple.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorTraits.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/Tensor/TensorVolumePatch.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/DynamicSymmetry.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/StaticSymmetry.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/Symmetry.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/TensorSymmetry/util/TemplateGroupTheory.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/EventCount.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/RunQueue.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/SimpleThreadPool.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadEnvironment.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadLocal.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadPoolInterface.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/ThreadPool/ThreadYield.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Meta.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/util/CXX11Workarounds.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/util/EmulateArray.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/util/EmulateCXX11Meta.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/CXX11/src/util/MaxSizeVector.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/EulerAngles delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/FFT delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/IterativeSolvers delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/KroneckerProduct delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/LevenbergMarquardt delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/MPRealSupport delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/MatrixFunctions delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/MoreVectorization delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/NonLinearOptimization delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/NumericalDiff delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/OpenGLSupport delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/Polynomials delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/Skyline delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/SparseExtra delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/SpecialFunctions delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/Splines delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffJacobian.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/AutoDiff/AutoDiffVector.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/BVH/BVAlgorithms.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/BVH/KdBVH.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/Eigenvalues/ArpackSelfAdjointEigenSolver.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/EulerAngles/EulerAngles.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/EulerAngles/EulerSystem.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/FFT/ei_fftw_impl.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/FFT/ei_kissfft_impl.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/IterativeSolvers/DGMRES.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/IterativeSolvers/GMRES.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/IterativeSolvers/IncompleteLU.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/IterativeSolvers/IterationController.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/IterativeSolvers/MINRES.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/IterativeSolvers/Scaling.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMcovar.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMonestep.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMpar.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LMqrsolv.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixLogarithm.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixPower.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/MatrixFunctions/StemFunction.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/MoreVectorization/MathFunctions.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/HybridNonLinearSolver.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/chkder.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/covar.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/dogleg.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/fdjac1.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/lmpar.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/qrsolv.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1mpyq.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/r1updt.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/NonLinearOptimization/rwupdt.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/Polynomials/Companion.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialSolver.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/Polynomials/PolynomialUtils.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/Skyline/SkylineInplaceLU.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrix.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/Skyline/SkylineMatrixBase.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/Skyline/SkylineProduct.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/Skyline/SkylineStorage.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/Skyline/SkylineUtil.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/SparseExtra/BlockOfDynamicSparseMatrix.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/SparseExtra/BlockSparseMatrix.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/SparseExtra/MarketIO.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/SparseExtra/MatrixMarketIterator.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/SparseExtra/RandomSetter.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsArrayAPI.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsFunctors.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsHalf.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsImpl.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/SpecialFunctions/SpecialFunctionsPacketMath.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/SpecialFunctions/arch/CUDA/CudaSpecialFunctions.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/Splines/Spline.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/Splines/SplineFitting.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/include/eigen3/unsupported/Eigen/src/Splines/SplineFwd.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/share/eigen3/cmake/Eigen3Config.cmake delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/share/eigen3/cmake/Eigen3ConfigVersion.cmake delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/share/eigen3/cmake/Eigen3Targets.cmake delete mode 100644 dedicated_sdk/livox_sdk_common/src/third_party/eigen/share/eigen3/cmake/UseEigen3.cmake delete mode 100644 dedicated_sdk/livox_sdk_common/src/upgrader/firmware/firmware.cpp delete mode 100644 dedicated_sdk/livox_sdk_common/src/upgrader/firmware/firmware.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/upgrader/industry/industry_upgrader.cpp delete mode 100644 dedicated_sdk/livox_sdk_common/src/upgrader/industry/industry_upgrader.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/upgrader/livox_lidar/livox_lidar_upgrader.cpp delete mode 100644 dedicated_sdk/livox_sdk_common/src/upgrader/livox_lidar/livox_lidar_upgrader.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/upgrader/upgrade_manager.cpp delete mode 100644 dedicated_sdk/livox_sdk_common/src/upgrader/upgrade_manager.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/upgrader/vehicle/vehicle_lidar_upgrader.cpp delete mode 100644 dedicated_sdk/livox_sdk_common/src/upgrader/vehicle/vehicle_lidar_upgrader.h delete mode 100644 dedicated_sdk/livox_sdk_common/src/upgrader/vehicle/vehicle_upgrader.cpp delete mode 100644 dedicated_sdk/livox_sdk_common/src/upgrader/vehicle/vehicle_upgrader.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/.gitignore delete mode 100644 dedicated_sdk/livox_sdk_vehicle/CMakeLists.txt delete mode 100644 dedicated_sdk/livox_sdk_vehicle/Doxyfile delete mode 100644 dedicated_sdk/livox_sdk_vehicle/LICENSE.txt delete mode 100644 dedicated_sdk/livox_sdk_vehicle/README.md delete mode 100644 dedicated_sdk/livox_sdk_vehicle/README_CN.md delete mode 100644 dedicated_sdk/livox_sdk_vehicle/doc/images/1.png delete mode 100644 dedicated_sdk/livox_sdk_vehicle/doc/images/broadcast_code.png delete mode 100644 dedicated_sdk/livox_sdk_vehicle/doc/images/sample.png delete mode 100644 dedicated_sdk/livox_sdk_vehicle/doc/images/sdk.png delete mode 100644 dedicated_sdk/livox_sdk_vehicle/doc/images/sdk_init.png delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sample/upgrade/CMakeLists.txt delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sample/upgrade/firmware.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sample/upgrade/firmware.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sample/upgrade/lidar.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sample/upgrade/livox_manager.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sample/upgrade/livox_manager.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sample/upgrade/livox_upgrade_tool.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sample/upgrade/livox_upgrade_tool.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sample/upgrade/livox_upgrade_user_guide_cn.md delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sample/upgrade/upgrade.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sample/upgrade/upgrade.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/CMakeLists.txt delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/CMakeLists.txt.shared delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/CMakeLists.txt.static delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/comm/comm_port.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/comm/protocol.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/livox_config_vehicle.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/livox_def_vehicle.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/livox_sdk_vehicle.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/FastCRC/FastCRC.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/async.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/async_logger.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/common.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/details/async_logger_impl.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/details/circular_q.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/details/console_globals.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/details/file_helper.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/details/fmt_helper.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/details/log_msg.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/details/logger_impl.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/details/mpmc_blocking_q.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/details/null_mutex.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/details/os.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/details/pattern_formatter.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/details/periodic_worker.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/details/registry.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/details/thread_pool.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/fmt/bin_to_hex.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/LICENSE.rst delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/chrono.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/color.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/core.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/format-inl.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/format.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/locale.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/ostream.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/posix.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/printf.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/ranges.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/fmt/bundled/time.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/fmt/fmt.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/fmt/ostr.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/formatter.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/logger.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/sinks/android_sink.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/sinks/ansicolor_sink.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/sinks/base_sink.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/sinks/basic_file_sink.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/sinks/daily_file_sink.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/sinks/dist_sink.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/sinks/msvc_sink.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/sinks/null_sink.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/sinks/ostream_sink.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/sinks/rotating_file_sink.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/sinks/sink.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/sinks/stdout_color_sinks.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/sinks/stdout_sinks.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/sinks/syslog_sink.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/sinks/wincolor_sink.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/spdlog.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/tweakme.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/include/third_party/spdlog/spdlog/version.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/command_callback.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/io_loop.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/io_loop.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/io_thread.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/io_thread.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/logging.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/logging.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/multiple_io/multiple_io_base.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/multiple_io/multiple_io_base.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/multiple_io/multiple_io_epoll.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/multiple_io/multiple_io_epoll.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/multiple_io/multiple_io_factory.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/multiple_io/multiple_io_kqueue.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/multiple_io/multiple_io_kqueue.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/multiple_io/multiple_io_poll.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/multiple_io/multiple_io_poll.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/multiple_io/multiple_io_select.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/multiple_io/multiple_io_select.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/network/network_util.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/network/unix/network_util.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/network/win/network_util.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/noncopyable.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/thread_base.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/thread_base.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/wake_up/unix/wake_up_pipe.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/wake_up/wake_up_pipe.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/base/wake_up/win/wake_up_pipe.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/comm/comm_port.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/comm/sdk_protocol.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/comm/sdk_protocol.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/command_handler/command_channel.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/command_handler/command_channel.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/command_handler/command_handler.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/command_handler/command_handler.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/command_handler/command_impl.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/command_handler/command_impl.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/data_handler/data_handler.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/data_handler/data_handler.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/data_handler/lidar_data_handler.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/data_handler/lidar_data_handler.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/livox_sdk_vehicle.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/preconfig_manager.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/preconfig_manager.h delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/third_party/FastCRC/FastCRC_tables.hpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/third_party/FastCRC/FastCRCsw.cpp delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/third_party/FastCRC/LICENSE.md delete mode 100644 dedicated_sdk/livox_sdk_vehicle/sdk_core/src/third_party/FastCRC/README.md delete mode 100644 dedicated_sdk/sample/hap/livox_lidar_for_test/CMakeLists.txt delete mode 100644 dedicated_sdk/sample/hap/livox_lidar_for_test/config.json delete mode 100644 dedicated_sdk/sample/hap/livox_lidar_for_test/main.cpp delete mode 100644 dedicated_sdk/sample/hap/livox_lidar_parse_lvx2_file/CMakeLists.txt delete mode 100644 dedicated_sdk/sample/hap/livox_lidar_parse_lvx2_file/main.cpp delete mode 100644 dedicated_sdk/sample/hap/livox_lidar_quick_start/CMakeLists.txt delete mode 100644 dedicated_sdk/sample/hap/livox_lidar_quick_start/config.json delete mode 100644 dedicated_sdk/sample/hap/livox_lidar_quick_start/main.cpp delete mode 100644 dedicated_sdk/sample/hap/livox_lidar_record_lvx2_file/CMakeLists.txt delete mode 100644 dedicated_sdk/sample/hap/livox_lidar_record_lvx2_file/config.json delete mode 100644 dedicated_sdk/sample/hap/livox_lidar_record_lvx2_file/main.cpp delete mode 100644 dedicated_sdk/sample/hap/livox_lidar_view_quick_start/CMakeLists.txt delete mode 100644 dedicated_sdk/sample/hap/livox_lidar_view_quick_start/main.cpp delete mode 100644 dedicated_sdk/sample/hap/livox_multi_lidar_upgrade/CMakeLists.txt delete mode 100644 dedicated_sdk/sample/hap/livox_multi_lidar_upgrade/config.json delete mode 100644 dedicated_sdk/sample/hap/livox_multi_lidar_upgrade/main.cpp delete mode 100644 dedicated_sdk/sample/industry/industry_lidar_sample/CMakeLists.txt delete mode 100644 dedicated_sdk/sample/industry/industry_lidar_sample/main.c delete mode 100644 dedicated_sdk/sample/industry/industry_lidar_upgrade/CMakeLists.txt delete mode 100644 dedicated_sdk/sample/industry/industry_lidar_upgrade/main.cpp delete mode 100644 dedicated_sdk/sample/industry/lidar_upgrade/CMakeLists.txt delete mode 100644 dedicated_sdk/sample/industry/lidar_upgrade/main.cpp delete mode 100644 dedicated_sdk/sample/lvx/lvx2_to_lvx3/CMakeLists.txt delete mode 100644 dedicated_sdk/sample/lvx/lvx2_to_lvx3/main.cpp delete mode 100644 dedicated_sdk/sample/lvx/lvx3_to_lvx2/CMakeLists.txt delete mode 100644 dedicated_sdk/sample/lvx/lvx3_to_lvx2/main.cpp delete mode 100644 dedicated_sdk/sample/lvx/obstacle_avoidance_test/CMakeLists.txt delete mode 100644 dedicated_sdk/sample/lvx/obstacle_avoidance_test/main.cpp delete mode 100644 dedicated_sdk/sample/lvx/parse_lvx_file/CMakeLists.txt delete mode 100644 dedicated_sdk/sample/lvx/parse_lvx_file/main.cpp delete mode 100644 dedicated_sdk/sample/lvx/record_lvx2_file/CMakeLists.txt delete mode 100644 dedicated_sdk/sample/lvx/record_lvx2_file/main.cpp delete mode 100644 dedicated_sdk/sample/lvx/record_lvx2_file_industrial/CMakeLists.txt delete mode 100644 dedicated_sdk/sample/lvx/record_lvx2_file_industrial/main.cpp delete mode 100644 dedicated_sdk/sample/lvx/record_lvx3_file_industrial/CMakeLists.txt delete mode 100644 dedicated_sdk/sample/lvx/record_lvx3_file_industrial/main.cpp delete mode 100644 dedicated_sdk/sample/vehicle/vehicle_lidar_preconfig/CMakeLists.txt delete mode 100644 dedicated_sdk/sample/vehicle/vehicle_lidar_preconfig/main.cpp delete mode 100644 dedicated_sdk/sample/vehicle/vehicle_lidar_quick_start/CMakeLists.txt delete mode 100644 dedicated_sdk/sample/vehicle/vehicle_lidar_quick_start/main.cpp delete mode 100644 dedicated_sdk/sample/vehicle/vehicle_lidar_upgrade/CMakeLists.txt delete mode 100644 dedicated_sdk/sample/vehicle/vehicle_lidar_upgrade/main.cpp delete mode 100644 dedicated_sdk/sample/vehicle/vehicle_multi_lidar_upgrade/CMakeLists.txt delete mode 100644 dedicated_sdk/sample/vehicle/vehicle_multi_lidar_upgrade/main.cpp rename launch_ROS1/{livox_lidar_msg_HAP.launch => msg_HAP.launch} (84%) create mode 100644 launch_ROS1/msg_MID360.launch create mode 100644 launch_ROS1/msg_mixed.launch rename launch_ROS1/{livox_lidar_rviz_HAP.launch => rviz_HAP.launch} (80%) create mode 100644 launch_ROS1/rviz_MID360.launch create mode 100644 launch_ROS1/rviz_mixed.launch create mode 100644 launch_ROS2/msg_HAP_launch.py create mode 100644 launch_ROS2/msg_MID360_launch.py create mode 100644 launch_ROS2/rviz_HAP_launch.py create mode 100644 launch_ROS2/rviz_MID360_launch.py create mode 100644 launch_ROS2/rviz_mixed.py delete mode 100644 package.xml create mode 100644 package_ROS2.xml delete mode 100644 src/call_back/hub_callback.cpp delete mode 100644 src/call_back/hub_callback.h delete mode 100644 src/call_back/industrial_lidar_callback.cpp delete mode 100644 src/call_back/industrial_lidar_callback.h delete mode 100644 src/call_back/vehicle_lidar_callback.cpp delete mode 100644 src/call_back/vehicle_lidar_callback.h create mode 100644 src/comm/pub_handler.cpp create mode 100644 src/comm/pub_handler.h delete mode 100644 src/lds_hub.cpp delete mode 100644 src/lds_hub.h delete mode 100644 src/parse_cfg_file/parse_industrial_lidar_cfg.cpp delete mode 100644 src/parse_cfg_file/parse_industrial_lidar_cfg.h delete mode 100644 src/parse_cfg_file/parse_vehicle_lidar_cfg.cpp delete mode 100644 src/parse_cfg_file/parse_vehicle_lidar_cfg.h delete mode 100644 src/vehicle_lidar_thread.cpp delete mode 100644 src/vehicle_lidar_thread.h delete mode 100644 timesync/README.txt delete mode 100644 timesync/package.xml delete mode 100644 timesync/timesync.cpp delete mode 100644 timesync/timesync.h delete mode 100644 timesync/user_uart/user_uart.cpp delete mode 100644 timesync/user_uart/user_uart.h diff --git a/.gitignore b/.gitignore index bbcc46d6..d7c3a849 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ .vscode build -dedicated_sdk/build -/CMakeList.txt -package.xml \ No newline at end of file +package.xml +__pycache__ \ No newline at end of file diff --git a/common/rapidjson/allocators.h b/3rdparty/rapidjson/allocators.h similarity index 100% rename from common/rapidjson/allocators.h rename to 3rdparty/rapidjson/allocators.h diff --git a/common/rapidjson/cursorstreamwrapper.h b/3rdparty/rapidjson/cursorstreamwrapper.h similarity index 100% rename from common/rapidjson/cursorstreamwrapper.h rename to 3rdparty/rapidjson/cursorstreamwrapper.h diff --git a/common/rapidjson/document.h b/3rdparty/rapidjson/document.h similarity index 100% rename from common/rapidjson/document.h rename to 3rdparty/rapidjson/document.h diff --git a/common/rapidjson/encodedstream.h b/3rdparty/rapidjson/encodedstream.h similarity index 100% rename from common/rapidjson/encodedstream.h rename to 3rdparty/rapidjson/encodedstream.h diff --git a/common/rapidjson/encodings.h b/3rdparty/rapidjson/encodings.h similarity index 100% rename from common/rapidjson/encodings.h rename to 3rdparty/rapidjson/encodings.h diff --git a/common/rapidjson/error/en.h b/3rdparty/rapidjson/error/en.h similarity index 100% rename from common/rapidjson/error/en.h rename to 3rdparty/rapidjson/error/en.h diff --git a/common/rapidjson/error/error.h b/3rdparty/rapidjson/error/error.h similarity index 100% rename from common/rapidjson/error/error.h rename to 3rdparty/rapidjson/error/error.h diff --git a/common/rapidjson/filereadstream.h b/3rdparty/rapidjson/filereadstream.h similarity index 100% rename from common/rapidjson/filereadstream.h rename to 3rdparty/rapidjson/filereadstream.h diff --git a/common/rapidjson/filewritestream.h b/3rdparty/rapidjson/filewritestream.h similarity index 100% rename from common/rapidjson/filewritestream.h rename to 3rdparty/rapidjson/filewritestream.h diff --git a/common/rapidjson/fwd.h b/3rdparty/rapidjson/fwd.h similarity index 100% rename from common/rapidjson/fwd.h rename to 3rdparty/rapidjson/fwd.h diff --git a/common/rapidjson/internal/biginteger.h b/3rdparty/rapidjson/internal/biginteger.h similarity index 100% rename from common/rapidjson/internal/biginteger.h rename to 3rdparty/rapidjson/internal/biginteger.h diff --git a/common/rapidjson/internal/clzll.h b/3rdparty/rapidjson/internal/clzll.h similarity index 100% rename from common/rapidjson/internal/clzll.h rename to 3rdparty/rapidjson/internal/clzll.h diff --git a/common/rapidjson/internal/diyfp.h b/3rdparty/rapidjson/internal/diyfp.h similarity index 100% rename from common/rapidjson/internal/diyfp.h rename to 3rdparty/rapidjson/internal/diyfp.h diff --git a/common/rapidjson/internal/dtoa.h b/3rdparty/rapidjson/internal/dtoa.h similarity index 100% rename from common/rapidjson/internal/dtoa.h rename to 3rdparty/rapidjson/internal/dtoa.h diff --git a/common/rapidjson/internal/ieee754.h b/3rdparty/rapidjson/internal/ieee754.h similarity index 100% rename from common/rapidjson/internal/ieee754.h rename to 3rdparty/rapidjson/internal/ieee754.h diff --git a/common/rapidjson/internal/itoa.h b/3rdparty/rapidjson/internal/itoa.h similarity index 100% rename from common/rapidjson/internal/itoa.h rename to 3rdparty/rapidjson/internal/itoa.h diff --git a/common/rapidjson/internal/meta.h b/3rdparty/rapidjson/internal/meta.h similarity index 100% rename from common/rapidjson/internal/meta.h rename to 3rdparty/rapidjson/internal/meta.h diff --git a/common/rapidjson/internal/pow10.h b/3rdparty/rapidjson/internal/pow10.h similarity index 100% rename from common/rapidjson/internal/pow10.h rename to 3rdparty/rapidjson/internal/pow10.h diff --git a/common/rapidjson/internal/regex.h b/3rdparty/rapidjson/internal/regex.h similarity index 100% rename from common/rapidjson/internal/regex.h rename to 3rdparty/rapidjson/internal/regex.h diff --git a/common/rapidjson/internal/stack.h b/3rdparty/rapidjson/internal/stack.h similarity index 100% rename from common/rapidjson/internal/stack.h rename to 3rdparty/rapidjson/internal/stack.h diff --git a/common/rapidjson/internal/strfunc.h b/3rdparty/rapidjson/internal/strfunc.h similarity index 100% rename from common/rapidjson/internal/strfunc.h rename to 3rdparty/rapidjson/internal/strfunc.h diff --git a/common/rapidjson/internal/strtod.h b/3rdparty/rapidjson/internal/strtod.h similarity index 100% rename from common/rapidjson/internal/strtod.h rename to 3rdparty/rapidjson/internal/strtod.h diff --git a/common/rapidjson/internal/swap.h b/3rdparty/rapidjson/internal/swap.h similarity index 100% rename from common/rapidjson/internal/swap.h rename to 3rdparty/rapidjson/internal/swap.h diff --git a/common/rapidjson/istreamwrapper.h b/3rdparty/rapidjson/istreamwrapper.h similarity index 100% rename from common/rapidjson/istreamwrapper.h rename to 3rdparty/rapidjson/istreamwrapper.h diff --git a/3rdparty/rapidjson/license.txt b/3rdparty/rapidjson/license.txt new file mode 100644 index 00000000..7ccc161c --- /dev/null +++ b/3rdparty/rapidjson/license.txt @@ -0,0 +1,57 @@ +Tencent is pleased to support the open source community by making RapidJSON available. + +Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. + +If you have downloaded a copy of the RapidJSON binary from Tencent, please note that the RapidJSON binary is licensed under the MIT License. +If you have downloaded a copy of the RapidJSON source code from Tencent, please note that RapidJSON source code is licensed under the MIT License, except for the third-party components listed below which are subject to different license terms. Your integration of RapidJSON into your own projects may require compliance with the MIT License, as well as the other licenses applicable to the third-party components included within RapidJSON. To avoid the problematic JSON license in your own projects, it's sufficient to exclude the bin/jsonchecker/ directory, as it's the only code under the JSON license. +A copy of the MIT License is included in this file. + +Other dependencies and licenses: + +Open Source Software Licensed Under the BSD License: +-------------------------------------------------------------------- + +The msinttypes r29 +Copyright (c) 2006-2013 Alexander Chemeris +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +* Neither the name of copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Open Source Software Licensed Under the JSON License: +-------------------------------------------------------------------- + +json.org +Copyright (c) 2002 JSON.org +All Rights Reserved. + +JSON_checker +Copyright (c) 2002 JSON.org +All Rights Reserved. + + +Terms of the JSON License: +--------------------------------------------------- + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +The Software shall be used for Good, not Evil. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +Terms of the MIT License: +-------------------------------------------------------------------- + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/common/rapidjson/memorybuffer.h b/3rdparty/rapidjson/memorybuffer.h similarity index 100% rename from common/rapidjson/memorybuffer.h rename to 3rdparty/rapidjson/memorybuffer.h diff --git a/common/rapidjson/memorystream.h b/3rdparty/rapidjson/memorystream.h similarity index 100% rename from common/rapidjson/memorystream.h rename to 3rdparty/rapidjson/memorystream.h diff --git a/common/rapidjson/msinttypes/inttypes.h b/3rdparty/rapidjson/msinttypes/inttypes.h similarity index 100% rename from common/rapidjson/msinttypes/inttypes.h rename to 3rdparty/rapidjson/msinttypes/inttypes.h diff --git a/common/rapidjson/msinttypes/stdint.h b/3rdparty/rapidjson/msinttypes/stdint.h similarity index 100% rename from common/rapidjson/msinttypes/stdint.h rename to 3rdparty/rapidjson/msinttypes/stdint.h diff --git a/common/rapidjson/ostreamwrapper.h b/3rdparty/rapidjson/ostreamwrapper.h similarity index 100% rename from common/rapidjson/ostreamwrapper.h rename to 3rdparty/rapidjson/ostreamwrapper.h diff --git a/common/rapidjson/pointer.h b/3rdparty/rapidjson/pointer.h similarity index 100% rename from common/rapidjson/pointer.h rename to 3rdparty/rapidjson/pointer.h diff --git a/common/rapidjson/prettywriter.h b/3rdparty/rapidjson/prettywriter.h similarity index 100% rename from common/rapidjson/prettywriter.h rename to 3rdparty/rapidjson/prettywriter.h diff --git a/common/rapidjson/rapidjson.h b/3rdparty/rapidjson/rapidjson.h similarity index 100% rename from common/rapidjson/rapidjson.h rename to 3rdparty/rapidjson/rapidjson.h diff --git a/common/rapidjson/reader.h b/3rdparty/rapidjson/reader.h similarity index 100% rename from common/rapidjson/reader.h rename to 3rdparty/rapidjson/reader.h diff --git a/common/rapidjson/schema.h b/3rdparty/rapidjson/schema.h similarity index 100% rename from common/rapidjson/schema.h rename to 3rdparty/rapidjson/schema.h diff --git a/common/rapidjson/stream.h b/3rdparty/rapidjson/stream.h similarity index 100% rename from common/rapidjson/stream.h rename to 3rdparty/rapidjson/stream.h diff --git a/common/rapidjson/stringbuffer.h b/3rdparty/rapidjson/stringbuffer.h similarity index 100% rename from common/rapidjson/stringbuffer.h rename to 3rdparty/rapidjson/stringbuffer.h diff --git a/common/rapidjson/writer.h b/3rdparty/rapidjson/writer.h similarity index 100% rename from common/rapidjson/writer.h rename to 3rdparty/rapidjson/writer.h diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..d3f47f37 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,22 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +## [1.0.0] - 2022-12-12 + +### Added + +- support Mid-360 Lidar. +- support for Ubuntu 22.04 ROS2 humble. +- support multi-topic fuction, the suffix of the topic name corresponds to the ip address of each Lidar. + +### Changed + +- remove the embedded SDK. +- Constraint: Livox ROS Driver 2 for ROS2 does not support message passing with PCL native data types. + +### Fixed + +- Fix IMU packet loss. +- Fix some conflicts with livox ros driver. +- Fixed HAP Lidar publishing PointCloud2 and CustomMsg format point clouds with no line number. diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..98b35564 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,338 @@ +# judge which cmake codes to use +if(ROS_EDITION STREQUAL "ROS1") + + # Copyright(c) 2019 livoxtech limited. + + cmake_minimum_required(VERSION 3.0) + + + #--------------------------------------------------------------------------------------- + # Start livox_ros_driver2 project + #--------------------------------------------------------------------------------------- + include(cmake/version.cmake) + project(livox_ros_driver2 VERSION ${LIVOX_ROS_DRIVER2_VERSION} LANGUAGES CXX) + message(STATUS "livox_ros_driver2 version: ${LIVOX_ROS_DRIVER2_VERSION}") + + #--------------------------------------------------------------------------------------- + # Add ROS Version MACRO + #--------------------------------------------------------------------------------------- + add_definitions(-DBUILDING_ROS1) + + #--------------------------------------------------------------------------------------- + # find package and the dependecy + #--------------------------------------------------------------------------------------- + find_package(Boost 1.54 REQUIRED COMPONENTS + system + thread + chrono + ) + + ## Find catkin macros and libraries + ## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) + ## is used, also find other catkin packages + find_package(catkin REQUIRED COMPONENTS + roscpp + rospy + sensor_msgs + std_msgs + message_generation + rosbag + pcl_ros + ) + + ## Find pcl lib + find_package(PCL REQUIRED) + + ## Generate messages in the 'msg' folder + add_message_files(FILES + CustomPoint.msg + CustomMsg.msg + # Message2.msg + ) + + ## Generate added messages and services with any dependencies listed here + generate_messages(DEPENDENCIES + std_msgs + ) + + find_package(PkgConfig) + pkg_check_modules(APR apr-1) + if (APR_FOUND) + message(${APR_INCLUDE_DIRS}) + message(${APR_LIBRARIES}) + endif (APR_FOUND) + + ################################### + ## catkin specific configuration ## + ################################### + ## The catkin_package macro generates cmake config files for your package + ## Declare things to be passed to dependent projects + ## INCLUDE_DIRS: uncomment this if your package contains header files + ## LIBRARIES: libraries you create in this project that dependent projects als o need + ## CATKIN_DEPENDS: catkin_packages dependent projects also need + ## DEPENDS: system dependencies of this project that dependent projects also n eed + catkin_package(CATKIN_DEPENDS + roscpp rospy std_msgs message_runtime + pcl_ros + ) + + #--------------------------------------------------------------------------------------- + # Set default build to release + #--------------------------------------------------------------------------------------- + if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose Release or Debug" FORCE) + endif() + + #--------------------------------------------------------------------------------------- + # Compiler config + #--------------------------------------------------------------------------------------- + set(CMAKE_CXX_STANDARD 11) + set(CMAKE_CXX_STANDARD_REQUIRED ON) + set(CMAKE_CXX_EXTENSIONS OFF) + + ## make sure the livox_lidar_sdk_static library is installed + find_library(LIVOX_LIDAR_SDK_LIBRARY liblivox_lidar_sdk_static.a /usr/local/lib) + + ## PCL library + link_directories(${PCL_LIBRARY_DIRS}) + add_definitions(${PCL_DEFINITIONS}) + + #--------------------------------------------------------------------------------------- + # generate excutable and add libraries + #--------------------------------------------------------------------------------------- + add_executable(${PROJECT_NAME}_node + "" + ) + + #--------------------------------------------------------------------------------------- + # precompile macro and compile option + #--------------------------------------------------------------------------------------- + target_compile_options(${PROJECT_NAME}_node + PRIVATE $<$:-Wall> + ) + + #--------------------------------------------------------------------------------------- + # add projects that depend on + #--------------------------------------------------------------------------------------- + add_dependencies(${PROJECT_NAME}_node ${PROJECT_NAME}_generate_messages_cpp) + + #--------------------------------------------------------------------------------------- + # source file + #--------------------------------------------------------------------------------------- + target_sources(${PROJECT_NAME}_node + PRIVATE + src/driver_node.cpp + src/lds.cpp + src/lds_lvx.cpp + src/lds_lidar.cpp + src/lddc.cpp + src/livox_ros_driver2.cpp + + src/comm/comm.cpp + src/comm/ldq.cpp + src/comm/semaphore.cpp + src/comm/lidar_imu_data_queue.cpp + src/comm/cache_index.cpp + src/comm/pub_handler.cpp + + src/parse_cfg_file/parse_cfg_file.cpp + src/parse_cfg_file/parse_livox_lidar_cfg.cpp + + src/call_back/lidar_common_callback.cpp + src/call_back/livox_lidar_callback.cpp + ) + + #--------------------------------------------------------------------------------------- + # include file + #--------------------------------------------------------------------------------------- + target_include_directories(${PROJECT_NAME}_node + PUBLIC + ${catkin_INCLUDE_DIRS} + ${PCL_INCLUDE_DIRS} + ${APR_INCLUDE_DIRS} + 3rdparty + src + ) + + #--------------------------------------------------------------------------------------- + # link libraries + #--------------------------------------------------------------------------------------- + target_link_libraries(${PROJECT_NAME}_node + ${LIVOX_LIDAR_SDK_LIBRARY} + ${Boost_LIBRARY} + ${catkin_LIBRARIES} + ${PCL_LIBRARIES} + ${APR_LIBRARIES} + ) + + + #--------------------------------------------------------------------------------------- + # Install + #--------------------------------------------------------------------------------------- + + install(TARGETS ${PROJECT_NAME}_node + ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} + LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} + RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} + ) + + install(DIRECTORY launch_ROS1/ + DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/launch_ROS1 + ) + + #--------------------------------------------------------------------------------------- + # end of CMakeList.txt + #--------------------------------------------------------------------------------------- + + +else(ROS_EDITION STREQUAL "ROS2") + + # Copyright(c) 2020 livoxtech limited. + + cmake_minimum_required(VERSION 3.14) + project(livox_ros_driver2) + + # Default to C99 + if(NOT CMAKE_C_STANDARD) + set(CMAKE_C_STANDARD 99) + endif() + + # Default to C++14 + if(NOT CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 14) + endif() + + list(INSERT CMAKE_MODULE_PATH 0 "${PROJECT_SOURCE_DIR}/cmake/modules") + + if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + add_compile_options(-Wall -Wextra -Wpedantic -Wno-unused-parameter) + endif() + + # Printf version info + include(cmake/version.cmake) + project(${PROJECT_NAME} VERSION ${LIVOX_ROS_DRIVER2_VERSION} LANGUAGES CXX) + message(STATUS "${PROJECT_NAME} version: ${LIVOX_ROS_DRIVER2_VERSION}") + + #--------------------------------------------------------------------------------------- + # Add ROS Version MACRO + #--------------------------------------------------------------------------------------- + add_definitions(-DBUILDING_ROS2) + + # find dependencies + # uncomment the following section in order to fill in + # further dependencies manually. + # find_package( REQUIRED) + find_package(ament_cmake_auto REQUIRED) + ament_auto_find_build_dependencies() + find_package(PCL REQUIRED) + find_package(std_msgs REQUIRED) + find_package(builtin_interfaces REQUIRED) + find_package(rosidl_default_generators REQUIRED) + + # check apr + find_package(PkgConfig) + pkg_check_modules(APR apr-1) + if (APR_FOUND) + message(${APR_INCLUDE_DIRS}) + message(${APR_LIBRARIES}) + endif (APR_FOUND) + + # generate custom msg headers + set(LIVOX_INTERFACES livox_interfaces2) + rosidl_generate_interfaces(${LIVOX_INTERFACES} + "msg/CustomPoint.msg" + "msg/CustomMsg.msg" + DEPENDENCIES builtin_interfaces std_msgs + LIBRARY_NAME ${PROJECT_NAME} + ) + + ## make sure the livox_lidar_sdk_shared library is installed + find_library(LIVOX_LIDAR_SDK_LIBRARY liblivox_lidar_sdk_shared.so /usr/local/lib REQUIRED) + + ## + find_path(LIVOX_LIDAR_SDK_INCLUDE_DIR + NAMES "livox_lidar_api.h" "livox_lidar_def.h" + REQUIRED) + + ## PCL library + link_directories(${PCL_LIBRARY_DIRS}) + add_definitions(${PCL_DEFINITIONS}) + + # livox ros2 driver target + ament_auto_add_library(${PROJECT_NAME} SHARED + src/livox_ros_driver2.cpp + src/lddc.cpp + src/driver_node.cpp + src/lds.cpp + src/lds_lidar.cpp + src/lds_lvx.cpp + + src/comm/comm.cpp + src/comm/ldq.cpp + src/comm/semaphore.cpp + src/comm/lidar_imu_data_queue.cpp + src/comm/cache_index.cpp + src/comm/pub_handler.cpp + + src/parse_cfg_file/parse_cfg_file.cpp + src/parse_cfg_file/parse_livox_lidar_cfg.cpp + + src/call_back/lidar_common_callback.cpp + src/call_back/livox_lidar_callback.cpp + ) + + target_include_directories(${PROJECT_NAME} PRIVATE ${livox_sdk_INCLUDE_DIRS}) + + # get include directories of custom msg headers + if(HUMBLE_ROS STREQUAL "humble") + rosidl_get_typesupport_target(cpp_typesupport_target + ${LIVOX_INTERFACES} "rosidl_typesupport_cpp") + target_link_libraries(${PROJECT_NAME} "${cpp_typesupport_target}") + else() + set(LIVOX_INTERFACE_TARGET "${LIVOX_INTERFACES}__rosidl_typesupport_cpp") + add_dependencies(${PROJECT_NAME} ${LIVOX_INTERFACES}) + get_target_property(LIVOX_INTERFACES_INCLUDE_DIRECTORIES ${LIVOX_INTERFACE_TARGET} INTERFACE_INCLUDE_DIRECTORIES) + endif() + + # include file direcotry + target_include_directories(${PROJECT_NAME} PUBLIC + ${PCL_INCLUDE_DIRS} + ${APR_INCLUDE_DIRS} + ${LIVOX_LIDAR_SDK_INCLUDE_DIR} + ${LIVOX_INTERFACES_INCLUDE_DIRECTORIES} # for custom msgs + 3rdparty + src + ) + + # link libraries + target_link_libraries(${PROJECT_NAME} + ${LIVOX_LIDAR_SDK_LIBRARY} + ${LIVOX_INTERFACE_TARGET} # for custom msgs + ${PPT_LIBRARY} + ${Boost_LIBRARY} + ${PCL_LIBRARIES} + ${APR_LIBRARIES} + ) + + rclcpp_components_register_node(${PROJECT_NAME} + PLUGIN "livox_ros::DriverNode" + EXECUTABLE ${PROJECT_NAME}_node + ) + + if(BUILD_TESTING) + find_package(ament_lint_auto REQUIRED) + # the following line skips the linter which checks for copyrights + # uncomment the line when a copyright and license is not present in all source files + #set(ament_cmake_copyright_FOUND TRUE) + # the following line skips cpplint (only works in a git repo) + # uncomment the line when this package is not in a git repo + #set(ament_cmake_cpplint_FOUND TRUE) + ament_lint_auto_find_test_dependencies() + endif() + + ament_auto_package(INSTALL_TO_SHARE + config + launch_ROS2 + ) + +endif() \ No newline at end of file diff --git a/CMakeLists_ROS1.txt b/CMakeLists_ROS1.txt deleted file mode 100644 index c5d61e1a..00000000 --- a/CMakeLists_ROS1.txt +++ /dev/null @@ -1,220 +0,0 @@ -# Copyright(c) 2019 livoxtech limited. - -cmake_minimum_required(VERSION 3.0) - - -#--------------------------------------------------------------------------------------- -# Start livox_ros_driver2 project -#--------------------------------------------------------------------------------------- -include(cmake/version.cmake) -project(livox_ros_driver2 VERSION ${LIVOX_ROS_DRIVER2_VERSION} LANGUAGES CXX) -message(STATUS "livox_ros_driver2 version: ${LIVOX_ROS_DRIVER2_VERSION}") - -#--------------------------------------------------------------------------------------- -# Add ROS Version MACRO -#--------------------------------------------------------------------------------------- -add_definitions(-DBUILDING_ROS1) - -#--------------------------------------------------------------------------------------- -# find package and the dependecy -#--------------------------------------------------------------------------------------- -find_package(Boost 1.54 REQUIRED COMPONENTS - system - thread - chrono - ) - -## Find catkin macros and libraries -## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) -## is used, also find other catkin packages -find_package(catkin REQUIRED COMPONENTS - roscpp - rospy - sensor_msgs - std_msgs - message_generation - rosbag - pcl_ros - ) - -## Find pcl lib -find_package(PCL REQUIRED) - -## Generate messages in the 'msg' folder -add_message_files(FILES - CustomPoint.msg - CustomMsg.msg -# Message2.msg - ) - -## Generate added messages and services with any dependencies listed here -generate_messages(DEPENDENCIES - std_msgs - ) - -find_package(PkgConfig) -pkg_check_modules(APR apr-1) -if (APR_FOUND) - message(${APR_INCLUDE_DIRS}) - message(${APR_LIBRARIES}) -endif (APR_FOUND) - -################################### -## catkin specific configuration ## -################################### -## The catkin_package macro generates cmake config files for your package -## Declare things to be passed to dependent projects -## INCLUDE_DIRS: uncomment this if your package contains header files -## LIBRARIES: libraries you create in this project that dependent projects als o need -## CATKIN_DEPENDS: catkin_packages dependent projects also need -## DEPENDS: system dependencies of this project that dependent projects also n eed -catkin_package(CATKIN_DEPENDS - roscpp rospy std_msgs message_runtime - pcl_ros - ) - -#--------------------------------------------------------------------------------------- -# Set default build to release -#--------------------------------------------------------------------------------------- -if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose Release or Debug" FORCE) -endif() - -#--------------------------------------------------------------------------------------- -# Compiler config -#--------------------------------------------------------------------------------------- -set(CMAKE_CXX_STANDARD 11) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_CXX_EXTENSIONS OFF) - -## make sure the livox_sdk_static library is installed -find_library(LIVOX_SDK_LIBRARY liblivox_sdk_static.a /usr/local/lib) -find_library(LIVOX_SDK_VEHICLE_LIBRARY liblivox_sdk_vehicle_static.a /usr/local/lib) -find_library(LIVOX_SDK_COMMON_LIBRARY liblivox_sdk_common_static.a /usr/local/lib) -find_library(LIVOX_LIDAR_SDK_LIBRARY liblivox_lidar_sdk_static.a /usr/local/lib) - -include_directories( - ./ - ${CMAKE_CURRENT_SOURCE_DIR}/livox_sdk/sdk_core/include - ${CMAKE_CURRENT_SOURCE_DIR}/livox_sdk_vehicle/sdk_core/include - ${CMAKE_CURRENT_SOURCE_DIR}/livox_sdk_common/include -) - -link_directories( - ./ - ${CMAKE_CURRENT_SOURCE_DIR}/livox_sdk/build/sdk_core - ${CMAKE_CURRENT_SOURCE_DIR}/livox_sdk_vehicle/build/sdk_core -) - - -## PCL library -link_directories(${PCL_LIBRARY_DIRS}) -add_definitions(${PCL_DEFINITIONS}) - -#--------------------------------------------------------------------------------------- -# generate excutable and add libraries -#--------------------------------------------------------------------------------------- -add_executable(${PROJECT_NAME}_node - "" - ) - -#--------------------------------------------------------------------------------------- -# precompile macro and compile option -#--------------------------------------------------------------------------------------- -target_compile_options(${PROJECT_NAME}_node - PRIVATE $<$:-Wall> - ) - -#--------------------------------------------------------------------------------------- -# add projects that depend on -#--------------------------------------------------------------------------------------- -add_dependencies(${PROJECT_NAME}_node ${PROJECT_NAME}_generate_messages_cpp) - -#--------------------------------------------------------------------------------------- -# source file -#--------------------------------------------------------------------------------------- -target_sources(${PROJECT_NAME}_node - PRIVATE - src/driver_node.cpp - src/lds.cpp - src/lds_lvx.cpp - src/lds_lidar.cpp - src/lds_hub.cpp - src/lddc.cpp - src/livox_ros_driver2.cpp - - src/vehicle_lidar_thread.cpp - src/comm/comm.cpp - src/comm/ldq.cpp - src/comm/semaphore.cpp - src/comm/lidar_imu_data_queue.cpp - src/comm/cache_index.cpp - - src/parse_cfg_file/parse_cfg_file.cpp - src/parse_cfg_file/parse_industrial_lidar_cfg.cpp - src/parse_cfg_file/parse_vehicle_lidar_cfg.cpp - src/parse_cfg_file/parse_livox_lidar_cfg.cpp - - src/call_back/industrial_lidar_callback.cpp - src/call_back/vehicle_lidar_callback.cpp - src/call_back/lidar_common_callback.cpp - src/call_back/hub_callback.cpp - src/call_back/livox_lidar_callback.cpp - - timesync/timesync.cpp - timesync/user_uart/user_uart.cpp - common/comm/comm_protocol.cpp - common/comm/sdk_protocol.cpp - common/comm/gps_protocol.cpp - ) - -#--------------------------------------------------------------------------------------- -# include file -#--------------------------------------------------------------------------------------- -target_include_directories(${PROJECT_NAME}_node - PUBLIC - ${catkin_INCLUDE_DIRS} - ${PCL_INCLUDE_DIRS} - ${APR_INCLUDE_DIRS} - common - common/rapidjson - comon/rapdidxml - common/comm - timesync - timesync/user_uart - src - ) - -#--------------------------------------------------------------------------------------- -# link libraries -#--------------------------------------------------------------------------------------- -target_link_libraries(${PROJECT_NAME}_node - ${LIVOX_SDK_LIBRARY} - ${LIVOX_SDK_VEHICLE_LIBRARY} - ${LIVOX_SDK_COMMON_LIBRARY} - ${LIVOX_LIDAR_SDK_LIBRARY} - ${Boost_LIBRARY} - ${catkin_LIBRARIES} - ${PCL_LIBRARIES} - ${APR_LIBRARIES} - ) - - -#--------------------------------------------------------------------------------------- -# Install -#--------------------------------------------------------------------------------------- - -install(TARGETS ${PROJECT_NAME}_node - ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} - LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} - RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} - ) - -install(DIRECTORY launch_ROS1/ - DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/launch_ROS1 - ) - -#--------------------------------------------------------------------------------------- -# end of CMakeList.txt -#--------------------------------------------------------------------------------------- - diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 00000000..1d0b6ffb --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,414 @@ +The following portions of the LIVOX’s Livox ROS Driver2 (“Software” referred to in the terms below) are made available to you under the terms of the MIT License provided below and is also available at https://opensource.org/licenses/MIT. + +livox_ros_driver2 +├── build.sh +├── cmake +│   └── version.cmake +├── CMakeLists.txt +├── config +│   ├── display_point_cloud_ROS1.rviz +│   ├── display_point_cloud_ROS2.rviz +│   ├── HAP_config.json +│   ├── MID360_config.json +│   └── mixed_HAP_MID360_config.json +├── launch_ROS1 +│   ├── msg_HAP.launch +│   ├── msg_MID360.launch +│   ├── msg_mixed.launch +│   ├── rviz_HAP.launch +│   ├── rviz_MID360.launch +│   └── rviz_mixed.launch +├── launch_ROS2 +│   ├── msg_HAP_launch.py +│   ├── msg_MID360_launch.py +│   ├── rviz_HAP_launch.py +│   ├── rviz_MID360_launch.py +│   └── rviz_mixed.py +├── msg +│   ├── CustomMsg.msg +│   └── CustomPoint.msg +├── package_ROS1.xml +├── package_ROS2.xml +├── package.xml +├── README.md +└── src + ├── call_back + │   ├── lidar_common_callback.cpp + │   ├── lidar_common_callback.h + │   ├── livox_lidar_callback.cpp + │   └── livox_lidar_callback.h + ├── comm + │   ├── cache_index.cpp + │   ├── cache_index.h + │   ├── comm.cpp + │   ├── comm.h + │   ├── ldq.cpp + │   ├── ldq.h + │   ├── lidar_imu_data_queue.cpp + │   ├── lidar_imu_data_queue.h + │   ├── pub_handler.cpp + │   ├── pub_handler.h + │   ├── semaphore.cpp + │   └── semaphore.h + ├── driver_node.cpp + ├── driver_node.h + ├── include + │   ├── livox_ros_driver2.h + │   ├── ros1_headers.h + │   ├── ros2_headers.h + │   └── ros_headers.h + ├── lddc.cpp + ├── lddc.h + ├── lds.cpp + ├── lds.h + ├── lds_lidar.cpp + ├── lds_lidar.h + ├── lds_lvx.cpp + ├── lds_lvx.h + ├── livox_ros_driver2.cpp + └── parse_cfg_file + ├── parse_cfg_file.cpp + ├── parse_cfg_file.h + ├── parse_livox_lidar_cfg.cpp + └── parse_livox_lidar_cfg.h + +--------------------------------- + +The MIT License (MIT) + +Copyright (c) 2022 Livox. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +=============================================================== + +LIVOX’s Livox ROS Driver2 uses unmodified source code of RapidJSON (https://github.com/Tencent/rapidjson), which is also licensed under MIT license. A copy of the MIT license is provided below and is also available at https://opensource.org/licenses/MIT. + +livox_ros_driver2 +├── 3rdparty +│   └── rapidjson +│   ├── allocators.h +│   ├── cursorstreamwrapper.h +│   ├── document.h +│   ├── encodedstream.h +│   ├── encodings.h +│   ├── error +│   │   ├── en.h +│   │   └── error.h +│   ├── filereadstream.h +│   ├── filewritestream.h +│   ├── fwd.h +│   ├── internal +│   │   ├── biginteger.h +│   │   ├── clzll.h +│   │   ├── diyfp.h +│   │   ├── dtoa.h +│   │   ├── ieee754.h +│   │   ├── itoa.h +│   │   ├── meta.h +│   │   ├── pow10.h +│   │   ├── regex.h +│   │   ├── stack.h +│   │   ├── strfunc.h +│   │   ├── strtod.h +│   │   └── swap.h +│   ├── istreamwrapper.h +│   ├── memorybuffer.h +│   ├── memorystream.h +│   ├── msinttypes +│   │   ├── inttypes.h +│   │   └── stdint.h +│   ├── ostreamwrapper.h +│   ├── pointer.h +│   ├── prettywriter.h +│   ├── rapidjson.h +│   ├── reader.h +│   ├── schema.h +│   ├── stream.h +│   ├── stringbuffer.h +│   └── writer.h + +------------------------------------------------------------- + +Tencent is pleased to support the open source community by making RapidJSON +available. + +Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All +rights reserved. + +Licensed under the MIT License (the "License"); you may not use this file +except in compliance with the License. You may obtain a copy of the License +at + +http://opensource.org/licenses/MIT + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +License for the specific language governing permissions and limitations under +the License. + +=============================================================== + +LIVOX’s Livox ROS Driver2 uses unmodified libraries and interfaces of ROS (https://www.ros.org/), which is also licensed under 3-Clause-BSD license. A copy of the 3-Clause-BSD license is provided below and is also available at https://opensource.org/licenses/BSD-3-Clause. + +------------------------------------------------------------- + +The 3-Clause BSD License + +Copyright (c) 2001 - 2009, The Board of Trustees of the University of Illinois. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the + above copyright notice, this list of conditions + and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the University of Illinois + nor the names of its contributors may be used to + endorse or promote products derived from this + software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +=============================================================== + +LIVOX’s Livox ROS Driver2 uses unmodified libraries and interfaces of ROS2-rclcpp (https://github.com/ros2), which is also licensed under Apache License 2.0. A copy of the Apache License 2.0 is provided below and is also available at https://www.apache.org/licenses/LICENSE-2.0. + +------------------------------------------------------------- + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md index 98d069bd..3ba93b76 100644 --- a/README.md +++ b/README.md @@ -1,116 +1,354 @@ # Livox ROS Driver 2 -Livox ROS Driver 2 is the 2nd-generation driver package used to connect LiDAR products produced by Livox. +Livox ROS Driver 2 is the 2nd-generation driver package used to connect LiDAR products produced by Livox, applicable for ROS (noetic recommended) and ROS2 (foxy or humble recommended). -#### **Notes** -Livox ROS Driver 2 of current version support only ROS1 (noetic recommended), and it can be run with ROS2 in the near future. +## 1. Preparation -## 1. Prepare to install Livox ROS Driver 2 -### 1.1 Prerequisites -* OS: Ubuntu 18.04/20.04 -* ROS: Noetic Ninjemys (ROS2 would be supported in the near future) +### 1.1 OS requirements + + * Ubuntu 18.04 or above, for ROS Melodic; + * Ubuntu 20.04 or above, for ROS Noetic and ROS2 Foxy; + * Ubuntu 22.04 or above, for ROS2 Humble; + + **Tips:** + + Colcon is a build tool used in ROS2. + + How to install colcon: [Colcon installation instructions](https://docs.ros.org/en/foxy/Tutorials/Beginner-Client-Libraries/Colcon-Tutorial.html) + +### 1.2 Install ROS & ROS2 + +For ROS Melodic installation, please refer to: +[ROS Melodic installation instructions](https://wiki.ros.org/melodic/Installation) -### 1.2 Install ROS For ROS Noetic installation, please refer to: [ROS Noetic installation instructions](https://wiki.ros.org/noetic/Installation) +For ROS2 Foxy installation, please refer to: +[ROS Foxy installation instructions](https://docs.ros.org/en/foxy/Installation/Ubuntu-Install-Debians.html) + +For ROS2 Humble installation, please refer to: +[ROS Humble installation instructions](https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html) + Desktop-Full installation is recommend. +## 2. Build & Run Livox ROS Driver 2 + +### 2.1 Clone Livox ROS Driver 2 source code: -## 2. Build & run Livox ROS Driver 2 -1. Clone Livox ROS Driver 2 source code: ```shell git clone https://github.com/Livox-SDK/livox_ros_driver2.git ws_livox/src/livox_ros_driver2 ``` -2. Build & install the dedicated Livox SDK: -```shell -cd ws_livox/src/livox_ros_driver2 -sudo ./dedicated_sdk/build.sh ROS1 -``` -3. Build the Livox ROS Driver 2 (take Noetic as example): + + **Note :** + + Be sure to clone the source code in a '[work_space]/src/' folder (as shown above), otherwise compilation errors will occur due to the compilation tool restriction. + +### 2.2 Build & install the Livox-SDK2 + + **Note :** + + Please follow the guidance of installation in the [Livox-SDK2/livox_lidar_sdk/readme.md](https://github.com/Livox-SDK/Livox-SDK2) + +### 2.3 Build the Livox ROS Driver 2: + +#### For ROS (take Noetic as an example): ```shell source /opt/ros/noetic/setup.sh ./build.sh ROS1 ``` -4. Run Livox ROS Driver 2: + +#### For ROS2 Foxy: +```shell +source /opt/ros/foxy/setup.sh +./build.sh ROS2 +``` + +#### For ROS2 Humble: +```shell +source /opt/ros/humble/setup.sh +./build.sh humble +``` + +### 2.4 Run Livox ROS Driver 2: + +#### For ROS: + ```shell source ../../devel/setup.sh roslaunch livox_ros_driver2 [launch file] ``` + +in which, + +* **livox_ros_driver2** : is the ROS package name of Livox ROS Driver 2; +* **[launch file]** : is the ROS launch file you want to use; the 'launch_ROS1' folder contains several launch samples for your reference; + +An rviz launch example for HAP LiDAR would be: + +```shell +roslaunch livox_ros_driver2 rviz_HAP.launch +``` + +#### For ROS2: +```shell +source ../../install/setup.sh +ros2 launch livox_ros_driver2 [launch file] +``` + in which, -* livox_ros_driver2: the ROS package name of Livox ROS Driver 2; -* [launch file]: the ROS launch file in the 'launch_ROS1' folder, containing the launch info and config about the target LiDAR(s); + +* **[launch file]** : is the ROS2 launch file you want to use; the 'launch_ROS2' folder contains several launch samples for your reference. A rviz launch example for HAP LiDAR would be: + ```shell -roslaunch livox_ros_driver2 livox_lidar_rviz_HAP.launch +ros2 launch livox_ros_driver2 rviz_HAP_launch.py ``` -## 3. LiDAR config -LiDAR Configurations (such as ip, port, data type... etc.) can be set via a json-style config file. The parameter naming *'user_config_path'* in launch files indicates such json file path. +## 3. Launch file and livox_ros_driver2 internal parameter configuration instructions + +### 3.1 Launch file configuration instructions + +Launch files of ROS are in the "ws_livox/src/livox_ros_driver2/launch_ROS1" directory and launch files of ROS2 are in the "ws_livox/src/livox_ros_driver2/launch_ROS2" directory. Different launch files have different configuration parameter values and are used in different scenarios: + +| launch file name | Description | +| ------------------------- | ------------------------------------------------------------ | +| rviz_HAP.launch | Connect to HAP LiDAR device
Publish pointcloud2 format data
Autoload rviz | +| msg_HAP.launch | Connect to HAP LiDAR device
Publish livox customized pointcloud data| +| rviz_MID360.launch | Connect to MID360 LiDAR device
Publish pointcloud2 format data
Autoload rviz| +| msg_MID360.launch | Connect to MID360 LiDAR device
Publish livox customized pointcloud data | +| rviz_mixed.launch | Connect to HAP and MID360 LiDAR device
Publish pointcloud2 format data
Autoload rviz| +| msg_mixed.launch | Connect to HAP and MID360 LiDAR device
Publish livox customized pointcloud data | + +### 3.2 Livox ros driver 2 internal main parameter configuration instructions + +All internal parameters of Livox_ros_driver2 are in the launch file. Below are detailed descriptions of the three commonly used parameters : + +| Parameter | Detailed description | Default | +| ------------ | ------------------------------------------------------------ | ------- | +| publish_freq | Set the frequency of point cloud publish
Floating-point data type, recommended values 5.0, 10.0, 20.0, 50.0, etc. The maximum publish frequency is 100.0 Hz.| 10.0 | +| multi_topic | If the LiDAR device has an independent topic to publish pointcloud data
0 -- All LiDAR devices use the same topic to publish pointcloud data
1 -- Each LiDAR device has its own topic to publish point cloud data | 0 | +| xfer_format | Set pointcloud format
0 -- Livox pointcloud2(PointXYZRTL) pointcloud format
1 -- Livox customized pointcloud format
2 -- Standard pointcloud2 (pcl :: PointXYZI) pointcloud format in the PCL library (just for ROS) | 0 | + + **Note :** + + Other parameters not mentioned in this table are not suggested to be changed unless fully understood. + +    ***Livox_ros_driver2 pointcloud data detailed description :*** + +1. Livox pointcloud2 (PointXYZRTL) point cloud format, as follows : + +```c +float32 x # X axis, unit:m +float32 y # Y axis, unit:m +float32 z # Z axis, unit:m +float32 intensity # the value is reflectivity, 0.0~255.0 +uint8 tag # livox tag +uint8 line # laser number in lidar +``` + +2. Livox customized data package format, as follows : + +```c +std_msgs/Header header # ROS standard message header +uint64 timebase # The time of first point +uint32 point_num # Total number of pointclouds +uint8 lidar_id # Lidar device id number +uint8[3] rsvd # Reserved use +CustomPoint[] points # Pointcloud data +``` + +    Customized Point Cloud (CustomPoint) format in the above customized data package : + +```c +uint32 offset_time # offset time relative to the base time +float32 x # X axis, unit:m +float32 y # Y axis, unit:m +float32 z # Z axis, unit:m +uint8 reflectivity # reflectivity, 0~255 +uint8 tag # livox tag +uint8 line # laser number in lidar +``` + +3. The standard pointcloud2 (pcl :: PointXYZI) format in the PCL library (only ROS can publish): + +    Please refer to the pcl :: PointXYZI data structure in the point_types.hpp file of the PCL library. + +## 4. LiDAR config + +LiDAR Configurations (such as ip, port, data type... etc.) can be set via a json-style config file. Config files for single HAP, Mid360 and mixed-LiDARs are in the "config" folder. The parameter naming *'user_config_path'* in launch files indicates such json file path. + +1. Follow is a configuration example for HAP LiDAR (located in config/HAP_config.json): -Follow is a configuration example for HAP LiDAR(located in config_ROS1/HAP_config.json): ```json { - "lidar_summary_info" : { - "lidar_type": 8 # protocol type index, please don't revise this value - }, - "HAP": { - "device_type" : "HAP", - "lidar_ipaddr": "", - "lidar_net_info" : { - "cmd_data_port": 56000, # command port - "push_msg_port": 0, - "point_data_port": 57000, - "imu_data_port": 58000, - "log_data_port": 59000 - }, - "host_net_info" : { - "cmd_data_ip" : "192.168.1.5", # host ip - "cmd_data_port": 56000, - "push_msg_ip": "", - "push_msg_port": 0, - "point_data_ip": "192.168.1.5", # host ip - "point_data_port": 57000, - "imu_data_ip" : "192.168.1.5", # host ip - "imu_data_port": 58000, - "log_data_ip" : "", - "log_data_port": 59000 - } - }, - "lidar_configs" : [ - { - "ip" : "192.168.1.100", # ip of the LiDAR you want to config - "pcl_data_type" : 1, - "pattern_mode" : 0, - "blind_spot_set" : 50, - "extrinsic_parameter" : { - "roll": 0.0, - "pitch": 0.0, - "yaw": 0.0, - "x": 0, - "y": 0, - "z": 0 - } - } - ] + "lidar_summary_info" : { + "lidar_type": 8 # protocol type index, please don't revise this value + }, + "HAP": { + "device_type" : "HAP", + "lidar_ipaddr": "", + "lidar_net_info" : { + "cmd_data_port": 56000, # command port + "push_msg_port": 0, + "point_data_port": 57000, + "imu_data_port": 58000, + "log_data_port": 59000 + }, + "host_net_info" : { + "cmd_data_ip" : "192.168.1.5", # host ip (it can be revised) + "cmd_data_port": 56000, + "push_msg_ip": "", + "push_msg_port": 0, + "point_data_ip": "192.168.1.5", # host ip + "point_data_port": 57000, + "imu_data_ip" : "192.168.1.5", # host ip + "imu_data_port": 58000, + "log_data_ip" : "", + "log_data_port": 59000 + } + }, + "lidar_configs" : [ + { + "ip" : "192.168.1.100", # ip of the LiDAR you want to config + "pcl_data_type" : 1, + "pattern_mode" : 0, + "blind_spot_set" : 50, + "extrinsic_parameter" : { + "roll": 0.0, + "pitch": 0.0, + "yaw": 0.0, + "x": 0, + "y": 0, + "z": 0 + } + } + ] } - ``` +The parameter attributes in the above json file are described in the following table : + +**LiDAR configuration parameter** +| Parameter | Type | Description | Default | +| :------------------------- | ------- | ------------------------------------------------------------ | --------------- | +| ip | String | Ip of the LiDAR you want to config | 192.168.1.100 | +| pcl_data_type | Int | Choose the resolution of the point cloud data to send
1 -- Cartesian coordinate data (32 bits)
2 -- Cartesian coordinate data (16 bits)
3 --Spherical coordinate data| 1 | +| pattern_mode | Int | Space scan pattern
0 -- non-repeating scanning pattern mode
1 -- repeating scanning pattern mode
2 -- repeating scanning pattern mode (low scanning rate) | 0 | +| blind_spot_set (Only for HAP LiDAR) | Int | Set blind spot
Range from 50 cm to 200 cm | 50 | +| extrinsic_parameter | | Set extrinsic parameter
The data types of "roll" "picth" "yaw" are float
The data types of "x" "y" "z" are int
| + For more infomation about the HAP config, please refer to: [HAP Config File Description](https://github.com/Livox-SDK/Livox-SDK2/wiki/hap-config-file-description) +2. When connecting multiple LiDARs, add objects corresponding to different LiDARs to the "lidar_configs" array. Examples of mixed-LiDARs config file contents are as follows : + +```json +{ + "lidar_summary_info" : { + "lidar_type": 8 # protocol type index, please don't revise this value + }, + "HAP": { + "lidar_net_info" : { # HAP ports, please don't revise these values + "cmd_data_port": 56000, # HAP command port + "push_msg_port": 0, + "point_data_port": 57000, + "imu_data_port": 58000, + "log_data_port": 59000 + }, + "host_net_info" : { + "cmd_data_ip" : "192.168.1.5", # host ip + "cmd_data_port": 56000, + "push_msg_ip": "", + "push_msg_port": 0, + "point_data_ip": "192.168.1.5", # host ip + "point_data_port": 57000, + "imu_data_ip" : "192.168.1.5", # host ip + "imu_data_port": 58000, + "log_data_ip" : "", + "log_data_port": 59000 + } + }, + "MID360": { + "lidar_net_info" : { # Mid360 ports, please don't revise these values + "cmd_data_port": 56100, # Mid360 command port + "push_msg_port": 56200, + "point_data_port": 56300, + "imu_data_port": 56400, + "log_data_port": 56500 + }, + "host_net_info" : { + "cmd_data_ip" : "192.168.1.5", # host ip + "cmd_data_port": 56101, + "push_msg_ip": "192.168.1.5", # host ip + "push_msg_port": 56201, + "point_data_ip": "192.168.1.5", # host ip + "point_data_port": 56301, + "imu_data_ip" : "192.168.1.5", # host ip + "imu_data_port": 56401, + "log_data_ip" : "", + "log_data_port": 56501 + } + }, + "lidar_configs" : [ + { + "ip" : "192.168.1.100", # ip of the HAP you want to config + "pcl_data_type" : 1, + "pattern_mode" : 0, + "blind_spot_set" : 50, + "extrinsic_parameter" : { + "roll": 0.0, + "pitch": 0.0, + "yaw": 0.0, + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "ip" : "192.168.1.12", # ip of the Mid360 you want to config + "pcl_data_type" : 1, + "pattern_mode" : 0, + "extrinsic_parameter" : { + "roll": 0.0, + "pitch": 0.0, + "yaw": 0.0, + "x": 0, + "y": 0, + "z": 0 + } + } + ] +} +``` + +## 5. Supported LiDAR list -## 4. Supported LiDAR list * HAP +* Mid360 * (more types are comming soon...) +## 6. FAQ + +### 6.1 launch with "livox_lidar_rviz_HAP.launch" but no point cloud display on the grid? -## 5. FAQ -### 5.1 launch with "livox_lidar_rviz_HAP.launch" but no point cloud display on the grid? Please check the "Global Options - Fixed Frame" field in the RViz "Display" pannel. Set the field value to "livox_frame" and check the "PointCloud2" option in the pannel. +### 6.2 launch with command "ros2 launch livox_lidar_rviz_HAP_launch.py" but cannot open shared object file "liblivox_sdk_shared.so" ? + +Please add '/usr/local/lib' to the env LD_LIBRARY_PATH. + +* If you want to add to current terminal: + ```shell + export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib + ``` +* If you want to add to current user: + ```shell + vim ~/.bashrc + export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib + source ~/.bashrc + ``` diff --git a/build.sh b/build.sh index 4e929ce0..3ce316c8 100755 --- a/build.sh +++ b/build.sh @@ -2,16 +2,21 @@ readonly VERSION_ROS1="ROS1" readonly VERSION_ROS2="ROS2" +readonly VERSION_HUMBLE="humble" pushd `pwd` > /dev/null cd `dirname $0` echo "Working Path: "`pwd` ROS_VERSION="" +ROS_HUMBLE="" # Set working ROS version if [ "$1" = "ROS2" ]; then ROS_VERSION=${VERSION_ROS2} +elif [ "$1" = "humble" ]; then + ROS_VERSION=${VERSION_ROS2} + ROS_HUMBLE=${VERSION_HUMBLE} elif [ "$1" = "ROS1" ]; then ROS_VERSION=${VERSION_ROS1} else @@ -34,49 +39,32 @@ fi # substitute the files/folders: CMakeList.txt, package.xml(s) if [ ${ROS_VERSION} = ${VERSION_ROS1} ]; then - if [ -f CMakeLists.txt ]; then - rm CMakeLists.txt - fi if [ -f package.xml ]; then rm package.xml fi - cp -f CMakeLists_ROS1.txt CMakeLists.txt cp -f package_ROS1.xml package.xml elif [ ${ROS_VERSION} = ${VERSION_ROS2} ]; then - if [ -f CMakeLists.txt ]; then - rm CMakeLists.txt - fi if [ -f package.xml ]; then rm package.xml fi - cp CMakeLists_ROS2.txt CMakeLists.txt cp -f package_ROS2.xml package.xml - cp -rf config_ROS2/ config/ cp -rf launch_ROS2/ launch/ - cp ../livox_interfaces/package_ROS2.xml ../livox_interfaces/package.xml - cp ../livox_sdk_vendor/package_ROS2.xml ../livox_sdk_vendor/package.xml fi # build pushd `pwd` > /dev/null if [ $ROS_VERSION = ${VERSION_ROS1} ]; then cd ../../ - catkin_make + catkin_make -DROS_EDITION=${VERSION_ROS1} elif [ $ROS_VERSION = ${VERSION_ROS2} ]; then cd ../../ - colcon build + colcon build --cmake-args -DROS_EDITION=${VERSION_ROS2} -DHUMBLE_ROS=${ROS_HUMBLE} fi popd > /dev/null # remove the substituted folders/files -rm CMakeLists.txt - if [ $ROS_VERSION = ${VERSION_ROS2} ]; then - rm ../livox_interfaces/package.xml - rm ../livox_sdk_vendor/package.xml - rm -rf config/ rm -rf launch/ fi - popd > /dev/null diff --git a/common/FastCRC/FastCRC.h b/common/FastCRC/FastCRC.h deleted file mode 100644 index 27926933..00000000 --- a/common/FastCRC/FastCRC.h +++ /dev/null @@ -1,80 +0,0 @@ -/* FastCRC library code is placed under the MIT license - * Copyright (c) 2014,2015 Frank Bosing - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -// Teensy 3.0, Teensy 3.1: -// See K20P64M72SF1RM.pdf (Kinetis), Pages 638 - 641 for documentation of CRC -// Device See KINETIS_4N30D.pdf for Errata (Errata ID 2776) -// -// So, ALL HW-calculations are done as 32 bit. -// -// -// -// Thanks to: -// - Catalogue of parametrised CRC algorithms, CRC RevEng -// http://reveng.sourceforge.net/crc-catalogue/ -// -// - Danjel McGougan (CRC-Table-Generator) -// - -// -// modify from FastCRC library @ 2018/11/20 -// - -#ifndef FASTCRC_FASTCRC_H_ -#define FASTCRC_FASTCRC_H_ - -#include - -// ================= 16-BIT CRC =================== - -class FastCRC16 { - public: - FastCRC16(uint16_t seed); - - // change function name from mcrf4xx_upd to mcrf4xx - uint16_t mcrf4xx_calc( - const uint8_t *data, - const uint16_t datalen); // Equivalent to _crc_ccitt_update() in - // crc16.h from avr_libc - - private: - uint16_t seed_; -}; - -// ================= 32-BIT CRC =================== - -class FastCRC32 { - public: - FastCRC32(uint32_t seed); - - // change function name from crc32_upd to crc32 - uint32_t crc32_calc( - const uint8_t *data, - uint16_t len); // Call for subsequent calculations with previous seed - - private: - uint32_t seed_; -}; - -#endif // FASTCRC_FASTCRC_H_ diff --git a/common/FastCRC/FastCRC_tables.hpp b/common/FastCRC/FastCRC_tables.hpp deleted file mode 100644 index 7d9e3a6c..00000000 --- a/common/FastCRC/FastCRC_tables.hpp +++ /dev/null @@ -1,201 +0,0 @@ -/* FastCRC library code is placed under the MIT license - * Copyright (c) 2014,2015 Frank Bosing - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/* - Tables generated with universal_crc by Danjel McGougan -*/ - -// -// modify from FastCRC library @ 2018/11/20 -// - -#ifndef FASTCRC_FASTCRC_TABLES_H_ -#define FASTCRC_FASTCRC_TABLES_H_ - -#include - -// crc16 table -const uint16_t crc_table_mcrf4xx[1024] = { - 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, 0x8c48, - 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, 0x1081, 0x0108, - 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, 0x9cc9, 0x8d40, 0xbfdb, - 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, 0x2102, 0x308b, 0x0210, 0x1399, - 0x6726, 0x76af, 0x4434, 0x55bd, 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, - 0xfae7, 0xc87c, 0xd9f5, 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, - 0x54b5, 0x453c, 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, - 0xc974, 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb, - 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3, 0x5285, - 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a, 0xdecd, 0xcf44, - 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72, 0x6306, 0x728f, 0x4014, - 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9, 0xef4e, 0xfec7, 0xcc5c, 0xddd5, - 0xa96a, 0xb8e3, 0x8a78, 0x9bf1, 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, - 0x242a, 0x16b1, 0x0738, 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, - 0x9af9, 0x8b70, 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, - 0xf0b7, 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff, - 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, 0x18c1, - 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e, 0xa50a, 0xb483, - 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5, 0x2942, 0x38cb, 0x0a50, - 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd, 0xb58b, 0xa402, 0x9699, 0x8710, - 0xf3af, 0xe226, 0xd0bd, 0xc134, 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, - 0x6e6e, 0x5cf5, 0x4d7c, 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, - 0xa33a, 0xb2b3, 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, - 0x3efb, 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, - 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a, 0xe70e, - 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1, 0x6b46, 0x7acf, - 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9, 0xf78f, 0xe606, 0xd49d, - 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, 0x7bc7, 0x6a4e, 0x58d5, 0x495c, - 0x3de3, 0x2c6a, 0x1ef1, 0x0f78, 0x0000, 0x19d8, 0x33b0, 0x2a68, 0x6760, - 0x7eb8, 0x54d0, 0x4d08, 0xcec0, 0xd718, 0xfd70, 0xe4a8, 0xa9a0, 0xb078, - 0x9a10, 0x83c8, 0x9591, 0x8c49, 0xa621, 0xbff9, 0xf2f1, 0xeb29, 0xc141, - 0xd899, 0x5b51, 0x4289, 0x68e1, 0x7139, 0x3c31, 0x25e9, 0x0f81, 0x1659, - 0x2333, 0x3aeb, 0x1083, 0x095b, 0x4453, 0x5d8b, 0x77e3, 0x6e3b, 0xedf3, - 0xf42b, 0xde43, 0xc79b, 0x8a93, 0x934b, 0xb923, 0xa0fb, 0xb6a2, 0xaf7a, - 0x8512, 0x9cca, 0xd1c2, 0xc81a, 0xe272, 0xfbaa, 0x7862, 0x61ba, 0x4bd2, - 0x520a, 0x1f02, 0x06da, 0x2cb2, 0x356a, 0x4666, 0x5fbe, 0x75d6, 0x6c0e, - 0x2106, 0x38de, 0x12b6, 0x0b6e, 0x88a6, 0x917e, 0xbb16, 0xa2ce, 0xefc6, - 0xf61e, 0xdc76, 0xc5ae, 0xd3f7, 0xca2f, 0xe047, 0xf99f, 0xb497, 0xad4f, - 0x8727, 0x9eff, 0x1d37, 0x04ef, 0x2e87, 0x375f, 0x7a57, 0x638f, 0x49e7, - 0x503f, 0x6555, 0x7c8d, 0x56e5, 0x4f3d, 0x0235, 0x1bed, 0x3185, 0x285d, - 0xab95, 0xb24d, 0x9825, 0x81fd, 0xccf5, 0xd52d, 0xff45, 0xe69d, 0xf0c4, - 0xe91c, 0xc374, 0xdaac, 0x97a4, 0x8e7c, 0xa414, 0xbdcc, 0x3e04, 0x27dc, - 0x0db4, 0x146c, 0x5964, 0x40bc, 0x6ad4, 0x730c, 0x8ccc, 0x9514, 0xbf7c, - 0xa6a4, 0xebac, 0xf274, 0xd81c, 0xc1c4, 0x420c, 0x5bd4, 0x71bc, 0x6864, - 0x256c, 0x3cb4, 0x16dc, 0x0f04, 0x195d, 0x0085, 0x2aed, 0x3335, 0x7e3d, - 0x67e5, 0x4d8d, 0x5455, 0xd79d, 0xce45, 0xe42d, 0xfdf5, 0xb0fd, 0xa925, - 0x834d, 0x9a95, 0xafff, 0xb627, 0x9c4f, 0x8597, 0xc89f, 0xd147, 0xfb2f, - 0xe2f7, 0x613f, 0x78e7, 0x528f, 0x4b57, 0x065f, 0x1f87, 0x35ef, 0x2c37, - 0x3a6e, 0x23b6, 0x09de, 0x1006, 0x5d0e, 0x44d6, 0x6ebe, 0x7766, 0xf4ae, - 0xed76, 0xc71e, 0xdec6, 0x93ce, 0x8a16, 0xa07e, 0xb9a6, 0xcaaa, 0xd372, - 0xf91a, 0xe0c2, 0xadca, 0xb412, 0x9e7a, 0x87a2, 0x046a, 0x1db2, 0x37da, - 0x2e02, 0x630a, 0x7ad2, 0x50ba, 0x4962, 0x5f3b, 0x46e3, 0x6c8b, 0x7553, - 0x385b, 0x2183, 0x0beb, 0x1233, 0x91fb, 0x8823, 0xa24b, 0xbb93, 0xf69b, - 0xef43, 0xc52b, 0xdcf3, 0xe999, 0xf041, 0xda29, 0xc3f1, 0x8ef9, 0x9721, - 0xbd49, 0xa491, 0x2759, 0x3e81, 0x14e9, 0x0d31, 0x4039, 0x59e1, 0x7389, - 0x6a51, 0x7c08, 0x65d0, 0x4fb8, 0x5660, 0x1b68, 0x02b0, 0x28d8, 0x3100, - 0xb2c8, 0xab10, 0x8178, 0x98a0, 0xd5a8, 0xcc70, 0xe618, 0xffc0, 0x0000, - 0x5adc, 0xb5b8, 0xef64, 0x6361, 0x39bd, 0xd6d9, 0x8c05, 0xc6c2, 0x9c1e, - 0x737a, 0x29a6, 0xa5a3, 0xff7f, 0x101b, 0x4ac7, 0x8595, 0xdf49, 0x302d, - 0x6af1, 0xe6f4, 0xbc28, 0x534c, 0x0990, 0x4357, 0x198b, 0xf6ef, 0xac33, - 0x2036, 0x7aea, 0x958e, 0xcf52, 0x033b, 0x59e7, 0xb683, 0xec5f, 0x605a, - 0x3a86, 0xd5e2, 0x8f3e, 0xc5f9, 0x9f25, 0x7041, 0x2a9d, 0xa698, 0xfc44, - 0x1320, 0x49fc, 0x86ae, 0xdc72, 0x3316, 0x69ca, 0xe5cf, 0xbf13, 0x5077, - 0x0aab, 0x406c, 0x1ab0, 0xf5d4, 0xaf08, 0x230d, 0x79d1, 0x96b5, 0xcc69, - 0x0676, 0x5caa, 0xb3ce, 0xe912, 0x6517, 0x3fcb, 0xd0af, 0x8a73, 0xc0b4, - 0x9a68, 0x750c, 0x2fd0, 0xa3d5, 0xf909, 0x166d, 0x4cb1, 0x83e3, 0xd93f, - 0x365b, 0x6c87, 0xe082, 0xba5e, 0x553a, 0x0fe6, 0x4521, 0x1ffd, 0xf099, - 0xaa45, 0x2640, 0x7c9c, 0x93f8, 0xc924, 0x054d, 0x5f91, 0xb0f5, 0xea29, - 0x662c, 0x3cf0, 0xd394, 0x8948, 0xc38f, 0x9953, 0x7637, 0x2ceb, 0xa0ee, - 0xfa32, 0x1556, 0x4f8a, 0x80d8, 0xda04, 0x3560, 0x6fbc, 0xe3b9, 0xb965, - 0x5601, 0x0cdd, 0x461a, 0x1cc6, 0xf3a2, 0xa97e, 0x257b, 0x7fa7, 0x90c3, - 0xca1f, 0x0cec, 0x5630, 0xb954, 0xe388, 0x6f8d, 0x3551, 0xda35, 0x80e9, - 0xca2e, 0x90f2, 0x7f96, 0x254a, 0xa94f, 0xf393, 0x1cf7, 0x462b, 0x8979, - 0xd3a5, 0x3cc1, 0x661d, 0xea18, 0xb0c4, 0x5fa0, 0x057c, 0x4fbb, 0x1567, - 0xfa03, 0xa0df, 0x2cda, 0x7606, 0x9962, 0xc3be, 0x0fd7, 0x550b, 0xba6f, - 0xe0b3, 0x6cb6, 0x366a, 0xd90e, 0x83d2, 0xc915, 0x93c9, 0x7cad, 0x2671, - 0xaa74, 0xf0a8, 0x1fcc, 0x4510, 0x8a42, 0xd09e, 0x3ffa, 0x6526, 0xe923, - 0xb3ff, 0x5c9b, 0x0647, 0x4c80, 0x165c, 0xf938, 0xa3e4, 0x2fe1, 0x753d, - 0x9a59, 0xc085, 0x0a9a, 0x5046, 0xbf22, 0xe5fe, 0x69fb, 0x3327, 0xdc43, - 0x869f, 0xcc58, 0x9684, 0x79e0, 0x233c, 0xaf39, 0xf5e5, 0x1a81, 0x405d, - 0x8f0f, 0xd5d3, 0x3ab7, 0x606b, 0xec6e, 0xb6b2, 0x59d6, 0x030a, 0x49cd, - 0x1311, 0xfc75, 0xa6a9, 0x2aac, 0x7070, 0x9f14, 0xc5c8, 0x09a1, 0x537d, - 0xbc19, 0xe6c5, 0x6ac0, 0x301c, 0xdf78, 0x85a4, 0xcf63, 0x95bf, 0x7adb, - 0x2007, 0xac02, 0xf6de, 0x19ba, 0x4366, 0x8c34, 0xd6e8, 0x398c, 0x6350, - 0xef55, 0xb589, 0x5aed, 0x0031, 0x4af6, 0x102a, 0xff4e, 0xa592, 0x2997, - 0x734b, 0x9c2f, 0xc6f3, 0x0000, 0x1cbb, 0x3976, 0x25cd, 0x72ec, 0x6e57, - 0x4b9a, 0x5721, 0xe5d8, 0xf963, 0xdcae, 0xc015, 0x9734, 0x8b8f, 0xae42, - 0xb2f9, 0xc3a1, 0xdf1a, 0xfad7, 0xe66c, 0xb14d, 0xadf6, 0x883b, 0x9480, - 0x2679, 0x3ac2, 0x1f0f, 0x03b4, 0x5495, 0x482e, 0x6de3, 0x7158, 0x8f53, - 0x93e8, 0xb625, 0xaa9e, 0xfdbf, 0xe104, 0xc4c9, 0xd872, 0x6a8b, 0x7630, - 0x53fd, 0x4f46, 0x1867, 0x04dc, 0x2111, 0x3daa, 0x4cf2, 0x5049, 0x7584, - 0x693f, 0x3e1e, 0x22a5, 0x0768, 0x1bd3, 0xa92a, 0xb591, 0x905c, 0x8ce7, - 0xdbc6, 0xc77d, 0xe2b0, 0xfe0b, 0x16b7, 0x0a0c, 0x2fc1, 0x337a, 0x645b, - 0x78e0, 0x5d2d, 0x4196, 0xf36f, 0xefd4, 0xca19, 0xd6a2, 0x8183, 0x9d38, - 0xb8f5, 0xa44e, 0xd516, 0xc9ad, 0xec60, 0xf0db, 0xa7fa, 0xbb41, 0x9e8c, - 0x8237, 0x30ce, 0x2c75, 0x09b8, 0x1503, 0x4222, 0x5e99, 0x7b54, 0x67ef, - 0x99e4, 0x855f, 0xa092, 0xbc29, 0xeb08, 0xf7b3, 0xd27e, 0xcec5, 0x7c3c, - 0x6087, 0x454a, 0x59f1, 0x0ed0, 0x126b, 0x37a6, 0x2b1d, 0x5a45, 0x46fe, - 0x6333, 0x7f88, 0x28a9, 0x3412, 0x11df, 0x0d64, 0xbf9d, 0xa326, 0x86eb, - 0x9a50, 0xcd71, 0xd1ca, 0xf407, 0xe8bc, 0x2d6e, 0x31d5, 0x1418, 0x08a3, - 0x5f82, 0x4339, 0x66f4, 0x7a4f, 0xc8b6, 0xd40d, 0xf1c0, 0xed7b, 0xba5a, - 0xa6e1, 0x832c, 0x9f97, 0xeecf, 0xf274, 0xd7b9, 0xcb02, 0x9c23, 0x8098, - 0xa555, 0xb9ee, 0x0b17, 0x17ac, 0x3261, 0x2eda, 0x79fb, 0x6540, 0x408d, - 0x5c36, 0xa23d, 0xbe86, 0x9b4b, 0x87f0, 0xd0d1, 0xcc6a, 0xe9a7, 0xf51c, - 0x47e5, 0x5b5e, 0x7e93, 0x6228, 0x3509, 0x29b2, 0x0c7f, 0x10c4, 0x619c, - 0x7d27, 0x58ea, 0x4451, 0x1370, 0x0fcb, 0x2a06, 0x36bd, 0x8444, 0x98ff, - 0xbd32, 0xa189, 0xf6a8, 0xea13, 0xcfde, 0xd365, 0x3bd9, 0x2762, 0x02af, - 0x1e14, 0x4935, 0x558e, 0x7043, 0x6cf8, 0xde01, 0xc2ba, 0xe777, 0xfbcc, - 0xaced, 0xb056, 0x959b, 0x8920, 0xf878, 0xe4c3, 0xc10e, 0xddb5, 0x8a94, - 0x962f, 0xb3e2, 0xaf59, 0x1da0, 0x011b, 0x24d6, 0x386d, 0x6f4c, 0x73f7, - 0x563a, 0x4a81, 0xb48a, 0xa831, 0x8dfc, 0x9147, 0xc666, 0xdadd, 0xff10, - 0xe3ab, 0x5152, 0x4de9, 0x6824, 0x749f, 0x23be, 0x3f05, 0x1ac8, 0x0673, - 0x772b, 0x6b90, 0x4e5d, 0x52e6, 0x05c7, 0x197c, 0x3cb1, 0x200a, 0x92f3, - 0x8e48, 0xab85, 0xb73e, 0xe01f, 0xfca4, 0xd969, 0xc5d2}; - -// crc32 table -const uint32_t crc_table_crc32[256] = { - 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, - 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, - 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, - 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, - 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, - 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, - 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, - 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, - 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, - 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, - 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, - 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, - 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, - 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, - 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, - 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, - 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, - 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, - 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, - 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, - 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, - 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, - 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, - 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, - 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, - 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, - 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, - 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, - 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, - 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, - 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, - 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, - 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, - 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, - 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, - 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, - 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, - 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, - 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, - 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, - 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, - 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, - 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d}; - -#endif diff --git a/common/FastCRC/FastCRCsw.cpp b/common/FastCRC/FastCRCsw.cpp deleted file mode 100644 index 2c346ed1..00000000 --- a/common/FastCRC/FastCRCsw.cpp +++ /dev/null @@ -1,143 +0,0 @@ -/* FastCRC library code is placed under the MIT license - * Copyright (c) 2014,2015,2016 Frank Bosing - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -// -// Thanks to: -// - Catalogue of parametrised CRC algorithms, CRC RevEng -// http://reveng.sourceforge.net/crc-catalogue/ -// -// - Danjel McGougan (CRC-Table-Generator) -// - -// -// modify from FastCRC library @ 2018/11/20 -// - -#include "FastCRC.h" -#include "FastCRC_tables.hpp" - -// ================= 16-BIT CRC =================== -/** Constructor - */ -FastCRC16::FastCRC16(uint16_t seed) { seed_ = seed; } - -#define crc_n4(crc, data, table) \ - crc ^= data; \ - crc = (table[(crc & 0xff) + 0x300]) ^ (table[((crc >> 8) & 0xff) + 0x200]) ^ \ - (table[((data >> 16) & 0xff) + 0x100]) ^ (table[data >> 24]); - -/** MCRF4XX - * equivalent to _crc_ccitt_update() in crc16.h from avr_libc - * @param data Pointer to Data - * @param datalen Length of Data - * @return CRC value - */ - -uint16_t FastCRC16::mcrf4xx_calc(const uint8_t *data, uint16_t len) { - uint16_t crc = seed_; - - while (((uintptr_t)data & 3) && len) { - crc = (crc >> 8) ^ crc_table_mcrf4xx[(crc & 0xff) ^ *data++]; - len--; - } - - while (len >= 16) { - len -= 16; - crc_n4(crc, ((uint32_t *)data)[0], crc_table_mcrf4xx); - crc_n4(crc, ((uint32_t *)data)[1], crc_table_mcrf4xx); - crc_n4(crc, ((uint32_t *)data)[2], crc_table_mcrf4xx); - crc_n4(crc, ((uint32_t *)data)[3], crc_table_mcrf4xx); - data += 16; - } - - while (len--) { - crc = (crc >> 8) ^ crc_table_mcrf4xx[(crc & 0xff) ^ *data++]; - } - - // seed = crc; - return crc; -} - -// ================= 32-BIT CRC =================== -/** Constructor - */ -FastCRC32::FastCRC32(uint32_t seed) { seed_ = seed; } - -#define crc_n4d(crc, data, table) \ - crc ^= data; \ - crc = (table[(crc & 0xff) + 0x300]) ^ (table[((crc >> 8) & 0xff) + 0x200]) ^ \ - (table[((crc >> 16) & 0xff) + 0x100]) ^ (table[(crc >> 24) & 0xff]); - -#define crcsm_n4d(crc, data, table) \ - crc ^= data; \ - crc = (crc >> 8) ^ (table[crc & 0xff]); \ - crc = (crc >> 8) ^ (table[crc & 0xff]); \ - crc = (crc >> 8) ^ (table[crc & 0xff]); \ - crc = (crc >> 8) ^ (table[crc & 0xff]); - -/** CRC32 - * Alias CRC-32/ADCCP, PKZIP, Ethernet, 802.3 - * @param data Pointer to Data - * @param datalen Length of Data - * @return CRC value - */ -#if CRC_BIGTABLES -#define CRC_TABLE_CRC32 crc_table_crc32_big -#else -#define CRC_TABLE_CRC32 crc_table_crc32 -#endif - -uint32_t FastCRC32::crc32_calc(const uint8_t *data, uint16_t len) { - uint32_t crc = seed_ ^ 0xffffffff; - - while (((uintptr_t)data & 3) && len) { - crc = (crc >> 8) ^ CRC_TABLE_CRC32[(crc & 0xff) ^ *data++]; - len--; - } - - while (len >= 16) { - len -= 16; -#if CRC_BIGTABLES - crc_n4d(crc, ((uint32_t *)data)[0], CRC_TABLE_CRC32); - crc_n4d(crc, ((uint32_t *)data)[1], CRC_TABLE_CRC32); - crc_n4d(crc, ((uint32_t *)data)[2], CRC_TABLE_CRC32); - crc_n4d(crc, ((uint32_t *)data)[3], CRC_TABLE_CRC32); -#else - crcsm_n4d(crc, ((uint32_t *)data)[0], CRC_TABLE_CRC32); - crcsm_n4d(crc, ((uint32_t *)data)[1], CRC_TABLE_CRC32); - crcsm_n4d(crc, ((uint32_t *)data)[2], CRC_TABLE_CRC32); - crcsm_n4d(crc, ((uint32_t *)data)[3], CRC_TABLE_CRC32); -#endif - data += 16; - } - - while (len--) { - crc = (crc >> 8) ^ CRC_TABLE_CRC32[(crc & 0xff) ^ *data++]; - } - - // seed = crc; - crc ^= 0xffffffff; - - return crc; -} diff --git a/common/FastCRC/LICENSE.md b/common/FastCRC/LICENSE.md deleted file mode 100644 index fad4885c..00000000 --- a/common/FastCRC/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Frank - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/common/FastCRC/README.md b/common/FastCRC/README.md deleted file mode 100644 index de9d124d..00000000 --- a/common/FastCRC/README.md +++ /dev/null @@ -1,56 +0,0 @@ -FastCRC -======= - -Fast CRC Arduino library -Up to 30 times faster than crc16.h (_avr_libc) - - - uses the on-chip hardware for Teensy 3.0 / 3.1 / 3.2 / 3.5 / 3.6 - - uses fast table-algorithms for other chips - -List of supported CRC calculations: -- -7 BIT: - -CRC7 - (poly=0x09 init=0x00 refin=false refout=false xorout=0x00 check=0x75) - MultiMediaCard interface - - -8 BIT: - -SMBUS - (poly=0x07 init=0x00 refin=false refout=false xorout=0x00 check=0xf4) - -MAXIM - (poly=0x31 init=0x00 refin=true refout=true xorout=0x00 check=0xa1) - - -16 BIT: - -KERMIT (Alias CRC-16/CCITT, CRC-16/CCITT-TRUE, CRC-CCITT) - (poly=0x1021 init=0x0000 refin=true refout=true xorout=0x0000 check=0x2189 - Attention: sometimes you'll find byteswapped presentation of result in other implementations) - -CCITT-FALSE - (poly=0x1021 init=0xffff refin=false refout=false xorout=0x0000 check=0x29b1) - -MCRF4XX - (poly=0x1021 init=0xffff refin=true refout=true xorout=0x0000 check=0x6f91) - -MODBUS - (poly=0x8005 init=0xffff refin=true refout=true xorout=0x0000 check=0x4b37) - -XMODEM (Alias ZMODEM, CRC-16/ACORN) - (poly=0x1021 init=0x0000 refin=false refout=false xorout=0x0000 check=0x31c3) - -X25 (Alias CRC-16/IBM-SDLC, CRC-16/ISO-HDLC, CRC-B) - (poly=0x1021 init=0xffff refin=true refout=true xorout=0xffff check=0x906e) - - -32 BIT: - -CRC32, CRC-32/ADCCP, PKZIP, ETHERNET, 802.3 - (poly=0x04c11db7 init=0xffffffff refin=true refout=true xorout=0xffffffff check=0xcbf43926) - -CKSUM, CRC-32/POSIX - (poly=0x04c11db7 init=0x00000000 refin=false refout=false xorout=0xffffffff check=0x765e7680) diff --git a/common/comm/comm_device.h b/common/comm/comm_device.h deleted file mode 100644 index 3d614c11..00000000 --- a/common/comm/comm_device.h +++ /dev/null @@ -1,71 +0,0 @@ -// -// The MIT License (MIT) -// -// Copyright (c) 2019 Livox. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -#ifndef COMM_COMM_DEVICE_H_ -#define COMM_COMM_DEVICE_H_ - -#include - -namespace livox_ros { - -const uint32_t kDevNameLengthMax = 256; - -/** Communication device type define */ -enum CommDeviceType { - kCommDevUart, - kCommDevUsb, - kCommDevCan, - kCommDevEthernet, - kCommDevUndef -}; - -/** Communication device uart config */ -struct CommDevUartConfig { - uint8_t baudrate; - uint8_t parity; -}; - -/** Communication device usb config */ -struct CommDevUsbConfig { - void *data; -}; - -/** Communication device can config */ -struct CommDevCanConfig { - void *data; -}; - -/** Communication device config */ -typedef struct { - uint8_t type; - char name[kDevNameLengthMax]; - union { - CommDevUartConfig uart; - CommDevUsbConfig usb; - CommDevCanConfig can; - } config; -} CommDevConfig; - -} // namespace livox_ros -#endif // COMM_COMM_DEVICE_H_ diff --git a/common/comm/comm_protocol.cpp b/common/comm/comm_protocol.cpp deleted file mode 100644 index c63fc801..00000000 --- a/common/comm/comm_protocol.cpp +++ /dev/null @@ -1,224 +0,0 @@ -// -// The MIT License (MIT) -// -// Copyright (c) 2019 Livox. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -#include "comm_protocol.h" -#include -#include -#include - -namespace livox_ros { - -CommProtocol::CommProtocol(ProtocolConfig &config) : config_(config) { - ResetParser(); - ResetCache(); - - offset_to_read_index_ = 0; - packet_length_ = 0; - - if (kGps == config.type) { - is_length_known = false; - protocol_ = new GpsProtocol(); - } else { - is_length_known = true; - protocol_ = nullptr; - } -} - -CommProtocol::~CommProtocol() { - if (protocol_) { - delete protocol_; - } -} - -uint8_t *CommProtocol::FetchCacheFreeSpace(uint32_t *o_len) { - UpdateCache(); - - if (cache_.wr_idx < cache_.size) { - *o_len = cache_.size - cache_.wr_idx; - return &cache_.buf[cache_.wr_idx]; - } else { - *o_len = 0; - return nullptr; - } -} - -int32_t CommProtocol::UpdateCacheWrIdx(uint32_t used_size) { - if ((cache_.wr_idx + used_size) < cache_.size) { - cache_.wr_idx += used_size; - return 0; - } else { - return -1; - } -} - -uint32_t CommProtocol::GetCacheTailSize() { - if (cache_.wr_idx < cache_.size) { - return cache_.size - cache_.wr_idx; - } else { - return 0; - } -} - -uint32_t CommProtocol::GetValidDataSize() { - if (cache_.wr_idx > cache_.rd_idx) { - return cache_.wr_idx - cache_.rd_idx; - } else { - return 0; - } -} - -void CommProtocol::UpdateCache(void) { - if (GetCacheTailSize() < - kMoveCacheLimit) { /* move unused data to cache head */ - uint32_t valid_data_size = GetValidDataSize(); - - if (valid_data_size) { - memmove(cache_.buf, &cache_.buf[cache_.rd_idx], valid_data_size); - cache_.rd_idx = 0; - cache_.wr_idx = valid_data_size; - } else if (cache_.rd_idx) { - cache_.rd_idx = 0; - cache_.wr_idx = 0; - } - } -} - -int32_t CommProtocol::Pack(uint8_t *o_buf, uint32_t o_buf_size, uint32_t *o_len, - const CommPacket &i_packet) { - return protocol_->Pack(o_buf, o_buf_size, o_len, i_packet); -} - -void CommProtocol::ResetParser() { fsm_parse_step_ = kSearchPacketPreamble; } - -int32_t CommProtocol::ParseCommStream(CommPacket *o_pack) { - int32_t ret = kParseFail; - while ((GetValidDataSize() > protocol_->GetPreambleLen()) && - (GetValidDataSize() > offset_to_read_index_)) { - switch (fsm_parse_step_) { - case kSearchPacketPreamble: { - FsmSearchPacketPreamble(); - break; - } - case kFindPacketLength: { - FsmFindPacketLength(); - break; - } - case kGetPacketData: { - ret = FsmGetPacketData(o_pack); - break; - } - default: { FsmParserStateTransfer(kSearchPacketPreamble); } - } - - /* Must exit when in the below case */ - if ((ret == kParseSuccess) || (ret == kParseNeedMoreData)) break; - } - - return ret; -} - -uint16_t CommProtocol::GetAndUpdateSeqNum() { - /* add lock here for thread safe */ - uint16_t seq = seq_num_; - seq_num_++; - - return seq; -} - -int32_t CommProtocol::FsmSearchPacketPreamble() { - do { - if (!protocol_->CheckPreamble(GetCacheReadPos())) { - if (!is_length_known) { - offset_to_read_index_ = 0; - packet_length_ = 0; - FsmParserStateTransfer(kFindPacketLength); - break; - } else { - packet_length_ = protocol_->GetPacketLen(GetCacheReadPos()); - if ((packet_length_ < cache_.size) && - (packet_length_ > - protocol_ - ->GetPacketWrapperLen())) { /* check the legality of length */ - FsmParserStateTransfer(kGetPacketData); - break; - } - } - } - // printf("|%2x", cache_.buf[cache_.rd_idx]); - ++cache_.rd_idx; /* skip one byte */ - } while (0); - - return 0; -} - -int32_t CommProtocol::FsmFindPacketLength() { - uint32_t valid_data_size = GetValidDataSize(); - uint32_t ret = protocol_->FindPacketLen(GetCacheReadPos(), valid_data_size); - if (ret == kFindLengthSuccess) { - packet_length_ = protocol_->GetPacketLen(GetCacheReadPos()); - FsmParserStateTransfer(kGetPacketData); - offset_to_read_index_ = 0; - } else if (ret == kFindLengthContinue) { /* continue to find next time */ - offset_to_read_index_ = valid_data_size; - } else { /* find length error */ - offset_to_read_index_ = 0; - cache_.rd_idx += valid_data_size; - FsmParserStateTransfer(kSearchPacketPreamble); - printf("Continue to find length error\n"); - } - - return 0; -} - -int32_t CommProtocol::FsmGetPacketData(CommPacket *o_pack) { - int32_t ret = kParseFail; - do { - if (GetValidDataSize() < packet_length_) { - ret = kParseNeedMoreData; - break; - } - - if (protocol_->CheckPacket(GetCacheReadPos())) { - cache_.rd_idx += protocol_->GetPreambleLen(); - FsmParserStateTransfer(kSearchPacketPreamble); - printf("Check packet error\n"); - break; - } - - if (protocol_->ParsePacket(GetCacheReadPos(), packet_length_, o_pack)) { - cache_.rd_idx += protocol_->GetPacketLen(GetCacheReadPos()); - FsmParserStateTransfer(kSearchPacketPreamble); - printf("Parse packet error\n"); - break; - } - - cache_.rd_idx += protocol_->GetPacketLen(GetCacheReadPos()); - FsmParserStateTransfer(kSearchPacketPreamble); - return kParseSuccess; - } while (0); - - return ret; -} - -} // namespace livox_ros diff --git a/common/comm/comm_protocol.h b/common/comm/comm_protocol.h deleted file mode 100644 index bc77cb43..00000000 --- a/common/comm/comm_protocol.h +++ /dev/null @@ -1,105 +0,0 @@ -// -// The MIT License (MIT) -// -// Copyright (c) 2019 Livox. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -#ifndef COMM_COMM_PROTOCOL_H_ -#define COMM_COMM_PROTOCOL_H_ - -#include -#include "gps_protocol.h" -#include "protocol.h" -#include "sdk_protocol.h" - -namespace livox_ros { -const uint32_t kCacheSize = 8192; -const uint32_t kMoveCacheLimit = 1536; - -enum FsmParseState { - kSearchPacketPreamble = 0, - kFindPacketLength = 1, - kGetPacketData = 2, - kParseStepUndef -}; - -/** Communication data cache define */ -typedef struct { - uint8_t buf[kCacheSize]; - uint32_t rd_idx; - uint32_t wr_idx; - uint32_t size; -} CommCache; - -class CommProtocol { - public: - CommProtocol(ProtocolConfig &config); - ~CommProtocol(); - - int32_t Pack(uint8_t *o_buf, uint32_t o_buf_size, uint32_t *o_len, - const CommPacket &i_packet); - - int32_t ParseCommStream(CommPacket *o_pack); - - uint8_t *FetchCacheFreeSpace(uint32_t *o_len); - - int32_t UpdateCacheWrIdx(uint32_t used_size); - - uint16_t GetAndUpdateSeqNum(); - - void ResetParser(); - - private: - uint32_t GetCacheTailSize(); - uint32_t GetValidDataSize(); - void UpdateCache(void); - uint8_t *GetCacheReadPos() { return &cache_.buf[cache_.rd_idx]; } - void ResetCache() { - cache_.wr_idx = 0; - cache_.rd_idx = 0; - cache_.size = kCacheSize; - } - - ProtocolConfig config_; - Protocol *protocol_; - CommCache cache_; - uint16_t seq_num_; - - bool is_length_known; - bool IsLengthKnown() { return is_length_known; } - - volatile uint32_t offset_to_read_index_; - uint32_t packet_length_; - volatile uint32_t fsm_parse_step_; - int32_t FsmSearchPacketPreamble(); - int32_t FsmFindPacketLength(); - int32_t FsmGetPacketData(CommPacket *o_pack); - void FsmParserStateTransfer(uint32_t new_state) { - if (new_state < kParseStepUndef) { - fsm_parse_step_ = new_state; - } else { - fsm_parse_step_ = kSearchPacketPreamble; - } - } -}; - -} // namespace livox_ros -#endif // COMM_COMM_PROTOCOL_H_ diff --git a/common/comm/gps_protocol.cpp b/common/comm/gps_protocol.cpp deleted file mode 100644 index a60da6e2..00000000 --- a/common/comm/gps_protocol.cpp +++ /dev/null @@ -1,125 +0,0 @@ -// -// The MIT License (MIT) -// -// Copyright (c) 2019 Livox. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -#include "gps_protocol.h" - -#include -#include -#include - -namespace livox_ros { - -const uint8_t kGpsProtocolSof = '$'; -const uint8_t kGpsProtocolEof = '*'; -const uint32_t kPacketLengthLmit = 200; -const uint32_t kPreambleLen = 1; -const uint32_t kWrapperLen = 4; /** '$' + '*' + '2 checksum byte' */ - -GpsProtocol::GpsProtocol() { found_length_ = 0; } - -int32_t GpsProtocol::Pack(uint8_t *o_buf, uint32_t o_buf_size, uint32_t *o_len, - const CommPacket &i_packet) { - // GpsPacket* gps_packet = (GpsPacket*)o_buf; - return 0; -} - -int32_t GpsProtocol::ParsePacket(const uint8_t *i_buf, uint32_t i_len, - CommPacket *o_packet) { - // GpsPacket *gps_packet = (GpsPacket *)i_buf; - - if (i_len < GetPacketWrapperLen()) { - return -1; // packet length error - } - memset((void *)o_packet, 0, sizeof(CommPacket)); - o_packet->protocol = kGps; - o_packet->data = (uint8_t *)i_buf; - o_packet->data_len = i_len; - - return 0; -} - -uint32_t GpsProtocol::GetPreambleLen() { return kPreambleLen; /** '$' */ } - -uint32_t GpsProtocol::GetPacketWrapperLen() { - return kWrapperLen; /** '$' + '*' + '2 checksum bytes' */ -} - -uint32_t GpsProtocol::FindPacketLen(const uint8_t *buf, uint32_t buf_length) { - uint32_t i = 0; - for (; (i < buf_length) && (i < kPacketLengthLmit); i++) { - if ((buf[i] == kGpsProtocolEof) && (buf[0] == kGpsProtocolSof)) { - found_length_ = i + 1 + 2; /* num = index + 1 + two bytes checksum */ - return kFindLengthSuccess; - } - } - if (i < kPacketLengthLmit) { - return kFindLengthContinue; - } else { - return kFindLengthError; - } -} - -uint32_t GpsProtocol::GetPacketLen(const uint8_t *buf) { return found_length_; } - -int32_t GpsProtocol::CheckPreamble(const uint8_t *buf) { - GpsPreamble *preamble = (GpsPreamble *)buf; - - if (preamble->sof == kGpsProtocolSof) { - return 0; - } else { - return -1; - } -} - -int32_t GpsProtocol::CheckPacket(const uint8_t *buf) { - uint8_t checksum = - CalcGpsPacketChecksum(&buf[1], found_length_ - kWrapperLen); - uint8_t raw_checksum = AscciiToHex(&buf[found_length_ - 2]); - if (checksum == raw_checksum) { - return 0; - } else { - return -1; - } -} - -uint8_t GpsProtocol::CalcGpsPacketChecksum(const uint8_t *buf, - uint32_t length) { - uint8_t result = buf[0]; - for (uint32_t i = 1; i < length; i++) { - result ^= buf[i]; - } - return result; -} - -uint8_t AscciiToHex(const uint8_t *TwoChar) { - uint8_t h = toupper(TwoChar[0]) - 0x30; - if (h > 9) h -= 7; - - uint8_t l = toupper(TwoChar[1]) - 0x30; - if (l > 9) l -= 7; - - return h * 16 + l; -} - -} // namespace livox_ros diff --git a/common/comm/gps_protocol.h b/common/comm/gps_protocol.h deleted file mode 100644 index 804ac7fc..00000000 --- a/common/comm/gps_protocol.h +++ /dev/null @@ -1,79 +0,0 @@ -// -// The MIT License (MIT) -// -// Copyright (c) 2019 Livox. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -#ifndef LIVOX_GPS_PROTOCOL_H_ -#define LIVOX_GPS_PROTOCOL_H_ - -#include -#include "protocol.h" - -namespace livox_ros { - -#pragma pack(1) - -typedef struct { - uint8_t sof; - uint8_t cmd_str[1]; -} GpsPreamble; - -typedef struct { - uint8_t sof; - uint8_t data[1]; -} GpsPacket; - -#pragma pack() - -uint8_t AscciiToHex(const uint8_t *TwoChar); - -class GpsProtocol : public Protocol { - public: - GpsProtocol(); - ~GpsProtocol() = default; - - int32_t ParsePacket(const uint8_t *i_buf, uint32_t i_len, - CommPacket *o_packet) override; - - int32_t Pack(uint8_t *o_buf, uint32_t o_buf_size, uint32_t *o_len, - const CommPacket &i_packet) override; - - uint32_t GetPreambleLen() override; - - uint32_t GetPacketWrapperLen() override; - - uint32_t FindPacketLen(const uint8_t *buf, uint32_t buf_length) override; - - uint32_t GetPacketLen(const uint8_t *buf) override; - - int32_t CheckPreamble(const uint8_t *buf) override; - - int32_t CheckPacket(const uint8_t *buf) override; - - private: - uint32_t found_length_; - - uint8_t CalcGpsPacketChecksum(const uint8_t *buf, uint32_t length); -}; - -} // namespace livox_ros -#endif // LIVOX_GPS_PROTOCOL_H_ diff --git a/common/comm/protocol.h b/common/comm/protocol.h deleted file mode 100644 index 5d502819..00000000 --- a/common/comm/protocol.h +++ /dev/null @@ -1,106 +0,0 @@ -// -// The MIT License (MIT) -// -// Copyright (c) 2019 Livox. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -#ifndef COMM_PROTOCOL_H_ -#define COMM_PROTOCOL_H_ - -#include - -namespace livox_ros { -typedef struct CommPacket CommPacket; - -typedef int (*RequestPackCb)(CommPacket *packet); - -typedef enum { kRequestPack, kAckPack, kMsgPack } PacketType; - -typedef enum { kLidarSdk, kRsvd1, kGps, kProtocolUndef } ProtocolType; - -typedef enum { kNoNeed, kNeedAck, kDelayAck } NeedAckType; - -typedef enum { kParseSuccess, kParseFail, kParseNeedMoreData } ParseResult; - -typedef enum { - kFindLengthSuccess, - kFindLengthContinue, - kFindLengthError -} FindLengthResult; - -typedef struct CommPacket { - uint8_t packet_type; - uint8_t protocol; - uint8_t protocol_version; - uint8_t cmd_set; - uint32_t cmd_code; - uint32_t sender; - uint32_t sub_sender; - uint32_t receiver; - uint32_t sub_receiver; - uint32_t seq_num; - uint8_t *data; - uint16_t data_len; - uint32_t padding; -} CommPacket; - -/** SDK Protocol info config */ -typedef struct { - uint16_t seed16; - uint16_t seed32; -} SdkProtocolConfig; - -/** NAME-0183 Protocol info config for gps */ -typedef struct { void *data; } GpsProtocolConfig; - -typedef struct { - uint8_t type; - union { - SdkProtocolConfig sdk; - GpsProtocolConfig gps; - } config; -} ProtocolConfig; - -class Protocol { - public: - virtual ~Protocol() = default; - - virtual int32_t ParsePacket(const uint8_t *i_buf, uint32_t i_len, - CommPacket *o_packet) = 0; - - virtual int32_t Pack(uint8_t *o_buf, uint32_t o_buf_size, uint32_t *o_len, - const CommPacket &i_packet) = 0; - - virtual uint32_t GetPreambleLen() = 0; - - virtual uint32_t GetPacketWrapperLen() = 0; - - virtual uint32_t FindPacketLen(const uint8_t *buf, uint32_t buf_length) = 0; - - virtual uint32_t GetPacketLen(const uint8_t *buf) = 0; - - virtual int32_t CheckPreamble(const uint8_t *buf) = 0; - - virtual int32_t CheckPacket(const uint8_t *buf) = 0; -}; - -} // namespace livox_ros -#endif // COMM_PROTOCOL_H_ diff --git a/common/comm/sdk_protocol.cpp b/common/comm/sdk_protocol.cpp deleted file mode 100644 index 4356326f..00000000 --- a/common/comm/sdk_protocol.cpp +++ /dev/null @@ -1,134 +0,0 @@ -// -// The MIT License (MIT) -// -// Copyright (c) 2019 Livox. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -#include "sdk_protocol.h" - -#include -#include - -namespace livox_ros { -const uint8_t kSdkProtocolSof = 0xAA; -const uint32_t kSdkPacketCrcSize = 4; // crc32 -const uint32_t kSdkPacketPreambleCrcSize = 2; // crc16 - -SdkProtocol::SdkProtocol(uint16_t seed16, uint32_t seed32) - : crc16_(seed16), crc32_(seed32) {} - -int32_t SdkProtocol::Pack(uint8_t *o_buf, uint32_t o_buf_size, uint32_t *o_len, - const CommPacket &i_packet) { - SdkPacket *sdk_packet = (SdkPacket *)o_buf; - - if (kLidarSdk != i_packet.protocol) { - return -1; - } - - sdk_packet->sof = kSdkProtocolSof; - sdk_packet->length = i_packet.data_len + GetPacketWrapperLen(); - - if (sdk_packet->length > o_buf_size) { - return -1; - } - - sdk_packet->version = kSdkVer0; - sdk_packet->packet_type = i_packet.packet_type; - sdk_packet->seq_num = i_packet.seq_num & 0xFFFF; - sdk_packet->preamble_crc = - crc16_.mcrf4xx_calc(o_buf, GetPreambleLen() - kSdkPacketPreambleCrcSize); - sdk_packet->cmd_set = i_packet.cmd_set; - sdk_packet->cmd_id = i_packet.cmd_code; - - memcpy(sdk_packet->data, i_packet.data, i_packet.data_len); - - uint32_t crc = - crc32_.crc32_calc(o_buf, sdk_packet->length - kSdkPacketCrcSize); - o_buf[sdk_packet->length - 4] = crc & 0xFF; - o_buf[sdk_packet->length - 3] = (crc >> 8) & 0xFF; - o_buf[sdk_packet->length - 2] = (crc >> 16) & 0xFF; - o_buf[sdk_packet->length - 1] = (crc >> 24) & 0xFF; - - *o_len = sdk_packet->length; - - return 0; -} - -int32_t SdkProtocol::ParsePacket(const uint8_t *i_buf, uint32_t i_len, - CommPacket *o_packet) { - SdkPacket *sdk_packet = (SdkPacket *)i_buf; - - if (i_len < GetPacketWrapperLen()) { - return -1; // packet lenth error - } - - memset((void *)o_packet, 0, sizeof(CommPacket)); - - o_packet->packet_type = sdk_packet->packet_type; - o_packet->protocol = kLidarSdk; - o_packet->protocol_version = sdk_packet->version; - - o_packet->seq_num = sdk_packet->seq_num; - o_packet->cmd_set = sdk_packet->cmd_set; - o_packet->cmd_code = sdk_packet->cmd_id; - o_packet->data_len = sdk_packet->length - GetPacketWrapperLen(); - o_packet->data = sdk_packet->data; - - return 0; -} - -uint32_t SdkProtocol::GetPreambleLen() { return sizeof(SdkPreamble); } - -uint32_t SdkProtocol::GetPacketWrapperLen() { - return sizeof(SdkPacket) - 1 + kSdkPacketCrcSize; -} - -uint32_t SdkProtocol::GetPacketLen(const uint8_t *buf) { - SdkPreamble *preamble = (SdkPreamble *)buf; - return preamble->length; -} - -int32_t SdkProtocol::CheckPreamble(const uint8_t *buf) { - SdkPreamble *preamble = (SdkPreamble *)buf; - - if ((preamble->sof == kSdkProtocolSof) && - (crc16_.mcrf4xx_calc(buf, GetPreambleLen()) == 0)) { - return 0; - } else { - return -1; - } -} - -int32_t SdkProtocol::CheckPacket(const uint8_t *buf) { - SdkPacket *sdk_packet = (SdkPacket *)buf; - - uint32_t crc = ((uint32_t)(buf[sdk_packet->length - 4])) | - (((uint32_t)(buf[sdk_packet->length - 3])) << 8) | - (((uint32_t)(buf[sdk_packet->length - 2])) << 16) | - (((uint32_t)(buf[sdk_packet->length - 1])) << 24); - - if (crc32_.crc32_calc(buf, sdk_packet->length - kSdkPacketCrcSize) == crc) { - return 0; - } else { - return -1; - } -} -} // namespace livox_ros diff --git a/common/comm/sdk_protocol.h b/common/comm/sdk_protocol.h deleted file mode 100644 index 5808e076..00000000 --- a/common/comm/sdk_protocol.h +++ /dev/null @@ -1,86 +0,0 @@ -// -// The MIT License (MIT) -// -// Copyright (c) 2019 Livox. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// - -#ifndef LIVOX_SDK_PROTOCOL_H_ -#define LIVOX_SDK_PROTOCOL_H_ - -#include -#include "FastCRC/FastCRC.h" -#include "protocol.h" - -namespace livox_ros { -typedef enum { kSdkVerNone, kSdkVer0, kSdkVer1 } SdkVersion; - -#pragma pack(1) - -typedef struct { - uint8_t sof; - uint8_t version; - uint16_t length; - uint8_t packet_type; - uint16_t seq_num; - uint16_t preamble_crc; -} SdkPreamble; - -typedef struct { - uint8_t sof; - uint8_t version; - uint16_t length; - uint8_t packet_type; - uint16_t seq_num; - uint16_t preamble_crc; - uint8_t cmd_set; - uint8_t cmd_id; - uint8_t data[1]; -} SdkPacket; - -#pragma pack() - -class SdkProtocol : public Protocol { - public: - SdkProtocol(uint16_t seed16, uint32_t seed32); - ~SdkProtocol() = default; - - int32_t ParsePacket(const uint8_t *i_buf, uint32_t i_len, - CommPacket *o_packet) override; - - int32_t Pack(uint8_t *o_buf, uint32_t o_buf_size, uint32_t *o_len, - const CommPacket &i_packet) override; - - uint32_t GetPreambleLen() override; - - uint32_t GetPacketWrapperLen() override; - - uint32_t GetPacketLen(const uint8_t *buf) override; - - int32_t CheckPreamble(const uint8_t *buf) override; - - int32_t CheckPacket(const uint8_t *buf) override; - - private: - FastCRC16 crc16_; - FastCRC32 crc32_; -}; -} // namespace livox_ros -#endif // LIVOX_SDK_PROTOCOL_H_ diff --git a/common/rapidxml/rapidxml.hpp b/common/rapidxml/rapidxml.hpp deleted file mode 100644 index 8ca8e372..00000000 --- a/common/rapidxml/rapidxml.hpp +++ /dev/null @@ -1,2457 +0,0 @@ -#ifndef RAPIDXML_HPP_INCLUDED -#define RAPIDXML_HPP_INCLUDED - -// Copyright (C) 2006, 2009 Marcin Kalicinski -// Version 1.13 -// Revision $DateTime: 2009/05/13 01:46:17 $ -//! \file rapidxml.hpp This file contains rapidxml parser and DOM implementation - -// If standard library is disabled, user must provide implementations of -// required functions and typedefs -#if !defined(RAPIDXML_NO_STDLIB) -#include // For assert -#include // For std::size_t -#include // For placement new -#endif - -// On MSVC, disable "conditional expression is constant" warning (level 4). -// This warning is almost impossible to avoid with certain types of templated -// code -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable : 4127) // Conditional expression is constant -#endif - -/////////////////////////////////////////////////////////////////////////// -// RAPIDXML_PARSE_ERROR - -#if defined(RAPIDXML_NO_EXCEPTIONS) - -#define RAPIDXML_PARSE_ERROR(what, where) \ - { \ - parse_error_handler(what, where); \ - assert(0); \ - } - -namespace rapidxml { -//! When exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS, -//! this function is called to notify user about the error. -//! It must be defined by the user. -//!

-//! This function cannot return. If it does, the results are undefined. -//!

-//! A very simple definition might look like that: -//!
-//! void %rapidxml::%parse_error_handler(const char *what, void *where)
-//! {
-//!     std::cout << "Parse error: " << what << "\n";
-//!     std::abort();
-//! }
-//! 
-//! \param what Human readable description of the error. -//! \param where Pointer to character data where error was detected. -void parse_error_handler(const char *what, void *where); -} // namespace rapidxml - -#else - -#include // For std::exception - -#define RAPIDXML_PARSE_ERROR(what, where) throw parse_error(what, where) - -namespace rapidxml { - -//! Parse error exception. -//! This exception is thrown by the parser when an error occurs. -//! Use what() function to get human-readable error message. -//! Use where() function to get a pointer to position within source text where -//! error was detected.

If throwing exceptions by the parser is -//! undesirable, it can be disabled by defining RAPIDXML_NO_EXCEPTIONS macro -//! before rapidxml.hpp is included. This will cause the parser to call -//! rapidxml::parse_error_handler() function instead of throwing an exception. -//! This function must be defined by the user. -//!

-//! This class derives from std::exception class. -class parse_error : public std::exception { - public: - //! Constructs parse error - parse_error(const char *what, void *where) : m_what(what), m_where(where) {} - - //! Gets human readable description of error. - //! \return Pointer to null terminated description of the error. - virtual const char *what() const throw() { return m_what; } - - //! Gets pointer to character data where error happened. - //! Ch should be the same as char type of xml_document that produced the - //! error. \return Pointer to location within the parsed string where error - //! occured. - template - Ch *where() const { - return reinterpret_cast(m_where); - } - - private: - const char *m_what; - void *m_where; -}; -} // namespace rapidxml - -#endif - -/////////////////////////////////////////////////////////////////////////// -// Pool sizes - -#ifndef RAPIDXML_STATIC_POOL_SIZE -// Size of static memory block of memory_pool. -// Define RAPIDXML_STATIC_POOL_SIZE before including rapidxml.hpp if you want to -// override the default value. No dynamic memory allocations are performed by -// memory_pool until static memory is exhausted. -#define RAPIDXML_STATIC_POOL_SIZE (64 * 1024) -#endif - -#ifndef RAPIDXML_DYNAMIC_POOL_SIZE -// Size of dynamic memory block of memory_pool. -// Define RAPIDXML_DYNAMIC_POOL_SIZE before including rapidxml.hpp if you want -// to override the default value. After the static block is exhausted, dynamic -// blocks with approximately this size are allocated by memory_pool. -#define RAPIDXML_DYNAMIC_POOL_SIZE (64 * 1024) -#endif - -#ifndef RAPIDXML_ALIGNMENT -// Memory allocation alignment. -// Define RAPIDXML_ALIGNMENT before including rapidxml.hpp if you want to -// override the default value, which is the size of pointer. All memory -// allocations for nodes, attributes and strings will be aligned to this value. -// This must be a power of 2 and at least 1, otherwise memory_pool will not -// work. -#define RAPIDXML_ALIGNMENT sizeof(void *) -#endif - -namespace rapidxml { -// Forward declarations -template -class xml_node; -template -class xml_attribute; -template -class xml_document; - -//! Enumeration listing all node types produced by the parser. -//! Use xml_node::type() function to query node type. -enum node_type { - node_document, //!< A document node. Name and value are empty. - node_element, //!< An element node. Name contains element name. Value - //!contains - //!< text of first data node. - node_data, //!< A data node. Name is empty. Value contains data text. - node_cdata, //!< A CDATA node. Name is empty. Value contains data text. - node_comment, //!< A comment node. Name is empty. Value contains comment - //!text. - node_declaration, //!< A declaration node. Name and value are empty. - //!< Declaration parameters (version, encoding and - //!< standalone) are in node attributes. - node_doctype, //!< A DOCTYPE node. Name is empty. Value contains DOCTYPE - //!text. - node_pi //!< A PI node. Name contains target. Value contains instructions. -}; - -/////////////////////////////////////////////////////////////////////// -// Parsing flags - -//! Parse flag instructing the parser to not create data nodes. -//! Text of first data node will still be placed in value of parent element, -//! unless rapidxml::parse_no_element_values flag is also specified. Can be -//! combined with other flags by use of | operator.

See -//! xml_document::parse() function. -const int parse_no_data_nodes = 0x1; - -//! Parse flag instructing the parser to not use text of first data node as a -//! value of parent element. Can be combined with other flags by use of | -//! operator. Note that child data nodes of element node take precendence over -//! its value when printing. That is, if element has one or more child data -//! nodes and a value, the value will be ignored. Use -//! rapidxml::parse_no_data_nodes flag to prevent creation of data nodes if you -//! want to manipulate data using values of elements.

See -//! xml_document::parse() function. -const int parse_no_element_values = 0x2; - -//! Parse flag instructing the parser to not place zero terminators after -//! strings in the source text. By default zero terminators are placed, -//! modifying source text. Can be combined with other flags by use of | -//! operator.

See xml_document::parse() function. -const int parse_no_string_terminators = 0x4; - -//! Parse flag instructing the parser to not translate entities in the source -//! text. By default entities are translated, modifying source text. Can be -//! combined with other flags by use of | operator.

See -//! xml_document::parse() function. -const int parse_no_entity_translation = 0x8; - -//! Parse flag instructing the parser to disable UTF-8 handling and assume plain -//! 8 bit characters. By default, UTF-8 handling is enabled. Can be combined -//! with other flags by use of | operator.

See xml_document::parse() -//! function. -const int parse_no_utf8 = 0x10; - -//! Parse flag instructing the parser to create XML declaration node. -//! By default, declaration node is not created. -//! Can be combined with other flags by use of | operator. -//!

-//! See xml_document::parse() function. -const int parse_declaration_node = 0x20; - -//! Parse flag instructing the parser to create comments nodes. -//! By default, comment nodes are not created. -//! Can be combined with other flags by use of | operator. -//!

-//! See xml_document::parse() function. -const int parse_comment_nodes = 0x40; - -//! Parse flag instructing the parser to create DOCTYPE node. -//! By default, doctype node is not created. -//! Although W3C specification allows at most one DOCTYPE node, RapidXml will -//! silently accept documents with more than one. Can be combined with other -//! flags by use of | operator.

See xml_document::parse() function. -const int parse_doctype_node = 0x80; - -//! Parse flag instructing the parser to create PI nodes. -//! By default, PI nodes are not created. -//! Can be combined with other flags by use of | operator. -//!

-//! See xml_document::parse() function. -const int parse_pi_nodes = 0x100; - -//! Parse flag instructing the parser to validate closing tag names. -//! If not set, name inside closing tag is irrelevant to the parser. -//! By default, closing tags are not validated. -//! Can be combined with other flags by use of | operator. -//!

-//! See xml_document::parse() function. -const int parse_validate_closing_tags = 0x200; - -//! Parse flag instructing the parser to trim all leading and trailing -//! whitespace of data nodes. By default, whitespace is not trimmed. This flag -//! does not cause the parser to modify source text. Can be combined with other -//! flags by use of | operator.

See xml_document::parse() function. -const int parse_trim_whitespace = 0x400; - -//! Parse flag instructing the parser to condense all whitespace runs of data -//! nodes to a single space character. Trimming of leading and trailing -//! whitespace of data is controlled by rapidxml::parse_trim_whitespace flag. By -//! default, whitespace is not normalized. If this flag is specified, source -//! text will be modified. Can be combined with other flags by use of | -//! operator.

See xml_document::parse() function. -const int parse_normalize_whitespace = 0x800; - -// Compound flags - -//! Parse flags which represent default behaviour of the parser. -//! This is always equal to 0, so that all other flags can be simply ored -//! together. Normally there is no need to inconveniently disable flags by -//! anding with their negated (~) values. This also means that meaning of each -//! flag is a negation of the default setting. For example, if flag name -//! is rapidxml::parse_no_utf8, it means that utf-8 is enabled by -//! default, and using the flag will disable it.

See -//! xml_document::parse() function. -const int parse_default = 0; - -//! A combination of parse flags that forbids any modifications of the source -//! text. This also results in faster parsing. However, note that the following -//! will occur:
  • names and values of nodes will not be zero terminated, -//! you have to use xml_base::name_size() and xml_base::value_size() functions -//! to determine where name and value ends
  • entities will not be -//! translated
  • whitespace will not be normalized
  • -//!
-//! See xml_document::parse() function. -const int parse_non_destructive = - parse_no_string_terminators | parse_no_entity_translation; - -//! A combination of parse flags resulting in fastest possible parsing, without -//! sacrificing important data.

See xml_document::parse() function. -const int parse_fastest = parse_non_destructive | parse_no_data_nodes; - -//! A combination of parse flags resulting in largest amount of data being -//! extracted. This usually results in slowest parsing.

See -//! xml_document::parse() function. -const int parse_full = parse_declaration_node | parse_comment_nodes | - parse_doctype_node | parse_pi_nodes | - parse_validate_closing_tags; - -/////////////////////////////////////////////////////////////////////// -// Internals - -//! \cond internal -namespace internal { - -// Struct that contains lookup tables for the parser -// It must be a template to allow correct linking (because it has static data -// members, which are defined in a header file). -template -struct lookup_tables { - static const unsigned char lookup_whitespace[256]; // Whitespace table - static const unsigned char lookup_node_name[256]; // Node name table - static const unsigned char lookup_text[256]; // Text table - static const unsigned char lookup_text_pure_no_ws[256]; // Text table - static const unsigned char lookup_text_pure_with_ws[256]; // Text table - static const unsigned char - lookup_attribute_name[256]; // Attribute name table - static const unsigned char - lookup_attribute_data_1[256]; // Attribute data table with single quote - static const unsigned char - lookup_attribute_data_1_pure[256]; // Attribute data table with single - // quote - static const unsigned char - lookup_attribute_data_2[256]; // Attribute data table with double quotes - static const unsigned char - lookup_attribute_data_2_pure[256]; // Attribute data table with double - // quotes - static const unsigned char lookup_digits[256]; // Digits - static const unsigned char - lookup_upcase[256]; // To uppercase conversion table for ASCII characters -}; - -// Find length of the string -template -inline std::size_t measure(const Ch *p) { - const Ch *tmp = p; - while (*tmp) ++tmp; - return tmp - p; -} - -// Compare strings for equality -template -inline bool compare(const Ch *p1, std::size_t size1, const Ch *p2, - std::size_t size2, bool case_sensitive) { - if (size1 != size2) return false; - if (case_sensitive) { - for (const Ch *end = p1 + size1; p1 < end; ++p1, ++p2) - if (*p1 != *p2) return false; - } else { - for (const Ch *end = p1 + size1; p1 < end; ++p1, ++p2) - if (lookup_tables<0>::lookup_upcase[static_cast(*p1)] != - lookup_tables<0>::lookup_upcase[static_cast(*p2)]) - return false; - } - return true; -} -} // namespace internal -//! \endcond - -/////////////////////////////////////////////////////////////////////// -// Memory pool - -//! This class is used by the parser to create new nodes and attributes, without -//! overheads of dynamic memory allocation. In most cases, you will not need to -//! use this class directly. However, if you need to create nodes manually or -//! modify names/values of nodes, you are encouraged to use memory_pool of -//! relevant xml_document to allocate the memory. Not only is this faster than -//! allocating them by using new operator, but also their lifetime -//! will be tied to the lifetime of document, possibly simplyfing memory -//! management.

Call allocate_node() or allocate_attribute() functions -//! to obtain new nodes or attributes from the pool. You can also call -//! allocate_string() function to allocate strings. Such strings can then be -//! used as names or values of nodes without worrying about their lifetime. Note -//! that there is no free() function -- all allocations are freed -//! at once when clear() function is called, or when the pool is destroyed. -//!

-//! It is also possible to create a standalone memory_pool, and use it -//! to allocate nodes, whose lifetime will not be tied to any document. -//!

-//! Pool maintains RAPIDXML_STATIC_POOL_SIZE bytes of statically -//! allocated memory. Until static memory is exhausted, no dynamic memory -//! allocations are done. When static memory is exhausted, pool allocates -//! additional blocks of memory of size RAPIDXML_DYNAMIC_POOL_SIZE -//! each, by using global new[] and delete[] -//! operators. This behaviour can be changed by setting custom allocation -//! routines. Use set_allocator() function to set them.

Allocations for -//! nodes, attributes and strings are aligned at RAPIDXML_ALIGNMENT -//! bytes. This value defaults to the size of pointer on target architecture. -//!

-//! To obtain absolutely top performance from the parser, -//! it is important that all nodes are allocated from a single, contiguous block -//! of memory. Otherwise, cache misses when jumping between two (or more) -//! disjoint blocks of memory can slow down parsing quite considerably. If -//! required, you can tweak RAPIDXML_STATIC_POOL_SIZE, -//! RAPIDXML_DYNAMIC_POOL_SIZE and RAPIDXML_ALIGNMENT -//! to obtain best wasted memory to performance compromise. -//! To do it, define their values before rapidxml.hpp file is included. -//! \param Ch Character type of created nodes. -template -class memory_pool { - public: - //! \cond internal - typedef void *(alloc_func)( - std::size_t); // Type of user-defined function used to allocate memory - typedef void(free_func)( - void *); // Type of user-defined function used to free memory - //! \endcond - - //! Constructs empty pool with default allocator functions. - memory_pool() : m_alloc_func(0), m_free_func(0) { init(); } - - //! Destroys pool and frees all the memory. - //! This causes memory occupied by nodes allocated by the pool to be freed. - //! Nodes allocated from the pool are no longer valid. - ~memory_pool() { clear(); } - - //! Allocates a new node from the pool, and optionally assigns name and value - //! to it. If the allocation request cannot be accomodated, this function will - //! throw std::bad_alloc. If exceptions are disabled by defining - //! RAPIDXML_NO_EXCEPTIONS, this function will call - //! rapidxml::parse_error_handler() function. \param type Type of node to - //! create. \param name Name to assign to the node, or 0 to assign no name. - //! \param value Value to assign to the node, or 0 to assign no value. - //! \param name_size Size of name to assign, or 0 to automatically calculate - //! size from name string. \param value_size Size of value to assign, or 0 to - //! automatically calculate size from value string. \return Pointer to - //! allocated node. This pointer will never be NULL. - xml_node *allocate_node(node_type type, const Ch *name = 0, - const Ch *value = 0, std::size_t name_size = 0, - std::size_t value_size = 0) { - void *memory = allocate_aligned(sizeof(xml_node)); - xml_node *node = new (memory) xml_node(type); - if (name) { - if (name_size > 0) - node->name(name, name_size); - else - node->name(name); - } - if (value) { - if (value_size > 0) - node->value(value, value_size); - else - node->value(value); - } - return node; - } - - //! Allocates a new attribute from the pool, and optionally assigns name and - //! value to it. If the allocation request cannot be accomodated, this - //! function will throw std::bad_alloc. If exceptions are - //! disabled by defining RAPIDXML_NO_EXCEPTIONS, this function will call - //! rapidxml::parse_error_handler() function. \param name Name to assign to - //! the attribute, or 0 to assign no name. \param value Value to assign to the - //! attribute, or 0 to assign no value. \param name_size Size of name to - //! assign, or 0 to automatically calculate size from name string. \param - //! value_size Size of value to assign, or 0 to automatically calculate size - //! from value string. \return Pointer to allocated attribute. This pointer - //! will never be NULL. - xml_attribute *allocate_attribute(const Ch *name = 0, const Ch *value = 0, - std::size_t name_size = 0, - std::size_t value_size = 0) { - void *memory = allocate_aligned(sizeof(xml_attribute)); - xml_attribute *attribute = new (memory) xml_attribute; - if (name) { - if (name_size > 0) - attribute->name(name, name_size); - else - attribute->name(name); - } - if (value) { - if (value_size > 0) - attribute->value(value, value_size); - else - attribute->value(value); - } - return attribute; - } - - //! Allocates a char array of given size from the pool, and optionally copies - //! a given string to it. If the allocation request cannot be accomodated, - //! this function will throw std::bad_alloc. If exceptions are - //! disabled by defining RAPIDXML_NO_EXCEPTIONS, this function will call - //! rapidxml::parse_error_handler() function. \param source String to - //! initialize the allocated memory with, or 0 to not initialize it. \param - //! size Number of characters to allocate, or zero to calculate it - //! automatically from source string length; if size is 0, source string must - //! be specified and null terminated. \return Pointer to allocated char array. - //! This pointer will never be NULL. - Ch *allocate_string(const Ch *source = 0, std::size_t size = 0) { - assert(source || - size); // Either source or size (or both) must be specified - if (size == 0) size = internal::measure(source) + 1; - Ch *result = static_cast(allocate_aligned(size * sizeof(Ch))); - if (source) - for (std::size_t i = 0; i < size; ++i) result[i] = source[i]; - return result; - } - - //! Clones an xml_node and its hierarchy of child nodes and attributes. - //! Nodes and attributes are allocated from this memory pool. - //! Names and values are not cloned, they are shared between the clone and the - //! source. Result node can be optionally specified as a second parameter, in - //! which case its contents will be replaced with cloned source node. This is - //! useful when you want to clone entire document. \param source Node to - //! clone. \param result Node to put results in, or 0 to automatically - //! allocate result node \return Pointer to cloned node. This pointer will - //! never be NULL. - xml_node *clone_node(const xml_node *source, - xml_node *result = 0) { - // Prepare result node - if (result) { - result->remove_all_attributes(); - result->remove_all_nodes(); - result->type(source->type()); - } else - result = allocate_node(source->type()); - - // Clone name and value - result->name(source->name(), source->name_size()); - result->value(source->value(), source->value_size()); - - // Clone child nodes and attributes - for (xml_node *child = source->first_node(); child; - child = child->next_sibling()) - result->append_node(clone_node(child)); - for (xml_attribute *attr = source->first_attribute(); attr; - attr = attr->next_attribute()) - result->append_attribute(allocate_attribute( - attr->name(), attr->value(), attr->name_size(), attr->value_size())); - - return result; - } - - //! Clears the pool. - //! This causes memory occupied by nodes allocated by the pool to be freed. - //! Any nodes or strings allocated from the pool will no longer be valid. - void clear() { - while (m_begin != m_static_memory) { - char *previous_begin = - reinterpret_cast
(align(m_begin))->previous_begin; - if (m_free_func) - m_free_func(m_begin); - else - delete[] m_begin; - m_begin = previous_begin; - } - init(); - } - - //! Sets or resets the user-defined memory allocation functions for the pool. - //! This can only be called when no memory is allocated from the pool yet, - //! otherwise results are undefined. Allocation function must not return - //! invalid pointer on failure. It should either throw, stop the program, or - //! use longjmp() function to pass control to other place of - //! program. If it returns invalid pointer, results are undefined.

- //! User defined allocation functions must have the following forms: - //!
- //!
void *allocate(std::size_t size); - //!
void free(void *pointer); - //!

- //! \param af Allocation function, or 0 to restore default function - //! \param ff Free function, or 0 to restore default function - void set_allocator(alloc_func *af, free_func *ff) { - assert(m_begin == m_static_memory && - m_ptr == align(m_begin)); // Verify that no memory is allocated yet - m_alloc_func = af; - m_free_func = ff; - } - - private: - struct header { - char *previous_begin; - }; - - void init() { - m_begin = m_static_memory; - m_ptr = align(m_begin); - m_end = m_static_memory + sizeof(m_static_memory); - } - - char *align(char *ptr) { - std::size_t alignment = - ((RAPIDXML_ALIGNMENT - (std::size_t(ptr) & (RAPIDXML_ALIGNMENT - 1))) & - (RAPIDXML_ALIGNMENT - 1)); - return ptr + alignment; - } - - char *allocate_raw(std::size_t size) { - // Allocate - void *memory; - if (m_alloc_func) // Allocate memory using either user-specified allocation - // function or global operator new[] - { - memory = m_alloc_func(size); - assert(memory); // Allocator is not allowed to return 0, on failure it - // must either throw, stop the program or use longjmp - } else { - memory = new char[size]; -#ifdef RAPIDXML_NO_EXCEPTIONS - if (!memory) // If exceptions are disabled, verify memory allocation, - // because new will not be able to throw bad_alloc - RAPIDXML_PARSE_ERROR("out of memory", 0); -#endif - } - return static_cast(memory); - } - - void *allocate_aligned(std::size_t size) { - // Calculate aligned pointer - char *result = align(m_ptr); - - // If not enough memory left in current pool, allocate a new pool - if (result + size > m_end) { - // Calculate required pool size (may be bigger than - // RAPIDXML_DYNAMIC_POOL_SIZE) - std::size_t pool_size = RAPIDXML_DYNAMIC_POOL_SIZE; - if (pool_size < size) pool_size = size; - - // Allocate - std::size_t alloc_size = sizeof(header) + (2 * RAPIDXML_ALIGNMENT - 2) + - pool_size; // 2 alignments required in worst - // case: one for header, one - // for actual allocation - char *raw_memory = allocate_raw(alloc_size); - - // Setup new pool in allocated memory - char *pool = align(raw_memory); - header *new_header = reinterpret_cast
(pool); - new_header->previous_begin = m_begin; - m_begin = raw_memory; - m_ptr = pool + sizeof(header); - m_end = raw_memory + alloc_size; - - // Calculate aligned pointer again using new pool - result = align(m_ptr); - } - - // Update pool and return aligned pointer - m_ptr = result + size; - return result; - } - - char *m_begin; // Start of raw memory making up current pool - char *m_ptr; // First free byte in current pool - char *m_end; // One past last available byte in current pool - char m_static_memory[RAPIDXML_STATIC_POOL_SIZE]; // Static raw memory - alloc_func - *m_alloc_func; // Allocator function, or 0 if default is to be used - free_func *m_free_func; // Free function, or 0 if default is to be used -}; - -/////////////////////////////////////////////////////////////////////////// -// XML base - -//! Base class for xml_node and xml_attribute implementing common functions: -//! name(), name_size(), value(), value_size() and parent(). -//! \param Ch Character type to use -template -class xml_base { - public: - /////////////////////////////////////////////////////////////////////////// - // Construction & destruction - - // Construct a base with empty name, value and parent - xml_base() : m_name(0), m_value(0), m_parent(0) {} - - /////////////////////////////////////////////////////////////////////////// - // Node data access - - //! Gets name of the node. - //! Interpretation of name depends on type of node. - //! Note that name will not be zero-terminated if - //! rapidxml::parse_no_string_terminators option was selected during parse. - //!

- //! Use name_size() function to determine length of the name. - //! \return Name of node, or empty string if node has no name. - Ch *name() const { return m_name ? m_name : nullstr(); } - - //! Gets size of node name, not including terminator character. - //! This function works correctly irrespective of whether name is or is not - //! zero terminated. \return Size of node name, in characters. - std::size_t name_size() const { return m_name ? m_name_size : 0; } - - //! Gets value of node. - //! Interpretation of value depends on type of node. - //! Note that value will not be zero-terminated if - //! rapidxml::parse_no_string_terminators option was selected during parse. - //!

- //! Use value_size() function to determine length of the value. - //! \return Value of node, or empty string if node has no value. - Ch *value() const { return m_value ? m_value : nullstr(); } - - //! Gets size of node value, not including terminator character. - //! This function works correctly irrespective of whether value is or is not - //! zero terminated. \return Size of node value, in characters. - std::size_t value_size() const { return m_value ? m_value_size : 0; } - - /////////////////////////////////////////////////////////////////////////// - // Node modification - - //! Sets name of node to a non zero-terminated string. - //! See \ref ownership_of_strings. - //!

- //! Note that node does not own its name or value, it only stores a pointer to - //! it. It will not delete or otherwise free the pointer on destruction. It is - //! reponsibility of the user to properly manage lifetime of the string. The - //! easiest way to achieve it is to use memory_pool of the document to - //! allocate the string - on destruction of the document the string will be - //! automatically freed.

Size of name must be specified separately, - //! because name does not have to be zero terminated. Use name(const Ch *) - //! function to have the length automatically calculated (string must be zero - //! terminated). \param name Name of node to set. Does not have to be zero - //! terminated. \param size Size of name, in characters. This does not include - //! zero terminator, if one is present. - void name(const Ch *name, std::size_t size) { - m_name = const_cast(name); - m_name_size = size; - } - - //! Sets name of node to a zero-terminated string. - //! See also \ref ownership_of_strings and xml_node::name(const Ch *, - //! std::size_t). \param name Name of node to set. Must be zero terminated. - void name(const Ch *name) { this->name(name, internal::measure(name)); } - - //! Sets value of node to a non zero-terminated string. - //! See \ref ownership_of_strings. - //!

- //! Note that node does not own its name or value, it only stores a pointer to - //! it. It will not delete or otherwise free the pointer on destruction. It is - //! reponsibility of the user to properly manage lifetime of the string. The - //! easiest way to achieve it is to use memory_pool of the document to - //! allocate the string - on destruction of the document the string will be - //! automatically freed.

Size of value must be specified separately, - //! because it does not have to be zero terminated. Use value(const Ch *) - //! function to have the length automatically calculated (string must be zero - //! terminated).

If an element has a child node of type node_data, it - //! will take precedence over element value when printing. If you want to - //! manipulate data of elements using values, use parser flag - //! rapidxml::parse_no_data_nodes to prevent creation of data nodes by the - //! parser. \param value value of node to set. Does not have to be zero - //! terminated. \param size Size of value, in characters. This does not - //! include zero terminator, if one is present. - void value(const Ch *value, std::size_t size) { - m_value = const_cast(value); - m_value_size = size; - } - - //! Sets value of node to a zero-terminated string. - //! See also \ref ownership_of_strings and xml_node::value(const Ch *, - //! std::size_t). \param value Vame of node to set. Must be zero terminated. - void value(const Ch *value) { this->value(value, internal::measure(value)); } - - /////////////////////////////////////////////////////////////////////////// - // Related nodes access - - //! Gets node parent. - //! \return Pointer to parent node, or 0 if there is no parent. - xml_node *parent() const { return m_parent; } - - protected: - // Return empty string - static Ch *nullstr() { - static Ch zero = Ch('\0'); - return &zero; - } - - Ch *m_name; // Name of node, or 0 if no name - Ch *m_value; // Value of node, or 0 if no value - std::size_t m_name_size; // Length of node name, or undefined of no name - std::size_t m_value_size; // Length of node value, or undefined if no value - xml_node *m_parent; // Pointer to parent node, or 0 if none -}; - -//! Class representing attribute node of XML document. -//! Each attribute has name and value strings, which are available through -//! name() and value() functions (inherited from xml_base). Note that after -//! parse, both name and value of attribute will point to interior of source -//! text used for parsing. Thus, this text must persist in memory for the -//! lifetime of attribute. \param Ch Character type to use. -template -class xml_attribute : public xml_base { - friend class xml_node; - - public: - /////////////////////////////////////////////////////////////////////////// - // Construction & destruction - - //! Constructs an empty attribute with the specified type. - //! Consider using memory_pool of appropriate xml_document if allocating - //! attributes manually. - xml_attribute() {} - - /////////////////////////////////////////////////////////////////////////// - // Related nodes access - - //! Gets document of which attribute is a child. - //! \return Pointer to document that contains this attribute, or 0 if there is - //! no parent document. - xml_document *document() const { - if (xml_node *node = this->parent()) { - while (node->parent()) node = node->parent(); - return node->type() == node_document - ? static_cast *>(node) - : 0; - } else - return 0; - } - - //! Gets previous attribute, optionally matching attribute name. - //! \param name Name of attribute to find, or 0 to return previous attribute - //! regardless of its name; this string doesn't have to be zero-terminated if - //! name_size is non-zero \param name_size Size of name, in characters, or 0 - //! to have size calculated automatically from string \param case_sensitive - //! Should name comparison be case-sensitive; non case-sensitive comparison - //! works properly only for ASCII characters \return Pointer to found - //! attribute, or 0 if not found. - xml_attribute *previous_attribute(const Ch *name = 0, - std::size_t name_size = 0, - bool case_sensitive = true) const { - if (name) { - if (name_size == 0) name_size = internal::measure(name); - for (xml_attribute *attribute = m_prev_attribute; attribute; - attribute = attribute->m_prev_attribute) - if (internal::compare(attribute->name(), attribute->name_size(), name, - name_size, case_sensitive)) - return attribute; - return 0; - } else - return this->m_parent ? m_prev_attribute : 0; - } - - //! Gets next attribute, optionally matching attribute name. - //! \param name Name of attribute to find, or 0 to return next attribute - //! regardless of its name; this string doesn't have to be zero-terminated if - //! name_size is non-zero \param name_size Size of name, in characters, or 0 - //! to have size calculated automatically from string \param case_sensitive - //! Should name comparison be case-sensitive; non case-sensitive comparison - //! works properly only for ASCII characters \return Pointer to found - //! attribute, or 0 if not found. - xml_attribute *next_attribute(const Ch *name = 0, - std::size_t name_size = 0, - bool case_sensitive = true) const { - if (name) { - if (name_size == 0) name_size = internal::measure(name); - for (xml_attribute *attribute = m_next_attribute; attribute; - attribute = attribute->m_next_attribute) - if (internal::compare(attribute->name(), attribute->name_size(), name, - name_size, case_sensitive)) - return attribute; - return 0; - } else - return this->m_parent ? m_next_attribute : 0; - } - - private: - xml_attribute - *m_prev_attribute; // Pointer to previous sibling of attribute, or 0 if - // none; only valid if parent is non-zero - xml_attribute - *m_next_attribute; // Pointer to next sibling of attribute, or 0 if none; - // only valid if parent is non-zero -}; - -/////////////////////////////////////////////////////////////////////////// -// XML node - -//! Class representing a node of XML document. -//! Each node may have associated name and value strings, which are available -//! through name() and value() functions. Interpretation of name and value -//! depends on type of the node. Type of node can be determined by using type() -//! function.

Note that after parse, both name and value of node, if -//! any, will point interior of source text used for parsing. Thus, this text -//! must persist in the memory for the lifetime of node. \param Ch Character -//! type to use. -template -class xml_node : public xml_base { - public: - /////////////////////////////////////////////////////////////////////////// - // Construction & destruction - - //! Constructs an empty node with the specified type. - //! Consider using memory_pool of appropriate document to allocate nodes - //! manually. \param type Type of node to construct. - xml_node(node_type type) - : m_type(type), m_first_node(0), m_first_attribute(0) {} - - /////////////////////////////////////////////////////////////////////////// - // Node data access - - //! Gets type of node. - //! \return Type of node. - node_type type() const { return m_type; } - - /////////////////////////////////////////////////////////////////////////// - // Related nodes access - - //! Gets document of which node is a child. - //! \return Pointer to document that contains this node, or 0 if there is no - //! parent document. - xml_document *document() const { - xml_node *node = const_cast *>(this); - while (node->parent()) node = node->parent(); - return node->type() == node_document ? static_cast *>(node) - : 0; - } - - //! Gets first child node, optionally matching node name. - //! \param name Name of child to find, or 0 to return first child regardless - //! of its name; this string doesn't have to be zero-terminated if name_size - //! is non-zero \param name_size Size of name, in characters, or 0 to have - //! size calculated automatically from string \param case_sensitive Should - //! name comparison be case-sensitive; non case-sensitive comparison works - //! properly only for ASCII characters \return Pointer to found child, or 0 if - //! not found. - xml_node *first_node(const Ch *name = 0, std::size_t name_size = 0, - bool case_sensitive = true) const { - if (name) { - if (name_size == 0) name_size = internal::measure(name); - for (xml_node *child = m_first_node; child; - child = child->next_sibling()) - if (internal::compare(child->name(), child->name_size(), name, - name_size, case_sensitive)) - return child; - return 0; - } else - return m_first_node; - } - - //! Gets last child node, optionally matching node name. - //! Behaviour is undefined if node has no children. - //! Use first_node() to test if node has children. - //! \param name Name of child to find, or 0 to return last child regardless of - //! its name; this string doesn't have to be zero-terminated if name_size is - //! non-zero \param name_size Size of name, in characters, or 0 to have size - //! calculated automatically from string \param case_sensitive Should name - //! comparison be case-sensitive; non case-sensitive comparison works properly - //! only for ASCII characters \return Pointer to found child, or 0 if not - //! found. - xml_node *last_node(const Ch *name = 0, std::size_t name_size = 0, - bool case_sensitive = true) const { - assert( - m_first_node); // Cannot query for last child if node has no children - if (name) { - if (name_size == 0) name_size = internal::measure(name); - for (xml_node *child = m_last_node; child; - child = child->previous_sibling()) - if (internal::compare(child->name(), child->name_size(), name, - name_size, case_sensitive)) - return child; - return 0; - } else - return m_last_node; - } - - //! Gets previous sibling node, optionally matching node name. - //! Behaviour is undefined if node has no parent. - //! Use parent() to test if node has a parent. - //! \param name Name of sibling to find, or 0 to return previous sibling - //! regardless of its name; this string doesn't have to be zero-terminated if - //! name_size is non-zero \param name_size Size of name, in characters, or 0 - //! to have size calculated automatically from string \param case_sensitive - //! Should name comparison be case-sensitive; non case-sensitive comparison - //! works properly only for ASCII characters \return Pointer to found sibling, - //! or 0 if not found. - xml_node *previous_sibling(const Ch *name = 0, std::size_t name_size = 0, - bool case_sensitive = true) const { - assert(this->m_parent); // Cannot query for siblings if node has no parent - if (name) { - if (name_size == 0) name_size = internal::measure(name); - for (xml_node *sibling = m_prev_sibling; sibling; - sibling = sibling->m_prev_sibling) - if (internal::compare(sibling->name(), sibling->name_size(), name, - name_size, case_sensitive)) - return sibling; - return 0; - } else - return m_prev_sibling; - } - - //! Gets next sibling node, optionally matching node name. - //! Behaviour is undefined if node has no parent. - //! Use parent() to test if node has a parent. - //! \param name Name of sibling to find, or 0 to return next sibling - //! regardless of its name; this string doesn't have to be zero-terminated if - //! name_size is non-zero \param name_size Size of name, in characters, or 0 - //! to have size calculated automatically from string \param case_sensitive - //! Should name comparison be case-sensitive; non case-sensitive comparison - //! works properly only for ASCII characters \return Pointer to found sibling, - //! or 0 if not found. - xml_node *next_sibling(const Ch *name = 0, std::size_t name_size = 0, - bool case_sensitive = true) const { - assert(this->m_parent); // Cannot query for siblings if node has no parent - if (name) { - if (name_size == 0) name_size = internal::measure(name); - for (xml_node *sibling = m_next_sibling; sibling; - sibling = sibling->m_next_sibling) - if (internal::compare(sibling->name(), sibling->name_size(), name, - name_size, case_sensitive)) - return sibling; - return 0; - } else - return m_next_sibling; - } - - //! Gets first attribute of node, optionally matching attribute name. - //! \param name Name of attribute to find, or 0 to return first attribute - //! regardless of its name; this string doesn't have to be zero-terminated if - //! name_size is non-zero \param name_size Size of name, in characters, or 0 - //! to have size calculated automatically from string \param case_sensitive - //! Should name comparison be case-sensitive; non case-sensitive comparison - //! works properly only for ASCII characters \return Pointer to found - //! attribute, or 0 if not found. - xml_attribute *first_attribute(const Ch *name = 0, - std::size_t name_size = 0, - bool case_sensitive = true) const { - if (name) { - if (name_size == 0) name_size = internal::measure(name); - for (xml_attribute *attribute = m_first_attribute; attribute; - attribute = attribute->m_next_attribute) - if (internal::compare(attribute->name(), attribute->name_size(), name, - name_size, case_sensitive)) - return attribute; - return 0; - } else - return m_first_attribute; - } - - //! Gets last attribute of node, optionally matching attribute name. - //! \param name Name of attribute to find, or 0 to return last attribute - //! regardless of its name; this string doesn't have to be zero-terminated if - //! name_size is non-zero \param name_size Size of name, in characters, or 0 - //! to have size calculated automatically from string \param case_sensitive - //! Should name comparison be case-sensitive; non case-sensitive comparison - //! works properly only for ASCII characters \return Pointer to found - //! attribute, or 0 if not found. - xml_attribute *last_attribute(const Ch *name = 0, - std::size_t name_size = 0, - bool case_sensitive = true) const { - if (name) { - if (name_size == 0) name_size = internal::measure(name); - for (xml_attribute *attribute = m_last_attribute; attribute; - attribute = attribute->m_prev_attribute) - if (internal::compare(attribute->name(), attribute->name_size(), name, - name_size, case_sensitive)) - return attribute; - return 0; - } else - return m_first_attribute ? m_last_attribute : 0; - } - - /////////////////////////////////////////////////////////////////////////// - // Node modification - - //! Sets type of node. - //! \param type Type of node to set. - void type(node_type type) { m_type = type; } - - /////////////////////////////////////////////////////////////////////////// - // Node manipulation - - //! Prepends a new child node. - //! The prepended child becomes the first child, and all existing children are - //! moved one position back. \param child Node to prepend. - void prepend_node(xml_node *child) { - assert(child && !child->parent() && child->type() != node_document); - if (first_node()) { - child->m_next_sibling = m_first_node; - m_first_node->m_prev_sibling = child; - } else { - child->m_next_sibling = 0; - m_last_node = child; - } - m_first_node = child; - child->m_parent = this; - child->m_prev_sibling = 0; - } - - //! Appends a new child node. - //! The appended child becomes the last child. - //! \param child Node to append. - void append_node(xml_node *child) { - assert(child && !child->parent() && child->type() != node_document); - if (first_node()) { - child->m_prev_sibling = m_last_node; - m_last_node->m_next_sibling = child; - } else { - child->m_prev_sibling = 0; - m_first_node = child; - } - m_last_node = child; - child->m_parent = this; - child->m_next_sibling = 0; - } - - //! Inserts a new child node at specified place inside the node. - //! All children after and including the specified node are moved one position - //! back. \param where Place where to insert the child, or 0 to insert at the - //! back. \param child Node to insert. - void insert_node(xml_node *where, xml_node *child) { - assert(!where || where->parent() == this); - assert(child && !child->parent() && child->type() != node_document); - if (where == m_first_node) - prepend_node(child); - else if (where == 0) - append_node(child); - else { - child->m_prev_sibling = where->m_prev_sibling; - child->m_next_sibling = where; - where->m_prev_sibling->m_next_sibling = child; - where->m_prev_sibling = child; - child->m_parent = this; - } - } - - //! Removes first child node. - //! If node has no children, behaviour is undefined. - //! Use first_node() to test if node has children. - void remove_first_node() { - assert(first_node()); - xml_node *child = m_first_node; - m_first_node = child->m_next_sibling; - if (child->m_next_sibling) - child->m_next_sibling->m_prev_sibling = 0; - else - m_last_node = 0; - child->m_parent = 0; - } - - //! Removes last child of the node. - //! If node has no children, behaviour is undefined. - //! Use first_node() to test if node has children. - void remove_last_node() { - assert(first_node()); - xml_node *child = m_last_node; - if (child->m_prev_sibling) { - m_last_node = child->m_prev_sibling; - child->m_prev_sibling->m_next_sibling = 0; - } else - m_first_node = 0; - child->m_parent = 0; - } - - //! Removes specified child from the node - // \param where Pointer to child to be removed. - void remove_node(xml_node *where) { - assert(where && where->parent() == this); - assert(first_node()); - if (where == m_first_node) - remove_first_node(); - else if (where == m_last_node) - remove_last_node(); - else { - where->m_prev_sibling->m_next_sibling = where->m_next_sibling; - where->m_next_sibling->m_prev_sibling = where->m_prev_sibling; - where->m_parent = 0; - } - } - - //! Removes all child nodes (but not attributes). - void remove_all_nodes() { - for (xml_node *node = first_node(); node; node = node->m_next_sibling) - node->m_parent = 0; - m_first_node = 0; - } - - //! Prepends a new attribute to the node. - //! \param attribute Attribute to prepend. - void prepend_attribute(xml_attribute *attribute) { - assert(attribute && !attribute->parent()); - if (first_attribute()) { - attribute->m_next_attribute = m_first_attribute; - m_first_attribute->m_prev_attribute = attribute; - } else { - attribute->m_next_attribute = 0; - m_last_attribute = attribute; - } - m_first_attribute = attribute; - attribute->m_parent = this; - attribute->m_prev_attribute = 0; - } - - //! Appends a new attribute to the node. - //! \param attribute Attribute to append. - void append_attribute(xml_attribute *attribute) { - assert(attribute && !attribute->parent()); - if (first_attribute()) { - attribute->m_prev_attribute = m_last_attribute; - m_last_attribute->m_next_attribute = attribute; - } else { - attribute->m_prev_attribute = 0; - m_first_attribute = attribute; - } - m_last_attribute = attribute; - attribute->m_parent = this; - attribute->m_next_attribute = 0; - } - - //! Inserts a new attribute at specified place inside the node. - //! All attributes after and including the specified attribute are moved one - //! position back. \param where Place where to insert the attribute, or 0 to - //! insert at the back. \param attribute Attribute to insert. - void insert_attribute(xml_attribute *where, - xml_attribute *attribute) { - assert(!where || where->parent() == this); - assert(attribute && !attribute->parent()); - if (where == m_first_attribute) - prepend_attribute(attribute); - else if (where == 0) - append_attribute(attribute); - else { - attribute->m_prev_attribute = where->m_prev_attribute; - attribute->m_next_attribute = where; - where->m_prev_attribute->m_next_attribute = attribute; - where->m_prev_attribute = attribute; - attribute->m_parent = this; - } - } - - //! Removes first attribute of the node. - //! If node has no attributes, behaviour is undefined. - //! Use first_attribute() to test if node has attributes. - void remove_first_attribute() { - assert(first_attribute()); - xml_attribute *attribute = m_first_attribute; - if (attribute->m_next_attribute) { - attribute->m_next_attribute->m_prev_attribute = 0; - } else - m_last_attribute = 0; - attribute->m_parent = 0; - m_first_attribute = attribute->m_next_attribute; - } - - //! Removes last attribute of the node. - //! If node has no attributes, behaviour is undefined. - //! Use first_attribute() to test if node has attributes. - void remove_last_attribute() { - assert(first_attribute()); - xml_attribute *attribute = m_last_attribute; - if (attribute->m_prev_attribute) { - attribute->m_prev_attribute->m_next_attribute = 0; - m_last_attribute = attribute->m_prev_attribute; - } else - m_first_attribute = 0; - attribute->m_parent = 0; - } - - //! Removes specified attribute from node. - //! \param where Pointer to attribute to be removed. - void remove_attribute(xml_attribute *where) { - assert(first_attribute() && where->parent() == this); - if (where == m_first_attribute) - remove_first_attribute(); - else if (where == m_last_attribute) - remove_last_attribute(); - else { - where->m_prev_attribute->m_next_attribute = where->m_next_attribute; - where->m_next_attribute->m_prev_attribute = where->m_prev_attribute; - where->m_parent = 0; - } - } - - //! Removes all attributes of node. - void remove_all_attributes() { - for (xml_attribute *attribute = first_attribute(); attribute; - attribute = attribute->m_next_attribute) - attribute->m_parent = 0; - m_first_attribute = 0; - } - - private: - /////////////////////////////////////////////////////////////////////////// - // Restrictions - - // No copying - xml_node(const xml_node &); - void operator=(const xml_node &); - - /////////////////////////////////////////////////////////////////////////// - // Data members - - // Note that some of the pointers below have UNDEFINED values if certain other - // pointers are 0. This is required for maximum performance, as it allows the - // parser to omit initialization of unneded/redundant values. - // - // The rules are as follows: - // 1. first_node and first_attribute contain valid pointers, or 0 if node has - // no children/attributes respectively - // 2. last_node and last_attribute are valid only if node has at least one - // child/attribute respectively, otherwise they contain garbage - // 3. prev_sibling and next_sibling are valid only if node has a parent, - // otherwise they contain garbage - - node_type m_type; // Type of node; always valid - xml_node - *m_first_node; // Pointer to first child node, or 0 if none; always valid - xml_node *m_last_node; // Pointer to last child node, or 0 if none; this - // value is only valid if m_first_node is non-zero - xml_attribute *m_first_attribute; // Pointer to first attribute of node, - // or 0 if none; always valid - xml_attribute *m_last_attribute; // Pointer to last attribute of node, or - // 0 if none; this - // value is only valid if m_first_attribute is non-zero - xml_node - *m_prev_sibling; // Pointer to previous sibling of node, or 0 if none; - // this value is only valid if m_parent is non-zero - xml_node - *m_next_sibling; // Pointer to next sibling of node, or 0 if none; this - // value is only valid if m_parent is non-zero -}; - -/////////////////////////////////////////////////////////////////////////// -// XML document - -//! This class represents root of the DOM hierarchy. -//! It is also an xml_node and a memory_pool through public inheritance. -//! Use parse() function to build a DOM tree from a zero-terminated XML text -//! string. parse() function allocates memory for nodes and attributes by using -//! functions of xml_document, which are inherited from memory_pool. To access -//! root node of the document, use the document itself, as if it was an -//! xml_node. \param Ch Character type to use. -template -class xml_document : public xml_node, public memory_pool { - public: - //! Constructs empty XML document - xml_document() : xml_node(node_document) {} - - //! Parses zero-terminated XML string according to given flags. - //! Passed string will be modified by the parser, unless - //! rapidxml::parse_non_destructive flag is used. The string must persist for - //! the lifetime of the document. In case of error, rapidxml::parse_error - //! exception will be thrown.

If you want to parse contents of a - //! file, you must first load the file into the memory, and pass pointer to - //! its beginning. Make sure that data is zero-terminated.

Document - //! can be parsed into multiple times. Each new call to parse removes previous - //! nodes and attributes (if any), but does not clear memory pool. \param text - //! XML data to parse; pointer is non-const to denote fact that this data may - //! be modified by the parser. - template - void parse(Ch *text) { - assert(text); - - // Remove current contents - this->remove_all_nodes(); - this->remove_all_attributes(); - - // Parse BOM, if any - parse_bom(text); - - // Parse children - while (1) { - // Skip whitespace before node - skip(text); - if (*text == 0) break; - - // Parse and append new child - if (*text == Ch('<')) { - ++text; // Skip '<' - if (xml_node *node = parse_node(text)) - this->append_node(node); - } else - RAPIDXML_PARSE_ERROR("expected <", text); - } - } - - //! Clears the document by deleting all nodes and clearing the memory pool. - //! All nodes owned by document pool are destroyed. - void clear() { - this->remove_all_nodes(); - this->remove_all_attributes(); - memory_pool::clear(); - } - - private: - /////////////////////////////////////////////////////////////////////// - // Internal character utility functions - - // Detect whitespace character - struct whitespace_pred { - static unsigned char test(Ch ch) { - return internal::lookup_tables< - 0>::lookup_whitespace[static_cast(ch)]; - } - }; - - // Detect node name character - struct node_name_pred { - static unsigned char test(Ch ch) { - return internal::lookup_tables< - 0>::lookup_node_name[static_cast(ch)]; - } - }; - - // Detect attribute name character - struct attribute_name_pred { - static unsigned char test(Ch ch) { - return internal::lookup_tables< - 0>::lookup_attribute_name[static_cast(ch)]; - } - }; - - // Detect text character (PCDATA) - struct text_pred { - static unsigned char test(Ch ch) { - return internal::lookup_tables<0>::lookup_text[static_cast( - ch)]; - } - }; - - // Detect text character (PCDATA) that does not require processing - struct text_pure_no_ws_pred { - static unsigned char test(Ch ch) { - return internal::lookup_tables< - 0>::lookup_text_pure_no_ws[static_cast(ch)]; - } - }; - - // Detect text character (PCDATA) that does not require processing - struct text_pure_with_ws_pred { - static unsigned char test(Ch ch) { - return internal::lookup_tables< - 0>::lookup_text_pure_with_ws[static_cast(ch)]; - } - }; - - // Detect attribute value character - template - struct attribute_value_pred { - static unsigned char test(Ch ch) { - if (Quote == Ch('\'')) - return internal::lookup_tables< - 0>::lookup_attribute_data_1[static_cast(ch)]; - if (Quote == Ch('\"')) - return internal::lookup_tables< - 0>::lookup_attribute_data_2[static_cast(ch)]; - return 0; // Should never be executed, to avoid warnings on Comeau - } - }; - - // Detect attribute value character - template - struct attribute_value_pure_pred { - static unsigned char test(Ch ch) { - if (Quote == Ch('\'')) - return internal::lookup_tables< - 0>::lookup_attribute_data_1_pure[static_cast(ch)]; - if (Quote == Ch('\"')) - return internal::lookup_tables< - 0>::lookup_attribute_data_2_pure[static_cast(ch)]; - return 0; // Should never be executed, to avoid warnings on Comeau - } - }; - - // Insert coded character, using UTF8 or 8-bit ASCII - template - static void insert_coded_character(Ch *&text, unsigned long code) { - if (Flags & parse_no_utf8) { - // Insert 8-bit ASCII character - // Todo: possibly verify that code is less than 256 and use replacement - // char otherwise? - text[0] = static_cast(code); - text += 1; - } else { - // Insert UTF8 sequence - if (code < 0x80) // 1 byte sequence - { - text[0] = static_cast(code); - text += 1; - } else if (code < 0x800) // 2 byte sequence - { - text[1] = static_cast((code | 0x80) & 0xBF); - code >>= 6; - text[0] = static_cast(code | 0xC0); - text += 2; - } else if (code < 0x10000) // 3 byte sequence - { - text[2] = static_cast((code | 0x80) & 0xBF); - code >>= 6; - text[1] = static_cast((code | 0x80) & 0xBF); - code >>= 6; - text[0] = static_cast(code | 0xE0); - text += 3; - } else if (code < 0x110000) // 4 byte sequence - { - text[3] = static_cast((code | 0x80) & 0xBF); - code >>= 6; - text[2] = static_cast((code | 0x80) & 0xBF); - code >>= 6; - text[1] = static_cast((code | 0x80) & 0xBF); - code >>= 6; - text[0] = static_cast(code | 0xF0); - text += 4; - } else // Invalid, only codes up to 0x10FFFF are allowed in Unicode - { - RAPIDXML_PARSE_ERROR("invalid numeric character entity", text); - } - } - } - - // Skip characters until predicate evaluates to true - template - static void skip(Ch *&text) { - Ch *tmp = text; - while (StopPred::test(*tmp)) ++tmp; - text = tmp; - } - - // Skip characters until predicate evaluates to true while doing the - // following: - // - replacing XML character entity references with proper characters (' - // & " < > &#...;) - // - condensing whitespace sequences to single space character - template - static Ch *skip_and_expand_character_refs(Ch *&text) { - // If entity translation, whitespace condense and whitespace trimming is - // disabled, use plain skip - if (Flags & parse_no_entity_translation && - !(Flags & parse_normalize_whitespace) && - !(Flags & parse_trim_whitespace)) { - skip(text); - return text; - } - - // Use simple skip until first modification is detected - skip(text); - - // Use translation skip - Ch *src = text; - Ch *dest = src; - while (StopPred::test(*src)) { - // If entity translation is enabled - if (!(Flags & parse_no_entity_translation)) { - // Test if replacement is needed - if (src[0] == Ch('&')) { - switch (src[1]) { - // & ' - case Ch('a'): - if (src[2] == Ch('m') && src[3] == Ch('p') && src[4] == Ch(';')) { - *dest = Ch('&'); - ++dest; - src += 5; - continue; - } - if (src[2] == Ch('p') && src[3] == Ch('o') && src[4] == Ch('s') && - src[5] == Ch(';')) { - *dest = Ch('\''); - ++dest; - src += 6; - continue; - } - break; - - // " - case Ch('q'): - if (src[2] == Ch('u') && src[3] == Ch('o') && src[4] == Ch('t') && - src[5] == Ch(';')) { - *dest = Ch('"'); - ++dest; - src += 6; - continue; - } - break; - - // > - case Ch('g'): - if (src[2] == Ch('t') && src[3] == Ch(';')) { - *dest = Ch('>'); - ++dest; - src += 4; - continue; - } - break; - - // < - case Ch('l'): - if (src[2] == Ch('t') && src[3] == Ch(';')) { - *dest = Ch('<'); - ++dest; - src += 4; - continue; - } - break; - - // &#...; - assumes ASCII - case Ch('#'): - if (src[2] == Ch('x')) { - unsigned long code = 0; - src += 3; // Skip &#x - while (1) { - unsigned char digit = internal::lookup_tables< - 0>::lookup_digits[static_cast(*src)]; - if (digit == 0xFF) break; - code = code * 16 + digit; - ++src; - } - insert_coded_character(dest, - code); // Put character in output - } else { - unsigned long code = 0; - src += 2; // Skip &# - while (1) { - unsigned char digit = internal::lookup_tables< - 0>::lookup_digits[static_cast(*src)]; - if (digit == 0xFF) break; - code = code * 10 + digit; - ++src; - } - insert_coded_character(dest, - code); // Put character in output - } - if (*src == Ch(';')) - ++src; - else - RAPIDXML_PARSE_ERROR("expected ;", src); - continue; - - // Something else - default: - // Ignore, just copy '&' verbatim - break; - } - } - } - - // If whitespace condensing is enabled - if (Flags & parse_normalize_whitespace) { - // Test if condensing is needed - if (whitespace_pred::test(*src)) { - *dest = Ch(' '); - ++dest; // Put single space in dest - ++src; // Skip first whitespace char - // Skip remaining whitespace chars - while (whitespace_pred::test(*src)) ++src; - continue; - } - } - - // No replacement, only copy character - *dest++ = *src++; - } - - // Return new end - text = src; - return dest; - } - - /////////////////////////////////////////////////////////////////////// - // Internal parsing functions - - // Parse BOM, if any - template - void parse_bom(Ch *&text) { - // UTF-8? - if (static_cast(text[0]) == 0xEF && - static_cast(text[1]) == 0xBB && - static_cast(text[2]) == 0xBF) { - text += 3; // Skup utf-8 bom - } - } - - // Parse XML declaration ( - xml_node *parse_xml_declaration(Ch *&text) { - // If parsing of declaration is disabled - if (!(Flags & parse_declaration_node)) { - // Skip until end of declaration - while (text[0] != Ch('?') || text[1] != Ch('>')) { - if (!text[0]) RAPIDXML_PARSE_ERROR("unexpected end of data", text); - ++text; - } - text += 2; // Skip '?>' - return 0; - } - - // Create declaration - xml_node *declaration = this->allocate_node(node_declaration); - - // Skip whitespace before attributes or ?> - skip(text); - - // Parse declaration attributes - parse_node_attributes(text, declaration); - - // Skip ?> - if (text[0] != Ch('?') || text[1] != Ch('>')) - RAPIDXML_PARSE_ERROR("expected ?>", text); - text += 2; - - return declaration; - } - - // Parse XML comment (' - return 0; // Do not produce comment node - } - - // Remember value start - Ch *value = text; - - // Skip until end of comment - while (text[0] != Ch('-') || text[1] != Ch('-') || text[2] != Ch('>')) { - if (!text[0]) RAPIDXML_PARSE_ERROR("unexpected end of data", text); - ++text; - } - - // Create comment node - xml_node *comment = this->allocate_node(node_comment); - comment->value(value, text - value); - - // Place zero terminator after comment value - if (!(Flags & parse_no_string_terminators)) *text = Ch('\0'); - - text += 3; // Skip '-->' - return comment; - } - - // Parse DOCTYPE - template - xml_node *parse_doctype(Ch *&text) { - // Remember value start - Ch *value = text; - - // Skip to > - while (*text != Ch('>')) { - // Determine character type - switch (*text) { - // If '[' encountered, scan for matching ending ']' using naive - // algorithm - // with depth This works for all W3C test files except for 2 most wicked - case Ch('['): { - ++text; // Skip '[' - int depth = 1; - while (depth > 0) { - switch (*text) { - case Ch('['): - ++depth; - break; - case Ch(']'): - --depth; - break; - case 0: - RAPIDXML_PARSE_ERROR("unexpected end of data", text); - } - ++text; - } - break; - } - - // Error on end of text - case Ch('\0'): - RAPIDXML_PARSE_ERROR("unexpected end of data", text); - - // Other character, skip it - default: - ++text; - } - } - - // If DOCTYPE nodes enabled - if (Flags & parse_doctype_node) { - // Create a new doctype node - xml_node *doctype = this->allocate_node(node_doctype); - doctype->value(value, text - value); - - // Place zero terminator after value - if (!(Flags & parse_no_string_terminators)) *text = Ch('\0'); - - text += 1; // skip '>' - return doctype; - } else { - text += 1; // skip '>' - return 0; - } - } - - // Parse PI - template - xml_node *parse_pi(Ch *&text) { - // If creation of PI nodes is enabled - if (Flags & parse_pi_nodes) { - // Create pi node - xml_node *pi = this->allocate_node(node_pi); - - // Extract PI target name - Ch *name = text; - skip(text); - if (text == name) RAPIDXML_PARSE_ERROR("expected PI target", text); - pi->name(name, text - name); - - // Skip whitespace between pi target and pi - skip(text); - - // Remember start of pi - Ch *value = text; - - // Skip to '?>' - while (text[0] != Ch('?') || text[1] != Ch('>')) { - if (*text == Ch('\0')) - RAPIDXML_PARSE_ERROR("unexpected end of data", text); - ++text; - } - - // Set pi value (verbatim, no entity expansion or whitespace - // normalization) - pi->value(value, text - value); - - // Place zero terminator after name and value - if (!(Flags & parse_no_string_terminators)) { - pi->name()[pi->name_size()] = Ch('\0'); - pi->value()[pi->value_size()] = Ch('\0'); - } - - text += 2; // Skip '?>' - return pi; - } else { - // Skip to '?>' - while (text[0] != Ch('?') || text[1] != Ch('>')) { - if (*text == Ch('\0')) - RAPIDXML_PARSE_ERROR("unexpected end of data", text); - ++text; - } - text += 2; // Skip '?>' - return 0; - } - } - - // Parse and append data - // Return character that ends data. - // This is necessary because this character might have been overwritten by a - // terminating 0 - template - Ch parse_and_append_data(xml_node *node, Ch *&text, Ch *contents_start) { - // Backup to contents start if whitespace trimming is disabled - if (!(Flags & parse_trim_whitespace)) text = contents_start; - - // Skip until end of data - Ch *value = text, *end; - if (Flags & parse_normalize_whitespace) - end = skip_and_expand_character_refs(text); - else - end = skip_and_expand_character_refs(text); - - // Trim trailing whitespace if flag is set; leading was already trimmed by - // whitespace skip after > - if (Flags & parse_trim_whitespace) { - if (Flags & parse_normalize_whitespace) { - // Whitespace is already condensed to single space characters by - // skipping function, so just trim 1 char off the end - if (*(end - 1) == Ch(' ')) --end; - } else { - // Backup until non-whitespace character is found - while (whitespace_pred::test(*(end - 1))) --end; - } - } - - // If characters are still left between end and value (this test is only - // necessary if normalization is enabled) Create new data node - if (!(Flags & parse_no_data_nodes)) { - xml_node *data = this->allocate_node(node_data); - data->value(value, end - value); - node->append_node(data); - } - - // Add data to parent node if no data exists yet - if (!(Flags & parse_no_element_values)) - if (*node->value() == Ch('\0')) node->value(value, end - value); - - // Place zero terminator after value - if (!(Flags & parse_no_string_terminators)) { - Ch ch = *text; - *end = Ch('\0'); - return ch; // Return character that ends data; this is required because - // zero terminator overwritten it - } - - // Return character that ends data - return *text; - } - - // Parse CDATA - template - xml_node *parse_cdata(Ch *&text) { - // If CDATA is disabled - if (Flags & parse_no_data_nodes) { - // Skip until end of cdata - while (text[0] != Ch(']') || text[1] != Ch(']') || text[2] != Ch('>')) { - if (!text[0]) RAPIDXML_PARSE_ERROR("unexpected end of data", text); - ++text; - } - text += 3; // Skip ]]> - return 0; // Do not produce CDATA node - } - - // Skip until end of cdata - Ch *value = text; - while (text[0] != Ch(']') || text[1] != Ch(']') || text[2] != Ch('>')) { - if (!text[0]) RAPIDXML_PARSE_ERROR("unexpected end of data", text); - ++text; - } - - // Create new cdata node - xml_node *cdata = this->allocate_node(node_cdata); - cdata->value(value, text - value); - - // Place zero terminator after value - if (!(Flags & parse_no_string_terminators)) *text = Ch('\0'); - - text += 3; // Skip ]]> - return cdata; - } - - // Parse element node - template - xml_node *parse_element(Ch *&text) { - // Create element node - xml_node *element = this->allocate_node(node_element); - - // Extract element name - Ch *name = text; - skip(text); - if (text == name) RAPIDXML_PARSE_ERROR("expected element name", text); - element->name(name, text - name); - - // Skip whitespace between element name and attributes or > - skip(text); - - // Parse attributes, if any - parse_node_attributes(text, element); - - // Determine ending type - if (*text == Ch('>')) { - ++text; - parse_node_contents(text, element); - } else if (*text == Ch('/')) { - ++text; - if (*text != Ch('>')) RAPIDXML_PARSE_ERROR("expected >", text); - ++text; - } else - RAPIDXML_PARSE_ERROR("expected >", text); - - // Place zero terminator after name - if (!(Flags & parse_no_string_terminators)) - element->name()[element->name_size()] = Ch('\0'); - - // Return parsed element - return element; - } - - // Determine node type, and parse it - template - xml_node *parse_node(Ch *&text) { - // Parse proper node type - switch (text[0]) { - // <... - default: - // Parse and append element node - return parse_element(text); - - // (text); - } else { - // Parse PI - return parse_pi(text); - } - - // (text); - } - break; - - // (text); - } - break; - - // (text); - } - - } // switch - - // Attempt to skip other, unrecognized node types starting with ')) { - if (*text == 0) RAPIDXML_PARSE_ERROR("unexpected end of data", text); - ++text; - } - ++text; // Skip '>' - return 0; // No node recognized - } - } - - // Parse contents of the node - children, data etc. - template - void parse_node_contents(Ch *&text, xml_node *node) { - // For all children and text - while (1) { - // Skip whitespace between > and node contents - Ch *contents_start = - text; // Store start of node contents before whitespace is skipped - skip(text); - Ch next_char = *text; - - // After data nodes, instead of continuing the loop, control jumps here. - // This is because zero termination inside parse_and_append_data() function - // would wreak havoc with the above code. - // Also, skipping whitespace after data nodes is unnecessary. - after_data_node: - - // Determine what comes next: node closing, child node, data node, or 0? - switch (next_char) { - // Node closing or child node - case Ch('<'): - if (text[1] == Ch('/')) { - // Node closing - text += 2; // Skip '(text); - if (!internal::compare(node->name(), node->name_size(), - closing_name, text - closing_name, true)) - RAPIDXML_PARSE_ERROR("invalid closing tag name", text); - } else { - // No validation, just skip name - skip(text); - } - // Skip remaining whitespace after node name - skip(text); - if (*text != Ch('>')) RAPIDXML_PARSE_ERROR("expected >", text); - ++text; // Skip '>' - return; // Node closed, finished parsing contents - } else { - // Child node - ++text; // Skip '<' - if (xml_node *child = parse_node(text)) - node->append_node(child); - } - break; - - // End of data - error - case Ch('\0'): - RAPIDXML_PARSE_ERROR("unexpected end of data", text); - - // Data node - default: - next_char = parse_and_append_data(node, text, contents_start); - goto after_data_node; // Bypass regular processing after data nodes - } - } - } - - // Parse XML attributes of the node - template - void parse_node_attributes(Ch *&text, xml_node *node) { - // For all attributes - while (attribute_name_pred::test(*text)) { - // Extract attribute name - Ch *name = text; - ++text; // Skip first character of attribute name - skip(text); - if (text == name) RAPIDXML_PARSE_ERROR("expected attribute name", name); - - // Create new attribute - xml_attribute *attribute = this->allocate_attribute(); - attribute->name(name, text - name); - node->append_attribute(attribute); - - // Skip whitespace after attribute name - skip(text); - - // Skip = - if (*text != Ch('=')) RAPIDXML_PARSE_ERROR("expected =", text); - ++text; - - // Add terminating zero after name - if (!(Flags & parse_no_string_terminators)) - attribute->name()[attribute->name_size()] = 0; - - // Skip whitespace after = - skip(text); - - // Skip quote and remember if it was ' or " - Ch quote = *text; - if (quote != Ch('\'') && quote != Ch('"')) - RAPIDXML_PARSE_ERROR("expected ' or \"", text); - ++text; - - // Extract attribute value and expand char refs in it - Ch *value = text, *end; - const int AttFlags = - Flags & - ~parse_normalize_whitespace; // No whitespace normalization in - // attributes - if (quote == Ch('\'')) - end = - skip_and_expand_character_refs, - attribute_value_pure_pred, - AttFlags>(text); - else - end = skip_and_expand_character_refs, - attribute_value_pure_pred, - AttFlags>(text); - - // Set attribute value - attribute->value(value, end - value); - - // Make sure that end quote is present - if (*text != quote) RAPIDXML_PARSE_ERROR("expected ' or \"", text); - ++text; // Skip quote - - // Add terminating zero after value - if (!(Flags & parse_no_string_terminators)) - attribute->value()[attribute->value_size()] = 0; - - // Skip whitespace after attribute value - skip(text); - } - } -}; - -//! \cond internal -namespace internal { - -// Whitespace (space \n \r \t) -template -const unsigned char lookup_tables::lookup_whitespace[256] = { - // 0 1 2 3 4 5 6 7 8 9 A B C D E F - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, // 0 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1 - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 2 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 5 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 7 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // A - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // B - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // C - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // D - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // E - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // F -}; - -// Node name (anything but space \n \r \t / > ? \0) -template -const unsigned char lookup_tables::lookup_node_name[256] = { - // 0 1 2 3 4 5 6 7 8 9 A B C D E F - 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, // 0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1 - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, // 2 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, // 3 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F -}; - -// Text (i.e. PCDATA) (anything but < \0) -template -const unsigned char lookup_tables::lookup_text[256] = { - // 0 1 2 3 4 5 6 7 8 9 A B C D E F - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, // 3 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F -}; - -// Text (i.e. PCDATA) that does not require processing when ws normalization is -// disabled (anything but < \0 &) -template -const unsigned char lookup_tables::lookup_text_pure_no_ws[256] = { - // 0 1 2 3 4 5 6 7 8 9 A B C D E F - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1 - 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, // 3 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F -}; - -// Text (i.e. PCDATA) that does not require processing when ws normalizationis -// is enabled (anything but < \0 & space \n \r \t) -template -const unsigned char lookup_tables::lookup_text_pure_with_ws[256] = { - // 0 1 2 3 4 5 6 7 8 9 A B C D E F - 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, // 0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1 - 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, // 3 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F -}; - -// Attribute name (anything but space \n \r \t / < > = ? ! \0) -template -const unsigned char lookup_tables::lookup_attribute_name[256] = { - // 0 1 2 3 4 5 6 7 8 9 A B C D E F - 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, // 0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1 - 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, // 2 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, // 3 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F -}; - -// Attribute data with single quote (anything but ' \0) -template -const unsigned char lookup_tables::lookup_attribute_data_1[256] = { - // 0 1 2 3 4 5 6 7 8 9 A B C D E F - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1 - 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, // 2 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 3 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F -}; - -// Attribute data with single quote that does not require processing (anything -// but ' \0 &) -template -const unsigned char lookup_tables::lookup_attribute_data_1_pure[256] = { - // 0 1 2 3 4 5 6 7 8 9 A B C D E F - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1 - 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, // 2 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 3 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F -}; - -// Attribute data with double quote (anything but " \0) -template -const unsigned char lookup_tables::lookup_attribute_data_2[256] = { - // 0 1 2 3 4 5 6 7 8 9 A B C D E F - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1 - 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 3 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F -}; - -// Attribute data with double quote that does not require processing (anything -// but " \0 &) -template -const unsigned char lookup_tables::lookup_attribute_data_2_pure[256] = { - // 0 1 2 3 4 5 6 7 8 9 A B C D E F - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1 - 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 3 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F -}; - -// Digits (dec and hex, 255 denotes end of numeric character reference) -template -const unsigned char lookup_tables::lookup_digits[256] = { - // 0 1 2 3 4 5 6 7 8 9 A B C D E F - 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, // 0 - 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, // 1 - 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, // 2 - 0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 255, 255, 255, 255, 255, 255, // 3 - 255, 10, 11, 12, 13, 14, 15, 255, - 255, 255, 255, 255, 255, 255, 255, 255, // 4 - 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, // 5 - 255, 10, 11, 12, 13, 14, 15, 255, - 255, 255, 255, 255, 255, 255, 255, 255, // 6 - 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, // 7 - 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, // 8 - 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, // 9 - 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, // A - 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, // B - 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, // C - 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, // D - 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, // E - 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255 // F -}; - -// Upper case conversion -template -const unsigned char lookup_tables::lookup_upcase[256] = { - // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A B C D E F - 0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, // 0 - 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, // 1 - 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, // 2 - 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, // 3 - 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, // 4 - 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, // 5 - 96, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, // 6 - 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 123, 124, 125, 126, 127, // 7 - 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, // 8 - 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, // 9 - 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, // A - 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, // B - 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, // C - 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, // D - 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, // E - 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255 // F -}; -} // namespace internal -//! \endcond - -} // namespace rapidxml - -// Undefine internal macros -#undef RAPIDXML_PARSE_ERROR - -// On MSVC, restore warnings state -#ifdef _MSC_VER -#pragma warning(pop) -#endif - -#endif diff --git a/common/rapidxml/rapidxml_iterators.hpp b/common/rapidxml/rapidxml_iterators.hpp deleted file mode 100644 index 6ccba4ee..00000000 --- a/common/rapidxml/rapidxml_iterators.hpp +++ /dev/null @@ -1,132 +0,0 @@ -#ifndef RAPIDXML_ITERATORS_HPP_INCLUDED -#define RAPIDXML_ITERATORS_HPP_INCLUDED - -// Copyright (C) 2006, 2009 Marcin Kalicinski -// Version 1.13 -// Revision $DateTime: 2009/05/13 01:46:17 $ -//! \file rapidxml_iterators.hpp This file contains rapidxml iterators - -#include "rapidxml.hpp" - -namespace rapidxml { - -//! Iterator of child nodes of xml_node -template -class node_iterator { - public: - typedef typename xml_node value_type; - typedef typename xml_node &reference; - typedef typename xml_node *pointer; - typedef std::ptrdiff_t difference_type; - typedef std::bidirectional_iterator_tag iterator_category; - - node_iterator() : m_node(0) {} - - node_iterator(xml_node *node) : m_node(node->first_node()) {} - - reference operator*() const { - assert(m_node); - return *m_node; - } - - pointer operator->() const { - assert(m_node); - return m_node; - } - - node_iterator &operator++() { - assert(m_node); - m_node = m_node->next_sibling(); - return *this; - } - - node_iterator operator++(int) { - node_iterator tmp = *this; - ++this; - return tmp; - } - - node_iterator &operator--() { - assert(m_node && m_node->previous_sibling()); - m_node = m_node->previous_sibling(); - return *this; - } - - node_iterator operator--(int) { - node_iterator tmp = *this; - ++this; - return tmp; - } - - bool operator==(const node_iterator &rhs) { return m_node == rhs.m_node; } - - bool operator!=(const node_iterator &rhs) { return m_node != rhs.m_node; } - - private: - xml_node *m_node; -}; - -//! Iterator of child attributes of xml_node -template -class attribute_iterator { - public: - typedef typename xml_attribute value_type; - typedef typename xml_attribute &reference; - typedef typename xml_attribute *pointer; - typedef std::ptrdiff_t difference_type; - typedef std::bidirectional_iterator_tag iterator_category; - - attribute_iterator() : m_attribute(0) {} - - attribute_iterator(xml_node *node) - : m_attribute(node->first_attribute()) {} - - reference operator*() const { - assert(m_attribute); - return *m_attribute; - } - - pointer operator->() const { - assert(m_attribute); - return m_attribute; - } - - attribute_iterator &operator++() { - assert(m_attribute); - m_attribute = m_attribute->next_attribute(); - return *this; - } - - attribute_iterator operator++(int) { - attribute_iterator tmp = *this; - ++this; - return tmp; - } - - attribute_iterator &operator--() { - assert(m_attribute && m_attribute->previous_attribute()); - m_attribute = m_attribute->previous_attribute(); - return *this; - } - - attribute_iterator operator--(int) { - attribute_iterator tmp = *this; - ++this; - return tmp; - } - - bool operator==(const attribute_iterator &rhs) { - return m_attribute == rhs.m_attribute; - } - - bool operator!=(const attribute_iterator &rhs) { - return m_attribute != rhs.m_attribute; - } - - private: - xml_attribute *m_attribute; -}; - -} // namespace rapidxml - -#endif diff --git a/common/rapidxml/rapidxml_print.hpp b/common/rapidxml/rapidxml_print.hpp deleted file mode 100644 index 7e27b8b0..00000000 --- a/common/rapidxml/rapidxml_print.hpp +++ /dev/null @@ -1,428 +0,0 @@ -#ifndef RAPIDXML_PRINT_HPP_INCLUDED -#define RAPIDXML_PRINT_HPP_INCLUDED - -// Copyright (C) 2006, 2009 Marcin Kalicinski -// Version 1.13 -// Revision $DateTime: 2009/05/13 01:46:17 $ -//! \file rapidxml_print.hpp This file contains rapidxml printer implementation - -#include "rapidxml.hpp" - -// Only include streams if not disabled -#ifndef RAPIDXML_NO_STREAMS -#include -#include -#endif - -namespace rapidxml { - -/////////////////////////////////////////////////////////////////////// -// Printing flags - -const int print_no_indenting = 0x1; //!< Printer flag instructing the printer - //!to suppress indenting of XML. - //!< See print() function. - -/////////////////////////////////////////////////////////////////////// -// Internal - -//! \cond internal -namespace internal { - -/////////////////////////////////////////////////////////////////////////// -// Internal character operations - -// Copy characters from given range to given output iterator -template -inline OutIt copy_chars(const Ch *begin, const Ch *end, OutIt out) { - while (begin != end) *out++ = *begin++; - return out; -} - -// Copy characters from given range to given output iterator and expand -// characters into references (< > ' " &) -template -inline OutIt copy_and_expand_chars(const Ch *begin, const Ch *end, Ch noexpand, - OutIt out) { - while (begin != end) { - if (*begin == noexpand) { - *out++ = *begin; // No expansion, copy character - } else { - switch (*begin) { - case Ch('<'): - *out++ = Ch('&'); - *out++ = Ch('l'); - *out++ = Ch('t'); - *out++ = Ch(';'); - break; - case Ch('>'): - *out++ = Ch('&'); - *out++ = Ch('g'); - *out++ = Ch('t'); - *out++ = Ch(';'); - break; - case Ch('\''): - *out++ = Ch('&'); - *out++ = Ch('a'); - *out++ = Ch('p'); - *out++ = Ch('o'); - *out++ = Ch('s'); - *out++ = Ch(';'); - break; - case Ch('"'): - *out++ = Ch('&'); - *out++ = Ch('q'); - *out++ = Ch('u'); - *out++ = Ch('o'); - *out++ = Ch('t'); - *out++ = Ch(';'); - break; - case Ch('&'): - *out++ = Ch('&'); - *out++ = Ch('a'); - *out++ = Ch('m'); - *out++ = Ch('p'); - *out++ = Ch(';'); - break; - default: - *out++ = *begin; // No expansion, copy character - } - } - ++begin; // Step to next character - } - return out; -} - -// Fill given output iterator with repetitions of the same character -template -inline OutIt fill_chars(OutIt out, int n, Ch ch) { - for (int i = 0; i < n; ++i) *out++ = ch; - return out; -} - -// Find character -template -inline bool find_char(const Ch *begin, const Ch *end) { - while (begin != end) - if (*begin++ == ch) return true; - return false; -} - -/////////////////////////////////////////////////////////////////////////// -// Internal printing operations - -// Print node -template -inline OutIt print_node(OutIt out, const xml_node *node, int flags, - int indent) { - // Print proper node type - switch (node->type()) { - // Document - case node_document: - out = print_children(out, node, flags, indent); - break; - - // Element - case node_element: - out = print_element_node(out, node, flags, indent); - break; - - // Data - case node_data: - out = print_data_node(out, node, flags, indent); - break; - - // CDATA - case node_cdata: - out = print_cdata_node(out, node, flags, indent); - break; - - // Declaration - case node_declaration: - out = print_declaration_node(out, node, flags, indent); - break; - - // Comment - case node_comment: - out = print_comment_node(out, node, flags, indent); - break; - - // Doctype - case node_doctype: - out = print_doctype_node(out, node, flags, indent); - break; - - // Pi - case node_pi: - out = print_pi_node(out, node, flags, indent); - break; - - // Unknown - default: - assert(0); - break; - } - - // If indenting not disabled, add line break after node - if (!(flags & print_no_indenting)) *out = Ch('\n'), ++out; - - // Return modified iterator - return out; -} - -// Print children of the node -template -inline OutIt print_children(OutIt out, const xml_node *node, int flags, - int indent) { - for (xml_node *child = node->first_node(); child; - child = child->next_sibling()) - out = print_node(out, child, flags, indent); - return out; -} - -// Print attributes of the node -template -inline OutIt print_attributes(OutIt out, const xml_node *node, int flags) { - for (xml_attribute *attribute = node->first_attribute(); attribute; - attribute = attribute->next_attribute()) { - if (attribute->name() && attribute->value()) { - // Print attribute name - *out = Ch(' '), ++out; - out = copy_chars(attribute->name(), - attribute->name() + attribute->name_size(), out); - *out = Ch('='), ++out; - // Print attribute value using appropriate quote type - if (find_char( - attribute->value(), - attribute->value() + attribute->value_size())) { - *out = Ch('\''), ++out; - out = copy_and_expand_chars( - attribute->value(), attribute->value() + attribute->value_size(), - Ch('"'), out); - *out = Ch('\''), ++out; - } else { - *out = Ch('"'), ++out; - out = copy_and_expand_chars( - attribute->value(), attribute->value() + attribute->value_size(), - Ch('\''), out); - *out = Ch('"'), ++out; - } - } - } - return out; -} - -// Print data node -template -inline OutIt print_data_node(OutIt out, const xml_node *node, int flags, - int indent) { - assert(node->type() == node_data); - if (!(flags & print_no_indenting)) out = fill_chars(out, indent, Ch('\t')); - out = copy_and_expand_chars(node->value(), node->value() + node->value_size(), - Ch(0), out); - return out; -} - -// Print data node -template -inline OutIt print_cdata_node(OutIt out, const xml_node *node, int flags, - int indent) { - assert(node->type() == node_cdata); - if (!(flags & print_no_indenting)) out = fill_chars(out, indent, Ch('\t')); - *out = Ch('<'); - ++out; - *out = Ch('!'); - ++out; - *out = Ch('['); - ++out; - *out = Ch('C'); - ++out; - *out = Ch('D'); - ++out; - *out = Ch('A'); - ++out; - *out = Ch('T'); - ++out; - *out = Ch('A'); - ++out; - *out = Ch('['); - ++out; - out = copy_chars(node->value(), node->value() + node->value_size(), out); - *out = Ch(']'); - ++out; - *out = Ch(']'); - ++out; - *out = Ch('>'); - ++out; - return out; -} - -// Print element node -template -inline OutIt print_element_node(OutIt out, const xml_node *node, int flags, - int indent) { - assert(node->type() == node_element); - - // Print element name and attributes, if any - if (!(flags & print_no_indenting)) out = fill_chars(out, indent, Ch('\t')); - *out = Ch('<'), ++out; - out = copy_chars(node->name(), node->name() + node->name_size(), out); - out = print_attributes(out, node, flags); - - // If node is childless - if (node->value_size() == 0 && !node->first_node()) { - // Print childless node tag ending - *out = Ch('/'), ++out; - *out = Ch('>'), ++out; - } else { - // Print normal node tag ending - *out = Ch('>'), ++out; - - // Test if node contains a single data node only (and no other nodes) - xml_node *child = node->first_node(); - if (!child) { - // If node has no children, only print its value without indenting - out = copy_and_expand_chars( - node->value(), node->value() + node->value_size(), Ch(0), out); - } else if (child->next_sibling() == 0 && child->type() == node_data) { - // If node has a sole data child, only print its value without indenting - out = copy_and_expand_chars( - child->value(), child->value() + child->value_size(), Ch(0), out); - } else { - // Print all children with full indenting - if (!(flags & print_no_indenting)) *out = Ch('\n'), ++out; - out = print_children(out, node, flags, indent + 1); - if (!(flags & print_no_indenting)) - out = fill_chars(out, indent, Ch('\t')); - } - - // Print node end - *out = Ch('<'), ++out; - *out = Ch('/'), ++out; - out = copy_chars(node->name(), node->name() + node->name_size(), out); - *out = Ch('>'), ++out; - } - return out; -} - -// Print declaration node -template -inline OutIt print_declaration_node(OutIt out, const xml_node *node, - int flags, int indent) { - // Print declaration start - if (!(flags & print_no_indenting)) out = fill_chars(out, indent, Ch('\t')); - *out = Ch('<'), ++out; - *out = Ch('?'), ++out; - *out = Ch('x'), ++out; - *out = Ch('m'), ++out; - *out = Ch('l'), ++out; - - // Print attributes - out = print_attributes(out, node, flags); - - // Print declaration end - *out = Ch('?'), ++out; - *out = Ch('>'), ++out; - - return out; -} - -// Print comment node -template -inline OutIt print_comment_node(OutIt out, const xml_node *node, int flags, - int indent) { - assert(node->type() == node_comment); - if (!(flags & print_no_indenting)) out = fill_chars(out, indent, Ch('\t')); - *out = Ch('<'), ++out; - *out = Ch('!'), ++out; - *out = Ch('-'), ++out; - *out = Ch('-'), ++out; - out = copy_chars(node->value(), node->value() + node->value_size(), out); - *out = Ch('-'), ++out; - *out = Ch('-'), ++out; - *out = Ch('>'), ++out; - return out; -} - -// Print doctype node -template -inline OutIt print_doctype_node(OutIt out, const xml_node *node, int flags, - int indent) { - assert(node->type() == node_doctype); - if (!(flags & print_no_indenting)) out = fill_chars(out, indent, Ch('\t')); - *out = Ch('<'), ++out; - *out = Ch('!'), ++out; - *out = Ch('D'), ++out; - *out = Ch('O'), ++out; - *out = Ch('C'), ++out; - *out = Ch('T'), ++out; - *out = Ch('Y'), ++out; - *out = Ch('P'), ++out; - *out = Ch('E'), ++out; - *out = Ch(' '), ++out; - out = copy_chars(node->value(), node->value() + node->value_size(), out); - *out = Ch('>'), ++out; - return out; -} - -// Print pi node -template -inline OutIt print_pi_node(OutIt out, const xml_node *node, int flags, - int indent) { - assert(node->type() == node_pi); - if (!(flags & print_no_indenting)) out = fill_chars(out, indent, Ch('\t')); - *out = Ch('<'), ++out; - *out = Ch('?'), ++out; - out = copy_chars(node->name(), node->name() + node->name_size(), out); - *out = Ch(' '), ++out; - out = copy_chars(node->value(), node->value() + node->value_size(), out); - *out = Ch('?'), ++out; - *out = Ch('>'), ++out; - return out; -} - -} // namespace internal -//! \endcond - -/////////////////////////////////////////////////////////////////////////// -// Printing - -//! Prints XML to given output iterator. -//! \param out Output iterator to print to. -//! \param node Node to be printed. Pass xml_document to print entire document. -//! \param flags Flags controlling how XML is printed. -//! \return Output iterator pointing to position immediately after last -//! character of printed text. -template -inline OutIt print(OutIt out, const xml_node &node, int flags = 0) { - return internal::print_node(out, &node, flags, 0); -} - -#ifndef RAPIDXML_NO_STREAMS - -//! Prints XML to given output stream. -//! \param out Output stream to print to. -//! \param node Node to be printed. Pass xml_document to print entire document. -//! \param flags Flags controlling how XML is printed. -//! \return Output stream. -template -inline std::basic_ostream &print(std::basic_ostream &out, - const xml_node &node, int flags = 0) { - print(std::ostream_iterator(out), node, flags); - return out; -} - -//! Prints formatted XML to given output stream. Uses default printing flags. -//! Use print() function to customize printing process. \param out Output stream -//! to print to. \param node Node to be printed. \return Output stream. -template -inline std::basic_ostream &operator<<(std::basic_ostream &out, - const xml_node &node) { - return print(out, node); -} - -#endif - -} // namespace rapidxml - -#endif diff --git a/common/rapidxml/rapidxml_utils.hpp b/common/rapidxml/rapidxml_utils.hpp deleted file mode 100644 index 9e54d4f4..00000000 --- a/common/rapidxml/rapidxml_utils.hpp +++ /dev/null @@ -1,101 +0,0 @@ -#ifndef RAPIDXML_UTILS_HPP_INCLUDED -#define RAPIDXML_UTILS_HPP_INCLUDED - -// Copyright (C) 2006, 2009 Marcin Kalicinski -// Version 1.13 -// Revision $DateTime: 2009/05/13 01:46:17 $ -//! \file rapidxml_utils.hpp This file contains high-level rapidxml utilities -//! that can be useful in certain simple scenarios. They should probably not be -//! used if maximizing performance is the main objective. - -#include -#include -#include -#include -#include "rapidxml.hpp" - -namespace rapidxml { - -//! Represents data loaded from a file -template -class file { - public: - //! Loads file into the memory. Data will be automatically destroyed by the - //! destructor. \param filename Filename to load. - file(const char *filename) { - using namespace std; - - // Open stream - basic_ifstream stream(filename, ios::binary); - if (!stream) throw runtime_error(string("cannot open file ") + filename); - stream.unsetf(ios::skipws); - - // Determine stream size - stream.seekg(0, ios::end); - size_t size = stream.tellg(); - stream.seekg(0); - - // Load data and add terminating 0 - m_data.resize(size + 1); - stream.read(&m_data.front(), static_cast(size)); - m_data[size] = 0; - } - - //! Loads file into the memory. Data will be automatically destroyed by the - //! destructor \param stream Stream to load from - file(std::basic_istream &stream) { - using namespace std; - - // Load data and add terminating 0 - stream.unsetf(ios::skipws); - m_data.assign(istreambuf_iterator(stream), istreambuf_iterator()); - if (stream.fail() || stream.bad()) - throw runtime_error("error reading stream"); - m_data.push_back(0); - } - - //! Gets file data. - //! \return Pointer to data of file. - Ch *data() { return &m_data.front(); } - - //! Gets file data. - //! \return Pointer to data of file. - const Ch *data() const { return &m_data.front(); } - - //! Gets file data size. - //! \return Size of file data, in characters. - std::size_t size() const { return m_data.size(); } - - private: - std::vector m_data; // File data -}; - -//! Counts children of node. Time complexity is O(n). -//! \return Number of children of node -template -inline std::size_t count_children(xml_node *node) { - xml_node *child = node->first_node(); - std::size_t count = 0; - while (child) { - ++count; - child = child->next_sibling(); - } - return count; -} - -//! Counts attributes of node. Time complexity is O(n). -//! \return Number of attributes of node -template -inline std::size_t count_attributes(xml_node *node) { - xml_attribute *attr = node->first_attribute(); - std::size_t count = 0; - while (attr) { - ++count; - attr = attr->next_attribute(); - } - return count; -} - -} // namespace rapidxml - -#endif diff --git a/config/HAP_config.json b/config/HAP_config.json new file mode 100644 index 00000000..a6d40bc7 --- /dev/null +++ b/config/HAP_config.json @@ -0,0 +1,43 @@ +{ + "lidar_summary_info" : { + "lidar_type": 8 + }, + "HAP": { + "lidar_net_info" : { + "cmd_data_port": 56000, + "push_msg_port": 0, + "point_data_port": 57000, + "imu_data_port": 58000, + "log_data_port": 59000 + }, + "host_net_info" : { + "cmd_data_ip" : "192.168.1.5", + "cmd_data_port": 56000, + "push_msg_ip": "", + "push_msg_port": 0, + "point_data_ip": "192.168.1.5", + "point_data_port": 57000, + "imu_data_ip" : "192.168.1.5", + "imu_data_port": 58000, + "log_data_ip" : "", + "log_data_port": 59000 + } + }, + "lidar_configs" : [ + { + "ip" : "192.168.1.100", + "pcl_data_type" : 1, + "pattern_mode" : 0, + "blind_spot_set" : 50, + "extrinsic_parameter" : { + "roll": 0.0, + "pitch": 0.0, + "yaw": 0.0, + "x": 0, + "y": 0, + "z": 0 + } + } + ] +} + diff --git a/config/MID360_config.json b/config/MID360_config.json new file mode 100644 index 00000000..e3df5d17 --- /dev/null +++ b/config/MID360_config.json @@ -0,0 +1,42 @@ +{ + "lidar_summary_info" : { + "lidar_type": 8 + }, + "MID360": { + "lidar_net_info" : { + "cmd_data_port": 56100, + "push_msg_port": 56200, + "point_data_port": 56300, + "imu_data_port": 56400, + "log_data_port": 56500 + }, + "host_net_info" : { + "cmd_data_ip" : "192.168.1.5", + "cmd_data_port": 56101, + "push_msg_ip": "192.168.1.5", + "push_msg_port": 56201, + "point_data_ip": "192.168.1.5", + "point_data_port": 56301, + "imu_data_ip" : "192.168.1.5", + "imu_data_port": 56401, + "log_data_ip" : "", + "log_data_port": 56501 + } + }, + "lidar_configs" : [ + { + "ip" : "192.168.1.12", + "pcl_data_type" : 1, + "pattern_mode" : 0, + "extrinsic_parameter" : { + "roll": 0.0, + "pitch": 0.0, + "yaw": 0.0, + "x": 0, + "y": 0, + "z": 0 + } + } + ] +} + diff --git a/config_ROS1/display_lidar_points.rviz b/config/display_point_cloud_ROS1.rviz similarity index 100% rename from config_ROS1/display_lidar_points.rviz rename to config/display_point_cloud_ROS1.rviz diff --git a/config/display_point_cloud_ROS2.rviz b/config/display_point_cloud_ROS2.rviz new file mode 100644 index 00000000..c0442546 --- /dev/null +++ b/config/display_point_cloud_ROS2.rviz @@ -0,0 +1,137 @@ +Panels: + - Class: rviz_common/Displays + Help Height: 78 + Name: Displays + Property Tree Widget: + Expanded: + - /Global Options1 + - /Status1 + - /PointCloud21 + Splitter Ratio: 0.5 + Tree Height: 796 + - Class: rviz_common/Selection + Name: Selection + - Class: rviz_common/Tool Properties + Expanded: + - /2D Nav Goal1 + - /Publish Point1 + Name: Tool Properties + Splitter Ratio: 0.5886790156364441 + - Class: rviz_common/Views + Expanded: + - /Current View1 + Name: Views + Splitter Ratio: 0.5 +Visualization Manager: + Class: "" + Displays: + - Alpha: 0.5 + Cell Size: 1 + Class: rviz_default_plugins/Grid + Color: 160; 160; 164 + Enabled: true + Line Style: + Line Width: 0.029999999329447746 + Value: Lines + Name: Grid + Normal Cell Count: 0 + Offset: + X: 0 + Y: 0 + Z: 0 + Plane: XY + Plane Cell Count: 10 + Reference Frame: + Value: true + - Alpha: 1 + Autocompute Intensity Bounds: true + Autocompute Value Bounds: + Max Value: 10 + Min Value: -10 + Value: true + Axis: Z + Channel Name: intensity + Class: rviz_default_plugins/PointCloud2 + Color: 255; 255; 255 + Color Transformer: Intensity + Decay Time: 0.20000000298023224 + Enabled: true + Invert Rainbow: false + Max Color: 255; 255; 255 + Max Intensity: 150 + Min Color: 0; 0; 0 + Min Intensity: 0 + Name: PointCloud2 + Position Transformer: XYZ + Queue Size: 10 + Selectable: true + Size (Pixels): 3 + Size (m): 0.009999999776482582 + Style: Flat Squares + Topic: /livox/lidar + Unreliable: false + Use Fixed Frame: true + Use rainbow: true + Value: true + Enabled: true + Global Options: + Background Color: 48; 48; 48 + Fixed Frame: livox_frame + Frame Rate: 30 + Name: root + Tools: + - Class: rviz_default_plugins/MoveCamera + - Class: rviz_default_plugins/Select + - Class: rviz_default_plugins/FocusCamera + - Class: rviz_default_plugins/Measure + Line color: 128; 128; 0 + - Class: rviz_default_plugins/SetInitialPose + Topic: /initialpose + - Class: rviz_default_plugins/SetGoal + Topic: /move_base_simple/goal + - Class: rviz_default_plugins/PublishPoint + Single click: true + Topic: /clicked_point + Transformation: + Current: + Class: rviz_default_plugins/TF + Value: true + Views: + Current: + Class: rviz_default_plugins/Orbit + Distance: 14.215983390808105 + Enable Stereo Rendering: + Stereo Eye Separation: 0.05999999865889549 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Focal Point: + X: 0 + Y: 0 + Z: 0 + Focal Shape Fixed Size: true + Focal Shape Size: 0.05000000074505806 + Invert Z Axis: false + Name: Current View + Near Clip Distance: 0.009999999776482582 + Pitch: 0.9503982067108154 + Target Frame: + Value: Orbit (rviz) + Yaw: 2.6603963375091553 + Saved: ~ +Window Geometry: + Displays: + collapsed: false + Height: 1025 + Hide Left Dock: false + Hide Right Dock: false + QMainWindow State: 000000ff00000000fd00000004000000000000015f000003a7fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d000003a7000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f000003a7fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003d000003a7000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004420000003efc0100000002fb0000000800540069006d00650100000000000004420000000000000000fb0000000800540069006d00650100000000000004500000000000000000000004c3000003a700000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + Selection: + collapsed: false + Tool Properties: + collapsed: false + Views: + collapsed: false + Width: 1853 + X: 67 + Y: 27 diff --git a/config/mixed_HAP_MID360_config.json b/config/mixed_HAP_MID360_config.json new file mode 100644 index 00000000..ca8773f5 --- /dev/null +++ b/config/mixed_HAP_MID360_config.json @@ -0,0 +1,77 @@ +{ + "lidar_summary_info" : { + "lidar_type": 8 + }, + "HAP": { + "lidar_net_info" : { + "cmd_data_port": 56000, + "push_msg_port": 0, + "point_data_port": 57000, + "imu_data_port": 58000, + "log_data_port": 59000 + }, + "host_net_info" : { + "cmd_data_ip" : "192.168.1.5", + "cmd_data_port": 56000, + "push_msg_ip": "", + "push_msg_port": 0, + "point_data_ip": "192.168.1.5", + "point_data_port": 57000, + "imu_data_ip" : "192.168.1.5", + "imu_data_port": 58000, + "log_data_ip" : "", + "log_data_port": 59000 + } + }, + "MID360": { + "lidar_net_info" : { + "cmd_data_port": 56100, + "push_msg_port": 56200, + "point_data_port": 56300, + "imu_data_port": 56400, + "log_data_port": 56500 + }, + "host_net_info" : { + "cmd_data_ip" : "192.168.1.5", + "cmd_data_port": 56101, + "push_msg_ip": "192.168.1.5", + "push_msg_port": 56201, + "point_data_ip": "192.168.1.5", + "point_data_port": 56301, + "imu_data_ip" : "192.168.1.5", + "imu_data_port": 56401, + "log_data_ip" : "", + "log_data_port": 56501 + } + }, + "lidar_configs" : [ + { + "ip" : "192.168.1.100", + "pcl_data_type" : 1, + "pattern_mode" : 0, + "blind_spot_set" : 50, + "extrinsic_parameter" : { + "roll": 0.0, + "pitch": 0.0, + "yaw": 0.0, + "x": 0, + "y": 0, + "z": 0 + } + }, + { + "ip" : "192.168.1.12", + "pcl_data_type" : 1, + "pattern_mode" : 0, + "extrinsic_parameter" : { + "roll": 0.0, + "pitch": 0.0, + "yaw": 0.0, + "x": 0, + "y": 0, + "z": 0 + } + } + ] +} + diff --git a/config_ROS1/HAP_config.json b/config_ROS1/HAP_config.json deleted file mode 100644 index bdf21827..00000000 --- a/config_ROS1/HAP_config.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "lidar_summary_info" : { - "lidar_type": 8 - }, - "HAP": { - "lidar_net_info" : { - "cmd_data_port": 56000, - "push_msg_port": 0, - "point_data_port": 57000, - "imu_data_port": 58000, - "log_data_port": 59000 - }, - "host_net_info" : { - "cmd_data_ip" : "192.168.1.5", - "cmd_data_port": 56000, - "push_msg_ip": "", - "push_msg_port": 0, - "point_data_ip": "192.168.1.5", - "point_data_port": 57000, - "imu_data_ip" : "192.168.1.5", - "imu_data_port": 58000, - "log_data_ip" : "", - "log_data_port": 59000 - } - }, - "lidar_configs" : [ - { - "ip" : "192.168.1.100", - "pcl_data_type" : 1, - "pattern_mode" : 0, - "blind_spot_set" : 50, - "extrinsic_parameter" : { - "roll": 0.0, - "pitch": 0.0, - "yaw": 0.0, - "x": 0, - "y": 0, - "z": 0 - } - } - ] -} - diff --git a/dedicated_sdk/CMakeLists.txt b/dedicated_sdk/CMakeLists.txt deleted file mode 100644 index 4a74b39b..00000000 --- a/dedicated_sdk/CMakeLists.txt +++ /dev/null @@ -1,42 +0,0 @@ -cmake_minimum_required(VERSION 3.0) - -project(livox_sdk) - -set(CMAKE_CXX_STANDARD 11) - -message(STATUS "main project dir: " ${PROJECT_SOURCE_DIR}) - -if (CMAKE_CROSSCOMPILING) - set(THREADS_PTHREAD_ARG - "PLEASE_FILL_OUT-FAILED_TO_RUN" - CACHE STRING "Result from TRY_RUN" FORCE) -endif() - -if (UNIX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread") -endif(UNIX) - -add_subdirectory(livox_sdk/sdk_core sdk_core) -add_subdirectory(livox_sdk_vehicle/sdk_core vehicle_sdk_core) -add_subdirectory(livox_lidar_sdk/sdk_core livox_sdk_core) -add_subdirectory(livox_sdk_common) - -add_subdirectory(sample/industry/industry_lidar_sample) -add_subdirectory(sample/industry/industry_lidar_upgrade) - -add_subdirectory(sample/lvx/parse_lvx_file) -add_subdirectory(sample/lvx/record_lvx2_file) -add_subdirectory(sample/lvx/record_lvx2_file_industrial) -add_subdirectory(sample/lvx/obstacle_avoidance_test) - -add_subdirectory(sample/vehicle/vehicle_multi_lidar_upgrade) -add_subdirectory(sample/vehicle/vehicle_lidar_upgrade) -add_subdirectory(sample/vehicle/vehicle_lidar_quick_start) -add_subdirectory(sample/vehicle/vehicle_lidar_preconfig) - -add_subdirectory(sample/hap/livox_multi_lidar_upgrade) -add_subdirectory(sample/hap/livox_lidar_quick_start) -add_subdirectory(sample/hap/livox_lidar_view_quick_start) -add_subdirectory(sample/hap/livox_lidar_for_test) -add_subdirectory(sample/hap/livox_lidar_record_lvx2_file) -add_subdirectory(sample/hap/livox_lidar_parse_lvx2_file) \ No newline at end of file diff --git a/dedicated_sdk/CMakeLists.txt.shared b/dedicated_sdk/CMakeLists.txt.shared deleted file mode 100644 index 4f681df8..00000000 --- a/dedicated_sdk/CMakeLists.txt.shared +++ /dev/null @@ -1,24 +0,0 @@ -cmake_minimum_required(VERSION 3.0) - -project(livox_sdk) -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - -set(CMAKE_CXX_STANDARD 11) - -message(STATUS "main project dir: " ${PROJECT_SOURCE_DIR}) - -if (CMAKE_CROSSCOMPILING) - set(THREADS_PTHREAD_ARG - "PLEASE_FILL_OUT-FAILED_TO_RUN" - CACHE STRING "Result from TRY_RUN" FORCE) -endif() - -if (UNIX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread") -endif(UNIX) - -add_subdirectory(livox_sdk/sdk_core sdk_core) -add_subdirectory(livox_sdk_vehicle/sdk_core vehicle_sdk_core) -add_subdirectory(livox_lidar_sdk/sdk_core livox_lidar_sdk_core) - -add_subdirectory(livox_sdk_common) diff --git a/dedicated_sdk/CMakeLists.txt.static b/dedicated_sdk/CMakeLists.txt.static deleted file mode 100644 index 4a74b39b..00000000 --- a/dedicated_sdk/CMakeLists.txt.static +++ /dev/null @@ -1,42 +0,0 @@ -cmake_minimum_required(VERSION 3.0) - -project(livox_sdk) - -set(CMAKE_CXX_STANDARD 11) - -message(STATUS "main project dir: " ${PROJECT_SOURCE_DIR}) - -if (CMAKE_CROSSCOMPILING) - set(THREADS_PTHREAD_ARG - "PLEASE_FILL_OUT-FAILED_TO_RUN" - CACHE STRING "Result from TRY_RUN" FORCE) -endif() - -if (UNIX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread") -endif(UNIX) - -add_subdirectory(livox_sdk/sdk_core sdk_core) -add_subdirectory(livox_sdk_vehicle/sdk_core vehicle_sdk_core) -add_subdirectory(livox_lidar_sdk/sdk_core livox_sdk_core) -add_subdirectory(livox_sdk_common) - -add_subdirectory(sample/industry/industry_lidar_sample) -add_subdirectory(sample/industry/industry_lidar_upgrade) - -add_subdirectory(sample/lvx/parse_lvx_file) -add_subdirectory(sample/lvx/record_lvx2_file) -add_subdirectory(sample/lvx/record_lvx2_file_industrial) -add_subdirectory(sample/lvx/obstacle_avoidance_test) - -add_subdirectory(sample/vehicle/vehicle_multi_lidar_upgrade) -add_subdirectory(sample/vehicle/vehicle_lidar_upgrade) -add_subdirectory(sample/vehicle/vehicle_lidar_quick_start) -add_subdirectory(sample/vehicle/vehicle_lidar_preconfig) - -add_subdirectory(sample/hap/livox_multi_lidar_upgrade) -add_subdirectory(sample/hap/livox_lidar_quick_start) -add_subdirectory(sample/hap/livox_lidar_view_quick_start) -add_subdirectory(sample/hap/livox_lidar_for_test) -add_subdirectory(sample/hap/livox_lidar_record_lvx2_file) -add_subdirectory(sample/hap/livox_lidar_parse_lvx2_file) \ No newline at end of file diff --git a/dedicated_sdk/build.sh b/dedicated_sdk/build.sh deleted file mode 100755 index 46726330..00000000 --- a/dedicated_sdk/build.sh +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/bash - -readonly VERSION_ROS1="ROS1" -readonly VERSION_ROS2="ROS2" - -ROS_VERSION="" - -function CheckParams() { - echo "param 1:"$1 - # Set working ROS version - if [ "$1" = "ROS2" ]; then - ROS_VERSION=${VERSION_ROS2} - elif [ "$1" = "ROS1" ]; then - ROS_VERSION=${VERSION_ROS1} - else - echo "Invalid Argument" - exit - fi - echo "ROS version is: "$ROS_VERSION -} - -# function RemoveStaticLib() { -# if [ ${ROS_VERSION} = ${VERSION_ROS2} ]; then - -# if [ -f "/usr/local/lib/liblivox_sdk_common_static.a" ]; then -# rm /usr/local/lib/liblivox_sdk_common_static.a -# fi - -# fi -# if [ -f "/usr/local/lib/liblivox_sdk_static.a"]; then -# rm /usr/local/lib/liblivox_sdk_static.a -# fi -# if [ -f "/usr/local/lib/liblivox_sdk_vehicle_static.a"]; then -# rm /usr/local/lib/liblivox_sdk_vehicle_static.a -# fi -# fi -# } - - -function GenerateCmakeFile() { - # substitute the files/folders: CMakeList.txt, package.xml(s) - if [ ${ROS_VERSION} = ${VERSION_ROS1} ]; then - cp ./CMakeLists.txt.static ./CMakeLists.txt - cp ./livox_sdk/sdk_core/CMakeLists.txt.static ./livox_sdk/sdk_core/CMakeLists.txt - cp ./livox_sdk_common/CMakeLists.txt.static ./livox_sdk_common/CMakeLists.txt - cp ./livox_sdk_vehicle/sdk_core/CMakeLists.txt.static ./livox_sdk_vehicle/sdk_core/CMakeLists.txt - cp ./livox_lidar_sdk/sdk_core/CMakeLists.txt.static ./livox_lidar_sdk/sdk_core/CMakeLists.txt - - elif [ ${ROS_VERSION} = ${VERSION_ROS2} ]; then - cp ./CMakeLists.txt.shared ./CMakeLists.txt - cp ./livox_sdk/sdk_core/CMakeLists.txt.shared ./livox_sdk/sdk_core/CMakeLists.txt - cp ./livox_sdk_common/CMakeLists.txt.shared ./livox_sdk_common/CMakeLists.txt - cp ./livox_sdk_vehicle/sdk_core/CMakeLists.txt.shared ./livox_sdk_vehicle/sdk_core/CMakeLists.txt - cp ./livox_lidar_sdk/sdk_core/CMakeLists.txt.shared ./livox_lidar_sdk/sdk_core/CMakeLists.txt - fi -} - -function Complier() { - if [ ! -d "./build" ];then - mkdir build - else - rm build -R - mkdir build - fi - - cd ./build - cmake .. && make -j && make install -} - -cd `dirname $0` -echo "Working Path: "`pwd` - -CheckParams $1 -# RemoveStaticLib -GenerateCmakeFile -Complier - diff --git a/dedicated_sdk/livox_lidar_sdk/CMakeLists.txt b/dedicated_sdk/livox_lidar_sdk/CMakeLists.txt deleted file mode 100644 index 77320f07..00000000 --- a/dedicated_sdk/livox_lidar_sdk/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -cmake_minimum_required(VERSION 3.0) - -project(livox_sdk) - -set(CMAKE_CXX_STANDARD 11) - -message(STATUS "main project dir: " ${PROJECT_SOURCE_DIR}) - -if (CMAKE_CROSSCOMPILING) - set(THREADS_PTHREAD_ARG - "PLEASE_FILL_OUT-FAILED_TO_RUN" - CACHE STRING "Result from TRY_RUN" FORCE) -endif() - -if (UNIX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread") -endif(UNIX) - -add_subdirectory(sdk_core sdk_core) diff --git a/dedicated_sdk/livox_lidar_sdk/Doxyfile b/dedicated_sdk/livox_lidar_sdk/Doxyfile deleted file mode 100644 index dc4d1d8f..00000000 --- a/dedicated_sdk/livox_lidar_sdk/Doxyfile +++ /dev/null @@ -1,2567 +0,0 @@ -# Doxyfile 1.8.16 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the configuration -# file that follow. The default is UTF-8 which is also the encoding used for all -# text before the first occurrence of this tag. Doxygen uses libiconv (or the -# iconv built into libc) for the transcoding. See -# https://www.gnu.org/software/libiconv/ for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = "Livox SDK API" - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER = V2.2.0 - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = - -# With the PROJECT_LOGO tag one can specify a logo or an icon that is included -# in the documentation. The maximum height of the logo should not exceed 55 -# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy -# the logo to the output directory. - -PROJECT_LOGO = doc/images/1.png - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If -# left blank the current directory will be used. - -OUTPUT_DIRECTORY = docs - -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. -# The default value is: NO. - -CREATE_SUBDIRS = NO - -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII -# characters to appear in the names of generated files. If set to NO, non-ASCII -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode -# U+3044. -# The default value is: NO. - -ALLOW_UNICODE_NAMES = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all generated output in the proper direction. -# Possible values are: None, LTR, RTL and Context. -# The default value is: None. - -OUTPUT_TEXT_DIRECTION = None - -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = YES - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = NO - -# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line -# such as -# /*************** -# as being the beginning of a Javadoc-style comment "banner". If set to NO, the -# Javadoc-style will behave just like regular comments and it will not be -# interpreted by doxygen. -# The default value is: NO. - -JAVADOC_BANNER = NO - -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new -# page for each member. If set to NO, the documentation of a member will be part -# of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:\n" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines (in the resulting output). You can put ^^ in the value part of an -# alias to insert a newline as if a physical newline was in the original file. -# When you need a literal { or } or , in the value part of an alias you have to -# escape them by means of a backslash (\), this can lead to conflicts with the -# commands \{ and \} for these it is advised to use the version @{ and @} or use -# a double escape (\\{ and \\}) - -ALIASES = - -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice -# sources only. Doxygen will then generate output that is more tailored for that -# language. For instance, namespaces will be presented as modules, types will be -# separated into more groups, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_SLICE = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, Javascript, -# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, -# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: -# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser -# tries to guess whether the code is fixed or free formatted code, this is the -# default for Fortran type files), VHDL, tcl. For instance to make doxygen treat -# .inc files as Fortran files (default is PHP), and .f files as C (default is -# Fortran), use: inc=Fortran f=C. -# -# Note: For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See https://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = YES - -# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up -# to that level are automatically included in the table of contents, even if -# they do not have an id attribute. -# Note: This feature currently applies only to Markdown headings. -# Minimum value: 0, maximum value: 99, default value: 5. -# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. - -TOC_INCLUDE_HEADINGS = 0 - -# When enabled doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = NO - -# If one adds a struct or class to a group and this option is enabled, then also -# any nested class or struct is added to the same group. By default this option -# is disabled and one has to add nested compounds explicitly via \ingroup. -# The default value is: NO. - -GROUP_NESTED_COMPOUNDS = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = NO - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = NO - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual -# methods of a class will be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIV_VIRTUAL = NO - -# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = YES - -# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = YES - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO, -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. If set to YES, local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO, only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# (class|struct|union) declarations. If set to NO, these declarations will be -# included in the documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO, these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES, upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# (including Cygwin) ands Mac users are advised to set this option to NO. -# The default value is: system dependent. - -CASE_SENSE_NAMES = NO - -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES, the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = NO - -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will -# append additional text to a page's title, such as Class Reference. If set to -# YES the compound reference will be hidden. -# The default value is: NO. - -HIDE_COMPOUND_REFERENCE= NO - -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = YES - -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each -# grouped member an include statement to the documentation, telling the reader -# which file to include in order to use the member. -# The default value is: NO. - -SHOW_GROUPED_MEMB_INC = NO - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. Note that -# this will also influence the order of the classes in the class list. -# The default value is: NO. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo -# list. This list is created by putting \todo commands in the documentation. -# The default value is: YES. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test -# list. This list is created by putting \test commands in the documentation. -# The default value is: YES. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if ... \endif and \cond -# ... \endcond blocks. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES, the -# list will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. -# -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. See also \cite for info how to create references. - -CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = YES - -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = YES - -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong or incomplete -# parameter documentation, but not about the absence of documentation. If -# EXTRACT_ALL is set to YES then this flag will automatically be disabled. -# The default value is: NO. - -WARN_NO_PARAMDOC = NO - -# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when -# a warning is encountered. -# The default value is: NO. - -WARN_AS_ERROR = NO - -# The WARN_FORMAT tag determines the format of the warning messages that doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# The default value is: $file:$line: $text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING -# Note: If this tag is empty the current directory is searched. - -INPUT = sdk_core/include \ - README.md - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: https://www.gnu.org/software/libiconv/) for the list of -# possible encodings. -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# read by doxygen. -# -# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, -# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, -# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, -# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, -# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice. - -FILE_PATTERNS = *.c \ - *.cc \ - *.cxx \ - *.cpp \ - *.c++ \ - *.java \ - *.ii \ - *.ixx \ - *.ipp \ - *.i++ \ - *.inl \ - *.idl \ - *.ddl \ - *.odl \ - *.h \ - *.hh \ - *.hxx \ - *.hpp \ - *.h++ \ - *.cs \ - *.d \ - *.php \ - *.php4 \ - *.php5 \ - *.phtml \ - *.inc \ - *.m \ - *.markdown \ - *.md \ - *.mm \ - *.dox \ - *.py \ - *.pyw \ - *.f90 \ - *.f95 \ - *.f03 \ - *.f08 \ - *.f \ - *.for \ - *.tcl \ - *.vhd \ - *.vhdl \ - *.ucf \ - *.qsf - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which doxygen is -# run. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = * - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = . - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# -# -# where is the value of the INPUT_FILTER tag, and is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. - -USE_MDFILE_AS_MAINPAGE = README.md - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. -# The default value is: NO. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# entity all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = YES - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see https://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = YES - -# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the -# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the -# cost of reduced performance. This can be particularly helpful with template -# rich C++ code for which doxygen's built-in parser lacks the necessary type -# information. -# Note: The availability of this option depends on whether or not doxygen was -# generated with the -Duse_libclang=ON option for CMake. -# The default value is: NO. - -CLANG_ASSISTED_PARSING = NO - -# If clang assisted parsing is enabled you can provide the compiler with command -# line options that you would normally use when invoking the compiler. Note that -# the include paths will already be set by doxygen for the files and directories -# specified with INPUT and INCLUDE_PATH. -# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. - -CLANG_OPTIONS = - -# If clang assisted parsing is enabled you can provide the clang parser with the -# path to the compilation database (see: -# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) used when the files -# were built. This is equivalent to specifying the "-p" option to a clang tool, -# such as clang-check. These options will then be passed to the parser. -# Note: The availability of this option depends on whether or not doxygen was -# generated with the -Duse_libclang=ON option for CMake. - -CLANG_DATABASE_PATH = - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = YES - -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined -# cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefore more robust against future updates. -# Doxygen will copy the style sheet files to the output directory. -# Note: The order of the extra style sheet files is of importance (e.g. the last -# style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see -# https://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to YES can help to show when doxygen was last run and thus if the -# documentation is up to date. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = NO - -# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML -# documentation will contain a main index with vertical navigation menus that -# are dynamically created via Javascript. If disabled, the navigation index will -# consists of multiple levels of tabs that are statically embedded in every HTML -# page. Disable this option to support browsers that do not have Javascript, -# like the Qt help browser. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_MENUS = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = NO - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: https://developer.apple.com/xcode/), introduced with OSX -# 10.5 (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the docset in -# that directory and running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy -# genXcode/_index.html for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: https://www.microsoft.com/en-us/download/details.aspx?id=21138) on -# Windows. -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = NO - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = - -# The GENERATE_CHI flag controls if a separate .chi index file is generated -# (YES) or that it should be included in the master .chm file (NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated -# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it -# enables the Previous and Next buttons. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual- -# folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location of Qt's -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the -# generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = NO - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = YES - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 4 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANSPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# https://www.mathjax.org) which uses client side Javascript for the rendering -# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = NO - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/latest/output.html) for more details. -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from https://www.mathjax.org before deployment. -# The default value is: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/ - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use + S -# (what the is depends on the OS and browser, but it is typically -# , /