WIZNet W5500 with additional enhancements

Fork of WIZnetInterface by WIZnet

Committer:
Helmut Tschemernjak
Date:
Tue Oct 10 20:56:13 2017 +0200
Revision:
35:fe3028eda085
Parent:
34:7d44648ec5f2
Added support for DHCP lease time and domain name
Enhance DHCP code to use opcode defines to make it easier to
understand and maintain.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Soohwan Kim 0:6f28332c466f 1 /* Copyright (C) 2012 mbed.org, MIT License
Soohwan Kim 0:6f28332c466f 2 *
Soohwan Kim 0:6f28332c466f 3 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
Soohwan Kim 0:6f28332c466f 4 * and associated documentation files (the "Software"), to deal in the Software without restriction,
Soohwan Kim 0:6f28332c466f 5 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
Soohwan Kim 0:6f28332c466f 6 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
Soohwan Kim 0:6f28332c466f 7 * furnished to do so, subject to the following conditions:
Soohwan Kim 0:6f28332c466f 8 *
Soohwan Kim 0:6f28332c466f 9 * The above copyright notice and this permission notice shall be included in all copies or
Soohwan Kim 0:6f28332c466f 10 * substantial portions of the Software.
Soohwan Kim 0:6f28332c466f 11 *
Soohwan Kim 0:6f28332c466f 12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
Soohwan Kim 0:6f28332c466f 13 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
Soohwan Kim 0:6f28332c466f 14 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
Soohwan Kim 0:6f28332c466f 15 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
Soohwan Kim 0:6f28332c466f 16 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Soohwan Kim 0:6f28332c466f 17 */
Soohwan Kim 0:6f28332c466f 18 #include "Socket.h"
Soohwan Kim 0:6f28332c466f 19 #include "Endpoint.h"
Soohwan Kim 0:6f28332c466f 20
Soohwan Kim 0:6f28332c466f 21 Endpoint::Endpoint()
Soohwan Kim 0:6f28332c466f 22 {
Soohwan Kim 0:6f28332c466f 23 //printf("reset_address\r\n");
Soohwan Kim 0:6f28332c466f 24 reset_address();
Soohwan Kim 0:6f28332c466f 25 }
Soohwan Kim 0:6f28332c466f 26 Endpoint::~Endpoint() {}
Soohwan Kim 0:6f28332c466f 27
Soohwan Kim 0:6f28332c466f 28 void Endpoint::reset_address(void)
Soohwan Kim 0:6f28332c466f 29 {
Soohwan Kim 0:6f28332c466f 30 _ipAddress[0] = '\0';
Soohwan Kim 0:6f28332c466f 31 _port = 0;
Soohwan Kim 0:6f28332c466f 32 }
Soohwan Kim 0:6f28332c466f 33
Soohwan Kim 0:6f28332c466f 34 int Endpoint::set_address(const char* host, const int port)
Soohwan Kim 0:6f28332c466f 35 {
Soohwan Kim 0:6f28332c466f 36 //Resolve DNS address or populate hard-coded IP address
Soohwan Kim 0:6f28332c466f 37 WIZnet_Chip* eth = WIZnet_Chip::getInstance();
Soohwan Kim 0:6f28332c466f 38 if (eth == NULL) {
Helmut Tschemernjak 34:7d44648ec5f2 39 printf("Endpoint constructor error: no WIZnet chip instance available!\r\n");
Soohwan Kim 0:6f28332c466f 40 return -1;
Soohwan Kim 0:6f28332c466f 41 }
Soohwan Kim 0:6f28332c466f 42 uint32_t addr;
Soohwan Kim 0:6f28332c466f 43 if (!eth->gethostbyname(host, &addr)) {
Helmut Tschemernjak 34:7d44648ec5f2 44 printf("DNS error : Cannot get url from DNS server\r\n");
Soohwan Kim 0:6f28332c466f 45 return -1;
Soohwan Kim 0:6f28332c466f 46 }
Helmut Tschemernjak 32:f6d76a55a50b 47 snprintf(_ipAddress, sizeof(_ipAddress), "%d.%d.%d.%d", (int)(addr>>24)&0xff, (int)(addr>>16)&0xff, (int)(addr>>8)&0xff, (int)addr&0xff);
Soohwan Kim 0:6f28332c466f 48 _port = port;
Soohwan Kim 0:6f28332c466f 49 return 0;
Soohwan Kim 0:6f28332c466f 50 }
Soohwan Kim 0:6f28332c466f 51
Helmut Tschemernjak 34:7d44648ec5f2 52 int Endpoint::set_address(const uint32_t addr, const int port)
Helmut Tschemernjak 34:7d44648ec5f2 53 {
Helmut Tschemernjak 34:7d44648ec5f2 54 snprintf(_ipAddress, sizeof(_ipAddress), "%d.%d.%d.%d", (int)(addr>>24)&0xff, (int)(addr>>16)&0xff, (int)(addr>>8)&0xff, (int)addr&0xff);
Helmut Tschemernjak 34:7d44648ec5f2 55 _port = port;
Helmut Tschemernjak 35:fe3028eda085 56 return 0;
Helmut Tschemernjak 34:7d44648ec5f2 57 }
Helmut Tschemernjak 34:7d44648ec5f2 58
Soohwan Kim 0:6f28332c466f 59 char* Endpoint::get_address()
Soohwan Kim 0:6f28332c466f 60 {
Soohwan Kim 0:6f28332c466f 61 return _ipAddress;
Soohwan Kim 0:6f28332c466f 62 }
Soohwan Kim 0:6f28332c466f 63
Soohwan Kim 0:6f28332c466f 64 int Endpoint::get_port()
Soohwan Kim 0:6f28332c466f 65 {
Soohwan Kim 0:6f28332c466f 66 return _port;
Soohwan Kim 0:6f28332c466f 67 }