一個高性能、高穩定性的跨平臺MQTT客戶端——mqttclient配置及裁剪工具

mqttclient配置及裁剪工具

  • MQTT_TOPIC_LEN_MAX

    配置客戶端支持最大的主題名長度,主題是支持通配符的,如果主題太長則會被截斷,默認值爲64。

        #define     MQTT_TOPIC_LEN_MAX                  64
    
  • MQTT_ACK_HANDLER_NUM_MAX

    配置mqtt等待應答列表的最大記錄個數,對於qos1、qos2服務質量有要求的可以將其設置大一點,當然也必須資源跟得上,它主要是保證qos1、qos2的mqtt報文能準確到達服務器,默認值爲64。

        #define     MQTT_ACK_HANDLER_NUM_MAX            64
    
  • MQTT_DEFAULT_BUF_SIZE

    默認的讀寫數據緩衝區的大小,根據要收發數據量修改即可,默認值爲1024。

        #define     MQTT_DEFAULT_BUF_SIZE               1024
    
  • MQTT_DEFAULT_CMD_TIMEOUT

    默認的命令超時,它主要是用於socket讀寫超時(還包括等待響應的時間、重連等待時間等),默認值爲5000。

        #define     MQTT_DEFAULT_CMD_TIMEOUT            5000
    
  • MQTT_MAX_CMD_TIMEOUT

    設置最大的命令超時時間,默認值是20000。

        #define     MQTT_MAX_CMD_TIMEOUT                20000
    
  • MQTT_MIN_CMD_TIMEOUT

    設置最小的命令超時時間,默認值是1000。

        #define     MQTT_MIN_CMD_TIMEOUT                1000
    
  • MQTT_KEEP_ALIVE_INTERVAL

    設置默認的保活時間,它主要是保證MQTT客戶端與服務器的保持活性連接,單位爲,默認值爲50。比如MQTT客戶端與服務器在指定時間間隔內沒有發送數據,有沒有接收到數據,此時MQTT客戶端會發送一個心跳包,確認一下這個連接是否存在,如果收到服務器的應答,那麼說明這個連接還是存在的,可以隨時收發數據,而如果不存在了,就嘗試重連或者清除會話。

        #define     MQTT_KEEP_ALIVE_INTERVAL            50         // unit: second
    
  • MQTT_VERSION

    選擇MQTT協議的版本,默認爲4,表示使用MQTT 3.1.1版本,而3則表示使用MQTT 3.1版本。

        #define     MQTT_VERSION                        4           // 4 is mqtt 3.1.1
    
  • MQTT_RECONNECT_DEFAULT_DURATION

    設置默認的重連時間間隔,當發生掉線時,會以這個時間間隔嘗試重連,默認值爲1000。

        #define     MQTT_RECONNECT_DEFAULT_DURATION     1000
    
  • MQTT_THREAD_STACK_SIZE

    MQTT內部維護一個線程,需要設置默認的線程屬性信息,MQTT_THREAD_STACK_SIZE表示線程棧的大小,默認值是2048。在linux環境下可以是不需要理會這些參數的,而在RTOS平臺則需要配置,如果不使用mbedtls,線程棧2048字節已足夠,而使用mbedtls加密後,需要配置4096字節以上

        #define     MQTT_THREAD_STACK_SIZE              2048    // 線程棧
    
  • MQTT_THREAD_PRIO

    設置線程優先級,默認爲5。

        #define     MQTT_THREAD_PRIO                    5       // 線程優先級
    
  • MQTT_THREAD_TICK

    設置線程優時間片,默認爲50。

        #define     MQTT_THREAD_TICK                    50      // 線程時間片
    
  • MQTT_NETWORK_TYPE_NO_TLS

    設置是否需要支持TLS加密傳輸,如果定義了該宏,則表示不支持TLS加密傳輸,否則默認將支持TLS加密傳輸。

        #define     MQTT_NETWORK_TYPE_NO_TLS
    

salof相關的配置

