【HarmonyOS HiSpark IPC DIY Camera】hi3518-wifi的配置与使用

HiHope
发布于 2020-11-18 10:28
浏览
2收藏

主要是修改和3518相关的wpa_supplicant.conf  hostapd.conf  两个文件,对wifi相关的ssid、passwd等进行配置

 

【编译生成wifi可执行文件】 请参考以下示例代码编译可执行程序wpa_supplicant:(SDK里面有这些代码,不做修改)

路径  ./applications/sample/camera/communication/wpa_supplicant/src/wpa_sample.c

#include <dlfcn.h>
#include <pthread.h>
#include <stdio.h>
#include <string.h>
​
pthread_t g_wpaThread;
​
char* g_wpaArg[20] = {0};
int g_wpaArgc = 0;
​
static void* ThreadMain()
{
    printf("[WpaSample]init wpa_supplicant.\n");
​
    void *handleLibWpa = dlopen("/usr/lib/libwpa.so", RTLD_NOW | RTLD_LOCAL);
    if (handleLibWpa == NULL) {
        printf("[WpaSample]dlopen libwpa failed.\n");
        return NULL;
    }
    int (*func)(int, char **) = NULL;
    func =  dlsym(handleLibWpa, "wpa_main");
    if (func == NULL) {
        dlclose(handleLibWpa);
        printf("[WpaSample]dlsym wpa_main failed.\n");
        return NULL;
    }
    int ret = func(g_wpaArgc, g_wpaArg);
    
    printf("[WpaSample]run wpa_main failed, ret:%d.\n", ret);
    for (int i = 0; i < g_wpaArgc; i++) {
        printf("[WpaSample]arg %d:%s.\n", i, g_wpaArg[i]);
    }
    
    if (dlclose(handleLibWpa) != 0) {
        printf("[WpaSample]dlclose libwpa failed.\n");
        return NULL;
    }
    return NULL;
​
}
​
int main(int argc, char *argv[])
{
    g_wpaArgc = argc;
    for (int i = 0; i < g_wpaArgc; i++) {
        g_wpaArg[i] = argv[i];
    }
​
    int ret = pthread_create(&g_wpaThread, NULL, ThreadMain, NULL);
    if (ret != 0) {
        printf("[WpaSample]create thread failed error:%s.\n", strerror(ret));
        return 1;
    }
    pthread_join(g_wpaThread, NULL);
    return 0;
​
}

 

路径  ./applications/sample/camera/communication目录下面的BUILD.gn文件

import("//build/lite/config/component/lite_component.gni")

lite_component("sample") {
    features = [
       "wpa_supplicant:wpa_sample",
    ]
}

 

路径  ./applications/sample/camera/communication/wpa_supplicant目录下面的BUILD.gn文件

import("//build/lite/config/component/lite_component.gni")

sample_sources = [
    "src/wpa_sample.c",
]

config_file = [
    "config/wpa_supplicant.conf"
]

executable("wpa_sample_exe") {
    output_name = "wpa_supplicant"
    sources = sample_sources
}

group("wpa_sample") {
    deps = [
        ":wpa_sample_exe",
    ]
}

copy("config") {
    sources = config_file
    outputs = [
       "$root_out_dir/etc/wpa_supplicant.conf"
    ]
}

 

路径  ./build/lite/product/ipcamera_hi3518ev300.json

【HarmonyOS HiSpark IPC DIY Camera】hi3518-wifi的配置与使用-鸿蒙开发者社区

【修改station模式的配置】 将以下配置写到配置文件wpa_supplicant.conf

country=GB
ctrl_interface=udp
network={
    #要连接的SSID
    ssid="example"
    #如果不需要加密就写key_mgmt=NONE
    #key_mgmt=NONE
    #如果需要加密就写这行密码
    psk="12345678"
}


【修改ap模式的配置】 将以下配置写到配置文件hostapd.conf

interface=wlan0
driver=hdf wifi
ctrl_interface=udp
ssid=testap
hw_mode=g
channel=1
ignore_broadcast_ssid=0
#下面是wpa2-psk类型加密的配置
#如果不需要加密可以删除
auth_algs=1
wpa=2
wpa_passphrase=12345678
rsn_pairwise=CCMP


【使用方法】

将wpa_supplicant、wpa_supplicant.conf、hostapd.conf拷贝到单板中(sdcard目录)
启动sta的命令:

./sdcard/wpa_supplicant -i wlan0 -c /sdcard/wpa_supplicant.conf


启动ap的命令:

./sdcard/hostapd -i wlan0 /sdcard/hostapd.conf


 
【WIFI设备检测】 进入OHOS界面后,输入ifconfig,检查wlan0网口是否加载正常,加载成功标识如下:

OHOS # ifconfig                                                                 
wlan0   ip:0.0.0.0 netmask:0.0.0.0 gateway:0.0.0.0                              
        HWaddr 0a:11:31:aa:7e:1a MTU:1500 Stop Link UP                          
lo      ip:127.0.0.1 netmask:255.0.0.0 gateway:127.0.0.1                        
        ip6: ::1/64                                                             
        HWaddr 00 MTU:16436 Running Link UP 

已于2020-11-19 16:20:28修改
2
收藏 2
回复
举报
回复
    相关推荐