日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

移植示例說明

本文介紹在移植C Link SDK過程中,需要實現的系統依賴接口及說明。

前提條件

已獲取SDK,具體操作,請參見獲取SDK

整體框架

整體框架

C Link SDK支持在不同操作系統或硬件平臺上運行,是因為C Link SDK與操作系統或目標硬件的所有操作,均被抽象為系統依賴接口。因此,在開發產品時,您不僅需要調用SDK的API實現產品業務邏輯,還需要編寫代碼,實現SDK的系統依賴接口。

說明
  • C Link SDK自版本v4.1.0開始,已在SDK內部實現連接安全傳輸(TLS),移植網絡接口僅需實現TCP傳輸。

  • 如果用戶從老版本SDK升級至新版本,需關閉aiot_port/*_port.c中的TLS開關(CORE_SYSDEP_MBEDTLS_ENABLED)

系統依賴接口說明

  • 系統依賴接口將C Link SDK與具體的操作系統解耦,不同的系統僅需實現對應的系統依賴接口。

  • 系統依賴接口的原型定義:aiot_sysdep_portfile_t,用戶需定義全局變量g_aiot_sysdep_portfile,該變量為目標系統接口實現,完成移植。

  • 通用接口與互斥鎖接口比較簡單,其使用方法未在本文中說明。但在移植過程中,所有接口均需實現,不能為NULL,否則會報錯。

系統依賴接口列表

類型

名稱

說明

通用接口

core_sysdep_malloc

申請內存。

core_sysdep_free

釋放內存。

core_sysdep_time

獲取當前的時間戳,Link SDK用于差值計算。

core_sysdep_sleep

睡眠指定的毫秒數。

core_sysdep_rand

隨機數生成方法。

網絡接口

core_sysdep_network_init

創建1個網絡會話。

core_sysdep_network_setopt

配置1個網絡會話的連接參數。

core_sysdep_network_establish

建立1個網絡會話,作為MQTT、HTTP等協議的底層承載。

core_sysdep_network_recv

從指定的網絡會話上讀取。

core_sysdep_network_send

在指定的網絡會話上發送。

core_sysdep_network_deinit

銷毀1個網絡會話。

互斥鎖接口

core_sysdep_mutex_init

創建互斥鎖。

core_sysdep_mutex_lock

申請互斥鎖。

core_sysdep_mutex_unlock

釋放互斥鎖。

core_sysdep_mutex_deinit

銷毀互斥鎖。

配置網絡接口

移植C Link SDK時,您需配置core_sysdep_network_setopt的以下參數類型。

  • 配置以下參數類型,選擇要連接的網絡類型:兼容TCP和UDP的網絡連接(Socket類型)。

    類型

    說明

    CORE_SYSDEP_SOCKET_TCP_CLIENT

    TCP客戶端,MQTT、HTTP、HTTP2、WebSocket等功能均使用該類型的連接。如果您需要使用以上功能,需要實現網絡接口的該參數類型。

    CORE_SYSDEP_SOCKET_UDP_CLIENT

    UDP客戶端,如果您需使用CoAP連接,需實現網絡接口的該參數類型。

  • 保存以下參數類型的設置,用于后續建立連接使用。

    類型

    說明

    CORE_SYSDEP_NETWORK_SOCKET_TYPE

    需要建立的Socket類型。

    數據類型:(core_sysdep_socket_type_t *)

    CORE_SYSDEP_NETWORK_HOST

    用于建立網絡連接的域名地址或IP地址,內存與上層模塊共用。

    數據類型:(char *)

    CORE_SYSDEP_NETWORK_BACKUP_IP

    當建聯DNS解析失敗時,使用此備用IP重試,可忽略。

    CORE_SYSDEP_NETWORK_PORT

    用于建立網絡連接的端口號。

    數據類型:(uint16_t *)

    CORE_SYSDEP_NETWORK_CONNECT_TIMEOUT_MS

    建立網絡連接的超時時間。

    數據類型:(uint32_t *)

    CORE_SYSDEP_NETWORK_MAX

    SDK未使用此接口類型,無需實現該接口類型,可忽略。

移植樣例

移植樣例以POSIX接口為例,定制下載SDK時,設備OS選擇(POSIX Compliant)。在下載的C Link SDK文件中,找到樣例文件portfile/aiot_port/posix_port.c,查看基于POSIX接口實現的移植樣例。

移植驗證

在您參考上文移植LinkSDK完成以后,可通過以下步驟快速驗證移植的接口功能是否正常。

  1. 打開./LinkSDK/demos/sysdep_api_test_demo.c文件,實現如下功能

    1. 實現任務創建函數。

      驗證將會使用的并發能力,需要在目標系統(移植后的環境)中創建任務。

    2. 設置堆的最大空間。

      允許SDK使用的最大堆的大小,驗證堆的使用是否正常。

    POSIX接口示例代碼:

    /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> TODO START >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
    /*
     * TODO: task_start功能實現,創建任務,并執行任務,待任務結束后自行退出
     * @param[in] entry  任務函數入口
     * @param[in] argv   任務函數參數
     */
    #include<pthread.h>
    void task_start(TASK_FUNC entry,void* argv)
    {
        pthread_t id;
        pthread_create(&id, NULL, (void*(*)(void *))entry, argv);
    }
    /*TODO: 堆的最大空間,單位字節 */
    #define HEAP_MAX    ( 20 * 1024 )
    /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< TODO END <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
  2. 編譯并運行移植測試demo:sysdep_api_test_demo.c

  3. 查看運行結果。

    • 運行成功

      出現以下日志內容,表示移植的Link SDK接口功能正常。

      Line[804]: TOTAL TEST START
      Line[806]: TEST [1/5] [RANDOM_TEST ] .....................................[START]
      Line[812]: TEST [1/5] [RANDOM_TEST ] .....................................[SUCCESS]
      Line[806]: TEST [2/5] [HEAP_TEST   ] .....................................[START]
      Line[812]: TEST [2/5] [HEAP_TEST   ] .....................................[SUCCESS]
      Line[806]: TEST [3/5] [TIME_TEST   ] .....................................[START]
      Line[519]: sleep 30000 ms test
      Line[499]: sleep_test_task_1 enter wanna sleep: 10000ms
      Line[499]: sleep_test_task_2 enter wanna sleep: 10000ms
      Line[595]: sleep 10000ms start:[1642324352748] stop:[1642324362748] expected 
      Line[812]: TEST [3/5] [TIME_TEST   ] .....................................[SUCCESS]
      Line[806]: TEST [4/5] [NETWORK_TEST] .....................................[START]
      Line[372]: [NETWORK_TEST.RECV] test success
      Line[812]: TEST [4/5] [NETWORK_TEST] .....................................[SUCCESS]
      Line[806]: TEST [5/5] [MUTEX_TEST  ] .....................................[START]
      Line[692]: mutex lock task1, unlock task2 3000 ms
      Line[703]: task1 value [30 --> 30], task2 value [30 --> 60] 
      Line[715]: unlock task1, lock task2 3000 ms
      Line[725]: task1 value [30 --> 60], task2 value [60 --> 60] 
      Line[736]: unlock task1, lock task2 3000 ms
      Line[742]: task1 value [60 --> 90], task2 value [60 --> 90]
      Line[812]: TEST [5/5] [MUTEX_TEST  ] .....................................[SUCCESS]
      Line[816]: TOTAL TEST SUCCESS
    • 運行失敗

      如果無法運行到最后,或運行到最后出現錯誤信息,請根據下表進行定位處理。

      錯誤碼

      說明

      相關接口

      TEST_ERR_RANDOM

      隨機數生成函數測試異常

      core_sysdep_rand

      TEST_ERR_MALLOC

      內存申請測試異常

      core_sysdep_malloc

      TEST_ERR_HEAP

      內存申請及釋放功能測試異常

      core_sysdep_malloc

      core_sysdep_free

      TEST_ERR_SLEEP

      睡眠或者系統時間測試異常

      core_sysdep_time

      core_sysdep_sleep

      TEST_ERR_MUTEX

      互斥鎖功能測試異常

      core_sysdep_mutex_init

      core_sysdep_mutex_lock

      core_sysdep_mutex_unlock

      core_sysdep_mutex_deinit

      TEST_ERR_NETWORK

      網絡功能測試異常

      core_sysdep_network_init

      core_sysdep_network_setopt

      core_sysdep_network_establish

      core_sysdep_network_recv

      core_sysdep_network_send

      core_sysdep_network_deinit

      TEST_ERR_GENERIC

      未知錯誤