Skip to content

Commit dc87f0b

Browse files
authored
Merge pull request #5313 from pan-/ble-cordio-pal-gap
Cordio: Pal Gap implementation
2 parents 31f59b9 + 70e5a14 commit dc87f0b

File tree

9 files changed

+708
-919
lines changed

9 files changed

+708
-919
lines changed

features/FEATURE_BLE/ble/generic/GenericGap.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,6 @@ class GenericGap : public ::Gap {
282282
pal::Gap &_pal_gap;
283283
pal::GenericAccessService &_gap_service;
284284
BLEProtocol::AddressType_t _address_type;
285-
pal::address_t _address;
286285
pal::initiator_policy_t _initiator_policy_mode;
287286
pal::scanning_filter_policy_t _scanning_filter_policy;
288287
pal::advertising_filter_policy_t _advertising_filter_policy;

features/FEATURE_BLE/source/generic/GenericGap.cpp

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,6 @@ GenericGap::GenericGap(
376376
_pal_gap(pal_gap),
377377
_gap_service(generic_access_service),
378378
_address_type(BLEProtocol::AddressType::PUBLIC),
379-
_address(),
380379
_initiator_policy_mode(pal::initiator_policy_t::NO_FILTER),
381380
_scanning_filter_policy(pal::scanning_filter_policy_t::NO_FILTER),
382381
_advertising_filter_policy(pal::advertising_filter_policy_t::NO_FILTER),
@@ -416,7 +415,6 @@ ble_error_t GenericGap::setAddress(
416415
}
417416

418417
_address_type = type;
419-
_address = pal::address_t(address, true);
420418
return BLE_ERROR_NONE;
421419
}
422420

@@ -439,7 +437,14 @@ ble_error_t GenericGap::getAddress(
439437
BLEProtocol::AddressBytes_t address
440438
) {
441439
*type = _address_type;
442-
memcpy(address, _address.data(), _address.size());
440+
pal::address_t address_value;
441+
if (_address_type == BLEProtocol::AddressType::PUBLIC) {
442+
address_value = _pal_gap.get_device_address();
443+
} else {
444+
address_value = _pal_gap.get_random_address();
445+
}
446+
447+
memcpy(address, address_value.data(), address_value.size());
443448
return BLE_ERROR_NONE;
444449
}
445450

@@ -990,14 +995,20 @@ void GenericGap::on_connection_complete(const pal::GapConnectionCompleteEvent& e
990995
e.connection_latency,
991996
e.supervision_timeout
992997
};
998+
pal::address_t address;
999+
if (_address_type == BLEProtocol::AddressType::PUBLIC) {
1000+
address = _pal_gap.get_device_address();
1001+
} else {
1002+
address = _pal_gap.get_random_address();
1003+
}
9931004

9941005
processConnectionEvent(
9951006
e.connection_handle,
9961007
e.role.value() == e.role.MASTER ? ::Gap::CENTRAL : ::Gap::PERIPHERAL,
9971008
(BLEProtocol::AddressType_t) e.peer_address_type.value(),
9981009
e.peer_address.data(),
9991010
_address_type,
1000-
_address.data(),
1011+
address.data(),
10011012
&connection_params
10021013
);
10031014
} else {

features/FEATURE_BLE/targets/TARGET_CORDIO/CordioBLE.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,15 @@
2222
#include "ble/BLEInstanceBase.h"
2323

2424
#include "CordioHCIDriver.h"
25-
#include "CordioGap.h"
2625
#include "CordioGattServer.h"
2726
#include "CordioSecurityManager.h"
2827
#include "CordioPalAttClient.h"
2928
#include "ble/pal/AttClientToGattClientAdapter.h"
3029
#include "ble/generic/GenericGattClient.h"
30+
#include "CordioPalGap.h"
31+
#include "CordioPalGenericAccessService.h"
32+
#include "ble/generic/GenericGap.h"
33+
#include "ble/pal/SimpleEventQueue.h"
3134

3235
namespace ble {
3336
namespace vendor {
@@ -81,12 +84,12 @@ class BLE : public ::BLEInstanceBase {
8184
/**
8285
* @see BLEInstanceBase::getGap
8386
*/
84-
virtual Gap& getGap();
87+
virtual ::Gap& getGap();
8588

8689
/**
8790
* @see BLEInstanceBase::getGap
8891
*/
89-
virtual const Gap& getGap() const;
92+
virtual const ::Gap& getGap() const;
9093

9194
/**
9295
* @see BLEInstanceBase::getGattServer
@@ -143,6 +146,7 @@ class BLE : public ::BLEInstanceBase {
143146
} initialization_status;
144147

145148
::BLE::InstanceID_t instanceID;
149+
mutable pal::SimpleEventQueue _event_queue;
146150
};
147151

148152
} // namespace cordio

features/FEATURE_BLE/targets/TARGET_CORDIO/CordioGap.h

Lines changed: 0 additions & 262 deletions
This file was deleted.

0 commit comments

Comments
 (0)