24#ifndef PROTOCORE_SPARKPLUG_H
25#define PROTOCORE_SPARKPLUG_H
29#if PC_ENABLE_SPARKPLUG
40#define SPB_DT_UINT16 6
41#define SPB_DT_UINT32 7
42#define SPB_DT_UINT64 8
44#define SPB_DT_DOUBLE 10
45#define SPB_DT_BOOLEAN 11
46#define SPB_DT_STRING 12
49enum class SpbMetricKind : uint8_t
74 const char *string_value;
78size_t pc_spb_build_topic(
char *buf,
size_t cap,
const char *group,
const char *message_type,
const char *edge_node,
82size_t pc_spb_build_metric(uint8_t *buf,
size_t cap,
const SpbMetric *m);
85size_t pc_spb_build_payload(uint8_t *buf,
size_t cap, uint64_t timestamp, uint64_t seq,
const SpbMetric *metrics,
91struct SpbPayloadHeader
104bool pc_spb_parse_payload(
const uint8_t *buf,
size_t len, SpbPayloadHeader *out);
111bool pc_spb_payload_next_metric(
const uint8_t *buf,
size_t len,
size_t *pos,
const uint8_t **metric,
115struct SpbMetricDecoded
131 const char *string_value;
132 size_t string_value_len;
140bool pc_spb_parse_metric(
const uint8_t *buf,
size_t len, SpbMetricDecoded *out);
User-facing configuration for ProtoCore.