From 2963cb478b05f64585fe36d4b0126d89a98d372d Mon Sep 17 00:00:00 2001 From: Tortus-exe <65506144+Tortus-exe@users.noreply.github.com> Date: Sun, 28 Jul 2024 15:22:18 -0700 Subject: [PATCH] remove location.exe and replace with rule to build said binary --- Makefile | 3 +- src/imu_interface/location.exe | Bin 244807 -> 0 bytes src/imu_interface/rules.mk | 4 +- src/lidar/sl_serial_channel.cpp | 146 ++++++++++++++++++++++++++++++++ 4 files changed, 151 insertions(+), 2 deletions(-) delete mode 100644 src/imu_interface/location.exe create mode 100644 src/lidar/sl_serial_channel.cpp diff --git a/Makefile b/Makefile index acb13cb..bf49b2d 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,8 @@ MODULE_OBJS := include config.mk # example: include a folder -DIR := $(SRC_DIR)/interfaces +DIR := $(SRC_DIR)/imu_interface +# interfaces include $(DIR)/rules.mk mkobjdir: diff --git a/src/imu_interface/location.exe b/src/imu_interface/location.exe deleted file mode 100644 index 68a10b323cb6157fac3a4afc3c150474d6811b77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244807 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 J`{C1u{XZokCd~i< diff --git a/src/imu_interface/rules.mk b/src/imu_interface/rules.mk index c2d6b1c..7998538 100644 --- a/src/imu_interface/rules.mk +++ b/src/imu_interface/rules.mk @@ -5,6 +5,8 @@ include submodule.general.mk build_$(DIR): $(CXX) $(CXXFLAGS) -I $(INCLUDE_DIRS) -c $(DIR)/RealIntelCam.cpp -o $(OBJS_DIR)/RealIntelCam.o clean_$(DIR): + rm imu_interface_test_binary test_$(DIR): @echo testing the module $(DIR)! -test_sample_submodule: test_$(DIR) \ No newline at end of file +build_imu_interface_test_binary: + $(CXX) $(CXXFLAGS) -I $(INCLUDE_DIRS) $(DIR)/measure.cpp -o imu_interface_test_binary -lrealsense2 \ No newline at end of file diff --git a/src/lidar/sl_serial_channel.cpp b/src/lidar/sl_serial_channel.cpp new file mode 100644 index 0000000..f7faf3c --- /dev/null +++ b/src/lidar/sl_serial_channel.cpp @@ -0,0 +1,146 @@ +/* + * Slamtec LIDAR SDK + * + * Copyright (c) 2014 - 2020 Shanghai Slamtec Co., Ltd. + * http://www.slamtec.com + * + */ + /* + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 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 HOLDER 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. + * + */ + +#include "sl_lidar_driver.h" +#include "hal/abs_rxtx.h" +#include "hal/socket.h" + + +namespace sl { + + class SerialPortChannel : public ISerialPortChannel + { + public: + SerialPortChannel(const std::string& device, int baudrate) :_rxtxSerial(rp::hal::serial_rxtx::CreateRxTx()) + { + _device = device; + _baudrate = baudrate; + } + + ~SerialPortChannel() + { + if (_rxtxSerial) + delete _rxtxSerial; + } + + bool bind(const std::string& device, sl_s32 baudrate) + { + _closePending = false; + return _rxtxSerial->bind(device.c_str(), baudrate); + } + + bool open() + { + if(!bind(_device, _baudrate)) + return false; + return _rxtxSerial->open(); + } + + void close() + { + _closePending = true; + _rxtxSerial->cancelOperation(); + _rxtxSerial->close(); + } + void flush() + { + _rxtxSerial->flush(0); + } + + sl_result waitForDataExt(size_t& size_hint, sl_u32 timeoutInMs) + { + _word_size_t result; + size_t size_holder; + size_hint = 0; + + if (_closePending) return RESULT_OPERATION_TIMEOUT; + + if (!_rxtxSerial->isOpened()) { + return RESULT_OPERATION_FAIL; + } + + result = _rxtxSerial->waitfordata(1, timeoutInMs, &size_holder); + size_hint = size_holder; + if (result == (_word_size_t)rp::hal::serial_rxtx::ANS_DEV_ERR) + return RESULT_OPERATION_FAIL; + if (result == (_word_size_t)rp::hal::serial_rxtx::ANS_TIMEOUT) + return RESULT_OPERATION_TIMEOUT; + + return RESULT_OK; + } + + bool waitForData(size_t size, sl_u32 timeoutInMs, size_t* actualReady) + { + if (_closePending) return false; + return (_rxtxSerial->waitfordata(size, timeoutInMs, actualReady) == rp::hal::serial_rxtx::ANS_OK); + } + + int write(const void* data, size_t size) + { + return _rxtxSerial->senddata((const sl_u8 * )data, size); + } + + int read(void* buffer, size_t size) + { + size_t lenRec = 0; + lenRec = _rxtxSerial->recvdata((sl_u8 *)buffer, size); + return (int)lenRec; + } + + void clearReadCache() + { + + } + + void setDTR(bool dtr) + { + dtr ? _rxtxSerial->setDTR() : _rxtxSerial->clearDTR(); + } + + int getChannelType() { + return CHANNEL_TYPE_SERIALPORT; + } + + private: + rp::hal::serial_rxtx * _rxtxSerial; + bool _closePending; + std::string _device; + int _baudrate; + + }; + + Result createSerialPortChannel(const std::string& device, int baudrate) + { + return new SerialPortChannel(device, baudrate); + } + +} \ No newline at end of file