Explorar o código

Fix to allow the setting of the broadcast address

Stéphane Raimbault %!s(int64=14) %!d(string=hai) anos
pai
achega
ddbd7266be
Modificáronse 3 ficheiros con 5 adicións e 2 borrados
  1. 1 0
      NEWS
  2. 2 1
      src/modbus-rtu.c
  3. 2 1
      src/modbus-tcp.c

+ 1 - 0
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)

+ 2 - 1
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;

+ 2 - 1
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