Daniele Lacamera / PicoTCP-Experimental_CDC_ECM_Branch

Fork of PicoTCP by Daniele Lacamera

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