全部產品
Search
文件中心

:版本變動記錄

更新時間:Jun 30, 2024

++V3.0.1版本最大的變化, 在於不強制使用者使用SDK內建的編譯系統, 而是可以按需抽取部分功能點對應的C檔案, 以自己喜歡的任何方式進行編譯++。

V3.0.1

V3.0.1版本在2019年03月發布,相對2018年11月發布的V2.3.0版本有如下更動。

新增支援原始碼方式移植

  • 適用於安裝了Ubuntu16.04 64位 的主機,或者安裝了 Windows XPWindows7Windows10 的主機進行開發

  • 使用者可以通過 make menuconfig 命令(Ubuntu)或者通過點擊 config.bat 指令碼(Windows)來選擇功能點

  • 選好功能點之後,都可以通過 extract.sh 命令(Ubuntu)或者是通過點擊 extract.bat 指令碼(Windows) 來抽取需要的源檔案

  • 有了這些源檔案,不論使用者在什麼主機上用什麼方式開發,都可以方便的將這些檔案加入自己的工程中,用自己熟悉的源碼編譯方式進行編譯

在這個過程中所有需要使用者實現的HAL函數介面都被自動整理到一個單獨的檔案中,位於output/eng/wrappers/wrapper.c, 使用者需要對這些函數進行實現

++這項增強顛覆性的解決了過去如果使用者不能很順利的交叉編譯SDK, 就會卡住無法繼續的問題, 大幅增強SDK的可移植性和易用性++

目錄結構

  • 為增強易用性,V3.0.1版本的SDK採用了扁平化的目錄結構擺放源碼,例如src/mqtt下集中擺放所有MQTT上雲功能點的H檔案和C檔案,所有的src/xxxx 目錄都是內聚的。

  • 所有源檔案的擺放和SDK的功能點形成一一對應的關係,除了表示基礎的 src/infra 目錄,現在所有的 src/xxx都各自對應一個SDK的功能,幾個src/xxx,就有幾個功能點,例如:

    • src/dynamic_register:擺放一型一密/動態註冊相關的所有源檔案

    • src/dev_sign:擺放裝置簽名相關的所有源檔案

    • src/mqtt:擺放MQTT連雲相關的所有源檔案

    • src/ota:擺放OTA韌體下載相關的所有源檔案

    • src/dev_model:擺放物模型管理/子裝置管理相關的所有源檔案

API介面和HAL介面的呈現方式

過去SDK只有2個全域性的標頭檔iot_import.hiot_export.h,分別列出SDK對外界需要依賴的 HAL_XXX() 底層介面和列出SDK對外界提供的 IOT_XXX 使用者介面。

我們得到部分使用者的反饋,iot_import.h中列出的100多個HAL介面使他們誤以為全都需要對接,iot_export.h中列出的200多個API介面使他們誤以為全部需要學習使用,感到負擔很重。

因此,我們去掉了這種設計

  • SDK不再有一個整體性的iot_import.hiot_export.h

  • 也不再有頂級目錄下的include

  • 而是將源檔案嚴格按所歸屬的功能點目錄分散排布,我們盡量避免讓使用者看到他其實不需要關注的部分。

++現在++

  • 使用V3.0.1版本的SDK,使用者首先要瞭解SDK提供了哪些功能點(例如MQTT連雲,OTA下載等),並確定自己需要這些功能中的哪一些,並圖形化的配置和選中它們。

  • 其次,通過抽取工具(在Ubuntu主機上是extract.sh 指令碼,在Windows主機上是extract.bat)得到 output目錄下這些功能對應的源檔案。

  • 接著便可以使用,在使用環節,我們對SDK所有外部介面的呈現方式遵循如下的設計原則。

    • output/eng/xxx就對應名為xxx 的功能點,它們從 src/xxx 整理而來。

    • output/eng/xxx/xxx_api.h 就對應名為 xxx的功能點提供的API使用者介面,它們從src/xxx/xxx_api.h整理而來。

    • output/eng/wrappers/wrapper.c自動產生並列出所有需要使用者根據嵌入式目標平台實現的HAL_XXX() 底層介面。

  • 也就是說

    • 只有您需要的功能點,才需要去看 src/xxx/xxx_api.h或者output/eng/xxx/xxx_api.h,所以確保使用者不會看到多餘的API介面聲明。

    • 所有您需要實現的函數,都列在output/eng/wrappers/wrapper.c 中,不需對接的不會包含其中,所以確保使用者不會看到多餘的HAL介面定義。

