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-阿裏雲