initial commit
This commit is contained in:
73
net/MAC.h
Normal file
73
net/MAC.h
Normal file
@@ -0,0 +1,73 @@
|
||||
#ifndef MAC_H
|
||||
#define MAC_H
|
||||
|
||||
#include <string>
|
||||
#include <cstdint>
|
||||
#include <string.h>
|
||||
|
||||
namespace WiFiRaw {
|
||||
|
||||
struct MACAddress {
|
||||
|
||||
uint8_t a;
|
||||
uint8_t b;
|
||||
uint8_t c;
|
||||
uint8_t d;
|
||||
uint8_t e;
|
||||
uint8_t f;
|
||||
|
||||
/** empty ctor */
|
||||
MACAddress() {;}
|
||||
|
||||
/** ctor from distinct values */
|
||||
MACAddress(const uint8_t a, const uint8_t b, const uint8_t c, const uint8_t d, const uint8_t e, const uint8_t f) :
|
||||
a(a), b(b), c(c), d(d), e(e), f(f) {;}
|
||||
|
||||
/** ctor from memory region */
|
||||
MACAddress(const uint8_t* data) {
|
||||
memcpy(this, data, 6);
|
||||
}
|
||||
|
||||
/** equal to the given mac? */
|
||||
bool operator == (const MACAddress& o) const {
|
||||
return (a == o.a) && (b == o.b) && (c == o.c) && (d == o.d) && (e == o.e) && (f == o.f);
|
||||
}
|
||||
|
||||
std::string asString() const {
|
||||
|
||||
std::string mac; mac.resize(17);
|
||||
|
||||
mac[0] = toHex(a >> 4);
|
||||
mac[1] = toHex(a >> 0);
|
||||
mac[2] = ':';
|
||||
mac[3] = toHex(b >> 4);
|
||||
mac[4] = toHex(b >> 0);
|
||||
mac[5] = ':';
|
||||
mac[6] = toHex(c >> 4);
|
||||
mac[7] = toHex(c >> 0);
|
||||
mac[8] = ':';
|
||||
mac[9] = toHex(d >> 4);
|
||||
mac[10] = toHex(d >> 0);
|
||||
mac[11] = ':';
|
||||
mac[12] = toHex(e >> 4);
|
||||
mac[13] = toHex(e >> 0);
|
||||
mac[14] = ':';
|
||||
mac[15] = toHex(f >> 4);
|
||||
mac[16] = toHex(f >> 0);
|
||||
|
||||
return mac;
|
||||
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
inline char toHex(uint8_t c) const {
|
||||
const uint8_t val = c & 0xF;
|
||||
return (val >= 10) ? ('A' + val - 10) : ('0' + val);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // MAC_H
|
||||
Reference in New Issue
Block a user