本文介绍在移植C Link SDK过程中,需要实现的系统依赖接口及说明。

前提条件

已获取SDK,具体操作,请参见获取SDK

整体框架

整体框架

C Link SDK支持在不同操作系统或硬件平台上运行,是因为C Link SDK与操作系统或目标硬件的所有操作,均被抽象为系统依赖接口。因此,在开发产品时,您不仅需要调用SDK的API实现产品业务逻辑,还需要编写代码,实现SDK的系统依赖接口。

系统依赖接口说明

  • 系统依赖接口将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_recv 在指定的网络会话上发送。
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未使用此接口类型,无需实现该接口类型,可忽略。

移植样例

您可在C Link SDK文件中,找到样例文件portfile/aiot_port/posix_port.c,查看基于POSIX接口实现的移植样例。