Skip to content

Commit 48c9ace

Browse files
committed
Fix CI issues with the build
Signed-off-by: Mateusz Mazur <mateusz.mazur@e.email>
1 parent 5ee168e commit 48c9ace

File tree

8 files changed

+73
-17
lines changed

8 files changed

+73
-17
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ project(protocolConverter)
33

44
set(CMAKE_CXX_STANDARD 17)
55

6-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Werror -pedantic")
6+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Werror -pedantic -Werror=unused-result")
77

88
option(MODBUS_EXAMPLE "Build example program" OFF)
99
option(MODBUS_TESTS "Build tests" OFF)

include/MB/modbusRequest.hpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ class ModbusRequest {
7171
}
7272

7373
/**
74-
* Simple constructor, that allows to create "dummy" ModbusResponse
74+
* Simple constructor, that allows to create "dummy" ModbusRequest
7575
* object. May be useful in some cases.
7676
*/
7777
explicit ModbusRequest(
@@ -80,7 +80,15 @@ class ModbusRequest {
8080
uint16_t address = 0, uint16_t registersNumber = 0,
8181
std::vector<ModbusCell> values = {}) noexcept;
8282

83-
ModbusRequest(const ModbusRequest &) = default;
83+
/**
84+
* Copy constructor for the response.
85+
*/
86+
ModbusRequest(const ModbusRequest&);
87+
88+
/**
89+
* Equal operator for the response.
90+
*/
91+
ModbusRequest& operator=(const ModbusRequest &);
8492

8593
//! Returns string representation of object
8694
[[nodiscard]] std::string toString() const noexcept;

include/MB/modbusResponse.hpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,15 @@ class ModbusResponse {
8080
uint16_t address = 0, uint16_t registersNumber = 0,
8181
std::vector<ModbusCell> values = {});
8282

83-
ModbusResponse(const ModbusResponse &) = default;
83+
/**
84+
* Copy constructor for the response.
85+
*/
86+
ModbusResponse(const ModbusResponse&);
87+
88+
/**
89+
* Equal operator for the response.
90+
*/
91+
ModbusResponse& operator=(const ModbusResponse &);
8492

8593
//! Converts object to it's string representation
8694
[[nodiscard]] std::string toString() const;

include/MB/modbusUtils.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,4 +233,8 @@ inline void pushUint16(std::vector<uint8_t> &buffer, const uint16_t val) {
233233
buffer.push_back(low);
234234
}
235235

236+
//! Ignore some value explicitly
237+
template<typename T>
238+
inline void ignore_result(T&& v) { (void)v; }
239+
236240
} // namespace MB::utils

src/Serial/connection.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// Licensed under: MIT License <http://opensource.org/licenses/MIT>
44

55
#include "Serial/connection.hpp"
6+
#include "modbusUtils.hpp"
67
#include <sys/poll.h>
78

