Telemetry Structure
There's a lot of data on this robot. I will attempt to explain how it's set up.
1 Where all of the data lives
All of the streamable data is located in DataStreamerData. This is done deliberately as I didn't want each subsystem to "register" its own data - debugging and diagnosing what data is in the system quickly would be impractical.
All of these *.Telemetry objects are initialized here, but are overwritten in RobotInit.
Sidenote:
The reason that they are initialized is because when the Co-Proc receives a new packet, in order for mDataStreamerDataReceiver
on the Co-Proc to call fromByteBuffer
to deserialize the byte[]
array none of the objects can be null.
2 How data gets there
Each TelemetryProvider
has its own Telemetry
class. Take AcesT265
for instance:
AcesT265
wants to supply telemetry, so it implements TelemetryProvider<AcesT265.Telemetry>
which is defined lower in the file
This Telemetry
object is filled members that extend GenericDataStore
(such as DataStore_Integer
and DataStore_Float
)
3 How data gets out
The DataStreamer can send it Someone can enable network table publishing Lifetime statistics will read it It will be sent to the Co-Proc