Skip to content

Commit 66d3d64

Browse files
committed
Streamline message class. (#2133)
1 parent 059a1b6 commit 66d3d64

File tree

14 files changed

+32
-43
lines changed

14 files changed

+32
-43
lines changed

pymodbus/framer/ascii_framer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def __init__(self, decoder, client=None):
3939
self._hsize = 0x02
4040
self._start = b":"
4141
self._end = b"\r\n"
42-
self.message_handler = MessageAscii([0], True)
42+
self.message_handler = MessageAscii()
4343

4444
def decode_data(self, data):
4545
"""Decode data."""

pymodbus/framer/rtu_framer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def __init__(self, decoder, client=None):
6161
self._end = b"\x0d\x0a"
6262
self._min_frame_size = 4
6363
self.function_codes = decoder.lookup.keys() if decoder else {}
64-
self.message_handler = MessageRTU([0], True)
64+
self.message_handler = MessageRTU()
6565

6666
def decode_data(self, data):
6767
"""Decode data."""

pymodbus/framer/socket_framer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def __init__(self, decoder, client=None):
4343
"""
4444
super().__init__(decoder, client)
4545
self._hsize = 0x07
46-
self.message_handler = MessageSocket([0], True)
46+
self.message_handler = MessageSocket()
4747

4848
def decode_data(self, data):
4949
"""Decode data."""

pymodbus/framer/tls_framer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def __init__(self, decoder, client=None):
3535
"""
3636
super().__init__(decoder, client)
3737
self._hsize = 0x0
38-
self.message_handler = MessageTLS([0], True)
38+
self.message_handler = MessageTLS()
3939

4040
def decode_data(self, data):
4141
"""Decode data."""

pymodbus/message/base.py

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,9 @@ class MessageBase:
1414

1515
EMPTY = b''
1616

17-
def __init__(
18-
self,
19-
device_ids: list[int],
20-
is_server: bool,
21-
) -> None:
22-
"""Initialize a message instance.
23-
24-
:param device_ids: list of device id to accept (server only), None for all.
25-
"""
26-
self.device_ids = device_ids
27-
self.is_server = is_server
28-
self.broadcast: bool = (0 in device_ids)
29-
17+
def __init__(self) -> None:
18+
"""Initialize a message instance."""
3019

31-
def validate_device_id(self, dev_id: int) -> bool:
32-
"""Check if device id is expected."""
33-
return self.broadcast or (dev_id in self.device_ids)
3420

3521
@abstractmethod
3622
def decode(self, _data: bytes) -> tuple[int, int, int, bytes]:

pymodbus/message/message.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,15 +65,21 @@ def __init__(self,
6565
"""
6666
super().__init__(params, is_server)
6767
self.device_ids = device_ids
68-
self.message_type = message_type
68+
self.broadcast: bool = (0 in device_ids)
6969
self.msg_handle: MessageBase = {
70-
MessageType.RAW: MessageRaw(device_ids, is_server),
71-
MessageType.ASCII: MessageAscii(device_ids, is_server),
72-
MessageType.RTU: MessageRTU(device_ids, is_server),
73-
MessageType.SOCKET: MessageSocket(device_ids, is_server),
74-
MessageType.TLS: MessageTLS(device_ids, is_server),
70+
MessageType.RAW: MessageRaw(),
71+
MessageType.ASCII: MessageAscii(),
72+
MessageType.RTU: MessageRTU(),
73+
MessageType.SOCKET: MessageSocket(),
74+
MessageType.TLS: MessageTLS(),
7575
}[message_type]
7676

77+
78+
def validate_device_id(self, dev_id: int) -> bool:
79+
"""Check if device id is expected."""
80+
return self.broadcast or (dev_id in self.device_ids)
81+
82+
7783
def callback_data(self, data: bytes, addr: tuple | None = None) -> int:
7884
"""Handle received data."""
7985
tot_len = len(data)

pymodbus/message/raw.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,6 @@ def decode(self, data: bytes) -> tuple[int, int, int, bytes]:
2323
return 0, 0, 0, self.EMPTY
2424
dev_id = int(data[0])
2525
tid = int(data[1])
26-
if not self.validate_device_id(dev_id):
27-
Log.debug("Device id: {} in frame {} unknown, skipping.", dev_id, data, ":hex")
28-
2926
return len(data), dev_id, tid, data[2:]
3027

3128
def encode(self, data: bytes, device_id: int, tid: int) -> bytes:

pymodbus/message/rtu.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ def callback(result):
177177
nonlocal resp
178178
resp = result
179179

180-
self._legacy_decode(callback, self.device_ids)
180+
self._legacy_decode(callback, [0])
181181
return 0, 0, 0, b''
182182

183183

test/message/conftest.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ def __init__(self,
2121
"""Initialize a message instance."""
2222
super().__init__(message_type, params, is_server, device_ids)
2323
self.send = mock.Mock()
24+
self.message_type = message_type
2425

2526
def callback_new_connection(self) -> ModbusProtocol:
2627
"""Call when listener receive new connection request."""

test/message/test_ascii.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class TestMessageAscii:
1111
@pytest.fixture(name="frame")
1212
def prepare_frame():
1313
"""Return message object."""
14-
return MessageAscii([1], False)
14+
return MessageAscii()
1515

1616

1717
@pytest.mark.parametrize(

0 commit comments

Comments
 (0)