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:
Fri May 31 11:34:03 2013 +0000
Revision:
5:445d2fc04784
Child:
13:c6662adea07d
Integrated mbed friendly sockets

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 5:445d2fc04784 32 osStatus status = queue->put(ptr, millisec);
tass 5:445d2fc04784 33 return (status == osEventMessage || status == osOK);
tass 5:445d2fc04784 34 }
tass 5:445d2fc04784 35
tass 5:445d2fc04784 36 bool lock(uint32_t millisec=osWaitForever)
tass 5:445d2fc04784 37 {
tass 5:445d2fc04784 38 osEvent event = queue->get(millisec);
tass 5:445d2fc04784 39 return (event.status == osEventMessage || event.status == osOK);
tass 5:445d2fc04784 40 }
tass 5:445d2fc04784 41 };
tass 5:445d2fc04784 42
tass 5:445d2fc04784 43
tass 5:445d2fc04784 44 #endif