@@ -376,7 +376,6 @@ GenericGap::GenericGap(
376
376
_pal_gap (pal_gap),
377
377
_gap_service(generic_access_service),
378
378
_address_type(BLEProtocol::AddressType::PUBLIC),
379
- _address(),
380
379
_initiator_policy_mode(pal::initiator_policy_t ::NO_FILTER),
381
380
_scanning_filter_policy(pal::scanning_filter_policy_t ::NO_FILTER),
382
381
_advertising_filter_policy(pal::advertising_filter_policy_t ::NO_FILTER),
@@ -416,7 +415,6 @@ ble_error_t GenericGap::setAddress(
416
415
}
417
416
418
417
_address_type = type;
419
- _address = pal::address_t (address, true );
420
418
return BLE_ERROR_NONE;
421
419
}
422
420
@@ -439,7 +437,14 @@ ble_error_t GenericGap::getAddress(
439
437
BLEProtocol::AddressBytes_t address
440
438
) {
441
439
*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 ());
443
448
return BLE_ERROR_NONE;
444
449
}
445
450
@@ -990,14 +995,20 @@ void GenericGap::on_connection_complete(const pal::GapConnectionCompleteEvent& e
990
995
e.connection_latency ,
991
996
e.supervision_timeout
992
997
};
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
+ }
993
1004
994
1005
processConnectionEvent (
995
1006
e.connection_handle ,
996
1007
e.role .value () == e.role .MASTER ? ::Gap::CENTRAL : ::Gap::PERIPHERAL,
997
1008
(BLEProtocol::AddressType_t) e.peer_address_type .value (),
998
1009
e.peer_address .data (),
999
1010
_address_type,
1000
- _address .data (),
1011
+ address .data (),
1001
1012
&connection_params
1002
1013
);
1003
1014
} else {
0 commit comments