mirror of
https://github.com/okalachev/flix.git
synced 2025-08-17 17:16:10 +00:00
Add Python library (#20)
This commit is contained in:
37
tools/pyflix/proxy.py
Executable file
37
tools/pyflix/proxy.py
Executable file
@@ -0,0 +1,37 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
"""Proxy for running pyflix library alongside QGroundControl app."""
|
||||
|
||||
import socket
|
||||
|
||||
LOCAL = ('0.0.0.0', 14550) # from Flix
|
||||
TARGETS = (
|
||||
('127.0.0.1', 14560), # to QGroundControl
|
||||
('127.0.0.1', 14555), # to pyflix
|
||||
)
|
||||
|
||||
def main():
|
||||
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||
sock.bind(LOCAL)
|
||||
|
||||
source_addr = None
|
||||
packets = 0
|
||||
|
||||
print('Proxy started - run QGroundControl')
|
||||
|
||||
while True:
|
||||
data, addr = sock.recvfrom(1024) # read entire UDP packet
|
||||
if addr in TARGETS: # packet from target
|
||||
if source_addr is None:
|
||||
continue
|
||||
sock.sendto(data, source_addr)
|
||||
else: # packet from source
|
||||
source_addr = addr
|
||||
for target in TARGETS:
|
||||
sock.sendto(data, target)
|
||||
|
||||
packets += 1
|
||||
print(f'\rPackets: {packets}', end='')
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Reference in New Issue
Block a user