Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace node descriptor bytestrings with objects #177

Merged
merged 2 commits into from
Aug 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 20 additions & 2 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -404,7 +404,7 @@ def _mock_dev(
ieee: str = "00:0d:6f:00:0a:90:69:e7",
manufacturer: str = "FakeManufacturer",
model: str = "FakeModel",
node_descriptor: bytes = b"\x02@\x807\x10\x7fd\x00\x00*d\x00\x00",
node_descriptor: zdo_t.NodeDescriptor | None = None,
nwk: int = 0xB79C,
patch_cluster: bool = True,
quirk: Optional[Callable] = None,
Expand All @@ -416,7 +416,25 @@ def _mock_dev(
)
device.manufacturer = manufacturer
device.model = model
device.node_desc = zdo_t.NodeDescriptor.deserialize(node_descriptor)[0]

if node_descriptor is None:
node_descriptor = zdo_t.NodeDescriptor(
logical_type=zdo_t.LogicalType.EndDevice,
complex_descriptor_available=0,
user_descriptor_available=0,
reserved=0,
aps_flags=0,
frequency_band=zdo_t.NodeDescriptor.FrequencyBand.Freq2400MHz,
mac_capability_flags=zdo_t.NodeDescriptor.MACCapabilityFlags.AllocateAddress,
manufacturer_code=4151,
maximum_buffer_size=127,
maximum_incoming_transfer_size=100,
server_mask=10752,
maximum_outgoing_transfer_size=100,
descriptor_capability_field=zdo_t.NodeDescriptor.DescriptorCapability.NONE,
)

device.node_desc = node_descriptor
device.last_seen = time.time()

for epid, ep in endpoints.items():
Expand Down
22 changes: 21 additions & 1 deletion tests/test_alarm_control_panel.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from zigpy.profiles import zha
from zigpy.zcl.clusters import security
import zigpy.zcl.foundation as zcl_f
import zigpy.zdo.types as zdo_t

from tests.conftest import SIG_EP_INPUT, SIG_EP_OUTPUT, SIG_EP_PROFILE, SIG_EP_TYPE
from zha.application import Platform
Expand All @@ -32,7 +33,26 @@ def zigpy_device(zigpy_device_mock: Callable[..., ZigpyDevice]) -> ZigpyDevice:
}
}
return zigpy_device_mock(
endpoints, node_descriptor=b"\x02@\x8c\x02\x10RR\x00\x00\x00R\x00\x00"
endpoints,
node_descriptor=zdo_t.NodeDescriptor(
logical_type=zdo_t.LogicalType.EndDevice,
complex_descriptor_available=0,
user_descriptor_available=0,
reserved=0,
aps_flags=0,
frequency_band=zdo_t.NodeDescriptor.FrequencyBand.Freq2400MHz,
mac_capability_flags=(
zdo_t.NodeDescriptor.MACCapabilityFlags.MainsPowered
| zdo_t.NodeDescriptor.MACCapabilityFlags.RxOnWhenIdle
| zdo_t.NodeDescriptor.MACCapabilityFlags.AllocateAddress
),
manufacturer_code=4098,
maximum_buffer_size=82,
maximum_incoming_transfer_size=82,
server_mask=0,
maximum_outgoing_transfer_size=82,
descriptor_capability_field=zdo_t.NodeDescriptor.DescriptorCapability.NONE,
),
)


Expand Down
20 changes: 19 additions & 1 deletion tests/test_device.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,25 @@ def _dev(with_basic_cluster_handler: bool = True):
}
}
return zigpy_device_mock(
endpoints, node_descriptor=b"\x02@\x84_\x11\x7fd\x00\x00,d\x00\x00"
endpoints,
node_descriptor=zdo_t.NodeDescriptor(
logical_type=zdo_t.LogicalType.EndDevice,
complex_descriptor_available=0,
user_descriptor_available=0,
reserved=0,
aps_flags=0,
frequency_band=zdo_t.NodeDescriptor.FrequencyBand.Freq2400MHz,
mac_capability_flags=(
zdo_t.NodeDescriptor.MACCapabilityFlags.MainsPowered
| zdo_t.NodeDescriptor.MACCapabilityFlags.AllocateAddress
),
manufacturer_code=4447,
maximum_buffer_size=127,
maximum_incoming_transfer_size=100,
server_mask=11264,
maximum_outgoing_transfer_size=100,
descriptor_capability_field=zdo_t.NodeDescriptor.DescriptorCapability.NONE,
),
)

