Skip to content

Commit

Permalink
Use pointer for SerialPort instance instead of inheritance
Browse files Browse the repository at this point in the history
  • Loading branch information
ShotaAk committed Dec 19, 2023
1 parent 94f1714 commit fff93cd
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 13 deletions.
9 changes: 3 additions & 6 deletions include/rt_usb_9axisimu_driver/rt_usb_9axisimu_driver.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,10 @@
#include "sensor_msgs/msg/magnetic_field.hpp"
#include "std_msgs/msg/float64.hpp"

class RtUsb9axisimuRosDriver : public rt_usb_9axisimu::SerialPort
class RtUsb9axisimuRosDriver
{
private:
// ros::NodeHandle nh_;

// ros::Publisher imu_data_raw_pub_;
// ros::Publisher imu_mag_pub_;
// ros::Publisher imu_temperature_pub_;
std::unique_ptr<rt_usb_9axisimu::SerialPort> serial_port_;

rt_usb_9axisimu::SensorData sensor_data_;

Expand Down Expand Up @@ -85,6 +81,7 @@ class RtUsb9axisimuRosDriver : public rt_usb_9axisimu::SerialPort

public:
explicit RtUsb9axisimuRosDriver(std::string serialport);
RtUsb9axisimuRosDriver(std::unique_ptr<rt_usb_9axisimu::SerialPort> serial_port, std::string port_name);
~RtUsb9axisimuRosDriver();

void setImuFrameIdName(std::string frame_id);
Expand Down
23 changes: 16 additions & 7 deletions src/rt_usb_9axisimu_driver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ bool RtUsb9axisimuRosDriver::readBinaryData(void)
unsigned char read_data_buf[256];

has_refreshed_imu_data_ = false;
int read_data_size = readFromDevice(read_data_buf,
int read_data_size = serial_port_->readFromDevice(read_data_buf,
consts.IMU_BIN_DATA_SIZE - imu_binary_data_buffer.size());

if(read_data_size == 0){ // The device was unplugged.
Expand Down Expand Up @@ -158,7 +158,7 @@ bool RtUsb9axisimuRosDriver::readAsciiData(void)
has_refreshed_imu_data_ = false;
imu_data_oneline_buf.clear();

int data_size_of_buf = readFromDevice(imu_data_buf, sizeof(imu_data_buf));
int data_size_of_buf = serial_port_->readFromDevice(imu_data_buf, sizeof(imu_data_buf));

if (data_size_of_buf <= 0) {
return false; // Raise communication error
Expand Down Expand Up @@ -205,8 +205,17 @@ bool RtUsb9axisimuRosDriver::readAsciiData(void)
}

RtUsb9axisimuRosDriver::RtUsb9axisimuRosDriver(std::string port = "")
: rt_usb_9axisimu::SerialPort(port.c_str())
{
serial_port_ = std::make_unique<rt_usb_9axisimu::SerialPort>(port.c_str());
has_completed_format_check_ = false;
data_format_ = DataFormat::NONE;
has_refreshed_imu_data_ = false;
}

RtUsb9axisimuRosDriver::RtUsb9axisimuRosDriver(std::unique_ptr<rt_usb_9axisimu::SerialPort> serial_port, std::string port_name)
{
serial_port_ = std::move(serial_port);
serial_port_->setPort(port_name.c_str());
has_completed_format_check_ = false;
data_format_ = DataFormat::NONE;
has_refreshed_imu_data_ = false;
Expand All @@ -223,7 +232,7 @@ void RtUsb9axisimuRosDriver::setImuFrameIdName(std::string frame_id)

void RtUsb9axisimuRosDriver::setImuPortName(std::string port)
{
setPort(port.c_str());
serial_port_->setPort(port.c_str());
}

void RtUsb9axisimuRosDriver::setImuStdDev(
Expand All @@ -238,12 +247,12 @@ void RtUsb9axisimuRosDriver::setImuStdDev(
bool RtUsb9axisimuRosDriver::startCommunication()
{
// returns serial port open status
return openSerialPort();
return serial_port_->openSerialPort();
}

void RtUsb9axisimuRosDriver::stopCommunication(void)
{
closeSerialPort();
serial_port_->closeSerialPort();
has_completed_format_check_ = false;
data_format_ = DataFormat::NONE;
has_refreshed_imu_data_ = false;
Expand All @@ -253,7 +262,7 @@ void RtUsb9axisimuRosDriver::checkDataFormat(void)
{
if (data_format_ == DataFormat::NONE) {
unsigned char data_buf[256];
int data_size_of_buf = readFromDevice(data_buf, consts.IMU_BIN_DATA_SIZE);
int data_size_of_buf = serial_port_->readFromDevice(data_buf, consts.IMU_BIN_DATA_SIZE);
if (data_size_of_buf == consts.IMU_BIN_DATA_SIZE) {
if (isBinarySensorData(data_buf)) {
data_format_ = DataFormat::BINARY;
Expand Down

0 comments on commit fff93cd

Please sign in to comment.