CDC/ECM driver for mbed, based on USBDevice by mbed-official. Uses PicoTCP to access Ethernet USB device. License: GPLv2

Dependents:   USBEthernet_TEST

Fork of USB_Ethernet by Daniele Lacamera

Committer:
daniele
Date:
Sat Aug 03 13:16:14 2013 +0000
Revision:
2:540f6e142d59
Moved to single package

Who changed what in which revision?

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