Free (GPLv2) TCP/IP stack developed by TASS Belgium

Dependents:   lpc1768-picotcp-demo ZeroMQ_PicoTCP_Publisher_demo TCPSocket_HelloWorld_PicoTCP Pico_TCP_UDP_Test ... more

PicoTCP. Copyright (c) 2013 TASS Belgium NV.

Released under the GNU General Public License, version 2.

Different licensing models may exist, at the sole discretion of the Copyright holders.

Official homepage: http://www.picotcp.com

Bug tracker: https://github.com/tass-belgium/picotcp/issues

Development steps:

  • initial integration with mbed RTOS
  • generic mbed Ethernet driver
  • high performance NXP LPC1768 specific Ethernet driver
  • Multi-threading support for mbed RTOS
  • Berkeley sockets and integration with the New Socket API
  • Fork of the apps running on top of the New Socket API
  • Scheduling optimizations
  • Debugging/benchmarking/testing

Demo application (measuring TCP sender performance):

Import programlpc1768-picotcp-demo

A PicoTCP demo app testing the ethernet throughput on the lpc1768 mbed board.

Committer:
daniele
Date:
Thu Jun 06 00:38:54 2013 +0000
Revision:
10:dd7111d4279f
Child:
57:5d5b84784344
Update from masterbranch;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
daniele 10:dd7111d4279f 1 /*********************************************************************
daniele 10:dd7111d4279f 2 PicoTCP. Copyright (c) 2012 TASS Belgium NV. Some rights reserved.
daniele 10:dd7111d4279f 3 See LICENSE and COPYING for usage.
daniele 10:dd7111d4279f 4
daniele 10:dd7111d4279f 5 *********************************************************************/
daniele 10:dd7111d4279f 6 #ifndef _INCLUDE_PICO_DEVICE
daniele 10:dd7111d4279f 7 #define _INCLUDE_PICO_DEVICE
daniele 10:dd7111d4279f 8 #include "pico_queue.h"
daniele 10:dd7111d4279f 9 #include "pico_frame.h"
daniele 10:dd7111d4279f 10 #include "pico_addressing.h"
daniele 10:dd7111d4279f 11 #include "pico_tree.h"
daniele 10:dd7111d4279f 12 #define MAX_DEVICE_NAME 16
daniele 10:dd7111d4279f 13
daniele 10:dd7111d4279f 14
daniele 10:dd7111d4279f 15 struct pico_ethdev {
daniele 10:dd7111d4279f 16 struct pico_eth mac;
daniele 10:dd7111d4279f 17 };
daniele 10:dd7111d4279f 18
daniele 10:dd7111d4279f 19 struct pico_device {
daniele 10:dd7111d4279f 20 char name[MAX_DEVICE_NAME];
daniele 10:dd7111d4279f 21 uint32_t hash;
daniele 10:dd7111d4279f 22 uint32_t overhead;
daniele 10:dd7111d4279f 23 struct pico_ethdev *eth; /* Null if non-ethernet */
daniele 10:dd7111d4279f 24 struct pico_queue *q_in;
daniele 10:dd7111d4279f 25 struct pico_queue *q_out;
daniele 10:dd7111d4279f 26 int (*send)(struct pico_device *self, void *buf, int len); /* Send function. Return 0 if busy */
daniele 10:dd7111d4279f 27 int (*poll)(struct pico_device *self, int loop_score);
daniele 10:dd7111d4279f 28 void(*destroy)(struct pico_device *self);
daniele 10:dd7111d4279f 29 int (*dsr)(struct pico_device *self, int loop_score);
daniele 10:dd7111d4279f 30 int __serving_interrupt;
daniele 10:dd7111d4279f 31 };
daniele 10:dd7111d4279f 32
daniele 10:dd7111d4279f 33 int pico_device_init(struct pico_device *dev, char *name, uint8_t *mac);
daniele 10:dd7111d4279f 34 void pico_device_destroy(struct pico_device *dev);
daniele 10:dd7111d4279f 35 int pico_devices_loop(int loop_score, int direction);
daniele 10:dd7111d4279f 36 struct pico_device* pico_get_device(char* name);
daniele 10:dd7111d4279f 37 int pico_device_broadcast(struct pico_frame * f);
daniele 10:dd7111d4279f 38
daniele 10:dd7111d4279f 39 #endif