idfxx 1.0.0
Modern C++23 components for ESP-IDF
Loading...
Searching...
No Matches

MAC address value type, reading, and configuration. More...

Namespaces

namespace  idfxx
 

Classes

class  idfxx::mac_address
 A MAC-48 (6-byte) hardware address. More...
 

Enumerations

enum class  idfxx::mac_type : int {
  idfxx::mac_type::wifi_sta = 0 ,
  idfxx::mac_type::wifi_softap = 1 ,
  idfxx::mac_type::bt = 2 ,
  idfxx::mac_type::ethernet = 3 ,
  idfxx::mac_type::base = 5 ,
  idfxx::mac_type::efuse_factory = 6 ,
  idfxx::mac_type::efuse_custom = 7
}
 Identifies which network interface a MAC address belongs to. More...
 

Functions

std::string idfxx::to_string (const mac_address &addr)
 Returns a colon-separated string representation of a MAC address.
 
mac_address idfxx::read_mac (mac_type type)
 Reads the MAC address for a specific interface.
 
mac_address idfxx::base_mac_address ()
 Returns the base MAC address.
 
result< mac_addressidfxx::try_read_mac (mac_type type)
 Reads the MAC address for a specific interface.
 
result< mac_addressidfxx::try_base_mac_address ()
 Returns the base MAC address.
 
void idfxx::set_base_mac_address (const mac_address &addr)
 Sets the base MAC address.
 
void idfxx::set_interface_mac_address (const mac_address &addr, mac_type type)
 Sets the MAC address for a specific interface.
 
result< voididfxx::try_set_base_mac_address (const mac_address &addr)
 Sets the base MAC address.
 
result< voididfxx::try_set_interface_mac_address (const mac_address &addr, mac_type type)
 Sets the MAC address for a specific interface.
 
result< mac_addressidfxx::try_default_mac ()
 Returns the factory MAC address from eFuse.
 
result< mac_addressidfxx::try_custom_mac ()
 Returns the custom MAC address from eFuse.
 
result< mac_addressidfxx::try_derive_local_mac (const mac_address &universal_mac)
 Derives a local MAC address from a universal MAC address.
 

Detailed Description

MAC address value type, reading, and configuration.

Enumeration Type Documentation

◆ mac_type

Identifies which network interface a MAC address belongs to.

Enumerator
wifi_sta 

WiFi station interface.

wifi_softap 

WiFi soft-AP interface.

bt 

Bluetooth interface.

ethernet 

Ethernet interface.

base 

Base (factory) MAC address.

efuse_factory 

Factory MAC stored in eFuse.

efuse_custom 

Custom MAC stored in eFuse.

Definition at line 33 of file mac.hpp.

Function Documentation

◆ base_mac_address()

mac_address idfxx::base_mac_address ( )

Returns the base MAC address.

The base MAC address is used to derive per-interface MAC addresses.

Returns
The base MAC address.
Note
Only available when CONFIG_COMPILER_CXX_EXCEPTIONS is enabled in menuconfig.
Exceptions
std::system_erroron failure.

◆ read_mac()

mac_address idfxx::read_mac ( mac_type  type)

Reads the MAC address for a specific interface.

Parameters
typeThe interface type to read.
Returns
The MAC address.
Note
Only available when CONFIG_COMPILER_CXX_EXCEPTIONS is enabled in menuconfig.
Exceptions
std::system_erroron failure.

◆ set_base_mac_address()

void idfxx::set_base_mac_address ( const mac_address addr)

Sets the base MAC address.

The base MAC address is used to derive per-interface MAC addresses. This overrides the factory-programmed address until the next reboot.

Parameters
addrThe new base MAC address.
Note
Only available when CONFIG_COMPILER_CXX_EXCEPTIONS is enabled in menuconfig.
Exceptions
std::system_erroron failure.

◆ set_interface_mac_address()

void idfxx::set_interface_mac_address ( const mac_address addr,
mac_type  type 
)

Sets the MAC address for a specific interface.

Parameters
addrThe MAC address to set.
typeThe interface type.
Note
Only available when CONFIG_COMPILER_CXX_EXCEPTIONS is enabled in menuconfig.
Exceptions
std::system_erroron failure.

◆ to_string()

std::string idfxx::to_string ( const mac_address addr)

Returns a colon-separated string representation of a MAC address.

Parameters
addrThe MAC address to convert.
Returns
A string in "AA:BB:CC:DD:EE:FF" format.

◆ try_base_mac_address()

result< mac_address > idfxx::try_base_mac_address ( )

Returns the base MAC address.

The base MAC address is used to derive per-interface MAC addresses.

Returns
The base MAC address, or an error.

◆ try_custom_mac()

result< mac_address > idfxx::try_custom_mac ( )

Returns the custom MAC address from eFuse.

Returns
The custom MAC address, or an error.
Return values
idfxx::errc::invalid_macif no custom MAC has been programmed.

◆ try_default_mac()

result< mac_address > idfxx::try_default_mac ( )

Returns the factory MAC address from eFuse.

Returns
The factory MAC address, or an error.

◆ try_derive_local_mac()

result< mac_address > idfxx::try_derive_local_mac ( const mac_address universal_mac)

Derives a local MAC address from a universal MAC address.

Creates a locally-administered unicast MAC address by modifying the U/L bit and adjusting the last byte.

Parameters
universal_macThe universal MAC address to derive from.
Returns
The derived local MAC address, or an error.

◆ try_read_mac()

result< mac_address > idfxx::try_read_mac ( mac_type  type)

Reads the MAC address for a specific interface.

Parameters
typeThe interface type to read.
Returns
The MAC address, or an error.
Return values
idfxx::errc::invalid_argif the type is not valid.

◆ try_set_base_mac_address()

result< void > idfxx::try_set_base_mac_address ( const mac_address addr)

Sets the base MAC address.

The base MAC address is used to derive per-interface MAC addresses. This overrides the factory-programmed address until the next reboot.

Parameters
addrThe new base MAC address.
Returns
Success, or an error.
Return values
idfxx::errc::invalid_argif the address is invalid.

◆ try_set_interface_mac_address()

result< void > idfxx::try_set_interface_mac_address ( const mac_address addr,
mac_type  type 
)

Sets the MAC address for a specific interface.

Parameters
addrThe MAC address to set.
typeThe interface type.
Returns
Success, or an error.
Return values
idfxx::errc::invalid_argif the address or type is invalid.