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.

/media/uploads/hudakz/enc28j60_module01.jpg

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" to main.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.

Files at this revision

API Documentation at this revision

Comitter:
hudakz
Date:
Thu Jul 23 15:30:54 2020 +0000
Parent:
17:1123c3fe86ca
Commit message:
Mbed library for ENC28J60 Ethernet modules.

Changed in this revision

DhcpClient.cpp Show annotated file Show diff for this revision Revisions of this file
DhcpClient.h Show annotated file Show diff for this revision Revisions of this file
DnsClient.cpp Show annotated file Show diff for this revision Revisions of this file
DnsClient.h Show annotated file Show diff for this revision Revisions of this file
diff -r 1123c3fe86ca -r 8d5738a6646e DhcpClient.cpp
--- a/DhcpClient.cpp	Fri Jun 05 15:21:49 2020 +0000
+++ b/DhcpClient.cpp	Thu Jul 23 15:30:54 2020 +0000
@@ -307,7 +307,7 @@
  * @param
  * @retval
  */
-uint8_t DhcpClient::parseDhcpResponse(unsigned long responseTimeout, uint32_t& transactionId)
+uint8_t DhcpClient::parseDhcpResponse(time_t responseTimeout, uint32_t& transactionId)
 {
     volatile uint8_t    type = 0;
     uint8_t             opt_len = 0;
@@ -316,7 +316,7 @@
     timer.start();
 
     while (_dhcpUdpSocket.parsePacket() <= 0) {
-        if (timer.read() > responseTimeout) {
+        if ((time_t)timer.read_ms() > responseTimeout) {
             return 255;
         }
 #if MBED_MAJOR_VERSION == 2
diff -r 1123c3fe86ca -r 8d5738a6646e DhcpClient.h
--- a/DhcpClient.h	Fri Jun 05 15:21:49 2020 +0000
+++ b/DhcpClient.h	Thu Jul 23 15:30:54 2020 +0000
@@ -169,7 +169,7 @@
     void        sendDhcpMessage(uint8_t, uint16_t);
     void        printByte(char* , uint8_t);
 
-    uint8_t     parseDhcpResponse(unsigned long responseTimeout, uint32_t& transactionId);
+    uint8_t     parseDhcpResponse(time_t responseTimeout, uint32_t& transactionId);
 
 public:
     IpAddress   getLocalIp();
diff -r 1123c3fe86ca -r 8d5738a6646e DnsClient.cpp
--- a/DnsClient.cpp	Fri Jun 05 15:21:49 2020 +0000
+++ b/DnsClient.cpp	Thu Jul 23 15:30:54 2020 +0000
@@ -274,7 +274,7 @@
  * @param
  * @retval
  */
-int16_t DnsClient::processResponse(uint16_t aTimeout, IpAddress& aAddress)
+int16_t DnsClient::processResponse(time_t aTimeout, IpAddress& aAddress)
 {
     time_t  startTime = time(NULL);
     Timer   timer;
@@ -283,7 +283,7 @@
 
     // Wait for a response packet
     while (iUdp.parsePacket() <= 0) {
-        if (timer.read() > aTimeout)
+        if ((time_t)timer.read_ms() > aTimeout)
             return TIMED_OUT;
 #if MBED_MAJOR_VERSION == 2
         wait_ms(50);
diff -r 1123c3fe86ca -r 8d5738a6646e DnsClient.h
--- a/DnsClient.h	Fri Jun 05 15:21:49 2020 +0000
+++ b/DnsClient.h	Thu Jul 23 15:30:54 2020 +0000
@@ -30,7 +30,7 @@
     int         getHostByName(const char* aHostname, IpAddress& aResult);
 protected:
     uint16_t    buildRequest(const char* aName);
-    int16_t     processResponse(uint16_t aTimeout, IpAddress& aAddress);
+    int16_t     processResponse(time_t aTimeout, IpAddress& aAddress);
 
     IpAddress   iDNSServer;
     uint16_t    iRequestId;