Skip to content

Commit f53eced

Browse files
committed
misc: add toggleable repeat commands
Allows a repeat command to be toggled rather than remove-then-add. Updates the list to print the current state of each of the RepeatCommands.
1 parent 99e0ba5 commit f53eced

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

MAVProxy/modules/mavproxy_misc.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,10 @@ def __init__(self, period, cmd):
2525
self.period = period
2626
self.cmd = cmd
2727
self.event = mavutil.periodic_event(1.0/period)
28+
self.enabled = True
2829

2930
def __str__(self):
30-
return "Every %.1f seconds: %s" % (self.period, self.cmd)
31+
return "[%s] Every %.1f seconds: %s" % (("x" if self.enabled else " "), self.period, self.cmd)
3132

3233

3334
def run_command(args, cwd=None, shell=False, timeout=None, env=None):
@@ -523,6 +524,23 @@ def cmd_repeat(self, args):
523524
return
524525
self.repeats.pop(i)
525526
return
527+
elif args[0] == 'toggle':
528+
if len(args) < 2:
529+
print("Usage: repeat toggle INDEX..")
530+
return
531+
532+
for i in range(1, len(args)):
533+
try:
534+
i = int(args[i])
535+
except ValueError:
536+
print(f"Unable to toggle: Index {args[i]} is not a number")
537+
continue
538+
if i < 0 or i >= len(self.repeats):
539+
print(f"Unable to toggle: Invalid index {i}")
540+
continue
541+
self.repeats[i].enabled = not self.repeats[i].enabled
542+
print(f"{i}: {self.repeats[i]}")
543+
return
526544
elif args[0] == 'clean':
527545
self.repeats = []
528546
else:
@@ -706,7 +724,7 @@ def mavlink_packet(self, m):
706724
def idle_task(self):
707725
'''called on idle'''
708726
for r in self.repeats:
709-
if r.event.trigger():
727+
if r.enabled and r.event.trigger():
710728
self.mpstate.functions.process_stdin(r.cmd, immediate=True)
711729

712730

0 commit comments

Comments
 (0)