CDC/ECM driver for mbed, based on USBDevice by mbed-official. Uses PicoTCP to access Ethernet USB device. License: GPLv2
Fork of USB_Ethernet by
include/PicoCondition.h@2:540f6e142d59, 2013-08-03 (annotated)
- Committer:
- daniele
- Date:
- Sat Aug 03 13:16:14 2013 +0000
- Revision:
- 2:540f6e142d59
Moved to single package
Who changed what in which revision?
User | Revision | Line number | New 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 |