@@ -1547,13 +1547,8 @@ int bt_mesh_provisioner_store_node_info(struct bt_mesh_node *node)
1547
1547
#define HEARTBEAT_FILTER_ADD 0x00
1548
1548
#define HEARTBEAT_FILTER_REMOVE 0x01
1549
1549
1550
- #define HEARTBEAT_FILTER_WITH_SRC BIT(0)
1551
- #define HEARTBEAT_FILTER_WITH_DST BIT(1)
1552
- #define HEARTBEAT_FILTER_WITH_BOTH (BIT(1) | BIT(0))
1553
-
1554
1550
static struct heartbeat_recv {
1555
1551
struct heartbeat_filter {
1556
- uint8_t type ; /* Indicate if using src or dst or both to filter heartbeat messages */
1557
1552
uint16_t src ; /* Heartbeat source address (unicast address) */
1558
1553
uint16_t dst ; /* Heartbeat destination address (unicast address or group address) */
1559
1554
} filter [CONFIG_BLE_MESH_PROVISIONER_RECV_HB_FILTER_SIZE ];
@@ -1590,19 +1585,6 @@ int bt_mesh_provisioner_set_heartbeat_filter_type(uint8_t type)
1590
1585
return 0 ;
1591
1586
}
1592
1587
1593
- static inline uint8_t get_filter_addr_type (uint16_t src , uint16_t dst )
1594
- {
1595
- if (BLE_MESH_ADDR_IS_UNICAST (src )) {
1596
- if (BLE_MESH_ADDR_IS_UNICAST (dst ) || BLE_MESH_ADDR_IS_GROUP (dst )) {
1597
- return HEARTBEAT_FILTER_WITH_BOTH ;
1598
- } else {
1599
- return HEARTBEAT_FILTER_WITH_SRC ;
1600
- }
1601
- } else {
1602
- return HEARTBEAT_FILTER_WITH_DST ;
1603
- }
1604
- }
1605
-
1606
1588
static int hb_filter_alloc (uint16_t src , uint16_t dst )
1607
1589
{
1608
1590
int i ;
@@ -1612,7 +1594,6 @@ static int hb_filter_alloc(uint16_t src, uint16_t dst)
1612
1594
1613
1595
if (filter -> src == BLE_MESH_ADDR_UNASSIGNED &&
1614
1596
filter -> dst == BLE_MESH_ADDR_UNASSIGNED ) {
1615
- filter -> type = get_filter_addr_type (src , dst );
1616
1597
filter -> src = src ;
1617
1598
filter -> dst = dst ;
1618
1599
return 0 ;
@@ -1627,8 +1608,8 @@ static int hb_filter_add(uint16_t src, uint16_t dst)
1627
1608
{
1628
1609
int i ;
1629
1610
1630
- if (!BLE_MESH_ADDR_IS_UNICAST (src ) &&
1631
- ! BLE_MESH_ADDR_IS_UNICAST (dst ) && ! BLE_MESH_ADDR_IS_GROUP (dst )) {
1611
+ if (!( BLE_MESH_ADDR_IS_UNICAST (src ) &&
1612
+ ( BLE_MESH_ADDR_IS_UNICAST (dst ) || BLE_MESH_ADDR_IS_GROUP (dst )) )) {
1632
1613
BT_ERR ("Invalid filter address, src 0x%04x, dst 0x%04x" , src , dst );
1633
1614
return - EINVAL ;
1634
1615
}
@@ -1637,10 +1618,9 @@ static int hb_filter_add(uint16_t src, uint16_t dst)
1637
1618
for (i = 0 ; i < ARRAY_SIZE (hb_rx .filter ); i ++ ) {
1638
1619
struct heartbeat_filter * filter = & hb_rx .filter [i ];
1639
1620
1640
- if ((BLE_MESH_ADDR_IS_UNICAST (src ) && filter -> src == src ) ||
1641
- ((BLE_MESH_ADDR_IS_UNICAST (dst ) || BLE_MESH_ADDR_IS_GROUP (dst )) &&
1642
- filter -> dst == dst )) {
1643
- memset (filter , 0 , sizeof (struct heartbeat_filter ));
1621
+ if (filter -> src == src && filter -> dst == dst ) {
1622
+ BT_WARN ("Filter already exists, src 0x%04x dst 0x%04x" , filter -> src , filter -> dst );
1623
+ return 0 ;
1644
1624
}
1645
1625
}
1646
1626
@@ -1651,18 +1631,16 @@ static int hb_filter_remove(uint16_t src, uint16_t dst)
1651
1631
{
1652
1632
int i ;
1653
1633
1654
- if (!BLE_MESH_ADDR_IS_UNICAST (src ) &&
1655
- ! BLE_MESH_ADDR_IS_UNICAST (dst ) && ! BLE_MESH_ADDR_IS_GROUP (dst )) {
1634
+ if (!( BLE_MESH_ADDR_IS_UNICAST (src ) &&
1635
+ ( BLE_MESH_ADDR_IS_UNICAST (dst ) || BLE_MESH_ADDR_IS_GROUP (dst )) )) {
1656
1636
BT_ERR ("Invalid filter address, src 0x%04x, dst 0x%04x" , src , dst );
1657
1637
return - EINVAL ;
1658
1638
}
1659
1639
1660
1640
for (i = 0 ; i < ARRAY_SIZE (hb_rx .filter ); i ++ ) {
1661
1641
struct heartbeat_filter * filter = & hb_rx .filter [i ];
1662
1642
1663
- if ((BLE_MESH_ADDR_IS_UNICAST (src ) && filter -> src == src ) ||
1664
- ((BLE_MESH_ADDR_IS_UNICAST (dst ) || BLE_MESH_ADDR_IS_GROUP (dst )) &&
1665
- filter -> dst == dst )) {
1643
+ if (filter -> src == src && filter -> dst == dst ) {
1666
1644
memset (filter , 0 , sizeof (struct heartbeat_filter ));
1667
1645
}
1668
1646
}
@@ -1689,26 +1667,8 @@ static bool filter_with_rejectlist(uint16_t hb_src, uint16_t hb_dst)
1689
1667
1690
1668
for (i = 0 ; i < ARRAY_SIZE (hb_rx .filter ); i ++ ) {
1691
1669
struct heartbeat_filter * filter = & hb_rx .filter [i ];
1692
-
1693
- switch (filter -> type ) {
1694
- case HEARTBEAT_FILTER_WITH_SRC :
1695
- if (hb_src == filter -> src ) {
1696
- return true;
1697
- }
1698
- break ;
1699
- case HEARTBEAT_FILTER_WITH_DST :
1700
- if (hb_dst == filter -> dst ) {
1701
- return true;
1702
- }
1703
- break ;
1704
- case HEARTBEAT_FILTER_WITH_BOTH :
1705
- if (hb_src == filter -> src && hb_dst == filter -> dst ) {
1706
- return true;
1707
- }
1708
- break ;
1709
- default :
1710
- BT_DBG ("Unknown filter addr type 0x%02x" , filter -> type );
1711
- break ;
1670
+ if (hb_src == filter -> src && hb_dst == filter -> dst ) {
1671
+ return true;
1712
1672
}
1713
1673
}
1714
1674
@@ -1721,26 +1681,8 @@ static bool filter_with_acceptlist(uint16_t hb_src, uint16_t hb_dst)
1721
1681
1722
1682
for (i = 0 ; i < ARRAY_SIZE (hb_rx .filter ); i ++ ) {
1723
1683
struct heartbeat_filter * filter = & hb_rx .filter [i ];
1724
-
1725
- switch (filter -> type ) {
1726
- case HEARTBEAT_FILTER_WITH_SRC :
1727
- if (hb_src == filter -> src ) {
1728
- return false;
1729
- }
1730
- break ;
1731
- case HEARTBEAT_FILTER_WITH_DST :
1732
- if (hb_dst == filter -> dst ) {
1733
- return false;
1734
- }
1735
- break ;
1736
- case HEARTBEAT_FILTER_WITH_BOTH :
1737
- if (hb_src == filter -> src && hb_dst == filter -> dst ) {
1738
- return false;
1739
- }
1740
- break ;
1741
- default :
1742
- BT_DBG ("Unknown filter addr type 0x%02x" , filter -> type );
1743
- break ;
1684
+ if (hb_src == filter -> src && hb_dst == filter -> dst ) {
1685
+ return false;
1744
1686
}
1745
1687
}
1746
1688
0 commit comments