Bluetooth: Mesh: Link Close without success should fail NPPI procedure
When we receive `RPR_OP_LINK_CLOSE` message with reason other than `SUCCESS` we should fail NPPI refresh procedure, not complete it. Dropping `COMPLETE` flag will result in calling `reprovision_fail` in `prov_link_closed`, not `reprovision_complete`. Signed-off-by: Krzysztof Kopyściński <krzysztof.kopyscinski@codecoup.pl>
This commit is contained in:
parent
e25d484b6f
commit
1993c5facd
4 changed files with 6 additions and 5 deletions
|
@ -405,7 +405,7 @@ static void prov_link_closed(const struct prov_bearer *bearer, void *cb_data,
|
||||||
LOG_DBG("%u", reason);
|
LOG_DBG("%u", reason);
|
||||||
|
|
||||||
if (bt_mesh_prov_link.role->link_closed) {
|
if (bt_mesh_prov_link.role->link_closed) {
|
||||||
bt_mesh_prov_link.role->link_closed();
|
bt_mesh_prov_link.role->link_closed(reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bt_mesh_prov->link_close) {
|
if (bt_mesh_prov->link_close) {
|
||||||
|
|
|
@ -105,7 +105,7 @@ enum {
|
||||||
struct bt_mesh_prov_role {
|
struct bt_mesh_prov_role {
|
||||||
void (*link_opened)(void);
|
void (*link_opened)(void);
|
||||||
|
|
||||||
void (*link_closed)(void);
|
void (*link_closed)(enum prov_bearer_link_status status);
|
||||||
|
|
||||||
void (*error)(uint8_t reason);
|
void (*error)(uint8_t reason);
|
||||||
|
|
||||||
|
|
|
@ -688,11 +688,12 @@ static void local_input_complete(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void prov_link_closed(void)
|
static void prov_link_closed(enum prov_bearer_link_status status)
|
||||||
{
|
{
|
||||||
if (IS_ENABLED(CONFIG_BT_MESH_RPR_SRV) &&
|
if (IS_ENABLED(CONFIG_BT_MESH_RPR_SRV) &&
|
||||||
atomic_test_bit(bt_mesh_prov_link.flags, REPROVISION)) {
|
atomic_test_bit(bt_mesh_prov_link.flags, REPROVISION)) {
|
||||||
if (atomic_test_bit(bt_mesh_prov_link.flags, COMPLETE)) {
|
if (atomic_test_bit(bt_mesh_prov_link.flags, COMPLETE) &&
|
||||||
|
status == PROV_BEARER_LINK_STATUS_SUCCESS) {
|
||||||
reprovision_complete();
|
reprovision_complete();
|
||||||
} else {
|
} else {
|
||||||
reprovision_fail();
|
reprovision_fail();
|
||||||
|
|
|
@ -730,7 +730,7 @@ static void local_input_complete(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void prov_link_closed(void)
|
static void prov_link_closed(enum prov_bearer_link_status status)
|
||||||
{
|
{
|
||||||
LOG_DBG("");
|
LOG_DBG("");
|
||||||
if (atomic_test_bit(bt_mesh_prov_link.flags, COMPLETE)) {
|
if (atomic_test_bit(bt_mesh_prov_link.flags, COMPLETE)) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue