001/************************ PROJECT ZIXI ************************/
002/* Copyright (c) 2026 StuyPulse Robotics. All rights reserved.*/
003/* This work is licensed under the terms of the MIT license.  */
004/**************************************************************/
005package com.stuypulse.robot.constants;
006
007import static org.wpilib.units.Units.*;
008
009import org.wpilib.framework.RobotBase;
010import org.wpilib.units.measure.*;
011
012import org.littletonrobotics.junction.networktables.LoggedNetworkBoolean;
013
014/** File containing non-subsystem settings for the robot. */
015public interface GlobalSettings {
016    Time DT = Milliseconds.of(20);
017
018    /**
019     * Uses a {@link LoggedNetworkBoolean} for each subsystem to add subsystem toggling
020     * functionality from external dashboards.
021     */
022    interface EnabledSubsystems {
023        LoggedNetworkBoolean VISION = new LoggedNetworkBoolean("/Tuning/Enabled Subsystems/Vision");
024    }
025
026    /** What mode the robot is in when running a simulation. */
027    RobotMode SIM_MODE = RobotMode.SIM;
028
029    RobotMode CURRENT_MODE = RobotBase.isReal() ? RobotMode.REAL : SIM_MODE;
030
031    enum RobotMode {
032        /** Running on a real robot. */
033        REAL,
034
035        /** Running in simulation. */
036        SIM,
037
038        /** Replaying from a log file. */
039        REPLAY
040    }
041}