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
src/asyncudplistener.h
src/espcrc32builder.h
src/espnetworkutils.h
src/esprandom.h
src/lockhelper.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(&_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};
void *nif{NULL};

View File

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