mavkit 0.3.0

Async MAVLink SDK for vehicle control, missions, and parameters
Documentation
.PHONY: bridge-up bridge-down test-sitl test-sitl-strict

SITL_NAME := ardupilot-sitl
SITL_IMAGE := radarku/ardupilot-sitl:eff32c1f98152ac3d1dc09a1e475733b73ce569f
MAVPROXY_LOG := /tmp/mavkit-mavproxy.log
MAVPROXY_PID := /tmp/mavkit-mavproxy.pid
MAVKIT_SITL_UDP_BIND ?= 0.0.0.0:14550
PYTHON ?= python3

bridge-up:
	docker rm -f $(SITL_NAME) >/dev/null 2>&1 || true
	docker pull $(SITL_IMAGE)
		docker run -d --rm --name $(SITL_NAME) -p 5760:5760 \
			--entrypoint /ardupilot/build/sitl/bin/arducopter \
			$(SITL_IMAGE) \
			--model + --speedup 1 --defaults /ardupilot/Tools/autotest/default_params/copter.parm \
			--home 42.3898,-71.1476,14.0,270.0 -w
	$(PYTHON) scripts/wait_tcp.py 127.0.0.1 5760 120
		nohup uvx --from mavproxy --with future --python 3.11 mavproxy.py \
			--master=tcp:127.0.0.1:5760 \
			--out=udp:127.0.0.1:14550 \
			--daemon --non-interactive \
			--default-modules=link,signing,log,wp,rally,fence,param,relay,tuneopt,arm,mode,calibration,rc,auxopt,misc,cmdlong,battery,terrain,output,layout \
			>$(MAVPROXY_LOG) 2>&1 < /dev/null &
		printf "%s" $$! > $(MAVPROXY_PID)
	$(PYTHON) scripts/wait_udp_telemetry.py 0.0.0.0 14550 180

test-sitl:
	MAVKIT_SITL_UDP_BIND=$(MAVKIT_SITL_UDP_BIND) cargo test --tests -- --ignored --nocapture --test-threads=1

test-sitl-strict:
	MAVKIT_SITL_UDP_BIND=$(MAVKIT_SITL_UDP_BIND) MAVKIT_SITL_STRICT=1 cargo test --tests -- --ignored --nocapture --test-threads=1

bridge-down:
	if [ -f $(MAVPROXY_PID) ]; then kill "$$(cat $(MAVPROXY_PID))" >/dev/null 2>&1 || true; fi
	pkill -f "[m]avproxy.py --master=tcp:127.0.0.1:5760" >/dev/null 2>&1 || true
	docker rm -f $(SITL_NAME) >/dev/null 2>&1 || true
	rm -f $(MAVPROXY_PID)