void handleWifi() {
  replyServerCode(200);
}

void handleWifiSave() {
  replyServerCode(200);
}

// 返回 Wi-Fi 扫描结果
void handleWifiscan() {
  ticker.detach();

  Serial.println("scan start");
  int n = WiFi.scanNetworks();
  Serial.println("scan done");

  String json;
  json.reserve(1024);
  json += "[";
  for (int i = 0; i < n; i++) {
    if (i != 0) {
      json += ",";
    }
    json += "{\"ssid\":\"";
    json += WiFi.SSID(i);
//    json += "\",\"mac\":\"";
//    json += WiFi.BSSIDstr(i);
    json += "\",\"rssi\":";
    json += WiFi.RSSI(i);
    json += "}";
  }
  json += "]";
  webServer.send(200, APP_JSON, json);
}

// 连接 Wi-Fi
void handleWificonn() {
  ticker.detach();

  String v = webServer.arg("st"); 
  if (v == "1") {
    webServer.send(200, FPSTR(TEXT_PLAIN), String(status));
    return;
  }

  v = webServer.arg("s");
  Serial.println("conn to " + v);
  if (!v.isEmpty()) {
    v.toCharArray(ssid, sizeof(ssid));
  }
  v = webServer.arg("p");
  if (!v.isEmpty()) {
    v.toCharArray(password, sizeof(password));
  }
  saveWifi();

  status = WL_IDLE_STATUS;
  connect = true;
  replyServerCode(200);
}

// 返回 Wi-Fi 配置信息
void handleWificonf() {
  ticker.detach();

  getEEPROM();
  String json;
  json.reserve(128);
  json += "{\"ssid\":\"";
  json += ssid;
  json += "\",\"pwd\":\"";
  json += password;
  json += "\",\"ip\":\"";
//  json += (!connect && strlen(ssid) > 0) ? true : false;
  if (status == 3) {
    json += WiFi.localIP().toString();
  }
  json += "\"}";
  webServer.send(200, APP_JSON, json);
}

//连接Wi-Fi
void connectWifi() {
  Serial.println("Connecting as wifi client...");
  WiFi.disconnect();
  WiFi.begin(ssid, password);
  int connRes = WiFi.waitForConnectResult();
  Serial.print("connRes: ");
  Serial.println(connRes);
}

//保存ssid和密码
void saveWifi() {
  EEPROM.put(ssidAddr, ssid);
  EEPROM.commit();
  EEPROM.put(pwdAddr, password);
  EEPROM.commit();
}

// 设置信道
void setChangeAP() {  
  uint8_t v = getChangeAp();
  Serial.println("channel: " + String(v));
  WiFi.softAP(MSSID, MPSK, v);
}

// 获取信道
uint8_t getChangeAp() {
  uint8_t v = EEPROM.read(channelAddr);
  if (v < 1 || v > 14) {
    v = defChange;
  }
  return v;
}