-
Notifications
You must be signed in to change notification settings - Fork 7.6k
Added example 'get mac address' #8618
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
me-no-dev
merged 16 commits into
espressif:master
from
dpnebert:Added-example-'GetMacAddress'
Nov 29, 2023
Merged
Changes from 2 commits
Commits
Show all changes
16 commits
Select commit
Hold shift + click to select a range
28b8dc5
Example sketch prints MAC for different interfaces
dpnebert b9b46e2
Update README.md to include 'MacAddress'
dpnebert de21f37
Add files via upload
dpnebert cb0da30
Delete libraries/ESP32/examples/MacAddress/GetMacAddress.ino
dpnebert ed84ff8
Delete libraries/ESP32/examples/MacAddress/GetMacAddress/GetMacAddres…
dpnebert d0eac99
Delete libraries/ESP32/examples/MacAddress/GetMacAddress/MacAddress d…
dpnebert 3290c9a
Add files via upload
dpnebert 54d4f8f
Merge branch 'master' into Added-example-'GetMacAddress'
dpnebert 9ba901d
Add files via upload
dpnebert 9c07d2c
Merge branch 'master' into Added-example-'GetMacAddress'
dpnebert 814ddad
Merge branch 'master' into Added-example-'GetMacAddress'
dpnebert e3cbe06
Merge branch 'master' into Added-example-'GetMacAddress'
P-R-O-C-H-Y b5ee570
Merge branch 'master' into Added-example-'GetMacAddress'
SuGlider 469f9a8
Adds necessary MAC header file
SuGlider 2e03b0f
Reverting - moving to the sketch
SuGlider 82fbb88
Adds include with esp_mac_type_t values
SuGlider File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
/* | ||
* GetMacAddress | ||
* | ||
* This sketch prints out the MAC addresses for different interfaces. | ||
* | ||
* Written by: Daniel Nebert | ||
* | ||
* The first printed MAC address is obtained by calling 'esp_efuse_mac_get_default' | ||
* (https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/misc_system_api.html#_CPPv425esp_efuse_mac_get_defaultP7uint8_t) | ||
* which returns base MAC address which is factory-programmed by Espressif in EFUSE. | ||
* | ||
* The remaining printed MAC addresses is obtained by calling 'esp_read_mac' | ||
* (https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/misc_system_api.html#_CPPv412esp_read_macP7uint8_t14esp_mac_type_t) | ||
* and passing in the 'esp_mac_type_t' type. | ||
* (https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/misc_system_api.html#esp__mac_8h_1a1b19aca597277a2179682869c140477a) | ||
* | ||
|
||
enum esp_mac_type_t | ||
|
||
Values: | ||
|
||
enumerator ESP_MAC_WIFI_STA | ||
MAC for WiFi Station (6 bytes) | ||
|
||
enumerator ESP_MAC_WIFI_SOFTAP | ||
MAC for WiFi Soft-AP (6 bytes) | ||
|
||
enumerator ESP_MAC_BT | ||
MAC for Bluetooth (6 bytes) | ||
|
||
enumerator ESP_MAC_ETH | ||
MAC for Ethernet (6 bytes) | ||
|
||
enumerator ESP_MAC_IEEE802154 | ||
if CONFIG_SOC_IEEE802154_SUPPORTED=y, MAC for IEEE802154 (8 bytes) | ||
|
||
enumerator ESP_MAC_BASE | ||
Base MAC for that used for other MAC types (6 bytes) | ||
|
||
enumerator ESP_MAC_EFUSE_FACTORY | ||
MAC_FACTORY eFuse which was burned by Espressif in production (6 bytes) | ||
|
||
enumerator ESP_MAC_EFUSE_CUSTOM | ||
MAC_CUSTOM eFuse which was can be burned by customer (6 bytes) | ||
|
||
enumerator ESP_MAC_EFUSE_EXT | ||
if CONFIG_SOC_IEEE802154_SUPPORTED=y, MAC_EXT eFuse which is used as an extender for IEEE802154 MAC (2 bytes) | ||
|
||
*/ | ||
|
||
void setup() { | ||
Serial.begin(115200); | ||
vTaskDelay(250 / portTICK_PERIOD_MS ); | ||
|
||
Serial.println("Interface\t\t\t\t\t\tMAC address (6 bytes, 4 universally administered, default)"); | ||
Serial.print("Wi-Fi Station (using 'esp_efuse_mac_get_default')\t"); Serial.println(getDefaultMacAddress().c_str()); | ||
Serial.print("WiFi Station (using 'esp_read_mac')\t\t\t"); Serial.println(getInterfaceMacAddress(ESP_MAC_WIFI_STA).c_str()); | ||
Serial.print("WiFi Soft-AP (using 'esp_read_mac')\t\t\t"); Serial.println(getInterfaceMacAddress(ESP_MAC_WIFI_SOFTAP).c_str()); | ||
Serial.print("Bluetooth (using 'esp_read_mac')\t\t\t"); Serial.println(getInterfaceMacAddress(ESP_MAC_BT).c_str()); | ||
Serial.print("Ethernet (using 'esp_read_mac')\t\t\t\t"); Serial.println(getInterfaceMacAddress(ESP_MAC_ETH).c_str()); | ||
} | ||
|
||
void loop() { vTaskDelete(NULL); } | ||
|
||
std::string getDefaultMacAddress() { | ||
std::string mac = ""; | ||
unsigned char mac_base[6] = {0}; | ||
if(esp_efuse_mac_get_default(mac_base) == ESP_OK) { | ||
char buffer[18]; // 6*2 characters for hex + 5 characters for colons + 1 character for null terminator | ||
sprintf(buffer, "%02X:%02X:%02X:%02X:%02X:%02X", mac_base[0], mac_base[1], mac_base[2], mac_base[3], mac_base[4], mac_base[5]); | ||
mac = buffer; | ||
} | ||
return mac; | ||
} | ||
|
||
std::string getInterfaceMacAddress(esp_mac_type_t interface) { | ||
std::string mac = ""; | ||
unsigned char mac_base[6] = {0}; | ||
if(esp_read_mac(mac_base, interface) == ESP_OK) { | ||
char buffer[18]; // 6*2 characters for hex + 5 characters for colons + 1 character for null terminator | ||
sprintf(buffer, "%02X:%02X:%02X:%02X:%02X:%02X", mac_base[0], mac_base[1], mac_base[2], mac_base[3], mac_base[4], mac_base[5]); | ||
mac = buffer; | ||
} | ||
return mac; | ||
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.