diff --git a/doc/modbus_write_register.txt b/doc/modbus_write_register.txt index d2fab0f..781b3af 100644 --- a/doc/modbus_write_register.txt +++ b/doc/modbus_write_register.txt @@ -9,7 +9,7 @@ modbus_write_register - write a single register SYNOPSIS -------- -*int modbus_write_register(modbus_t *'ctx', int 'addr', int 'value');* +*int modbus_write_register(modbus_t *'ctx', int 'addr', const uint16_t 'value');* DESCRIPTION diff --git a/src/modbus.c b/src/modbus.c index 011c4c3..8c8fc55 100644 --- a/src/modbus.c +++ b/src/modbus.c @@ -1238,7 +1238,7 @@ int modbus_read_input_registers(modbus_t *ctx, int addr, int nb, /* Write a value to the specified register of the remote device. Used by write_bit and write_register */ -static int write_single(modbus_t *ctx, int function, int addr, int value) +static int write_single(modbus_t *ctx, int function, int addr, const uint16_t value) { int rc; int req_length; @@ -1249,7 +1249,7 @@ static int write_single(modbus_t *ctx, int function, int addr, int value) return -1; } - req_length = ctx->backend->build_request_basis(ctx, function, addr, value, req); + req_length = ctx->backend->build_request_basis(ctx, function, addr, (int) value, req); rc = send_msg(ctx, req, req_length); if (rc > 0) { @@ -1279,7 +1279,7 @@ int modbus_write_bit(modbus_t *ctx, int addr, int status) } /* Writes a value in one register of the remote device */ -int modbus_write_register(modbus_t *ctx, int addr, int value) +int modbus_write_register(modbus_t *ctx, int addr, const uint16_t value) { if (ctx == NULL) { errno = EINVAL; diff --git a/src/modbus.h b/src/modbus.h index eb28fad..fbe20bc 100644 --- a/src/modbus.h +++ b/src/modbus.h @@ -208,7 +208,7 @@ MODBUS_API int modbus_read_input_bits(modbus_t *ctx, int addr, int nb, uint8_t * MODBUS_API int modbus_read_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest); MODBUS_API int modbus_read_input_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest); MODBUS_API int modbus_write_bit(modbus_t *ctx, int coil_addr, int status); -MODBUS_API int modbus_write_register(modbus_t *ctx, int reg_addr, int value); +MODBUS_API int modbus_write_register(modbus_t *ctx, int reg_addr, const uint16_t value); MODBUS_API int modbus_write_bits(modbus_t *ctx, int addr, int nb, const uint8_t *data); MODBUS_API int modbus_write_registers(modbus_t *ctx, int addr, int nb, const uint16_t *data); MODBUS_API int modbus_mask_write_register(modbus_t *ctx, int addr, uint16_t and_mask, uint16_t or_mask);