Hi @Aaron , here's the specifics:
We use two protobuf extensions defined in our proto :
1. MetaData extension (extend sparkplug_b.Payload.MetaData, field 9):
timestamp_ns (uint32) — nanosecond component to complement the standard ms-resolution SparkplugB timestamp.
(and some other specific additional info like txstate, seq, ack, states[] / bits[] for state machines)
2. MetricValueExtension (extend sparkplug_b.Payload.Metric.MetricValueExtension, field 1):
(Custom value types for machine-specific data: for CAN bus messages, IO configuration lists, error info, etc. )
What gets dropped: The benthos-umh sparkplug_b input plugin currently decodes the standard SparkplugB payload correctly (basic metric values like UInt16, UInt32, Float etc. all work fine).
But both extension blocks seem to be silently discarded during protobuf decoding (which completely makes sense given the fact that no extensions definition is declared)
What we'd like: At minimum, access to the MetaData extension fields as additional metadata headers (especially timestamp_ns for precise timestamping).
Ideally the MetricValueExtension would also be accessible, either as raw bytes or decoded if a proto descriptor is provided.
One could argue that it might not have been the right choice to make use of extensions, but that was a design choice at that time and is out of our scope, so we would like to be able to deal with it.
Our proto files are based on the standard sparkplug_b.proto extensions mechanism (proto2), which SparkplugB explicitly supports.
We are aware that the use of extensions in proto3 is no longer advised, but as far as we know sparkplugB still implements proto2 and we don't assume this will change.