Add mechanism to control Shuffleboard recordings and add event markers (#1414)

This commit is contained in:
Sam Carlberg
2018-11-19 02:15:30 -05:00
committed by Peter Johnson
parent 69cb53b51b
commit 45f4472d42
8 changed files with 433 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
/*----------------------------------------------------------------------------*/
/* Copyright (c) 2018 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 "frc/shuffleboard/RecordingController.h"
#include "frc/DriverStation.h"
using namespace frc;
using namespace frc::detail;
RecordingController::RecordingController(nt::NetworkTableInstance ntInstance)
: m_recordingControlEntry(), m_recordingFileNameFormatEntry() {
m_recordingControlEntry =
ntInstance.GetEntry("/Shuffleboard/.recording/RecordData");
m_recordingFileNameFormatEntry =
ntInstance.GetEntry("/Shuffleboard/.recording/FileNameFormat");
m_eventsTable = ntInstance.GetTable("/Shuffleboard/.recording/events");
}
void RecordingController::StartRecording() {
m_recordingControlEntry.SetBoolean(true);
}
void RecordingController::StopRecording() {
m_recordingControlEntry.SetBoolean(false);
}
void RecordingController::SetRecordingFileNameFormat(wpi::StringRef format) {
m_recordingFileNameFormatEntry.SetString(format);
}
void RecordingController::ClearRecordingFileNameFormat() {
m_recordingFileNameFormatEntry.Delete();
}
void RecordingController::AddEventMarker(
wpi::StringRef name, wpi::StringRef description,
ShuffleboardEventImportance importance) {
if (name.empty()) {
DriverStation::ReportError("Shuffleboard event name was not specified");
return;
}
auto arr = wpi::ArrayRef<std::string>{
description, ShuffleboardEventImportanceName(importance)};
m_eventsTable->GetSubTable(name)->GetEntry("Info").SetStringArray(arr);
}

View File

@@ -29,8 +29,39 @@ void Shuffleboard::DisableActuatorWidgets() {
GetInstance().DisableActuatorWidgets();
}
void Shuffleboard::StartRecording() {
GetRecordingController().StartRecording();
}
void Shuffleboard::StopRecording() { GetRecordingController().StopRecording(); }
void Shuffleboard::SetRecordingFileNameFormat(wpi::StringRef format) {
GetRecordingController().SetRecordingFileNameFormat(format);
}
void Shuffleboard::ClearRecordingFileNameFormat() {
GetRecordingController().ClearRecordingFileNameFormat();
}
void Shuffleboard::AddEventMarker(wpi::StringRef name,
wpi::StringRef description,
ShuffleboardEventImportance importance) {
GetRecordingController().AddEventMarker(name, description, importance);
}
void Shuffleboard::AddEventMarker(wpi::StringRef name,
ShuffleboardEventImportance importance) {
AddEventMarker(name, "", importance);
}
detail::ShuffleboardInstance& Shuffleboard::GetInstance() {
static detail::ShuffleboardInstance inst(
nt::NetworkTableInstance::GetDefault());
return inst;
}
detail::RecordingController& Shuffleboard::GetRecordingController() {
static detail::RecordingController inst(
nt::NetworkTableInstance::GetDefault());
return inst;
}