17 #define MAX_READ_COILS_COUNT 2000 22 #define MAX_READ_REGISTERS_COUNT 125 27 #define MAX_WRITE_COILS_COUNT 1968 32 #define MAX_WRITE_REGISTERS_COUNT 123 265 uint16_t num_discrete_inputs,
266 uint16_t num_holding_registers,
267 uint16_t num_input_registers);
284 uint16_t max_queued_requests);
542 void (*callback)(
Result,
void*),
560 const uint16_t *values,
579 const uint16_t *values,
581 void (*callback)(
Result,
void*),
610 void (*callback)(
Result,
void*),
639 void (*callback)(
Result,
void*),
void destroy_channel(Channel *channel)
Destroy a previously created channel instance.
Struct that bundles together the types needed to make requests on a channel.
Definition: rodbus.h:157
WriteSingleCallback_u16 write_single_register_cb
Definition: rodbus.h:186
uint16_t num_input_registers
Definition: rodbus.h:195
Runtime * runtime
Definition: rodbus.h:161
struct RuntimeConfig RuntimeConfig
Optional non-default configuration of the Tokio runtime.
Optional non-default configuration of the Tokio runtime.
Definition: rodbus.h:201
WriteMultipleCallback_bool write_multiple_coils
Definition: rodbus.h:187
Session build_session(Runtime *runtime, Channel *channel, uint8_t unit_id, uint32_t timeout_ms)
Convenience function to build a session struct.
void write_multiple_registers_cb(Session *session, uint16_t start, const uint16_t *values, uint16_t count, void(*callback)(Result, void *), void *user_data)
perform a non-blocking operation to write multiple registers
Handler * create_handler(Runtime *runtime, Sizes sizes, Callbacks callbacks, void *user_data)
void read_holding_registers_cb(Session *session, uint16_t start, uint16_t count, void(*callback)(Result, RegisterIterator *, void *), void *user_data)
perform a non-blocking operation to read holding registers
Channel * channel
Definition: rodbus.h:165
ServerHandle * create_server(Runtime *runtime, const char *address, uint8_t unit_id, Handler *handler)
struct ServerHandle ServerHandle
Definition: rodbus.h:150
bool(* WriteSingleCallback_u16)(uint16_t, uint16_t, void *)
Definition: rodbus.h:178
bool set_log_callback(void(*callback)(Level level, const char *message))
set the callback to invoke when an enabled level is logged
Result read_input_registers(Session *session, uint16_t start, uint16_t count, uint16_t *output)
perform a blocking operation to read input registers
void update_handler(Handler *handler, void *user_data, void(*callback)(Updater *, void *))
uint16_t num_discrete_inputs
Definition: rodbus.h:193
struct Callbacks Callbacks
struct Result Result
Type that describes the success or failure of an operation.
Result write_single_register(Session *session, uint16_t index, uint16_t value)
perform a blocking operation to write a single register
struct RegisterIterator RegisterIterator
Definition: rodbus.h:148
Result read_discrete_inputs(Session *session, uint16_t start, uint16_t count, bool *output)
perform a blocking operation to read discrete inputs
struct Runtime Runtime
Opaque pointer type for the Tokio runtime.
Definition: prelude.h:8
void destroy_runtime(Runtime *runtime)
Destroy a previously created runtime instance.
uint16_t num_core_threads
Definition: rodbus.h:206
void write_single_coil_cb(Session *session, uint16_t index, bool value, void(*callback)(Result, void *), void *user_data)
perform a non-blocking operation to write a single coil
void write_multiple_coils_cb(Session *session, uint16_t start, const bool *values, uint16_t count, void(*callback)(Result, void *), void *user_data)
perform a non-blocking operation to write multiple coils
Runtime * create_threaded_runtime(const RuntimeConfig *config)
create an instance of the multi-threaded work-stealing Tokio runtime
void destroy_handler(Handler *handler)
struct Handler Handler
Definition: rodbus.h:146
uint8_t exception
Definition: rodbus.h:231
WriteSingleCallback_bool write_single_coil_cb
Definition: rodbus.h:185
bool(* WriteMultipleCallback_u16)(const uint16_t *, uint16_t, uint16_t, void *)
Definition: rodbus.h:182
Channel * create_tcp_client(Runtime *runtime, const char *address, uint16_t max_queued_requests)
Create an instance of a TCP client channel.
uint16_t index
Definition: rodbus.h:216
Result read_holding_registers(Session *session, uint16_t start, uint16_t count, uint16_t *output)
perform a blocking operation to read holding registers
void set_max_level(Level level)
set the maximum log level
struct Session Session
Struct that bundles together the types needed to make requests on a channel.
Updater * acquire_updater(Handler *handler)
uint8_t unit_id
Definition: rodbus.h:169
struct Updater Updater
Definition: rodbus.h:152
Status status
Definition: rodbus.h:226
bool(* WriteMultipleCallback_bool)(const bool *, uint16_t, uint16_t, void *)
Definition: rodbus.h:180
void read_discrete_inputs_cb(Session *session, uint16_t start, uint16_t count, void(*callback)(Result, BitIterator *, void *), void *user_data)
perform a non-blocking operation to read discrete inputs
Exception
Definition: rodbus.h:37
Sizes create_sizes(uint16_t num_coils, uint16_t num_discrete_inputs, uint16_t num_holding_registers, uint16_t num_input_registers)
bool update_coil(Updater *updater, bool value, uint16_t index)
Status
Definition: rodbus.h:100
bool value
Definition: rodbus.h:210
uint16_t value
Definition: rodbus.h:215
void read_input_registers_cb(Session *session, uint16_t start, uint16_t count, void(*callback)(Result, RegisterIterator *, void *), void *user_data)
perform a non-blocking operation to read input registers
uint32_t timeout_ms
Definition: rodbus.h:173
uint16_t num_coils
Definition: rodbus.h:192
Result write_single_coil(Session *session, uint16_t index, bool value)
perform a blocking operation to write a single coil
bool get_next_register(RegisterIterator *iterator, Register *value)
retrieve the next register value and/or index from iterator
void read_coils_cb(Session *session, uint16_t start, uint16_t count, void(*callback)(Result, BitIterator *, void *), void *user_data)
perform a non-blocking operation to read coils
struct Channel Channel
Opaque pointer type for the Channel.
Definition: prelude.h:11
Result write_multiple_coils(Session *session, uint16_t start, const bool *values, uint16_t count)
perform a blocking operation to write multiple coils
void write_single_register_cb(Session *session, uint16_t index, uint16_t value, void(*callback)(Result, void *), void *user_data)
perform a non-blocking operation to write a single register
Level
Definition: rodbus.h:88
Callbacks create_callbacks(WriteSingleCallback_bool write_single_coil_cb, WriteSingleCallback_u16 write_single_register_cb, WriteMultipleCallback_bool write_multiple_coils, WriteMultipleCallback_u16 write_multiple_registers)
WriteMultipleCallback_u16 write_multiple_registers
Definition: rodbus.h:188
Result write_multiple_registers(Session *session, uint16_t start, const uint16_t *values, uint16_t count)
perform a blocking operation to write multiple registers
uint16_t index
Definition: rodbus.h:211
uint16_t num_holding_registers
Definition: rodbus.h:194
bool(* WriteSingleCallback_bool)(bool, uint16_t, void *)
Definition: rodbus.h:176
void destroy_server(ServerHandle *handle)
struct BitIterator BitIterator
Definition: rodbus.h:144
bool get_next_bit(BitIterator *iterator, Bit *value)
retrieve the next bit and/or index from iterator
void release_updater(Updater *updater)
Result read_coils(Session *session, uint16_t start, uint16_t count, bool *output)
perform a blocking operation to read coils
Type that describes the success or failure of an operation.
Definition: rodbus.h:222