mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-21 01:01:43 +00:00
LiveWindow.updateValues() is now called from IterativeRobotBase on every loop iteration. Telemetry for all WPILib classes is enabled by default; it can be disabled for specific classes using LiveWindow.disableTelemetry(), or all telemetry can be disabled using LiveWindow.disableAllTelemetry(). This necessitated changing the hook methodology into other classes to be more property-based rather than each class providing multiple functions. This had the benefit of reducing boilerplate and increasing consistency. - Remove NamedSendable, add name to Sendable. - Provide SendableBase abstract class. - Deprecate LiveWindow addSensor/addActuator interfaces. - Add LiveWindow support to drive classes. - Add addChild() helper functions to Subsystem. - Fix inheritance hierarchy. Now only sensors inherit from SensorBase. Other devices inherit from some combination of SendableBase, ErrorBase, or nothing.
51 lines
1.8 KiB
C++
51 lines
1.8 KiB
C++
/*----------------------------------------------------------------------------*/
|
|
/* Copyright (c) 2011-2017 FIRST. 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. */
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
#include "Buttons/Button.h"
|
|
#include "Buttons/CancelButtonScheduler.h"
|
|
#include "Buttons/HeldButtonScheduler.h"
|
|
#include "Buttons/PressedButtonScheduler.h"
|
|
#include "Buttons/ReleasedButtonScheduler.h"
|
|
#include "Buttons/ToggleButtonScheduler.h"
|
|
#include "SmartDashboard/SendableBuilder.h"
|
|
|
|
using namespace frc;
|
|
|
|
bool Trigger::Grab() { return Get() || m_sendablePressed; }
|
|
|
|
void Trigger::WhenActive(Command* command) {
|
|
auto pbs = new PressedButtonScheduler(Grab(), this, command);
|
|
pbs->Start();
|
|
}
|
|
|
|
void Trigger::WhileActive(Command* command) {
|
|
auto hbs = new HeldButtonScheduler(Grab(), this, command);
|
|
hbs->Start();
|
|
}
|
|
|
|
void Trigger::WhenInactive(Command* command) {
|
|
auto rbs = new ReleasedButtonScheduler(Grab(), this, command);
|
|
rbs->Start();
|
|
}
|
|
|
|
void Trigger::CancelWhenActive(Command* command) {
|
|
auto cbs = new CancelButtonScheduler(Grab(), this, command);
|
|
cbs->Start();
|
|
}
|
|
|
|
void Trigger::ToggleWhenActive(Command* command) {
|
|
auto tbs = new ToggleButtonScheduler(Grab(), this, command);
|
|
tbs->Start();
|
|
}
|
|
|
|
void Trigger::InitSendable(SendableBuilder& builder) {
|
|
builder.SetSmartDashboardType("Button");
|
|
builder.SetSafeState([=]() { m_sendablePressed = false; });
|
|
builder.AddBooleanProperty("pressed", [=]() { return Grab(); },
|
|
[=](bool value) { m_sendablePressed = value; });
|
|
}
|