Commit da2e8c3c authored by Emil Gydesen's avatar Emil Gydesen Committed by Carles Cufi
Browse files

Bluetooth: Add and use missing own_addr_type defines

The own_addr_type used for various HCI commands sometimes
had a BT_HCI_OWN_ADDR_* type value or a BT_ADDR_* type
value. Those are 2 different value spaces, and if the public
address types would ever change, it would start have incorrect
behavior.

Signed-off-by: default avatarEmil Gydesen <emil.gydesen@nordicsemi.no>
parent 6a3550e1
Loading
Loading
Loading
Loading
+2 −1
Changes for include/zephyr/bluetooth/hci_types.h: 2 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -33,7 +33,8 @@ extern "C" {
#define BT_HCI_H4_EVT                   0x04    /* HCI Event packet */
#define BT_HCI_H4_ISO                   0x05    /* HCI ISO Data packet */

/* Special own address types for LL privacy (used in adv & scan parameters) */
#define BT_HCI_OWN_ADDR_PUBLIC          0x00
#define BT_HCI_OWN_ADDR_RANDOM          0x01
#define BT_HCI_OWN_ADDR_RPA_OR_PUBLIC   0x02
#define BT_HCI_OWN_ADDR_RPA_OR_RANDOM   0x03
#define BT_HCI_OWN_ADDR_RPA_MASK        0x02
+5 −5
Changes for subsys/bluetooth/controller/ll_sw/ull_adv.c: 5 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -455,8 +455,8 @@ uint8_t ll_adv_params_set(uint16_t interval, uint8_t adv_type,

#if defined(CONFIG_BT_CTLR_PRIVACY)
	adv->own_addr_type = own_addr_type;
	if (adv->own_addr_type == BT_ADDR_LE_PUBLIC_ID ||
	    adv->own_addr_type == BT_ADDR_LE_RANDOM_ID) {
	if (adv->own_addr_type == BT_HCI_OWN_ADDR_RPA_OR_PUBLIC ||
	    adv->own_addr_type == BT_HCI_OWN_ADDR_RPA_OR_RANDOM) {
		adv->peer_addr_type = direct_addr_type;
		memcpy(&adv->peer_addr, direct_addr, BDADDR_SIZE);
	}
@@ -927,8 +927,8 @@ uint8_t ll_adv_enable(uint8_t enable)
	/* Prepare filter accept list and optionally resolving list */
	ull_filter_adv_update(lll->filter_policy);

	if (adv->own_addr_type == BT_ADDR_LE_PUBLIC_ID ||
	    adv->own_addr_type == BT_ADDR_LE_RANDOM_ID) {
	if (adv->own_addr_type == BT_HCI_OWN_ADDR_RPA_OR_PUBLIC ||
	    adv->own_addr_type == BT_HCI_OWN_ADDR_RPA_OR_RANDOM) {
		/* Look up the resolving list */
		lll->rl_idx = ull_filter_rl_find(adv->peer_addr_type,
						 adv->peer_addr, NULL);
@@ -3132,7 +3132,7 @@ static void init_set(struct ll_adv_set *adv)
{
	adv->interval = BT_LE_ADV_INTERVAL_DEFAULT;
#if defined(CONFIG_BT_CTLR_PRIVACY)
	adv->own_addr_type = BT_ADDR_LE_PUBLIC;
	adv->own_addr_type = BT_HCI_OWN_ADDR_RPA_OR_PUBLIC;
#endif /* CONFIG_BT_CTLR_PRIVACY */
	adv->lll.chan_map = BT_LE_ADV_CHAN_MAP_ALL;
	adv->lll.filter_policy = BT_LE_ADV_FP_NO_FILTER;
+2 −2
Changes for subsys/bluetooth/controller/ll_sw/ull_central.c: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -380,8 +380,8 @@ conn_is_valid:
						 NULL);
	}

	if (own_addr_type == BT_ADDR_LE_PUBLIC_ID ||
	    own_addr_type == BT_ADDR_LE_RANDOM_ID) {
	if (own_addr_type == BT_HCI_OWN_ADDR_RPA_OR_PUBLIC ||
	    own_addr_type == BT_HCI_OWN_ADDR_RPA_OR_RANDOM) {

		/* Generate RPAs if required */
		ull_filter_rpa_update(false);
+2 −2
Changes for subsys/bluetooth/controller/ll_sw/ull_filter.c: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -1153,8 +1153,8 @@ static void rpa_adv_refresh(struct ll_adv_set *adv)
	uint8_t sec_idx;
#endif /* CONFIG_BT_CTLR_ADV_EXT */

	if (adv->own_addr_type != BT_ADDR_LE_PUBLIC_ID &&
	    adv->own_addr_type != BT_ADDR_LE_RANDOM_ID) {
	if (adv->own_addr_type != BT_HCI_OWN_ADDR_RPA_OR_PUBLIC &&
	    adv->own_addr_type != BT_HCI_OWN_ADDR_RPA_OR_RANDOM) {
		return;
	}

+2 −3
Changes for subsys/bluetooth/controller/ll_sw/ull_scan.c: 2 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -247,9 +247,8 @@ uint8_t ll_scan_enable(uint8_t enable)
	lll->rl_idx = FILTER_IDX_NONE;
	lll->rpa_gen = 0;

	if ((lll->type & 0x1) &&
	    (own_addr_type == BT_ADDR_LE_PUBLIC_ID ||
	     own_addr_type == BT_ADDR_LE_RANDOM_ID)) {
	if ((lll->type & 0x1) && (own_addr_type == BT_HCI_OWN_ADDR_RPA_OR_PUBLIC ||
				  own_addr_type == BT_HCI_OWN_ADDR_RPA_OR_RANDOM)) {
		/* Generate RPAs if required */
		ull_filter_rpa_update(false);
		lll->rpa_gen = 1;
Loading