From b1c955d95a408e5b6edec0211147375298236bb9 Mon Sep 17 00:00:00 2001 From: Brian Gix Date: Thu, 11 Jul 2019 15:59:46 -0700 Subject: [PATCH] mesh: Add special Beacon handler for Provisioning Provisioning uses the same AD type for Provisioning that is also used by the Secure Network Beacon, but their usage is distinct from each other. This change allows us to enable/disable Unprovisioned Device Beacon capture without disrupting SNB handling. Change-Id: I008db68f0e371ca6c843a3dd27357318973ccb8e Signed-off-by: Anupam Roy --- mesh/mesh-io-generic.c | 2 +- mesh/mesh-io.c | 6 ++++-- mesh/mesh-io.h | 7 ++++--- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/mesh/mesh-io-generic.c b/mesh/mesh-io-generic.c index 42aaa09..576c5df 100644 --- a/mesh/mesh-io-generic.c +++ b/mesh/mesh-io-generic.c @@ -40,7 +40,7 @@ struct mesh_io_private { struct l_timeout *tx_timeout; struct l_queue *rx_regs; struct l_queue *tx_pkts; - uint8_t filters[3]; /* Simple filtering on AD type only */ + uint8_t filters[4]; bool sending; struct tx_pkt *tx; uint16_t interval; diff --git a/mesh/mesh-io.c b/mesh/mesh-io.c index 62a8c0e..94a92e8 100644 --- a/mesh/mesh-io.c +++ b/mesh/mesh-io.c @@ -86,12 +86,14 @@ struct mesh_io *mesh_io_new(enum mesh_io_type type, void *opts) if (api->set) { uint8_t pkt = MESH_AD_TYPE_NETWORK; - uint8_t bec = MESH_AD_TYPE_BEACON; uint8_t prv = MESH_AD_TYPE_PROVISION; + uint8_t snb[2] = {MESH_AD_TYPE_BEACON, 0x01}; + uint8_t prvb[2] = {MESH_AD_TYPE_BEACON, 0x00}; - api->set(io, 1, &bec, 1, NULL, NULL); + api->set(io, 1, snb, sizeof(snb), NULL, NULL); api->set(io, 2, &prv, 1, NULL, NULL); api->set(io, 3, &pkt, 1, NULL, NULL); + api->set(io, 4, prvb, sizeof(prvb), NULL, NULL); } if (l_queue_push_head(io_list, io)) diff --git a/mesh/mesh-io.h b/mesh/mesh-io.h index 6585205..1c10779 100644 --- a/mesh/mesh-io.h +++ b/mesh/mesh-io.h @@ -19,9 +19,10 @@ struct mesh_io; -#define MESH_IO_FILTER_BEACON 1 -#define MESH_IO_FILTER_PROV 2 -#define MESH_IO_FILTER_NET 3 +#define MESH_IO_FILTER_BEACON 1 +#define MESH_IO_FILTER_PROV 2 +#define MESH_IO_FILTER_NET 3 +#define MESH_IO_FILTER_PROV_BEACON 4 #define MESH_IO_TX_COUNT_UNLIMITED 0 -- 2.7.4