10#include <freertos/FreeRTOS.h>
11#include <freertos/task.h>
36 this->data.assign(event.data, event.data + event.data_len);
39 this->topic.assign(event.topic, event.topic_len);
40 this->
msg_id =
event.msg_id;
41 this->
retain =
event.retain;
42 this->
qos =
event.qos;
43 this->
dup =
event.dup;
74 bool set_data(
const char *topic_str,
const char *payload_data,
size_t len) {
76 if (
len > std::numeric_limits<uint16_t>::max()) {
84 size_t topic_len = strlen(topic_str) + 1;
88 memcpy(
topic, topic_str, topic_len);
90 if (payload_data &&
len) {
140 void set_will(
const char *topic, uint8_t qos,
bool retain,
const char *payload)
final {
149 char ip_buf[network::IP_ADDRESS_BUFFER_SIZE];
150 this->
host_ = ip.str_to(ip_buf);
172 void set_on_publish(std::function<on_publish_user_callback_t> &&callback)
final {
180 esp_mqtt_client_start(
handler_.get());
186 esp_mqtt_client_disconnect(
handler_.get());
190#if defined(USE_MQTT_IDF_ENQUEUE)
193 return esp_mqtt_client_subscribe(
handler_.get(), topic, qos) != -1;
197#if defined(USE_MQTT_IDF_ENQUEUE)
200 return esp_mqtt_client_unsubscribe(
handler_.get(), topic) != -1;
204 bool publish(
const char *topic,
const char *payload,
size_t length, uint8_t qos,
bool retain)
final {
205#if defined(USE_MQTT_IDF_ENQUEUE)
210 return esp_mqtt_client_publish(
handler_.get(), topic, payload,
length, qos, retain) != -1;
234 void operator()(esp_mqtt_client *client_handler) { esp_mqtt_client_destroy(client_handler); }
259#if defined(USE_MQTT_IDF_ENQUEUE)
286#if defined(USE_MQTT_IDF_ENQUEUE)
An STL allocator that uses SPI or internal RAM.
void deallocate(T *p, size_t n)
EventPool< Event, MQTT_EVENT_QUEUE_LENGTH - 1 > mqtt_event_pool_
void set_keep_alive(uint16_t keep_alive) final
EventPool< struct QueueElement, MQTT_QUEUE_LENGTH - 1 > mqtt_outbound_pool_
void set_on_message(std::function< on_message_callback_t > &&callback) final
CallbackManager< on_connect_callback_t > on_connect_
CallbackManager< on_disconnect_callback_t > on_disconnect_
static constexpr size_t MQTT_BUFFER_SIZE
void set_ca_certificate(const std::string &cert)
CallbackManager< on_message_callback_t > on_message_
static void mqtt_event_handler(void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data)
static - Dispatch event to instance method
void set_client_id(const char *client_id) final
optional< std::string > ca_certificate_
CallbackManager< on_subscribe_callback_t > on_subscribe_
static void esphome_mqtt_task(void *params)
void set_on_publish(std::function< on_publish_user_callback_t > &&callback) final
bool enqueue_(MqttQueueTypeT type, const char *topic, int qos=0, bool retain=false, const char *payload=NULL, size_t len=0)
void set_server(const char *host, uint16_t port) final
static constexpr uint8_t MQTT_EVENT_QUEUE_LENGTH
void set_cl_key(const std::string &key)
void set_on_connect(std::function< on_connect_callback_t > &&callback) final
void set_will(const char *topic, uint8_t qos, bool retain, const char *payload) final
bool subscribe(const char *topic, uint8_t qos) final
void set_server(network::IPAddress ip, uint16_t port) final
static constexpr size_t TASK_STACK_SIZE_TLS
void set_cl_certificate(const std::string &cert)
CallbackManager< on_unsubscribe_callback_t > on_unsubscribe_
std::string cached_topic_
esp_mqtt_client_config_t mqtt_cfg_
void set_skip_cert_cn_check(bool skip_check)
void set_on_unsubscribe(std::function< on_unsubscribe_callback_t > &&callback) final
bool publish(const char *topic, const char *payload, size_t length, uint8_t qos, bool retain) final
TaskHandle_t task_handle_
static constexpr size_t TASK_STACK_SIZE
CallbackManager< on_publish_user_callback_t > on_publish_
void set_clean_session(bool clean_session) final
bool unsubscribe(const char *topic) final
static constexpr uint32_t DROP_LOG_INTERVAL_MS
NotifyingLockFreeQueue< struct QueueElement, MQTT_QUEUE_LENGTH > mqtt_queue_
static constexpr uint8_t MQTT_QUEUE_LENGTH
void set_on_subscribe(std::function< on_subscribe_callback_t > &&callback) final
uint32_t last_dropped_log_time_
optional< std::string > cl_key_
void mqtt_event_handler_(const Event &event)
bool connected() const final
optional< std::string > cl_certificate_
void set_on_disconnect(std::function< on_disconnect_callback_t > &&callback) final
void set_credentials(const char *username, const char *password) final
static constexpr ssize_t TASK_PRIORITY
std::unique_ptr< esp_mqtt_client, MqttClientDeleter > ClientHandler_
LockFreeQueue< Event, MQTT_EVENT_QUEUE_LENGTH > mqtt_event_queue_
virtual bool publish(const char *topic, const char *payload, size_t length, uint8_t qos, bool retain)=0
@ MQTT_QUEUE_TYPE_SUBSCRIBE
@ MQTT_QUEUE_TYPE_UNSUBSCRIBE
@ MQTT_QUEUE_TYPE_PUBLISH
esp_mqtt_error_codes_t error_handle
void populate(const esp_mqtt_event_t &event)
void operator()(esp_mqtt_client *client_handler)
bool set_data(const char *topic_str, const char *payload_data, size_t len)