diff --git a/Kconfig b/Kconfig index da47037..023d018 100644 --- a/Kconfig +++ b/Kconfig @@ -1,5 +1,10 @@ menu "ESPMQTT Configurations" +config MQTT_PROTOCOL_311 + bool "Enable MQTT protocol 3.1.1" + default y + help + If not, this library will use MQTT protocol 3.1 config MQTT_TRANSPORT_SSL bool "Enable MQTT over SSL" @@ -44,12 +49,25 @@ config MQTT_WS_DEFAULT_PORT config MQTT_WSS_DEFAULT_PORT int "Default MQTT over Websocket Secure port" - default 80 + default 443 depends on MQTT_USE_CUSTOM_CONFIG depends on MQTT_TRANSPORT_WEBSOCKET depends on MQTT_TRANSPORT_WEBSOCKET_SECURE help Default MQTT over Websocket Secure port +config MQTT_BUFFER_SIZE + int "Default MQTT Buffer Size" + default 1024 + depends on MQTT_USE_CUSTOM_CONFIG + help + This buffer size using for both transmit and receive + +config MQTT_TASK_STACK_SIZE + int "MQTT task stack size" + default 6144 + depends on MQTT_USE_CUSTOM_CONFIG + help + MQTT task stack size endmenu diff --git a/include/mqtt_config.h b/include/mqtt_config.h index 644b284..3de4a2c 100644 --- a/include/mqtt_config.h +++ b/include/mqtt_config.h @@ -5,9 +5,18 @@ */ #ifndef _MQTT_CONFIG_H_ #define _MQTT_CONFIG_H_ -#define MQTT_PROTOCOL_311 1 + +#include "sdkconfig.h" + +#define MQTT_PROTOCOL_311 CONFIG_MQTT_PROTOCOL_311 #define MQTT_RECONNECT_TIMEOUT_MS (10*1000) + +#if CONFIG_MQTT_BUFFER_SIZE +#define MQTT_BUFFER_SIZE_BYTE CONFIG_MQTT_BUFFER_SIZE +#else #define MQTT_BUFFER_SIZE_BYTE 1024 +#endif + #define MQTT_MAX_HOST_LEN 64 #define MQTT_MAX_CLIENT_LEN 32 #define MQTT_MAX_USERNAME_LEN 32 @@ -15,19 +24,44 @@ #define MQTT_MAX_LWT_TOPIC 32 #define MQTT_MAX_LWT_MSG 128 #define MQTT_TASK_PRIORITY 5 + +#if CONFIG_MQTT_TASK_STACK_SIZE +#define MQTT_TASK_STACK CONFIG_MQTT_TASK_STACK_SIZE +#else #define MQTT_TASK_STACK (6*1024) +#endif + #define MQTT_KEEPALIVE_TICK (120) -#define MQTT_BUFFER_SIZE (1*1024) #define MQTT_CMD_QUEUE_SIZE (10) #define MQTT_NETWORK_TIMEOUT_MS (10000) -#define MQTT_TCP_DEFAULT_PORT (1883) -#define MQTT_SSL_DEFAULT_PORT (8883) -#define MQTT_WS_DEFAULT_PORT (80) -#define MQTT_WSS_DEFAULT_PORT (443) -#define MQTT_ENABLE_SSL 1 -#define MQTT_ENABLE_WS 1 -#define MQTT_ENABLE_WSS 1 +#ifdef CONFIG_MQTT_TCP_DEFAULT_PORT +#define MQTT_TCP_DEFAULT_PORT CONFIG_MQTT_TCP_DEFAULT_PORT +#else +#define MQTT_TCP_DEFAULT_PORT 1883 +#endif + +#ifdef CONFIG_MQTT_SSL_DEFAULT_PORT +#define MQTT_SSL_DEFAULT_PORT CONFIG_MQTT_SSL_DEFAULT_PORT +#else +#define MQTT_SSL_DEFAULT_PORT 8883 +#endif + +#ifdef CONFIG_MQTT_WS_DEFAULT_PORT +#define MQTT_WS_DEFAULT_PORT CONFIG_MQTT_WS_DEFAULT_PORT +#else +#define MQTT_WS_DEFAULT_PORT 80 +#endif + +#ifdef MQTT_WSS_DEFAULT_PORT +#define MQTT_WSS_DEFAULT_PORT CONFIG_MQTT_WSS_DEFAULT_PORT +#else +#define MQTT_WSS_DEFAULT_PORT 443 +#endif + +#define MQTT_ENABLE_SSL CONFIG_MQTT_TRANSPORT_SSL +#define MQTT_ENABLE_WS CONFIG_MQTT_TRANSPORT_WS +#define MQTT_ENABLE_WSS CONFIG_MQTT_TRANSPORT_WSS #define OUTBOX_EXPIRED_TIMEOUT_MS (30*1000) #define OUTBOX_MAX_SIZE (4*1024) diff --git a/mqtt_client.c b/mqtt_client.c index c4f4cb2..d6c7673 100644 --- a/mqtt_client.c +++ b/mqtt_client.c @@ -277,14 +277,16 @@ esp_mqtt_client_handle_t esp_mqtt_client_init(const esp_mqtt_client_config_t *co client->config->scheme = create_string("mqtt", 4); } +#if MQTT_ENABLE_WS transport_handle_t ws = transport_ws_init(tcp); transport_set_default_port(ws, MQTT_WS_DEFAULT_PORT); transport_list_add(client->transport_list, ws, "ws"); if (config->transport == MQTT_TRANSPORT_OVER_WS) { client->config->scheme = create_string("ws", 2); } +#endif - //#if define SSL +#if MQTT_ENABLE_SSL transport_handle_t ssl = transport_ssl_init(); transport_set_default_port(ssl, MQTT_SSL_DEFAULT_PORT); if (config->cert_pem) { @@ -294,14 +296,16 @@ esp_mqtt_client_handle_t esp_mqtt_client_init(const esp_mqtt_client_config_t *co if (config->transport == MQTT_TRANSPORT_OVER_SSL) { client->config->scheme = create_string("mqtts", 5); } - // #endif +#endif +#if MQTT_ENABLE_WSS transport_handle_t wss = transport_ws_init(ssl); transport_set_default_port(wss, MQTT_WSS_DEFAULT_PORT); transport_list_add(client->transport_list, wss, "wss"); if (config->transport == MQTT_TRANSPORT_OVER_WSS) { client->config->scheme = create_string("wss", 3); } +#endif esp_mqtt_set_config(client, config);