11#ifndef MODDEF_TRANSPORT_HPP
12#define MODDEF_TRANSPORT_HPP
20#include "moddef/transport.h"
37 std::span<const std::uint16_t> words) = 0;
44 return r ? MD_OK :
to_c(r.error());
47inline md_err_t
c_read_holding(
void* ctx, std::uint16_t off, std::uint16_t n, std::uint16_t* out) {
50inline md_err_t
c_read_input(
void* ctx, std::uint16_t off, std::uint16_t n, std::uint16_t* out) {
53inline md_err_t
c_read_coils(
void* ctx, std::uint16_t off, std::uint16_t n,
bool* out) {
56inline md_err_t
c_read_discrete(
void* ctx, std::uint16_t off, std::uint16_t n,
bool* out) {
60 const std::uint16_t* w) {
63inline md_err_t
c_write_coil(
void* ctx, std::uint16_t off,
bool on) {
Blocking register-level transport.
Definition transport.hpp:28
virtual ~Transport()=default
virtual Result< void > write_holding(std::uint16_t offset, std::span< const std::uint16_t > words)=0
virtual Result< void > read_holding(std::uint16_t offset, std::span< std::uint16_t > out)=0
virtual Result< void > read_discrete(std::uint16_t offset, std::span< bool > out)=0
virtual Result< void > read_input(std::uint16_t offset, std::span< std::uint16_t > out)=0
virtual Result< void > write_coil(std::uint16_t offset, bool on)=0
virtual Result< void > read_coils(std::uint16_t offset, std::span< bool > out)=0
Error type and Result<T> (spec §26.3/§26.4, §32).
md_err_t c_read_input(void *ctx, std::uint16_t off, std::uint16_t n, std::uint16_t *out)
Definition transport.hpp:50
md_err_t c_read_holding(void *ctx, std::uint16_t off, std::uint16_t n, std::uint16_t *out)
Definition transport.hpp:47
md_err_t c_write_coil(void *ctx, std::uint16_t off, bool on)
Definition transport.hpp:63
md_err_t c_read_coils(void *ctx, std::uint16_t off, std::uint16_t n, bool *out)
Definition transport.hpp:53
md_err_t c_read_discrete(void *ctx, std::uint16_t off, std::uint16_t n, bool *out)
Definition transport.hpp:56
md_err_t c_write_holding(void *ctx, std::uint16_t off, std::uint16_t n, const std::uint16_t *w)
Definition transport.hpp:59
md_transport_t bind(Transport &t) noexcept
Definition transport.hpp:68
md_err_t status_of(const Result< void > &r) noexcept
Definition transport.hpp:43
std::expected< T, Error > Result
The canonical result type across the API; Result<void> for actions.
Definition error.hpp:53
md_err_t to_c(Error e) noexcept
Definition error.hpp:47