gitextract_k27y6kok/ ├── .gitignore ├── LICENCE ├── README.md ├── RELEASE_NOTES.md ├── about.html ├── c/ │ ├── core/ │ │ ├── Makefile │ │ ├── include/ │ │ │ ├── pb.h │ │ │ ├── pb_common.h │ │ │ ├── pb_decode.h │ │ │ ├── pb_encode.h │ │ │ ├── tahu.h │ │ │ └── tahu.pb.h │ │ ├── readme.txt │ │ ├── src/ │ │ │ ├── pb_common.c │ │ │ ├── pb_decode.c │ │ │ ├── pb_encode.c │ │ │ ├── tahu.c │ │ │ ├── tahu.pb │ │ │ └── tahu.pb.c │ │ ├── tahu.options │ │ ├── test/ │ │ │ ├── .gitignore │ │ │ └── test.c │ │ └── test.sh │ └── examples/ │ ├── template_as_custom_props/ │ │ ├── Makefile │ │ └── example.c │ └── udt_example/ │ ├── Makefile │ └── example.c ├── c_sharp/ │ └── core/ │ ├── readme.txt │ └── src/ │ └── SparkplugBCSharp.cs ├── edl-v10.html ├── epl-v20.html ├── java/ │ ├── .gitignore │ ├── README.md │ ├── compat_impl/ │ │ ├── edge/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── eclipse/ │ │ │ │ └── tahu/ │ │ │ │ └── edge/ │ │ │ │ ├── CommandCallback.java │ │ │ │ ├── CommandListener.java │ │ │ │ ├── PeriodicPublisher.java │ │ │ │ ├── SparkplugEdgeNode.java │ │ │ │ └── sim/ │ │ │ │ ├── DataSimulator.java │ │ │ │ └── RandomDataSimulator.java │ │ │ └── resources/ │ │ │ └── logback.xml │ │ └── host/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── org/ │ │ │ └── eclipse/ │ │ │ └── tahu/ │ │ │ └── host/ │ │ │ ├── CommandListener.java │ │ │ └── SparkplugHostApplication.java │ │ └── resources/ │ │ ├── logback.out.xml │ │ └── logback.xml │ ├── examples/ │ │ ├── device_timestamp/ │ │ │ ├── THIRD-PARTY.txt │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── org/ │ │ │ └── eclipse/ │ │ │ └── tahu/ │ │ │ └── SparkplugExample.java │ │ ├── edge_node_control/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── org/ │ │ │ └── eclipse/ │ │ │ └── tahu/ │ │ │ └── SparkplugExample.java │ │ ├── host_file/ │ │ │ ├── THIRD-PARTY.txt │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── org/ │ │ │ └── eclipse/ │ │ │ └── tahu/ │ │ │ └── example/ │ │ │ └── host/ │ │ │ └── file/ │ │ │ ├── FileAssembler.java │ │ │ ├── Publisher.java │ │ │ ├── SparkplugExample.java │ │ │ ├── model/ │ │ │ │ ├── EdgeNode.java │ │ │ │ └── FilePublishStatus.java │ │ │ └── util/ │ │ │ └── FileValidationUtils.java │ │ ├── listener/ │ │ │ ├── THIRD-PARTY.txt │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ ├── java/ │ │ │ │ └── org/ │ │ │ │ └── eclipse/ │ │ │ │ └── tahu/ │ │ │ │ └── SparkplugListener.java │ │ │ └── resources/ │ │ │ └── log4j.properties │ │ ├── pom.xml │ │ ├── raspberry_pi/ │ │ │ ├── THIRD-PARTY.txt │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── org/ │ │ │ └── eclipse/ │ │ │ └── tahu/ │ │ │ ├── SparkplugRaspberryPiExample.java │ │ │ ├── pi/ │ │ │ │ ├── dio/ │ │ │ │ │ ├── DigitalOutputPin.java │ │ │ │ │ ├── DioException.java │ │ │ │ │ ├── DioLibrary.java │ │ │ │ │ ├── DioPin.java │ │ │ │ │ ├── PinDirection.java │ │ │ │ │ └── Pins.java │ │ │ │ └── system/ │ │ │ │ ├── BoardModels.java │ │ │ │ ├── SystemInfo.java │ │ │ │ └── SystemInfoException.java │ │ │ └── pibrella/ │ │ │ ├── Pibrella.java │ │ │ ├── PibrellaButton.java │ │ │ ├── PibrellaBuzzer.java │ │ │ ├── PibrellaInputPin.java │ │ │ ├── PibrellaInputPins.java │ │ │ ├── PibrellaLED.java │ │ │ ├── PibrellaLEDs.java │ │ │ ├── PibrellaOutputPin.java │ │ │ ├── PibrellaOutputPins.java │ │ │ └── PibrellaPins.java │ │ ├── records/ │ │ │ ├── THIRD-PARTY.txt │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── org/ │ │ │ └── eclipse/ │ │ │ └── tahu/ │ │ │ └── SparkplugRecordsExample.java │ │ ├── simple/ │ │ │ ├── THIRD-PARTY.txt │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── org/ │ │ │ └── eclipse/ │ │ │ └── tahu/ │ │ │ └── SparkplugExample.java │ │ └── udt/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── org/ │ │ └── eclipse/ │ │ └── tahu/ │ │ └── SparkplugExample.java │ ├── lib/ │ │ ├── core/ │ │ │ ├── pom.xml │ │ │ ├── readme.txt │ │ │ └── src/ │ │ │ ├── main/ │ │ │ │ ├── java/ │ │ │ │ │ └── org/ │ │ │ │ │ └── eclipse/ │ │ │ │ │ └── tahu/ │ │ │ │ │ ├── SparkplugException.java │ │ │ │ │ ├── SparkplugInvalidTypeException.java │ │ │ │ │ ├── SparkplugParsingException.java │ │ │ │ │ ├── exception/ │ │ │ │ │ │ ├── TahuErrorCode.java │ │ │ │ │ │ └── TahuException.java │ │ │ │ │ ├── json/ │ │ │ │ │ │ ├── DataSetDeserializer.java │ │ │ │ │ │ ├── DeserializerModifier.java │ │ │ │ │ │ ├── DeserializerModule.java │ │ │ │ │ │ ├── FileSerializer.java │ │ │ │ │ │ ├── JsonValidator.java │ │ │ │ │ │ ├── MetricDeserializer.java │ │ │ │ │ │ ├── PropertySetDeserializer.java │ │ │ │ │ │ └── TemplateDeserializer.java │ │ │ │ │ ├── message/ │ │ │ │ │ │ ├── BdSeqManager.java │ │ │ │ │ │ ├── DefaultBdSeqManager.java │ │ │ │ │ │ ├── PayloadDecoder.java │ │ │ │ │ │ ├── PayloadEncoder.java │ │ │ │ │ │ ├── SparkplugBPayloadDecoder.java │ │ │ │ │ │ ├── SparkplugBPayloadEncoder.java │ │ │ │ │ │ └── model/ │ │ │ │ │ │ ├── DataSet.java │ │ │ │ │ │ ├── DataSetDataType.java │ │ │ │ │ │ ├── DeviceDescriptor.java │ │ │ │ │ │ ├── EdgeNodeDescriptor.java │ │ │ │ │ │ ├── File.java │ │ │ │ │ │ ├── Message.java │ │ │ │ │ │ ├── MessageType.java │ │ │ │ │ │ ├── MetaData.java │ │ │ │ │ │ ├── Metric.java │ │ │ │ │ │ ├── MetricDataType.java │ │ │ │ │ │ ├── Parameter.java │ │ │ │ │ │ ├── ParameterDataType.java │ │ │ │ │ │ ├── Property.java │ │ │ │ │ │ ├── PropertyDataType.java │ │ │ │ │ │ ├── PropertySet.java │ │ │ │ │ │ ├── PropertyValue.java │ │ │ │ │ │ ├── Quality.java │ │ │ │ │ │ ├── Row.java │ │ │ │ │ │ ├── SparkplugBPayload.java │ │ │ │ │ │ ├── SparkplugBPayloadMap.java │ │ │ │ │ │ ├── SparkplugDescriptor.java │ │ │ │ │ │ ├── SparkplugMeta.java │ │ │ │ │ │ ├── StatePayload.java │ │ │ │ │ │ ├── Template.java │ │ │ │ │ │ ├── TemplateMap.java │ │ │ │ │ │ ├── Topic.java │ │ │ │ │ │ └── Value.java │ │ │ │ │ ├── model/ │ │ │ │ │ │ ├── MetricDataTypeMap.java │ │ │ │ │ │ ├── MetricMap.java │ │ │ │ │ │ └── MqttServerDefinition.java │ │ │ │ │ ├── mqtt/ │ │ │ │ │ │ ├── ClientCallback.java │ │ │ │ │ │ ├── MqttClientId.java │ │ │ │ │ │ ├── MqttOperatorDefs.java │ │ │ │ │ │ ├── MqttServerName.java │ │ │ │ │ │ ├── MqttServerUrl.java │ │ │ │ │ │ ├── RandomStartupDelay.java │ │ │ │ │ │ └── TahuClient.java │ │ │ │ │ ├── protobuf/ │ │ │ │ │ │ └── SparkplugBProto.java │ │ │ │ │ └── util/ │ │ │ │ │ ├── CompressionAlgorithm.java │ │ │ │ │ ├── GZipUtil.java │ │ │ │ │ ├── MessageUtil.java │ │ │ │ │ ├── PayloadUtil.java │ │ │ │ │ ├── SparkplugUtil.java │ │ │ │ │ ├── TopicUtil.java │ │ │ │ │ └── ValidationUtils.java │ │ │ │ └── resources/ │ │ │ │ ├── logback.xml │ │ │ │ └── payload.json │ │ │ └── test/ │ │ │ └── java/ │ │ │ └── org/ │ │ │ └── eclipse/ │ │ │ └── tahu/ │ │ │ ├── message/ │ │ │ │ └── test/ │ │ │ │ └── EnDeCodeTest.java │ │ │ ├── mqtt/ │ │ │ │ └── test/ │ │ │ │ └── MqttServerUrlTest.java │ │ │ ├── test/ │ │ │ │ ├── SequenceTest.java │ │ │ │ └── SparkplugTest.java │ │ │ └── util/ │ │ │ ├── MessageUtilTest.java │ │ │ └── PayloadUtilTest.java │ │ ├── edge/ │ │ │ ├── pom.xml │ │ │ └── src/ │ │ │ └── main/ │ │ │ └── java/ │ │ │ └── org/ │ │ │ └── eclipse/ │ │ │ └── tahu/ │ │ │ └── edge/ │ │ │ ├── EdgeClient.java │ │ │ ├── EdgeNodeMetricMaps.java │ │ │ └── api/ │ │ │ └── MetricHandler.java │ │ └── host/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── org/ │ │ └── eclipse/ │ │ └── tahu/ │ │ └── host/ │ │ ├── CommandPublisher.java │ │ ├── HostApplication.java │ │ ├── TahuHostCallback.java │ │ ├── TahuPayloadHandler.java │ │ ├── api/ │ │ │ └── HostApplicationEventHandler.java │ │ ├── manager/ │ │ │ ├── EdgeNodeManager.java │ │ │ ├── MetricManager.java │ │ │ ├── SparkplugDevice.java │ │ │ └── SparkplugEdgeNode.java │ │ ├── model/ │ │ │ ├── HostApplicationMetricMap.java │ │ │ ├── HostMetric.java │ │ │ └── MessageContext.java │ │ └── seq/ │ │ ├── SequenceReorderContext.java │ │ ├── SequenceReorderManager.java │ │ └── SequenceReorderMap.java │ └── pom.xml ├── javascript/ │ ├── core/ │ │ ├── node-red-contrib-sparkplug/ │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ └── sparkplug/ │ │ │ ├── sparkplug.html │ │ │ └── sparkplug.js │ │ ├── node-red-contrib-sparkplug-payload/ │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── sparkplug-payload.html │ │ │ └── sparkplug-payload.js │ │ ├── sparkplug-client/ │ │ │ ├── .gitignore │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── index.ts │ │ │ ├── package.json │ │ │ └── tsconfig.json │ │ └── sparkplug-payload/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── index.ts │ │ ├── lib/ │ │ │ └── sparkplugbpayload.ts │ │ ├── package.json │ │ └── tsconfig.json │ └── examples/ │ └── simple/ │ ├── example.js │ └── package.json ├── nodered/ │ └── examples/ │ ├── emulated-device.js │ └── package.json ├── notice.html ├── python/ │ ├── core/ │ │ ├── __init__.py │ │ ├── array_packer.py │ │ ├── host_session_establishment.py │ │ ├── readme.md │ │ ├── sparkplug_b.py │ │ └── sparkplug_b_pb2.py │ └── examples/ │ ├── THIRD-PARTY.txt │ ├── example.py │ ├── example_datatype.py │ ├── example_raspberry_pi.py │ └── example_simple.py └── sparkplug_b/ ├── sparkplug_b.json ├── sparkplug_b.proto └── sparkplug_b_c_sharp.proto