@brief Ensure TCP/IP stack is initialized for loopback (no WiFi needed).
| 190 | |
| 191 | /// @brief Ensure TCP/IP stack is initialized for loopback (no WiFi needed). |
| 192 | static bool initNetifForLoopback() { |
| 193 | esp_err_t err = esp_netif_init(); |
| 194 | if (err != ESP_OK && err != ESP_ERR_INVALID_STATE) { |
| 195 | FL_WARN("[NET] esp_netif_init failed: " << esp_err_to_name(err)); |
| 196 | return false; |
| 197 | } |
| 198 | |
| 199 | if (!s_event_loop_initialized) { |
| 200 | err = esp_event_loop_create_default(); |
| 201 | if (err != ESP_OK && err != ESP_ERR_INVALID_STATE) { |
| 202 | FL_WARN("[NET] esp_event_loop_create_default failed: " |
| 203 | << esp_err_to_name(err)); |
| 204 | return false; |
| 205 | } |
| 206 | s_event_loop_initialized = true; |
| 207 | } |
| 208 | return true; |
| 209 | } |
| 210 | |
| 211 | /// @brief Run a single HTTP GET test and return result |
| 212 | static fl::json runHttpGetTest(const char* url, const char* test_name) { |
no test coverage detected