Skip to content

Commit 03ee732

Browse files
authored
Merge pull request #117 from puddly/puddly/bugfix/handle-empty-zstack-build-id
Handle empty Z-Stack build ID in the version response
2 parents 8097701 + 8cdcb74 commit 03ee732

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

tests/application/test_startup.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,3 +270,31 @@ async def test_auto_form_necessary(device, make_application, mocker):
270270
assert nvram[OsalNvIds.ZDO_DIRECT_CB] == t.Bool(True).serialize()
271271

272272
await app.shutdown()
273+
274+
275+
@pytest.mark.parametrize("device", [FormedZStack1CC2531])
276+
async def test_zstack_build_id_empty(device, make_application, mocker):
277+
app, znp_server = make_application(server_cls=device)
278+
279+
znp_server.reply_once_to(
280+
c.SYS.Version.Req(),
281+
responses=c.SYS.Version.Rsp(
282+
TransportRev=2,
283+
ProductId=0,
284+
MajorRel=2,
285+
MinorRel=6,
286+
MaintRel=3,
287+
# These are missing
288+
CodeRevision=None,
289+
BootloaderBuildType=None,
290+
BootloaderRevision=None,
291+
),
292+
override=True,
293+
)
294+
295+
await app.startup(auto_form=True)
296+
297+
assert app._zstack_build_id is not None
298+
assert app._zstack_build_id == 0x00000000
299+
300+
await app.shutdown()

zigpy_znp/zigbee/application.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -814,6 +814,10 @@ def _zstack_build_id(self) -> t.uint32_t:
814814
Z-Stack build ID, more recently the build date.
815815
"""
816816

817+
# Old versions of Z-Stack do not include `CodeRevision` in the version response
818+
if self._version_rsp.CodeRevision is None:
819+
return 0x00000000
820+
817821
return self._version_rsp.CodeRevision
818822

819823
@property

0 commit comments

Comments
 (0)