89
using namespace MB::Serial;
@@ -139,7 +140,7 @@ std::vector<uint8_t> Connection::send(std::vector<uint8_t> data) {
139140
// most cases)
140141
tcflush(_fd, TCOFLUSH);
141142
// Write
142-
write(_fd, data.begin().base(), data.size());
143+
utils::ignore_result(write(_fd, data.begin().base(), data.size()));
143144
// It may be a good idea to use tcdrain, although it has tendency to not
144145
// work as expected tcdrain(_fd);
145146

src/TCP/connection.cpp

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// Licensed under: MIT License <http://opensource.org/licenses/MIT>
44

55
#include "TCP/connection.hpp"
6+
#include <cstdint>
67
#include <sys/poll.h>
78
#include <sys/socket.h>
89

@@ -25,16 +26,16 @@ std::vector<uint8_t> Connection::sendRequest(const MB::ModbusRequest &req) {
2526
std::vector<uint8_t> rawReq;
2627
rawReq.reserve(6);
2728

28-
rawReq.push_back(reinterpret_cast<const uint8_t *>(&_messageID)[1]);
29-
rawReq.push_back(reinterpret_cast<const uint8_t *>(&_messageID)[0]);
29+
rawReq.push_back(static_cast<const uint8_t&&>(reinterpret_cast<const uint8_t *>(&_messageID)[1]));
30+
rawReq.push_back(static_cast<uint8_t>(_messageID));
3031
rawReq.push_back(0x00);
3132
rawReq.push_back(0x00);
3233

3334
std::vector<uint8_t> dat = req.toRaw();
3435

3536
uint32_t size = dat.size();
36-
rawReq.push_back(reinterpret_cast<uint16_t *>(&size)[1]);
37-
rawReq.push_back(reinterpret_cast<uint16_t *>(&size)[0]);
37+
rawReq.push_back(static_cast<const uint16_t&&>(reinterpret_cast<const uint16_t *>(&size)[1]));
38+
rawReq.push_back(static_cast<uint16_t>(size));
3839

3940
rawReq.insert(rawReq.end(), dat.begin(), dat.end());
4041

@@ -47,16 +48,16 @@ std::vector<uint8_t> Connection::sendResponse(const MB::ModbusResponse &res) {
4748
std::vector<uint8_t> rawReq;
4849
rawReq.reserve(6);
4950

50-
rawReq.push_back(reinterpret_cast<const uint8_t *>(&_messageID)[1]);
51-
rawReq.push_back(reinterpret_cast<const uint8_t *>(&_messageID)[0]);
51+
rawReq.push_back(static_cast<const uint8_t&&>(reinterpret_cast<const uint8_t *>(&_messageID)[1]));
52+
rawReq.push_back(static_cast<uint8_t>(_messageID));
5253
rawReq.push_back(0x00);
5354
rawReq.push_back(0x00);
5455

5556
std::vector<uint8_t> dat = res.toRaw();
5657

5758
uint32_t size = dat.size();
58-
rawReq.push_back(reinterpret_cast<uint16_t *>(&size)[1]);
59-
rawReq.push_back(reinterpret_cast<uint16_t *>(&size)[0]);
59+
rawReq.push_back(static_cast<const uint16_t&&>(reinterpret_cast<const uint16_t *>(&size)[1]));
60+
rawReq.push_back(static_cast<uint16_t>(size));
6061

6162
rawReq.insert(rawReq.end(), dat.begin(), dat.end());
6263

@@ -69,16 +70,16 @@ std::vector<uint8_t> Connection::sendException(const MB::ModbusException &ex) {
6970
std::vector<uint8_t> rawReq;
7071
rawReq.reserve(6);
7172

72-
rawReq.push_back(reinterpret_cast<const uint8_t *>(&_messageID)[1]);
73-
rawReq.push_back(reinterpret_cast<const uint8_t *>(&_messageID)[0]);
73+
rawReq.push_back(static_cast<const uint8_t&&>(reinterpret_cast<const uint8_t *>(&_messageID)[1]));
74+
rawReq.push_back(static_cast<uint8_t>(_messageID));
7475
rawReq.push_back(0x00);
7576
rawReq.push_back(0x00);
7677

7778
std::vector<uint8_t> dat = ex.toRaw();
7879

7980
uint32_t size = dat.size();
80-
rawReq.push_back(reinterpret_cast<uint16_t *>(&size)[1]);
81-
rawReq.push_back(reinterpret_cast<uint16_t *>(&size)[0]);
81+
rawReq.push_back(static_cast<const uint16_t&&>(reinterpret_cast<const uint16_t *>(&size)[1]));
82+
rawReq.push_back(static_cast<uint16_t>(size));
8283

8384
rawReq.insert(rawReq.end(), dat.begin(), dat.end());
8485

src/modbusRequest.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,23 @@ ModbusRequest::ModbusRequest(uint8_t slaveId, utils::MBFunctionCode functionCode
3030
}
3131
}
3232

33+
ModbusRequest::ModbusRequest(const ModbusRequest& reference) :
34+
_slaveID(reference.slaveID()),
35+
_functionCode(reference.functionCode()),
36+
_address(reference.registerAddress()),
37+
_registersNumber(reference.numberOfRegisters()),
38+
_values(reference.registerValues()){ }
39+
40+
41+
ModbusRequest& ModbusRequest::operator=(const ModbusRequest &reference) {
42+
this->_slaveID = reference.slaveID();
43+
this->_functionCode = reference.functionCode();
44+
this->_address = reference.registerAddress();
45+
this->_registersNumber = reference.numberOfRegisters();
46+
this->_values = reference.registerValues();
47+
return *this;
48+
}
49+
3350
ModbusRequest::ModbusRequest(const std::vector<uint8_t> &inputData, bool CRC) {
3451
try {
3552
if (inputData.size() < 3)

src/modbusResponse.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,23 @@ ModbusResponse::ModbusResponse(uint8_t slaveId, utils::MBFunctionCode functionCo
3030
}
3131
}
3232

33+
ModbusResponse::ModbusResponse(const ModbusResponse& reference) :
34+
_slaveID(reference.slaveID()),
35+
_functionCode(reference.functionCode()),
36+
_address(reference.registerAddress()),
37+
_registersNumber(reference.numberOfRegisters()),
38+
_values(reference.registerValues()){ }
39+
40+
41+
ModbusResponse& ModbusResponse::operator=(const ModbusResponse &reference) {
42+
this->_slaveID = reference.slaveID();
43+
this->_functionCode = reference.functionCode();
44+
this->_address = reference.registerAddress();
45+
this->_registersNumber = reference.numberOfRegisters();
46+
this->_values = reference.registerValues();
47+
return *this;
48+
}
49+
3350
ModbusResponse::ModbusResponse(std::vector<uint8_t> inputData, bool CRC) {
3451
try {
3552
if (inputData.size() < 3)

0 commit comments

Comments
 (0)