mirror of
https://github.com/esphome/esphome.git
synced 2024-11-23 23:48:11 +01:00
[wifi] Replace `USE_ESP32_IGNORE_EFUSE_MAC_CRC
with IDF's
CONFIG_ESP_MAC_IGNORE_MAC_CRC_ERROR
` (#7502)
This commit is contained in:
parent
9f85d99a22
commit
e87169805c
3 changed files with 15 additions and 15 deletions
|
@ -53,6 +53,7 @@ from .const import ( # noqa
|
||||||
KEY_SDKCONFIG_OPTIONS,
|
KEY_SDKCONFIG_OPTIONS,
|
||||||
KEY_SUBMODULES,
|
KEY_SUBMODULES,
|
||||||
KEY_VARIANT,
|
KEY_VARIANT,
|
||||||
|
VARIANT_ESP32,
|
||||||
VARIANT_FRIENDLY,
|
VARIANT_FRIENDLY,
|
||||||
VARIANTS,
|
VARIANTS,
|
||||||
)
|
)
|
||||||
|
@ -376,6 +377,15 @@ def final_validate(config):
|
||||||
f"Please specify {CONF_FLASH_SIZE} within esp32 configuration only"
|
f"Please specify {CONF_FLASH_SIZE} within esp32 configuration only"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (
|
||||||
|
config[CONF_VARIANT] != VARIANT_ESP32
|
||||||
|
and CONF_ADVANCED in (conf_fw := config[CONF_FRAMEWORK])
|
||||||
|
and CONF_IGNORE_EFUSE_MAC_CRC in conf_fw[CONF_ADVANCED]
|
||||||
|
):
|
||||||
|
raise cv.Invalid(
|
||||||
|
f"{CONF_IGNORE_EFUSE_MAC_CRC} is not supported on {config[CONF_VARIANT]}"
|
||||||
|
)
|
||||||
|
|
||||||
return config
|
return config
|
||||||
|
|
||||||
|
|
||||||
|
@ -405,7 +415,7 @@ ESP_IDF_FRAMEWORK_SCHEMA = cv.All(
|
||||||
cv.Optional(
|
cv.Optional(
|
||||||
CONF_IGNORE_EFUSE_CUSTOM_MAC, default=False
|
CONF_IGNORE_EFUSE_CUSTOM_MAC, default=False
|
||||||
): cv.boolean,
|
): cv.boolean,
|
||||||
cv.Optional(CONF_IGNORE_EFUSE_MAC_CRC, default=False): cv.boolean,
|
cv.Optional(CONF_IGNORE_EFUSE_MAC_CRC): cv.boolean,
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
cv.Optional(CONF_COMPONENTS, default=[]): cv.ensure_list(
|
cv.Optional(CONF_COMPONENTS, default=[]): cv.ensure_list(
|
||||||
|
@ -532,8 +542,8 @@ async def to_code(config):
|
||||||
|
|
||||||
if conf[CONF_ADVANCED][CONF_IGNORE_EFUSE_CUSTOM_MAC]:
|
if conf[CONF_ADVANCED][CONF_IGNORE_EFUSE_CUSTOM_MAC]:
|
||||||
cg.add_define("USE_ESP32_IGNORE_EFUSE_CUSTOM_MAC")
|
cg.add_define("USE_ESP32_IGNORE_EFUSE_CUSTOM_MAC")
|
||||||
if conf[CONF_ADVANCED][CONF_IGNORE_EFUSE_MAC_CRC]:
|
if conf[CONF_ADVANCED].get(CONF_IGNORE_EFUSE_MAC_CRC):
|
||||||
cg.add_define("USE_ESP32_IGNORE_EFUSE_MAC_CRC")
|
add_idf_sdkconfig_option("CONFIG_ESP_MAC_IGNORE_MAC_CRC_ERROR", True)
|
||||||
if (framework_ver.major, framework_ver.minor) >= (4, 4):
|
if (framework_ver.major, framework_ver.minor) >= (4, 4):
|
||||||
add_idf_sdkconfig_option(
|
add_idf_sdkconfig_option(
|
||||||
"CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE", False
|
"CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE", False
|
||||||
|
|
|
@ -131,16 +131,10 @@ void event_handler(void *arg, esp_event_base_t event_base, int32_t event_id, voi
|
||||||
|
|
||||||
void WiFiComponent::wifi_pre_setup_() {
|
void WiFiComponent::wifi_pre_setup_() {
|
||||||
uint8_t mac[6];
|
uint8_t mac[6];
|
||||||
#ifdef USE_ESP32_IGNORE_EFUSE_MAC_CRC
|
|
||||||
get_mac_address_raw(mac);
|
|
||||||
set_mac_address(mac);
|
|
||||||
ESP_LOGV(TAG, "Use EFuse MAC without checking CRC: %s", get_mac_address_pretty().c_str());
|
|
||||||
#else
|
|
||||||
if (has_custom_mac_address()) {
|
if (has_custom_mac_address()) {
|
||||||
get_mac_address_raw(mac);
|
get_mac_address_raw(mac);
|
||||||
set_mac_address(mac);
|
set_mac_address(mac);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
esp_err_t err = esp_netif_init();
|
esp_err_t err = esp_netif_init();
|
||||||
if (err != ERR_OK) {
|
if (err != ERR_OK) {
|
||||||
ESP_LOGE(TAG, "esp_netif_init failed: %s", esp_err_to_name(err));
|
ESP_LOGE(TAG, "esp_netif_init failed: %s", esp_err_to_name(err));
|
||||||
|
|
|
@ -662,13 +662,9 @@ void get_mac_address_raw(uint8_t *mac) { // NOLINT(readability-non-const-parame
|
||||||
static const uint8_t esphome_host_mac_address[6] = USE_ESPHOME_HOST_MAC_ADDRESS;
|
static const uint8_t esphome_host_mac_address[6] = USE_ESPHOME_HOST_MAC_ADDRESS;
|
||||||
memcpy(mac, esphome_host_mac_address, sizeof(esphome_host_mac_address));
|
memcpy(mac, esphome_host_mac_address, sizeof(esphome_host_mac_address));
|
||||||
#elif defined(USE_ESP32)
|
#elif defined(USE_ESP32)
|
||||||
#if defined(CONFIG_SOC_IEEE802154_SUPPORTED) || defined(USE_ESP32_IGNORE_EFUSE_MAC_CRC)
|
#if defined(CONFIG_SOC_IEEE802154_SUPPORTED)
|
||||||
// When CONFIG_SOC_IEEE802154_SUPPORTED is defined, esp_efuse_mac_get_default
|
// When CONFIG_SOC_IEEE802154_SUPPORTED is defined, esp_efuse_mac_get_default
|
||||||
// returns the 802.15.4 EUI-64 address. Read directly from eFuse instead.
|
// returns the 802.15.4 EUI-64 address, so we read directly from eFuse instead.
|
||||||
// On some devices, the MAC address that is burnt into EFuse does not
|
|
||||||
// match the CRC that goes along with it. For those devices, this
|
|
||||||
// work-around reads and uses the MAC address as-is from EFuse,
|
|
||||||
// without doing the CRC check.
|
|
||||||
if (has_custom_mac_address()) {
|
if (has_custom_mac_address()) {
|
||||||
esp_efuse_read_field_blob(ESP_EFUSE_MAC_CUSTOM, mac, 48);
|
esp_efuse_read_field_blob(ESP_EFUSE_MAC_CUSTOM, mac, 48);
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue