113 const uint8_t* payload_data,
129 const uint8_t* payload_data,
150 const char* client_id,
151 const char* group_id,
152 const char* edge_node_id);
172 const char* username,
173 const char* password);
205 const char* trust_store,
206 const char* key_store,
207 const char* private_key,
208 const char* private_key_password,
209 int enable_server_cert_auth);
239 const uint8_t* payload_data,
254 const uint8_t* payload_data,
304 const char* device_id,
305 const uint8_t* payload_data,
321 const char* device_id,
322 const uint8_t* payload_data,
334 const char* device_id);
347 const char* target_edge_node_id,
348 const uint8_t* payload_data,
363 const char* target_edge_node_id,
364 const char* target_device_id,
365 const uint8_t* payload_data,
393 const char* client_id,
394 const char* host_id);
414 const char* username,
415 const char* password);
447 const char* trust_store,
448 const char* key_store,
449 const char* private_key,
450 const char* private_key_password,
451 int enable_server_cert_auth);
517 const char* group_id,
518 const char* target_edge_node_id,
519 const uint8_t* payload_data,
535 const char* group_id,
536 const char* target_edge_node_id,
537 const char* target_device_id,
538 const uint8_t* payload_data,
607 const char* group_id);
624 const char* group_id,
625 const char* edge_node_id);
646 const char* group_id,
647 const char* edge_node_id,
648 const char* device_id,
788 uint64_t timestamp_ms);
795 uint64_t timestamp_ms);
802 uint64_t timestamp_ms);
809 uint64_t timestamp_ms);
817 uint64_t timestamp_ms);
825 uint64_t timestamp_ms);
833 uint64_t timestamp_ms);
907 uint64_t* out_timestamp);
942 SPARKPLUG_DATA_TYPE_UNKNOWN = 0,
943 SPARKPLUG_DATA_TYPE_INT8 = 1,
944 SPARKPLUG_DATA_TYPE_INT16 = 2,
945 SPARKPLUG_DATA_TYPE_INT32 = 3,
946 SPARKPLUG_DATA_TYPE_INT64 = 4,
947 SPARKPLUG_DATA_TYPE_UINT8 = 5,
948 SPARKPLUG_DATA_TYPE_UINT16 = 6,
949 SPARKPLUG_DATA_TYPE_UINT32 = 7,
950 SPARKPLUG_DATA_TYPE_UINT64 = 8,
951 SPARKPLUG_DATA_TYPE_FLOAT = 9,
952 SPARKPLUG_DATA_TYPE_DOUBLE = 10,
953 SPARKPLUG_DATA_TYPE_BOOLEAN = 11,
954 SPARKPLUG_DATA_TYPE_STRING = 12,
955 SPARKPLUG_DATA_TYPE_DATETIME = 13,
956 SPARKPLUG_DATA_TYPE_TEXT = 14,
970 uint16_t uint16_value;
971 uint32_t uint32_value;
972 uint64_t uint64_value;
sparkplug_log_level_t
Log severity levels for library diagnostics.
@ SPARKPLUG_LOG_ERROR
Error messages (serious problems)
@ SPARKPLUG_LOG_INFO
Informational messages.
@ SPARKPLUG_LOG_DEBUG
Detailed debugging information.
@ SPARKPLUG_LOG_WARN
Warning messages (potential issues)
void sparkplug_payload_set_timestamp(sparkplug_payload_t *payload, uint64_t ts)
Sets the payload-level timestamp.
size_t sparkplug_payload_serialize(const sparkplug_payload_t *payload, uint8_t *buffer, size_t buffer_size)
Serializes the payload to a binary Protocol Buffers format.
void sparkplug_payload_add_float_by_alias(sparkplug_payload_t *payload, uint64_t alias, float value)
Adds a float metric by alias only (for NDATA).
void sparkplug_payload_add_uint32_with_alias(sparkplug_payload_t *payload, const char *name, uint64_t alias, uint32_t value)
Adds a uint32_t metric with both name and alias (for NBIRTH).
void sparkplug_host_application_destroy(sparkplug_host_application_t *host)
Destroys a Host Application and frees all resources.
void sparkplug_payload_add_int64_with_alias_timestamp(sparkplug_payload_t *payload, const char *name, uint64_t alias, int64_t value, uint64_t timestamp_ms)
Adds an int64_t metric with name, alias, and timestamp (for NBIRTH with historical data).
int sparkplug_publisher_publish_device_death(sparkplug_publisher_t *pub, const char *device_id)
Publishes a DDEATH (Device Death) message for a device.
uint64_t sparkplug_publisher_get_seq(const sparkplug_publisher_t *pub)
Gets the current message sequence number.
uint64_t sparkplug_publisher_get_bd_seq(const sparkplug_publisher_t *pub)
Gets the current birth/death sequence number.
void sparkplug_payload_add_int8(sparkplug_payload_t *payload, const char *name, int8_t value)
Adds an int8_t metric by name.
struct sparkplug_payload sparkplug_payload_t
Opaque handle to a Sparkplug payload builder.
int sparkplug_host_application_get_metric_name(sparkplug_host_application_t *host, const char *group_id, const char *edge_node_id, const char *device_id, uint64_t alias, char *name_buffer, size_t buffer_size)
Resolves a metric alias to its name for a specific node or device.
void sparkplug_payload_add_float_with_alias_timestamp(sparkplug_payload_t *payload, const char *name, uint64_t alias, float value, uint64_t timestamp_ms)
Adds a float metric with name, alias, and timestamp (for NBIRTH with historical data).
void sparkplug_payload_add_int16(sparkplug_payload_t *payload, const char *name, int16_t value)
Adds an int16_t metric by name.
const char * sparkplug_payload_get_uuid(const sparkplug_payload_t *payload)
Gets the payload UUID.
int sparkplug_publisher_publish_data(sparkplug_publisher_t *pub, const uint8_t *payload_data, size_t payload_len)
Publishes an NDATA (Node Data) message.
int sparkplug_publisher_publish_node_command(sparkplug_publisher_t *pub, const char *target_edge_node_id, const uint8_t *payload_data, size_t payload_len)
Publishes an NCMD (Node Command) message to another edge node.
void sparkplug_payload_add_bool_with_alias_timestamp(sparkplug_payload_t *payload, const char *name, uint64_t alias, bool value, uint64_t timestamp_ms)
Adds a boolean metric with name, alias, and timestamp (for NBIRTH with historical data).
bool sparkplug_payload_get_timestamp(const sparkplug_payload_t *payload, uint64_t *out_timestamp)
Gets the payload-level timestamp.
void sparkplug_payload_set_seq(sparkplug_payload_t *payload, uint64_t seq)
Sets the sequence number manually.
void sparkplug_payload_add_uint32(sparkplug_payload_t *payload, const char *name, uint32_t value)
Adds a uint32_t metric by name.
void sparkplug_payload_add_double_with_alias(sparkplug_payload_t *payload, const char *name, uint64_t alias, double value)
Adds a double metric with both name and alias (for NBIRTH).
int sparkplug_host_application_publish_state_birth(sparkplug_host_application_t *host, uint64_t timestamp)
Publishes a STATE birth message to indicate Host Application is online.
void sparkplug_payload_add_uint64_with_alias(sparkplug_payload_t *payload, const char *name, uint64_t alias, uint64_t value)
Adds a uint64_t metric with both name and alias (for NBIRTH).
int sparkplug_host_application_set_credentials(sparkplug_host_application_t *host, const char *username, const char *password)
Sets MQTT username and password for authentication.
void sparkplug_payload_add_float(sparkplug_payload_t *payload, const char *name, float value)
Adds a float metric by name.
int sparkplug_host_application_publish_state_death(sparkplug_host_application_t *host, uint64_t timestamp)
Publishes a STATE death message to indicate Host Application is offline.
void sparkplug_payload_add_string(sparkplug_payload_t *payload, const char *name, const char *value)
Adds a string metric by name.
void sparkplug_payload_add_uint64_by_alias(sparkplug_payload_t *payload, uint64_t alias, uint64_t value)
Adds a uint64_t metric by alias only (for NDATA).
sparkplug_payload_t * sparkplug_payload_parse(const uint8_t *data, size_t data_len)
Parses a Sparkplug payload from binary protobuf format.
int sparkplug_host_application_subscribe_node(sparkplug_host_application_t *host, const char *group_id, const char *edge_node_id)
Subscribes to messages from a specific edge node.
void(* sparkplug_message_callback_t)(const char *topic, const uint8_t *payload_data, size_t payload_len, void *user_data)
Callback function type for receiving Sparkplug messages.
int sparkplug_publisher_publish_birth(sparkplug_publisher_t *pub, const uint8_t *payload_data, size_t payload_len)
Publishes an NBIRTH (Node Birth) message.
int sparkplug_host_application_publish_device_command(sparkplug_host_application_t *host, const char *group_id, const char *target_edge_node_id, const char *target_device_id, const uint8_t *payload_data, size_t payload_len)
Publishes a DCMD (Device Command) message to a device on an Edge Node.
struct sparkplug_publisher sparkplug_publisher_t
Opaque handle to a Sparkplug publisher.
void sparkplug_payload_add_float_with_alias(sparkplug_payload_t *payload, const char *name, uint64_t alias, float value)
Adds a float metric with both name and alias (for NBIRTH).
size_t sparkplug_payload_get_metric_count(const sparkplug_payload_t *payload)
Gets the number of metrics in the payload.
void sparkplug_payload_add_uint32_by_alias(sparkplug_payload_t *payload, uint64_t alias, uint32_t value)
Adds a uint32_t metric by alias only (for NDATA).
int sparkplug_publisher_publish_death(sparkplug_publisher_t *pub)
Publishes an NDEATH (Node Death) message.
int sparkplug_host_application_set_message_callback(sparkplug_host_application_t *host, sparkplug_message_callback_t callback, void *user_data)
Sets a message callback for receiving Sparkplug messages.
void(* sparkplug_log_callback_t)(int level, const char *message, size_t message_len, void *user_data)
Callback function type for receiving log messages from the library.
void sparkplug_payload_add_int32(sparkplug_payload_t *payload, const char *name, int32_t value)
Adds an int32_t metric by name.
void sparkplug_payload_add_int64(sparkplug_payload_t *payload, const char *name, int64_t value)
Adds an int64_t metric by name.
bool sparkplug_payload_get_seq(const sparkplug_payload_t *payload, uint64_t *out_seq)
Gets the payload-level sequence number.
void sparkplug_payload_add_int64_by_alias(sparkplug_payload_t *payload, uint64_t alias, int64_t value)
Adds an int64_t metric by alias only (for NDATA).
sparkplug_host_application_t * sparkplug_host_application_create(const char *broker_url, const char *client_id, const char *host_id)
Creates a new Sparkplug Host Application.
void sparkplug_payload_add_uint64(sparkplug_payload_t *payload, const char *name, uint64_t value)
Adds a uint64_t metric by name.
void sparkplug_publisher_destroy(sparkplug_publisher_t *pub)
Destroys a publisher and frees all resources.
void sparkplug_payload_destroy(sparkplug_payload_t *payload)
Destroys a payload builder and frees all resources.
sparkplug_publisher_t * sparkplug_publisher_create(const char *broker_url, const char *client_id, const char *group_id, const char *edge_node_id)
Creates a new Sparkplug publisher.
void sparkplug_payload_add_uint32_with_alias_timestamp(sparkplug_payload_t *payload, const char *name, uint64_t alias, uint32_t value, uint64_t timestamp_ms)
Adds a uint32_t metric with name, alias, and timestamp (for NBIRTH with historical data).
void sparkplug_payload_add_double_with_alias_timestamp(sparkplug_payload_t *payload, const char *name, uint64_t alias, double value, uint64_t timestamp_ms)
Adds a double metric with name, alias, and timestamp (for NBIRTH with historical data).
int sparkplug_publisher_rebirth(sparkplug_publisher_t *pub)
Triggers a rebirth (publishes new NBIRTH with incremented bdSeq).
void sparkplug_payload_add_bool(sparkplug_payload_t *payload, const char *name, bool value)
Adds a boolean metric by name.
int sparkplug_host_application_disconnect(sparkplug_host_application_t *host)
Disconnects the Host Application from the MQTT broker.
int sparkplug_host_application_set_tls(sparkplug_host_application_t *host, const char *trust_store, const char *key_store, const char *private_key, const char *private_key_password, int enable_server_cert_auth)
Configures TLS/SSL for secure MQTT connections.
struct sparkplug_host_application sparkplug_host_application_t
Opaque handle to a Sparkplug Host Application.
void sparkplug_payload_add_uint64_with_alias_timestamp(sparkplug_payload_t *payload, const char *name, uint64_t alias, uint64_t value, uint64_t timestamp_ms)
Adds a uint64_t metric with name, alias, and timestamp (for NBIRTH with historical data).
void sparkplug_payload_add_int64_with_alias(sparkplug_payload_t *payload, const char *name, uint64_t alias, int64_t value)
Adds an int64_t metric with both name and alias (for NBIRTH).
void sparkplug_payload_add_double_by_alias(sparkplug_payload_t *payload, uint64_t alias, double value)
Adds a double metric by alias only (for NDATA).
void sparkplug_payload_add_uint8(sparkplug_payload_t *payload, const char *name, uint8_t value)
Adds a uint8_t metric by name.
int sparkplug_publisher_set_credentials(sparkplug_publisher_t *pub, const char *username, const char *password)
Sets MQTT username and password for authentication.
int sparkplug_publisher_publish_device_data(sparkplug_publisher_t *pub, const char *device_id, const uint8_t *payload_data, size_t payload_len)
Publishes a DDATA (Device Data) message for a device.
sparkplug_payload_t * sparkplug_payload_create(void)
Creates a new payload builder.
int sparkplug_publisher_publish_device_birth(sparkplug_publisher_t *pub, const char *device_id, const uint8_t *payload_data, size_t payload_len)
Publishes a DBIRTH (Device Birth) message for a device.
void sparkplug_host_application_set_log_callback(sparkplug_host_application_t *host, sparkplug_log_callback_t callback, void *user_data)
Sets a log callback for receiving library log messages including MQTT errors.
void sparkplug_payload_add_bool_by_alias(sparkplug_payload_t *payload, uint64_t alias, bool value)
Adds a boolean metric by alias only (for NDATA).
int sparkplug_host_application_publish_node_command(sparkplug_host_application_t *host, const char *group_id, const char *target_edge_node_id, const uint8_t *payload_data, size_t payload_len)
Publishes an NCMD (Node Command) message to an Edge Node.
void(* sparkplug_command_callback_t)(const char *topic, const uint8_t *payload_data, size_t payload_len, void *user_data)
Callback function type for Sparkplug command messages (NCMD/DCMD).
int sparkplug_host_application_connect(sparkplug_host_application_t *host)
Connects the Host Application to the MQTT broker.
void sparkplug_payload_add_int32_by_alias(sparkplug_payload_t *payload, uint64_t alias, int32_t value)
Adds an int32_t metric by alias only (for NDATA).
int sparkplug_publisher_set_tls(sparkplug_publisher_t *pub, const char *trust_store, const char *key_store, const char *private_key, const char *private_key_password, int enable_server_cert_auth)
Configures TLS/SSL for secure MQTT connections.
void sparkplug_payload_add_int32_with_alias_timestamp(sparkplug_payload_t *payload, const char *name, uint64_t alias, int32_t value, uint64_t timestamp_ms)
Adds an int32_t metric with name, alias, and timestamp (for NBIRTH with historical data).
void sparkplug_payload_add_int32_with_alias(sparkplug_payload_t *payload, const char *name, uint64_t alias, int32_t value)
Adds an int32_t metric with both name and alias (for NBIRTH).
bool sparkplug_payload_get_metric_at(const sparkplug_payload_t *payload, size_t index, sparkplug_metric_t *out_metric)
Gets information about a metric at a specific index.
int sparkplug_host_application_subscribe_group(sparkplug_host_application_t *host, const char *group_id)
Subscribes to messages from a specific group.
int sparkplug_host_application_subscribe_all(sparkplug_host_application_t *host)
Subscribes to all Sparkplug messages across all groups.
int sparkplug_publisher_publish_device_command(sparkplug_publisher_t *pub, const char *target_edge_node_id, const char *target_device_id, const uint8_t *payload_data, size_t payload_len)
Publishes a DCMD (Device Command) message to a device on another edge node.
sparkplug_data_type_t
Sparkplug data types enum.
void sparkplug_payload_add_uint16(sparkplug_payload_t *payload, const char *name, uint16_t value)
Adds a uint16_t metric by name.
void sparkplug_payload_add_double(sparkplug_payload_t *payload, const char *name, double value)
Adds a double metric by name.
void sparkplug_payload_add_bool_with_alias(sparkplug_payload_t *payload, const char *name, uint64_t alias, bool value)
Adds a boolean metric with both name and alias (for NBIRTH).
int sparkplug_publisher_disconnect(sparkplug_publisher_t *pub)
Disconnects the publisher from the MQTT broker.
Metric information struct.
uint64_t alias
Metric name, or NULL if not present.
bool has_alias
True if name is present.
sparkplug_data_type_t datatype
Metric timestamp.
uint64_t timestamp
Metric alias.
bool is_null
True if timestamp is present.
sparkplug_metric_value_t value
True if value is explicitly null.
bool has_timestamp
True if alias is present.