diff --git a/mavctl/messages/navigator.py b/mavctl/messages/navigator.py index 9fbc34a..2efded2 100644 --- a/mavctl/messages/navigator.py +++ b/mavctl/messages/navigator.py @@ -44,6 +44,15 @@ def wait_vehicle_armed(self): self.master.motors_armed_wait() print("Armed!") + def wait_for_mode_and_arm(self, mode="GUIDED", timeout=None) -> bool: + """Wait for the vehicle to enter ``mode`` and to be armed""" + mode_ready = self.set_mode_wait(mode=mode, timeout=timeout) + if not mode_ready: + return False + while not self.wait_vehicle_armed(): + return True + pass + def disarm(self): """ Disarms the drone. @@ -444,4 +453,3 @@ def wait_target_reached_global(self, target, timeout = 30): return False return True - diff --git a/mavctl/tests/flight_tests/air.py b/mavctl/tests/flight_tests/air.py index 31cb72b..82a0b59 100644 --- a/mavctl/tests/flight_tests/air.py +++ b/mavctl/tests/flight_tests/air.py @@ -10,10 +10,7 @@ mav = conn.connect() master = Navigator(mav) -while master.wait_vehicle_armed(): - pass - -while not master.set_mode_wait(): +while not master.wait_for_mode_and_arm(): pass print("moving") diff --git a/mavctl/tests/flight_tests/auto.py b/mavctl/tests/flight_tests/auto.py index 6660f4d..cb8b2c6 100644 --- a/mavctl/tests/flight_tests/auto.py +++ b/mavctl/tests/flight_tests/auto.py @@ -11,10 +11,6 @@ master = Navigator(mav) master.send_status_message("MAVCTL: Online") -while master.wait_vehicle_armed(): +while not master.wait_for_mode_and_arm(): pass -while not master.set_mode_wait(): - pass - - diff --git a/mavctl/tests/flight_tests/first_flight.py b/mavctl/tests/flight_tests/first_flight.py index 0da3ffe..3c697c5 100644 --- a/mavctl/tests/flight_tests/first_flight.py +++ b/mavctl/tests/flight_tests/first_flight.py @@ -1,7 +1,6 @@ from mavctl.connect.conn import Connect from pymavlink import mavutil from mavctl.messages.navigator import Navigator -from mavctl.messages.messenger import Messenger from mavctl.messages import advanced import time @@ -10,10 +9,7 @@ connect = Connect(ip = CONN_STR) drone = Navigator(connect.master) -while drone.wait_vehicle_armed(): - pass - -while not drone.set_mode_wait(): +while not drone.wait_for_mode_and_arm(): pass drone.takeoff(10) diff --git a/mavctl/tests/flight_tests/plane.py b/mavctl/tests/flight_tests/plane.py index 7ed6a93..a90fd11 100644 --- a/mavctl/tests/flight_tests/plane.py +++ b/mavctl/tests/flight_tests/plane.py @@ -6,12 +6,7 @@ mav = conn.connect() master = Navigator(mav) - - -while master.wait_vehicle_armed(): - pass - -while not master.set_mode_wait(): +while not master.wait_for_mode_and_arm(): pass print("moving") diff --git a/mavctl/tests/flight_tests/quad.py b/mavctl/tests/flight_tests/quad.py index 85349e5..d62df93 100644 --- a/mavctl/tests/flight_tests/quad.py +++ b/mavctl/tests/flight_tests/quad.py @@ -6,12 +6,7 @@ mav = conn.connect() master = Navigator(mav) - - -while master.wait_vehicle_armed(): - pass - -while not master.set_mode_wait(): +while not master.wait_for_mode_and_arm(): pass master.takeoff(10) diff --git a/mavctl/tests/flight_tests/swarm/copter1.py b/mavctl/tests/flight_tests/swarm/copter1.py index ca989de..a88ce5d 100644 --- a/mavctl/tests/flight_tests/swarm/copter1.py +++ b/mavctl/tests/flight_tests/swarm/copter1.py @@ -17,17 +17,11 @@ master2 = Navigator(mav2) -while master1.wait_vehicle_armed(): +while not master1.wait_for_mode_and_arm(): pass -while not master1.set_mode_wait(): - pass - - -while master2.wait_vehicle_armed(): - pass -while not master2.set_mode_wait(): +while not master2.wait_for_mode_and_arm(): pass diff --git a/mavctl/tests/flight_tests/swarm/copter2.py b/mavctl/tests/flight_tests/swarm/copter2.py index 1933777..5300dfb 100644 --- a/mavctl/tests/flight_tests/swarm/copter2.py +++ b/mavctl/tests/flight_tests/swarm/copter2.py @@ -11,10 +11,7 @@ master = Navigator(mav) master.send_status_message("MAVCTL: Online") -while master.wait_vehicle_armed(): - pass - -while not master.set_mode_wait(): +while not master.wait_for_mode_and_arm(): pass master.takeoff(10) diff --git a/mavctl/tests/flight_tests/waypoint.py b/mavctl/tests/flight_tests/waypoint.py index dcfd739..cf615b0 100644 --- a/mavctl/tests/flight_tests/waypoint.py +++ b/mavctl/tests/flight_tests/waypoint.py @@ -7,7 +7,7 @@ mav = conn.connect() master = Navigator(mav) -while master.set_mode_wait() and master.wait_vehicle_armed(): +while not master.wait_for_mode_and_arm(): pass master.takeoff(10)