Skip to content

Commit 44e1923

Browse files
committed
DiscoveryClient: Add support for local-mode discovery
1 parent b6a398f commit 44e1923

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

examples/discover_devices.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,15 @@ async def main():
2525

2626
for d in devices:
2727
print(d["name"])
28-
print(" - Address:", d["address"])
2928
print(" - Version:", d["versionstr"])
30-
print(" - Port:", str(d["port"]))
29+
print(" - Local:", d["local"])
30+
31+
if not d["local"]:
32+
print(" - Address:", d["address"])
33+
print(" - Port:", str(d["port"]))
34+
else:
35+
print(" - PID:", str(d["pid"]))
36+
3137
print("")
3238

3339
asyncio.run(main())

zbnt/DiscoveryClient.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ def connection_lost(self, exc):
7878
pass
7979

8080
def message_received(self, msg_id, msg_payload):
81-
if msg_id != Messages.MSG_ID_DISCOVERY or len(msg_payload) <= 47:
81+
if msg_id != Messages.MSG_ID_DISCOVERY or len(msg_payload) <= 54:
8282
return
8383

8484
validator = decode_u64(msg_payload[0:8])
@@ -116,14 +116,20 @@ def message_received(self, msg_id, msg_payload):
116116
ip, _ = socket.getnameinfo(self.remote_addr, 0)
117117

118118
device["address"] = ip
119-
device["port"] = decode_u16(msg_payload[45:47])
120-
device["name"] = msg_payload[47:].decode("UTF-8")
119+
device["local"] = bool(msg_payload[45])
120+
121+
if not device["local"]:
122+
device["port"] = decode_u16(msg_payload[46:48])
123+
else:
124+
device["pid"] = decode_s64(msg_payload[46:54])
125+
126+
device["name"] = msg_payload[54:].decode("UTF-8")
121127

122128
self.on_device_discovered(device)
123129

124130
async def discover_devices(timeout, ip4=False):
125131
device_list = []
126-
address4_set = set()
132+
address4_set = set(["127.0.0.1"])
127133
address6_list = []
128134

129135
# Get broadcast address of every available interface

0 commit comments

Comments
 (0)