27#ifndef DETERMINISTICESPASYNCWEBSERVER_MQTT_H
28#define DETERMINISTICESPASYNCWEBSERVER_MQTT_H
37enum class MqttType : uint8_t
48 MQTT_UNSUBSCRIBE = 10,
58 const char *client_id;
63 const char *will_topic;
64 const uint8_t *will_msg;
79size_t mqtt_encode_remlen(uint8_t *out, uint32_t len);
87bool mqtt_decode_remlen(
const uint8_t *buf,
size_t avail, uint32_t *value,
size_t *used);
93size_t mqtt_build_connect(uint8_t *out,
size_t cap,
const MqttConnectOpts *opts);
100size_t mqtt_build_publish(uint8_t *out,
size_t cap,
const char *topic,
const uint8_t *payload,
size_t payload_len,
101 uint8_t qos, uint16_t packet_id,
bool retain,
bool dup);
104size_t mqtt_build_subscribe(uint8_t *out,
size_t cap, uint16_t packet_id,
const char *topic, uint8_t qos);
107size_t mqtt_build_unsubscribe(uint8_t *out,
size_t cap, uint16_t packet_id,
const char *topic);
113size_t mqtt_build_ack(uint8_t *out,
size_t cap, MqttType type, uint16_t packet_id);
116size_t mqtt_build_pingreq(uint8_t *out,
size_t cap);
119size_t mqtt_build_disconnect(uint8_t *out,
size_t cap);
126bool mqtt_parse_fixed_header(
const uint8_t *buf,
size_t avail, uint8_t *type, uint8_t *flags, uint32_t *remaining_len,
138bool mqtt_parse_publish(
const uint8_t *buf, uint32_t remaining_len, uint8_t flags,
char *topic_out,
size_t topic_cap,
139 size_t *topic_len,
const uint8_t **payload,
size_t *payload_len, uint16_t *packet_id);
146uint16_t mqtt_parse_ack(
const uint8_t *buf, uint32_t remaining_len);
153int mqtt_parse_connack(
const uint8_t *buf, uint32_t remaining_len,
bool *session_present);
161bool mqtt_parse_suback(
const uint8_t *buf, uint32_t remaining_len, uint16_t *packet_id, uint8_t *return_code);
168typedef void (*MqttMessageCb)(
const char *topic,
const uint8_t *payload,
size_t len);
171void mqtt_on_message(MqttMessageCb cb);
180bool mqtt_connect(
const char *host, uint16_t port,
bool use_tls,
const MqttConnectOpts *opts);
183bool mqtt_publish(
const char *topic,
const uint8_t *payload,
size_t len, uint8_t qos,
bool retain);
186bool mqtt_subscribe(
const char *topic, uint8_t qos);
189bool mqtt_unsubscribe(
const char *topic);
200bool mqtt_connected();
203void mqtt_disconnect();
User-facing configuration for DeterministicESPAsyncWebServer.