Files
allwpilib/commandsv2/src/main/python/commands2/waitcommand.py
PJ Reiniger 1a99a348cb [robotpy] Mirror robotpy's commands-v2 (#8369)
Project import generated by Copybara.

GitOrigin-RevId: 715c8e8372d936f447f2937aab6b1a22dc619126
2025-11-13 21:55:54 -08:00

42 lines
1.1 KiB
Python

# validated: 2024-01-20 DS f29a7d2e501b WaitCommand.java
from __future__ import annotations
from wpilib import Timer
from wpimath import units
from wpiutil import SendableBuilder
from .command import Command
class WaitCommand(Command):
"""
A command that does nothing but takes a specified amount of time to finish.
"""
def __init__(self, seconds: units.seconds):
"""
Creates a new WaitCommand. This command will do nothing, and end after the specified duration.
:param seconds: the time to wait, in seconds
"""
super().__init__()
self._duration = seconds
self._timer = Timer()
self.setName(f"{self.getName()}: {seconds}")
def initialize(self):
self._timer.restart()
def end(self, interrupted: bool):
self._timer.stop()
def isFinished(self) -> bool:
return self._timer.hasElapsed(self._duration)
def runsWhenDisabled(self) -> bool:
return True
def initSendable(self, builder: SendableBuilder) -> None:
super().initSendable(builder)
builder.addDoubleProperty("duration", lambda: self._duration, lambda _: None)