Mbed OS Reference
Loading...
Searching...
No Matches
EMAC Class Referenceabstract

This interface should be used to abstract low level access to networking hardware All operations receive a void * hardware pointer which an EMAC device provides when it is registered with a stack. More...

#include <EMAC.h>

Inheritance diagram for EMAC:
EMW3080B_EMAC WICED_EMAC

Public Types

typedef mbed::Callback< void(emac_mem_buf_t *buf)> emac_link_input_cb_t
 Callback to be register with EMAC interface and to be called for received packets. More...
 
typedef mbed::Callback< void(bool up)> emac_link_state_change_cb_t
 Callback to be register with EMAC interface and to be called for link status changes. More...
 

Public Member Functions

virtual uint32_t get_mtu_size () const =0
 Return maximum transmission unit. More...
 
virtual uint32_t get_align_preference () const =0
 Gets memory buffer alignment preference. More...
 
virtual void get_ifname (char *name, uint8_t size) const =0
 Return interface name. More...
 
virtual uint8_t get_hwaddr_size () const =0
 Returns size of the underlying interface HW address size. More...
 
virtual bool get_hwaddr (uint8_t *addr) const =0
 Return interface-supplied HW address. More...
 
virtual void set_hwaddr (const uint8_t *addr)=0
 Set HW address for interface. More...
 
virtual bool link_out (emac_mem_buf_t *buf)=0
 Sends the packet over the link. More...
 
virtual bool power_up ()=0
 Initializes the HW. More...
 
virtual void power_down ()=0
 Deinitializes the HW. More...
 
virtual void set_link_input_cb (emac_link_input_cb_t input_cb)=0
 Sets a callback that needs to be called for packets received for that interface. More...
 
virtual void set_link_state_cb (emac_link_state_change_cb_t state_cb)=0
 Sets a callback that needs to be called on link status changes for given interface. More...
 
virtual void add_multicast_group (const uint8_t *address)=0
 Add device to a multicast group. More...
 
virtual void remove_multicast_group (const uint8_t *address)=0
 Remove device from a multicast group. More...
 
virtual void set_all_multicast (bool all)=0
 Request reception of all multicast packets. More...
 
virtual void set_memory_manager (EMACMemoryManager &mem_mngr)=0
 Sets memory manager that is used to handle memory buffers. More...
 

Static Public Member Functions

static EMACget_default_instance ()
 Return the default on-board EMAC. More...
 

Detailed Description

This interface should be used to abstract low level access to networking hardware All operations receive a void * hardware pointer which an EMAC device provides when it is registered with a stack.

Definition at line 33 of file EMAC.h.

Member Typedef Documentation

◆ emac_link_input_cb_t

typedef mbed::Callback<void (emac_mem_buf_t *buf)> emac_link_input_cb_t

Callback to be register with EMAC interface and to be called for received packets.


buf : Received data

Definition at line 49 of file EMAC.h.

◆ emac_link_state_change_cb_t

Callback to be register with EMAC interface and to be called for link status changes.


up : Link status

Definition at line 57 of file EMAC.h.

Member Function Documentation

◆ get_default_instance()

static EMAC & get_default_instance ( )
static

Return the default on-board EMAC.

Returns the default on-board EMAC - this will be target-specific, and may not be available on all targets.

◆ get_mtu_size()

virtual uint32_t get_mtu_size ( ) const
pure virtual

Return maximum transmission unit.

Returns
MTU in bytes

Implemented in EMW3080B_EMAC, and WICED_EMAC.

◆ get_align_preference()

virtual uint32_t get_align_preference ( ) const
pure virtual

Gets memory buffer alignment preference.

Gets preferred memory buffer alignment of the EMAC device. IP stack may or may not align link out memory buffer chains using the alignment.

Returns
Memory alignment requirement in bytes

Implemented in EMW3080B_EMAC, and WICED_EMAC.

◆ get_ifname()

virtual void get_ifname ( char *  name,
uint8_t  size 
) const
pure virtual

Return interface name.

Parameters
namePointer to where the name should be written
sizeMaximum number of character to copy

Implemented in EMW3080B_EMAC, and WICED_EMAC.

◆ get_hwaddr_size()

virtual uint8_t get_hwaddr_size ( ) const
pure virtual

Returns size of the underlying interface HW address size.

Returns
HW address size in bytes

Implemented in EMW3080B_EMAC, and WICED_EMAC.

◆ get_hwaddr()

virtual bool get_hwaddr ( uint8_t *  addr) const
pure virtual

Return interface-supplied HW address.

Copies HW address to provided memory, addr has to be of correct size see get_hwaddr_size

HW address need not be provided if this interface does not have its own HW address configuration; stack will choose address from central system configuration if the function returns false and does not write to addr.

Parameters
addrHW address for underlying interface
Returns
true if HW address is available

Implemented in EMW3080B_EMAC, and WICED_EMAC.

◆ set_hwaddr()

virtual void set_hwaddr ( const uint8_t *  addr)
pure virtual

Set HW address for interface.

Provided address has to be of correct size, see get_hwaddr_size

Called to set the MAC address to actually use - if get_hwaddr is provided the stack would normally use that, but it could be overridden, for example for test purposes.

Parameters
addrAddress to be set

Implemented in EMW3080B_EMAC, and WICED_EMAC.

◆ link_out()

virtual bool link_out ( emac_mem_buf_t *  buf)
pure virtual

Sends the packet over the link.

That can not be called from an interrupt context.

Parameters
bufPacket to be send
Returns
True if the packet was send successfully, False otherwise

Implemented in EMW3080B_EMAC, and WICED_EMAC.

◆ power_up()

virtual bool power_up ( )
pure virtual

Initializes the HW.

Returns
True on success, False in case of an error.

Implemented in EMW3080B_EMAC, and WICED_EMAC.

◆ power_down()

virtual void power_down ( )
pure virtual

Deinitializes the HW.

Implemented in EMW3080B_EMAC, and WICED_EMAC.

◆ set_link_input_cb()

virtual void set_link_input_cb ( emac_link_input_cb_t  input_cb)
pure virtual

Sets a callback that needs to be called for packets received for that interface.

Parameters
input_cbFunction to be register as a callback

Implemented in EMW3080B_EMAC, and WICED_EMAC.

◆ set_link_state_cb()

virtual void set_link_state_cb ( emac_link_state_change_cb_t  state_cb)
pure virtual

Sets a callback that needs to be called on link status changes for given interface.

Parameters
state_cbFunction to be register as a callback

Implemented in EMW3080B_EMAC, and WICED_EMAC.

◆ add_multicast_group()

virtual void add_multicast_group ( const uint8_t *  address)
pure virtual

Add device to a multicast group.

Parameters
addressA multicast group hardware address

Implemented in EMW3080B_EMAC, and WICED_EMAC.

◆ remove_multicast_group()

virtual void remove_multicast_group ( const uint8_t *  address)
pure virtual

Remove device from a multicast group.

Parameters
addressA multicast group hardware address

Implemented in EMW3080B_EMAC, and WICED_EMAC.

◆ set_all_multicast()

virtual void set_all_multicast ( bool  all)
pure virtual

Request reception of all multicast packets.

Parameters
allTrue to receive all multicasts False to receive only multicasts addressed to specified groups

Implemented in EMW3080B_EMAC, and WICED_EMAC.

◆ set_memory_manager()

virtual void set_memory_manager ( EMACMemoryManager mem_mngr)
pure virtual

Sets memory manager that is used to handle memory buffers.

Parameters
mem_mngrPointer to memory manager

Implemented in EMW3080B_EMAC, and WICED_EMAC.