blob: 79955a01d867736653c43b989042130808867021 [file] [log] [blame]
Jagpal Singh Gilla32d2412025-10-01 14:55:05 -07001#pragma once
2
3#include "modbus/modbus_message.hpp"
4
5#include <sdbusplus/async.hpp>
6
7using MessageBase = phosphor::modbus::rtu::Message;
8
9namespace phosphor::modbus::test
10{
11
12class MessageIntf : public MessageBase
13{
14 friend class ServerTester;
15};
16
17static constexpr uint8_t testDeviceAddress = 0xa;
18constexpr uint16_t testSuccessReadHoldingRegisterOffset = 0x0102;
19constexpr uint16_t testSuccessReadHoldingRegisterCount = 0x2;
20constexpr uint16_t testSuccessReadHoldingRegisterSegmentedOffset = 0x0103;
21constexpr std::array<uint16_t, testSuccessReadHoldingRegisterCount>
22 testSuccessReadHoldingRegisterResponse = {0x1234, 0x5678};
23constexpr uint16_t testFailureReadHoldingRegister = 0x0105;
24
25class ServerTester
26{
27 public:
28 explicit ServerTester(sdbusplus::async::context& ctx, int fd);
29
30 auto processRequests() -> sdbusplus::async::task<void>;
31
32 private:
33 void processMessage(MessageIntf& request, size_t requestSize,
34 MessageIntf& response, bool& segmentedResponse);
35
36 void processReadHoldingRegisters(MessageIntf& request, size_t requestSize,
37 MessageIntf& response,
38 bool& segmentedResponse);
39
40 int fd;
41 sdbusplus::async::fdio fdioInstance;
42};
43} // namespace phosphor::modbus::test