diff --git a/src/drivers/vesc/VescDriver/VescDriver.cpp b/src/drivers/vesc/VescDriver/VescDriver.cpp index af03fbeaa9..3c0ccb6c2d 100644 --- a/src/drivers/vesc/VescDriver/VescDriver.cpp +++ b/src/drivers/vesc/VescDriver/VescDriver.cpp @@ -122,13 +122,7 @@ size_t VescDriver::sendPacket(const uint8_t *payload, uint16_t payload_length, c packet_buffer[index++] = 3; // Write bytes out through callback interface - size_t ret{0}; - - if (_vesc_writable) { - ret = _vesc_writable->writeCallback(packet_buffer, index); - } - - return ret; + return _vesc_writable.writeCallback(packet_buffer, index); } void VescDriver::parseInputByte(uint8_t byte) diff --git a/src/drivers/vesc/VescDriver/VescDriver.hpp b/src/drivers/vesc/VescDriver/VescDriver.hpp index d19c38d4cd..9cbf0e401c 100644 --- a/src/drivers/vesc/VescDriver/VescDriver.hpp +++ b/src/drivers/vesc/VescDriver/VescDriver.hpp @@ -41,14 +41,14 @@ #pragma once #include "VescProtocol.h" -#include "VescWritable.hpp" +#include "VescWritableInterface.hpp" #include #include class VescDriver { public: - VescDriver(VescWritable *vesc_writable) : _vesc_writable(vesc_writable) {}; + VescDriver(VescWritableInterface &vesc_writable) : _vesc_writable(vesc_writable) {}; ~VescDriver() = default; void commandDutyCycle(float duty_cycle, const uint8_t forward_can_id = 0); @@ -79,7 +79,7 @@ private: float extractFloat32(const uint8_t *buffer, uint16_t &index); // Write access to device through callback - VescWritable *_vesc_writable; + VescWritableInterface &_vesc_writable; // Input packet parsing size_t _input_byte_index{0}; ///< keeps track of the input packets parsing state diff --git a/src/drivers/vesc/VescDriver/VescWritable.hpp b/src/drivers/vesc/VescDriver/VescWritableInterface.hpp similarity index 95% rename from src/drivers/vesc/VescDriver/VescWritable.hpp rename to src/drivers/vesc/VescDriver/VescWritableInterface.hpp index a42b84e9dd..b9a4596fa3 100644 --- a/src/drivers/vesc/VescDriver/VescWritable.hpp +++ b/src/drivers/vesc/VescDriver/VescWritableInterface.hpp @@ -32,7 +32,7 @@ ****************************************************************************/ /** - * @file VescWritable.hpp + * @file VescWritableInterface.hpp * @brief Interface calls defining the write callback for VESC communication * @details To keep the driver cross-platform compatible the device owner class * needs to implement this interface and pass itself to the driver via constructor @@ -43,12 +43,8 @@ #include #include -class VescWritable +class VescWritableInterface { public: - VescWritable() = default; - ~VescWritable() = default; virtual size_t writeCallback(const uint8_t *buffer, const uint16_t length) = 0; - -private: }; diff --git a/src/drivers/vesc/VescSerialDevice.cpp b/src/drivers/vesc/VescSerialDevice.cpp index f46e515370..8d351035b9 100644 --- a/src/drivers/vesc/VescSerialDevice.cpp +++ b/src/drivers/vesc/VescSerialDevice.cpp @@ -45,7 +45,7 @@ using namespace time_literals; VescDevice::VescDevice(const char *port) : ScheduledWorkItem(MODULE_NAME, px4::serial_port_to_wq(port)), - _vesc_driver(this) + _vesc_driver(*this) { // Store port name strncpy(_port, port, sizeof(_port) - 1); diff --git a/src/drivers/vesc/VescSerialDevice.hpp b/src/drivers/vesc/VescSerialDevice.hpp index dc9030f77b..20ef5145ec 100644 --- a/src/drivers/vesc/VescSerialDevice.hpp +++ b/src/drivers/vesc/VescSerialDevice.hpp @@ -40,7 +40,7 @@ #include "VescDriver/VescDriver.hpp" #include -class VescDevice : public px4::ScheduledWorkItem, public VescWritable +class VescDevice : public px4::ScheduledWorkItem, public VescWritableInterface { public: VescDevice(const char *port);