diff --git a/NEWS b/NEWS index 21c291b..e800991 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,7 @@ libmodbus 2.9.2 (2010-10-XX) ============================ +- Fix setting of the broadcast address - Remove slave argument from modbus_new_rtu() - Win32 support by Tobias Doerffel - Split source code around RTU and TCP (backends) diff --git a/src/modbus-rtu.c b/src/modbus-rtu.c index 27be1f1..48747b9 100644 --- a/src/modbus-rtu.c +++ b/src/modbus-rtu.c @@ -92,7 +92,8 @@ static const uint8_t table_crc_lo[] = { * internal slave ID in slave mode */ static int _modbus_set_slave(modbus_t *ctx, int slave) { - if (slave >= 1 && slave <= 247) { + /* Broadcast address is 0 (MODBUS_BROADCAST_ADDRESS) */ + if (slave >= 0 && slave <= 247) { ctx->slave = slave; } else { errno = EINVAL; diff --git a/src/modbus-tcp.c b/src/modbus-tcp.c index af26b9b..69c7024 100644 --- a/src/modbus-tcp.c +++ b/src/modbus-tcp.c @@ -72,7 +72,8 @@ static int _modbus_tcp_init_win32(void) static int _modbus_set_slave(modbus_t *ctx, int slave) { - if (slave >= 1 && slave <= 247) { + /* Broadcast address is 0 (MODBUS_BROADCAST_ADDRESS) */ + if (slave >= 0 && slave <= 247) { ctx->slave = slave; } else if (slave == MODBUS_TCP_SLAVE) { /* The special value MODBUS_TCP_SLAVE (0xFF) can be used in TCP mode to