diff --git a/wpilibc/src/main/native/cpp/smartdashboard/SendableBuilderImpl.cpp b/wpilibc/src/main/native/cpp/smartdashboard/SendableBuilderImpl.cpp index ddd8ec0e07..a6723a6735 100644 --- a/wpilibc/src/main/native/cpp/smartdashboard/SendableBuilderImpl.cpp +++ b/wpilibc/src/main/native/cpp/smartdashboard/SendableBuilderImpl.cpp @@ -130,7 +130,8 @@ void SendableBuilderImpl::AddPropertyImpl(Topic topic, Getter getter, }; } if (setter) { - prop->sub = topic.Subscribe({}); + prop->sub = topic.Subscribe( + {}, {{nt::PubSubOption::ExcludePublisher(prop->pub.GetHandle())}}); prop->updateLocal = [=](auto& sub) { for (auto&& val : sub.ReadQueue()) { setter(val.value); @@ -223,7 +224,9 @@ void SendableBuilderImpl::AddRawProperty( }; } if (setter) { - prop->sub = topic.Subscribe(typeString, {}); + prop->sub = topic.Subscribe( + typeString, {}, + {{nt::PubSubOption::ExcludePublisher(prop->pub.GetHandle())}}); prop->updateLocal = [=](auto& sub) { for (auto&& val : sub.ReadQueue()) { setter(val.value); @@ -246,7 +249,8 @@ void SendableBuilderImpl::AddSmallPropertyImpl(Topic topic, Getter getter, }; } if (setter) { - prop->sub = topic.Subscribe({}); + prop->sub = topic.Subscribe( + {}, {{nt::PubSubOption::ExcludePublisher(prop->pub.GetHandle())}}); prop->updateLocal = [=](auto& sub) { for (auto&& val : sub.ReadQueue()) { setter(val.value); @@ -324,7 +328,9 @@ void SendableBuilderImpl::AddSmallRawProperty( }; } if (setter) { - prop->sub = topic.Subscribe(typeString, {}); + prop->sub = topic.Subscribe( + typeString, {}, + {{nt::PubSubOption::ExcludePublisher(prop->pub.GetHandle())}}); prop->updateLocal = [=](auto& sub) { for (auto&& val : sub.ReadQueue()) { setter(val.value); diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/smartdashboard/SendableBuilderImpl.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/smartdashboard/SendableBuilderImpl.java index 5a442f32a4..2ce2e65aaa 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/smartdashboard/SendableBuilderImpl.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/smartdashboard/SendableBuilderImpl.java @@ -30,6 +30,7 @@ import edu.wpi.first.networktables.IntegerSubscriber; import edu.wpi.first.networktables.IntegerTopic; import edu.wpi.first.networktables.NTSendableBuilder; import edu.wpi.first.networktables.NetworkTable; +import edu.wpi.first.networktables.PubSubOption; import edu.wpi.first.networktables.Publisher; import edu.wpi.first.networktables.RawPublisher; import edu.wpi.first.networktables.RawSubscriber; @@ -316,7 +317,7 @@ public class SendableBuilderImpl implements NTSendableBuilder { property.m_updateNetwork = (pub, time) -> pub.set(getter.getAsBoolean(), time); } if (setter != null) { - property.m_sub = topic.subscribe(false); + property.m_sub = topic.subscribe(false, PubSubOption.excludePublisher(property.m_pub)); property.m_updateLocal = sub -> { for (boolean val : sub.readQueueValues()) { @@ -343,7 +344,7 @@ public class SendableBuilderImpl implements NTSendableBuilder { property.m_updateNetwork = (pub, time) -> pub.set(getter.getAsLong(), time); } if (setter != null) { - property.m_sub = topic.subscribe(0); + property.m_sub = topic.subscribe(0, PubSubOption.excludePublisher(property.m_pub)); property.m_updateLocal = sub -> { for (long val : sub.readQueueValues()) { @@ -370,7 +371,7 @@ public class SendableBuilderImpl implements NTSendableBuilder { property.m_updateNetwork = (pub, time) -> pub.set(getter.getAsFloat(), time); } if (setter != null) { - property.m_sub = topic.subscribe(0.0f); + property.m_sub = topic.subscribe(0.0f, PubSubOption.excludePublisher(property.m_pub)); property.m_updateLocal = sub -> { for (float val : sub.readQueueValues()) { @@ -397,7 +398,7 @@ public class SendableBuilderImpl implements NTSendableBuilder { property.m_updateNetwork = (pub, time) -> pub.set(getter.getAsDouble(), time); } if (setter != null) { - property.m_sub = topic.subscribe(0.0); + property.m_sub = topic.subscribe(0.0, PubSubOption.excludePublisher(property.m_pub)); property.m_updateLocal = sub -> { for (double val : sub.readQueueValues()) { @@ -424,7 +425,7 @@ public class SendableBuilderImpl implements NTSendableBuilder { property.m_updateNetwork = (pub, time) -> pub.set(getter.get(), time); } if (setter != null) { - property.m_sub = topic.subscribe(""); + property.m_sub = topic.subscribe("", PubSubOption.excludePublisher(property.m_pub)); property.m_updateLocal = sub -> { for (String val : sub.readQueueValues()) { @@ -452,7 +453,8 @@ public class SendableBuilderImpl implements NTSendableBuilder { property.m_updateNetwork = (pub, time) -> pub.set(getter.get(), time); } if (setter != null) { - property.m_sub = topic.subscribe(new boolean[] {}); + property.m_sub = + topic.subscribe(new boolean[] {}, PubSubOption.excludePublisher(property.m_pub)); property.m_updateLocal = sub -> { for (boolean[] val : sub.readQueueValues()) { @@ -480,7 +482,8 @@ public class SendableBuilderImpl implements NTSendableBuilder { property.m_updateNetwork = (pub, time) -> pub.set(getter.get(), time); } if (setter != null) { - property.m_sub = topic.subscribe(new long[] {}); + property.m_sub = + topic.subscribe(new long[] {}, PubSubOption.excludePublisher(property.m_pub)); property.m_updateLocal = sub -> { for (long[] val : sub.readQueueValues()) { @@ -508,7 +511,8 @@ public class SendableBuilderImpl implements NTSendableBuilder { property.m_updateNetwork = (pub, time) -> pub.set(getter.get(), time); } if (setter != null) { - property.m_sub = topic.subscribe(new float[] {}); + property.m_sub = + topic.subscribe(new float[] {}, PubSubOption.excludePublisher(property.m_pub)); property.m_updateLocal = sub -> { for (float[] val : sub.readQueueValues()) { @@ -536,7 +540,8 @@ public class SendableBuilderImpl implements NTSendableBuilder { property.m_updateNetwork = (pub, time) -> pub.set(getter.get(), time); } if (setter != null) { - property.m_sub = topic.subscribe(new double[] {}); + property.m_sub = + topic.subscribe(new double[] {}, PubSubOption.excludePublisher(property.m_pub)); property.m_updateLocal = sub -> { for (double[] val : sub.readQueueValues()) { @@ -564,7 +569,8 @@ public class SendableBuilderImpl implements NTSendableBuilder { property.m_updateNetwork = (pub, time) -> pub.set(getter.get(), time); } if (setter != null) { - property.m_sub = topic.subscribe(new String[] {}); + property.m_sub = + topic.subscribe(new String[] {}, PubSubOption.excludePublisher(property.m_pub)); property.m_updateLocal = sub -> { for (String[] val : sub.readQueueValues()) { @@ -593,7 +599,8 @@ public class SendableBuilderImpl implements NTSendableBuilder { property.m_updateNetwork = (pub, time) -> pub.set(getter.get(), time); } if (setter != null) { - property.m_sub = topic.subscribe(typeString, new byte[] {}); + property.m_sub = + topic.subscribe(typeString, new byte[] {}, PubSubOption.excludePublisher(property.m_pub)); property.m_updateLocal = sub -> { for (byte[] val : sub.readQueueValues()) {