1*a32d241bSJagpal Singh Gill #pragma once 2*a32d241bSJagpal Singh Gill 3*a32d241bSJagpal Singh Gill #include <sdbusplus/async.hpp> 4*a32d241bSJagpal Singh Gill 5*a32d241bSJagpal Singh Gill namespace phosphor::modbus::rtu 6*a32d241bSJagpal Singh Gill { 7*a32d241bSJagpal Singh Gill 8*a32d241bSJagpal Singh Gill class Message; 9*a32d241bSJagpal Singh Gill 10*a32d241bSJagpal Singh Gill enum class Parity 11*a32d241bSJagpal Singh Gill { 12*a32d241bSJagpal Singh Gill odd, 13*a32d241bSJagpal Singh Gill even, 14*a32d241bSJagpal Singh Gill none, 15*a32d241bSJagpal Singh Gill unknown 16*a32d241bSJagpal Singh Gill }; 17*a32d241bSJagpal Singh Gill 18*a32d241bSJagpal Singh Gill class Modbus 19*a32d241bSJagpal Singh Gill { 20*a32d241bSJagpal Singh Gill public: 21*a32d241bSJagpal Singh Gill explicit Modbus(sdbusplus::async::context& ctx, int fd, uint32_t baudRate, 22*a32d241bSJagpal Singh Gill uint16_t rtsDelay); 23*a32d241bSJagpal Singh Gill 24*a32d241bSJagpal Singh Gill auto setProperties(uint32_t inBaudRate, Parity inParity) -> bool; 25*a32d241bSJagpal Singh Gill 26*a32d241bSJagpal Singh Gill auto readHoldingRegisters(uint8_t deviceAddress, uint16_t registerOffset, 27*a32d241bSJagpal Singh Gill std::vector<uint16_t>& registers) 28*a32d241bSJagpal Singh Gill -> sdbusplus::async::task<bool>; 29*a32d241bSJagpal Singh Gill 30*a32d241bSJagpal Singh Gill private: 31*a32d241bSJagpal Singh Gill auto writeRequest(uint8_t deviceAddress, Message& request) 32*a32d241bSJagpal Singh Gill -> sdbusplus::async::task<bool>; 33*a32d241bSJagpal Singh Gill 34*a32d241bSJagpal Singh Gill auto readResponse(uint8_t deviceAddress, Message& response, 35*a32d241bSJagpal Singh Gill uint8_t expectedResponseCode) 36*a32d241bSJagpal Singh Gill -> sdbusplus::async::task<bool>; 37*a32d241bSJagpal Singh Gill 38*a32d241bSJagpal Singh Gill sdbusplus::async::context& ctx; 39*a32d241bSJagpal Singh Gill int fd; 40*a32d241bSJagpal Singh Gill uint16_t rtsDelay; 41*a32d241bSJagpal Singh Gill uint32_t baudRate = 0; 42*a32d241bSJagpal Singh Gill Parity parity = Parity::odd; 43*a32d241bSJagpal Singh Gill sdbusplus::async::fdio fdioInstance; 44*a32d241bSJagpal Singh Gill }; 45*a32d241bSJagpal Singh Gill 46*a32d241bSJagpal Singh Gill } // namespace phosphor::modbus::rtu 47