Skip to content

Commit 2ef7ef6

Browse files
committed
Fix parsing of command S response
Response to command S contains number in hexadecimal format. That caused an exception when trying to parse values containing letters.
1 parent 8321e03 commit 2ef7ef6

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

maxcube/commander.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,13 @@ def __cmd_send_radio_msg(self, request: Message, deadline: Deadline) -> bool:
7373
try:
7474
response = self.__call(request, deadline)
7575
duty_cycle, status_code, free_slots = response.arg.split(",", 3)
76-
if int(status_code) == 0:
76+
if status_code == "0":
7777
return True
7878
logger.debug(
7979
"Radio message %s was not send [DutyCycle:%s, StatusCode:%s, FreeSlots:%s]"
8080
% (request, duty_cycle, status_code, free_slots)
8181
)
82-
if int(duty_cycle) == 100 and int(free_slots) == 0:
82+
if int(duty_cycle, 16) == 100 and int(free_slots, 16) == 0:
8383
sleep(deadline.remaining(upper_bound=10.0))
8484
except Exception as ex:
8585
logger.error("Error sending radio message to Max! Cube: " + str(ex))

tests/test_commander.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
S_CMD_HEX = "FF00"
1313
S_CMD = Message("s", base64.b64encode(bytearray.fromhex(S_CMD_HEX)).decode("utf-8"))
1414
S_CMD_SUCCESS = Message("S", "00,0,31")
15-
S_CMD_ERROR = Message("S", "100,1,31")
16-
S_CMD_THROTTLE_ERROR = Message("S", "100,1,0")
15+
S_CMD_ERROR = Message("S", "64,1,1f")
16+
S_CMD_THROTTLE_ERROR = Message("S", "64,1,0")
1717
Q_CMD = Message("q")
1818

1919
TEST_TIMEOUT = Timeout("test", 1.0)

0 commit comments

Comments
 (0)