Skip to content

Commit 2e859cd

Browse files
committed
BLE: Conditionally compile PAL depending on the feature selected.
Previously (most) of the code was not pulled in because the pal interface was not virtual.
1 parent 2630091 commit 2e859cd

File tree

6 files changed

+157
-33
lines changed

6 files changed

+157
-33
lines changed

connectivity/FEATURE_BLE/source/cordio/source/BLEInstanceBaseImpl.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,7 @@ void BLEInstanceBase::stack_handler(wsfEventMask_t event, wsfMsgHdr_t *msg)
414414

415415
void BLEInstanceBase::device_manager_cb(dmEvt_t *dm_event)
416416
{
417+
#if BLE_FEATURE_CONNECTABLE
417418
if (dm_event->hdr.status == HCI_SUCCESS && dm_event->hdr.event == DM_CONN_DATA_LEN_CHANGE_IND) {
418419
// this event can only happen after a connection has been established therefore gap is present
419420
ble::PalGapEventHandler *handler;
@@ -427,6 +428,7 @@ void BLEInstanceBase::device_manager_cb(dmEvt_t *dm_event)
427428
}
428429
return;
429430
}
431+
#endif
430432

431433
BLEInstanceBase::deviceInstance().stack_handler(0, &dm_event->hdr);
432434
}

connectivity/FEATURE_BLE/source/cordio/source/PalGapImpl.cpp

Lines changed: 51 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ ble_error_t PalGap::set_random_address(const address_t &address)
104104
return BLE_ERROR_NONE;
105105
}
106106

107-
107+
#if BLE_ROLE_BROADCASTER
108108
ble_error_t PalGap::set_advertising_parameters(
109109
uint16_t advertising_interval_min,
110110
uint16_t advertising_interval_max,
@@ -233,8 +233,9 @@ ble_error_t PalGap::advertising_enable(bool enable)
233233

234234
return BLE_ERROR_NONE;
235235
}
236+
#endif // BLE_ROLE_BROADCASTER
236237

237-
238+
#if BLE_ROLE_OBSERVER
238239
ble_error_t PalGap::set_scan_parameters(
239240
bool active_scanning,
240241
uint16_t scan_interval,
@@ -276,8 +277,9 @@ ble_error_t PalGap::scan_enable(
276277
}
277278
return BLE_ERROR_NONE;
278279
}
280+
#endif // BLE_ROLE_OBSERVER
279281

280-
282+
#if BLE_ROLE_CENTRAL
281283
ble_error_t PalGap::create_connection(
282284
uint16_t scan_interval,
283285
uint16_t scan_window,
@@ -342,8 +344,9 @@ ble_error_t PalGap::cancel_connection_creation()
342344

343345
return error;
344346
}
347+
#endif // BLE_ROLE_CENTRAL
345348

346-
349+
#if BLE_FEATURE_WHITELIST
347350
uint8_t PalGap::read_white_list_capacity()
348351
{
349352
return HciGetWhiteListSize();
@@ -381,8 +384,9 @@ ble_error_t PalGap::remove_device_from_whitelist(
381384
);
382385
return BLE_ERROR_NONE;
383386
}
387+
#endif // BLE_FEATURE_WHITELIST
384388

385-
389+
#if BLE_FEATURE_CONNECTABLE
386390
ble_error_t PalGap::connection_parameters_update(
387391
connection_handle_t connection,
388392
uint16_t connection_interval_min,
@@ -463,6 +467,9 @@ ble_error_t PalGap::disconnect(
463467
return BLE_ERROR_NONE;
464468
}
465469

470+
#endif // BLE_FEATURE_CONNECTABLE
471+
472+
#if BLE_FEATURE_PHY_MANAGEMENT
466473
ble_error_t PalGap::read_phy(connection_handle_t connection)
467474
{
468475
if (is_feature_supported(controller_supported_features_t::LE_2M_PHY)
@@ -514,6 +521,7 @@ ble_error_t PalGap::set_phy(
514521

515522
return BLE_ERROR_NONE;
516523
}
524+
#endif // BLE_FEATURE_PHY_MANAGEMENT
517525

518526
// singleton of the ARM Cordio client
519527

@@ -766,6 +774,7 @@ void PalGap::gap_handler(const wsfMsgHdr_t *msg)
766774
}
767775
break;
768776

777+
#if BLE_ROLE_PERIPHERAL
769778
case DM_CONN_CLOSE_IND: {
770779
// Intercept connection close indication received when direct advertising timeout.
771780
// Leave the rest of the processing to the event handlers bellow.
@@ -775,16 +784,21 @@ void PalGap::gap_handler(const wsfMsgHdr_t *msg)
775784
get_gap().get_running_conn_direct_adv_cb(evt->hdr.param);
776785
if (adv_cb) {
777786
adv_cb->state = direct_adv_cb_t::free;
778-
#if BLE_ROLE_BROADCASTER
779787
if (handler) {
780-
handler->on_advertising_set_terminated(
781-
hci_error_code_t(evt->status),
782-
adv_cb->advertising_handle,
783-
DM_CONN_ID_NONE,
784-
0
785-
);
788+
#if BLE_FEATURE_EXTENDED_ADVERTISING
789+
if (get_gap().is_feature_supported(controller_supported_features_t::LE_EXTENDED_ADVERTISING)) {
790+
handler->on_advertising_set_terminated(
791+
hci_error_code_t(evt->status),
792+
adv_cb->advertising_handle,
793+
DM_CONN_ID_NONE,
794+
0
795+
);
796+
} else
797+
#endif
798+
{
799+
handler->on_legacy_advertising_stopped();
800+
}
786801
}
787-
#endif // BLE_ROLE_BROADCASTER
788802
}
789803
}
790804
}
@@ -801,6 +815,7 @@ void PalGap::gap_handler(const wsfMsgHdr_t *msg)
801815
}
802816
}
803817
break;
818+
#endif // BLE_ROLE_PERIPHERAL
804819
#endif // BLE_FEATURE_CONNECTABLE
805820
}
806821

@@ -843,7 +858,8 @@ bool PalGap::event_handler(const wsfMsgHdr_t *msg)
843858
return false;
844859
}
845860

