Diff between fd45d85ad9ff987d5f2d3d7f95ef95f757b0f514 and 8ea7d5842817bc339f482be3a53cadb7df7aa76d

Changed Files

File Additions Deletions Status
mesh/mesh-config-json.c +1 -6 modified
mesh/model.c +8 -4 modified

Full Patch

diff --git a/mesh/mesh-config-json.c b/mesh/mesh-config-json.c
index a40f92c..086d618 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 23afb93..136edb1 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)