Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

String concatenation does not add '\0', causing an error during OTA running #40

Open
wants to merge 39 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
0584302
1. 增加设备动态注册功能。
May 15, 2019
452a91b
1. 修改各Sample设备信息获取方式为设备信息HAL层接口实现。
May 15, 2019
6de2b00
1. 基于影子增加数据模板功能。
May 16, 2019
f6cb325
修改readme,增加文档目录docs及物联网开发平台.md
May 16, 2019
6d26cef
调整文档目录
May 17, 2019
2536d89
update readme
May 30, 2019
a4a6a7e
1. MQTT增加subscribe的event handler,及时通知subscribe状态,可解决log及sys主题在destroy…
spikelin Jun 10, 2019
75b9f02
v3.0.1发布
spikelin Jun 11, 2019
76fe477
1. 数据模板字符串类型支持json类型。
Jul 17, 2019
f757f37
update SDK version
Jul 17, 2019
50e1926
优化数据模板相关示例
Jul 18, 2019
ef3263b
1. OTA支持断点续传。
Aug 9, 2019
7b9c241
Corrected the typo in the template
twowinter Aug 23, 2019
13cc46c
1. 修正http接收的超时判断。
Aug 26, 2019
758c48e
delete all old SDK files
Sep 19, 2019
4f3306c
v3.1.0 C-SDK refactor
Sep 19, 2019
e517183
update document and delete garbled
Sep 24, 2019
d62a536
v3.1.1
Oct 10, 2019
79a95e2
1. 修复OTA内存泄漏
Nov 11, 2019
8ae3ff8
v3.1.2
Nov 11, 2019
213b1a9
fix Windows time format error
Nov 11, 2019
f4553ad
update document about topic forward
spikelin Nov 25, 2019
c1f61a6
fix: 消除编译警告
caodj Nov 29, 2019
e2ef5e0
统一代码缩进风格
spikelin Mar 5, 2020
af362aa
C-SDK v3.1.3
spikelin Mar 5, 2020
60a1419
fix some potential bugs
spikelin Mar 6, 2020
dd9fb78
fix coap running bug
Apr 7, 2020
2ed2231
Merge pull request #25 from caodj/master
spikelin Apr 27, 2020
af25f2e
Merge pull request #23 from twowinter/master
spikelin Apr 27, 2020
33118e9
v3.2.0
Apr 30, 2020
f800546
1. fix bugs of OTA reload and HTTP download
Jun 23, 2020
e398ffa
C-SDK v3.2.1
Aug 4, 2020
7ffb37c
fix Windows build error
Aug 4, 2020
0d2c305
fix build error of AT socket
Oct 13, 2020
5381d0e
v3.2.2
Oct 14, 2020
2616003
v3.2.3
spikelin Nov 3, 2020
df06a4b
fix reply puback/pubrec timer expired issue
spikelin Dec 4, 2020
4afac4f
fix socket close error
spikelin Feb 22, 2022
bbc4748
Fixed the error in the return format when compiling and running in Mi…
Yangyuanxin Aug 18, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
v3.1.2
1. 移除IoT Explorer相关代码及文档
2. ca.c/h重命名为qcloud_iot_ca.c/h, device.c/h重命名为qcloud_iot_device.c/h
3. 更新部分文档说明
Spike Lin committed Nov 11, 2019
commit 8ae3ff84b949a7a703662b39470cd12c8d80152d
10 changes: 3 additions & 7 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -28,7 +28,7 @@ set(FEATURE_MQTT_DEVICE_SHADOW ON)
set(FEATURE_COAP_COMM_ENABLED ON)

# 是否打开MQTT通道网关功能
set(FEATURE_GATEWAY_ENABLED ON)
set(FEATURE_GATEWAY_ENABLED OFF)

# 是否打开OTA固件升级总开关
set(FEATURE_OTA_COMM_ENABLED ON)
@@ -43,13 +43,10 @@ set(FEATURE_AUTH_MODE "KEY")
set(FEATURE_AUTH_WITH_NOTLS OFF)

# 是否使能设备动态注册
set(FEATURE_DEV_DYN_REG_ENABLED ON)
set(FEATURE_DEV_DYN_REG_ENABLED OFF)

# 是否打开日志上报云端功能
set(FEATURE_LOG_UPLOAD_ENABLED ON)

# 是否打开事件上报功能
set(FEATURE_EVENT_POST_ENABLED ON)
set(FEATURE_LOG_UPLOAD_ENABLED OFF)

# 是否打开代码中获取设备信息功能,OFF时将从device_info.json中读取设备信息
set(FEATURE_DEBUG_DEV_INFO_USED OFF)
@@ -144,7 +141,6 @@ option(GATEWAY_ENABLED "Enable GATEWAY" ${FEATURE_GATEWAY_ENABLED})
option(AUTH_WITH_NOTLS "Enable AUTH_WITH_NOTLS" ${FEATURE_AUTH_WITH_NOTLS})
option(COAP_COMM_ENABLED "Enable COAP_COMM" ${FEATURE_COAP_COMM_ENABLED})
option(SYSTEM_COMM "Enable SYSTEM_COMM" ${FEATURE_SYSTEM_COMM_ENABLED})
option(EVENT_POST_ENABLED "Enable EVENT_POST" ${FEATURE_EVENT_POST_ENABLED})
option(DEV_DYN_REG_ENABLED "Enable DEV_DYN_REG" ${FEATURE_DEV_DYN_REG_ENABLED})
option(LOG_UPLOAD "Enable LOG_UPLOAD" ${FEATURE_LOG_UPLOAD_ENABLED})
option(DEBUG_DEV_INFO_USED "Enable DEBUG_DEV_INFO_USED" ${FEATURE_DEBUG_DEV_INFO_USED})
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -2,7 +2,9 @@