舉例來說,在最簡單的情形下,使用者只需要SDK中計算MQTT連雲簽名的能力,由於這個能力由src/dev_sign或者output/eng/dev_sign提供

  • 使用者只會看到1個API介面,列在dev_sign_api.h

  • 使用者不會看到任何HAL介面,甚至也看不到wrapper.c,因為這個功能是零依賴的,不需要使用者實現任何C函數即可使用

make.settings 檔案

  • 新增對使用 Windows XPWindows 7或者Windows 10主機做開發的使用者,也可以用 config.bat工具圖形化的配置所需要的功能,不一定需要Linux主機。

  • FEATURE_XXX系列的選項名字修改。

曾用名

新版名

說明

FEATURE_AWSS_SUPPORT_PHONEASAP

FEATURE_AWSS_SUPPORT_AHA

WiFi配網功能中的手機熱點配網模式。

FEATURE_AWSS_SUPPORT_ROUTER

FEATURE_AWSS_SUPPORT_ADHA

WiFi配網功能中的路由器配網模式。

  • 新增以下選項

    • FEATURE_AWSS_SUPPORT_SMARTCONFIG_WPS:WiFi配網功能中的點對點配網模式。

    • FEATURE_AWSS_SUPPORT_DEV_AP:WiFi配網功能中的裝置熱點配網模式。

MQTT函數介面

  • 不再需要調用IOT_SetupConnInfo(),使用者建立MQTT串連只需要知道1個介面IOT_MQTT_Construct()

  • 不再需要準備入參,調用IOT_MQTT_Construct()的時候絕大多數串連參數都可以不填寫,SDK會自動補上預設值而不是報錯返回。

新增的功能點和介面

  • 新增裝置簽名功能點,是SDK的最簡形態。

    • 這個功能點只有1個API,是IOT_Sign_MQTT()

  • 新增一型一密功能點,用於所有裝置不必燒錄不同裝置認證(ProductKey、DeviceName、DeviceSecret)的情境。

    • 這個功能點只有1個API,是IOT_Dynamic_Register()

  • 新增裝置重設功能點,可用於裝置告知雲端解除綁定關係,解除子裝置和網關對應關係的情境。

    • 這個功能點只有1個API,是IOT_DevReset_Report()

  • 新增HTTP2檔案上傳功能點,可用於流式上傳大檔案到雲端的情境。

    • 這個功能點只有3個API,是IOT_HTTP2_UploadFile_Connect()IOT_HTTP2_UploadFile_Request()IOT_HTTP2_UploadFile_Disconnect()

去掉的功能

  • 由於使用者已可使用源檔案方式移植或者GNU Make方式移植,我們去掉了基於cmake 的編譯方式支援。

V2.3.0

V2.3.0版本在2018年11月發布,相對2018年8月31日發布的V2.2.1版本有如下更動。

make.settings 檔案

  • 對使用Ubuntu16.0464位主機開發的使用者,可以用make menuconfig命令圖形化編輯make.settings檔案。

  • FEATURE_XXX系列的選項名字修改。

曾用名

新版名

說明

FEATURE_SDK_ENHANCE

FEATURE_DEVICE_MODEL_ENABLED

物模型管理(Alink JSON協議)能力開關

FEATURE_ENHANCED_GATEWAY

FEATURE_DEVICE_MODEL_GATEWAY

物模型管理中的網關能力開關

FEATURE_WIFI_AWSS_ENABLED

FEATURE_WIFI_PROVISION_ENABLED

