21
21
#include < WString.h>
22
22
23
23
// A class to make it easier to handle and pass around 6-byte BSSID and MAC addresses.
24
- class MacAddress {
24
+ class MacAddress : public Printable {
25
25
private:
26
26
union {
27
27
struct {
@@ -35,6 +35,7 @@ class MacAddress {
35
35
MacAddress ();
36
36
MacAddress (uint64_t mac);
37
37
MacAddress (const uint8_t *macbytearray);
38
+ MAcAddress (uint8_t b1, uint8_t b2, uint8_t b3, uint8_t b4, uint8_t b5, uint8_t b6);
38
39
virtual ~MacAddress () {}
39
40
bool fromCStr (const char *buf);
40
41
bool fromString (const String &macstr);
@@ -43,11 +44,43 @@ class MacAddress {
43
44
String toString () const ;
44
45
uint64_t Value ();
45
46
46
- operator uint64_t () const ;
47
+ // Overloaded index operator to allow getting and setting individual octets of the address
48
+ uint8_t operator [](int index) const
49
+ {
50
+ return _mac.bytes [index ];
51
+ }
52
+ uint8_t & operator [](int index)
53
+ {
54
+ return _mac.bytes [index ];
55
+ }
56
+
47
57
MacAddress& operator =(const uint8_t *mac);
48
58
MacAddress& operator =(uint64_t macval);
49
59
bool operator ==(const uint8_t *mac) const ;
50
60
bool operator ==(const MacAddress& mac2) const ;
61
+
62
+ operator uint64_t () const
63
+ {
64
+ return _mac.val ;
65
+ }
66
+ operator const uint8_t *() const
67
+ {
68
+ return _mac.bytes ;
69
+ }
70
+ operator const uint64_t *() const
71
+ {
72
+ return &_mac.val ;
73
+ }
74
+
75
+ virtual size_t printTo (Print& p) const ;
76
+
77
+ // future use in Arduino Networking
78
+ friend class EthernetClass ;
79
+ friend class UDP ;
80
+ friend class Client ;
81
+ friend class Server ;
82
+ friend class DhcpClass ;
83
+ friend class DNSClient ;
51
84
};
52
85
53
86
#endif
0 commit comments