腾讯云物联网设备端 C-SDK 依靠安全且性能强大的数据通道,为物联网领域开发人员提供设备端快速接入云端,并和云端进行双向通信的能力。

在版本v3.1.0之后,SDK对编译环境,代码及目录结构进行了重构优化,提高了可用性和可移植性。
在版本v3.1.0之后,SDK对编译环境,代码及目录结构进行了重构优化,提高了可用性和可移植性。

本SDK仅适用于物联网通信平台IoT Hub,对于物联网开发平台,请访问 [IoT Explorer C-SDK](https://github.com/tencentyun/qcloud-iot-explorer-sdk-embedded-c)

## 一、C-SDK 适用范围
C-SDK 采用模块化设计,分离核心协议服务与硬件抽象层,并提供灵活的配置选项和多种编译方式,适用于不同设备的开发平台和使用环境。
@@ -55,9 +57,7 @@ C-SDK 支持三种编译方式:

## 四、SDK 示例体验

C-SDK的samples目录有使用各个功能的示例,关于运行示例的详细说明,请参考docs目录各个文档,
物联网通信平台请参考**docs/IoT_Hub**目录文档
物联网开发平台请参考**docs/IoT_Explorer**目录文档
C-SDK的samples目录有使用各个功能的示例,关于运行示例的详细说明,请参考docs目录各个文档

## 五、注意事项

5 changes: 5 additions & 0 deletions docs/C-SDK_API及可变参数说明.md
Original file line number Diff line number Diff line change
@@ -52,6 +52,11 @@ C-SDK 的使用可以根据具体场景需求,配置相应的参数,满足
| 7 | IOT_MQTT_IsConnected | 查看当前 MQTT 是否已连接 |
| 8 | IOT_MQTT_GetErrCode | 获取IOT_MQTT_Construct失败的错误码 |

- 接口使用说明
```
MQTT构造时候除了提供设备信息,还需要提供一个回调函数,用于接收消息包括连接状态通知,订阅主题是否成功,QoS1消息是否发布成功等等事件通知。订阅主题时则需提供另一个回调函数,用于接收该主题的消息下发。具体接口使用方式可以参考docs/IoT_Hub目录的mqtt_sample_快速入门文档。
```

- 多线程环境使用说明
SDK对于MQTT接口在多线程环境下的使用有如下注意事项:
```
15 changes: 8 additions & 7 deletions docs/C-SDK_Build编译环境及配置选项说明.md
Original file line number Diff line number Diff line change
@@ -61,7 +61,6 @@ sdk_src为SDK的核心逻辑及协议相关代码,一般不需要修改,其
| FEATURE_AUTH_WITH_NOTLS | ON/OFF | OFF: TLS使能, ON: TLS关闭 |
| FEATURE_DEV_DYN_REG_ENABLED | ON/OFF | 设备动态注册开关 |
| FEATURE_LOG_UPLOAD_ENABLED | ON/OFF | 日志上报开关 |
| FEATURE_EVENT_POST_ENABLED | ON/OFF | 事件上报开关 |
| FEATURE_DEBUG_DEV_INFO_USED | ON/OFF | 设备信息获取来源开关 |
| FEATURE_SYSTEM_COMM_ENABLED | ON/OFF | 获取后台时间开关 |
| FEATURE_AT_TCP_ENABLED | ON/OFF | AT模组TCP功能开关 |
@@ -131,16 +130,18 @@ set(FEATURE_DEBUG_DEV_INFO_USED OFF)
4. 填写设备信息
将在腾讯云物联网平台创建的设备的设备信息(以**密钥认证设备**为例)填写到device_info.json中,如:
```
"auth_mode":"KEY",
"productId":"S3EUVBRJLB",
"deviceName":"test_device",
"key_deviceinfo":{
"deviceSecret":"vX6PQqazsGsMyf5SMfs6OA6y"
{
"auth_mode":"KEY",
"productId":"S3EUVBRJLB",
"deviceName":"test_device",
"key_deviceinfo":{
"deviceSecret":"vX6PQqazsGsMyf5SMfs6OA6y"
}
}
```

5. 运行示例
示例输出位于`output/release/bin`文件夹中,比如运行data_template_sample示例,输入`./output/release/bin/data_template_sample`即可。
示例输出位于`output/release/bin`文件夹中,比如运行mqtt_sample示例,输入`./output/release/bin/mqtt_sample`即可。


### Windows环境
2 changes: 1 addition & 1 deletion docs/C-SDK_Porting跨平台移植概述.md
Original file line number Diff line number Diff line change
@@ -6,7 +6,7 @@

#### 架构图

![framework](https://main.qcloudimg.com/raw/ebcd38eda169523c4b1751dac1c630a0.png)
![framework](https://main.qcloudimg.com/raw/b1a38c7d9a39a5414ccb3c8552d0efbc.png)

#### 架构说明

2 changes: 1 addition & 1 deletion docs/Device_Auth设备接入认证.md
Original file line number Diff line number Diff line change
@@ -22,7 +22,7 @@
- 密钥设备要通过平台的安全认证,必须具备三元组信息:产品 ID(ProductId)、设备名(DeviceName)、设备密钥(DeviceSecret),其中设备密钥由平台生成。

## 设备身份信息烧录
- 创建产品后,在物联网开发平台 [控制台](https://console.cloud.tencent.com/iotexplorer) 或者通过 [云 API](https://cloud.tencent.com/document/product/1081/37178) 创建设备,并获取对应的设备信息,将上述的四元组或者三元组信息,在设备生产的特定环节,烧录到非易失介质中,设备 SDK 运行时读取存放的设备信息,进行设备认证。
- 创建产品后,将上述的四元组或者三元组信息,在设备生产的特定环节,烧录到非易失介质中,设备 SDK 运行时读取存放的设备信息,进行设备认证。

- SDK提供了设备信息读写的HAL接口,必须实现。可以参考linux平台HAL_Device_linux.c中设备信息读写的实现。

29 changes: 0 additions & 29 deletions docs/Device_Type设备类型说明.md

This file was deleted.

19 changes: 0 additions & 19 deletions docs/IoT_Explorer/Data_template数据模板代码生成.md

This file was deleted.

143 changes: 0 additions & 143 deletions docs/IoT_Explorer/Data_template数据模板应用开发.md

This file was deleted.

213 changes: 0 additions & 213 deletions docs/IoT_Explorer/IoT_Explorer开发平台快速入门.md

This file was deleted.

4 changes: 4 additions & 0 deletions docs/IoT_Hub/door_aircond_sample_设备互通.md
Original file line number Diff line number Diff line change
@@ -37,21 +37,25 @@ set(FEATURE_DEBUG_DEV_INFO_USED OFF)
#### 2. 填写设备信息
将上面创建的airConditioner1设备的设备信息填写到一个JSON文件aircond_device_info.json中
```
{
"auth_mode":"KEY",
"productId":"GYT9V6D4AF",
"deviceName":"airConditioner1",
"key_deviceinfo":{
"deviceSecret":"vXeds12qazsGsMyf5SMfs6OA6y"
}
}
```
再将door1设备的设备信息填写到另一个JSON文件door_device_info.json中
```
{
"auth_mode":"KEY",
"productId":"S3EUVBRJLB",
"deviceName":"door1",
"key_deviceinfo":{
"deviceSecret":"i92E3QMNmxi5hvIxUHjO8gTdg"
}
}
```

#### 3. 执行aircond_shadow_sample示例程序
2 changes: 2 additions & 0 deletions docs/IoT_Hub/dynreg_dev_sample_动态注册.md
Original file line number Diff line number Diff line change
@@ -40,13 +40,15 @@ set(FEATURE_DEBUG_DEV_INFO_USED OFF)
#### 2. 填写设备信息
将控制台获取到的产品信息填写到一个JSON文件dynreg_device_info.json中,其中deviceName字段填写要生成的设备名字,deviceSecret字段保持为"YOUR_IOT_PSK",这样dynreg_dev_sample就会判断设备信息为空,知道这个设备是需要进行动态注册。这部分逻辑可以由用户自行实现,sample仅作示例。
```
{
"auth_mode":"KEY",
"productId":"S3EUVBRJLB",
"productSecret":"8Xz56tyfgQAZEDCTUGau4snA",
"deviceName":"device_1234",
"key_deviceinfo":{
"deviceSecret":"YOUR_IOT_PSK"
}
}
```
#### 3. 运行示例
执行设备动态注册例程dynreg_dev_sample:
2 changes: 2 additions & 0 deletions docs/IoT_Hub/gateway_sample_网关功能.md
Original file line number Diff line number Diff line change
@@ -73,6 +73,7 @@ set(FEATURE_DEBUG_DEV_INFO_USED OFF)
#### 2. 填写设备信息
将上面在腾讯云物联网IoT Hub创建的网关设备和子设备的设备信息(以**密钥认证设备**为例)填写到device_info.json中
```
{
"auth_mode":"KEY",
"productId":"NINEPLMEB6",
"deviceName":"Gateway-demo",
@@ -84,6 +85,7 @@ set(FEATURE_DEBUG_DEV_INFO_USED OFF)
"sub_productId":"S3EUVBRJLB",
"sub_devName":"test_device"
}
}
```

#### 3. 执行网关示例程序
14 changes: 8 additions & 6 deletions docs/IoT_Hub/mqtt_sample_快速入门.md
Original file line number Diff line number Diff line change
@@ -70,12 +70,14 @@ set(FEATURE_DEBUG_DEV_INFO_USED OFF)
#### 2. 填写设备信息
将上面在腾讯云物联网IoT Hub创建的设备的设备信息(以**密钥认证设备**为例)填写到device_info.json中
```
"auth_mode":"KEY",
"productId":"S3EUVBRJLB",
"deviceName":"test_device",
"key_deviceinfo":{
"deviceSecret":"vX6PQqazsGsMyf5SMfs6OA6y"
}
{
"auth_mode":"KEY",
"productId":"S3EUVBRJLB",
"deviceName":"test_device",
"key_deviceinfo":{
"deviceSecret":"vX6PQqazsGsMyf5SMfs6OA6y"
}
}
```

#### 3. 执行 mqtt_sample 示例程序
14 changes: 8 additions & 6 deletions docs/IoT_Hub/shadow_sample_设备影子.md
Original file line number Diff line number Diff line change
@@ -38,12 +38,14 @@ set(FEATURE_DEBUG_DEV_INFO_USED OFF)
#### 2. 填写设备信息
将设备信息填写到配置文件device_info.json中
```
"auth_mode":"KEY",
"productId":"S3EUVBRJLB",
"deviceName":"test_device",
"key_deviceinfo":{
"deviceSecret":"vX6PQqazsGsMyf5SMfs6OA6y"
}
{
"auth_mode":"KEY",
"productId":"S3EUVBRJLB",
"deviceName":"test_device",
"key_deviceinfo":{
"deviceSecret":"vX6PQqazsGsMyf5SMfs6OA6y"
}
}
```
#### 3. 第一次执行shadow_sample示例程序
示例首先订阅了$shadow/operation/result/{productID}/{deviceName}主题,然后通过向$shadow/operation/{productID}/{deviceName}主题发送shadow GET命令来获取云端缓存的设备状态,然后就循环更新updateCount变量并执行shadow UPDATE。
23 changes: 5 additions & 18 deletions docs/MCU+通用TCP_AT模组移植(FreeRTOS).md
Original file line number Diff line number Diff line change
@@ -1,16 +1,12 @@
## 简介

对于不具备网络通讯能力的MCU,一般采用MCU+通讯模组的方式,通讯模组(包括WiFi/2G/4G/NB-IoT)一般提供了基于串口的AT指令协议供MCU进行网络通讯。针对这种场景,C-SDK 封装了AT-socket网络层,网络层之上的核心协议和服务层无须移植。本文阐述针对 MCU(FreeRTOS)+通用TCP AT模组的目标环境,如何移植C-SDK 并接入腾讯云物联网平台(以IoT Explorer为例)。

## 系统框图
![mcu+module](https://main.qcloudimg.com/raw/aa148085175ebc615c4bc6fa3e483188.jpg)
对于不具备网络通讯能力的MCU,一般采用MCU+通讯模组的方式,通讯模组(包括WiFi/2G/4G/NB-IoT)一般提供了基于串口的AT指令协议供MCU进行网络通讯。针对这种场景,C-SDK 封装了AT-socket网络层,网络层之上的核心协议和服务层无须移植。本文阐述针对 MCU(FreeRTOS)+通用TCP AT模组的目标环境,如何移植C-SDK 并接入腾讯云物联网平台。

## 移植步骤
![port_flow](https://main.qcloudimg.com/raw/3717052f47405e66a754f2f8594c6c84.jpg)

### 1. 下载最新版本设备端 [C-SDK](https://github.com/tencentyun/qcloud-iot-sdk-embedded-c)

### 2. SDK功能配置及代码抽取
### 2. SDK功能配置及代码抽取
- 使用通用TCP模组编译配置选项配置如下:

| 名称 | 配置 | 说明 |
@@ -22,28 +18,19 @@
| FEATURE_OTA_COMM_ENABLED | ON/OFF | 根据需要设置 |
| FEATURE_AUTH_MODE | KEY | 资源受限设备认证方式建议选秘钥认证 |
| FEATURE_AUTH_WITH_NOTLS | ON/OFF | 根据需要是否使能TLS |
| FEATURE_EVENT_POST_ENABLED | ON/OFF | 根据需要是否使能事件上报 |
| FEATURE_AT_TCP_ENABLED | ON | AT模组TCP功能开关 |
| FEATURE_AT_UART_RECV_IRQ | ON | AT模组中断接受功能开关 |
| FEATURE_AT_OS_USED | ON | AT模组多线程功能开关 |
| FEATURE_AT_DEBUG | OFF | 默认关闭AT模组调试功能,有调试需要再打开|

- 参考文档[C-SDK_Build编译环境及配置选项说明]()抽取代码

- 将抽取的代码目录作为通信组件放在类似 RTOS、FATFS 的第三方组件的同级目录,系统代码框架大体如下:
![](https://main.qcloudimg.com/raw/5e3da49ac27e57d72fd6f6a70bb98547.jpg)

### 3. 数据模板模板代码生成
对于IoT_Explorer产品可以参考[IoT_Explorer/Data_template数据模板代码生成]()
对于IoT_Hub产品,可跳过这一步

### 4. HAL 层移植
### 3. HAL 层移植

参见[C-SDK_Porting跨平台移植概述]()
对于网络相关的HAL接口,通过上面的编译选项已选择SDK提供的AT_Socket框架,SDK会调用 network_at_tcp.c 的at_socket接口,at_socket层不需要移植,需要实现AT串口驱动及AT模组驱动,AT模组驱动只需要实现AT框架中at_device的驱动结构体 *at_device_op_t* 的驱动接口即可,可以参照at_device目录下的已支持的模组。目前SDK针对物联网使用较广的WiFi模组ESP8266提供了底层接口实现,供移植到其他通讯模组时作为参考。

### 5. 业务逻辑开发
### 4. 业务逻辑开发

对于IoT_Explorer产品,可以参考[IoT_Explorer/Data_template数据模板应用开发]()实现具体业务场景下的业务逻辑开发。
对于IoT_Hub产品,可以参考IoT_Hub目录下的例程。
对于IoT_Hub产品,可以参考Docs/IoT_Hub目录下的例程。

23 changes: 5 additions & 18 deletions docs/MCU+通用TCP_AT模组移植(nonOS).md
Original file line number Diff line number Diff line change
@@ -1,17 +1,13 @@
## 简介

对于不具备网络通讯能力的MCU,一般采用MCU+通讯模组的方式,通讯模组(包括WiFi/2G/4G/NB-IoT)一般提供了基于串口的AT指令协议供MCU进行网络通讯。针对这种场景,C-SDK 封装了AT-socket网络层,网络层之上的核心协议和服务层无须移植。本文阐述针对 MCU(无OS)+通用TCP AT模组的目标环境,如何移植C-SDK 并接入腾讯云物联网平台(以IoT Explorer为例)
对于不具备网络通讯能力的MCU,一般采用MCU+通讯模组的方式,通讯模组(包括WiFi/2G/4G/NB-IoT)一般提供了基于串口的AT指令协议供MCU进行网络通讯。针对这种场景,C-SDK 封装了AT-socket网络层,网络层之上的核心协议和服务层无须移植。本文阐述针对 MCU(无OS)+通用TCP AT模组的目标环境,如何移植C-SDK 并接入腾讯云物联网平台。
相较于有RTOS场景,at_socket网络接收数据的处理会有差异,应用层需要周期性的调用**IOT_MQTT_Yield**来接收服务端下行数据,错过接收窗口则会存在数据丢失的情况,所以在业务逻辑较为复杂的场景建议使用RTOS,通过配置 FEATURE_AT_OS_USED = OFF选择无OS方式。

## 系统框图
![mcu+module](https://main.qcloudimg.com/raw/aa148085175ebc615c4bc6fa3e483188.jpg)

## 移植步骤
![port_flow](https://main.qcloudimg.com/raw/3717052f47405e66a754f2f8594c6c84.jpg)

### 1. 下载最新版本设备端 [C-SDK](https://github.com/tencentyun/qcloud-iot-sdk-embedded-c)

### 2. SDK功能配置及代码抽取
### 2. SDK功能配置及代码抽取
- 无RTOS使用通用TCP模组编译配置选项配置如下:

| 名称 | 配置 | 说明 |
@@ -23,29 +19,20 @@
| FEATURE_OTA_COMM_ENABLED | ON/OFF | 根据需要设置 |
| FEATURE_AUTH_MODE | KEY | 资源受限设备认证方式建议选秘钥认证 |
| FEATURE_AUTH_WITH_NOTLS | ON/OFF | 根据需要是否使能TLS |
| FEATURE_EVENT_POST_ENABLED | ON/OFF | 根据需要是否使能事件上报 |
| FEATURE_AT_TCP_ENABLED | ON | 使能at_socket组件 |
| FEATURE_AT_UART_RECV_IRQ | ON | 使能AT串口中断接收 |
| FEATURE_AT_OS_USED | OFF | at_socket组件无RTOS环境使用 |
| FEATURE_AT_DEBUG | OFF | 默认关闭AT模组调试功能,有调试需要再打开|

- 参考文档[C-SDK_Build编译环境及配置选项说明]()抽取代码

- 将抽取的代码目录作为通信组件放在类似 RTOS、FATFS 的第三方组件的同级目录,系统代码框架大体如下:
![](https://main.qcloudimg.com/raw/5e3da49ac27e57d72fd6f6a70bb98547.jpg)

### 3. 数据模板模板代码生成
对于IoT_Explorer产品可以参考[IoT_Explorer/Data_template数据模板代码生成]()
对于IoT_Hub产品,可跳过这一步

### 4. HAL 层移植
### 3. HAL 层移植

参见[C-SDK_Porting跨平台移植概述]()

对于网络相关的HAL接口,通过上面的编译选项已选择SDK提供的AT_Socket框架,SDK会调用 network_at_tcp.c 的at_socket接口,at_socket层不需要移植,需要实现AT串口驱动及AT模组驱动,AT模组驱动只需要实现AT框架中at_device的驱动结构体 *at_device_op_t* 的驱动接口即可,可以参照at_device目录下的已支持的模组。AT串口驱动需要实现串口的中断接收,然后在中断服务程序中调用回调函数 *at_client_uart_rx_isr_cb* 即可,可以参考 HAL_OS_nonos.c 实现目标平台的移植。

### 5. 业务逻辑开发
### 4. 业务逻辑开发

对于IoT_Explorer产品,可以参考[IoT_Explorer/Data_template数据模板应用开发]()实现具体业务场景下的业务逻辑开发。
对于IoT_Hub产品,可以参考IoT_Hub目录下的例程。
可以参考Docs/IoT_Hub目录下的例程。

18 changes: 1 addition & 17 deletions include/config.h
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,17 +1 @@
/* #undef AUTH_MODE_CERT */
#define AUTH_MODE_KEY
/* #undef AUTH_WITH_NOTLS */
#define GATEWAY_ENABLED
#define COAP_COMM_ENABLED
#define OTA_MQTT_CHANNEL
#define SYSTEM_COMM
#define EVENT_POST_ENABLED
#define DEV_DYN_REG_ENABLED
#define LOG_UPLOAD
/* #undef IOT_DEBUG */
/* #undef DEBUG_DEV_INFO_USED */
/* #undef AT_TCP_ENABLED */
/* #undef AT_UART_RECV_IRQ */
/* #undef AT_OS_USED */
/* #undef AT_DEBUG */
#define OTA_USE_HTTPS

199 changes: 0 additions & 199 deletions include/exports/qcloud_iot_export_event.h

This file was deleted.

3 changes: 1 addition & 2 deletions include/qcloud_iot_export.h
Original file line number Diff line number Diff line change
@@ -25,7 +25,7 @@ extern "C" {


/* IoT C-SDK version info */
#define QCLOUD_IOT_DEVICE_SDK_VERSION "3.1.1"
#define QCLOUD_IOT_DEVICE_SDK_VERSION "3.1.2"

/**************** QCloud IoT C-SDK constants begin ************************/

@@ -87,7 +87,6 @@ typedef struct {
#include "qcloud_iot_export_system.h"
#include "qcloud_iot_export_gateway.h"
#include "qcloud_iot_export_dynreg.h"
#include "qcloud_iot_export_event.h"


#ifdef __cplusplus
9 changes: 3 additions & 6 deletions make.settings
Original file line number Diff line number Diff line change
@@ -26,7 +26,7 @@ FEATURE_MQTT_DEVICE_SHADOW = y
FEATURE_COAP_COMM_ENABLED = y

# 是否打开MQTT通道网关功能
FEATURE_GATEWAY_ENABLED = y
FEATURE_GATEWAY_ENABLED = n

# 是否打开OTA固件升级总开关
FEATURE_OTA_COMM_ENABLED = y
@@ -41,13 +41,10 @@ FEATURE_AUTH_MODE = KEY
FEATURE_AUTH_WITH_NOTLS = n

# 是否使能设备动态注册
FEATURE_DEV_DYN_REG_ENABLED = y
FEATURE_DEV_DYN_REG_ENABLED = n

# 是否打开日志上报云端功能
FEATURE_LOG_UPLOAD_ENABLED = y

# 是否打开事件上报功能
FEATURE_EVENT_POST_ENABLED = y
FEATURE_LOG_UPLOAD_ENABLED = n

# 是否打开获取iot后台时间功能
FEATURE_SYSTEM_COMM_ENABLED = y
15 changes: 0 additions & 15 deletions samples/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -66,14 +66,6 @@ if(${FEATURE_MQTT_DEVICE_SHADOW} STREQUAL "ON")
add_executable(shadow_sample ${src_shadow_sample})
target_link_libraries(shadow_sample ${lib})

file(GLOB src_data_template_sample ${PROJECT_SOURCE_DIR}/samples/data_template/data_template_sample.c)
add_executable(data_template_sample ${src_data_template_sample})
target_link_libraries(data_template_sample ${lib})

file(GLOB src_light_data_template_sample ${PROJECT_SOURCE_DIR}/samples/scenarized/light_data_template_sample.c)
add_executable(light_data_template_sample ${src_light_data_template_sample})
target_link_libraries(light_data_template_sample ${lib})

file(GLOB src_aircond_shadow_sample ${PROJECT_SOURCE_DIR}/samples/scenarized/aircond_shadow_sample.c)
file(GLOB src_aircond_shadow_sample_v2 ${PROJECT_SOURCE_DIR}/samples/scenarized/aircond_shadow_sample_v2.c)
add_executable(aircond_shadow_sample ${src_aircond_shadow_sample})
@@ -83,13 +75,6 @@ if(${FEATURE_MQTT_DEVICE_SHADOW} STREQUAL "ON")
endif()


# EVENT
if(${FEATURE_EVENT_POST_ENABLED} STREQUAL "ON" AND ${FEATURE_MQTT_DEVICE_SHADOW} STREQUAL "ON")
file(GLOB src_event_sample ${PROJECT_SOURCE_DIR}/samples/event/event_sample.c)
add_executable(event_sample ${src_event_sample})
target_link_libraries(event_sample ${lib})
endif()

# GATEWAY
if(${FEATURE_GATEWAY_ENABLED} STREQUAL "ON")
file(GLOB src_gateway_sample ${PROJECT_SOURCE_DIR}/samples/gateway/gateway_sample.c)
21 changes: 2 additions & 19 deletions samples/Makefile
Original file line number Diff line number Diff line change
@@ -39,9 +39,9 @@ ifeq ($(FEATURE_AUTH_MODE),CERT)
CFLAGS += -DAUTH_MODE_CERT
endif

.PHONY: mqtt_sample ota_mqtt_sample ota_coap_sample shadow_sample coap_sample gateway_sample multi_thread_mqtt_sample dynreg_dev_sample event_sample
.PHONY: mqtt_sample ota_mqtt_sample ota_coap_sample shadow_sample coap_sample gateway_sample multi_thread_mqtt_sample dynreg_dev_sample

all: mqtt_sample ota_mqtt_sample ota_coap_sample shadow_sample coap_sample gateway_sample multi_thread_mqtt_sample dynreg_dev_sample event_sample
all: mqtt_sample ota_mqtt_sample ota_coap_sample shadow_sample coap_sample gateway_sample multi_thread_mqtt_sample dynreg_dev_sample

ifneq (,$(filter -DMQTT_COMM_ENABLED,$(CFLAGS)))
mqtt_sample:
@@ -89,12 +89,6 @@ shadow_sample:
$(TOP_Q) \
$(PLATFORM_CC) $(CFLAGS) $(SAMPLE_DIR)/shadow/$@.c $(LDFLAGS) -o $@

$(TOP_Q) \
$(PLATFORM_CC) $(CFLAGS) $(SAMPLE_DIR)/data_template/data_template_sample.c $(LDFLAGS) -o data_template_sample

$(TOP_Q) \
$(PLATFORM_CC) $(CFLAGS) $(SAMPLE_DIR)/scenarized/light_data_template_sample.c $(LDFLAGS) -o light_data_template_sample

$(TOP_Q) \
$(PLATFORM_CC) $(CFLAGS) $(SAMPLE_DIR)/scenarized/aircond_$@.c $(LDFLAGS) -o aircond_$@

@@ -103,21 +97,10 @@ shadow_sample:

$(TOP_Q) \
mv $@ $(FINAL_DIR)/bin && \
mv data_template_sample $(FINAL_DIR)/bin && \
mv light_data_template_sample $(FINAL_DIR)/bin && \
mv aircond_$@ $(FINAL_DIR)/bin && \
mv aircond_$@_v2 $(FINAL_DIR)/bin
endif

ifneq (,$(filter -DEVENT_POST_ENABLED,$(CFLAGS)))
event_sample:
$(TOP_Q) \
$(PLATFORM_CC) $(CFLAGS) $(SAMPLE_DIR)/event/$@.c $(LDFLAGS) -o $@


$(TOP_Q) \
mv $@ $(FINAL_DIR)/bin
endif

ifneq (,$(filter -DGATEWAY_ENABLED,$(CFLAGS)))
gateway_sample:
50 changes: 0 additions & 50 deletions samples/data_template/data_config.c

This file was deleted.

422 changes: 0 additions & 422 deletions samples/data_template/data_template_sample.c

This file was deleted.

63 changes: 0 additions & 63 deletions samples/data_template/events_config.c

This file was deleted.

329 changes: 0 additions & 329 deletions samples/event/event_sample.c

This file was deleted.

53 changes: 0 additions & 53 deletions samples/event/events_config.c

This file was deleted.

633 changes: 0 additions & 633 deletions samples/scenarized/light_data_template_sample.c

This file was deleted.

4 changes: 0 additions & 4 deletions sdk_src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -88,10 +88,6 @@ if(${FEATURE_DEV_DYN_REG_ENABLED} STREQUAL "ON")
list(APPEND src_sdk ${src_dyn_reg})
endif()

if(${FEATURE_EVENT_POST_ENABLED} STREQUAL "ON")
file(GLOB src_event ${CMAKE_CURRENT_SOURCE_DIR}/services/event/*.c)
list(APPEND src_sdk ${src_event})
endif()

if(${FEATURE_SYSTEM_COMM_ENABLED} STREQUAL "ON")
file(GLOB src_system ${CMAKE_CURRENT_SOURCE_DIR}/services/system/*.c)
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion sdk_src/internal_inc/shadow_client.h
Original file line number Diff line number Diff line change
@@ -25,7 +25,7 @@ extern "C" {
#include "qcloud_iot_export.h"
#include "qcloud_iot_import.h"
#include "utils_param_check.h"
#include "device.h"
#include "qcloud_iot_device.h"
#include "mqtt_client.h"
#include "shadow_client_json.h"

4 changes: 2 additions & 2 deletions sdk_src/protocol/coap/coap_client.c
Original file line number Diff line number Diff line change
@@ -29,8 +29,8 @@ extern "C" {

#include "coap_client.h"

#include "ca.h"
#include "device.h"
#include "qcloud_iot_ca.h"
#include "qcloud_iot_device.h"
#include "utils_param_check.h"
#include "utils_base64.h"

2 changes: 1 addition & 1 deletion sdk_src/protocol/coap/coap_client_auth.c
Original file line number Diff line number Diff line change
@@ -26,7 +26,7 @@ extern "C" {

#include "coap_client.h"

#include "device.h"
#include "qcloud_iot_device.h"
#include "utils_param_check.h"

static void _coap_client_auth_callback(void *message, void *userContext)
2 changes: 1 addition & 1 deletion sdk_src/protocol/http/utils_httpc.c
Original file line number Diff line number Diff line change
@@ -27,7 +27,7 @@ extern "C" {
#include "qcloud_iot_export.h"
#include "qcloud_iot_common.h"

#include "ca.h"
#include "qcloud_iot_ca.h"
#include "utils_httpc.h"
#include "utils_timer.h"

4 changes: 2 additions & 2 deletions sdk_src/protocol/mqtt/mqtt_client.c
Original file line number Diff line number Diff line change
@@ -26,8 +26,8 @@ extern "C" {

#include "mqtt_client.h"

#include "ca.h"
#include "device.h"
#include "qcloud_iot_ca.h"
#include "qcloud_iot_device.h"
#include "qcloud_iot_import.h"
#include "qcloud_iot_export.h"
#include "qcloud_iot_common.h"
4 changes: 2 additions & 2 deletions sdk_src/services/dynreg/dynreg.c
Original file line number Diff line number Diff line change
@@ -23,8 +23,8 @@
extern "C" {
#endif

#include "ca.h"
#include "device.h"
#include "qcloud_iot_ca.h"
#include "qcloud_iot_device.h"
#include "qcloud_iot_common.h"
#include "qcloud_iot_import.h"
#include "qcloud_iot_export.h"
458 changes: 0 additions & 458 deletions sdk_src/services/event/qcloud_iot_event.c

This file was deleted.

2 changes: 1 addition & 1 deletion sdk_src/services/log/log_mqtt.c
Original file line number Diff line number Diff line change
@@ -25,7 +25,7 @@ extern "C" {

#include "mqtt_client.h"
#include "lite-utils.h"
#include "device.h"
#include "qcloud_iot_device.h"
#include "log_upload.h"

typedef struct _log_mqtt_state {
2 changes: 1 addition & 1 deletion sdk_src/services/ota/ota_fetch.c
Original file line number Diff line number Diff line change
@@ -24,7 +24,7 @@ extern "C" {
#include "qcloud_iot_export.h"
#include "qcloud_iot_import.h"

#include "ca.h"
#include "qcloud_iot_ca.h"
#include "utils_httpc.h"


2 changes: 1 addition & 1 deletion sdk_src/services/shadow/shadow_client_json.c
Original file line number Diff line number Diff line change
@@ -25,7 +25,7 @@ extern "C" {

#include "shadow_client_json.h"

#include "device.h"
#include "qcloud_iot_device.h"
#include "shadow_client.h"
#include "lite-utils.h"

2 changes: 1 addition & 1 deletion sdk_src/services/system/system_mqtt.c
Original file line number Diff line number Diff line change
@@ -30,7 +30,7 @@ extern "C" {
#include "qcloud_iot_export_system.h"
#include "mqtt_client.h"
#include "lite-utils.h"
#include "device.h"
#include "qcloud_iot_device.h"

typedef struct _sys_mqtt_state {
bool topic_sub_ok;
2 changes: 1 addition & 1 deletion sdk_src/utils/ca.c → sdk_src/utils/qcloud_iot_ca.c
Original file line number Diff line number Diff line change
@@ -17,7 +17,7 @@
extern "C" {
#endif

#include "ca.h"
#include "qcloud_iot_ca.h"
#include "qcloud_iot_import.h"
#include <stdlib.h>

Original file line number Diff line number Diff line change
@@ -19,7 +19,7 @@ extern "C" {
#include <stdbool.h>
#include <string.h>

#include "device.h"
#include "qcloud_iot_device.h"
#include "qcloud_iot_export.h"

static DeviceInfo sg_device_info;
Empty file modified sdk_src/utils/qcloud_iot_log.c
100755 → 100644
Empty file.
Empty file modified sdk_src/utils/utils_list.c
100755 → 100644
Empty file.
16 changes: 0 additions & 16 deletions tools/build_scripts/parse_make_settings.mk
100644 → 100755
Original file line number Diff line number Diff line change
@@ -14,7 +14,6 @@ SWITCH_VARS := \
FEATURE_AUTH_WITH_NOTLS \
FEATURE_GATEWAY_ENABLED \
FEATURE_LOG_UPLOAD_ENABLED \
FEATURE_EVENT_POST_ENABLED \
FEATURE_MULTITHREAD_TEST_ENABLED \
FEATURE_DEV_DYN_REG_ENABLED \
FEATURE_AT_TCP_ENABLED \
@@ -85,18 +84,6 @@ ifeq (y, $(strip $(FEATURE_SYSTEM_COMM_ENABLED)))
CFLAGS += -DSYSTEM_COMM
endif

ifeq (y, $(strip $(FEATURE_EVENT_POST_ENABLED)))
CFLAGS += -DEVENT_POST_ENABLED
endif

ifeq (y, $(strip $(FEATURE_MULTITHREAD_TEST_ENABLED)))
CFLAGS += -DMULTITHREAD_TEST_ENABLED
endif

ifeq (y, $(strip $(FEATURE_DEV_DYN_REG_ENABLED)))
CFLAGS += -DDEV_DYN_REG_ENABLED
endif

ifeq (y, $(strip $(FEATURE_LOG_UPLOAD_ENABLED)))
CFLAGS += -DLOG_UPLOAD
endif
@@ -114,6 +101,3 @@ CFLAGS += -DFEATURE_AT_DEBUG
endif
endif

ifeq (y, $(strip $(FEATURE_AT_TCP_ENABLED)))
CFLAGS += -DEBUG_DEV_INFO_USED
endif
3 changes: 1 addition & 2 deletions tools/cmake_scripts/config.h.in
100644 → 100755
Original file line number Diff line number Diff line change
@@ -5,7 +5,6 @@
#cmakedefine COAP_COMM_ENABLED
#cmakedefine OTA_MQTT_CHANNEL
#cmakedefine SYSTEM_COMM
#cmakedefine EVENT_POST_ENABLED
#cmakedefine DEV_DYN_REG_ENABLED
#cmakedefine LOG_UPLOAD
#cmakedefine IOT_DEBUG
@@ -14,4 +13,4 @@
#cmakedefine AT_UART_RECV_IRQ
#cmakedefine AT_OS_USED
#cmakedefine AT_DEBUG
#cmakedefine OTA_USE_HTTPS
#cmakedefine OTA_USE_HTTPS