Dears all,
When a bluetooth mesh node is done provisioning and added an appkey, I want to bind that appkey to local models.
I could not find any API for that.
Can you help me.
Best regards.
Dears all,
When a bluetooth mesh node is done provisioning and added an appkey, I want to bind that appkey to local models.
I could not find any API for that.
Can you help me.
Best regards.
Dears,
I just post this for any one that need.
struct bt_mesh_comp bm_comp = {
.cid = CONFIG_BT_COMPANY_ID,
.elem = bm_elements,
.elem_count = ARRAY_SIZE(bm_elements),
};
/*****/
bt_mesh_init(&bm_prov, &bm_comp);
void app_bm_local_config(void) {
for (int e_idx=0; e_idx < bm_comp.elem_count; ++e_idx) {
struct bt_mesh_elem *element = bm_comp.elem + e_idx;
for (int m_idx = 0; m_idx < element->model_count; ++m_idx) {
struct bt_mesh_model *model = element->models + m_idx;
if (model->id == BT_MESH_MODEL_ID_CFG_SRV || model->id == BT_MESH_MODEL_ID_CFG_CLI ||
model->id == BT_MESH_MODEL_ID_HEALTH_SRV || model->id == BT_MESH_MODEL_ID_HEALTH_CLI)
continue;
if (model->keys[0] == 0xFFFF) {
model->keys[0] = 0; /*Appkey index is 0*/
}
for (int k_idx=0; k_idx < CONFIG_BT_MESH_MODEL_KEY_COUNT; k_idx++) LREP_RAW("%d ", model->keys[k_idx]);
if (model->pub) {
if (model->pub->addr == 0) {
model->pub->addr = 0xC000; /*Publish to group address 0xC000*/
}
}
}
}
}
It worked with me. But It cannot save the configuration so every time the SOC is restart, the app_bm_local_config() must be call
Best regards.
Dears,
I just post this for any one that need.
struct bt_mesh_comp bm_comp = {
.cid = CONFIG_BT_COMPANY_ID,
.elem = bm_elements,
.elem_count = ARRAY_SIZE(bm_elements),
};
/*****/
bt_mesh_init(&bm_prov, &bm_comp);
void app_bm_local_config(void) {
for (int e_idx=0; e_idx < bm_comp.elem_count; ++e_idx) {
struct bt_mesh_elem *element = bm_comp.elem + e_idx;
for (int m_idx = 0; m_idx < element->model_count; ++m_idx) {
struct bt_mesh_model *model = element->models + m_idx;
if (model->id == BT_MESH_MODEL_ID_CFG_SRV || model->id == BT_MESH_MODEL_ID_CFG_CLI ||
model->id == BT_MESH_MODEL_ID_HEALTH_SRV || model->id == BT_MESH_MODEL_ID_HEALTH_CLI)
continue;
if (model->keys[0] == 0xFFFF) {
model->keys[0] = 0; /*Appkey index is 0*/
}
for (int k_idx=0; k_idx < CONFIG_BT_MESH_MODEL_KEY_COUNT; k_idx++) LREP_RAW("%d ", model->keys[k_idx]);
if (model->pub) {
if (model->pub->addr == 0) {
model->pub->addr = 0xC000; /*Publish to group address 0xC000*/
}
}
}
}
}
It worked with me. But It cannot save the configuration so every time the SOC is restart, the app_bm_local_config() must be call
Best regards.