WIFI AP模式總是創建失敗

發布於 2022-05-18 10:47:10

無論使用staap還是使用softap,AP總是創建失敗

image.png

image.png

int demo_create_softap(u8 ssid, u8 key, int chan, int encrypt, int format)
{

struct tls_softap_info_t *apinfo;
struct tls_ip_info_t *ipinfo;
u8 ret = 0;
u8 ssid_set = 0;
u8 wireless_protocol = 0;

u8 ssid_len = 0;
if (!ssid)
{
    return WM_FAILED;
}

ipinfo = tls_mem_alloc(sizeof(struct tls_ip_info_t));
if (!ipinfo)
{
    return WM_FAILED;
}
apinfo = tls_mem_alloc(sizeof(struct tls_softap_info_t));
if (!apinfo)
{
    tls_mem_free(ipinfo);
    return WM_FAILED;
}

tls_param_get(TLS_PARAM_ID_WPROTOCOL, (void *) &wireless_protocol, TRUE);
if (TLS_PARAM_IEEE80211_SOFTAP != wireless_protocol)
{
    wireless_protocol = TLS_PARAM_IEEE80211_SOFTAP;
    tls_param_set(TLS_PARAM_ID_WPROTOCOL, (void *) &wireless_protocol, FALSE);
}

tls_wifi_set_oneshot_flag(0);          /*disable oneshot*/

tls_param_get(TLS_PARAM_ID_BRDSSID, (void *)&ssid_set, (bool)0);
if (0 == ssid_set)
{
    ssid_set = 1;
    tls_param_set(TLS_PARAM_ID_BRDSSID, (void *)&ssid_set, (bool)1); /*set bssid broadcast flag*/
}


tls_wifi_disconnect();

ssid_len = strlen((const char *)ssid);
MEMCPY(apinfo->ssid, ssid, ssid_len);
apinfo->ssid[ssid_len] = '\0';

apinfo->encrypt = encrypt;  /*0:open, 1:wep64, 2:wep128,3:TKIP WPA ,4: CCMP WPA, 5:TKIP WPA2 ,6: CCMP WPA2*/
apinfo->channel = chan; /*channel*/
apinfo->keyinfo.format = format; /*key's format:0-HEX, 1-ASCII*/
apinfo->keyinfo.index = 1;  /*wep key index*/
apinfo->keyinfo.key_len = strlen((const char *)key); /*key length*/
MEMCPY(apinfo->keyinfo.key, key, apinfo->keyinfo.key_len);
/*ip info:ipaddress, netmask, dns*/
ipinfo->ip_addr[0] = 192;
ipinfo->ip_addr[1] = 168;
ipinfo->ip_addr[2] = 1;
ipinfo->ip_addr[3] = 1;
ipinfo->netmask[0] = 255;
ipinfo->netmask[1] = 255;
ipinfo->netmask[2] = 255;
ipinfo->netmask[3] = 0;
MEMCPY(ipinfo->dnsname, "local.wm", sizeof("local.wm"));

ret = tls_wifi_softap_create(apinfo, ipinfo);
wm_printf("\n ap create %s ! \n", (ret == WM_SUCCESS) ? "Successfully" : "Error");

if (WM_SUCCESS == ret)
{
    if (sta_monitor_tim)
    {
        tls_os_timer_delete(sta_monitor_tim);
        sta_monitor_tim = NULL;
    }
    tls_os_timer_create(&sta_monitor_tim, demo_monitor_stalist_tim, NULL, 500, TRUE, NULL);
    tls_os_timer_start(sta_monitor_tim);
}

tls_mem_free(ipinfo);
tls_mem_free(apinfo);
return ret;

}

查看更多

關注者
0
被浏覽
1.7k
2 個回答
大信
大信 認證專家 2022-05-19
硬件開發,軟件開發,系統開發,工程架構,方案設計

你的參數不正確。

測試w801 wifi 各功能時,最好把wifi部分的demo開關全部打開。 測試 softap 先測試,t-connect ,t-scanf 就是保證你的板子能連上路由器,能掃描到周邊的熱點。

然後再測試,熱點模式(板子成為一個熱點,手機可以連上它)
命令為: t-softap=("ssid","pwd",channel,encrypt,format);

一個實際的參數如下:
t-softap=("w801_Ap","12345678",1,5,1);

然後打開手機,在wifi熱點列表裡,點搜索即可以看到這個熱點了。

worldy
worldy 2022-05-19
這家夥很懶,什麼也沒寫!

按t-softap=("w801_Ap","12345678",1,encrypt,1)這個命令格式,確實能連上,但是encrypt參數只能是0和1,其它的參數組合都連不上,不知道你們是否能連上?另外,連上之後,好像是否開啟AP就不受控,我把電路硬件複位,甚至斷電再重新上電,在手機上,最後命名的AP將會一直存在,不知道是什麼原因?

撰寫答案

請登錄後再發布答案,點擊登錄

發布
問題

分享
好友

手機
浏覽

掃碼手機浏覽