846-
861+
#if BLE_ROLE_BROADCASTER
862+
#if BLE_FEATURE_EXTENDED_ADVERTISING
847863
ble_error_t PalGap::set_advertising_set_random_address(
848864
advertising_handle_t advertising_handle,
849865
const address_t &address
@@ -853,7 +869,6 @@ ble_error_t PalGap::set_advertising_set_random_address(
853869
return BLE_ERROR_NONE;
854870
}
855871

856-
#if BLE_FEATURE_EXTENDED_ADVERTISING
857872
ble_error_t PalGap::set_extended_advertising_parameters(
858873
advertising_handle_t advertising_handle,
859874
advertising_event_properties_t event_properties,
@@ -995,6 +1010,7 @@ ble_error_t PalGap::set_extended_advertising_parameters(
9951010
}
9961011
#endif // BLE_FEATURE_EXTENDED_ADVERTISING
9971012

1013+
#if BLE_FEATURE_PERIODIC_ADVERTISING
9981014
ble_error_t PalGap::set_periodic_advertising_parameters(
9991015
advertising_handle_t advertising_handle,
10001016
periodic_advertising_interval_t periodic_advertising_min,
@@ -1012,8 +1028,9 @@ ble_error_t PalGap::set_periodic_advertising_parameters(
10121028

10131029
return BLE_ERROR_NONE;
10141030
}
1031+
#endif // BLE_FEATURE_PERIODIC_ADVERTISING
10151032

1016-
1033+
#if BLE_FEATURE_EXTENDED_ADVERTISING
10171034
ble_error_t PalGap::set_extended_advertising_data(
10181035
advertising_handle_t advertising_handle,
10191036
advertising_fragment_description_t operation,
@@ -1037,8 +1054,9 @@ ble_error_t PalGap::set_extended_advertising_data(
10371054
);
10381055
return BLE_ERROR_NONE;
10391056
}
1057+
#endif // #if BLE_FEATURE_EXTENDED_ADVERTISING
10401058

1041-
1059+
#if BLE_FEATURE_PERIODIC_ADVERTISING
10421060
ble_error_t PalGap::set_periodic_advertising_data(
10431061
advertising_handle_t advertising_handle,
10441062
advertising_fragment_description_t fragment_description,
@@ -1054,8 +1072,9 @@ ble_error_t PalGap::set_periodic_advertising_data(
10541072
);
10551073
return BLE_ERROR_NONE;
10561074
}
1075+
#endif // BLE_FEATURE_PERIODIC_ADVERTISING
10571076

1058-
1077+
#if BLE_FEATURE_EXTENDED_ADVERTISING
10591078
ble_error_t PalGap::set_extended_scan_response_data(
10601079
advertising_handle_t advertising_handle,
10611080
advertising_fragment_description_t operation,
@@ -1170,8 +1189,9 @@ ble_error_t PalGap::extended_advertising_enable(
11701189

11711190
return BLE_ERROR_NONE;
11721191
}
1192+
#endif // BLE_FEATURE_EXTENDED_ADVERTISING
11731193

1174-
1194+
#if BLE_FEATURE_PERIODIC_ADVERTISING
11751195
ble_error_t PalGap::periodic_advertising_enable(
11761196
bool enable,
11771197
advertising_handle_t advertising_handle
@@ -1185,7 +1205,7 @@ ble_error_t PalGap::periodic_advertising_enable(
11851205

11861206
return BLE_ERROR_NONE;
11871207
}
1188-
1208+
#endif
11891209

11901210
uint16_t PalGap::get_maximum_advertising_data_length()
11911211
{
@@ -1210,7 +1230,7 @@ uint8_t PalGap::get_max_number_of_advertising_sets()
12101230
return std::min(HciGetNumSupAdvSets(), (uint8_t) DM_NUM_ADV_SETS);
12111231
}
12121232

1213-
1233+
#if BLE_FEATURE_EXTENDED_ADVERTISING
12141234
ble_error_t PalGap::remove_advertising_set(advertising_handle_t advertising_handle)
12151235
{
12161236
DmAdvRemoveAdvSet(advertising_handle);
@@ -1223,8 +1243,11 @@ ble_error_t PalGap::clear_advertising_sets()
12231243
DmAdvClearAdvSets();
12241244
return BLE_ERROR_NONE;
12251245
}
1246+
#endif // BLE_FEATURE_EXTENDED_ADVERTISING
1247+
#endif // BLE_ROLE_BROADCASTER
12261248

1227-
1249+
#if BLE_ROLE_OBSERVER
1250+
#if BLE_FEATURE_EXTENDED_ADVERTISING
12281251
ble_error_t PalGap::set_extended_scan_parameters(
12291252
own_address_type_t own_address_type,
12301253
scanning_filter_policy_t filter_policy,
@@ -1287,8 +1310,9 @@ ble_error_t PalGap::extended_scan_enable(
12871310

12881311
return BLE_ERROR_NONE;
12891312
}
1313+
#endif // BLE_FEATURE_EXTENDED_ADVERTISING
12901314

1291-
1315+
#if BLE_FEATURE_PERIODIC_ADVERTISING
12921316
ble_error_t PalGap::periodic_advertising_create_sync(
12931317
bool use_periodic_advertiser_list,
12941318
uint8_t advertising_sid,
@@ -1376,8 +1400,10 @@ uint8_t PalGap::read_periodic_advertiser_list_size()
13761400
{
13771401
return HciGetPerAdvListSize();
13781402
}
1403+
#endif // BLE_FEATURE_PERIODIC_ADVERTISING
1404+
#endif // BLE_ROLE_OBSERVER
13791405

1380-
1406+
#if BLE_ROLE_CENTRAL && BLE_FEATURE_EXTENDED_ADVERTISING
13811407
ble_error_t PalGap::extended_create_connection(
13821408
initiator_policy_t initiator_policy,
13831409
own_address_type_t own_address_type,
@@ -1430,6 +1456,7 @@ ble_error_t PalGap::extended_create_connection(
14301456

14311457
return BLE_ERROR_NONE;
14321458
}
1459+
#endif // BLE_ROLE_CENTRAL && BLE_FEATURE_EXTENDED_ADVERTISING
14331460

14341461

14351462
ble_error_t PalGap::update_direct_advertising_parameters(

0 commit comments

Comments
 (0)