Skip to content

Commit 7bcd368

Browse files
committed
Do timeout handling at seq reset
1 parent bc4adf7 commit 7bcd368

File tree

3 files changed

+4
-2
lines changed

3 files changed

+4
-2
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
- Improvement: Do a single ping request to validate if node is on-line
88
- Improvement: Guard Scan sensitivity setting to medium
99
- Improvement: Move general module code of messages, nodes, connection to the __init__.py files.
10+
- Improvement: Do proper timeout handling while sequence counter resets (once every 65532 messages)
1011
- Improvement: Better code separation. All logic is in their designated files:
1112
1. Connection (connection/*.py)
1213
2. Data parsing (parser.py)

plugwise/controller.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ def message_handler(self, message):
217217
if self.last_seq_id:
218218
if int(self.last_seq_id, 16) < int(message.seq_id, 16) < 65533:
219219
self.last_seq_id = message.seq_id
220-
elif message.seq_id == b"0000":
220+
elif message.seq_id == b"0000" and self.last_seq_id == b"FFFB":
221221
self.last_seq_id = b"0000"
222222

223223
if isinstance(message, NodeAckSmallResponse):

plugwise/util.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ def inc_seq_id(seq_id, value=1) -> bytearray:
5555
if seq_id is None:
5656
return b"0000"
5757
temp_int = int(seq_id, 16) + value
58-
# Max seq_id = b'FFFC'
58+
# Max seq_id = b'FFFB'
59+
# b'FFFC' reserved for <unknown> message
5960
# b'FFFD' reserved for 'NodeJoinAckResponse' message
6061
# b'FFFE' reserved for 'NodeSwitchGroupResponse' message
6162
# b'FFFF' reserved for 'NodeAwakeResponse' message

0 commit comments

Comments
 (0)