使用未适配IoT SDK的平台开发智能灯
更新时间:2018-04-08 14:38:16
如您不使用已经使用AliOS Things物联网操作系统认证的芯片模组或已适配过IoT SDK的模组进行开发,您也可以下载IoT SDK独立进行开发,需要额外增加一步硬件抽象层代码适配过程,相对会增加一些适配时间。
1. SDK下载
- 进入产品开发后台
- 点击设备开发,点击"下载SDK"
2. 适配您的硬件平台抽象层(HAL)代码
- sdk-encap/iot_import.h
序号 |
函数名 |
说明 |
01 |
HAL_ThreadCreate |
按照指定入参创建一个线程 |
02 |
HAL_ThreadDetach |
设置指定的线程为 Detach 状态 |
03 |
HAL_ThreadDelete |
杀死指定的线程 |
04 |
HAL_SemaphoreCreate |
创建一个计数信号量 |
05 |
HAL_SemaphoreDestroy |
销毁一个计数信号量, 回收其所占用的资源 |
06 |
HAL_SemaphoreWait |
在指定的计数信号量上做自减操作并等待 |
07 |
HAL_SemaphorePost |
在指定的计数信号量上做自增操作, 解除其它线程的等待 |
08 |
HAL_MutexCreate |
创建一个互斥锁 |
09 |
HAL_MutexDestroy |
销毁一个互斥锁, 释放其所占用的资源 |
10 |
HAL_MutexLock |
给互斥锁加锁, 开始临界代码段 |
11 |
HAL_MutexUnlock |
给互斥锁解锁, 结束临界代码段 |
12 |
HAL_Malloc |
按照入参size申请一片可用内存, 并返回内存的首地址 |
13 |
HAL_Free |
按照入参ptr释放一片内存 |
14 |
HAL_UptimeMs |
获取自加电以来到当前时间, 已经过去的毫秒数 |
15 |
HAL_SleepMs |
使调用线程睡眠入参ms指定的毫秒数 |
16 |
HAL_Srandom |
设置一个伪随机数种子, 影响HAL_Random()的返回值 |
17 |
HAL_Random |
获取指定范围内的一个随机无符号整数 |
18 |
HAL_Printf |
按照指定格式将字符串打印显示到终端 |
19 |
HAL_Snprintf |
按照指定格式将一系列变量输出到指定的字符串, 变参是变量的形式 |
20 |
HAL_Vsnprintf |
按照指定格式将一系列变量输出到指定的字符串, 变参是 va_list 的形式 |
21 |
HAL_TCP_Establish |
按照指定的目标主机名和目标端口创建一个TCP连接, 并返回该连接的句柄 |
22 |
HAL_TCP_Destroy |
断开TCP连接并销毁句柄, 回收资源 |
23 |
HAL_TCP_Write |
在指定的TCP连接上发送指定缓冲区的指定长度, 阻塞时间不超过指定时长, 且指定长度若发送完需提前返回 |
24 |
HAL_TCP_Read |
从指定的TCP连接上接收指定长度到指定缓冲区, 阻塞时间不超过指定时长, 且指定长度若接收完需提前返回 |
25 |
HAL_SSL_Establish |
向指定的目标地址和端口建立一个TCP+SSL连接, 使用参数中指定的CA证书, 并返回SSL连接的句柄 |
26 |
HAL_SSL_Destroy |
断开指定的TCP+SSL连接, 并销毁句柄, 回收资源 |
27 |
HAL_SSL_Write |
在指定的SSL连接上发送指定缓冲区的指定长度, 阻塞时间不超过指定时长, 且指定长度若发送完需提前返回 |
28 |
HAL_SSL_Read |
从指定的TCP+SSL连接上接收指定长度到指定缓冲区, 阻塞时间不超过指定时长, 且指定长度若接收完需提前返回 |
29 |
HAL_UDP_create |
创建一个本地的UDP socket, 但并不发起任何网络交互 |
30 |
HAL_UDP_connect |
设置UDP socket的目的地址和目的端口 |
31 |
HAL_UDP_sendto |
在指定的UDP socket上发送指定缓冲区的指定长度, 阻塞时间不超过指定时长, 且指定长度若发送完需提前返回 |
32 |
HAL_UDP_send |
在指定的UDP socket上发送指定缓冲区的指定长度, 阻塞时间不超过指定时长, 且指定长度若发送完需提前返回 |
33 |
HAL_UDP_recvfrom |
从指定的UDP句柄接收指定长度数据到缓冲区, 阻塞时间不超过指定时长, 且指定长度若接收完需提前返回, 源地址保存在出参中 |
34 |
HAL_UDP_recv |
从指定的UDP句柄接收指定长度数据到缓冲区, 阻塞时间不超过指定时长, 且指定长度若接收完需提前返回, 源地址保存在出参中调用该接口之前需要调用HAL_UDP_connect设置好目的地址和端口 |
35 |
HAL_UDP_joinmulticast |
在指定的UDP socket上发送加入组播组的请求 |
36 |
HAL_UDP_bindtodevice |
绑定UDP socket到指定接口,只接收来自该接口的数据包 |
37 |
HAL_UDP_close |
销毁指定的UDP socket, 回收资源 |
38 |
HAL_Firmware_Persistence_Start |
初始化固件更新服务 |
39 |
HAL_Firmware_Persistence_Write |
将固件写入flash |
40 |
HAL_Firmware_Persistence_Stop |
停止固件更新服务 |
41 |
HAL_Sys_reboot |
系统重启 |
- sdk-encap/imports/iot_import_product.h
序号 |
函数名 |
说明 |
01 |
HAL_GetPartnerID |
获取设备的 Partner ID , 仅用于紧密合作伙伴 |
02 |
HAL_GetModuleID |
获取设备的 Module ID , 仅用于紧密合作伙伴 |
03 |
HAL_GetProductKey |
获取设备的 ProductKey , 用于标识设备的品类, 三元组之一 |
04 |
HAL_GetDeviceName |
获取设备的 DeviceName , 用于标识设备单品的名字, 三元组之一 |
05 |
HAL_GetDeviceSecret |
获取设备的 DeviceSecret , 用于标识设备单品的密钥, 三元组之一 |
06 |
HAL_GetDeviceID |
获取设备的 DeviceID , 用于标识设备单品的ID |
07 |
HAL_GetFirmwareVesion |
获取设备的固件版本字符串 |
08 |
HAL_GetChipID |
获取唯一的芯片ID字符串 |
- sdk-encap/imports/iot_import_awss.h
序号 | 函数名 | 说明 |
---|---|---|
01 | HAL_Config_Read | 在设备的持久化外部存储器比如Flash上, 从配置区域起始位置读取数据到指定的内存缓冲区中 |
02 | HAL_Config_Write | 在设备的持久化外部存储器比如Flash上, 把指定的内存缓冲区向配置区域起始位置写入 |
03 | HAL_Wifi_Get_Rssi_Dbm | 获取Wi-Fi的接受信号强度(RSSI) |
04 | HAL_Wifi_Low_Power | 使WiFi模组进入省电模式, 并持续一段时间 |
05 | HAL_RF433_Get_Rssi_Dbm | 获取RF433的接收信号强度(RSSI) |
06 | HAL_Wifi_Get_Mac | 获取Wi-Fi网口的MAC地址, 格式应当是"XX:XX:XX:XX:XX:XX" |
07 | HAL_Wifi_Get_IP | 获取Wi-Fi网口的IP地址, 点分十进制格式保存在字符串数组出参, 二进制格式则作为返回值, 并以网络字节序(大端)表达 |
08 | HAL_Wifi_Get_Os_Version | 获取Wi-Fi模块上的操作系统版本字符串 |
09 | HAL_Awss_Get_Timeout_Interval_Ms | 获取配网服务(AWSS )的超时时间长度, 单位是毫秒 |
10 | HAL_Awss_Get_Connect_Default_Ssid_Timeout_Interval_Ms | 获取配网服务(AWSS )超时时长到达之后, 去连接默认SSID时的超时时长, 单位是毫秒 |
11 | HAL_Awss_Get_Channelscan_Interval_Ms | 获取在每个信道(channel )上扫描的时间长度, 单位是毫秒 |
12 | awss_recv_80211_frame_cb_t | 802.11帧的处理函数, 可以将802.11 Frame传递给这个函数 |
13 | HAL_Awss_Open_Monitor | 设置Wi-Fi网卡工作在监听(Monitor)模式, 并在收到802.11帧的时候调用被传入的回调函数 |
14 | HAL_Awss_Close_Monitor | 设置Wi-Fi网卡离开监听(Monitor)模式, 并开始以站点(Station)模式工作 |
15 | HAL_Awss_Switch_Channel | 设置Wi-Fi网卡切换到指定的信道(channel)上 |
16 | HAL_Awss_Connect_Ap | 要求Wi-Fi网卡连接指定热点(Access Point)的函数 |
17 | HAL_Wifi_Send_80211_Raw_Frame | 在当前信道(channel)上以基本数据速率(1Mbps)发送裸的802.11帧(raw 802.11 frame) |
18 | awss_wifi_mgmt_frame_cb_t | 管理帧的处理回调函数 |
19 | HAL_Wifi_Enable_Mgmt_Frame_Filter | 在站点(Station)模式下使能或禁用对管理帧的过滤 |
20 | awss_wifi_scan_result_cb_t | handle one piece of AP information from wifi scan result |
21 | HAL_Wifi_Scan | 启动一次Wi-Fi的空中扫描(Scan) |
22 | HAL_Wifi_Get_Ap_Info | 获取所连接的热点(Access Point)的信息 |
23 | HAL_Aes128_Init | 初始化AES加密的结构体 |
24 | HAL_Aes128_Destroy | 销毁AES加密的结构体 |
25 | HAL_Aes128_Cbc_Encrypt | 以AES-CBC-128 方式, 根据HAL\_Aes128\_IniHAL\_Aes128\_Cbc\_Decryptt() 时传入的密钥加密指定的明文 |
26 | HAL_Aes128_Cbc_Decrypt | 以AES-CBC-128 方式, 根据HAL\_Aes128\_Init() 时传入的密钥解密指定的密文 |
27 | HAL_Aes128_Cfb_Encrypt | 以AES-CFB-128 方式, 根据HAL\_Aes128\_Init() 时传入的密钥加密指定的明文 |
28 | HAL_Aes128_Cfb_Decrypt | 以AES-CFB-128 方式, 根据HAL\_Aes128\_Init() 时传入的密钥解密指定的密文 |
29 | HAL_Awss_Get_Encrypt_Type | 获取smartconfig 服务的安全等级 |
3. 进入产品开发
当您完成步骤2适配完成HAL并验证通过后,您可以开始进入产品开发。
流程可以参考 “基于已适配IoT SDK的芯片开发智能灯”