Skip to content

Commit b2c28ac

Browse files
authored
Clean framer/__init__.py (#1494)
1 parent 2f12b4e commit b2c28ac

File tree

8 files changed

+82
-74
lines changed

8 files changed

+82
-74
lines changed

doc/source/library/framer.rst

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,3 @@ pymodbus\.framer\.socket_framer module
3232
:members:
3333
:undoc-members:
3434
:show-inheritance:
35-
36-
37-
Module contents
38-
---------------
39-
40-
.. automodule:: pymodbus.framer
41-
:members:
42-
:undoc-members:
43-
:show-inheritance:

pymodbus/framer/__init__.py

Lines changed: 17 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,17 @@
1-
"""Framer start."""
2-
# pylint: disable=missing-type-doc
3-
4-
5-
# Unit ID, Function Code
6-
BYTE_ORDER = ">"
7-
FRAME_HEADER = "BB"
8-
9-
# Transaction Id, Protocol ID, Length, Unit ID, Function Code
10-
SOCKET_FRAME_HEADER = BYTE_ORDER + "HHH" + FRAME_HEADER
11-
12-
# Function Code
13-
TLS_FRAME_HEADER = BYTE_ORDER + "B"
14-
15-
16-
class ModbusFramer:
17-
"""Base Framer class."""
18-
19-
name = ""
20-
21-
def __init__(self, decoder, client=None):
22-
"""Initialize a new instance of the framer.
23-
24-
:param decoder: The decoder implementation to use
25-
"""
26-
self.decoder = decoder
27-
self.client = client
28-
29-
def _validate_slave_id(self, slaves, single):
30-
"""Validate if the received data is valid for the client.
31-
32-
:param slaves: list of slave id for which the transaction is valid
33-
:param single: Set to true to treat this as a single context
34-
:return:
35-
"""
36-
if single:
37-
return True
38-
if 0 in slaves or 0xFF in slaves:
39-
# Handle Modbus TCP slave identifier (0x00 0r 0xFF)
40-
# in asynchronous requests
41-
return True
42-
return self._header["uid"] in slaves # pylint: disable=no-member
43-
44-
def sendPacket(self, message):
45-
"""Send packets on the bus.
46-
47-
With 3.5char delay between frames
48-
:param message: Message to be sent over the bus
49-
:return:
50-
"""
51-
return self.client.send(message)
52-
53-
def recvPacket(self, size):
54-
"""Receive packet from the bus.
55-
56-
With specified len
57-
:param size: Number of bytes to read
58-
:return:
59-
"""
60-
return self.client.recv(size)
1+
"""Framer"""
2+
3+
__all__ = [
4+
"ModbusFramer",
5+
"ModbusAsciiFramer",
6+
"ModbusBinaryFramer",
7+
"ModbusRtuFramer",
8+
"ModbusSocketFramer",
9+
"ModbusTlsFramer",
10+
]
11+
12+
from pymodbus.framer.ascii_framer import ModbusAsciiFramer
13+
from pymodbus.framer.base import ModbusFramer
14+
from pymodbus.framer.binary_framer import ModbusBinaryFramer
15+
from pymodbus.framer.rtu_framer import ModbusRtuFramer
16+
from pymodbus.framer.socket_framer import ModbusSocketFramer
17+
from pymodbus.framer.tls_framer import ModbusTlsFramer

pymodbus/framer/ascii_framer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from binascii import a2b_hex, b2a_hex
55

66
from pymodbus.exceptions import ModbusIOException
7-
from pymodbus.framer import BYTE_ORDER, FRAME_HEADER, ModbusFramer
7+
from pymodbus.framer.base import BYTE_ORDER, FRAME_HEADER, ModbusFramer
88
from pymodbus.logging import Log
99
from pymodbus.utilities import checkLRC, computeLRC
1010

pymodbus/framer/base.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
"""Framer start."""
2+
# pylint: disable=missing-type-doc
3+
4+
5+
# Unit ID, Function Code
6+
BYTE_ORDER = ">"
7+
FRAME_HEADER = "BB"
8+
9+
# Transaction Id, Protocol ID, Length, Unit ID, Function Code
10+
SOCKET_FRAME_HEADER = BYTE_ORDER + "HHH" + FRAME_HEADER
11+
12+
# Function Code
13+
TLS_FRAME_HEADER = BYTE_ORDER + "B"
14+
15+
16+
class ModbusFramer:
17+
"""Base Framer class."""
18+
19+
name = ""
20+
21+
def __init__(self, decoder, client=None):
22+
"""Initialize a new instance of the framer.
23+
24+
:param decoder: The decoder implementation to use
25+
"""
26+
self.decoder = decoder
27+
self.client = client
28+
29+
def _validate_slave_id(self, slaves, single):
30+
"""Validate if the received data is valid for the client.
31+
32+
:param slaves: list of slave id for which the transaction is valid
33+
:param single: Set to true to treat this as a single context
34+
:return:
35+
"""
36+
if single:
37+
return True
38+
if 0 in slaves or 0xFF in slaves:
39+
# Handle Modbus TCP slave identifier (0x00 0r 0xFF)
40+
# in asynchronous requests
41+
return True
42+
return self._header["uid"] in slaves # pylint: disable=no-member
43+
44+
def sendPacket(self, message):
45+
"""Send packets on the bus.
46+
47+
With 3.5char delay between frames
48+
:param message: Message to be sent over the bus
49+
:return:
50+
"""
51+
return self.client.send(message)
52+
53+
def recvPacket(self, size):
54+
"""Receive packet from the bus.
55+
56+
With specified len
57+
:param size: Number of bytes to read
58+
:return:
59+
"""
60+
return self.client.recv(size)

pymodbus/framer/binary_framer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import struct
44

55
from pymodbus.exceptions import ModbusIOException
6-
from pymodbus.framer import BYTE_ORDER, FRAME_HEADER, ModbusFramer
6+
from pymodbus.framer.base import BYTE_ORDER, FRAME_HEADER, ModbusFramer
77
from pymodbus.logging import Log
88
from pymodbus.utilities import checkCRC, computeCRC
99

pymodbus/framer/rtu_framer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
InvalidMessageReceivedException,
88
ModbusIOException,
99
)
10-
from pymodbus.framer import BYTE_ORDER, FRAME_HEADER, ModbusFramer
10+
from pymodbus.framer.base import BYTE_ORDER, FRAME_HEADER, ModbusFramer
1111
from pymodbus.logging import Log
1212
from pymodbus.utilities import ModbusTransactionState, checkCRC, computeCRC
1313

pymodbus/framer/socket_framer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
InvalidMessageReceivedException,
77
ModbusIOException,
88
)
9-
from pymodbus.framer import SOCKET_FRAME_HEADER, ModbusFramer
9+
from pymodbus.framer.base import SOCKET_FRAME_HEADER, ModbusFramer
1010
from pymodbus.logging import Log
1111

1212

pymodbus/framer/tls_framer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
InvalidMessageReceivedException,
77
ModbusIOException,
88
)
9-
from pymodbus.framer import TLS_FRAME_HEADER, ModbusFramer
9+
from pymodbus.framer.base import TLS_FRAME_HEADER, ModbusFramer
1010
from pymodbus.logging import Log
1111

1212

0 commit comments

Comments
 (0)