@@ -63,28 +63,24 @@ def buildFrame(self, message: ModbusPDU) -> bytes:
63
63
frame = self .encode (data , message .dev_id , message .transaction_id )
64
64
return frame
65
65
66
- def handleFrame (self , data : bytes , _exp_devid : int , _exp_tid : int ) -> tuple [int , ModbusPDU | None ]:
66
+ def handleFrame (self , data : bytes , exp_devid : int , exp_tid : int ) -> tuple [int , ModbusPDU | None ]:
67
67
"""Process incoming data."""
68
68
used_len = 0
69
69
while True :
70
70
if used_len >= len (data ):
71
71
return used_len , None
72
72
Log .debug ("Processing: {}" , data , ":hex" )
73
- data_len , pdu = self ._internHandleFrame (data [ used_len :] )
73
+ data_len , dev_id , tid , frame_data = self .decode (data )
74
74
used_len += data_len
75
- if not data_len :
75
+ if ( not frame_data
76
+ or (exp_devid and dev_id != exp_devid )
77
+ or (exp_tid and tid != exp_tid )
78
+ ):
79
+ if data_len :
80
+ continue
76
81
return used_len , None
77
- if pdu :
78
- return used_len , pdu
79
-
80
- def _internHandleFrame (self , data : bytes ) -> tuple [int , ModbusPDU | None ]:
81
- """Assemble PDU."""
82
- used_len , dev_id , tid , frame_data = self .decode (data )
83
- if not frame_data :
84
- return used_len , None
85
- if (result := self .decoder .decode (frame_data )) is None :
86
- raise ModbusIOException ("Unable to decode request" )
87
- result .dev_id = dev_id
88
- result .transaction_id = tid
89
- Log .debug ("Frame advanced, resetting header!!" )
90
- return used_len , result
82
+ if (pdu := self .decoder .decode (frame_data )) is None :
83
+ raise ModbusIOException ("Unable to decode request" )
84
+ pdu .dev_id = dev_id
85
+ pdu .transaction_id = tid
86
+ return used_len , pdu
0 commit comments