mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
User code: - OpModeRobot used as the robot base class - LinearOpMode and PeriodicOpMode are provided opmode base classes - In Java, annotations can be used to automatically register opmode classes Additional user code functionality: - OpMode (string) is available in addition to the overall auto/teleop/test robot mode - OpMode does not indicate enable (enable/disable is still separate) - The HAL API uses integer UIDs; these are exposed at the user API level as well for faster checks - User code creates opmodes on startup (these have name, category, description, etc). DS: - DS will present opmode selection lists for auto and teleop for match/practice. During a match, the DS will automatically activate the selected opmode in the corresponding match period. - For testing, an overall mode is selected (e.g. teleop/auto/test) and a single opmode is selected Future work: - Command framework support/integration - Python annotation support - Unit tests (needs race-free DS sim updates) - Porting of examples Co-authored-by: Joseph Eng <91924258+KangarooKoala@users.noreply.github.com>
92 lines
1.7 KiB
C++
92 lines
1.7 KiB
C++
// Copyright (c) FIRST and other WPILib contributors.
|
|
// Open Source Software; you can modify and/or share it under the terms of
|
|
// the WPILib BSD license file in the root directory of this project.
|
|
|
|
#pragma once
|
|
|
|
#include <stdint.h>
|
|
|
|
#include "wpi/hal/DriverStationTypes.h"
|
|
#include "wpi/hal/HALBase.h"
|
|
#include "wpi/units/time.hpp"
|
|
|
|
namespace wpi::sim {
|
|
|
|
/**
|
|
* Override the HAL runtime type (simulated/real).
|
|
*
|
|
* @param type runtime type
|
|
*/
|
|
void SetRuntimeType(HAL_RuntimeType type);
|
|
|
|
/**
|
|
* Waits until the user program has started.
|
|
*/
|
|
void WaitForProgramStart();
|
|
|
|
/**
|
|
* Sets flag that indicates if the user program has started.
|
|
*
|
|
* @param started true if started
|
|
*/
|
|
void SetProgramStarted(bool started);
|
|
|
|
/**
|
|
* Returns true if the user program has started.
|
|
*
|
|
* @return True if the user program has started.
|
|
*/
|
|
bool GetProgramStarted();
|
|
|
|
/**
|
|
* Sets the user program state (control word).
|
|
*
|
|
* @param controlWord control word
|
|
*/
|
|
void SetProgramState(wpi::hal::ControlWord controlWord);
|
|
|
|
/**
|
|
* Gets the user program state (control word).
|
|
*
|
|
* @return Control word
|
|
*/
|
|
wpi::hal::ControlWord GetProgramState();
|
|
|
|
/**
|
|
* Restart the simulator time.
|
|
*/
|
|
void RestartTiming();
|
|
|
|
/**
|
|
* Pause the simulator time.
|
|
*/
|
|
void PauseTiming();
|
|
|
|
/**
|
|
* Resume the simulator time.
|
|
*/
|
|
void ResumeTiming();
|
|
|
|
/**
|
|
* Check if the simulator time is paused.
|
|
*
|
|
* @return true if paused
|
|
*/
|
|
bool IsTimingPaused();
|
|
|
|
/**
|
|
* Advance the simulator time and wait for all notifiers to run.
|
|
*
|
|
* @param delta the amount to advance (in seconds)
|
|
*/
|
|
void StepTiming(wpi::units::second_t delta);
|
|
|
|
/**
|
|
* Advance the simulator time and return immediately.
|
|
*
|
|
* @param delta the amount to advance (in seconds)
|
|
*/
|
|
void StepTimingAsync(wpi::units::second_t delta);
|
|
|
|
} // namespace wpi::sim
|