nodemcu / nodemcu-firmware

Lua based interactive firmware for ESP8266, ESP8285 and ESP32

Home Page:https://nodemcu.readthedocs.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

wifi.eventmon bug

vCloudSail opened this issue · comments

function cb1() end
function cb2() end

wifi.sta.connect(cb1)
wifi.eventmon.register(wifi.eventmon.STA_CONNECTED, cb2)

Expected behavior

The functions cb1 and cb2 are both called

Actual behavior

Only function cb1 is called
If a callback function is passed after calling connect, eventmon will not trigger the STA_CONNECTED event, so please explain in the documentation!!!!

Test code

Provide a Minimal, Complete, and Verifiable example which will reproduce the problem.

wifiInit = {}

function staion_GotIp()
    -- dataTransfer.start()
    local ip = wifi.sta.getip()
    print("station got ip:" .. ip)
end
function staion_Connected(result)

    print("ssid: " .. result.SSID .. "\nbssid: " .. result.BSSID .. "\nchannel: " .. result.channel)
    apinfo = wifi.sta.getapinfo()
    print("apinfo: " .. sjson.encode(apinfo))
end

function wifiInit.sta()
    print("start wifi station mode")
    wifi.setmode(wifi.STATION)
    local cfg = {
        ssid = "xxx",
        pwd = "xxx",
        auto = true,
        save = true
    }
    wifi.sta.config(cfg)
    wifi.sta.connect(
        function()
            print("why???")
        end
    )
end

function wifiInit.ap()
end

wifi.eventmon.register(wifi.eventmon.STA_CONNECTED, staion_Connected)
wifi.eventmon.register(wifi.eventmon.STA_GOT_IP, staion_GotIp)

print("[wifiInit] finish")

return wifiInit

NodeMCU startup banner

NodeMCU 3.0.0.0 built on nodemcu-build.com provided by frightanic.com
branch: release
commit: 136e097
release: 3.0.0-release_20210201
release DTS: 202102010145
SSL: false
build type: float
LFS: 0x0 bytes total capacity
modules: enduser_setup,file,gpio,i2c,mdns,net,node,sjson,spi,tmr,u8g2,uart,wifi
build 2021-04-24 03:15 powered by Lua 5.1.4 on SDK 3.0.1-dev(fce080e)

Hardware

ESP8266

In the documentation regarding wifi.eventmon there is written:

"To ensure all WiFi events are caught, the Wifi event monitor callbacks should be registered as early as possible in init.lua. Any events that occur before callbacks are registered will be discarded!"

It's highly possible that you are trying to trigger the STA_CONNECTED event when your MCU is already connected.

In the documentation regarding wifi.eventmon there is written:

"To ensure all WiFi events are caught, the Wifi event monitor callbacks should be registered as early as possible in init.lua. Any events that occur before callbacks are registered will be discarded!"

It's highly possible that you are trying to trigger the STA_CONNECTED event when your MCU is already connected.

I've already tried this, and if you don't believe it try doing it in init.lua
image

commented

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.