salof 全稱是:Synchronous Asynchronous Log Output Framework(同步異步日誌輸出框架),它是一個同步異步日誌輸出框架,可以在空閒時候輸出對應的日誌信息,並且該庫與mqttclient無縫銜接。

  • LOG_LEVEL

    配置對應的日誌輸出級別,它支持以下4種級別:ERR_LEVEL、WARN_LEVEL、INFO_LEVEL、DEBUG_LEVEL。

        #define BASE_LEVEL      (0)
        #define ERR_LEVEL       (BASE_LEVEL + 1)          /* 日誌輸出級別:錯誤級別(高優先級) */
        #define WARN_LEVEL      (ERR_LEVEL + 1)             /* 日誌輸出級別:警告級別(中優先級) */
        #define INFO_LEVEL      (WARN_LEVEL + 1)            /* 日誌輸出級別:信息級別(低優先級) */
        #define DEBUG_LEVEL     (INFO_LEVEL + 1)            /* 日誌輸出級別:調試級別(更低優先級) */
    
        #define         LOG_LEVEL                   WARN_LEVEL      /* 日誌輸出級別 */
    
  • USE_SALOF

    如果該宏大於0,則表示使用salof指定的後端作爲日誌輸出,反之則使用printf作爲日誌輸出接口。

        #define         USE_SALOF                   (1U)
    
  • SALOF_OS

    設置salof日誌庫的操作系統,有以下選項:USE_LINUX、USE_TENCENTOS、USE_FREERTOS、USE_RTT。

        #define         SALOF_OS                    USE_LINUX
    
  • USE_IDLE_HOOK

    如果該宏大於0,則表示在操作系統中的空閒鉤子函數中輸出日誌,反之則通過線程異步處理或者同步處理。

        #define         USE_IDLE_HOOK               (0U)
    
  • LOG_COLOR

    如果該宏大於0,則表示輸出的日誌是帶有顏色的(需要終端的支持),反之則沒有顏色。

        #define         LOG_COLOR                   (1U)
    
  • LOG_TS

    如果該宏大於0,則表示輸出的日誌是帶有時間戳的,反之則沒有時間戳。

        #define         LOG_TS                   (0U)
    
  • LOG_TAR

    如果該宏大於0,則表示輸出的日誌是帶有標籤的(任務名字),反之則沒有標籤。

        #define         LOG_TAR                   (0U)
    
  • SALOF_BUFF_SIZE

    設置日誌庫salof輸出庫的buf緩衝區大小,即最大一次性能輸出多少個字節。

        #define         SALOF_BUFF_SIZE                   (512U)
    
  • SALOF_FIFO_SIZE

    設置日誌庫salof的fifo緩衝區大小,即最能緩存多少個字節的日誌數據。

            #define         SALOF_FIFO_SIZE             (1024*4U)
    
  • SALOF_TASK_STACK_SIZE

    如果使用了空閒線程輸出日誌,則配置salof線程棧的大小。

        #define         SALOF_TASK_STACK_SIZE       (2048U)
    
  • SALOF_TASK_TICK

    如果使用了空閒線程輸出日誌,則配置salof線程棧的時間片大小。

        #define         SALOF_TASK_TICK             (50U)
    

使用mqttclient裁剪配置工具

我們可以通過配置很方便地裁剪我們需要的功能,設置上述MQTT客戶端的默認參數,完全不需要手動修改代碼,直接使用工具裁剪配置即可。

打開在線mqttclient裁剪配置工具:https://jiejietop.gitee.io/mqtt/mqtt-config.html

它支持裁剪配置相關的頭文件,配置客戶端默認的一些參數:

mqtt-config-tool01

還支持配置salof同步異步日誌相關的信息,以保證日誌能正常運作,配置完成後生成對應的代碼,然後覆蓋掉原本的MQTT客戶端配置即可,如果不知道如何配置,那就導入默認的配置即可。

mqtt-config-tool02

如果是初次接觸,看不懂上面配置的信息,沒關係,我很貼心地準備了配置的宏定義及其描述信息,保證你能看得懂的。

mqtt-config-tool03

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章