Source code for wpilib.iterativerobot

# validated: 2017-11-09 TW ef3267833fc3 edu/wpi/first/wpilibj/IterativeRobot.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
import logging

from .iterativerobotbase import IterativeRobotBase

__all__ = ["IterativeRobot"]


[docs]class IterativeRobot(IterativeRobotBase): """IterativeRobot implements the IterativeRobotBase robot program framework. The IterativeRobot class is intended to be subclassed by a user creating a robot program. periodic() functions from the base class are called each time a new packet is received from the driver station. """ #: A python logging object that you can use to send messages to the log. It #: is recommended to use this instead of print statements. logger = logging.getLogger("robot") def __init__(self): """Constructor for RobotIterativeBase. The constructor initializes the instance variables for the robot to indicate the status of initialization for disabled, autonomous, and teleop code. .. warning:: If you override ``__init__`` in your robot class, you must call the base class constructor. This must be used to ensure that the communications code starts. """ super().__init__() hal.report(hal.UsageReporting.kResourceType_Framework, hal.UsageReporting.kFramework_Iterative)
[docs] def startCompetition(self): """Provide an alternate "main loop" via startCompetition().""" self.robotInit() # Tell the DS that the robot is ready to be enabled hal.observeUserProgramStarting() # loop forever, calling the appropriate mode-dependent function while True: # Wait for new data to arrive self.ds.waitForData() # Call the appropriate function depending upon the current robot mode self.loopFunc()