Bluetooth: Mesh: Support for comp data page 129

Adds support for composition data page 129.

Signed-off-by: Anders Storrø <anders.storro@nordicsemi.no>
This commit is contained in:
Anders Storrø 2023-08-24 11:51:33 +02:00 committed by Carles Cufí
commit 8bb7a280eb
5 changed files with 83 additions and 49 deletions

View file

@ -61,8 +61,12 @@ static int dev_comp_data_get(struct bt_mesh_model *model,
page = net_buf_simple_pull_u8(buf);
if (page >= 128U && (atomic_test_bit(bt_mesh.flags, BT_MESH_COMP_DIRTY) ||
IS_ENABLED(CONFIG_BT_MESH_RPR_SRV))) {
if (page >= 129U && IS_ENABLED(CONFIG_BT_MESH_COMP_PAGE_1) &&
(atomic_test_bit(bt_mesh.flags, BT_MESH_COMP_DIRTY) ||
IS_ENABLED(CONFIG_BT_MESH_RPR_SRV))) {
page = 129U;
} else if (page >= 128U && (atomic_test_bit(bt_mesh.flags, BT_MESH_COMP_DIRTY) ||
IS_ENABLED(CONFIG_BT_MESH_RPR_SRV))) {
page = 128U;
} else if (page >= 1U && IS_ENABLED(CONFIG_BT_MESH_COMP_PAGE_1)) {
page = 1U;
@ -75,27 +79,18 @@ static int dev_comp_data_get(struct bt_mesh_model *model,
bt_mesh_model_msg_init(&sdu, OP_DEV_COMP_DATA_STATUS);
net_buf_simple_add_u8(&sdu, page);
if (IS_ENABLED(CONFIG_BT_MESH_COMP_PAGE_1) && page == 1) {
err = bt_mesh_comp_data_get_page_1(&sdu);
if (err < 0) {
LOG_ERR("Unable to get composition page 1");
return err;
}
} else if (atomic_test_bit(bt_mesh.flags, BT_MESH_COMP_DIRTY) && (page == 0U)) {
sdu.size -= BT_MESH_MIC_SHORT;
err = bt_mesh_comp_read(&sdu);
if (err) {
LOG_ERR("Unable to get stored composition data");
return err;
}
if (atomic_test_bit(bt_mesh.flags, BT_MESH_COMP_DIRTY) && page < 128) {
sdu.size -= BT_MESH_MIC_SHORT;
err = bt_mesh_comp_read(&sdu, page);
sdu.size += BT_MESH_MIC_SHORT;
} else {
err = bt_mesh_comp_data_get_page_0(&sdu, 0);
if (err < 0) {
LOG_ERR("Unable to get composition page 0");
return err;
}
err = bt_mesh_comp_data_get_page(&sdu, page, 0);
}
if (err) {
LOG_ERR("Failed to get CDP%d, err:%d", page, err);
return err;
}
if (bt_mesh_model_send(model, ctx, &sdu, NULL, NULL)) {