Mbed library for ENC28J60 Ethernet modules. Full support for TCP/IP and UDP Server, Client and HTTP server (webserver). DHCP and DNS is included.
Dependents: mBuino_ENC28_MQTT Nucleo_Web_ENC28J60 Nucleo_Web_ENC28J60_ADC Serial_over_Ethernet ... more
Library for ENC28J60 Ethernet modules.
Ported to mbed from Norbert Truchsess's UIPEthernet library for Arduino. Thank you Norbert!
- Full support for persistent (streaming) TCP/IP and UDP connections Client and Server each, ARP, ICMP, DHCP and DNS.
- Works with both Mbed OS 2 and Mbed OS 5.
Usage:
- Import the library into your project.
- Add
#include "UipEthernet.h"
tomain.cpp
- Create one instance of the UipEthernet class initialized with the MAC address you'd like to use and SPI pins of the connected Mbed board.
Example programs:
Import programWebSwitch_ENC28J60
HTTP Server serving a simple webpage which enables to remotely turn a digital output on/off. Compile, download, run and type 'IP_address/secret/' (don't forget the last '/') into your web browser and hit ENTER.
Import programHTTPServer_Echo_ENC28J60
A simple HTTP server echoing received requests. Ethernet connection is over an ENC28J60 board. Usage: Type the server's IP address into you web browser and hit <ENTER>.
Import programTcpServer_ENC28J60
Simple TCP/IP Server using the UIPEthernet library for ENC28J60 Ethernet boards.
Import programTcpClient_ENC28J60
Simple TCP/IP Client using the UIPEthernet library for ENC28J60 Ethernet boards.
Import programUdpServer_ENC28J60
Simple UDP Server using the UIPEthernet library for ENC28J60 Ethernet boards.
Import programUdpClient_ENC28J60
Simple UDP Client using the UIPEthernet library for ENC28J60 Ethernet boards.
Import programMQTT_Hello_ENC28J60
MQTT Client example program. Ethernet connection is via an ENC28J60 module.
Diff: Dns.cpp
- Revision:
- 4:d774541a34da
- Parent:
- 2:049ce85163c5
- Child:
- 7:1bc7e6120801
--- a/Dns.cpp Sat Dec 20 11:10:40 2014 +0000 +++ b/Dns.cpp Sun Mar 08 20:26:56 2015 +0000 @@ -1,15 +1,15 @@ -// mbed DNS client for Enc28J60-based Ethernet shield +// Arduino DNS client for Enc28J60-based Ethernet shield // (c) Copyright 2009-2010 MCQN Ltd. // Released under Apache License, version 2.0 -#include "utility/Udp.h" -#include "utility/util.h" +#include "Udp.h" +#include "utility/util.h" +#include "utility/millis.h" #include "Dns.h" #include <string.h> //#include <stdlib.h> -#include "mbed.h" -#include "utility/uip_clock.h" +#include <mbed.h> #define SOCKET_NONE 255 // Various flags and header field values for a DNS message @@ -44,11 +44,11 @@ // Possible return codes from ProcessResponse -#define SUCCESS 1 -#define TIMED_OUT - 1 -#define INVALID_SERVER - 2 -#define TRUNCATED - 3 -#define INVALID_RESPONSE - 4 +#define SUCCESS 1 +#define TIMED_OUT -1 +#define INVALID_SERVER -2 +#define TRUNCATED -3 +#define INVALID_RESPONSE -4 /** * @brief @@ -56,6 +56,7 @@ * @param * @retval */ + void DNSClient::begin(const IPAddress& aDNSServer) { iDNSServer = aDNSServer; iRequestId = 0; @@ -147,7 +148,7 @@ } // Find a socket to use - if(iUdp.begin(1024 + (clock_time() & 0xF)) == 1) { + if(iUdp.begin(1024 + (millis() & 0xF)) == 1) { // Try up to three times int retries = 0; @@ -213,7 +214,7 @@ // +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ // As we only support one request at a time at present, we can simplify // some of this header - iRequestId = clock_time(); // generate a random ID + iRequestId = millis(); // generate a random ID uint16_t twoByteBuffer; // FIXME We should also check that there's enough space available to write to, rather @@ -285,12 +286,12 @@ * @retval */ uint16_t DNSClient::ProcessResponse(uint16_t aTimeout, IPAddress& aAddress) { - uint32_t startTime = clock_time(); + uint32_t startTime = millis(); // Wait for a response packet while(iUdp.parsePacket() <= 0) { - if((clock_time() - startTime) > aTimeout) + if((millis() - startTime) > aTimeout) return TIMED_OUT; wait(0.050); } @@ -451,4 +452,3 @@ // If we get here then we haven't found an answer return -10; //INVALID_RESPONSE; } -