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: UdpSocket.cpp
- Revision:
- 15:53715cc81c63
- Parent:
- 14:7648334eb41b
--- a/UdpSocket.cpp Tue Sep 03 09:16:55 2019 +0000 +++ b/UdpSocket.cpp Sat Sep 07 17:42:42 2019 +0000 @@ -148,7 +148,8 @@ } #ifdef UIPETHERNET_DEBUG_UDP - printf("rip: %s, port: %d\r\n", ip.asString(), port); + char buf[16]; + printf("rip: %s, port: %d\r\n", ip.toString(buf), port); #endif } @@ -156,17 +157,20 @@ if (appdata.packet_out == NOBLOCK) { appdata.packet_out = UipEthernet::ethernet->enc28j60Eth.allocBlock(UIP_UDP_MAXPACKETSIZE); appdata.out_pos = UIP_UDP_PHYH_LEN; - if (appdata.packet_out != NOBLOCK) + if (appdata.packet_out != NOBLOCK) { return 1; + } #ifdef UIPETHERNET_DEBUG_UDP - else + else { printf("failed to allocate memory for packet\r\n"); + } #endif } #ifdef UIPETHERNET_DEBUG_UDP - else + else { printf("previous packet on that connection not sent yet\r\n"); + } #endif } @@ -363,7 +367,7 @@ ( "udp, uip_newdata received packet: %d, size: %d\r\n", data->packet_next, - UIPEthernet.network.blockSize(data->packet_next) + UipEthernet::ethernet->enc28j60Eth.blockSize(data->packet_next) ); #endif } @@ -378,7 +382,7 @@ ( "udp, uip_poll preparing packet to send: %d, size: %d\r\n", data->packet_out, - UIPEthernet.network.blockSize(data->packet_out) + UipEthernet::ethernet->enc28j60Eth.blockSize(data->packet_out) ); #endif UipEthernet::uipPacket = data->packet_out; @@ -410,7 +414,7 @@ data->packet_out = NOBLOCK; UipEthernet::packetState |= UIPETHERNET_SENDPACKET; #ifdef UIPETHERNET_DEBUG_UDP - printf("udp, uip_packet to send: %d\r\n", UIPEthernet::uip_packet); + printf("udp, uip_packet to send: %d\r\n", UipEthernet::uipPacket); #endif }