예제 #1
0
    def deserialize(cls, data: bytes):
        """Deserialize data."""
        mode, data = AddrMode.deserialize(data)
        if mode in (AddrMode.NWK, AddrMode.Group, AddrMode.Broadcast):
            # a value of 2 indicates 2-byte (16-bit) address mode,
            # using only the 2 LSB’s of the DstAddr field to form
            # a 2-byte short address.
            addr64, data = basic.uint64_t.deserialize(data)
            addr = NWK(addr64 & 0xFFFF)
        elif mode == AddrMode.IEEE:
            addr, data = EUI64.deserialize(data)
        else:
            raise ValueError(f"Unknown address mode: {mode}")

        return cls(mode=mode, address=addr), data
예제 #2
0
def ieee():
    return EUI64.deserialize(b"\x00\x01\x02\x03\x04\x05\x06\x07")[0]