Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def _handle_match_desc(zdo_f, profile):
zdo_f.reply = mock.MagicMock()
hdr = mock.MagicMock()
hdr.command_id = zdo_types.ZDOCmd.Match_Desc_req
zdo_f.handle_message(5, 0x0006, hdr, [None, profile, [], []])
assert zdo_f.reply.call_count == 1
def test_zdo_header_cmd_id():
unk_cmd = 0x00FF
assert unk_cmd not in list(types.ZDOCmd)
hdr = types.ZDOHeader(unk_cmd, 0x55)
assert isinstance(hdr.command_id, types.ZDOCmd)
assert hdr.command_id == unk_cmd
unk_cmd += 1
assert unk_cmd not in list(types.ZDOCmd)
hdr.command_id = unk_cmd
assert isinstance(hdr.command_id, types.ZDOCmd)
assert hdr.command_id == unk_cmd
),
ZDOCmd.Active_EP_rsp: (STATUS, NWKI, ("ActiveEPList", t.LVList(t.uint8_t))),
ZDOCmd.Match_Desc_rsp: (STATUS, NWKI, ("MatchList", t.LVList(t.uint8_t))),
# ZDO.Complex_Desc_rsp: (
# STATUS,
# NWKI,
# ('Length', t.uint8_t),
# ('ComplexDescriptor', t.Optional(ComplexDescriptor)),
# ),
ZDOCmd.User_Desc_rsp: (
STATUS,
NWKI,
("Length", t.uint8_t),
("UserDescriptor", t.Optional(t.fixed_list(16, t.uint8_t))),
),
ZDOCmd.Discovery_Cache_rsp: (STATUS,),
ZDOCmd.User_Desc_conf: (STATUS, NWKI),
ZDOCmd.System_Server_Discovery_rsp: (STATUS, ("ServerMask", t.uint16_t)),
ZDOCmd.Discovery_Store_rsp: (STATUS,),
ZDOCmd.Node_Desc_store_rsp: (STATUS,),
ZDOCmd.Power_Desc_store_rsp: (STATUS, IEEE, ("PowerDescriptor", PowerDescriptor)),
ZDOCmd.Active_EP_store_rsp: (STATUS,),
ZDOCmd.Simple_Desc_store_rsp: (STATUS,),
ZDOCmd.Remove_node_cache_rsp: (STATUS,),
ZDOCmd.Find_node_cache_rsp: (("CacheNWKAddr", t.EUI64), NWK, IEEE),
ZDOCmd.Extended_Simple_Desc_rsp: (
STATUS,
NWK,
("Endpoint", t.uint8_t),
("AppInputClusterCount", t.uint8_t),
("AppOutputClusterCount", t.uint8_t),
("StartIndex", t.uint8_t),
),
ZDOCmd.Extended_Active_EP_rsp: (
STATUS,
NWKI,
("ActiveEPCount", t.uint8_t),
("StartIndex", t.uint8_t),
("ActiveEPList", t.List(t.uint8_t)),
),
ZDOCmd.Parent_annce_rsp: (STATUS, ("Children", t.LVList(t.EUI64))),
# Bind Management Server Services Responses
ZDOCmd.End_Device_Bind_rsp: (STATUS,),
ZDOCmd.Bind_rsp: (STATUS,),
ZDOCmd.Unbind_rsp: (STATUS,),
# ... TODO optional stuff ...
# Network Management Server Services Responses
ZDOCmd.Mgmt_Lqi_rsp: (STATUS, ("Neighbors", t.Optional(Neighbors))),
ZDOCmd.Mgmt_Rtg_rsp: (STATUS, ("Routes", t.Optional(Routes))),
# ... TODO optional stuff ...
ZDOCmd.Mgmt_Leave_rsp: (STATUS,),
ZDOCmd.Mgmt_Permit_Joining_rsp: (STATUS,),
ZDOCmd.Mgmt_NWK_Update_rsp: (
STATUS,
("ScannedChannels", t.Channels),
("TotalTransmissions", t.uint16_t),
("TransmissionFailures", t.uint16_t),
("EnergyValues", t.LVList(t.uint8_t)),
)
# ... TODO optional stuff ...
}
# Rewrite to (name, param_names, param_types)
# ... TODO optional stuff ...
Mgmt_Leave_rsp = 0x8034
Mgmt_Permit_Joining_rsp = 0x8036
# ... TODO optional stuff ...
Mgmt_NWK_Update_rsp = 0x8038
CLUSTERS = {
# Device and Service Discovery Server Requests
ZDOCmd.NWK_addr_req: (IEEE, ("RequestType", t.uint8_t), ("StartIndex", t.uint8_t)),
ZDOCmd.IEEE_addr_req: (NWKI, ("RequestType", t.uint8_t), ("StartIndex", t.uint8_t)),
ZDOCmd.Node_Desc_req: (NWKI,),
ZDOCmd.Power_Desc_req: (NWKI,),
ZDOCmd.Simple_Desc_req: (NWKI, ("EndPoint", t.uint8_t)),
ZDOCmd.Active_EP_req: (NWKI,),
ZDOCmd.Match_Desc_req: (
NWKI,
("ProfileID", t.uint16_t),
("InClusterList", t.LVList(t.uint16_t)),
("OutClusterList", t.LVList(t.uint16_t)),
),
# ZDO.Complex_Desc_req: (NWKI, ),
ZDOCmd.User_Desc_req: (NWKI,),
ZDOCmd.Discovery_Cache_req: (NWK, IEEE),
ZDOCmd.Device_annce: (NWK, IEEE, ("Capability", t.uint8_t)),
ZDOCmd.User_Desc_set: (
NWKI,
("UserDescriptor", t.fixed_list(16, t.uint8_t)),
), # Really a string
ZDOCmd.System_Server_Discovery_req: (("ServerMask", t.uint16_t),),
ZDOCmd.Discovery_store_req: (
NWK,
("ActiveEPCount", t.uint8_t),
("StartIndex", t.uint8_t),
("ActiveEPList", t.List(t.uint8_t)),
),
ZDOCmd.Parent_annce_rsp: (STATUS, ("Children", t.LVList(t.EUI64))),
# Bind Management Server Services Responses
ZDOCmd.End_Device_Bind_rsp: (STATUS,),
ZDOCmd.Bind_rsp: (STATUS,),
ZDOCmd.Unbind_rsp: (STATUS,),
# ... TODO optional stuff ...
# Network Management Server Services Responses
ZDOCmd.Mgmt_Lqi_rsp: (STATUS, ("Neighbors", t.Optional(Neighbors))),
ZDOCmd.Mgmt_Rtg_rsp: (STATUS, ("Routes", t.Optional(Routes))),
# ... TODO optional stuff ...
ZDOCmd.Mgmt_Leave_rsp: (STATUS,),
ZDOCmd.Mgmt_Permit_Joining_rsp: (STATUS,),
ZDOCmd.Mgmt_NWK_Update_rsp: (
STATUS,
("ScannedChannels", t.Channels),
("TotalTransmissions", t.uint16_t),
("TransmissionFailures", t.uint16_t),
("EnergyValues", t.LVList(t.uint8_t)),
)
# ... TODO optional stuff ...
}
# Rewrite to (name, param_names, param_types)
for command_id, schema in CLUSTERS.items():
param_names = [p[0] for p in schema]
param_types = [p[1] for p in schema]
CLUSTERS[command_id] = (param_names, param_types)
ZDOCmd.User_Desc_rsp: (
STATUS,
NWKI,
("Length", t.uint8_t),
("UserDescriptor", t.Optional(t.fixed_list(16, t.uint8_t))),
),
ZDOCmd.Discovery_Cache_rsp: (STATUS,),
ZDOCmd.User_Desc_conf: (STATUS, NWKI),
ZDOCmd.System_Server_Discovery_rsp: (STATUS, ("ServerMask", t.uint16_t)),
ZDOCmd.Discovery_Store_rsp: (STATUS,),
ZDOCmd.Node_Desc_store_rsp: (STATUS,),
ZDOCmd.Power_Desc_store_rsp: (STATUS, IEEE, ("PowerDescriptor", PowerDescriptor)),
ZDOCmd.Active_EP_store_rsp: (STATUS,),
ZDOCmd.Simple_Desc_store_rsp: (STATUS,),
ZDOCmd.Remove_node_cache_rsp: (STATUS,),
ZDOCmd.Find_node_cache_rsp: (("CacheNWKAddr", t.EUI64), NWK, IEEE),
ZDOCmd.Extended_Simple_Desc_rsp: (
STATUS,
NWK,
("Endpoint", t.uint8_t),
("AppInputClusterCount", t.uint8_t),
("AppOutputClusterCount", t.uint8_t),
("StartIndex", t.uint8_t),
("AppClusterList", t.Optional(t.List(t.uint16_t))),
),
ZDOCmd.Extended_Active_EP_rsp: (
STATUS,
NWKI,
("ActiveEPCount", t.uint8_t),
("StartIndex", t.uint8_t),
("ActiveEPList", t.List(t.uint8_t)),
),
# ... TODO optional stuff ...
# Network Management Server Services Responses
Mgmt_Lqi_rsp = 0x8031
Mgmt_Rtg_rsp = 0x8032
# ... TODO optional stuff ...
Mgmt_Leave_rsp = 0x8034
Mgmt_Permit_Joining_rsp = 0x8036
# ... TODO optional stuff ...
Mgmt_NWK_Update_rsp = 0x8038
CLUSTERS = {
# Device and Service Discovery Server Requests
ZDOCmd.NWK_addr_req: (IEEE, ("RequestType", t.uint8_t), ("StartIndex", t.uint8_t)),
ZDOCmd.IEEE_addr_req: (NWKI, ("RequestType", t.uint8_t), ("StartIndex", t.uint8_t)),
ZDOCmd.Node_Desc_req: (NWKI,),
ZDOCmd.Power_Desc_req: (NWKI,),
ZDOCmd.Simple_Desc_req: (NWKI, ("EndPoint", t.uint8_t)),
ZDOCmd.Active_EP_req: (NWKI,),
ZDOCmd.Match_Desc_req: (
NWKI,
("ProfileID", t.uint16_t),
("InClusterList", t.LVList(t.uint16_t)),
("OutClusterList", t.LVList(t.uint16_t)),
),
# ZDO.Complex_Desc_req: (NWKI, ),
ZDOCmd.User_Desc_req: (NWKI,),
ZDOCmd.Discovery_Cache_req: (NWK, IEEE),
ZDOCmd.Device_annce: (NWK, IEEE, ("Capability", t.uint8_t)),
ZDOCmd.User_Desc_set: (
NWKI,
("UserDescriptor", t.fixed_list(16, t.uint8_t)),
def command_id(self, value: t.uint16_t) -> None:
"""Command ID setter."""
self._command_id = ZDOCmd(value)