return _dev
Expand Down
7 changes: 4 additions & 3 deletions tests/test_discover.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import zigpy.zcl.clusters.general
import zigpy.zcl.clusters.security
import zigpy.zcl.foundation as zcl_f
import zigpy.zdo.types as zdo_t

from tests.common import get_entity, update_attribute_cache
from tests.conftest import SIG_EP_INPUT, SIG_EP_OUTPUT, SIG_EP_PROFILE, SIG_EP_TYPE
Expand Down Expand Up @@ -99,7 +100,7 @@ async def _mock(
ieee="00:11:22:33:44:55:66:77",
manufacturer="mock manufacturer",
model="mock model",
node_desc=b"\x02@\x807\x10\x7fd\x00\x00*d\x00\x00",
node_desc=None,
patch_cluster=False,
):
return await device_joined(
Expand Down Expand Up @@ -133,7 +134,7 @@ async def test_devices(
ieee="00:11:22:33:44:55:66:77",
manufacturer=device[SIG_MANUFACTURER],
model=device[SIG_MODEL],
node_descriptor=device[SIG_NODE_DESC],
node_descriptor=zdo_t.NodeDescriptor(**device[SIG_NODE_DESC]),
attributes=device.get(DEV_SIG_ATTRIBUTES),
patch_cluster=False,
)
Expand Down Expand Up @@ -328,7 +329,7 @@ async def test_discover_endpoint(
device_info[SIG_ENDPOINTS],
manufacturer=device_info[SIG_MANUFACTURER],
model=device_info[SIG_MODEL],
node_desc=device_info[SIG_NODE_DESC],
node_desc=zdo_t.NodeDescriptor(**device_info[SIG_NODE_DESC]),
patch_cluster=True,
)

Expand Down
62 changes: 59 additions & 3 deletions tests/test_fan.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
from zigpy.profiles import zha
from zigpy.zcl.clusters import general, hvac
import zigpy.zcl.foundation as zcl_f
import zigpy.zdo.types as zdo_t

from tests.common import (
get_entity,
Expand Down Expand Up @@ -62,7 +63,26 @@ def zigpy_device(
}
}
return zigpy_device_mock(
endpoints, node_descriptor=b"\x02@\x8c\x02\x10RR\x00\x00\x00R\x00\x00"
endpoints,
node_descriptor=zdo_t.NodeDescriptor(
logical_type=zdo_t.LogicalType.EndDevice,
complex_descriptor_available=0,
user_descriptor_available=0,
reserved=0,
aps_flags=0,
frequency_band=zdo_t.NodeDescriptor.FrequencyBand.Freq2400MHz,
mac_capability_flags=(
zdo_t.NodeDescriptor.MACCapabilityFlags.MainsPowered
| zdo_t.NodeDescriptor.MACCapabilityFlags.RxOnWhenIdle
| zdo_t.NodeDescriptor.MACCapabilityFlags.AllocateAddress
),
manufacturer_code=4098,
maximum_buffer_size=82,
maximum_incoming_transfer_size=82,
server_mask=0,
maximum_outgoing_transfer_size=82,
descriptor_capability_field=zdo_t.NodeDescriptor.DescriptorCapability.NONE,
),
)


Expand Down Expand Up @@ -511,7 +531,25 @@ def zigpy_device_ikea(zigpy_device_mock) -> ZigpyDevice:
manufacturer="IKEA of Sweden",
model="STARKVIND Air purifier",
quirk=zhaquirks.ikea.starkvind.IkeaSTARKVIND,
node_descriptor=b"\x02@\x8c\x02\x10RR\x00\x00\x00R\x00\x00",
node_descriptor=zdo_t.NodeDescriptor(
logical_type=zdo_t.LogicalType.EndDevice,
complex_descriptor_available=0,
user_descriptor_available=0,
reserved=0,
aps_flags=0,
frequency_band=zdo_t.NodeDescriptor.FrequencyBand.Freq2400MHz,
mac_capability_flags=(
zdo_t.NodeDescriptor.MACCapabilityFlags.MainsPowered
| zdo_t.NodeDescriptor.MACCapabilityFlags.RxOnWhenIdle
| zdo_t.NodeDescriptor.MACCapabilityFlags.AllocateAddress
),
manufacturer_code=4098,
maximum_buffer_size=82,
maximum_incoming_transfer_size=82,
server_mask=0,
maximum_outgoing_transfer_size=82,
descriptor_capability_field=zdo_t.NodeDescriptor.DescriptorCapability.NONE,
),
)


