File tree Expand file tree Collapse file tree 2 files changed +19
-1
lines changed
libraries/Bluefruit52Lib/src/utility Expand file tree Collapse file tree 2 files changed +19
-1
lines changed Original file line number Diff line number Diff line change 36
36
37
37
#include " AdaMsg.h"
38
38
39
- AdaMsg::AdaMsg (void )
39
+ void AdaMsg::_init (void )
40
40
{
41
41
_dynamic = true ;
42
+ _waiting = false ;
42
43
_sem = NULL ;
43
44
44
45
buffer = NULL ;
45
46
remaining = xferlen = 0 ;
46
47
}
47
48
49
+ AdaMsg::AdaMsg (void )
50
+ {
51
+ _init ();
52
+ }
53
+
48
54
// dynamic mean semaphore is malloced and freed only when in action
49
55
void AdaMsg::begin (bool dynamic)
50
56
{
@@ -58,6 +64,7 @@ void AdaMsg::begin(bool dynamic)
58
64
void AdaMsg::stop (void )
59
65
{
60
66
if (!_dynamic) vSemaphoreDelete (_sem);
67
+ _init ();
61
68
}
62
69
63
70
void AdaMsg::prepare (void * buf, uint16_t bufsize)
@@ -82,10 +89,12 @@ int32_t AdaMsg::waitUntilComplete(uint32_t ms)
82
89
83
90
int result = -1 ;
84
91
92
+ _waiting = true ;
85
93
if ( xSemaphoreTake (_sem, ms2tick (ms) ) )
86
94
{
87
95
result = xferlen;
88
96
}
97
+ _waiting = false ;
89
98
90
99
if (_dynamic)
91
100
{
@@ -96,6 +105,11 @@ int32_t AdaMsg::waitUntilComplete(uint32_t ms)
96
105
return result;
97
106
}
98
107
108
+ bool AdaMsg::isWaiting (void )
109
+ {
110
+ return _waiting;
111
+ }
112
+
99
113
uint16_t AdaMsg::feed (void * data, uint16_t len)
100
114
{
101
115
len = min16 (len, remaining);
Original file line number Diff line number Diff line change @@ -42,8 +42,11 @@ class AdaMsg
42
42
{
43
43
private:
44
44
bool _dynamic;
45
+ volatile bool _waiting;
45
46
SemaphoreHandle_t _sem;
46
47
48
+ void _init (void );
49
+
47
50
public:
48
51
uint8_t * buffer;
49
52
uint16_t remaining;
@@ -57,6 +60,7 @@ class AdaMsg
57
60
58
61
void prepare (void * buf, uint16_t bufsize);
59
62
int32_t waitUntilComplete (uint32_t ms);
63
+ bool isWaiting (void );
60
64
61
65
uint16_t feed (void * data, uint16_t len);
62
66
void complete (void );
You can’t perform that action at this time.
0 commit comments