1212# pylint: disable=missing-type-doc
1313from collections .abc import Callable
1414
15- from pymodbus .bit_read_message import (
16- ReadCoilsRequest ,
17- ReadCoilsResponse ,
18- ReadDiscreteInputsRequest ,
19- ReadDiscreteInputsResponse ,
20- )
21- from pymodbus .bit_write_message import (
22- WriteMultipleCoilsRequest ,
23- WriteMultipleCoilsResponse ,
24- WriteSingleCoilRequest ,
25- WriteSingleCoilResponse ,
26- )
27- from pymodbus .diag_message import (
28- ChangeAsciiInputDelimiterRequest ,
29- ChangeAsciiInputDelimiterResponse ,
30- ClearCountersRequest ,
31- ClearCountersResponse ,
32- ClearOverrunCountRequest ,
33- ClearOverrunCountResponse ,
34- DiagnosticStatusRequest ,
35- DiagnosticStatusResponse ,
36- ForceListenOnlyModeRequest ,
37- ForceListenOnlyModeResponse ,
38- GetClearModbusPlusRequest ,
39- GetClearModbusPlusResponse ,
40- RestartCommunicationsOptionRequest ,
41- RestartCommunicationsOptionResponse ,
42- ReturnBusCommunicationErrorCountRequest ,
43- ReturnBusCommunicationErrorCountResponse ,
44- ReturnBusExceptionErrorCountRequest ,
45- ReturnBusExceptionErrorCountResponse ,
46- ReturnBusMessageCountRequest ,
47- ReturnBusMessageCountResponse ,
48- ReturnDiagnosticRegisterRequest ,
49- ReturnDiagnosticRegisterResponse ,
50- ReturnIopOverrunCountRequest ,
51- ReturnIopOverrunCountResponse ,
52- ReturnQueryDataRequest ,
53- ReturnQueryDataResponse ,
54- ReturnSlaveBusCharacterOverrunCountRequest ,
55- ReturnSlaveBusCharacterOverrunCountResponse ,
56- ReturnSlaveBusyCountRequest ,
57- ReturnSlaveBusyCountResponse ,
58- ReturnSlaveMessageCountRequest ,
59- ReturnSlaveMessageCountResponse ,
60- ReturnSlaveNAKCountRequest ,
61- ReturnSlaveNAKCountResponse ,
62- ReturnSlaveNoResponseCountRequest ,
63- ReturnSlaveNoResponseCountResponse ,
64- )
15+ from pymodbus import bit_read_message as bit_r_msg
16+ from pymodbus import bit_write_message as bit_w_msg
17+ from pymodbus import diag_message as diag_msg
18+ from pymodbus import file_message as file_msg
19+ from pymodbus import mei_message as mei_msg
20+ from pymodbus import other_message as o_msg
21+ from pymodbus import pdu
22+ from pymodbus import register_read_message as reg_r_msg
23+ from pymodbus import register_write_message as reg_w_msg
6524from pymodbus .exceptions import MessageRegisterException , ModbusException
66- from pymodbus .file_message import (
67- ReadFifoQueueRequest ,
68- ReadFifoQueueResponse ,
69- ReadFileRecordRequest ,
70- ReadFileRecordResponse ,
71- WriteFileRecordRequest ,
72- WriteFileRecordResponse ,
73- )
7425from pymodbus .logging import Log
75- from pymodbus .mei_message import (
76- ReadDeviceInformationRequest ,
77- ReadDeviceInformationResponse ,
78- )
79- from pymodbus .other_message import (
80- GetCommEventCounterRequest ,
81- GetCommEventCounterResponse ,
82- GetCommEventLogRequest ,
83- GetCommEventLogResponse ,
84- ReadExceptionStatusRequest ,
85- ReadExceptionStatusResponse ,
86- ReportSlaveIdRequest ,
87- ReportSlaveIdResponse ,
88- )
89- from pymodbus .pdu import (
90- ExceptionResponse ,
91- IllegalFunctionRequest ,
92- ModbusRequest ,
93- ModbusResponse ,
94- )
95- from pymodbus .pdu import ModbusExceptions as ecode
96- from pymodbus .register_read_message import (
97- ReadHoldingRegistersRequest ,
98- ReadHoldingRegistersResponse ,
99- ReadInputRegistersRequest ,
100- ReadInputRegistersResponse ,
101- ReadWriteMultipleRegistersRequest ,
102- ReadWriteMultipleRegistersResponse ,
103- )
104- from pymodbus .register_write_message import (
105- MaskWriteRegisterRequest ,
106- MaskWriteRegisterResponse ,
107- WriteMultipleRegistersRequest ,
108- WriteMultipleRegistersResponse ,
109- WriteSingleRegisterRequest ,
110- WriteSingleRegisterResponse ,
111- )
11226
11327
11428# --------------------------------------------------------------------------- #
@@ -121,45 +35,45 @@ class ServerDecoder:
12135 """
12236
12337 __function_table = [
124- ReadHoldingRegistersRequest ,
125- ReadDiscreteInputsRequest ,
126- ReadInputRegistersRequest ,
127- ReadCoilsRequest ,
128- WriteMultipleCoilsRequest ,
129- WriteMultipleRegistersRequest ,
130- WriteSingleRegisterRequest ,
131- WriteSingleCoilRequest ,
132- ReadWriteMultipleRegistersRequest ,
133- DiagnosticStatusRequest ,
134- ReadExceptionStatusRequest ,
135- GetCommEventCounterRequest ,
136- GetCommEventLogRequest ,
137- ReportSlaveIdRequest ,
138- ReadFileRecordRequest ,
139- WriteFileRecordRequest ,
140- MaskWriteRegisterRequest ,
141- ReadFifoQueueRequest ,
142- ReadDeviceInformationRequest ,
38+ reg_r_msg . ReadHoldingRegistersRequest ,
39+ bit_r_msg . ReadDiscreteInputsRequest ,
40+ reg_r_msg . ReadInputRegistersRequest ,
41+ bit_r_msg . ReadCoilsRequest ,
42+ bit_w_msg . WriteMultipleCoilsRequest ,
43+ reg_w_msg . WriteMultipleRegistersRequest ,
44+ reg_w_msg . WriteSingleRegisterRequest ,
45+ bit_w_msg . WriteSingleCoilRequest ,
46+ reg_r_msg . ReadWriteMultipleRegistersRequest ,
47+ diag_msg . DiagnosticStatusRequest ,
48+ o_msg . ReadExceptionStatusRequest ,
49+ o_msg . GetCommEventCounterRequest ,
50+ o_msg . GetCommEventLogRequest ,
51+ o_msg . ReportSlaveIdRequest ,
52+ file_msg . ReadFileRecordRequest ,
53+ file_msg . WriteFileRecordRequest ,
54+ reg_w_msg . MaskWriteRegisterRequest ,
55+ file_msg . ReadFifoQueueRequest ,
56+ mei_msg . ReadDeviceInformationRequest ,
14357 ]
14458 __sub_function_table = [
145- ReturnQueryDataRequest ,
146- RestartCommunicationsOptionRequest ,
147- ReturnDiagnosticRegisterRequest ,
148- ChangeAsciiInputDelimiterRequest ,
149- ForceListenOnlyModeRequest ,
150- ClearCountersRequest ,
151- ReturnBusMessageCountRequest ,
152- ReturnBusCommunicationErrorCountRequest ,
153- ReturnBusExceptionErrorCountRequest ,
154- ReturnSlaveMessageCountRequest ,
155- ReturnSlaveNoResponseCountRequest ,
156- ReturnSlaveNAKCountRequest ,
157- ReturnSlaveBusyCountRequest ,
158- ReturnSlaveBusCharacterOverrunCountRequest ,
159- ReturnIopOverrunCountRequest ,
160- ClearOverrunCountRequest ,
161- GetClearModbusPlusRequest ,
162- ReadDeviceInformationRequest ,
59+ diag_msg . ReturnQueryDataRequest ,
60+ diag_msg . RestartCommunicationsOptionRequest ,
61+ diag_msg . ReturnDiagnosticRegisterRequest ,
62+ diag_msg . ChangeAsciiInputDelimiterRequest ,
63+ diag_msg . ForceListenOnlyModeRequest ,
64+ diag_msg . ClearCountersRequest ,
65+ diag_msg . ReturnBusMessageCountRequest ,
66+ diag_msg . ReturnBusCommunicationErrorCountRequest ,
67+ diag_msg . ReturnBusExceptionErrorCountRequest ,
68+ diag_msg . ReturnSlaveMessageCountRequest ,
69+ diag_msg . ReturnSlaveNoResponseCountRequest ,
70+ diag_msg . ReturnSlaveNAKCountRequest ,
71+ diag_msg . ReturnSlaveBusyCountRequest ,
72+ diag_msg . ReturnSlaveBusCharacterOverrunCountRequest ,
73+ diag_msg . ReturnIopOverrunCountRequest ,
74+ diag_msg . ClearOverrunCountRequest ,
75+ diag_msg . GetClearModbusPlusRequest ,
76+ mei_msg . ReadDeviceInformationRequest ,
16377 ]
16478
16579 @classmethod
@@ -193,7 +107,7 @@ def lookupPduClass(self, function_code):
193107 :param function_code: The function code specified in a frame.
194108 :returns: The class of the PDU that has a matching `function_code`.
195109 """
196- return self .lookup .get (function_code , ExceptionResponse )
110+ return self .lookup .get (function_code , pdu . ExceptionResponse )
197111
198112 def _helper (self , data : str ):
199113 """Generate the correct request object from a valid request packet.
@@ -206,7 +120,7 @@ def _helper(self, data: str):
206120 function_code = int (data [0 ])
207121 if not (request := self .lookup .get (function_code , lambda : None )()):
208122 Log .debug ("Factory Request[{}]" , function_code )
209- request = IllegalFunctionRequest (function_code )
123+ request = pdu . IllegalFunctionRequest (function_code )
210124 else :
211125 fc_string = "{}: {}" .format ( # pylint: disable=consider-using-f-string
212126 str (self .lookup [function_code ]) # pylint: disable=use-maxsplit-arg
@@ -230,7 +144,7 @@ def register(self, function):
230144 :param function: Custom function class to register
231145 :raises MessageRegisterException:
232146 """
233- if not issubclass (function , ModbusRequest ):
147+ if not issubclass (function , pdu . ModbusRequest ):
234148 raise MessageRegisterException (
235149 f'"{ function .__class__ .__name__ } " is Not a valid Modbus Message'
236150 ". Class needs to be derived from "
@@ -255,45 +169,45 @@ class ClientDecoder:
255169 """
256170
257171 function_table = [
258- ReadHoldingRegistersResponse ,
259- ReadDiscreteInputsResponse ,
260- ReadInputRegistersResponse ,
261- ReadCoilsResponse ,
262- WriteMultipleCoilsResponse ,
263- WriteMultipleRegistersResponse ,
264- WriteSingleRegisterResponse ,
265- WriteSingleCoilResponse ,
266- ReadWriteMultipleRegistersResponse ,
267- DiagnosticStatusResponse ,
268- ReadExceptionStatusResponse ,
269- GetCommEventCounterResponse ,
270- GetCommEventLogResponse ,
271- ReportSlaveIdResponse ,
272- ReadFileRecordResponse ,
273- WriteFileRecordResponse ,
274- MaskWriteRegisterResponse ,
275- ReadFifoQueueResponse ,
276- ReadDeviceInformationResponse ,
172+ reg_r_msg . ReadHoldingRegistersResponse ,
173+ bit_r_msg . ReadDiscreteInputsResponse ,
174+ reg_r_msg . ReadInputRegistersResponse ,
175+ bit_r_msg . ReadCoilsResponse ,
176+ bit_w_msg . WriteMultipleCoilsResponse ,
177+ reg_w_msg . WriteMultipleRegistersResponse ,
178+ reg_w_msg . WriteSingleRegisterResponse ,
179+ bit_w_msg . WriteSingleCoilResponse ,
180+ reg_r_msg . ReadWriteMultipleRegistersResponse ,
181+ diag_msg . DiagnosticStatusResponse ,
182+ o_msg . ReadExceptionStatusResponse ,
183+ o_msg . GetCommEventCounterResponse ,
184+ o_msg . GetCommEventLogResponse ,
185+ o_msg . ReportSlaveIdResponse ,
186+ file_msg . ReadFileRecordResponse ,
187+ file_msg . WriteFileRecordResponse ,
188+ reg_w_msg . MaskWriteRegisterResponse ,
189+ file_msg . ReadFifoQueueResponse ,
190+ mei_msg . ReadDeviceInformationResponse ,
277191 ]
278192 __sub_function_table = [
279- ReturnQueryDataResponse ,
280- RestartCommunicationsOptionResponse ,
281- ReturnDiagnosticRegisterResponse ,
282- ChangeAsciiInputDelimiterResponse ,
283- ForceListenOnlyModeResponse ,
284- ClearCountersResponse ,
285- ReturnBusMessageCountResponse ,
286- ReturnBusCommunicationErrorCountResponse ,
287- ReturnBusExceptionErrorCountResponse ,
288- ReturnSlaveMessageCountResponse ,
289- ReturnSlaveNoResponseCountResponse ,
290- ReturnSlaveNAKCountResponse ,
291- ReturnSlaveBusyCountResponse ,
292- ReturnSlaveBusCharacterOverrunCountResponse ,
293- ReturnIopOverrunCountResponse ,
294- ClearOverrunCountResponse ,
295- GetClearModbusPlusResponse ,
296- ReadDeviceInformationResponse ,
193+ diag_msg . ReturnQueryDataResponse ,
194+ diag_msg . RestartCommunicationsOptionResponse ,
195+ diag_msg . ReturnDiagnosticRegisterResponse ,
196+ diag_msg . ChangeAsciiInputDelimiterResponse ,
197+ diag_msg . ForceListenOnlyModeResponse ,
198+ diag_msg . ClearCountersResponse ,
199+ diag_msg . ReturnBusMessageCountResponse ,
200+ diag_msg . ReturnBusCommunicationErrorCountResponse ,
201+ diag_msg . ReturnBusExceptionErrorCountResponse ,
202+ diag_msg . ReturnSlaveMessageCountResponse ,
203+ diag_msg . ReturnSlaveNoResponseCountResponse ,
204+ diag_msg . ReturnSlaveNAKCountResponse ,
205+ diag_msg . ReturnSlaveBusyCountResponse ,
206+ diag_msg . ReturnSlaveBusCharacterOverrunCountResponse ,
207+ diag_msg . ReturnIopOverrunCountResponse ,
208+ diag_msg . ClearOverrunCountResponse ,
209+ diag_msg . GetClearModbusPlusResponse ,
210+ mei_msg . ReadDeviceInformationResponse ,
297211 ]
298212
299213 def __init__ (self ) -> None :
@@ -310,7 +224,7 @@ def lookupPduClass(self, function_code):
310224 :param function_code: The function code specified in a frame.
311225 :returns: The class of the PDU that has a matching `function_code`.
312226 """
313- return self .lookup .get (function_code , ExceptionResponse )
227+ return self .lookup .get (function_code , pdu . ExceptionResponse )
314228
315229 def decode (self , message ):
316230 """Decode a response packet.
@@ -348,7 +262,7 @@ def _helper(self, data: str):
348262 response = self .lookup .get (function_code , lambda : None )()
349263 if function_code > 0x80 :
350264 code = function_code & 0x7F # strip error portion
351- response = ExceptionResponse (code , ecode .IllegalFunction )
265+ response = pdu . ExceptionResponse (code , pdu . ModbusExceptions .IllegalFunction )
352266 if not response :
353267 raise ModbusException (f"Unknown response { function_code } " )
354268 response .decode (data [1 :])
@@ -362,7 +276,7 @@ def _helper(self, data: str):
362276
363277 def register (self , function ):
364278 """Register a function and sub function class with the decoder."""
365- if function and not issubclass (function , ModbusResponse ):
279+ if function and not issubclass (function , pdu . ModbusResponse ):
366280 raise MessageRegisterException (
367281 f'"{ function .__class__ .__name__ } " is Not a valid Modbus Message'
368282 ". Class needs to be derived from "
0 commit comments