var currAp = ""; var blockScan = 0; function createInputForAp(ap) { if (ap.essid=="" && ap.rssi==0) return; var input = e("input"); input.type = "radio"; input.name = "essid"; input.value=ap.essid; input.id = "opt-" + ap.essid; if (currAp == ap.essid) input.checked = "1"; var bars = e("div"); var rssiVal = -Math.floor(ap.rssi/51)*32; bars.className = "lock-icon"; bars.style.backgroundPosition = "0px "+(rssiVal-1)+"px"; var rssi = e("div"); rssi.innerHTML = "" + ap.rssi +"dB"; var encrypt = e("div"); var encVal = "-65"; //assume wpa/wpa2 if (ap.enc == "0") encVal = "0"; //open if (ap.enc == "1") encVal = "-33"; //wep encrypt.className = "lock-icon"; encrypt.style.backgroundPosition = "-32px "+encVal+"px"; var label = e("div"); label.innerHTML = ap.essid; var div = m('').childNodes[0]; div.appendChild(input); div.appendChild(encrypt); div.appendChild(bars); div.appendChild(rssi); div.appendChild(label); return div; } function getSelectedEssid() { var e = document.forms.wifiform.elements; for (var i=0; i 60) { return scanAPs(); } scanReqCnt += 1; ajaxJson('GET', "scan", function(data) { currAp = getSelectedEssid(); if (data.result.inProgress == "0" && data.result.APs.length > 0) { $("#aps").innerHTML = ""; var n = 0; for (var i=0; iSTA+AP mode to scan."; } else showWarning("Failed to scan: " + st); //window.setTimeout(scanResult, 1000); }); } function getStatus() { ajaxJsonSpin("GET", "connstatus", function(data) { if (data.status == "idle" || data.status == "connecting") { $("#aps").innerHTML = "Connecting..."; showNotification("Connecting..."); window.setTimeout(getStatus, 1000); } else if (data.status == "got IP address") { var txt = "Connected! Got IP "+data.ip; showNotification(txt); showWifiInfo(data); blockScan = 0; if (data.modechange == "yes") { var txt2 = "esp-link will switch to STA-only mode in a few seconds"; window.setTimeout(function() { showNotification(txt2); }, 4000); } $("#reconnect").removeAttribute("hidden"); $("#reconnect").innerHTML = "If you are in the same network, go to "+data.ip+", else connect to network "+data.ssid+" first."; } else { blockScan = 0; showWarning("Connection failed: " + data.status + ", " + data.reason); $("#aps").innerHTML = "Check password and selected AP. Go Back"; } }, function(s, st) { //showWarning("Can't get status: " + st); window.setTimeout(getStatus, 2000); }); } function changeWifiMode(m) { blockScan = 1; hideWarning(); ajaxSpin("POST", "setmode?mode=" + m, function(resp) { showNotification("Mode changed"); window.setTimeout(getWifiInfo, 100); blockScan = 0; window.setTimeout(scanAPs, 500); $("#aps").innerHTML = 'Scanning...
'; }, function(s, st) { showWarning("Error changing mode: " + st); window.setTimeout(getWifiInfo, 100); blockScan = 0; }); } function changeWifiAp(e) { e.preventDefault(); var passwd = $("#wifi-passwd").value; var essid = getSelectedEssid(); showNotification("Connecting to " + essid); var url = "connect?essid="+encodeURIComponent(essid)+"&passwd="+encodeURIComponent(passwd); hideWarning(); $("#reconnect").setAttribute("hidden", ""); $("#wifi-passwd").value = ""; var cb = $("#connect-button"); var cn = cb.className; cb.className += ' pure-button-disabled'; blockScan = 1; ajaxSpin("POST", url, function(resp) { $("#spinner").removeAttribute('hidden'); // hack showNotification("Waiting for network change..."); window.scrollTo(0, 0); window.setTimeout(getStatus, 2000); }, function(s, st) { showWarning("Error switching network: "+st); cb.className = cn; window.setTimeout(scanAPs, 1000); }); } function changeSpecial(e) { e.preventDefault(); var url = "special"; url += "?dhcp=" + document.querySelector('input[name="dhcp"]:checked').value; url += "&staticip=" + encodeURIComponent($("#wifi-staticip").value); url += "&netmask=" + encodeURIComponent($("#wifi-netmask").value); url += "&gateway=" + encodeURIComponent($("#wifi-gateway").value); hideWarning(); var cb = $("#special-button"); addClass(cb, 'pure-button-disabled'); ajaxSpin("POST", url, function(resp) { removeClass(cb, 'pure-button-disabled'); //getWifiInfo(); // it takes 1 second for new settings to be applied }, function(s, st) { showWarning("Error: "+st); removeClass(cb, 'pure-button-disabled'); getWifiInfo(); }); } function doDhcp() { $('#dhcp-on').removeAttribute('hidden'); $('#dhcp-off').setAttribute('hidden', ''); } function doStatic() { $('#dhcp-off').removeAttribute('hidden'); $('#dhcp-on').setAttribute('hidden', ''); }