![]() |
Max OS 0.3
|
Handles incoming Ethernet Frames and routes them to the appropriate payload handlers. More...
#include <ethernetframe.h>
Public Member Functions | |
| EthernetFrameHandler (drivers::ethernet::EthernetDriver *driver, common::OutputStream *error_messages) | |
| Construct a new Ether Frame Handler object. | |
| drivers::ethernet::MediaAccessControlAddress | get_mac () |
| Get the MAC address of this device. | |
| bool | data_received (uint8_t *data, uint32_t size) override |
| Handle the received packet. | |
| void | connect_handler (EthernetFramePayloadHandler *handler) |
| connect a handler to the frame handler | |
| void | send_ethernet_frame (uint64_t destination_mac, uint16_t frame_type, uint8_t *data, uint32_t size) |
| send an packet via the backend driver | |
Public Member Functions inherited from MaxOS::drivers::ethernet::EthernetDriverEventHandler | |
| EthernetDriverEventHandler () | |
| __EVENT HANDLER___ | |
| common::Event< EthernetDriverEvents > * | on_event (common::Event< EthernetDriverEvents > *event) override |
| Handle an event. | |
| virtual void | before_send (uint8_t *buffer, uint32_t size) |
| Handle before send event. | |
| virtual void | data_sent (uint8_t *buffer, uint32_t size) |
| Handle data sent event. | |
Public Member Functions inherited from MaxOS::common::EventHandler< EthernetDriverEvents > | |
| virtual Event< EthernetDriverEvents > * | on_event (Event< EthernetDriverEvents > *event) |
| This function is called when an event is raised. | |
Protected Attributes | |
| common::Map< uint16_t, EthernetFramePayloadHandler * > | frame_handlers |
| The map of frame handlers by type. | |
| drivers::ethernet::EthernetDriver * | ethernet_driver |
| The driver this frame handler is using. | |
| common::OutputStream * | error_messages |
| The output stream for error messages. | |
Handles incoming Ethernet Frames and routes them to the appropriate payload handlers.
Definition at line 76 of file ethernetframe.h.
| EthernetFrameHandler::EthernetFrameHandler | ( | drivers::ethernet::EthernetDriver * | driver, |
| common::OutputStream * | error_messages | ||
| ) |
Construct a new Ether Frame Handler object.
| driver | The backend ethernet driver |
| error_messages | The output stream for error messages |
Definition at line 73 of file ethernetframe.cpp.
References error_messages, and ethernet_driver.
| void EthernetFrameHandler::connect_handler | ( | EthernetFramePayloadHandler * | handler | ) |
connect a handler to the frame handler
| handler | The handler to connect |
Definition at line 164 of file ethernetframe.cpp.
References frame_handlers.
Referenced by MaxOS::net::EthernetFramePayloadHandler::EthernetFramePayloadHandler().
Handle the received packet.
| buffer | the buffer with the received data |
| size | the size of the received data |
Reimplemented from MaxOS::drivers::ethernet::EthernetDriverEventHandler.
Definition at line 104 of file ethernetframe.cpp.
References error_messages, ethernet_driver, frame_handlers, MaxOS::drivers::ethernet::EthernetDriver::get_media_access_control_address(), MaxOS::common::OutputStream::write(), and MaxOS::common::OutputStream::write_hex().
| drivers::ethernet::MediaAccessControlAddress EthernetFrameHandler::get_mac | ( | ) |
Get the MAC address of this device.
Definition at line 90 of file ethernetframe.cpp.
References ethernet_driver, and MaxOS::drivers::ethernet::EthernetDriver::get_media_access_control_address().
Referenced by MaxOS::net::InternetProtocolHandler::get_media_access_control_address(), and MaxOS::net::AddressResolutionProtocol::request_mac_address().
| void EthernetFrameHandler::send_ethernet_frame | ( | uint64_t | destination_mac, |
| uint16_t | frame_type, | ||
| uint8_t * | data, | ||
| uint32_t | size | ||
| ) |
send an packet via the backend driver
| destination_mac | the destination MAC address |
| frame_type | the type of the protocol |
| data | the data to send |
| size | the size of the payload |
Definition at line 182 of file ethernetframe.cpp.
References error_messages, ethernet_driver, MaxOS::drivers::ethernet::EthernetDriver::get_media_access_control_address(), MaxOS::memory::MemoryManager::kfree(), MaxOS::memory::MemoryManager::kmalloc(), MaxOS::drivers::ethernet::EthernetDriver::send(), and MaxOS::common::OutputStream::write().
Referenced by MaxOS::net::EthernetFramePayloadHandler::send(), and MaxOS::net::InternetProtocolHandler::send_internet_protocol_packet().
|
protected |
The output stream for error messages.
Definition at line 82 of file ethernetframe.h.
Referenced by data_received(), EthernetFrameHandler(), and send_ethernet_frame().
|
protected |
The driver this frame handler is using.
Definition at line 81 of file ethernetframe.h.
Referenced by data_received(), EthernetFrameHandler(), get_mac(), and send_ethernet_frame().
|
protected |
The map of frame handlers by type.
Definition at line 79 of file ethernetframe.h.
Referenced by connect_handler(), and data_received().