115 const uint8_t* payload_data,
131 const uint8_t* payload_data,
152 const char* client_id,
153 const char* group_id,
154 const char* edge_node_id);
174 const char* username,
175 const char* password);
207 const char* trust_store,
208 const char* key_store,
209 const char* private_key,
210 const char* private_key_password,
211 int enable_server_cert_auth);
241 const uint8_t* payload_data,
256 const uint8_t* payload_data,
306 const char* device_id,
307 const uint8_t* payload_data,
323 const char* device_id,
324 const uint8_t* payload_data,
336 const char* device_id);
349 const char* target_edge_node_id,
350 const uint8_t* payload_data,
365 const char* target_edge_node_id,
366 const char* target_device_id,
367 const uint8_t* payload_data,
395 const char* client_id,
396 const char* host_id);
416 const char* username,
417 const char* password);
449 const char* trust_store,
450 const char* key_store,
451 const char* private_key,
452 const char* private_key_password,
453 int enable_server_cert_auth);
519 const char* group_id,
520 const char* target_edge_node_id,
521 const uint8_t* payload_data,
537 const char* group_id,
538 const char* target_edge_node_id,
539 const char* target_device_id,
540 const uint8_t* payload_data,
609 const char* group_id);
626 const char* group_id,
627 const char* edge_node_id);
648 const char* group_id,
649 const char* edge_node_id,
650 const char* device_id,
790 uint64_t timestamp_ms);
797 uint64_t timestamp_ms);
804 uint64_t timestamp_ms);
811 uint64_t timestamp_ms);
819 uint64_t timestamp_ms);
827 uint64_t timestamp_ms);
835 uint64_t timestamp_ms);
909 uint64_t* out_timestamp);
944 SPARKPLUG_DATA_TYPE_UNKNOWN = 0,
945 SPARKPLUG_DATA_TYPE_INT8 = 1,
946 SPARKPLUG_DATA_TYPE_INT16 = 2,
947 SPARKPLUG_DATA_TYPE_INT32 = 3,
948 SPARKPLUG_DATA_TYPE_INT64 = 4,
949 SPARKPLUG_DATA_TYPE_UINT8 = 5,
950 SPARKPLUG_DATA_TYPE_UINT16 = 6,
951 SPARKPLUG_DATA_TYPE_UINT32 = 7,
952 SPARKPLUG_DATA_TYPE_UINT64 = 8,
953 SPARKPLUG_DATA_TYPE_FLOAT = 9,
954 SPARKPLUG_DATA_TYPE_DOUBLE = 10,
955 SPARKPLUG_DATA_TYPE_BOOLEAN = 11,
956 SPARKPLUG_DATA_TYPE_STRING = 12,
957 SPARKPLUG_DATA_TYPE_DATETIME = 13,
958 SPARKPLUG_DATA_TYPE_TEXT = 14,
972 uint16_t uint16_value;
973 uint32_t uint32_value;
974 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.