23 return *replayAutoEnable;
28 frc::Notifier _enableNotifier;
29 uint32_t _startCount = 0;
35 if (dsAttachedSig.status.IsOK()) {
36 frc::sim::DriverStationSim::SetDsAttached(dsAttachedSig.value);
39 if (frc::sim::DriverStationSim::GetDsAttached()) {
41 if (fmsAttachedSig.status.IsOK()) {
42 frc::sim::DriverStationSim::SetFmsAttached(fmsAttachedSig.value);
46 if (enableSig.status.IsOK()) {
47 frc::sim::DriverStationSim::SetEnabled(enableSig.value);
51 if (robotModeSig.status.IsOK()) {
52 if (robotModeSig.value ==
"Autonomous") {
53 frc::sim::DriverStationSim::SetAutonomous(
true);
54 frc::sim::DriverStationSim::SetTest(
false);
55 frc::sim::DriverStationSim::SetEStop(
false);
56 }
else if (robotModeSig.value ==
"Test") {
57 frc::sim::DriverStationSim::SetAutonomous(
false);
58 frc::sim::DriverStationSim::SetTest(
true);
59 frc::sim::DriverStationSim::SetEStop(
false);
60 }
else if (robotModeSig.value ==
"EStopped") {
61 frc::sim::DriverStationSim::SetAutonomous(
false);
62 frc::sim::DriverStationSim::SetTest(
false);
63 frc::sim::DriverStationSim::SetEStop(
true);
65 frc::sim::DriverStationSim::SetAutonomous(
false);
66 frc::sim::DriverStationSim::SetTest(
false);
67 frc::sim::DriverStationSim::SetEStop(
false);
72 if (allianceStationSig.status.IsOK()) {
73 if (allianceStationSig.value ==
"Red 1") {
74 frc::sim::DriverStationSim::SetAllianceStationId(HAL_AllianceStationID_kRed1);
75 }
else if (allianceStationSig.value ==
"Red 2") {
76 frc::sim::DriverStationSim::SetAllianceStationId(HAL_AllianceStationID_kRed2);
77 }
else if (allianceStationSig.value ==
"Red 3") {
78 frc::sim::DriverStationSim::SetAllianceStationId(HAL_AllianceStationID_kRed3);
79 }
else if (allianceStationSig.value ==
"Blue 1") {
80 frc::sim::DriverStationSim::SetAllianceStationId(HAL_AllianceStationID_kBlue1);
81 }
else if (allianceStationSig.value ==
"Blue 2") {
82 frc::sim::DriverStationSim::SetAllianceStationId(HAL_AllianceStationID_kBlue2);
83 }
else if (allianceStationSig.value ==
"Blue 3") {
84 frc::sim::DriverStationSim::SetAllianceStationId(HAL_AllianceStationID_kBlue3);
86 frc::sim::DriverStationSim::SetAllianceStationId(HAL_AllianceStationID_kUnknown);
90 frc::sim::DriverStationSim::NotifyNewData();
102 std::lock_guard<std::mutex> lock{_lck};
103 if (_startCount < UINT32_MAX) {
104 if (_startCount++ == 0) {
106 _enableNotifier.StartPeriodic(10_ms);
118 std::lock_guard<std::mutex> lock{_lck};
119 if (_startCount > 0) {
120 if (--_startCount == 0) {
122 _enableNotifier.Stop();