feat(factory-cli): add Wi-Fi credential management commands

This commit is contained in:
chenjintao
2026-08-25 14:09:25 +08:00
parent 63df9f91b3
commit 140e90447c
8 changed files with 362 additions and 13 deletions
@@ -128,6 +128,17 @@ bool platform_wifi_portal_has_saved_credentials(void)
return wifi_portal_has_saved_credentials();
}
esp_err_t platform_wifi_portal_get_saved_ssids(char *out_ssids,
size_t ssid_stride,
size_t capacity,
size_t *out_count)
{
return wifi_portal_get_saved_ssids(out_ssids,
ssid_stride,
capacity,
out_count);
}
bool platform_wifi_portal_sta_is_connected(void)
{
return wifi_portal_sta_is_connected();
@@ -298,6 +298,34 @@ bool wifi_portal_has_saved_credentials(void)
return !SsidManager::GetInstance().GetSsidList().empty();
}
esp_err_t wifi_portal_get_saved_ssids(char *out_ssids,
size_t ssid_stride,
size_t capacity,
size_t *out_count)
{
if (out_count == nullptr ||
(capacity > 0U && (out_ssids == nullptr || ssid_stride < 33U))) {
return ESP_ERR_INVALID_ARG;
}
install_wifi_storage_hooks();
ESP_RETURN_ON_ERROR(wifi_portal_lock(), TAG, "Failed to lock Wi-Fi portal");
PortalUnlockGuard guard;
const auto &ssid_list = SsidManager::GetInstance().GetSsidList();
*out_count = ssid_list.size();
if (ssid_list.size() > capacity) {
return ESP_ERR_INVALID_SIZE;
}
for (size_t i = 0; i < ssid_list.size(); ++i) {
strlcpy(out_ssids + (i * ssid_stride),
ssid_list[i].ssid.c_str(),
ssid_stride);
}
return ESP_OK;
}
bool wifi_portal_sta_is_connected(void)
{
if (!s_wifi_manager_initialized) {