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:
parent
cd184f4332
commit
8bb7a280eb
5 changed files with 83 additions and 49 deletions
|
@ -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)) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue