/*******************************************************************************************
 * 
 */
#include "Wifi.h"

int8_t Wifi_start() {

  // if not defined, read ssid and password saved in EEPROM
  if (!STATIC_PARAMETERS) {
    Eeprom_init();
    ssid = Eeprom_read(stored_ssid_addr, stored_ssid_len);
    password = Eeprom_read(stored_password_addr, stored_password_len);
  }  
  Serial.print(F("\r\nConnecting to: ")); Serial.println(ssid);
  digitalWrite(25,HIGH); delay(1000);
  IPAddress dns(8, 8, 8, 8); // Google DNS
  WiFi.disconnect();
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid.c_str(), password.c_str());
  unsigned long start = millis();
  uint8_t connectionStatus;
  bool AttemptConnection = true;
  while (AttemptConnection) {
    connectionStatus = WiFi.status();
    if (millis() > start + 30000) { // Wait 30-secs maximum
      AttemptConnection = false;
    }
    if (connectionStatus == WL_CONNECTED || connectionStatus == WL_CONNECT_FAILED) {
      AttemptConnection = false;
    }
    delay(100);
  }
  if (connectionStatus == WL_CONNECTED) {
    Serial.println("WiFi connected at: " + WiFi.localIP().toString());
    Serial.println("Mac address: " + WiFi.macAddress());
  }
  else Serial.println("WiFi connection *** FAILED ***");
  return connectionStatus;
}

//#########################################################################################
void Wifi_stop() {

  WiFi.disconnect();
  WiFi.mode(WIFI_OFF);
}


int Wifi_getStrength() {
  int logrssi = 0 ;
  for (size_t i = 0; i < 10; i++)
  {
    int rssi = WiFi.RSSI();
    logrssi = logrssi + rssi;
    //Serial.printf("measured rssi = %d dBm \n", WiFi.RSSI());
    //delay(200);
  }
  
  Serial.printf("Mean rssi = %0.1d dBm \n", logrssi / 10); 
  return logrssi/10;
}
