05351dbf9d
ESP32 can sport up to 4 network interfaces: two 802.11 (station and ap), ethernet, and bluetooth. All of them derive from the same RDATA register in efuse block 0. However, in most cases, the last (sixth) octet will change like so: - 802.11 station: mac[5] += 0 - 802.11 ap: mac[5] += 1 - bluetooth: mac[5] += 2 - ethernet: mac[5] += 3 Read "Number of universally admnistered MAC address" section in esp-idf documentation[1] for more information. [1] https://docs.espressif.com/projects/esp-idf/en/latest/ Signed-off-by: Leandro Pereira <leandro@hardinfo.org>
27 lines
462 B
C
27 lines
462 B
C
/*
|
|
* Copyright (c) 2019 Leandro A. F. Pereira
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include <soc/efuse_reg.h>
|
|
|
|
#include <hwinfo.h>
|
|
#include <string.h>
|
|
|
|
ssize_t _impl_hwinfo_get_device_id(u8_t *buffer, size_t length)
|
|
{
|
|
uint32_t fuse_rdata[] = {
|
|
sys_read32(EFUSE_BLK0_RDATA1_REG),
|
|
sys_read32(EFUSE_BLK0_RDATA2_REG),
|
|
};
|
|
|
|
if (length > sizeof(fuse_rdata)) {
|
|
length = sizeof(fuse_rdata);
|
|
}
|
|
|
|
memcpy(buffer, fuse_rdata, length);
|
|
|
|
return length;
|
|
}
|