From f02d81c0319ac452a3c4644dc2f5d16e2500a082 Mon Sep 17 00:00:00 2001 From: loctv Date: Mon, 13 Jul 2026 06:21:45 +0700 Subject: [PATCH] refactor: rename driver_sick_code plugin to driver_sick_tim The driver targets the SICK TiM 5xx/7xx family over CoLa-A; "code" described neither the devices nor the protocol. driver_id stays sick_tim_driver. Co-Authored-By: Claude Fable 5 --- README.md | 4 ++-- plugins/CMakeLists.txt | 2 +- plugins/driver_sick_code/CMakeLists.txt | 1 - plugins/driver_sick_tim/CMakeLists.txt | 1 + .../sick_tim_driver.cpp} | 24 +++++++++---------- .../sick_tim_driver.hpp} | 10 ++++---- 6 files changed, 21 insertions(+), 21 deletions(-) delete mode 100644 plugins/driver_sick_code/CMakeLists.txt create mode 100644 plugins/driver_sick_tim/CMakeLists.txt rename plugins/{driver_sick_code/sick_code_driver.cpp => driver_sick_tim/sick_tim_driver.cpp} (93%) rename plugins/{driver_sick_code/sick_code_driver.hpp => driver_sick_tim/sick_tim_driver.hpp} (90%) diff --git a/README.md b/README.md index 288fe31..f52ede0 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ xlidar_driver/ │ ├── common/plugin_helpers.hpp │ ├── driver_rplidar/ # → driver_rplidar.so (rplidar_c1_driver) │ ├── driver_olei/ # → driver_olei.so (olei_lidar_driver) -│ ├── driver_sick_code/ # → driver_sick_code.so (sick_tim_driver) +│ ├── driver_sick_tim/ # → driver_sick_tim.so (sick_tim_driver) │ ├── driver_sick_safety/ # → driver_sick_safety.so (sick_nanoscan3_driver) │ └── driver_espe/ # → driver_espe.so (espe_lga60_driver) ├── examples/ # list_drivers, example, lidar_app @@ -211,7 +211,7 @@ khi load: `brand`+`model` → `driver_id`, cặp `angle_*_deg` cũ → remap. |---|---|---|---|---|---| | `rplidar_c1_driver` | `driver_rplidar.so` | Slamtec RPLIDAR | serial | `AUTO`, `C1` | Build trên SDK vendor; default C1 @ 460800; A/S series dùng được với baud tương ứng. Health check lúc `open()`, model/firmware tự nhận | | `olei_lidar_driver` | `driver_olei.so` | OLEI 2D | udp | `AUTO`, `VB`, `VF`, `LR-1F`, `LR-1FMI`, `LR-1BS5`, `LR-16F`, `GS1-5` | Tự nhận diện giao thức Family A/B/C theo frame ID từng gói; `AUTO` tự dò model (Family B/C). Port mặc định 2368 | -| `sick_tim_driver` | `driver_sick_code.so` | SICK TiM 5xx/7xx | tcp | `SICK-TIM5xx`, `SICK-TIM571`, `SICK-TIM7xx` | SOPAS/CoLa-A; `open()` tự start stream. Port 2111. Verify trên TiM781S thật | +| `sick_tim_driver` | `driver_sick_tim.so` | SICK TiM 5xx/7xx | tcp | `SICK-TIM5xx`, `SICK-TIM571`, `SICK-TIM7xx` | SOPAS/CoLa-A; `open()` tự start stream. Port 2111. Verify trên TiM781S thật | | `sick_nanoscan3_driver` | `driver_sick_safety.so` | SICK nanoScan3/microScan3 | udp | `SICK-nanoScan3` | Receiver thụ động UDP safety-data; đích UDP cấu hình sẵn bằng Safety Designer. Port 6060. Chưa verify phần cứng | | `espe_lga60_driver` | `driver_espe.so` | ESPE LGA60 | tcp (+udp) | `ESPE-LGA60` | FOV 320°; `open()` gửi `RAuto`; tham số thiết bị theo tool Windows của hãng. Port 8080. Chưa verify phần cứng | diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt index 29a8648..0d836e7 100644 --- a/plugins/CMakeLists.txt +++ b/plugins/CMakeLists.txt @@ -23,7 +23,7 @@ function(xlidar_add_plugin name) endfunction() add_subdirectory(driver_olei) -add_subdirectory(driver_sick_code) +add_subdirectory(driver_sick_tim) add_subdirectory(driver_sick_safety) add_subdirectory(driver_espe) add_subdirectory(driver_rplidar) diff --git a/plugins/driver_sick_code/CMakeLists.txt b/plugins/driver_sick_code/CMakeLists.txt deleted file mode 100644 index e79b5ae..0000000 --- a/plugins/driver_sick_code/CMakeLists.txt +++ /dev/null @@ -1 +0,0 @@ -xlidar_add_plugin(driver_sick_code sick_code_driver.cpp) diff --git a/plugins/driver_sick_tim/CMakeLists.txt b/plugins/driver_sick_tim/CMakeLists.txt new file mode 100644 index 0000000..c6e79a0 --- /dev/null +++ b/plugins/driver_sick_tim/CMakeLists.txt @@ -0,0 +1 @@ +xlidar_add_plugin(driver_sick_tim sick_tim_driver.cpp) diff --git a/plugins/driver_sick_code/sick_code_driver.cpp b/plugins/driver_sick_tim/sick_tim_driver.cpp similarity index 93% rename from plugins/driver_sick_code/sick_code_driver.cpp rename to plugins/driver_sick_tim/sick_tim_driver.cpp index 6253adf..1ee31fc 100644 --- a/plugins/driver_sick_code/sick_code_driver.cpp +++ b/plugins/driver_sick_tim/sick_tim_driver.cpp @@ -1,6 +1,6 @@ // SICK TiM 5xx/7xx — SOPAS/CoLa-A ASCII telegrams over TCP ("sSN/sRA // LMDscandata" parsing). -#include "sick_code_driver.hpp" +#include "sick_tim_driver.hpp" #include "plugin_helpers.hpp" #include @@ -42,14 +42,14 @@ std::vector tokenize(const std::string& s) { } } // namespace -SickCodeDriver::SickCodeDriver(const ModelConfig& cfg, const std::string& ip, uint16_t port, +SickTimDriver::SickTimDriver(const ModelConfig& cfg, const std::string& ip, uint16_t port, bool inverted) : cfg_(cfg), detected_model_name_(cfg.name ? cfg.name : ""), ip_(ip), port_(port), inverted_(inverted) {} -SickCodeDriver::~SickCodeDriver() { close(); } +SickTimDriver::~SickTimDriver() { close(); } -ErrorCode SickCodeDriver::open() { +ErrorCode SickTimDriver::open() { if (is_open()) return set_error(ErrorCode::AlreadyOpen); sockaddr_in addr{}; @@ -79,7 +79,7 @@ ErrorCode SickCodeDriver::open() { return set_error(ErrorCode::Ok); } -void SickCodeDriver::close() { +void SickTimDriver::close() { if (sock_fd_ >= 0) { send_telegram("sEN LMDscandata 0"); // best-effort ::close(sock_fd_); @@ -87,7 +87,7 @@ void SickCodeDriver::close() { } } -bool SickCodeDriver::send_telegram(const std::string& body) { +bool SickTimDriver::send_telegram(const std::string& body) { if (sock_fd_ < 0) return false; std::string framed; framed.reserve(body.size() + 2); @@ -106,7 +106,7 @@ bool SickCodeDriver::send_telegram(const std::string& body) { // CoLa-A has no length prefix, so ETX is the only frame boundary; recv_buf_ // carries leftover bytes across calls. -bool SickCodeDriver::read_telegram(std::string& out, int timeout_ms) { +bool SickTimDriver::read_telegram(std::string& out, int timeout_ms) { if (!is_open()) { set_error(ErrorCode::NotOpen); return false; } for (;;) { @@ -139,7 +139,7 @@ bool SickCodeDriver::read_telegram(std::string& out, int timeout_ms) { } } -bool SickCodeDriver::recv_scan(ScanResult& out, int timeout_ms) { +bool SickTimDriver::recv_scan(ScanResult& out, int timeout_ms) { for (;;) { std::string telegram; if (!read_telegram(telegram, timeout_ms)) return false; @@ -148,7 +148,7 @@ bool SickCodeDriver::recv_scan(ScanResult& out, int timeout_ms) { } } -bool SickCodeDriver::spin_once() { +bool SickTimDriver::spin_once() { std::string telegram; if (!read_telegram(telegram, 0)) return false; @@ -160,7 +160,7 @@ bool SickCodeDriver::spin_once() { // CoLa-A "sSN/sRA LMDscandata": space-separated ASCII hex tokens, field order // per SICK's Telegram Listing. "DIST1" → ranges, "RSSI1" → intensities. -bool SickCodeDriver::parse_lmdscandata(const std::string& telegram, ScanResult& out) { +bool SickTimDriver::parse_lmdscandata(const std::string& telegram, ScanResult& out) { std::vector tok = tokenize(telegram); if (tok.size() < 20) return false; if (tok[0] != "sSN" && tok[0] != "sRA") return false; @@ -301,7 +301,7 @@ const ModelConfig* model_by_name(const std::string& name) { } // namespace -DriverInfo SickCodeDriver::get_driver_info() const { return kDriverInfo; } +DriverInfo SickTimDriver::get_driver_info() const { return kDriverInfo; } } // namespace xlidar @@ -315,5 +315,5 @@ create_driver_instance(const xlidar::DeviceConfig* cfg) { const ModelConfig* preset = model_by_name(cfg->model); if (!preset) preset = &MODEL_SICK_TIM571; // brand default const uint16_t port = cfg->port ? cfg->port : 2111; - return new SickCodeDriver(apply_device_config(*preset, *cfg), cfg->ip, port, cfg->inverted); + return new SickTimDriver(apply_device_config(*preset, *cfg), cfg->ip, port, cfg->inverted); } diff --git a/plugins/driver_sick_code/sick_code_driver.hpp b/plugins/driver_sick_tim/sick_tim_driver.hpp similarity index 90% rename from plugins/driver_sick_code/sick_code_driver.hpp rename to plugins/driver_sick_tim/sick_tim_driver.hpp index ad045f9..be28bbb 100644 --- a/plugins/driver_sick_code/sick_code_driver.hpp +++ b/plugins/driver_sick_tim/sick_tim_driver.hpp @@ -17,17 +17,17 @@ inline constexpr ModelConfig MODEL_SICK_TIM7XX { "SICK-TIM7xx", -135.f, 135.f, 0 // SICK TiM5xx/7xx over SOPAS/CoLa-A (TCP, default port 2111). // Verified against a real TiM781S (FW V5.11). NOT verified: NumEncoders > 0, // the 8-bit channel branch, and the TIM5xx/TIM571 FOV/range numbers. -class SickCodeDriver : public LidarDriverInterface { +class SickTimDriver : public LidarDriverInterface { public: // inverted: unit mounted upside-down → mirror the scan. - explicit SickCodeDriver(const ModelConfig& cfg, + explicit SickTimDriver(const ModelConfig& cfg, const std::string& ip, uint16_t port = 2111, bool inverted = false); - ~SickCodeDriver(); + ~SickTimDriver(); - SickCodeDriver(const SickCodeDriver&) = delete; - SickCodeDriver& operator=(const SickCodeDriver&) = delete; + SickTimDriver(const SickTimDriver&) = delete; + SickTimDriver& operator=(const SickTimDriver&) = delete; DriverInfo get_driver_info() const override;