Added espnetworkutils

This commit is contained in:
2021-02-24 13:21:49 +01:00
parent 81700c2bcc
commit 212b12e403
4 changed files with 31 additions and 4 deletions

View File

@@ -1,6 +1,7 @@
set(headers set(headers
src/asyncudplistener.h src/asyncudplistener.h
src/espcrc32builder.h src/espcrc32builder.h
src/espnetworkutils.h
src/esprandom.h src/esprandom.h
src/lockhelper.h src/lockhelper.h
src/lockingqueue.h src/lockingqueue.h

View File

@@ -111,7 +111,7 @@ UdpPacketWrapper::UdpPacketWrapper(pbuf *pb, const ip_addr_t *raddr, uint16_t rp
std::memcpy(&_localIp.u_addr.ip6.addr, (uint8_t *)ip6hdr->dest.addr, 16); std::memcpy(&_localIp.u_addr.ip6.addr, (uint8_t *)ip6hdr->dest.addr, 16);
std::memcpy(&_remoteIp.u_addr.ip6.addr, (uint8_t *)ip6hdr->src.addr, 16); std::memcpy(&_remoteIp.u_addr.ip6.addr, (uint8_t *)ip6hdr->src.addr, 16);
} }
std::memcpy(_remoteMac, eth->src.addr, 6); _remoteMac = mac_t{eth->src.addr};
struct netif *netif{NULL}; struct netif *netif{NULL};
void *nif{NULL}; void *nif{NULL};

View File

@@ -15,6 +15,7 @@
// local includes // local includes
#include "cppmacros.h" #include "cppmacros.h"
#include "delayedconstruction.h" #include "delayedconstruction.h"
#include "espnetworkutils.h"
#include "wrappers/queue.h" #include "wrappers/queue.h"
namespace espcpputils { namespace espcpputils {
@@ -25,7 +26,7 @@ class UdpPacketWrapper
public: public:
UdpPacketWrapper(pbuf *pb, const ip_addr_t *addr, uint16_t port, struct netif * netif); UdpPacketWrapper(pbuf *pb, const ip_addr_t *addr, uint16_t port, struct netif * netif);
const uint8_t * data() const { return _data; } const uint8_t *data() const { return _data; }
size_t length() const { return _len; } size_t length() const { return _len; }
bool isBroadcast() const bool isBroadcast() const
{ {
@@ -71,7 +72,7 @@ public:
uint16_t remotePort() const { return _remotePort; } uint16_t remotePort() const { return _remotePort; }
void remoteMac(uint8_t * mac) const { std::memcpy(mac, _remoteMac, 6); } mac_t remoteMac() const { return _remoteMac; }
private: private:
const pbuf *_pb; const pbuf *_pb;
@@ -80,7 +81,7 @@ private:
uint16_t _localPort; uint16_t _localPort;
ip_addr_t _remoteIp; ip_addr_t _remoteIp;
uint16_t _remotePort; uint16_t _remotePort;
uint8_t _remoteMac[6]; mac_t _remoteMac;
const uint8_t *_data; const uint8_t *_data;
size_t _len; size_t _len;
size_t _index; size_t _index;

25
src/espnetworkutils.h Normal file
View File

@@ -0,0 +1,25 @@
#pragma once
// system includes
#include <array>
#include <string>
namespace espcpputils {
class mac_t : public std::array<uint8_t, 6>
{
public:
using std::array<uint8_t, 6>::array;
explicit mac_t(const uint8_t *ptr)
{
std::copy(ptr, ptr+6, std::begin(*this));
}
std::string toString() const
{
char macStr[18]{0};
snprintf(macStr, 18, "%02X:%02X:%02X:%02X:%02X:%02X", at(0), at(1), at(2), at(3), at(4), at(5));
return std::string{macStr};
}
};
} // namespace