Skip to content

Commit 0a93c52

Browse files
committed
Merge branch 'feature/add_get_default_mac_v3.0' into 'release/v3.0'
Add get default mac (backport v3.0) See merge request sdk/ESP8266_RTOS_SDK!743
2 parents 9fa93f7 + eaaf67a commit 0a93c52

File tree

1 file changed

+20
-17
lines changed

1 file changed

+20
-17
lines changed

components/esp8266/source/system_api.c

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ esp_err_t esp_base_mac_addr_set(uint8_t *mac)
3636
{
3737
if (mac == NULL) {
3838
ESP_LOGE(TAG, "Base MAC address is NULL");
39-
abort();
39+
return ESP_ERR_INVALID_ARG;
4040
}
4141

4242
memcpy(base_mac_addr, mac, 6);
@@ -65,6 +65,7 @@ esp_err_t esp_efuse_mac_get_default(uint8_t* mac)
6565
uint8_t efuse_crc = 0;
6666
uint8_t calc_crc = 0;
6767
uint8_t version;
68+
uint8_t use_default = 1;
6869

6970
efuse[0] = REG_READ(EFUSE_DATA0_REG);
7071
efuse[1] = REG_READ(EFUSE_DATA1_REG);
@@ -82,35 +83,37 @@ esp_err_t esp_efuse_mac_get_default(uint8_t* mac)
8283
mac[1] = efuse[3] >> 8;
8384
mac[2] = efuse[3];
8485

86+
use_default = 0;
87+
8588
tmp_mac[0] = mac[2];
8689
tmp_mac[1] = mac[1];
8790
tmp_mac[2] = mac[0];
8891

8992
efuse_crc = efuse[2] >> 24;
9093
calc_crc = esp_crc8(tmp_mac, 3);
9194

92-
if (efuse_crc != calc_crc) {
93-
ESP_LOGE(TAG, "High MAC CRC error, efuse_crc = 0x%02x; calc_crc = 0x%02x", efuse_crc, calc_crc);
94-
return ESP_ERR_INVALID_MAC;
95-
}
95+
if (efuse_crc != calc_crc)
96+
use_default = 1;
9697

97-
version = (efuse[1] >> EFUSE_VERSION_S) & EFUSE_VERSION_V;
98+
if (!use_default) {
99+
version = (efuse[1] >> EFUSE_VERSION_S) & EFUSE_VERSION_V;
98100

99-
if (version == EFUSE_VERSION_1 || version == EFUSE_VERSION_2) {
100-
tmp_mac[0] = mac[5];
101-
tmp_mac[1] = mac[4];
102-
tmp_mac[2] = mac[3];
103-
tmp_mac[3] = efuse[1] >> 16;
101+
if (version == EFUSE_VERSION_1 || version == EFUSE_VERSION_2) {
102+
tmp_mac[0] = mac[5];
103+
tmp_mac[1] = mac[4];
104+
tmp_mac[2] = mac[3];
105+
tmp_mac[3] = efuse[1] >> 16;
104106

105-
efuse_crc = efuse[0] >> 16;
106-
calc_crc = esp_crc8(tmp_mac, 4);
107+
efuse_crc = efuse[0] >> 16;
108+
calc_crc = esp_crc8(tmp_mac, 4);
107109

108-
if (efuse_crc != calc_crc) {
109-
ESP_LOGE(TAG, "CRC8 error, efuse_crc = 0x%02x; calc_crc = 0x%02x", efuse_crc, calc_crc);
110-
return ESP_ERR_INVALID_MAC;
110+
if (efuse_crc != calc_crc)
111+
use_default = 1;
111112
}
112113
}
113-
} else {
114+
}
115+
116+
if (use_default) {
114117
mac[0] = 0x18;
115118
mac[1] = 0xFE;
116119
mac[2] = 0x34;

0 commit comments

Comments
 (0)