Open FFBoard
Open source force feedback firmware
Loading...
Searching...
No Matches
cmutex.cpp
Go to the documentation of this file.
1
/****************************************************************************
2
*
3
* Copyright (c) 2017, Michael Becker (michael.f.becker@gmail.com)
4
*
5
* This file is part of the FreeRTOS Add-ons project.
6
*
7
* Source Code:
8
* https://github.com/michaelbecker/freertos-addons
9
*
10
* Project Page:
11
* http://michaelbecker.github.io/freertos-addons/
12
*
13
* On-line Documentation:
14
* http://michaelbecker.github.io/freertos-addons/docs/html/index.html
15
*
16
* Permission is hereby granted, free of charge, to any person obtaining a
17
* copy of this software and associated documentation files
18
* (the "Software"), to deal in the Software without restriction, including
19
* without limitation the rights to use, copy, modify, merge, publish,
20
* distribute, sublicense, and/or sell copies of the Software, and to
21
* permit persons to whom the Software is furnished to do so,subject to the
22
* following conditions:
23
*
24
* + The above copyright notice and this permission notice shall be included
25
* in all copies or substantial portions of the Software.
26
* + Credit is appreciated, but not required, if you find this project
27
* useful enough to include in your application, product, device, etc.
28
*
29
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
30
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
31
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
32
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
33
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
34
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
35
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
36
*
37
***************************************************************************/
38
39
#include "FreeRTOS.h"
40
#include "
mutex.hpp
"
41
42
43
using namespace
cpp_freertos
;
44
45
46
Mutex::Mutex
()
47
{
48
}
49
50
51
Mutex::~Mutex
()
52
{
53
vSemaphoreDelete(
handle
);
54
}
55
56
57
MutexStandard::MutexStandard
()
58
{
59
handle
= xSemaphoreCreateMutex();
60
61
if
(
handle
== NULL) {
62
#ifndef CPP_FREERTOS_NO_EXCEPTIONS
63
throw
MutexCreateException
();
64
#else
65
configASSERT(!
"Mutex Constructor Failed"
);
66
#endif
67
}
68
}
69
70
71
bool
MutexStandard::Lock
(TickType_t Timeout)
72
{
73
BaseType_t success = xSemaphoreTake(
handle
, Timeout);
74
return
success == pdTRUE ? true :
false
;
75
}
76
77
78
bool
MutexStandard::Unlock
()
79
{
80
BaseType_t success = xSemaphoreGive(
handle
);
81
return
success == pdTRUE ? true :
false
;
82
}
83
84
85
#if (configUSE_RECURSIVE_MUTEXES == 1)
86
87
MutexRecursive::MutexRecursive
()
88
{
89
handle
= xSemaphoreCreateRecursiveMutex();
90
91
if
(
handle
== NULL) {
92
#ifndef CPP_FREERTOS_NO_EXCEPTIONS
93
throw
MutexCreateException
();
94
#else
95
configASSERT(!
"Mutex Constructor Failed"
);
96
#endif
97
}
98
}
99
100
101
bool
MutexRecursive::Lock
(TickType_t Timeout)
102
{
103
BaseType_t success = xSemaphoreTakeRecursive(
handle
, Timeout);
104
return
success == pdTRUE ? true :
false
;
105
}
106
107
108
bool
MutexRecursive::Unlock
()
109
{
110
BaseType_t success = xSemaphoreGiveRecursive(
handle
);
111
return
success == pdTRUE ? true :
false
;
112
}
113
114
#endif
115
116
117
LockGuard::LockGuard
(
Mutex
& m)
118
:
mutex
(m)
119
{
120
mutex
.Lock();
121
}
122
123
124
LockGuard::~LockGuard
()
125
{
126
mutex
.Unlock();
127
}
cpp_freertos::LockGuard::mutex
Mutex & mutex
Definition
mutex.hpp:300
cpp_freertos::LockGuard::LockGuard
LockGuard(Mutex &m)
Definition
cmutex.cpp:117
cpp_freertos::LockGuard::~LockGuard
~LockGuard()
Definition
cmutex.cpp:124
cpp_freertos::MutexCreateException
Definition
mutex.hpp:68
cpp_freertos::Mutex
Definition
mutex.hpp:107
cpp_freertos::Mutex::Mutex
Mutex()
Definition
cmutex.cpp:46
cpp_freertos::Mutex::handle
SemaphoreHandle_t handle
Definition
mutex.hpp:149
cpp_freertos::Mutex::~Mutex
virtual ~Mutex()
Definition
cmutex.cpp:51
cpp_freertos::MutexRecursive::MutexRecursive
MutexRecursive()
Definition
cmutex.cpp:87
cpp_freertos::MutexRecursive::Lock
virtual bool Lock(TickType_t Timeout=portMAX_DELAY)
Definition
cmutex.cpp:101
cpp_freertos::MutexRecursive::Unlock
virtual bool Unlock()
Definition
cmutex.cpp:108
cpp_freertos::MutexStandard::Lock
virtual bool Lock(TickType_t Timeout=portMAX_DELAY)
Definition
cmutex.cpp:71
cpp_freertos::MutexStandard::MutexStandard
MutexStandard()
Definition
cmutex.cpp:57
cpp_freertos::MutexStandard::Unlock
virtual bool Unlock()
Definition
cmutex.cpp:78
mutex.hpp
cpp_freertos
Definition
condition_variable.hpp:55
Firmware
FFBoard
Src
cmutex.cpp
Generated by
1.13.2