556
阿里云
C-SDK使用(其它)__SDK使用参考_设备端接入手册_阿里云物联网套件-阿里云
SDK代码结构
- common目录主要是常用的utility库。
- example目录是针对os平台的demo。
- include目录包含ccp和mqtt对外的头文件。
- platform目录包含os平台需要实现的接口文件,包括socket、mutex、semphore、timer、thread、memory等。
- public_libs目录包含mbedtls库和其它tls库的api接口实现。
- src目录包含ccp和mqtt协议代码实现。
- 红色框是移植其它os平台需要实现的接口文件。
说明
- 目前SDK是依赖RTOS OS和TCP/TP协议栈,硬件开发环境必须要有OS和协议栈。如图的开发方式,MCU通过uart接GPRS/LTE芯片,SDK目前暂时还不支持,内部正在开发中。
移植
对于其它平台,SDK暂未支持,后面会陆续支持更多的平台。现在如果想在其它平台上运行SDK,可以按照下面的方法进行移植:
- 在platform目录下新建一个本平台的目录
- 目录下包含src和inc两个目录,是平台相关接口的代码实现和头文件定义,src目录包含以下文件:
aliyun_iot_platform_memory.c // 内存分配和释放
aliyun_iot_platform_network.c // 网络操作
aliyun_iot_platform_persistence.c // 文件操作,可不实现,参考freertos平台
aliyun_iot_platform_pthread.c // 线程和互斥锁
aliyun_iot_platform_random.c // 随机数生成,复用freertos平台下的实现即可
aliyun_iot_platform_signal.c // 信号,可不实现,参考freertos平台
aliyun_iot_platform_timer.c // 定时器
aliyun_iot_platform_threadsync.c // 信号量同步
- IoT SDK默认使用Mbedtls,如果嵌入式开发板SDK有SSL库,没有必要把IoT SDK带的Mbedtls添加到开发板上面,可以修改文件aliyun_iot_network_ssl.c,用开发板SDK带的SSL库替换掉Mbedtls,这样节省RAM/ROM资源。
- 兼容SSL库的代码放在下面的目录:
sdkpublic_libsportingmbedtls //Mbedtls api接口
sdkpublic_libsportingmicossl //mico ssl api接口
sdkpublic_libsportingqcassl //高通threadx平台ssl api接口
sdkpublic_libsportingopenssl //openssl api接口
IoT SDK 支持MQTT+TCP或MQTT+TLS方式来传输MQTT数据。
如果开发板RAM/ROM资源受限,可以采用MQTT+TCP方式来传输MQTT数据,这样public_libsmbedtls目录就无需编译到开发板SDK里面,同时需要把sdksrcmqttMQTTClient-Cnettypetcp添加到编译系统里面。
RAM/ROM资源充足建议采用TLS方式,需要把sdksrcmqttMQTTClient-Cnettypetls添加到编译系统里面。
- 以重写文件sdkpublic_libsportingmicosslaliyun_iot_network_ssl.c为例。
typedef struct _TLSDataParams {
mico_ssl_t ssl; //根据具体的SSL库添加ssl data
int socketId;
}TLSDataParams;
/*
* SSL接收,一定要实现为阻塞式的读
* buffer: 存放接收数据的buffer
* len: 要读的数据的长度
* timeout_ms: 没有数据可读的时候,需要阻塞的最大时间,单位是毫秒
* 函数返回值: 返回实际读取到的数据长度
*/
int aliyun_iot_network_ssl_read(TLSDataParams *pTlsData, unsigned char *buffer, int len, int timeout_ms);
/*
* SSL发送
* buffer: 存放要发送的数据。
* len: 要发送的数据长度
* timeout_ms: 发送的超时时间,可以忽略。
* 函数返回值: 返回实际发送的数据长度
*/
int aliyun_iot_network_ssl_write(TLSDataParams *pTlsData, unsigned char *buffer, int len, int timeout_ms);
//关闭SSL连接,释放资源
void aliyun_iot_network_ssl_disconnect(TLSDataParams *pTlsData);
/*
* SSL连接
* addr: server IP地址
* port: server端口号
* ca_crt: 服务端证书内容
* ca_crt_len: 服务端证书长度
*/
int aliyun_iot_network_ssl_connect(TLSDataParams *pTlsData, const char *addr, const char *port, const char *ca_crt, size_t ca_crt_len);
编译
- 如果使用Makefile编译,需要把make.settings中的PLATFORM、PLATFORM_CC、PLATFORM_AR改成本平台相关的,并且在PORTING_INCLUDE中添加本平台编译需要依赖的头文件路径
- 如果使用IAR工具编译,可以参考Mico平台下的编译方法C-SDK使用(Mico)
最后更新:2016-12-16 14:20:27
上一篇:
C-SDK使用(threadx)__SDK使用参考_设备端接入手册_阿里云物联网套件-阿里云
下一篇:
JAVA-SDK使用(MQTT)__SDK使用参考_设备端接入手册_阿里云物联网套件-阿里云
android版本__上传SDK_SDK手册_视频点播-阿里云
AddTags__标签相关API_API 参考_负载均衡-阿里云
接入手册__常见接入问题_Web 应用防火墙-阿里云
业务风控Android/iOS使用说明__使用手册_数据风控-阿里云
请求结构__调用方式_API使用手册_消息服务-阿里云
SqlServer数据源配置__数据源配置_数据同步手册_用户操作指南_大数据开发套件-阿里云
权限检查规则__附录1: 授权策略语言_用户指南_访问控制-阿里云
设置透明数据加密__安全管理_用户指南_云数据库 RDS 版-阿里云
胡晓明宣布:阿里云推出雷神自研服务器
创建主题__主题操作_快速入门_消息服务-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云