WiFi配網能力開關

  • 新增以下選項

    • FEATURE_DEVICE_BIND_ENABLED:裝置綁定功能的開關,只有串連飛燕平台的客戶需要關注並開啟這個開關,用於使能公版APP控制裝置

    • FEATURE_ALCS_CLIENT_ENABLED:本地通訊中的用戶端部分功能開關,只有邊緣網關這類需要控制其他IoT裝置的裝置才需要開啟

    • FEATURE_ALCS_SERVER_ENABLED:本地通訊中的服務端部分功能開關,需要接受手機app或者邊緣網關區域網路控制的裝置需要開啟

    • FEATURE_AWSS_SUPPORT_SMARTCONFIG:WiFi配網中的一鍵配網模式

    • FEATURE_AWSS_SUPPORT_ZEROCONFIG:WiFi配網中的零配模式

    • FEATURE_AWSS_SUPPORT_ROUTER:WiFi配網中的路由器配網模式

    • FEATURE_AWSS_SUPPORT_PHONEASAP:WiFi配網中的手機熱點配網模式

  • 刪除以下選項

    • FEATURE_COAP_DTLS_SUPPORT:CoAP上雲是否經過DTLS加密,由於總是使能,不再需要使用者配置

全域函數介面

  • 刪除IOT_OpenLog()IOT_CloseLog(),使用者可以通過IOT_SetLogLevel()來控制SDK列印日誌的詳細程度或者不列印。

  • 刪除IOT_LOG_EMERG這個日誌等級,改成IOT_LOG_NONE, 用於IOT_SetLogLevel(IOT_LOG_NONE), 表達日誌功能的整體關閉。

  • 刪除IOT_Linkkit_Ioctl(),原有功能合并到IOT_Ioctl()中,所有的參數選項可查看iotx_ioctl_option_t 枚舉定義。

  • 增強IOT_Ioctl(),新選項IOTX_IOCTL_SET_MQTT_DOMAINIOTX_IOCTL_SET_HTTP_DOMAIN可用於讓客戶傳入自訂串連的MQTT/HTTP網域名稱,用于海外新網站。

MQTT函數介面

  • 原有基礎版介面及新增介面中,第1個參數handle都可以傳NULL,表示選取預設參數建立串連或使用預設串連,包括

    • IOT_MQTT_Construct

    • IOT_MQTT_Destroy

    • IOT_MQTT_Yield

    • IOT_MQTT_LogPost

    • IOT_MQTT_CheckStateNormal

    • IOT_MQTT_Subscribe

    • IOT_MQTT_Unsubscribe

    • IOT_MQTT_Publish

    • IOT_MQTT_Subscribe_Sync

    • IOT_MQTT_Publish_Simple

  • 刪除結構體iotx_mqtt_param_t中的pwrite_buf成員和pread_buf成員

  • 新增介面IOT_MQTT_Publish_Simple(), 可以傳入字串類型的參數表達topic和payload

    int IOT_MQTT_Publish_Simple(void *handle, const char *topic_name, int qos, void *data, int len);
                        
  • 新增介面IOT_MQTT_Subscribe_Sync(),可以阻塞式的進行同步訂閱,訂閱成功之前函數並不返回

    int IOT_MQTT_Subscribe_Sync(void *handle,
                                const char *topic_filter,
                                iotx_mqtt_qos_t qos,
                                iotx_mqtt_event_handle_func_fpt topic_handle_func,
                                void *pcontext,
                                int timeout_ms);
                        
  • 最佳化介面IOT_MQTT_Subscribe(), 可以在MQTT串連尚未建立的時候就提前做離線的訂閱,C-SDK會在建連成功後立即發送訂閱報文

OTA函數介面

  • 由於MQTT函數介面的第1個參數handle可以傳NULL, 也影響到基礎版OTA函數介面 IOT_OTA_Init的第3個參數可以接受NULL傳參, 表示使用預設串連

    void *IOT_OTA_Init(const char *product_key, const char *device_name, void *ch_signal);
                        

去掉的介面

舊版的 linkkit_xxx() 和 linkkit_gateway_xxx() 介面作為編譯時間可選使能,預設不編譯

注1:舊版的linkkit介面仍然可以通過在make.settings檔案中的如下語句使能,此時新版介面消失,舊版介面重新出現。

FEATURE_DEPRECATED_LINKKIT=y
            

注2:為了減少裝置端記憶體消耗,當使用者調用SDK的API上傳屬性變化通知、事件通知到雲端時SDK不再檢查資料格式的正確性,因此使用者不再需要從雲端匯出TSL的JSON檔案轉換為C的字串後放到C代碼中。

HAL函數介面

  • 刪除了和已有介面HAL_Reboot 重複的HAL_Sys_reboot