Added the option to use a static IP address in Wi-Fi client mode.
parent
4692f10340
commit
b092a215e2
|
|
@ -114,12 +114,12 @@ void setup() {
|
|||
SystemLog.AddEvent(LogLevel_Info, F("Start tasks"));
|
||||
xTaskCreatePinnedToCore(System_TaskMain, "SystemNtpOtaUpdate", 8000, NULL, 1, &Task_SystemMain, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskCaptureAndSendPhoto, "CaptureAndSendPhoto", 6000, NULL, 2, &Task_CapturePhotoAndSend, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskWifiManagement, "WiFiManagement", 2500, NULL, 3, &Task_WiFiManagement, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskSdCardCheck, "CheckMicroSdCard", 2200, NULL, 4, &Task_SdCardCheck, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskSerialCfg, "CheckSerialConfiguration", 2500, NULL, 5, &Task_SerialCfg, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskStreamTelemetry, "PrintStreamTelemetry", 2500, NULL, 6, &Task_StreamTelemetry, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskSysLed, "SystemLed", 2000, NULL, 7, &Task_SysLed, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskWiFiWatchdog, "WiFiWatchdog", 2200, NULL, 8, &Task_WiFiWatchdog, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskWifiManagement, "WiFiManagement", 3800, NULL, 3, &Task_WiFiManagement, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskSdCardCheck, "CheckMicroSdCard", 3300, NULL, 4, &Task_SdCardCheck, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskSerialCfg, "CheckSerialConfiguration", 3300, NULL, 5, &Task_SerialCfg, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskStreamTelemetry, "PrintStreamTelemetry", 3300, NULL, 6, &Task_StreamTelemetry, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskSysLed, "SystemLed", 3000, NULL, 7, &Task_SysLed, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
xTaskCreatePinnedToCore(System_TaskWiFiWatchdog, "WiFiWatchdog", 3500, NULL, 8, &Task_WiFiWatchdog, 0); /*function, description, stack size, parameters, priority, task handle, core*/
|
||||
|
||||
/* init wdg */
|
||||
SystemLog.AddEvent(LogLevel_Info, F("Init WDG"));
|
||||
|
|
|
|||
|
|
@ -204,7 +204,19 @@ const char page_wifi_html[] PROGMEM = R"rawliteral(
|
|||
<br>
|
||||
<table id="wificfg_tb">
|
||||
<tr><td class="w1">Advanced Wi-Fi settings</td></tr>
|
||||
<tr><td class="w2" align="right">Enable service AP </td><td><label class="switch"><input type="checkbox" name="serviceap_enable" id="serviceapid" onchange="changeValue(this.checked, 'set_bool?serviceap_enable=', 'serviceap')"><span class="checkbox_slider round"></span></label></label> <span class="w1" id="status_serviceap"></span></td></tr>
|
||||
<tr><td class="w2" align="right">Enable service AP </td><td><label class="switch"><input type="checkbox" name="serviceap_enable" id="serviceapid" onchange="changeValue(this.checked, 'set_bool?serviceap_enable=', 'wifi')"><span class="checkbox_slider round"></span></label></label> <span class="w1" id="status_serviceap"></span></td></tr>
|
||||
<tr><td style="height: 10px;"></td></tr>
|
||||
<tr><td class="w2" align="right">Wi-Fi client IPv4 Method</td><td><label for="loglevel"></label>
|
||||
<select class="select" id="ipcfgid" name="ipcfg" onchange="changeValue(this.value, 'set_int?ipcfg=', 'wifi')">
|
||||
<option value="0">DHCP</option>
|
||||
<option value="1">Manual (static IP)</option>
|
||||
</select>
|
||||
</td></tr>
|
||||
<tr><td class="w2" align="right">IP address</td><td><input type="text" name="net_ip" id=net_ip_id></td></tr>
|
||||
<tr><td class="w2" align="right">Subnet mask</td><td><input type="text" name="net_mask" id=net_mask_id></td></tr>
|
||||
<tr><td class="w2" align="right">Default gateway</td><td><input type="text" name="net_gw" id=net_gw_id></td></tr>
|
||||
<tr><td class="w2" align="right">DNS server</td><td><input type="text" name="net_dns" id=net_dns_id></td></tr>
|
||||
<tr><td></td><td align="center"><button class="btn_save_w" onclick="setWifiNet(document.getElementById('net_ip_id').value, document.getElementById('net_mask_id').value, document.getElementById('net_gw_id').value, document.getElementById('net_dns_id').value)">Save</button></td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
|
@ -960,6 +972,11 @@ function get_data(val) {
|
|||
$("#ip").text(obj.ip);
|
||||
$("#mdns").text(obj.mdns);
|
||||
$("#wifi_network_status").text(obj.wifi_network_status);
|
||||
document.getElementById('ipcfgid').value = obj.ip_cfg;
|
||||
document.getElementById('net_ip_id').value = obj.net_ip;
|
||||
document.getElementById('net_mask_id').value = obj.net_mask;
|
||||
document.getElementById('net_gw_id').value = obj.net_gw;
|
||||
document.getElementById('net_dns_id').value = obj.net_dns;
|
||||
|
||||
if (!document.querySelector('#main-wifi-signal wifi_img')) {
|
||||
var wifi_img = document.createElement('wifi_img');
|
||||
|
|
@ -1099,6 +1116,14 @@ function setWifi(val_ssid, val_pass) {
|
|||
get_data("wifi");
|
||||
}
|
||||
|
||||
function setWifiNet(val_ip, val_mask, val_gw, val_dns) {
|
||||
var xmlHttp = new XMLHttpRequest();
|
||||
xmlHttp.open("GET", "wifi_net_cfg?ip=" + encodeURIComponent(val_ip) + "&mask=" + encodeURIComponent(val_mask) + "&gw=" + encodeURIComponent(val_gw) + "&dns=" + encodeURIComponent(val_dns), false);
|
||||
xmlHttp.send(null);
|
||||
alert(xmlHttp.responseText);
|
||||
get_data("wifi");
|
||||
}
|
||||
|
||||
function scanWifi() {
|
||||
var xmlHttp = new XMLHttpRequest();
|
||||
xmlHttp.open("GET", "wifi_scan?", false);
|
||||
|
|
@ -1151,11 +1176,11 @@ function setAuth(val_name, val_pass) {
|
|||
get_data("auth");
|
||||
}
|
||||
|
||||
function changeValue(val, url, reload) {
|
||||
function changeValue(val, url, reload, msg) {
|
||||
var xmlHttp = new XMLHttpRequest();
|
||||
xmlHttp.open("GET", url + val, false);
|
||||
xmlHttp.send(null);
|
||||
if ((url == "set_int?refresh=") || (url == "set_token?token=") || (url == "set_mdns?mdns=")) {
|
||||
if ((url == "set_int?refresh=") || (url == "set_token?token=") || (url == "set_mdns?mdns=") || (url == "set_int?ipcfg=")) {
|
||||
alert(xmlHttp.responseText);
|
||||
}
|
||||
if (url == "set_flash_time?flash_time=") {
|
||||
|
|
|
|||
|
|
@ -161,6 +161,11 @@ void Configuration::DefaultCfg() {
|
|||
SaveAgcGain(FACTORY_CFG_AGC_GAIN);
|
||||
SaveLogLevel(LogLevel_Info);
|
||||
SavePrusaConnectHostname(FACTORY_CFG_HOSTNAME);
|
||||
SaveNetworkIpMethod(FACTORY_CFG_NETWORK_IP_METHOD);
|
||||
SaveNetworkIp(FACTORY_CFG_NETWORK_STATIC_IP);
|
||||
SaveNetworkMask(FACTORY_CFG_NETWORK_STATIC_MASK);
|
||||
SaveNetworkGateway(FACTORY_CFG_NETWORK_STATIC_GATEWAY);
|
||||
SaveNetworkDns(FACTORY_CFG_NETWORK_STATIC_DNS);
|
||||
Log->AddEvent(LogLevel_Warning, F("+++++++++++++++++++++++++++"));
|
||||
}
|
||||
|
||||
|
|
@ -312,6 +317,24 @@ void Configuration::SaveString(uint16_t address, uint16_t max_length, String dat
|
|||
Log->AddEvent(LogLevel_Verbose, F("Skip write string"));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@info Function for save IP address to EEPROM
|
||||
@param uint16_t data address
|
||||
@param String data
|
||||
@return none
|
||||
*/
|
||||
void Configuration::SaveIpAddress(uint16_t address, String data) {
|
||||
IPAddress ip;
|
||||
if (ip.fromString(data)) {
|
||||
EEPROM.write(address, ip[0]);
|
||||
EEPROM.write(address + 1, ip[1]);
|
||||
EEPROM.write(address + 2, ip[2]);
|
||||
EEPROM.write(address + 3, ip[3]);
|
||||
EEPROM.commit();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@info Function for read uint16_t data from EEPROM
|
||||
@param uint16_t fist byte address
|
||||
|
|
@ -321,6 +344,7 @@ uint16_t Configuration::LoadUint16(uint16_t address) {
|
|||
uint16_t tmp = uint16_t(EEPROM.read(address) << 8) | (EEPROM.read(address + 1));
|
||||
return tmp;
|
||||
}
|
||||
|
||||
/**
|
||||
@info Function for load string from EEPROM
|
||||
@param uint16_t data address
|
||||
|
|
@ -351,6 +375,16 @@ String Configuration::LoadString(uint16_t address, uint16_t max_length, bool sho
|
|||
return tmp;
|
||||
}
|
||||
|
||||
String Configuration::LoadIpAddress(uint16_t address) {
|
||||
IPAddress ip;
|
||||
ip[0] = EEPROM.read(address);
|
||||
ip[1] = EEPROM.read(address + 1);
|
||||
ip[2] = EEPROM.read(address + 2);
|
||||
ip[3] = EEPROM.read(address + 3);
|
||||
|
||||
return ip.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
@info save refresh interval to eeprom
|
||||
@param uint8_t - refresh interval
|
||||
|
|
@ -704,6 +738,57 @@ void Configuration::SavePrusaConnectHostname(String i_data) {
|
|||
SaveString(EEPROM_ADDR_HOSTNAME_START, EEPROM_ADDR_HOSTNAME_LENGTH, i_data);
|
||||
}
|
||||
|
||||
/**
|
||||
@info Save network ip method
|
||||
@param uint8_t - value. 0 - DHCP, 1 - static
|
||||
@return none
|
||||
*/
|
||||
void Configuration::SaveNetworkIpMethod(uint8_t i_data) {
|
||||
Log->AddEvent(LogLevel_Verbose, "Save network ip method: " + (i_data == 0) ? "DHCP" : "Static");
|
||||
SaveUint8(EEPROM_ADDR_NETWORK_IP_METHOD_START, i_data);
|
||||
}
|
||||
|
||||
/**
|
||||
@info Save network static ip
|
||||
@param String - ip address
|
||||
@return none
|
||||
*/
|
||||
void Configuration::SaveNetworkIp(String i_data) {
|
||||
Log->AddEvent(LogLevel_Verbose, "Save network static ip: " + i_data);
|
||||
SaveIpAddress(EEPROM_ADDR_NETWORK_STATIC_IP_START, i_data);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@info Save network static mask
|
||||
@param String - mask
|
||||
@return none
|
||||
*/
|
||||
void Configuration::SaveNetworkMask(String i_data) {
|
||||
Log->AddEvent(LogLevel_Verbose, "Save network static mask: " + i_data);
|
||||
SaveIpAddress(EEPROM_ADDR_NETWORK_STATIC_MASK_START, i_data);
|
||||
}
|
||||
|
||||
/**
|
||||
@info Save network static gateway
|
||||
@param String - gateway
|
||||
@return none
|
||||
*/
|
||||
void Configuration::SaveNetworkGateway(String i_data) {
|
||||
Log->AddEvent(LogLevel_Verbose, "Save network static gateway: " + i_data);
|
||||
SaveIpAddress(EEPROM_ADDR_NETWORK_STATIC_GATEWAY_START, i_data);
|
||||
}
|
||||
|
||||
/**
|
||||
@info Save network static dns
|
||||
@param String - dns
|
||||
@return none
|
||||
*/
|
||||
void Configuration::SaveNetworkDns(String i_data) {
|
||||
Log->AddEvent(LogLevel_Verbose, "Save network static dns: " + i_data);
|
||||
SaveIpAddress(EEPROM_ADDR_NETWORK_STATIC_DNS_START, i_data);
|
||||
}
|
||||
|
||||
/**
|
||||
@info load refresh interval from eeprom
|
||||
@param none
|
||||
|
|
@ -1116,4 +1201,69 @@ String Configuration::LoadPrusaConnectHostname() {
|
|||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Load network ip method from EEPROM
|
||||
*
|
||||
* @return uint8_t - ip method. 0 - DHCP, 1 - static
|
||||
*/
|
||||
uint8_t Configuration::LoadNetworkIpMethod() {
|
||||
uint8_t ret = EEPROM.read(EEPROM_ADDR_NETWORK_IP_METHOD_START);
|
||||
|
||||
if (255 == ret) {
|
||||
ret = 0;
|
||||
}
|
||||
|
||||
Log->AddEvent(LogLevel_Info, String("Network IP method: ") + ((ret == 0) ? "DHCP" : "Static"));
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Load network static ip from EEPROM
|
||||
*
|
||||
* @return String - ip address
|
||||
*/
|
||||
String Configuration::LoadNetworkIp() {
|
||||
String ret = LoadIpAddress(EEPROM_ADDR_NETWORK_STATIC_IP_START);
|
||||
Log->AddEvent(LogLevel_Info, "Network static IP: " + ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Load network static mask from EEPROM
|
||||
*
|
||||
* @return String - mask
|
||||
*/
|
||||
String Configuration::LoadNetworkMask() {
|
||||
String ret = LoadIpAddress(EEPROM_ADDR_NETWORK_STATIC_MASK_START);
|
||||
Log->AddEvent(LogLevel_Info, "Network static mask: " + ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Load network static gateway from EEPROM
|
||||
*
|
||||
* @return String - gateway
|
||||
*/
|
||||
String Configuration::LoadNetworkGateway() {
|
||||
String ret = LoadIpAddress(EEPROM_ADDR_NETWORK_STATIC_GATEWAY_START);
|
||||
Log->AddEvent(LogLevel_Info, "Network static gateway: " + ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Load network static dns from EEPROM
|
||||
*
|
||||
* @return String - dns
|
||||
*/
|
||||
String Configuration::LoadNetworkDns() {
|
||||
String ret = LoadIpAddress(EEPROM_ADDR_NETWORK_STATIC_DNS_START);
|
||||
Log->AddEvent(LogLevel_Info, "Network static DNS: " + ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
@ -66,6 +66,11 @@ public:
|
|||
void SaveAgcGain(uint8_t);
|
||||
void SaveLogLevel(LogLevel_enum);
|
||||
void SavePrusaConnectHostname(String);
|
||||
void SaveNetworkIpMethod(uint8_t);
|
||||
void SaveNetworkIp(String);
|
||||
void SaveNetworkMask(String);
|
||||
void SaveNetworkGateway(String);
|
||||
void SaveNetworkDns(String);
|
||||
|
||||
uint8_t LoadRefreshInterval();
|
||||
String LoadToken();
|
||||
|
|
@ -101,6 +106,11 @@ public:
|
|||
uint8_t LoadAgcGain();
|
||||
LogLevel_enum LoadLogLevel();
|
||||
String LoadPrusaConnectHostname();
|
||||
uint8_t LoadNetworkIpMethod();
|
||||
String LoadNetworkIp();
|
||||
String LoadNetworkMask();
|
||||
String LoadNetworkGateway();
|
||||
String LoadNetworkDns();
|
||||
|
||||
private:
|
||||
Logs *Log; ///< Pointer to Logs object
|
||||
|
|
@ -117,8 +127,10 @@ private:
|
|||
void SaveBool(uint16_t, bool);
|
||||
void SaveUint16(uint16_t, uint16_t);
|
||||
void SaveString(uint16_t, uint16_t, String);
|
||||
void SaveIpAddress(uint16_t, String);
|
||||
uint16_t LoadUint16(uint16_t);
|
||||
String LoadString(uint16_t, uint16_t, bool);
|
||||
String LoadIpAddress(uint16_t);
|
||||
};
|
||||
|
||||
extern Configuration SystemConfig; ///< Configuration object
|
||||
|
|
|
|||
|
|
@ -87,6 +87,9 @@
|
|||
#define SERVICE_LOCAL_MASK "255.255.255.0" ///< service WI-FI module mask
|
||||
#define SERVICE_LOCAL_DNS "192.168.0.1" ///< service WI-FI module DNS
|
||||
|
||||
/* ----------------- IPv4 CFG -------------------*/
|
||||
#define IPV4_ADDR_MAX_LENGTH 15 ///< maximum length for IPv4 address
|
||||
|
||||
/* ----------------- WiFi CFG -------------------*/
|
||||
#define WIFI_STA_WDG_TIMEOUT 60000 ///< STA watchdog timeout [ms]
|
||||
|
||||
|
|
@ -126,6 +129,11 @@
|
|||
#define FACTORY_CFG_AGC_GAIN 0 ///< automatic gain controll gain
|
||||
#define FACTORY_CFG_HOSTNAME "connect.prusa3d.com" ///< hostname for Prusa Connect
|
||||
#define FACTORY_CFG_ENABLE_SERVICE_AP 1 ///< enable service AP mode
|
||||
#define FACTORY_CFG_NETWORK_IP_METHOD 0 ///< 0 - DHCP, 1 - Static IP
|
||||
#define FACTORY_CFG_NETWORK_STATIC_IP "255.255.255.255" ///< Static IP address
|
||||
#define FACTORY_CFG_NETWORK_STATIC_MASK "255.255.255.255" ///< Static Mask
|
||||
#define FACTORY_CFG_NETWORK_STATIC_GATEWAY "255.255.255.255" ///< Static Gateway
|
||||
#define FACTORY_CFG_NETWORK_STATIC_DNS "255.255.255.255" ///< Static DNS
|
||||
|
||||
/* ---------------- CFG FLAGS ------------------*/
|
||||
#define CFG_WIFI_SETTINGS_SAVED 0x0A ///< flag saved config
|
||||
|
|
@ -243,6 +251,22 @@
|
|||
#define EEPROM_ADDR_SERVICE_AP_ENABLE_START (EEPROM_ADDR_HOSTNAME_START + EEPROM_ADDR_HOSTNAME_LENGTH)
|
||||
#define EEPROM_ADDR_SERVICE_AP_ENABLE_LENGTH 1
|
||||
|
||||
#define EEPROM_ADDR_NETWORK_IP_METHOD_START (EEPROM_ADDR_SERVICE_AP_ENABLE_START + EEPROM_ADDR_SERVICE_AP_ENABLE_LENGTH)
|
||||
#define EEPROM_ADDR_NETWORK_IP_METHOD_LENGTH 1
|
||||
|
||||
#define EEPROM_ADDR_NETWORK_STATIC_IP_START (EEPROM_ADDR_NETWORK_IP_METHOD_START + EEPROM_ADDR_NETWORK_IP_METHOD_LENGTH)
|
||||
#define EEPROM_ADDR_NETWORK_STATIC_IP_LENGTH 4
|
||||
|
||||
#define EEPROM_ADDR_NETWORK_STATIC_MASK_START (EEPROM_ADDR_NETWORK_STATIC_IP_START + EEPROM_ADDR_NETWORK_STATIC_IP_LENGTH)
|
||||
#define EEPROM_ADDR_NETWORK_STATIC_MASK_LENGTH 4
|
||||
|
||||
#define EEPROM_ADDR_NETWORK_STATIC_GATEWAY_START (EEPROM_ADDR_NETWORK_STATIC_MASK_START + EEPROM_ADDR_NETWORK_STATIC_MASK_LENGTH)
|
||||
#define EEPROM_ADDR_NETWORK_STATIC_GATEWAY_LENGTH 4
|
||||
|
||||
#define EEPROM_ADDR_NETWORK_STATIC_DNS_START (EEPROM_ADDR_NETWORK_STATIC_GATEWAY_START + EEPROM_ADDR_NETWORK_STATIC_GATEWAY_LENGTH)
|
||||
#define EEPROM_ADDR_NETWORK_STATIC_DNS_LENGTH 4
|
||||
|
||||
|
||||
#define EEPROM_SIZE (EEPROM_ADDR_REFRESH_INTERVAL_LENGTH + EEPROM_ADDR_FINGERPRINT_LENGTH + EEPROM_ADDR_TOKEN_LENGTH + \
|
||||
EEPROM_ADDR_FRAMESIZE_LENGTH + EEPROM_ADDR_BRIGHTNESS_LENGTH + EEPROM_ADDR_CONTRAST_LENGTH + \
|
||||
EEPROM_ADDR_SATURATION_LENGTH + EEPROM_ADDR_HMIRROR_LENGTH + EEPROM_ADDR_VFLIP_LENGTH + \
|
||||
|
|
@ -255,7 +279,9 @@
|
|||
EEPROM_ADDR_AWB_MODE_ENABLE_LENGTH + EEPROM_ADDR_BPC_ENABLE_LENGTH + EEPROM_ADDR_WPC_ENABLE_LENGTH + \
|
||||
EEPROM_ADDR_RAW_GAMA_ENABLE_LENGTH + EEPROM_ADDR_AEC2_LENGTH + EEPROM_ADDR_AE_LEVEL_LENGTH + \
|
||||
EEPROM_ADDR_AEC_VALUE_LENGTH + EEPROM_ADDR_GAIN_CTRL_LENGTH + EEPROM_ADDR_AGC_GAIN_LENGTH + EEPROM_ADDR_LOG_LEVEL_LENGTH + \
|
||||
EEPROM_ADDR_HOSTNAME_LENGTH + EEPROM_ADDR_SERVICE_AP_ENABLE_LENGTH) ///< how many bits do we need for eeprom memory
|
||||
EEPROM_ADDR_HOSTNAME_LENGTH + EEPROM_ADDR_SERVICE_AP_ENABLE_LENGTH + EEPROM_ADDR_NETWORK_IP_METHOD_LENGTH +\
|
||||
EEPROM_ADDR_NETWORK_STATIC_IP_LENGTH + EEPROM_ADDR_NETWORK_STATIC_MASK_LENGTH + EEPROM_ADDR_NETWORK_STATIC_GATEWAY_LENGTH + \
|
||||
EEPROM_ADDR_NETWORK_STATIC_DNS_LENGTH) ///< how many bits do we need for eeprom memory
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
#include "serial_cfg.h"
|
||||
|
||||
SerialCfg SystemSerialCfg(&SystemConfig, &SystemLog, &SystemWifiMngt, &Connect);
|
||||
SerialCfg SystemSerialCfg(&SystemConfig, &SystemLog, &SystemWifiMngt, &Connect, &SystemCamera);
|
||||
|
||||
/**
|
||||
@brief Constructor
|
||||
|
|
@ -21,11 +21,12 @@ SerialCfg SystemSerialCfg(&SystemConfig, &SystemLog, &SystemWifiMngt, &Connect);
|
|||
@param PrusaConnect * - pointer to PrusaConnect object
|
||||
@return none
|
||||
*/
|
||||
SerialCfg::SerialCfg(Configuration *i_conf, Logs *i_log, WiFiMngt *i_wifi, PrusaConnect *i_connect) {
|
||||
SerialCfg::SerialCfg(Configuration *i_conf, Logs *i_log, WiFiMngt *i_wifi, PrusaConnect *i_connect, Camera *i_cam) {
|
||||
config = i_conf;
|
||||
log = i_log;
|
||||
wifim = i_wifi;
|
||||
connect = i_connect;
|
||||
cam = i_cam;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -109,6 +110,37 @@ String lastTwoChars = command.substring(command.length() - 2);
|
|||
log->AddEvent(LogLevel_Info, F("--> Console print service WiFi AP SSID..."));
|
||||
Serial.print("getserviceapssid:" + wifim->GetServiceApSsid() + ";");
|
||||
|
||||
} else if (command.startsWith("otaupdate") && command.endsWith(";")) {
|
||||
log->AddEvent(LogLevel_Warning, F("--> Start OTA update process!"));
|
||||
FirmwareUpdate.StartOtaUpdate = true;
|
||||
|
||||
} else if (command.startsWith("resolution:") && command.endsWith(";")) {
|
||||
uint8_t resolution = command.substring(11, command.length() -1).toInt();
|
||||
log->AddEvent(LogLevel_Info, "--> Console set photo resolution: " + String(resolution));
|
||||
if ((resolution >= 0) && (resolution <= 6)) {
|
||||
cam->SetFrameSize(resolution);
|
||||
} else {
|
||||
log->AddEvent(LogLevel_Warning, F("--> Bad resolution size!"));
|
||||
}
|
||||
} else if (command.startsWith("photoquality:") && command.endsWith(";")) {
|
||||
uint8_t quality = command.substring(13, command.length() -1).toInt();
|
||||
log->AddEvent(LogLevel_Info, "--> Console set photo quality: " + String(quality));
|
||||
if ((quality >= 10) && (quality <= 63)) {
|
||||
cam->SetPhotoQuality(quality);
|
||||
} else {
|
||||
log->AddEvent(LogLevel_Warning, F("--> Bad photo quality!"));
|
||||
}
|
||||
|
||||
} else if (command.startsWith("setflash") && command.endsWith(";")) {
|
||||
cam->SetCameraFlashEnable(!cam->GetCameraFlashEnable());
|
||||
cam->SetFlashStatus(false);
|
||||
log->AddEvent(LogLevel_Warning, "--> Console set FLASH: " + String(cam->GetCameraFlashEnable()));
|
||||
|
||||
} else if (command.startsWith("setlight") && command.endsWith(";")) {
|
||||
cam->SetCameraFlashEnable(false);
|
||||
cam->SetFlashStatus(!cam->GetFlashStatus());
|
||||
log->AddEvent(LogLevel_Warning, "--> Console set LIGHT: " + String(cam->GetFlashStatus()));
|
||||
|
||||
} else if (command.startsWith("mcureboot") && command.endsWith(";")) {
|
||||
log->AddEvent(LogLevel_Warning, F("--> Reboot MCU!"));
|
||||
ESP.restart();
|
||||
|
|
@ -130,7 +162,9 @@ String lastTwoChars = command.substring(command.length() - 2);
|
|||
@return none
|
||||
*/
|
||||
void SerialCfg::PrintAvailableCommands() {
|
||||
Serial.println(F("-----------------------------------"));
|
||||
Serial.println(F("Available commands: "));
|
||||
Serial.println(F(" Command - Description"));
|
||||
Serial.println(F("setwifissid:SSID; - set WiFi SSID"));
|
||||
Serial.println(F("setwifipass:PASS; - set WiFi password"));
|
||||
Serial.println(F("setauthtoken:TOKEN; - set auth TOKEN for backend"));
|
||||
|
|
@ -138,9 +172,23 @@ void SerialCfg::PrintAvailableCommands() {
|
|||
Serial.println(F("getwifimode; - get WiFi mode (AP/STA)"));
|
||||
Serial.println(F("getwifistastatus; - get STA status (connected/disconnected)"));
|
||||
Serial.println(F("getwifistaip; - get STA IP address"));
|
||||
Serial.println(F("getserviceapssid;- get service WiFi AP SSID"));
|
||||
Serial.println(F("getserviceapssid; - get service WiFi AP SSID"));
|
||||
Serial.println(F("otaupdate; - start OTA update process"));
|
||||
Serial.println(F("resolution:INDEX; - set photo resolution"));
|
||||
Serial.println(F(" | Index - Resolution"));
|
||||
Serial.println(F(" |-> 0 - 320x240"));
|
||||
Serial.println(F(" |-> 1 - 352x288"));
|
||||
Serial.println(F(" |-> 2 - 640x480"));
|
||||
Serial.println(F(" |-> 3 - 800x600"));
|
||||
Serial.println(F(" |-> 4 - 1024x768"));
|
||||
Serial.println(F(" |-> 5 - 1280x1024"));
|
||||
Serial.println(F(" |-> 6 - 1600x1200"));
|
||||
Serial.println(F("photoquality:QUALITY; - set photo quality. 10-63 lower number means higher quality "));
|
||||
Serial.println(F("setflash; - enable/disable LED flash"));
|
||||
Serial.println(F("setlight; - enable/disable LED light"));
|
||||
Serial.println(F("mcureboot; - reboot MCU"));
|
||||
Serial.println(F("commandslist; - print available commands"));
|
||||
Serial.println(F("-----------------------------------"));
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
@ -20,6 +20,7 @@
|
|||
#include "wifi_mngt.h"
|
||||
#include "cfg.h"
|
||||
#include "connect.h"
|
||||
#include "camera.h"
|
||||
|
||||
class WiFiMngt;
|
||||
class PrusaConnect;
|
||||
|
|
@ -30,13 +31,14 @@ private:
|
|||
Logs *log; ///< pointer to Logs object
|
||||
WiFiMngt *wifim; ///< pointer to WiFiMngt object
|
||||
PrusaConnect *connect; ///< pointer to PrusaConnect object
|
||||
Camera *cam; ///< pointer to camera object
|
||||
|
||||
String wifi_ssid; ///< wifi ssid
|
||||
String wifi_pass; ///< wifi password
|
||||
String auth_token; ///< auth token
|
||||
|
||||
public:
|
||||
SerialCfg(Configuration*, Logs*, WiFiMngt*, PrusaConnect*);
|
||||
SerialCfg(Configuration*, Logs*, WiFiMngt*, PrusaConnect*, Camera*);
|
||||
~SerialCfg(){};
|
||||
|
||||
void ProcessIncommingData();
|
||||
|
|
|
|||
|
|
@ -537,6 +537,15 @@ void Server_InitWebServer_Sets() {
|
|||
response = true;
|
||||
}
|
||||
|
||||
/* set network ip method. 0 - DHCP, 1 - Static */
|
||||
if (request->hasParam("ipcfg")) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("Set ipcfg"));
|
||||
SystemWifiMngt.SetNetIpMethod(request->getParam("ipcfg")->value().toInt());
|
||||
response_msg = MSG_SAVE_OK_REBOOT;
|
||||
|
||||
response = true;
|
||||
}
|
||||
|
||||
if (true == response) {
|
||||
request->send_P(200, F("text/html"), response_msg.c_str());
|
||||
}
|
||||
|
|
@ -702,6 +711,54 @@ void Server_InitWebServer_Sets() {
|
|||
}
|
||||
});
|
||||
|
||||
/* route for set WI-FI static IP address */
|
||||
server.on("/wifi_net_cfg", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: set WI-FI static IP address"));
|
||||
if (Server_CheckBasicAuth(request) == false)
|
||||
return;
|
||||
|
||||
String tmpIp = "";
|
||||
String tmpMask = "";
|
||||
String tmpGw = "";
|
||||
String tmpDns = "";
|
||||
|
||||
/* get ip */
|
||||
if (request->hasParam("ip")) {
|
||||
tmpIp = request->getParam("ip")->value();
|
||||
}
|
||||
|
||||
/* get mask */
|
||||
if (request->hasParam("mask")) {
|
||||
tmpMask = request->getParam("mask")->value();
|
||||
}
|
||||
|
||||
/* get gw */
|
||||
if (request->hasParam("gw")) {
|
||||
tmpGw = request->getParam("gw")->value();
|
||||
}
|
||||
|
||||
/* get dns */
|
||||
if (request->hasParam("dns")) {
|
||||
tmpDns = request->getParam("dns")->value();
|
||||
}
|
||||
|
||||
/* check min and max length network parameters */
|
||||
if (((tmpIp.length() > 0) && (tmpMask.length() > 0) && (tmpGw.length() > 0) && (tmpDns.length() > 0)) &&
|
||||
((tmpIp.length() <= IPV4_ADDR_MAX_LENGTH) && (tmpMask.length() <= IPV4_ADDR_MAX_LENGTH) &&
|
||||
(tmpGw.length() <= IPV4_ADDR_MAX_LENGTH) && (tmpDns.length() <= IPV4_ADDR_MAX_LENGTH))) {
|
||||
|
||||
/* save ssid and password */
|
||||
SystemWifiMngt.SetNetworkConfig(tmpIp, tmpMask, tmpGw, tmpDns);
|
||||
|
||||
/* send OK response */
|
||||
request->send_P(200, F("text/html"), MSG_SAVE_OK_REBOOT);
|
||||
|
||||
} else {
|
||||
request->send_P(200, F("text/html"), MSG_SAVE_NOTOK);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
/* route for set basic auth */
|
||||
server.on("/basicauth_cfg", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||
SystemLog.AddEvent(LogLevel_Verbose, F("WEB server: set basic auth user name and password"));
|
||||
|
|
@ -997,6 +1054,11 @@ String Server_GetJsonData() {
|
|||
doc_json["uptime"] = uptime;
|
||||
doc_json["user_name"] = WebBasicAuth.UserName;
|
||||
doc_json["hostname"] = Connect.GetPrusaConnectHostname();
|
||||
doc_json["ip_cfg"] = SystemWifiMngt.GetNetIpMethod();
|
||||
doc_json["net_ip"] = SystemWifiMngt.GetNetStaticIp();
|
||||
doc_json["net_mask"] = SystemWifiMngt.GetNetStaticMask();
|
||||
doc_json["net_gw"] = SystemWifiMngt.GetNetStaticGateway();
|
||||
doc_json["net_dns"] = SystemWifiMngt.GetNetStaticDns();
|
||||
doc_json["sw_build"] = SW_BUILD;
|
||||
doc_json["sw_ver"] = SW_VERSION;
|
||||
doc_json["sw_new_ver"] = FirmwareUpdate.NewVersionFw;
|
||||
|
|
|
|||
|
|
@ -624,6 +624,12 @@ void System_TaskSysLed(void *pvParameters) {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Function for WiFi watchdog task
|
||||
*
|
||||
* @param void *pvParameters
|
||||
* @return none
|
||||
*/
|
||||
void System_TaskWiFiWatchdog(void *pvParameters) {
|
||||
SystemLog.AddEvent(LogLevel_Info, "WiFiWatchdog task. core: " + String(xPortGetCoreID()));
|
||||
TickType_t xLastWakeTime = xTaskGetTickCount();
|
||||
|
|
|
|||
|
|
@ -42,8 +42,15 @@ WiFiMngt::WiFiMngt(Configuration *i_conf, Logs *i_log, Camera *i_cam) {
|
|||
void WiFiMngt::LoadCfgFromEeprom() {
|
||||
WifiSsid = config->LoadWifiSsid();
|
||||
WifiPassword = config->LoadWifiPassowrd();
|
||||
|
||||
mDNS_record = config->LoadMdnsRecord();
|
||||
EnableServiceAp = config->LoadEnableServiceAp();
|
||||
|
||||
NetIpMethod = config->LoadNetworkIpMethod();
|
||||
NetStaticIp.fromString(config->LoadNetworkIp());
|
||||
NetStaticMask.fromString(config->LoadNetworkMask());
|
||||
NetStaticGateway.fromString(config->LoadNetworkGateway());
|
||||
NetStaticDns.fromString(config->LoadNetworkDns());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -60,6 +67,7 @@ void WiFiMngt::Init() {
|
|||
SetWifiEvents();
|
||||
CreateApSsid();
|
||||
|
||||
/* check enable service AP mode */
|
||||
if (true == GetEnableServiceAp()) {
|
||||
log->AddEvent(LogLevel_Info, F("Service AP mode enabled"));
|
||||
WiFi.mode(WIFI_AP_STA);
|
||||
|
|
@ -76,6 +84,16 @@ void WiFiMngt::Init() {
|
|||
WiFiMode = "Client";
|
||||
}
|
||||
|
||||
/* Set STA IP method. Static or DHCP */
|
||||
if (NetIpMethod == NetworkIpMethodStatic) {
|
||||
log->AddEvent(LogLevel_Info, F("STA IP Method: Static IP"));
|
||||
if (!WiFi.config(NetStaticIp, NetStaticGateway, NetStaticMask, NetStaticDns)) {
|
||||
log->AddEvent(LogLevel_Error, F("STA Failed to configure static IP"));
|
||||
}
|
||||
} else {
|
||||
log->AddEvent(LogLevel_Info, F("STA IP Method: DHCP"));
|
||||
}
|
||||
|
||||
esp_wifi_set_ps(WIFI_PS_NONE);
|
||||
WiFi.setHostname(DEVICE_HOSTNAME);
|
||||
FirstConnected = false;
|
||||
|
|
@ -678,6 +696,51 @@ bool WiFiMngt::GetFirstConnection() {
|
|||
return FirstConnected;
|
||||
}
|
||||
|
||||
/**
|
||||
@brief function for get STA IP method
|
||||
@param none
|
||||
@return uint8_t - value. 0 - DHCP, 1 - Static
|
||||
*/
|
||||
uint8_t WiFiMngt::GetNetIpMethod() {
|
||||
return NetIpMethod;
|
||||
}
|
||||
|
||||
/**
|
||||
@brief function for get static IP configuration
|
||||
@param none
|
||||
@return String - value
|
||||
*/
|
||||
String WiFiMngt::GetNetStaticIp() {
|
||||
return NetStaticIp.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief function for get static mask configuration
|
||||
*
|
||||
* @return String
|
||||
*/
|
||||
String WiFiMngt::GetNetStaticMask() {
|
||||
return NetStaticMask.toString();;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief function for get static gateway configuration
|
||||
*
|
||||
* @return String
|
||||
*/
|
||||
String WiFiMngt::GetNetStaticGateway() {
|
||||
return NetStaticGateway.toString();;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief function for get static DNS configuration
|
||||
*
|
||||
* @return String
|
||||
*/
|
||||
String WiFiMngt::GetNetStaticDns() {
|
||||
return NetStaticDns.toString();;
|
||||
}
|
||||
|
||||
/**
|
||||
@brief function for set STA credentials
|
||||
@param String - ssid
|
||||
|
|
@ -761,6 +824,33 @@ void WiFiMngt::SetFirstConnection(bool i_data) {
|
|||
FirstConnected = i_data;
|
||||
}
|
||||
|
||||
/**
|
||||
@brief function for set static IP configuration
|
||||
@param bool - data
|
||||
@return none
|
||||
*/
|
||||
void WiFiMngt::SetNetworkConfig(String i_ip, String i_mask, String i_gw, String i_dns) {
|
||||
NetStaticIp.fromString(i_ip);
|
||||
NetStaticMask.fromString(i_mask);
|
||||
NetStaticGateway.fromString(i_gw);
|
||||
NetStaticDns.fromString(i_dns);
|
||||
|
||||
config->SaveNetworkIp(NetStaticIp.toString());
|
||||
config->SaveNetworkMask(NetStaticMask.toString());
|
||||
config->SaveNetworkGateway(NetStaticGateway.toString());
|
||||
config->SaveNetworkDns(NetStaticDns.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
@brief function for set STA IP method. 0 - DHCP, 1 - Static
|
||||
@param uint8_t - data
|
||||
@return none
|
||||
*/
|
||||
void WiFiMngt::SetNetIpMethod(uint8_t i_data) {
|
||||
NetIpMethod = i_data;
|
||||
config->SaveNetworkIpMethod(NetIpMethod);
|
||||
}
|
||||
|
||||
/* ----------------------- Static function ----------------------- */
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -42,6 +42,11 @@ void WiFiMngt_WiFiEventApStaDisconnected(WiFiEvent_t , WiFiEventInfo_t);
|
|||
void WiFiMngt_WiFiEventApStaIpAssigned(WiFiEvent_t , WiFiEventInfo_t);
|
||||
void WiFiMngt_WiFiEventApStaProbeReqRecved(WiFiEvent_t , WiFiEventInfo_t);
|
||||
|
||||
enum NetworkIpMethod_enum {
|
||||
NetworkIpMethodDhcp = 0, ///< DHCP IP
|
||||
NetworkIpMethodStatic = 1, ///< STATIC IP
|
||||
};
|
||||
|
||||
class WiFiMngt {
|
||||
private:
|
||||
String WifiSsid; ///< WI-FI SSID
|
||||
|
|
@ -53,6 +58,12 @@ private:
|
|||
bool NtpFirstSync; ///< flag about first NTP sync status
|
||||
bool EnableServiceAp; ///< flag about enable service AP mode
|
||||
|
||||
uint8_t NetIpMethod; ///< flag about IP address obtained. 0 - DHCP, 1 - Static
|
||||
IPAddress NetStaticIp; ///< Static IP address of the STA
|
||||
IPAddress NetStaticMask; ///< Static Mask of the STA
|
||||
IPAddress NetStaticGateway; ///< Static Gateway of the STA
|
||||
IPAddress NetStaticDns; ///< Static DNS of the STA
|
||||
|
||||
uint8_t WiFiStaNetworkBssid[6]; ///< BSSID of the network
|
||||
|
||||
bool WiFiStaMultipleNetwork; ///< flag about multiple STA networks
|
||||
|
|
@ -109,6 +120,11 @@ public:
|
|||
bool GetkActifeWifiCfgFlag();
|
||||
bool GetNtpFirstTimeSync();
|
||||
bool GetFirstConnection();
|
||||
uint8_t GetNetIpMethod();
|
||||
String GetNetStaticIp();
|
||||
String GetNetStaticMask();
|
||||
String GetNetStaticGateway();
|
||||
String GetNetStaticDns();
|
||||
|
||||
void SetStaCredentials(String, String);
|
||||
void SetStaSsid(String);
|
||||
|
|
@ -117,6 +133,8 @@ public:
|
|||
void ConnectToSta();
|
||||
void SetMdns(String);
|
||||
void SetFirstConnection(bool);
|
||||
void SetNetworkConfig(String, String, String, String);
|
||||
void SetNetIpMethod(uint8_t);
|
||||
};
|
||||
|
||||
extern WiFiMngt SystemWifiMngt; ///< global variable for wifi management
|
||||
|
|
|
|||
|
|
@ -59,7 +59,19 @@
|
|||
<br>
|
||||
<table id="wificfg_tb">
|
||||
<tr><td class="w1">Advanced Wi-Fi settings</td></tr>
|
||||
<tr><td class="w2" align="right">Enable service AP </td><td><label class="switch"><input type="checkbox" name="serviceap_enable" id="serviceapid" onchange="changeValue(this.checked, 'set_bool?serviceap_enable=', 'serviceap')"><span class="checkbox_slider round"></span></label></label> <span class="w1" id="status_serviceap"></span></td></tr>
|
||||
<tr><td class="w2" align="right">Enable service AP </td><td><label class="switch"><input type="checkbox" name="serviceap_enable" id="serviceapid" onchange="changeValue(this.checked, 'set_bool?serviceap_enable=', 'wifi')"><span class="checkbox_slider round"></span></label></label> <span class="w1" id="status_serviceap"></span></td></tr>
|
||||
<tr><td style="height: 10px;"></td></tr>
|
||||
<tr><td class="w2" align="right">Wi-Fi client IPv4 Method</td><td><label for="loglevel"></label>
|
||||
<select class="select" id="ipcfgid" name="ipcfg" onchange="changeValue(this.value, 'set_int?ipcfg=', 'wifi')">
|
||||
<option value="0">DHCP</option>
|
||||
<option value="1">Manual (static IP)</option>
|
||||
</select>
|
||||
</td></tr>
|
||||
<tr><td class="w2" align="right">IP address</td><td><input type="text" name="net_ip" id=net_ip_id></td></tr>
|
||||
<tr><td class="w2" align="right">Subnet mask</td><td><input type="text" name="net_mask" id=net_mask_id></td></tr>
|
||||
<tr><td class="w2" align="right">Default gateway</td><td><input type="text" name="net_gw" id=net_gw_id></td></tr>
|
||||
<tr><td class="w2" align="right">DNS server</td><td><input type="text" name="net_dns" id=net_dns_id></td></tr>
|
||||
<tr><td></td><td align="center"><button class="btn_save_w" onclick="setWifiNet(document.getElementById('net_ip_id').value, document.getElementById('net_mask_id').value, document.getElementById('net_gw_id').value, document.getElementById('net_dns_id').value)">Save</button></td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -76,6 +76,11 @@ function get_data(val) {
|
|||
$("#ip").text(obj.ip);
|
||||
$("#mdns").text(obj.mdns);
|
||||
$("#wifi_network_status").text(obj.wifi_network_status);
|
||||
document.getElementById('ipcfgid').value = obj.ip_cfg;
|
||||
document.getElementById('net_ip_id').value = obj.net_ip;
|
||||
document.getElementById('net_mask_id').value = obj.net_mask;
|
||||
document.getElementById('net_gw_id').value = obj.net_gw;
|
||||
document.getElementById('net_dns_id').value = obj.net_dns;
|
||||
|
||||
if (!document.querySelector('#main-wifi-signal wifi_img')) {
|
||||
var wifi_img = document.createElement('wifi_img');
|
||||
|
|
@ -215,6 +220,14 @@ function setWifi(val_ssid, val_pass) {
|
|||
get_data("wifi");
|
||||
}
|
||||
|
||||
function setWifiNet(val_ip, val_mask, val_gw, val_dns) {
|
||||
var xmlHttp = new XMLHttpRequest();
|
||||
xmlHttp.open("GET", "wifi_net_cfg?ip=" + encodeURIComponent(val_ip) + "&mask=" + encodeURIComponent(val_mask) + "&gw=" + encodeURIComponent(val_gw) + "&dns=" + encodeURIComponent(val_dns), false);
|
||||
xmlHttp.send(null);
|
||||
alert(xmlHttp.responseText);
|
||||
get_data("wifi");
|
||||
}
|
||||
|
||||
function scanWifi() {
|
||||
var xmlHttp = new XMLHttpRequest();
|
||||
xmlHttp.open("GET", "wifi_scan?", false);
|
||||
|
|
@ -267,11 +280,11 @@ function setAuth(val_name, val_pass) {
|
|||
get_data("auth");
|
||||
}
|
||||
|
||||
function changeValue(val, url, reload) {
|
||||
function changeValue(val, url, reload, msg) {
|
||||
var xmlHttp = new XMLHttpRequest();
|
||||
xmlHttp.open("GET", url + val, false);
|
||||
xmlHttp.send(null);
|
||||
if ((url == "set_int?refresh=") || (url == "set_token?token=") || (url == "set_mdns?mdns=")) {
|
||||
if ((url == "set_int?refresh=") || (url == "set_token?token=") || (url == "set_mdns?mdns=") || (url == "set_int?ipcfg=")) {
|
||||
alert(xmlHttp.responseText);
|
||||
}
|
||||
if (url == "set_flash_time?flash_time=") {
|
||||
|
|
|
|||
Loading…
Reference in New Issue