Added get_default_mac_addr() and set_base_mac_addr()

This commit is contained in:
2021-06-28 22:23:58 +02:00
parent e8f21482d8
commit 0497b7a134
2 changed files with 37 additions and 8 deletions

View File

@@ -1037,15 +1037,19 @@ esp_err_t goe_wifi_tcpip_init(const config &config)
return ESP_OK;
#if CONFIG_IDF_TARGET_ESP32
if (const auto mac = get_default_mac_addr())
{
uint8_t mac[8];
if (const auto result = esp_efuse_mac_get_default(mac); result == ESP_OK)
if (const auto result = set_base_mac_addr(*mac))
{
if (const auto result = esp_base_mac_addr_set(mac); result != ESP_OK)
ESP_LOGE(TAG, "esp_base_mac_addr_set() failed with %s", esp_err_to_name(result));
}
else
ESP_LOGE(TAG, "esp_efuse_mac_get_default() failed with %s", esp_err_to_name(result));
{
ESP_LOGE(TAG, "set_base_mac_addr() failed: %.*s", result.error().size(), result.error().data());
}
}
else
{
ESP_LOGE(TAG, "get_default_mac_addr() failed: %.*s", mac.error().size(), mac.error().data());
}
#endif
@@ -2024,11 +2028,23 @@ tl::expected<wifi_ap_record_t, std::string> get_sta_ap_info()
}
}
tl::expected<wifi_stack::mac_t, std::string> get_default_mac_addr()
{
wifi_stack::mac_t mac{};
if (const auto result = esp_efuse_mac_get_default(std::begin(mac)); result == ESP_OK)
return mac;
else
{
ESP_LOGE(TAG, "esp_efuse_mac_get_default() failed with %s", esp_err_to_name(result));
return tl::make_unexpected(std::string{"esp_efuse_mac_get_default() failed with "} + esp_err_to_name(result));
}
}
tl::expected<wifi_stack::mac_t, std::string> get_base_mac_addr()
{
wifi_stack::mac_t chipmac{};
if (const auto result = esp_base_mac_addr_get(std::begin(chipmac)); result == ESP_OK)
return chipmac;
wifi_stack::mac_t mac{};
if (const auto result = esp_base_mac_addr_get(std::begin(mac)); result == ESP_OK)
return mac;
else
{
ESP_LOGE(TAG, "esp_base_mac_addr_get() failed with %s", esp_err_to_name(result));
@@ -2036,4 +2052,15 @@ tl::expected<wifi_stack::mac_t, std::string> get_base_mac_addr()
}
}
tl::expected<void, std::string> set_base_mac_addr(wifi_stack::mac_t mac_addr)
{
if (const auto result = esp_base_mac_addr_set(std::cbegin(mac_addr)); result == ESP_OK)
return {};
else
{
ESP_LOGE(TAG, "esp_base_mac_addr_set() failed with %s", esp_err_to_name(result));
return tl::make_unexpected(std::string{"esp_base_mac_addr_set() failed with "} + esp_err_to_name(result));
}
}
} // namespace wifi_stack

View File

@@ -56,6 +56,8 @@ void delete_scan_result();
tl::expected<wifi_ap_record_t, std::string> get_sta_ap_info();
tl::expected<wifi_stack::mac_t, std::string> get_default_mac_addr();
tl::expected<wifi_stack::mac_t, std::string> get_base_mac_addr();
tl::expected<void, std::string> set_base_mac_addr(wifi_stack::mac_t mac_addr);
} // namespace wifi_stack