25 lines
735 B
TypeScript
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
|
|
},
|
|
}
|