Max OS 0.3
Loading...
Searching...
No Matches
MaxOS::drivers::ethernet::EthernetDriver Class Reference

Driver for the Ethernet Controller, manages the sending and receiving of data, the mac address, and the events. More...

#include <ethernet.h>

Inheritance diagram for MaxOS::drivers::ethernet::EthernetDriver:
MaxOS::drivers::Driver MaxOS::common::EventManager< EthernetDriverEvents > MaxOS::drivers::ethernet::AMD_AM79C973 MaxOS::drivers::ethernet::IntelI217

Public Member Functions

virtual MediaAccessControlAddress get_media_access_control_address ()
 Get the MAC address.
 
void send (uint8_t *buffer, uint32_t size)
 send data to the network via the driver backend
 
- Public Member Functions inherited from MaxOS::drivers::Driver
virtual void activate ()
 Activate the driver.
 
virtual void deactivate ()
 Deactivate the driver.
 
virtual void initialise ()
 Initialise the driver.
 
virtual uint32_t reset ()
 Reset the driver.
 
virtual string vendor_name ()
 Get who created the device.
 
virtual string device_name ()
 Get the device name of the driver.
 
- Public Member Functions inherited from MaxOS::common::EventManager< EthernetDriverEvents >
void connect_event_handler (EventHandler< EthernetDriverEvents > *handler)
 connect an event handler to the event manager if it is not already connected
 
void disconnect_event_handler (EventHandler< EthernetDriverEvents > *handler)
 disconnect an event handler from the event manager if it is connected
 
Vector< Event< EthernetDriverEvents > * > raise_event (Event< EthernetDriverEvents > *event)
 Calls the on_event function of all the event m_handlers connected to the event manager and returns a list of the results.
 

Static Public Member Functions

static MediaAccessControlAddress create_media_access_control_address (uint8_t digit1, uint8_t digit2, uint8_t digit3, uint8_t digit4, uint8_t digit5, uint8_t digit6)
 Create a Media Access Control Address.
 

Protected Member Functions

virtual void do_send (uint8_t *buffer, uint32_t size)
 (Device Side) send the data
 
void fire_data_received (uint8_t *buffer, uint32_t size)
 Handle the recieved data.
 
void fire_data_sent (uint8_t *buffer, uint32_t size)
 send data
 

Additional Inherited Members

- Protected Attributes inherited from MaxOS::common::EventManager< EthernetDriverEvents >
Vector< EventHandler< EthernetDriverEvents > * > m_handlers
 

Detailed Description

Driver for the Ethernet Controller, manages the sending and receiving of data, the mac address, and the events.

Definition at line 89 of file ethernet.h.

Member Function Documentation

◆ create_media_access_control_address()

MediaAccessControlAddress EthernetDriver::create_media_access_control_address ( uint8_t  digit1,
uint8_t  digit2,
uint8_t  digit3,
uint8_t  digit4,
uint8_t  digit5,
uint8_t  digit6 
)
static

Create a Media Access Control Address.

Parameters
digit1The m_first_memory_chunk digit
digit2The second digit
digit3The third digit
digit4The fourth digit
digit5The fifth digit
digit6The last digit
Returns
The MAC address

Definition at line 165 of file ethernet.cpp.

165 {
166 return // digit6 is the most significant byte
167 (uint64_t) digit6 << 40
168 | (uint64_t) digit5 << 32
169 | (uint64_t) digit4 << 24
170 | (uint64_t) digit3 << 16
171 | (uint64_t) digit2 << 8
172 | (uint64_t) digit1;
173}
Stores the left, top, width and height of a rectangle.
Definition rectangle.h:22

Referenced by MaxOS::drivers::ethernet::IntelI217::IntelI217().

◆ do_send()

void EthernetDriver::do_send ( uint8_t buffer,
uint32_t  size 
)
protectedvirtual

(Device Side) send the data

Parameters
bufferThe buffer to handle
sizeThe size of the buffer

Reimplemented in MaxOS::drivers::ethernet::AMD_AM79C973, and MaxOS::drivers::ethernet::IntelI217.

Definition at line 113 of file ethernet.cpp.

113 {
114}

Referenced by send().

◆ fire_data_received()

void EthernetDriver::fire_data_received ( uint8_t buffer,
uint32_t  size 
)
protected

Handle the recieved data.

Parameters
bufferThe buffer to handle
sizeThe size of the buffer

Definition at line 122 of file ethernet.cpp.

122 {
123
124 // Raise the event
126 raise_event(new DataReceivedEvent(buffer, size));
127
128 // Loop through the events
129 for (auto &value : values) {
130 switch (value->type) {
131 case EthernetDriverEvents::DATA_RECEIVED:
132 if (value->return_value.bool_value)
133 send(buffer, size);
134 break;
135
136 default:
137 break;
138 }
139 }
140}
Vector< Event< EthernetDriverEvents > * > raise_event(Event< EthernetDriverEvents > *event)
Calls the on_event function of all the event m_handlers connected to the event manager and returns a ...
Event that is triggered when data is received, holds the buffer and size of the data.
Definition ethernet.h:61
void send(uint8_t *buffer, uint32_t size)
send data to the network via the driver backend
Definition ethernet.cpp:99

References MaxOS::common::EventManager< EthernetDriverEvents >::raise_event(), and send().

◆ fire_data_sent()

void EthernetDriver::fire_data_sent ( uint8_t buffer,
uint32_t  size 
)
protected

send data

Parameters
bufferThe buffer to send
sizeThe size of the buffer

Definition at line 148 of file ethernet.cpp.

148 {
149 raise_event(new DataSentEvent(buffer, size));
150}
Event that is triggered when data is sent, holds the buffer and size of the data.
Definition ethernet.h:49

References MaxOS::common::EventManager< EthernetDriverEvents >::raise_event().

◆ get_media_access_control_address()

MediaAccessControlAddress EthernetDriver::get_media_access_control_address ( )
virtual

◆ send()

void EthernetDriver::send ( uint8_t buffer,
uint32_t  size 
)

send data to the network via the driver backend

Parameters
bufferThe buffer to send
sizeThe size of the buffer

Definition at line 99 of file ethernet.cpp.

99 {
100
101 // Raise the event
102 raise_event(new BeforeSendEvent(buffer, size));
103
104 do_send(buffer, size);
105}
Event that is triggered before data is sent, holds the buffer and size of the data.
Definition ethernet.h:37
virtual void do_send(uint8_t *buffer, uint32_t size)
(Device Side) send the data
Definition ethernet.cpp:113

References do_send(), and MaxOS::common::EventManager< EthernetDriverEvents >::raise_event().

Referenced by fire_data_received(), and MaxOS::net::EthernetFrameHandler::send_ethernet_frame().


The documentation for this class was generated from the following files: