Applied Patchset On Wed, 2020-08-12 at 12:03 -0700, Inga Stotland wrote: > Model IDs for SIG defined models need to be stripped off SIG_VENDOR > value used for internal housekeeping prior to calling functions > that save new model state in node configuration. > > Also, remove duplicate statements for model lookup in node config. > --- > mesh/mesh-config-json.c | 7 +------ > mesh/model.c | 12 ++++++++---- > 2 files changed, 9 insertions(+), 10 deletions(-) > > diff --git a/mesh/mesh-config-json.c b/mesh/mesh-config-json.c > index a40f92c01..086d618b1 100644 > --- a/mesh/mesh-config-json.c > +++ b/mesh/mesh-config-json.c > @@ -169,11 +169,6 @@ static json_object *get_element_model(json_object *jnode, int ele_idx, > size_t len; > char buf[9]; > > - if (!vendor) > - snprintf(buf, 5, "%4.4x", (uint16_t)mod_id); > - else > - snprintf(buf, 9, "%8.8x", mod_id); > - > if (!json_object_object_get_ex(jnode, "elements", &jelements)) > return NULL; > > @@ -189,7 +184,7 @@ static json_object *get_element_model(json_object *jnode, int ele_idx, > return NULL; > > if (!vendor) { > - snprintf(buf, 5, "%4.4x", mod_id); > + snprintf(buf, 5, "%4.4x", (uint16_t)mod_id); > len = 4; > } else { > snprintf(buf, 9, "%8.8x", mod_id); > diff --git a/mesh/model.c b/mesh/model.c > index 23afb93a8..136edb194 100644 > --- a/mesh/model.c > +++ b/mesh/model.c > @@ -628,6 +628,7 @@ static int update_binding(struct mesh_node *node, uint16_t addr, uint32_t id, > uint16_t app_idx, bool unbind) > { > struct mesh_model *mod; > + bool vendor; > int ele_idx = node_get_element_idx(node, addr); > > if (ele_idx < 0) > @@ -651,11 +652,15 @@ static int update_binding(struct mesh_node *node, uint16_t addr, uint32_t id, > if (unbind ^ has_binding(mod->bindings, app_idx)) > return MESH_STATUS_SUCCESS; > > + vendor = IS_VENDOR(id); > + id = vendor ? id : MODEL_ID(id); > + > if (unbind) { > model_unbind_idx(node, ele_idx, mod, app_idx); > + > if (!mesh_config_model_binding_del(node_config_get(node), > - addr, IS_VENDOR(id), > - id, app_idx)) > + addr, vendor, id, > + app_idx)) > return MESH_STATUS_STORAGE_FAIL; > > l_debug("Unbind key %4.4x to model %8.8x", app_idx, mod->id); > @@ -666,13 +671,12 @@ static int update_binding(struct mesh_node *node, uint16_t addr, uint32_t id, > return MESH_STATUS_INSUFF_RESOURCES; > > if (!mesh_config_model_binding_add(node_config_get(node), addr, > - IS_VENDOR(id), id, app_idx)) > + vendor, id, app_idx)) > return MESH_STATUS_STORAGE_FAIL; > > model_bind_idx(node, ele_idx, mod, app_idx); > > return MESH_STATUS_SUCCESS; > - > } > > static struct mesh_virtual *add_virtual(const uint8_t *v)