bool StationClass::setIP(IPAddress address, IPAddress netmask, IPAddress gateway) { if (System.isReady()) { debugf("IP can be changed only in init() method"); return false; } wifi_station_disconnect(); // wifi_station_dhcpc_stop(); struct ip_info ipinfo; wifi_get_ip_info(STATION_IF, &ipinfo); ipinfo.ip = address; ipinfo.netmask = netmask; ipinfo.gw = gateway; if (wifi_set_ip_info(STATION_IF, &ipinfo)) debugf("AP IP succesfully updated"); else { debugf("AP IP can't be updated"); enableDHCP(true); } wifi_station_connect(); //wifi_station_dhcpc_start(); return true; }
bool StationClass::config(String ssid, String password, bool autoConnectOnStartup /* = true*/) { station_config config = {0}; if (ssid.length() >= sizeof(config.ssid)) return false; if (password.length() >= sizeof(config.password)) return false; bool enabled = isEnabled(); bool dhcp = isEnabledDHCP(); enable(true); // Power on for configuration wifi_station_disconnect(); if (dhcp) enableDHCP(false); bool cfgreaded = wifi_station_get_config(&config); if (!cfgreaded) debugf("Can't read station configuration!"); memset(config.ssid, 0, sizeof(config.ssid)); memset(config.password, 0, sizeof(config.password)); config.bssid_set = false; strcpy((char*)config.ssid, ssid.c_str()); strcpy((char*)config.password, password.c_str()); noInterrupts(); if(!wifi_station_set_config(&config)) { interrupts(); debugf("Can't set station configuration!"); wifi_station_connect(); enableDHCP(dhcp); enable(enabled); return false; } debugf("Station configuration was updated to: %s", ssid.c_str()); interrupts(); wifi_station_connect(); enableDHCP(dhcp); enable(enabled); wifi_station_set_auto_connect(autoConnectOnStartup); return true; }
bool JPWiFly::joinNetwork(const char *ssid, const char *password, bool dhcp, uint8_t mode) { StCommand st(this); setJoin(WIFLY_WLAN_JOIN_AUTO); setChannel(0); setSSID(ssid); if (mode == WIFLY_MODE_WPA) setPassphrase(password); else setKey(password); if (dhcp) enableDHCP(); return join(ssid, 20000); }