mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-25 01:41:43 +00:00
Split Sendable into NT and non-NT portions (#3432)
The non-NT portion has been moved to wpiutil. The NT portion has been moved to ntcore (as NTSendable). SendableBuilder similarly split and moved. SendableRegistry moved to wpiutil. In C++, SendableHelper also moved to wpiutil. This enables use of Sendable from wpimath and also enables moving several classes from wpilib to wpimath.
This commit is contained in:
@@ -4,36 +4,41 @@
|
||||
|
||||
#include "frc/shuffleboard/ComplexWidget.h"
|
||||
|
||||
#include "frc/smartdashboard/Sendable.h"
|
||||
#include <wpi/sendable/Sendable.h>
|
||||
|
||||
#include "frc/smartdashboard/SendableBuilderImpl.h"
|
||||
|
||||
using namespace frc;
|
||||
|
||||
ComplexWidget::ComplexWidget(ShuffleboardContainer& parent,
|
||||
std::string_view title, Sendable& sendable)
|
||||
std::string_view title, wpi::Sendable& sendable)
|
||||
: ShuffleboardValue(title),
|
||||
ShuffleboardWidget(parent, title),
|
||||
m_sendable(sendable) {}
|
||||
|
||||
ComplexWidget::~ComplexWidget() = default;
|
||||
|
||||
void ComplexWidget::EnableIfActuator() {
|
||||
if (m_builder.IsActuator()) {
|
||||
m_builder.StartLiveWindowMode();
|
||||
if (m_builder && static_cast<SendableBuilderImpl&>(*m_builder).IsActuator()) {
|
||||
static_cast<SendableBuilderImpl&>(*m_builder).StartLiveWindowMode();
|
||||
}
|
||||
}
|
||||
|
||||
void ComplexWidget::DisableIfActuator() {
|
||||
if (m_builder.IsActuator()) {
|
||||
m_builder.StopLiveWindowMode();
|
||||
if (m_builder && static_cast<SendableBuilderImpl&>(*m_builder).IsActuator()) {
|
||||
static_cast<SendableBuilderImpl&>(*m_builder).StopLiveWindowMode();
|
||||
}
|
||||
}
|
||||
|
||||
void ComplexWidget::BuildInto(std::shared_ptr<nt::NetworkTable> parentTable,
|
||||
std::shared_ptr<nt::NetworkTable> metaTable) {
|
||||
BuildMetadata(metaTable);
|
||||
if (!m_builderInit) {
|
||||
m_builder.SetTable(parentTable->GetSubTable(GetTitle()));
|
||||
m_sendable.InitSendable(m_builder);
|
||||
m_builder.StartListeners();
|
||||
m_builderInit = true;
|
||||
if (!m_builder) {
|
||||
m_builder = std::make_unique<SendableBuilderImpl>();
|
||||
static_cast<SendableBuilderImpl&>(*m_builder)
|
||||
.SetTable(parentTable->GetSubTable(GetTitle()));
|
||||
m_sendable.InitSendable(static_cast<SendableBuilderImpl&>(*m_builder));
|
||||
static_cast<SendableBuilderImpl&>(*m_builder).StartListeners();
|
||||
}
|
||||
m_builder.UpdateTable();
|
||||
m_builder->Update();
|
||||
}
|
||||
|
||||
@@ -9,9 +9,8 @@
|
||||
#include <string>
|
||||
|
||||
#include <wpi/DenseMap.h>
|
||||
|
||||
#include "frc/smartdashboard/SendableBuilder.h"
|
||||
#include "frc/smartdashboard/SendableRegistry.h"
|
||||
#include <wpi/sendable/SendableBuilder.h>
|
||||
#include <wpi/sendable/SendableRegistry.h>
|
||||
|
||||
namespace frc {
|
||||
namespace detail {
|
||||
@@ -21,12 +20,12 @@ std::shared_ptr<SendableCameraWrapper>& GetSendableCameraWrapper(
|
||||
return wrappers[static_cast<int>(source)];
|
||||
}
|
||||
|
||||
void AddToSendableRegistry(frc::Sendable* sendable, std::string name) {
|
||||
SendableRegistry::GetInstance().Add(sendable, name);
|
||||
void AddToSendableRegistry(wpi::Sendable* sendable, std::string name) {
|
||||
wpi::SendableRegistry::GetInstance().Add(sendable, name);
|
||||
}
|
||||
} // namespace detail
|
||||
|
||||
void SendableCameraWrapper::InitSendable(SendableBuilder& builder) {
|
||||
void SendableCameraWrapper::InitSendable(wpi::SendableBuilder& builder) {
|
||||
builder.AddStringProperty(
|
||||
".ShuffleboardURI", [this] { return m_uri; }, nullptr);
|
||||
}
|
||||
|
||||
@@ -4,12 +4,13 @@
|
||||
|
||||
#include "frc/shuffleboard/ShuffleboardContainer.h"
|
||||
|
||||
#include <wpi/sendable/SendableRegistry.h>
|
||||
|
||||
#include "frc/Errors.h"
|
||||
#include "frc/shuffleboard/ComplexWidget.h"
|
||||
#include "frc/shuffleboard/ShuffleboardComponent.h"
|
||||
#include "frc/shuffleboard/ShuffleboardLayout.h"
|
||||
#include "frc/shuffleboard/SimpleWidget.h"
|
||||
#include "frc/smartdashboard/SendableRegistry.h"
|
||||
|
||||
using namespace frc;
|
||||
|
||||
@@ -57,7 +58,7 @@ ShuffleboardLayout& ShuffleboardContainer::GetLayout(std::string_view title) {
|
||||
}
|
||||
|
||||
ComplexWidget& ShuffleboardContainer::Add(std::string_view title,
|
||||
Sendable& sendable) {
|
||||
wpi::Sendable& sendable) {
|
||||
CheckTitle(title);
|
||||
auto widget = std::make_unique<ComplexWidget>(*this, title, sendable);
|
||||
auto ptr = widget.get();
|
||||
@@ -65,8 +66,8 @@ ComplexWidget& ShuffleboardContainer::Add(std::string_view title,
|
||||
return *ptr;
|
||||
}
|
||||
|
||||
ComplexWidget& ShuffleboardContainer::Add(Sendable& sendable) {
|
||||
auto name = SendableRegistry::GetInstance().GetName(&sendable);
|
||||
ComplexWidget& ShuffleboardContainer::Add(wpi::Sendable& sendable) {
|
||||
auto name = wpi::SendableRegistry::GetInstance().GetName(&sendable);
|
||||
if (name.empty()) {
|
||||
FRC_ReportError(err::Error, "{}", "Sendable must have a name");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user