Index

auto-plow / 93a17bd

A wheelchair motor-propelled battery-powered ESP32-driven remote control snow plow.

Latest Commit

{#}TimeHashSubjectAuthor#(+)(-)GPG?
630 Nov 2018 18:364a63c8cInclude Arduino core filesJoshua1780N

Blob @ auto-plow / include / arduino / IPAddress.h

text/plain2861 bytesdownload raw
1/*
2 IPAddress.h - Base class that provides IPAddress
3 Copyright (c) 2011 Adrian McEwen. All right reserved.
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18*/
19
20#ifndef IPAddress_h
21#define IPAddress_h
22
23#include <stdint.h>
24#include "Printable.h"
25#include "WString.h"
26
27// A class to make it easier to handle and pass around IP addresses
28
29class IPAddress : public Printable {
30private:
31 union {
32 uint8_t bytes[4]; // IPv4 address
33 uint32_t dword;
34 } _address;
35
36 // Access the raw byte array containing the address. Because this returns a pointer
37 // to the internal structure rather than a copy of the address this function should only
38 // be used when you know that the usage of the returned uint8_t* will be transient and not
39 // stored.
40 uint8_t* raw_address() { return _address.bytes; };
41
42public:
43 // Constructors
44 IPAddress();
45 IPAddress(uint8_t first_octet, uint8_t second_octet, uint8_t third_octet, uint8_t fourth_octet);
46 IPAddress(uint32_t address);
47 IPAddress(const uint8_t *address);
48
49 bool fromString(const char *address);
50 bool fromString(const String &address) { return fromString(address.c_str()); }
51
52 // Overloaded cast operator to allow IPAddress objects to be used where a pointer
53 // to a four-byte uint8_t array is expected
54 operator uint32_t() const { return _address.dword; };
55 bool operator==(const IPAddress& addr) const { return _address.dword == addr._address.dword; };
56 bool operator==(const uint8_t* addr) const;
57
58 // Overloaded index operator to allow getting and setting individual octets of the address
59 uint8_t operator[](int index) const { return _address.bytes[index]; };
60 uint8_t& operator[](int index) { return _address.bytes[index]; };
61
62 // Overloaded copy operators to allow initialisation of IPAddress objects from other types
63 IPAddress& operator=(const uint8_t *address);
64 IPAddress& operator=(uint32_t address);
65
66 virtual size_t printTo(Print& p) const;
67
68 friend class EthernetClass;
69 friend class UDP;
70 friend class Client;
71 friend class Server;
72 friend class DhcpClass;
73 friend class DNSClient;
74};
75
76const IPAddress INADDR_NONE(0,0,0,0);
77
78#endif
79