aboutsummaryrefslogtreecommitdiff
path: root/cores/robot/IPAddress.cpp
diff options
context:
space:
mode:
authorCristian Maglie <c.maglie@bug.st>2013-05-17 11:02:00 +0200
committerCristian Maglie <c.maglie@bug.st>2013-05-17 11:02:00 +0200
commitef4e8c65373f531ce6d37ff226a21fc9b358ff29 (patch)
tree532bf0cc782cd8342e055e763863c0ad5026d569 /cores/robot/IPAddress.cpp
parent44c5dae865da1f92bb183552c7e72185dd83f4f4 (diff)
Robot has its own core
Diffstat (limited to 'cores/robot/IPAddress.cpp')
-rw-r--r--cores/robot/IPAddress.cpp56
1 files changed, 56 insertions, 0 deletions
diff --git a/cores/robot/IPAddress.cpp b/cores/robot/IPAddress.cpp
new file mode 100644
index 0000000..fe3deb7
--- /dev/null
+++ b/cores/robot/IPAddress.cpp
@@ -0,0 +1,56 @@
+
+#include <Arduino.h>
+#include <IPAddress.h>
+
+IPAddress::IPAddress()
+{
+ memset(_address, 0, sizeof(_address));
+}
+
+IPAddress::IPAddress(uint8_t first_octet, uint8_t second_octet, uint8_t third_octet, uint8_t fourth_octet)
+{
+ _address[0] = first_octet;
+ _address[1] = second_octet;
+ _address[2] = third_octet;
+ _address[3] = fourth_octet;
+}
+
+IPAddress::IPAddress(uint32_t address)
+{
+ memcpy(_address, &address, sizeof(_address));
+}
+
+IPAddress::IPAddress(const uint8_t *address)
+{
+ memcpy(_address, address, sizeof(_address));
+}
+
+IPAddress& IPAddress::operator=(const uint8_t *address)
+{
+ memcpy(_address, address, sizeof(_address));
+ return *this;
+}
+
+IPAddress& IPAddress::operator=(uint32_t address)
+{
+ memcpy(_address, (const uint8_t *)&address, sizeof(_address));
+ return *this;
+}
+
+bool IPAddress::operator==(const uint8_t* addr)
+{
+ return memcmp(addr, _address, sizeof(_address)) == 0;
+}
+
+size_t IPAddress::printTo(Print& p) const
+{
+ size_t n = 0;
+ for (int i =0; i < 3; i++)
+ {
+ n += p.print(_address[i], DEC);
+ n += p.print('.');
+ }
+ n += p.print(_address[3], DEC);
+ return n;
+}
+