Ethernet Interface

Legacy Networking Libraries

This documentation covers the networking libraries available for mbed 2. For mbed 5, the networking libraries have been revised to better support additional network stacks and thread safety here.

Hardware

First of all you have to connect your mbed to a RJ45 jack: Ethernet RJ45.

Software

Import libraryEthernetInterface

mbed IP library over Ethernet

The EthernetInterface library provides you with a simple API to connect to the internet.

Import library

Static Public Member Functions

static int  init ()
  Initialize the interface with DHCP.
static int  init (const char *ip, const char *mask, const char *gateway)
  Initialize the interface with a static IP address.
static int  connect (unsigned int timeout_ms=15000)
  Connect Bring the interface up, start DHCP if needed.
static int  disconnect ()
  Disconnect Bring the interface down.
static char *  getMACAddress ()
  Get the MAC address of your Ethernet interface.
static char *  getIPAddress ()
  Get the IP address of your Ethernet interface.
static char *  getGateway ()
  Get the Gateway address of your Ethernet interface.
static char *  getNetworkMask ()
  Get the Network mask of your Ethernet interface.

#include "EthernetInterface.h"

First, you need to setup the connection by choosing whether you want to use DHCP or a static IP addressing with the init() function.

Then, simply connect() to the network. When you're done, disconnect() from the network.

When you are connected, you can use either the Socket API or any high-level component (HTTP Client).

Examples

These examples demonstrate how to get started with the Socket API & Ethernet.

Import program

00001 #include "mbed.h"
00002 #include "EthernetInterface.h"
00003 
00004 int main() {
00005     EthernetInterface eth;
00006     eth.init(); //Use DHCP
00007     eth.connect();
00008     printf("IP Address is %s\n", eth.getIPAddress());
00009     
00010     TCPSocketConnection sock;
00011     sock.connect("mbed.org", 80);
00012     
00013     char http_cmd[] = "GET /media/uploads/mbed_official/hello.txt HTTP/1.0\n\n";
00014     sock.send_all(http_cmd, sizeof(http_cmd)-1);
00015     
00016     char buffer[300];
00017     int ret;
00018     while (true) {
00019         ret = sock.receive(buffer, sizeof(buffer)-1);
00020         if (ret <= 0)
00021             break;
00022         buffer[ret] = '\0';
00023         printf("Received %d chars from server:\n%s\n", ret, buffer);
00024     }
00025       
00026     sock.close();
00027     
00028     eth.disconnect();
00029     
00030     while(1) {}
00031 }

Running this example the mbed will output something similar from the serial port:

IP Address is 10.2.131.195
Received 293 chars from server:
HTTP/1.1 200 OK
Server: nginx/0.7.62
Date: Fri, 27 Jul 2012 14:36:00 GMT
Content-Type: text/plain
Connection: close
Last-Modified: Fri, 27 Jul 2012 13:30:34 GMT
Vary: Accept-Encoding
Content-Length: 14
X-ServedBy: web_4
X-Varnish: 230435690
Age: 0
Via: 1.1 varnish

Hello world!

Import program

00001 #include "mbed.h"
00002 #include "EthernetInterface.h"
00003  
00004 int main() {
00005     EthernetInterface eth;
00006     eth.init(); //Use DHCP
00007     eth.connect();
00008     
00009     UDPSocket sock;
00010     sock.init();
00011     
00012     Endpoint nist;
00013     nist.set_address("utcnist.colorado.edu", 37);
00014     
00015     char out_buffer[] = "plop"; // Does not matter
00016     sock.sendTo(nist, out_buffer, sizeof(out_buffer));
00017     
00018     char in_buffer[4];
00019     int n = sock.receiveFrom(nist, in_buffer, sizeof(in_buffer));
00020     
00021     unsigned int timeRes = ntohl( *((unsigned int*)in_buffer));
00022     printf("Received %d bytes from server %s on port %d: %u seconds since 1/01/1900 00:00 GMT\n", n, nist.get_address(), nist.get_port(), timeRes);
00023     
00024     sock.close();
00025     
00026     eth.disconnect();
00027     while(1) {}
00028 }

Feedback

We would be glad to get your feedback on this forum thread: