9 #include "NetMacros.hpp"
10 #include "NetClientDhcp.hpp"
18 NetDefs::MAC_ADDR Net::sMacAddr;
19 NetDefs::NET_CONFIG Net::sConfig;
24 void Net::init(
Rtos::PRIORITY priority,
size_t stackSize, NetMac* mac, LibDmem* mem) {
25 sTask =
new RtosTask(priority,
"NET", stackSize, run);
33 sMac->start(sMacAddr);
42 sMac->freeSentFrames();
44 NetDefs::FRAME* frame = sMac->getFrame();
47 switch (frame->types.mac.macHeader.type) {
48 case NetDefs::MAC_TYPE_ARP:
49 NetArp::processFrame(*frame, frame->types.arp.arpHeader);
51 case NetDefs::MAC_TYPE_IP:
52 NetIp::processFrame(*frame, frame->types.ip.ipHeader);
69 #if NET_CFG_USE_DHCP_CLIENT
72 NetClientDhcp::tick();
79 NetDefs::FRAME* Net::allocFrame(
size_t size) {
81 NetDefs::FRAME* frame = (NetDefs::FRAME*) sMem->alloc(size);
86 void Net::freeFrame(NetDefs::FRAME& frame) {
92 void* Net::resizeFrame(NetDefs::FRAME& frame,
size_t size) {
94 void* result = sMem->resize(&frame, size);
99 void* Net::resizeFrameLeft(NetDefs::FRAME& frame,
size_t left) {
101 void* result = sMem->resizeLeft(&frame, left);
106 void Net::putHeader(NetDefs::FRAME& frame,
const NetDefs::MAC_ADDR& dst, NetDefs::MAC_TYPE type) {
107 sMac->putHeader(frame, dst, type);
110 void Net::flush(NetDefs::FRAME& frame,
size_t len,
bool discardable) {
111 sMac->flush(frame, len, discardable);
114 NetDefs::NET_CONFIG& Net::getConfig() {
118 size_t Net::getTotalMemory() {
119 return sMem->getTotalMemory();
122 size_t Net::getFreeMemory() {
123 return sMem->getFreeMemory();
126 unsigned int Net::getBlockCount() {
127 return sMem->getBlockCount();
130 bool Net::onMacEventInterrupt() {
131 return sSemaEvent.giveFromInt();