oveRTOS C API
Embedded RTOS framework — build system, configuration, and portable C API
Loading...
Searching...
No Matches
net_mqtt.h
1/*
2 * Copyright (C) 2026 Kamil Lulko <kamil.lulko@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-3.0-or-later
5 *
6 * This file is part of oveRTOS.
7 */
8
9#ifndef OVE_NET_MQTT_H
10#define OVE_NET_MQTT_H
11
24#include "ove/types.h"
25#include "ove/net.h"
26#include "ove_config.h"
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31
33#ifdef __ZIG_CIMPORT__
34typedef uint8_t ove_mqtt_qos_t;
35#define OVE_MQTT_QOS0 ((ove_mqtt_qos_t)0)
36#define OVE_MQTT_QOS1 ((ove_mqtt_qos_t)1)
37#else
38typedef enum {
39 OVE_MQTT_QOS0 = 0,
40 OVE_MQTT_QOS1 = 1,
42#endif
43
53typedef void (*ove_mqtt_msg_cb)(const char *topic, size_t topic_len,
54 const void *payload, size_t payload_len,
55 void *user_data);
56
60typedef struct {
61 const char *host;
62 uint16_t port;
63 const char *client_id;
64 const char *username;
65 const char *password;
66 uint16_t keep_alive_s;
67 int use_tls;
69 void *user_data;
71
72#include "ove/storage.h"
73
74#ifdef CONFIG_OVE_NET_MQTT
75
83int ove_mqtt_client_init(ove_mqtt_client_t *client,
84 ove_mqtt_client_storage_t *storage);
85
91void ove_mqtt_client_deinit(ove_mqtt_client_t client);
92
100int ove_mqtt_connect(ove_mqtt_client_t client,
101 const ove_mqtt_config_t *cfg);
102
108void ove_mqtt_disconnect(ove_mqtt_client_t client);
109
120int ove_mqtt_publish(ove_mqtt_client_t client,
121 const char *topic,
122 const void *payload, size_t payload_len,
123 ove_mqtt_qos_t qos);
124
133int ove_mqtt_subscribe(ove_mqtt_client_t client,
134 const char *topic, ove_mqtt_qos_t qos);
135
143int ove_mqtt_unsubscribe(ove_mqtt_client_t client, const char *topic);
144
154int ove_mqtt_loop(ove_mqtt_client_t client, uint32_t timeout_ms);
155
156#ifdef OVE_HEAP_NET_MQTT
163int ove_mqtt_client_create(ove_mqtt_client_t *client);
164
170void ove_mqtt_client_destroy(ove_mqtt_client_t client);
171#endif /* OVE_HEAP_NET_MQTT */
172
173#else /* !CONFIG_OVE_NET_MQTT */
174
176#ifndef CONFIG_OVE_NET_MQTT
177typedef struct { uint8_t _unused; } ove_mqtt_client_storage_t;
178#endif
179
180static inline int ove_mqtt_client_init(ove_mqtt_client_t *client, ove_mqtt_client_storage_t *storage) { (void)client; (void)storage; return OVE_ERR_NOT_SUPPORTED; }
181static inline void ove_mqtt_client_deinit(ove_mqtt_client_t client) { (void)client; }
182static inline int ove_mqtt_connect(ove_mqtt_client_t client, const ove_mqtt_config_t *cfg) { (void)client; (void)cfg; return OVE_ERR_NOT_SUPPORTED; }
183static inline void ove_mqtt_disconnect(ove_mqtt_client_t client) { (void)client; }
184static inline int ove_mqtt_publish(ove_mqtt_client_t client, const char *topic, const void *payload, size_t payload_len, ove_mqtt_qos_t qos) { (void)client; (void)topic; (void)payload; (void)payload_len; (void)qos; return OVE_ERR_NOT_SUPPORTED; }
185static inline int ove_mqtt_subscribe(ove_mqtt_client_t client, const char *topic, ove_mqtt_qos_t qos) { (void)client; (void)topic; (void)qos; return OVE_ERR_NOT_SUPPORTED; }
186static inline int ove_mqtt_unsubscribe(ove_mqtt_client_t client, const char *topic) { (void)client; (void)topic; return OVE_ERR_NOT_SUPPORTED; }
187static inline int ove_mqtt_loop(ove_mqtt_client_t client, uint32_t timeout_ms) { (void)client; (void)timeout_ms; return OVE_ERR_NOT_SUPPORTED; }
190#endif /* CONFIG_OVE_NET_MQTT */
191
192#ifdef __cplusplus
193}
194#endif
195
198#endif /* OVE_NET_MQTT_H */
#define OVE_MQTT_QOS1
Definition net_mqtt.h:36
void(* ove_mqtt_msg_cb)(const char *topic, size_t topic_len, const void *payload, size_t payload_len, void *user_data)
MQTT message callback.
Definition net_mqtt.h:53
#define OVE_MQTT_QOS0
Definition net_mqtt.h:35
uint8_t ove_mqtt_qos_t
MQTT QoS level.
Definition net_mqtt.h:34
struct ove_mqtt_client * ove_mqtt_client_t
Opaque handle for an MQTT client.
Definition types.h:133
#define OVE_ERR_NOT_SUPPORTED
The requested feature is not supported by the active backend.
Definition types.h:38
MQTT connection configuration.
Definition net_mqtt.h:60
int use_tls
Definition net_mqtt.h:67
const char * username
Definition net_mqtt.h:64
const char * password
Definition net_mqtt.h:65
uint16_t keep_alive_s
Definition net_mqtt.h:66
void * user_data
Definition net_mqtt.h:69
const char * host
Definition net_mqtt.h:61
uint16_t port
Definition net_mqtt.h:62
ove_mqtt_msg_cb on_message
Definition net_mqtt.h:68
const char * client_id
Definition net_mqtt.h:63