ArDrone SDK 1.8 added
[mardrone] / mardrone / ARDrone_SDK_Version_1_8_20110726 / Examples / Multiplatform / Protocol / VP_Os / win32 / vp_os_signal.c
1 /**
2  * @file signal.c
3  * @author aurelien.morelle@parrot.fr
4  * @date 2006/12/15
5  */
6
7 #include "VP_Os/vp_os_signal.h"
8
9
10 void
11 vp_os_mutex_init(vp_os_mutex_t *mutex)
12 {
13   InitializeCriticalSection((CRITICAL_SECTION *)mutex);
14 }
15
16
17 void
18 vp_os_mutex_destroy(vp_os_mutex_t *mutex)
19 {
20   DeleteCriticalSection((CRITICAL_SECTION *)mutex);
21 }
22
23
24 void
25 vp_os_mutex_lock(vp_os_mutex_t *mutex)
26 {
27   EnterCriticalSection((CRITICAL_SECTION *)mutex);
28 }
29
30
31 void
32 vp_os_mutex_unlock(vp_os_mutex_t *mutex)
33 {
34   LeaveCriticalSection((CRITICAL_SECTION *)mutex);
35 }
36
37
38 void
39 vp_os_cond_init(vp_os_cond_t *cond, vp_os_mutex_t *mutex)
40 {
41 /* // InitializeConditionVariable only work under VISTA
42   InitializeConditionVariable(&cond->cond);
43   cond->mutex = mutex;
44 */
45 }
46
47
48 void
49 vp_os_cond_destroy(vp_os_cond_t *cond)
50 {
51 }
52
53
54 void
55 vp_os_cond_wait(vp_os_cond_t *cond)
56 {
57   WaitForSingleObject(cond->LockSemaphore,INFINITE); // TODO: to test
58 /* // SleepConditionVariableCS only work under VISTA
59   SleepConditionVariableCS(&cond->cond, (CRITICAL_SECTION *)cond->mutex, INFINITE);
60 */
61 }
62
63 C_RESULT
64 vp_os_cond_timed_wait(vp_os_cond_t *cond, uint32_t ms)
65 {
66   return WaitForSingleObject(cond->LockSemaphore, ms) == WAIT_TIMEOUT ? FAIL : SUCCESS; // TODO: to test
67 }
68
69 void
70 vp_os_cond_signal(vp_os_cond_t *cond)
71 {
72 /* // WakeConditionVariable only work under VISTA
73   WakeConditionVariable(&cond->cond);
74 */
75 }
76