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
def ieee(): return EUI64.deserialize(b"\x00\x01\x02\x03\x04\x05\x06\x07")[0]