Skip to content

Commit d1fe94a

Browse files
authored
Remove unneeded parameters. (#2272)
* remove no_resend_on_retry. * Default slave = 1. * remove retry_on_empty. * remove broadcast_enable.
1 parent 30e4aa7 commit d1fe94a

31 files changed

+115
-297
lines changed

API_changes.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ Versions (X.Y.Z) where Z > 0 e.g. 3.0.1 do NOT have API changes!
55

66
API changes 3.7.0
77
-----------------
8+
- default slave changed to 1 from 0 (which is broadcast).
9+
- broadcast_enable, retry_on_empty, no_resend_on_retry parameters removed.
810
- class method generate_ssl() added to TLS client (sync/async).
911
- removed certfile, keyfile, password from TLS client, please use generate_ssl()
1012
- on_reconnect_callback() removed from clients (sync/async).

doc/source/client.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,8 @@ The physical devices are addressed with the :mod:`slave=` parameter.
177177

178178
:mod:`slave=0` is used as broadcast in order to address all devices.
179179
However experience shows that modern devices do not allow broadcast, mostly because it is
180-
inheriently dangerous. With :mod:`slave=0` the application can get upto 254 responses on a single request!
180+
inheriently dangerous. With :mod:`slave=0` the application can get upto 254 responses on a single request,
181+
and this is not handled with the normal API calls!
181182

182183
The simple request calls (mixin) do NOT support broadcast, if an application wants to use broadcast
183184
it must call :mod:`client.execute` and deal with the responses.

examples/client_async.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,6 @@ def setup_async_client(description=None, cmdline=None):
6464
retries=3,
6565
reconnect_delay=1,
6666
reconnect_delay_max=10,
67-
# retry_on_empty=False,
68-
# TCP setup parameters
6967
# source_address=("localhost", 0),
7068
)
7169
elif args.comm == "udp":
@@ -76,7 +74,6 @@ def setup_async_client(description=None, cmdline=None):
7674
framer=args.framer,
7775
timeout=args.timeout,
7876
# retries=3,
79-
# retry_on_empty=False,
8077
# UDP setup parameters
8178
# source_address=None,
8279
)
@@ -87,7 +84,6 @@ def setup_async_client(description=None, cmdline=None):
8784
# framer=ModbusRtuFramer,
8885
timeout=args.timeout,
8986
# retries=3,
90-
# retry_on_empty=False,
9187
# Serial setup parameters
9288
baudrate=args.baudrate,
9389
# bytesize=8,
@@ -103,7 +99,6 @@ def setup_async_client(description=None, cmdline=None):
10399
framer=args.framer,
104100
timeout=args.timeout,
105101
# retries=3,
106-
# retry_on_empty=False,
107102
# TLS setup parameters
108103
sslctx=modbusClient.AsyncModbusTlsClient.generate_ssl(
109104
certfile=helper.get_certificate("crt"),

examples/client_custom_msg.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class CustomModbusResponse(ModbusResponse):
3636
function_code = 55
3737
_rtu_byte_count_pos = 2
3838

39-
def __init__(self, values=None, slave=0, transaction=0, protocol=0, skip_encode=False):
39+
def __init__(self, values=None, slave=1, transaction=0, protocol=0, skip_encode=False):
4040
"""Initialize."""
4141
ModbusResponse.__init__(self, slave, transaction, protocol, skip_encode)
4242
self.values = values or []
@@ -68,7 +68,7 @@ class CustomModbusRequest(ModbusRequest):
6868
function_code = 55
6969
_rtu_frame_size = 8
7070

71-
def __init__(self, address=None, slave=0, transaction=0, protocol=0, skip_encode=False):
71+
def __init__(self, address=None, slave=1, transaction=0, protocol=0, skip_encode=False):
7272
"""Initialize."""
7373
ModbusRequest.__init__(self, slave, transaction, protocol, skip_encode)
7474
self.address = address
@@ -100,7 +100,7 @@ def execute(self, context):
100100
class Read16CoilsRequest(ReadCoilsRequest):
101101
"""Read 16 coils in one request."""
102102

103-
def __init__(self, address, count=None, slave=0, transaction=0, protocol=0, skip_encode=False):
103+
def __init__(self, address, count=None, slave=1, transaction=0, protocol=0, skip_encode=False):
104104
"""Initialize a new instance.
105105
106106
:param address: The address to start reading from

examples/client_sync.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ def setup_sync_client(description=None, cmdline=None):
6767
framer=args.framer,
6868
timeout=args.timeout,
6969
# retries=3,
70-
# retry_on_empty=False,y
7170
# TCP setup parameters
7271
# source_address=("localhost", 0),
7372
)
@@ -79,7 +78,6 @@ def setup_sync_client(description=None, cmdline=None):
7978
framer=args.framer,
8079
timeout=args.timeout,
8180
# retries=3,
82-
# retry_on_empty=False,
8381
# UDP setup parameters
8482
# source_address=None,
8583
)
@@ -90,7 +88,6 @@ def setup_sync_client(description=None, cmdline=None):
9088
# framer=ModbusRtuFramer,
9189
timeout=args.timeout,
9290
# retries=3,
93-
# retry_on_empty=False,
9491
# Serial setup parameters
9592
baudrate=args.baudrate,
9693
# bytesize=8,
@@ -106,7 +103,6 @@ def setup_sync_client(description=None, cmdline=None):
106103
framer=args.framer,
107104
timeout=args.timeout,
108105
# retries=3,
109-
# retry_on_empty=False,
110106
# TLS setup parameters
111107
sslctx=modbusClient.ModbusTlsClient.generate_ssl(
112108
certfile=helper.get_certificate("crt"),

examples/contrib/solar.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ def main():
3131
# Common optional parameters:
3232
framer=ModbusSocketFramer,
3333
timeout=1,
34-
retry_on_empty=True,
3534
)
3635
client.connect()
3736
_logger.info("### Client connected")

examples/package_test_tool.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ async def client_calls(client):
207207
"""Test client API."""
208208
Log.debug("--> Client calls starting.")
209209
try:
210-
resp = await client.read_holding_registers(address=124, count=4, slave=0)
210+
resp = await client.read_holding_registers(address=124, count=4, slave=1)
211211
except ModbusException as exc:
212212
txt = f"ERROR: exception in pymodbus {exc}"
213213
Log.error(txt)

examples/simple_async_client.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ async def run_async_simple_client(comm, host, port, framer=FramerType.SOCKET):
3333
framer=framer,
3434
# timeout=10,
3535
# retries=3,
36-
# retry_on_empty=False,
3736
# source_address=("localhost", 0),
3837
)
3938
elif comm == "udp":
@@ -43,7 +42,6 @@ async def run_async_simple_client(comm, host, port, framer=FramerType.SOCKET):
4342
framer=framer,
4443
# timeout=10,
4544
# retries=3,
46-
# retry_on_empty=False,
4745
# source_address=None,
4846
)
4947
elif comm == "serial":
@@ -52,7 +50,6 @@ async def run_async_simple_client(comm, host, port, framer=FramerType.SOCKET):
5250
framer=framer,
5351
# timeout=10,
5452
# retries=3,
55-
# retry_on_empty=False,
5653
baudrate=9600,
5754
bytesize=8,
5855
parity="N",

examples/simple_sync_client.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ def run_sync_simple_client(comm, host, port, framer=FramerType.SOCKET):
3535
framer=framer,
3636
# timeout=10,
3737
# retries=3,
38-
# retry_on_empty=False,y
3938
# source_address=("localhost", 0),
4039
)
4140
elif comm == "udp":
@@ -45,7 +44,6 @@ def run_sync_simple_client(comm, host, port, framer=FramerType.SOCKET):
4544
framer=framer,
4645
# timeout=10,
4746
# retries=3,
48-
# retry_on_empty=False,
4947
# source_address=None,
5048
)
5149
elif comm == "serial":
@@ -54,7 +52,6 @@ def run_sync_simple_client(comm, host, port, framer=FramerType.SOCKET):
5452
framer=framer,
5553
# timeout=10,
5654
# retries=3,
57-
# retry_on_empty=False,
5855
baudrate=9600,
5956
bytesize=8,
6057
parity="N",

pymodbus/client/base.py

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,6 @@ def __init__(
2929
self,
3030
framer: FramerType,
3131
retries: int,
32-
retry_on_empty: bool,
33-
broadcast_enable: bool,
34-
no_resend_on_retry: bool,
3532
on_connect_callback: Callable[[bool], None] | None,
3633
comm_params: CommParams | None = None,
3734
) -> None:
@@ -40,14 +37,11 @@ def __init__(
4037
if comm_params:
4138
self.comm_params = comm_params
4239
self.retries = retries
43-
self.retry_on_empty = retry_on_empty
4440
self.ctx = ModbusClientProtocol(
4541
framer,
4642
self.comm_params,
4743
on_connect_callback,
4844
)
49-
self.no_resend_on_retry = no_resend_on_retry
50-
self.broadcast_enable = broadcast_enable
5145

5246
# Common variables.
5347
self.use_udp = False
@@ -119,10 +113,9 @@ async def async_execute(self, request) -> ModbusResponse:
119113
while count <= self.retries:
120114
async with self._lock:
121115
req = self.build_response(request)
122-
if not count or not self.no_resend_on_retry:
123-
self.ctx.framer.resetFrame()
124-
self.ctx.send(packet)
125-
if self.broadcast_enable and not request.slave_id:
116+
self.ctx.framer.resetFrame()
117+
self.ctx.send(packet)
118+
if not request.slave_id:
126119
resp = None
127120
break
128121
try:
@@ -184,19 +177,13 @@ def __init__(
184177
self,
185178
framer: FramerType,
186179
retries: int,
187-
retry_on_empty: bool,
188-
broadcast_enable: bool,
189-
no_resend_on_retry: bool,
190180
comm_params: CommParams | None = None,
191181
) -> None:
192182
"""Initialize a client instance."""
193183
ModbusClientMixin.__init__(self) # type: ignore[arg-type]
194184
if comm_params:
195185
self.comm_params = comm_params
196186
self.retries = retries
197-
self.broadcast_enable = bool(broadcast_enable)
198-
self.retry_on_empty = retry_on_empty
199-
self.no_resend_on_retry = no_resend_on_retry
200187
self.slaves: list[int] = []
201188

202189
# Common variables.
@@ -205,7 +192,6 @@ def __init__(
205192
)(ClientDecoder(), self)
206193
self.transaction = SyncModbusTransactionManager(
207194
self,
208-
retry_on_empty,
209195
self.retries,
210196
)
211197
self.reconnect_delay_current = self.comm_params.reconnect_delay or 0

0 commit comments

Comments
 (0)