|
|
|
@ -515,17 +515,11 @@ size_t
@@ -515,17 +515,11 @@ size_t
|
|
|
|
|
param_size(param_t param) |
|
|
|
|
{ |
|
|
|
|
if (handle_in_range(param)) { |
|
|
|
|
|
|
|
|
|
switch (param_type(param)) { |
|
|
|
|
|
|
|
|
|
case PARAM_TYPE_INT32: |
|
|
|
|
case PARAM_TYPE_FLOAT: |
|
|
|
|
return 4; |
|
|
|
|
|
|
|
|
|
case PARAM_TYPE_STRUCT ... PARAM_TYPE_STRUCT_MAX: |
|
|
|
|
/* decode structure size from type value */ |
|
|
|
|
return param_type(param) - PARAM_TYPE_STRUCT; |
|
|
|
|
|
|
|
|
|
default: |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
@ -562,14 +556,7 @@ param_get_value_ptr(param_t param)
@@ -562,14 +556,7 @@ param_get_value_ptr(param_t param)
|
|
|
|
|
v = ¶m_info_base[param].val; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (param_type(param) >= PARAM_TYPE_STRUCT && |
|
|
|
|
param_type(param) <= PARAM_TYPE_STRUCT_MAX) { |
|
|
|
|
|
|
|
|
|
result = v->p; |
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
|
result = v; |
|
|
|
|
} |
|
|
|
|
result = v; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return result; |
|
|
|
@ -718,7 +705,6 @@ param_set_internal(param_t param, const void *val, bool mark_saved, bool notify_
@@ -718,7 +705,6 @@ param_set_internal(param_t param, const void *val, bool mark_saved, bool notify_
|
|
|
|
|
|
|
|
|
|
/* update the changed value */ |
|
|
|
|
switch (param_type(param)) { |
|
|
|
|
|
|
|
|
|
case PARAM_TYPE_INT32: |
|
|
|
|
params_changed = params_changed || s->val.i != *(int32_t *)val; |
|
|
|
|
s->val.i = *(int32_t *)val; |
|
|
|
@ -729,27 +715,6 @@ param_set_internal(param_t param, const void *val, bool mark_saved, bool notify_
@@ -729,27 +715,6 @@ param_set_internal(param_t param, const void *val, bool mark_saved, bool notify_
|
|
|
|
|
s->val.f = *(float *)val; |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case PARAM_TYPE_STRUCT ... PARAM_TYPE_STRUCT_MAX: |
|
|
|
|
if (s->val.p == nullptr) { |
|
|
|
|
size_t psize = param_size(param); |
|
|
|
|
|
|
|
|
|
if (psize > 0) { |
|
|
|
|
s->val.p = malloc(psize); |
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
|
s->val.p = nullptr; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (s->val.p == nullptr) { |
|
|
|
|
PX4_ERR("failed to allocate parameter storage"); |
|
|
|
|
goto out; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
memcpy(s->val.p, val, param_size(param)); |
|
|
|
|
params_changed = true; |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
default: |
|
|
|
|
goto out; |
|
|
|
|
} |
|
|
|
@ -1121,22 +1086,6 @@ param_export(int fd, bool only_unsaved)
@@ -1121,22 +1086,6 @@ param_export(int fd, bool only_unsaved)
|
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case PARAM_TYPE_STRUCT ... PARAM_TYPE_STRUCT_MAX: { |
|
|
|
|
const void *value_ptr = param_get_value_ptr(s->param); |
|
|
|
|
|
|
|
|
|
/* lock as short as possible */ |
|
|
|
|
if (bson_encoder_append_binary(&encoder, |
|
|
|
|
name, |
|
|
|
|
BSON_BIN_BINARY, |
|
|
|
|
size, |
|
|
|
|
value_ptr)) { |
|
|
|
|
|
|
|
|
|
PX4_ERR("BSON append failed for '%s'", name); |
|
|
|
|
goto out; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
default: |
|
|
|
|
PX4_ERR("unrecognized parameter type"); |
|
|
|
|
goto out; |
|
|
|
|