diff --git a/src/network/netconfig.lua b/src/network/netconfig.lua index cee895f..595b0e8 100644 --- a/src/network/netconfig.lua +++ b/src/network/netconfig.lua @@ -370,16 +370,31 @@ function M.associateSsid(ssid, passphrase, recreate, boot) --M.switchConfiguration{ wifiiface="add", apnet="rm", staticaddr="rm", dhcppool="rm", wwwredir="rm", dnsredir="rm", wireless="reload" } --M.switchConfiguration{ wifiiface="add", staticaddr="rm", dhcppool="rm", wwwredir="rm", dnsredir="rm", wireless="reload" } M.switchConfiguration({ wifiiface="add", staticaddr="rm", dhcppool="rm", wwwredir="rm", dnsredir="rm" },boot) - - -- check if we are actually associated - local status = wifi.getDeviceState() - if not status.ssid or status.ssid ~= ssid then - local msg = "Could not associate with network (incorrect password?)" - M.setStatus(M.CONNECTING_FAILED,msg); - return nil,msg - end - M.setStatus(M.CONNECTED,"Connected"); + -- we check if we get a ssid and ip in max 5 seconds + -- if not there is probably a issue + local attemptInterval = 1 + local maxAttempts = 5 + local attempt = 0 + local nextAttemptTime = os.time() + while true do + if os.time() > nextAttemptTime then + log:debug("associated check "..utils.dump(attempt).."/"..utils.dump(maxAttempts)) + if wifi.getLocalIP() ~= nil and wifi.getDeviceState().ssid == ssid then + break + else + attempt = attempt+1 + if attempt >= maxAttempts then + -- still no correct ssid; fail + local msg = "Could not associate with network (incorrect password?)" + M.setStatus(M.CONNECTING_FAILED,msg); + return false, msg + else + nextAttemptTime = os.time() + attemptInterval + end + end + end + end -- signin to connect.doodle3d.com local success, output = signin.signin() @@ -388,7 +403,10 @@ function M.associateSsid(ssid, passphrase, recreate, boot) else log:info("Signing in failed") end - + + -- report we are connected after signin attempt + M.setStatus(M.CONNECTED,"Connected"); + return true end --- Disassociate wlan device as client from all SSID's. diff --git a/src/network/wlanconfig.lua b/src/network/wlanconfig.lua index ab42bcd..4087a9d 100644 --- a/src/network/wlanconfig.lua +++ b/src/network/wlanconfig.lua @@ -174,7 +174,6 @@ function M.removeConfig(ssid) if s.ssid == ssid then uci:delete('wireless', s['.name']) rv = true - return false end end) uci:commit('wireless') @@ -229,7 +228,7 @@ function M.createConfigFromScanInfo(info, passphrase, disabled) network = M.NET, device = 'radio0', ssid = info.ssid, - bssid = info.bssid, + --bssid = info.bssid, encryption = M.mapEncryptionType(info.encryption), mode = mode, } @@ -237,8 +236,9 @@ function M.createConfigFromScanInfo(info, passphrase, disabled) apconfig.disabled = disabled ~= nil and disabled and 1 or 0 uci:foreach('wireless', 'wifi-iface', function(s) - if s.bssid == info.bssid then - log:debug("removing old wireless config for net '" .. s.ssid .. "(bssid: " .. s.bssid .. ")'") + --if s.bssid == info.bssid then + if s.ssid == info.ssid then + log:debug("removing old wireless config for net '" .. s.ssid .. "'") uci:delete('wireless', s['.name']) -- return false --keep looking, just in case multiple entries with this bssid exist end diff --git a/src/rest/api/api_info.lua b/src/rest/api/api_info.lua index e1b7303..75a42a2 100644 --- a/src/rest/api/api_info.lua +++ b/src/rest/api/api_info.lua @@ -186,7 +186,6 @@ function M.status(request, response) rv = M.access(request, response) if(rv == false) then return end end - response:addData('v', 10) end return M diff --git a/src/rest/api/api_network.lua b/src/rest/api/api_network.lua index 5fc5ba6..a8b4d5f 100644 --- a/src/rest/api/api_network.lua +++ b/src/rest/api/api_network.lua @@ -215,10 +215,6 @@ end function M.alive(request, response) response:setSuccess("alive") - - local ds = wifi.getDeviceState() - log:debug(" ssid: "..utils.dump(ds.ssid)) - end return M