Source code for wpilib.timedrobot

# validated: 2017-11-09 TW ef3267833fc3 edu/wpi/first/wpilibj/TimedRobot.java
# ----------------------------------------------------------------------------
# Copyright (c) FIRST 2008-2012. All Rights Reserved.
# Open Source Software - may be modified and shared by FRC teams. The code
# must be accompanied by the FIRST BSD license file in the root directory of
# the project.
# ----------------------------------------------------------------------------

import hal

from .iterativerobotbase import IterativeRobotBase
from .notifier import Notifier
from .timer import Timer


__all__ = ["TimedRobot"]


[docs]class TimedRobot(IterativeRobotBase): """TimedRobot implements the IterativeRobotBase robot program framework. The TimedRobot class is intended to be subclassed by a user creating a robot program. periodic() functions from the base class are called on an interval by a Notifier instance. """ DEFAULT_PERIOD = .02 def __init__(self): super().__init__() hal.report(hal.UsageReporting.kResourceType_Framework, hal.UsageReporting.kFramework_Iterative) self.period = TimedRobot.DEFAULT_PERIOD # Prevents loop from starting if user calls setPeriod() in robotInit() self.startLoop = False self.loop = Notifier(self.loopFunc)
[docs] def startCompetition(self) -> None: """Provide an alternate "main loop" via startCompetition()""" self.robotInit() hal.observeUserProgramStarting() self.startLoop = True self.loop.startPeriodic(self.period) while True: Timer.delay(60*60*24)
[docs] def setPeriod(self, period: float) -> None: """Set time period between calls to Periodic() functions. :param period: Period in seconds """ self.period = period if self.startLoop: self.loop.startPeriodic(self.period)