Files
mqtt-explorer/backend/src/Model/sparkplugb.ts
2024-04-10 09:14:12 +02:00

25 lines
735 B
TypeScript

// cSpell:words protobuf
import * as protobuf from 'protobufjs'
import protocol from './sparkplugb.proto'
import { Base64Message } from './Base64Message'
import { Decoder } from './Decoder'
const root = protobuf.parse(protocol).root
/* cspell:disable-next-line */
export let SparkplugPayload = root.lookupType('com.cirruslink.sparkplug.protobuf.Payload')
export const SparkplugDecoder = {
decode(input: Buffer): Base64Message | undefined {
try {
const message = Base64Message.fromString(
JSON.stringify(SparkplugPayload.toObject(SparkplugPayload.decode(new Uint8Array(input))))
)
message.decoder = Decoder.SPARKPLUG
return message
} catch {
// ignore
}
return undefined
},
}