Expand Down Expand Up @@ -665,7 +703,25 @@ def zigpy_device_kof(zigpy_device_mock) -> ZigpyDevice:
manufacturer="King Of Fans, Inc.",
model="HBUniversalCFRemote",
quirk=zhaquirks.kof.kof_mr101z.CeilingFan,
node_descriptor=b"\x02@\x8c\x02\x10RR\x00\x00\x00R\x00\x00",
node_descriptor=zdo_t.NodeDescriptor(
logical_type=zdo_t.LogicalType.EndDevice,
complex_descriptor_available=0,
user_descriptor_available=0,
reserved=0,
aps_flags=0,
frequency_band=zdo_t.NodeDescriptor.FrequencyBand.Freq2400MHz,
mac_capability_flags=(
zdo_t.NodeDescriptor.MACCapabilityFlags.MainsPowered
| zdo_t.NodeDescriptor.MACCapabilityFlags.RxOnWhenIdle
| zdo_t.NodeDescriptor.MACCapabilityFlags.AllocateAddress
),
manufacturer_code=4098,
maximum_buffer_size=82,
maximum_incoming_transfer_size=82,
server_mask=0,
maximum_outgoing_transfer_size=82,
descriptor_capability_field=zdo_t.NodeDescriptor.DescriptorCapability.NONE,
),
)


Expand Down
23 changes: 22 additions & 1 deletion tests/test_gateway.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import zigpy.types
from zigpy.zcl.clusters import general, lighting
import zigpy.zdo.types
import zigpy.zdo.types as zdo_t
from zigpy.zdo.types import LogicalType, NodeDescriptor

from tests.common import get_entity, get_group_entity
Expand Down Expand Up @@ -85,7 +86,27 @@ async def coordinator(
},
ieee="00:15:8d:00:02:32:4f:32",
nwk=0x0000,
node_descriptor=b"\xf8\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff",
node_descriptor=zdo_t.NodeDescriptor(
logical_type=zdo_t.LogicalType.Coordinator,
complex_descriptor_available=0,
user_descriptor_available=0,
reserved=0,
aps_flags=0,
frequency_band=zdo_t.NodeDescriptor.FrequencyBand.Freq2400MHz,
mac_capability_flags=(
zdo_t.NodeDescriptor.MACCapabilityFlags.AlternatePanCoordinator
| zdo_t.NodeDescriptor.MACCapabilityFlags.FullFunctionDevice
| zdo_t.NodeDescriptor.MACCapabilityFlags.MainsPowered
| zdo_t.NodeDescriptor.MACCapabilityFlags.RxOnWhenIdle
| zdo_t.NodeDescriptor.MACCapabilityFlags.AllocateAddress
),
manufacturer_code=43981,
maximum_buffer_size=82,
maximum_incoming_transfer_size=128,
server_mask=11329,
maximum_outgoing_transfer_size=128,
descriptor_capability_field=zdo_t.NodeDescriptor.DescriptorCapability.NONE,
),
)
zha_device = await device_joined(zigpy_device)
zha_device.available = True
Expand Down
22 changes: 21 additions & 1 deletion tests/test_light.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
from zigpy.profiles import zha
from zigpy.zcl.clusters import general, lighting
import zigpy.zcl.foundation as zcl_f
import zigpy.zdo.types as zdo_t

from tests.common import (
get_entity,
Expand Down Expand Up @@ -105,7 +106,26 @@ async def coordinator(
},
ieee="00:15:8d:00:02:32:4f:32",
nwk=0x0000,
node_descriptor=b"\xf8\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff",
node_descriptor=zdo_t.NodeDescriptor(
logical_type=zdo_t.LogicalType.Router,
complex_descriptor_available=0,
user_descriptor_available=0,
reserved=0,
aps_flags=0,
frequency_band=zdo_t.NodeDescriptor.FrequencyBand.Freq2400MHz,
mac_capability_flags=(
zdo_t.NodeDescriptor.MACCapabilityFlags.FullFunctionDevice
| zdo_t.NodeDescriptor.MACCapabilityFlags.MainsPowered
| zdo_t.NodeDescriptor.MACCapabilityFlags.RxOnWhenIdle
| zdo_t.NodeDescriptor.MACCapabilityFlags.AllocateAddress
),
manufacturer_code=4107,
maximum_buffer_size=82,
maximum_incoming_transfer_size=128,
server_mask=11264,
maximum_outgoing_transfer_size=128,
descriptor_capability_field=zdo_t.NodeDescriptor.DescriptorCapability.NONE,
),
)
zha_device = await device_joined(zigpy_device)
zha_device.available = True
Expand Down
20 changes: 19 additions & 1 deletion tests/test_number.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from zigpy.profiles import zha
import zigpy.types
from zigpy.zcl.clusters import general, lighting
import zigpy.zdo.types as zdo_t

from tests.common import get_entity, send_attributes_report, update_attribute_cache
from tests.conftest import SIG_EP_INPUT, SIG_EP_OUTPUT, SIG_EP_PROFILE, SIG_EP_TYPE
Expand Down Expand Up @@ -56,7 +57,24 @@ async def light(zigpy_device_mock: Callable[..., ZigpyDevice]) -> ZigpyDevice:
SIG_EP_OUTPUT: [general.Ota.cluster_id],
}
},
node_descriptor=b"\x02@\x84_\x11\x7fd\x00\x00,d\x00\x00",
node_descriptor=zdo_t.NodeDescriptor(
logical_type=zdo_t.LogicalType.EndDevice,
complex_descriptor_available=0,
user_descriptor_available=0,
reserved=0,
aps_flags=0,
frequency_band=zdo_t.NodeDescriptor.FrequencyBand.Freq2400MHz,
mac_capability_flags=(
zdo_t.NodeDescriptor.MACCapabilityFlags.MainsPowered
| zdo_t.NodeDescriptor.MACCapabilityFlags.AllocateAddress
),
manufacturer_code=4447,
maximum_buffer_size=127,
maximum_incoming_transfer_size=100,
server_mask=11264,
maximum_outgoing_transfer_size=100,
descriptor_capability_field=zdo_t.NodeDescriptor.DescriptorCapability.NONE,
),
)

return zigpy_device
Expand Down
21 changes: 20 additions & 1 deletion tests/test_update.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import zigpy.types as t
from zigpy.zcl import Cluster, foundation
from zigpy.zcl.clusters import general
import zigpy.zdo.types as zdo_t

from tests.common import get_entity, update_attribute_cache
from tests.conftest import SIG_EP_INPUT, SIG_EP_OUTPUT, SIG_EP_TYPE
Expand All @@ -39,7 +40,25 @@ def zigpy_device(zigpy_device_mock):
}
}
return zigpy_device_mock(
endpoints, node_descriptor=b"\x02@\x84_\x11\x7fd\x00\x00,d\x00\x00"
endpoints,
node_descriptor=zdo_t.NodeDescriptor(
logical_type=zdo_t.LogicalType.EndDevice,
complex_descriptor_available=0,
user_descriptor_available=0,
reserved=0,
aps_flags=0,
frequency_band=zdo_t.NodeDescriptor.FrequencyBand.Freq2400MHz,
mac_capability_flags=(
zdo_t.NodeDescriptor.MACCapabilityFlags.MainsPowered
| zdo_t.NodeDescriptor.MACCapabilityFlags.AllocateAddress
),
manufacturer_code=4447,
maximum_buffer_size=127,
maximum_incoming_transfer_size=100,
server_mask=11264,
maximum_outgoing_transfer_size=100,
descriptor_capability_field=zdo_t.NodeDescriptor.DescriptorCapability.NONE,
),
)


Expand Down
Loading
Loading