Re: [PATCH BlueZ 1/2] mesh: Fix model ID prior to calling mesh config functions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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)




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux