A simple example how to receive ethernet packages and display them over stdout with an hexviewer

Dependencies:   mbed

Committer:
rolf
Date:
Wed Dec 09 11:36:29 2009 +0000
Revision:
0:2f61a610595e

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rolf 0:2f61a610595e 1 /* mbed Ethernet class demo
rolf 0:2f61a610595e 2 * Copyright (c) 2009 rmeyer
rolf 0:2f61a610595e 3 * Released under the MIT License: http://mbed.org/license/mit
rolf 0:2f61a610595e 4 */
rolf 0:2f61a610595e 5
rolf 0:2f61a610595e 6 #include "mbed.h"
rolf 0:2f61a610595e 7 #include "hexview.h"
rolf 0:2f61a610595e 8
rolf 0:2f61a610595e 9 DigitalOut led(LED4);
rolf 0:2f61a610595e 10 Ethernet eth;
rolf 0:2f61a610595e 11
rolf 0:2f61a610595e 12 unsigned short htons(unsigned short n) { // Host short to network shor
rolf 0:2f61a610595e 13 return ((n & 0xff) << 8) | ((n & 0xff00) >> 8); // Byte swapping
rolf 0:2f61a610595e 14 }
rolf 0:2f61a610595e 15
rolf 0:2f61a610595e 16 void show(char *buf, int size) {
rolf 0:2f61a610595e 17 printf("ETH: Src: %02hX:%02hX:%02hX:%02hX:%02hX:%02hX ",
rolf 0:2f61a610595e 18 buf[6], buf[7], buf[8], buf[9], buf[10], buf[11]);
rolf 0:2f61a610595e 19 printf("Dst: %02hX:%02hX:%02hX:%02hX:%02hX:%02hX ",
rolf 0:2f61a610595e 20 buf[0], buf[1], buf[2], buf[3], buf[4], buf[5]);
rolf 0:2f61a610595e 21
rolf 0:2f61a610595e 22 unsigned int type = (buf[12] << 8) | (buf[13]);
rolf 0:2f61a610595e 23 printf("Type: %hd\n", htons( type));
rolf 0:2f61a610595e 24
rolf 0:2f61a610595e 25 hexview2(buf, size);
rolf 0:2f61a610595e 26 }
rolf 0:2f61a610595e 27
rolf 0:2f61a610595e 28
rolf 0:2f61a610595e 29 int main() {
rolf 0:2f61a610595e 30 char buffer[0x300];
rolf 0:2f61a610595e 31 int size = 0;
rolf 0:2f61a610595e 32
rolf 0:2f61a610595e 33 while(1) {
rolf 0:2f61a610595e 34 if((size = eth.receive()) != 0) {
rolf 0:2f61a610595e 35 eth.read(buffer, size);
rolf 0:2f61a610595e 36 show(buffer, size);
rolf 0:2f61a610595e 37 }
rolf 0:2f61a610595e 38
rolf 0:2f61a610595e 39 led = !led;
rolf 0:2f61a610595e 40 wait(0.2);
rolf 0:2f61a610595e 41 }
rolf 0:2f61a610595e 42 }