Skip to content

Commit 5faac0e

Browse files
authored
Merge pull request #8269 from paul-szczepanek-arm/fix-event-malloc
BLE: replace malloc with cordio buffer allocation
2 parents baada0e + 88a8751 commit 5faac0e

File tree

4 files changed

+19
-14
lines changed

4 files changed

+19
-14
lines changed

features/FEATURE_BLE/targets/TARGET_CORDIO/CordioBLE.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
#include "CordioPalGenericAccessService.h"
3131
#include "ble/generic/GenericGap.h"
3232
#include "ble/generic/GenericSecurityManager.h"
33-
#include "ble/pal/SimpleEventQueue.h"
33+
#include "SimpleEventQueue.h"
3434

3535
namespace ble {
3636
namespace vendor {
@@ -152,7 +152,7 @@ class BLE : public ::BLEInstanceBase {
152152
} initialization_status;
153153

154154
::BLE::InstanceID_t instanceID;
155-
mutable pal::SimpleEventQueue _event_queue;
155+
mutable SimpleEventQueue _event_queue;
156156

157157
class SigningEventMonitorProxy : public pal::SigningEventMonitor {
158158
public:

features/FEATURE_BLE/ble/pal/SimpleEventQueue.h renamed to features/FEATURE_BLE/targets/TARGET_CORDIO/SimpleEventQueue.h

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,13 @@
2323
#include "ble/BLE.h"
2424

2525
namespace ble {
26-
namespace pal {
26+
namespace vendor {
27+
namespace cordio {
2728

2829
/**
2930
* Simple implementation of the pal::EventQueue.
3031
*/
31-
struct SimpleEventQueue : EventQueue {
32+
struct SimpleEventQueue : pal::EventQueue {
3233

3334
typedef mbed::Callback<void()> event_t;
3435

@@ -51,7 +52,7 @@ struct SimpleEventQueue : EventQueue {
5152
*
5253
* @param ble_id Id of the BLE instance using that event queue.
5354
*/
54-
void initialize(BLEInstanceBase* ble_base, BLE::InstanceID_t ble_id)
55+
void initialize(BLEInstanceBase* ble_base, ::BLE::InstanceID_t ble_id)
5556
{
5657
_ble_base = ble_base;
5758
_ble_instance_id = ble_id;
@@ -73,8 +74,12 @@ struct SimpleEventQueue : EventQueue {
7374
if (_ble_base == NULL) {
7475
return false;
7576
}
76-
77-
EventNode* next = new (std::nothrow) EventNode(event);
77+
void* event_buf = WsfBufAlloc(sizeof(EventNode));
78+
MBED_ASSERT(event_buf != NULL);
79+
if (event_buf == NULL) {
80+
return false;
81+
}
82+
EventNode* next = new(event_buf) EventNode(event);
7883
if (next == NULL) {
7984
return false;
8085
}
@@ -102,7 +107,8 @@ struct SimpleEventQueue : EventQueue {
102107
{
103108
while (_events) {
104109
EventNode* next = _events->next;
105-
delete _events;
110+
_events->~EventNode();
111+
WsfBufFree(_events);
106112
_events = next;
107113
}
108114
}
@@ -115,7 +121,8 @@ struct SimpleEventQueue : EventQueue {
115121
while (_events) {
116122
EventNode* next = _events->next;
117123
_events->event();
118-
delete _events;
124+
_events->~EventNode();
125+
WsfBufFree(_events);
119126
_events = next;
120127
}
121128
}
@@ -133,11 +140,12 @@ struct SimpleEventQueue : EventQueue {
133140
}
134141

135142
BLEInstanceBase* _ble_base;
136-
BLE::InstanceID_t _ble_instance_id;
143+
::BLE::InstanceID_t _ble_instance_id;
137144
EventNode* _events;
138145
};
139146

140-
} // namespace pal
147+
} // namespace cordio
148+
} // namespace vendor
141149
} // namespace ble
142150

143151
#endif /* BLE_PAL_SIMPLE_EVENT_QUEUE_H_ */

features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NRF51/source/nRF5xn.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,8 @@
2222
#include "ble/BLEInstanceBase.h"
2323
#include "ble/generic/GenericGattClient.h"
2424
#include "ble/generic/GenericSecurityManager.h"
25-
#include "ble/pal/SimpleEventQueue.h"
2625
#include "nRF5xPalSecurityManager.h"
2726

28-
2927
#include "nRF5xGap.h"
3028
#include "nRF5xGattServer.h"
3129

features/FEATURE_BLE/targets/TARGET_NORDIC/TARGET_NRF52/source/nRF5xn.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
#include "ble/BLEInstanceBase.h"
2323
#include "ble/generic/GenericGattClient.h"
2424
#include "ble/generic/GenericSecurityManager.h"
25-
#include "ble/pal/SimpleEventQueue.h"
2625
#include "nRF5xPalSecurityManager.h"
2726

2827
#include "nRF5xGap.h"

0 commit comments

Comments
 (0)