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:
tass
Date:
Thu Jun 06 09:14:40 2013 +0000
Revision:
13:c6662adea07d
Parent:
5:445d2fc04784
updated pico bsd layer, there are still bugs..

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tass 5:445d2fc04784 1 #ifndef __PICOMUTEX__
tass 5:445d2fc04784 2 #define __PICOMUTEX__
tass 5:445d2fc04784 3 /*
tass 5:445d2fc04784 4 * Cross-Threading Mutex Class
tass 5:445d2fc04784 5 */
tass 5:445d2fc04784 6
tass 5:445d2fc04784 7 #include "mbed.h"
tass 5:445d2fc04784 8 #include "rtos.h"
tass 5:445d2fc04784 9 #include "Queue.h"
tass 5:445d2fc04784 10
tass 5:445d2fc04784 11 class PicoCondition
tass 5:445d2fc04784 12 {
tass 5:445d2fc04784 13 private:
tass 5:445d2fc04784 14 Queue <int,1> * queue;
tass 5:445d2fc04784 15 public:
tass 5:445d2fc04784 16 PicoCondition()
tass 5:445d2fc04784 17 {
tass 5:445d2fc04784 18 queue = new Queue<int,1>();
tass 5:445d2fc04784 19 }
tass 5:445d2fc04784 20
tass 5:445d2fc04784 21 ~PicoCondition()
tass 5:445d2fc04784 22 {
tass 5:445d2fc04784 23 if(queue)
tass 5:445d2fc04784 24 {
tass 5:445d2fc04784 25 delete queue;
tass 5:445d2fc04784 26 queue = NULL;
tass 5:445d2fc04784 27 }
tass 5:445d2fc04784 28 }
tass 5:445d2fc04784 29
tass 5:445d2fc04784 30 bool unlock(uint32_t millisec=0,int * ptr=NULL)
tass 5:445d2fc04784 31 {
tass 13:c6662adea07d 32 osStatus status;
tass 13:c6662adea07d 33 status = queue->put(ptr, millisec);
tass 5:445d2fc04784 34 return (status == osEventMessage || status == osOK);
tass 5:445d2fc04784 35 }
tass 5:445d2fc04784 36
tass 5:445d2fc04784 37 bool lock(uint32_t millisec=osWaitForever)
tass 5:445d2fc04784 38 {
tass 5:445d2fc04784 39 osEvent event = queue->get(millisec);
tass 5:445d2fc04784 40 return (event.status == osEventMessage || event.status == osOK);
tass 5:445d2fc04784 41 }
tass 5:445d2fc04784 42 };
tass 5:445d2fc04784 43
tass 5:445d2fc04784 44
tass 5:445d2fc04784 45 #endif