@@ -36,7 +36,7 @@ esp_err_t esp_base_mac_addr_set(uint8_t *mac)
36
36
{
37
37
if (mac == NULL ) {
38
38
ESP_LOGE (TAG , "Base MAC address is NULL" );
39
- abort () ;
39
+ return ESP_ERR_INVALID_ARG ;
40
40
}
41
41
42
42
memcpy (base_mac_addr , mac , 6 );
@@ -65,6 +65,7 @@ esp_err_t esp_efuse_mac_get_default(uint8_t* mac)
65
65
uint8_t efuse_crc = 0 ;
66
66
uint8_t calc_crc = 0 ;
67
67
uint8_t version ;
68
+ uint8_t use_default = 1 ;
68
69
69
70
efuse [0 ] = REG_READ (EFUSE_DATA0_REG );
70
71
efuse [1 ] = REG_READ (EFUSE_DATA1_REG );
@@ -82,35 +83,37 @@ esp_err_t esp_efuse_mac_get_default(uint8_t* mac)
82
83
mac [1 ] = efuse [3 ] >> 8 ;
83
84
mac [2 ] = efuse [3 ];
84
85
86
+ use_default = 0 ;
87
+
85
88
tmp_mac [0 ] = mac [2 ];
86
89
tmp_mac [1 ] = mac [1 ];
87
90
tmp_mac [2 ] = mac [0 ];
88
91
89
92
efuse_crc = efuse [2 ] >> 24 ;
90
93
calc_crc = esp_crc8 (tmp_mac , 3 );
91
94
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 ;
96
97
97
- version = (efuse [1 ] >> EFUSE_VERSION_S ) & EFUSE_VERSION_V ;
98
+ if (!use_default ) {
99
+ version = (efuse [1 ] >> EFUSE_VERSION_S ) & EFUSE_VERSION_V ;
98
100
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 ;
104
106
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 );
107
109
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 ;
111
112
}
112
113
}
113
- } else {
114
+ }
115
+
116
+ if (use_default ) {
114
117
mac [0 ] = 0x18 ;
115
118
mac [1 ] = 0xFE ;
116
119
mac [2 ] = 0x34 ;
0 commit comments