moddef-c
Loading...
Searching...
No Matches
transport.h
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2
3/* Transport abstraction (spec §32.3): blocking register-level access as a
4 * table of function pointers — adapt to your HAL / Modbus stack / RTOS.
5 *
6 * `offset` is the zero-based data-model offset within the address space
7 * (spec §7.2); implementations apply any unit/base-address mapping. Return
8 * MD_OK or MD_ERR_TRANSPORT (a device exception answer is also
9 * MD_ERR_TRANSPORT at this layer). One in-flight request per transport is
10 * the caller's discipline — Modbus is a serial request/response channel. */
11#ifndef MODDEF_TRANSPORT_H
12#define MODDEF_TRANSPORT_H
13
14#include <stdbool.h>
15#include <stdint.h>
16
17#include "moddef/err.h"
18
19typedef struct md_transport {
20 void *ctx;
21 md_err_t (*read_holding)(void *ctx, uint16_t offset, uint16_t count, uint16_t *out);
22 md_err_t (*read_input)(void *ctx, uint16_t offset, uint16_t count, uint16_t *out);
23 md_err_t (*read_coils)(void *ctx, uint16_t offset, uint16_t count, bool *out);
24 md_err_t (*read_discrete)(void *ctx, uint16_t offset, uint16_t count, bool *out);
25 md_err_t (*write_holding)(void *ctx, uint16_t offset, uint16_t count,
26 const uint16_t *words);
27 md_err_t (*write_coil)(void *ctx, uint16_t offset, bool on);
29
30#endif /* MODDEF_TRANSPORT_H */
enum md_err md_err_t
Definition transport.h:19
md_err_t(* read_discrete)(void *ctx, uint16_t offset, uint16_t count, bool *out)
Definition transport.h:24
md_err_t(* read_input)(void *ctx, uint16_t offset, uint16_t count, uint16_t *out)
Definition transport.h:22
md_err_t(* read_holding)(void *ctx, uint16_t offset, uint16_t count, uint16_t *out)
Definition transport.h:21
void * ctx
Definition transport.h:20
md_err_t(* write_holding)(void *ctx, uint16_t offset, uint16_t count, const uint16_t *words)
Definition transport.h:25
md_err_t(* read_coils)(void *ctx, uint16_t offset, uint16_t count, bool *out)
Definition transport.h:23
md_err_t(* write_coil)(void *ctx, uint16_t offset, bool on)
Definition transport.h:27
struct md_transport md_transport_t