espressif / arduino-esp32

Arduino core for the ESP32
GNU Lesser General Public License v2.1
13.71k stars 7.43k forks source link

fix(wifi): fixes WiFi.isconnected() to return true when it is connected and it has an IP Addr #10595

Closed SuGlider closed 1 week ago

SuGlider commented 1 week ago

Description of Change

After 3.0.x (including 3.1.x) the function WiFiSTAClass::isConnected() returns when it is connected to the WiFi AP but not necessarily when it has an IP address. This is a breaking change because 2.0.x only returns true when both, it is connected and it has an IP.

This PR fixes it.

Tests scenarios

#include <Arduino.h>
#include <WiFi.h>

const char *SSID = "xxx";
const char *PSK = "xxx";

void setup()
{
    Serial.begin(115200);
    while (!Serial)
        delay(10);

    Serial.println("connecting..");

    WiFi.begin(SSID, PSK);

    while (!WiFi.isConnected())
        delay(10);

    Serial.println(WiFi.localIP());
}

void loop()
{
    delay(1000);
    Serial.println(WiFi.localIP());
}

Related links

Fix #10580

github-actions[bot] commented 1 week ago
Messages
:book: πŸŽ‰ Good Job! All checks are passing!

πŸ‘‹ Hello SuGlider, we appreciate your contribution to this project!


Click to see more instructions ...


This automated output is generated by the PR linter DangerJS, which checks if your Pull Request meets the project's requirements and helps you fix potential issues.

DangerJS is triggered with each push event to a Pull Request and modify the contents of this comment.

Please consider the following:
- Danger mainly focuses on the PR structure and formatting and can't understand the meaning behind your code or changes.
- Danger is not a substitute for human code reviews; it's still important to request a code review from your colleagues.
- To manually retry these Danger checks, please navigate to the Actions tab and re-run last Danger workflow.

Review and merge process you can expect ...


We do welcome contributions in the form of bug reports, feature requests and pull requests.

1. An internal issue has been created for the PR, we assign it to the relevant engineer.
2. They review the PR and either approve it or ask you for changes or clarifications.
3. Once the GitHub PR is approved we do the final review, collect approvals from core owners and make sure all the automated tests are passing.
- At this point we may do some adjustments to the proposed change, or extend it by adding tests or documentation.
4. If the change is approved and passes the tests it is merged into the default branch.

Generated by :no_entry_sign: dangerJS against 877d49738466c69f03e9de00efa57ffc9dc6ebdb

github-actions[bot] commented 1 week ago

Test Results

 56 files   56 suites   4m 14s ⏱️  21 tests  21 βœ…β€ƒ0 πŸ’€β€ƒ0 ❌ 134 runsβ€Šβ€ƒ134 βœ…β€ƒ0 πŸ’€β€ƒ0 ❌

Results for commit 877d4973.

:recycle: This comment has been updated with latest results.

beta-tester commented 14 hours ago

i have a question. how is or was the logic for WiFi.status() ?

if (WiFi.status() == WL_CONNECTED) {
}

does WL_CONNECTED mean connected and got an IP as well?