hi3861芯片集成WiFi功能,鸿蒙是为了实现万物互联而设计的系统,所以系统内集成了完善的联网功能,只需根据需求调用系统功能就可以。
我自己归纳为2大部分:
第一步WiFi接入
1. 设备初始化,系统默认已经加载网络设备,就是知道有这个过程就好。
static int Wifi_Event_Init(void)
{
if(hi_wifi_config_callback(1, NULL, NULL) != HISI_OK)
{
return 0;
}
if(hi_wifi_register_event_callback(Wifi_Event_CD) != HISI_OK)
{
return 0;
}
return 1;
}
先检查,是否加载,没加载就加载一下,如果有问题返回0,添加回调,实时反馈网络状态信息。
2. 输入Wifi用户名密码,然后搜索,找到匹配的Wifi热点就连接。
static int WiFi_STA_Start(char *wifi_name, char *wifi_pass)
{
int sta_namlen = sizeof(sta_ifname);
if(hi_wifi_sta_start(sta_ifname, &sta_namlen) != HISI_OK)
{
return 0;
}
if(hi_wifi_sta_scan() != HISI_OK)
{
return 0;
}
while(wifi_state != 1)
{
osDelay(10);
}
unsigned int ap_num = 8;
unsigned int ap_info_len = sizeof(hi_wifi_ap_info) * ap_num;
hi_wifi_ap_info *ap_list = malloc(ap_info_len);
memset_s(ap_list, ap_info_len, 0, ap_info_len);
if(hi_wifi_sta_scan_results(ap_list, &ap_num) != HISI_OK)
{
return 0;
}
int idx;
for(idx = 0; idx < ap_num; idx ++)
{
if(strlen(wifi_name) == strlen(ap_list[idx].ssid))