aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Gubler <thomasgubler@gmail.com>2014-12-28 21:57:30 +0100
committerThomas Gubler <thomasgubler@gmail.com>2014-12-28 22:55:04 +0100
commitef8abfbf148ac6fd7a405acdd4ee8eeb156867b6 (patch)
tree75455befdabb36c3269f9281f78a6cfe04ae8e11
parente9b41528dc39ac8a8c565a4c16fc5aa512e37b1a (diff)
downloadpx4-firmware-ef8abfbf148ac6fd7a405acdd4ee8eeb156867b6.tar.gz
px4-firmware-ef8abfbf148ac6fd7a405acdd4ee8eeb156867b6.tar.bz2
px4-firmware-ef8abfbf148ac6fd7a405acdd4ee8eeb156867b6.zip
rc2param: min and max values
m---------mavlink/include/mavlink/v1.00
-rw-r--r--src/modules/mavlink/mavlink_parameters.cpp2
-rw-r--r--src/modules/sensors/sensors.cpp10
-rw-r--r--src/modules/uORB/topics/rc_parameter_map.h2
4 files changed, 11 insertions, 3 deletions
diff --git a/mavlink/include/mavlink/v1.0 b/mavlink/include/mavlink/v1.0
-Subproject 87350ba3d2e42d15c5934fe3c3387167e9f8769
+Subproject b5732d07ec89025a9d321a923fe027d7df7b30a
diff --git a/src/modules/mavlink/mavlink_parameters.cpp b/src/modules/mavlink/mavlink_parameters.cpp
index 6e0813b38..e9858b73c 100644
--- a/src/modules/mavlink/mavlink_parameters.cpp
+++ b/src/modules/mavlink/mavlink_parameters.cpp
@@ -154,6 +154,8 @@ MavlinkParametersManager::handle_message(const mavlink_message_t *msg)
_rc_param_map.param_id[i][MAVLINK_MSG_PARAM_MAP_RC_FIELD_PARAM_ID_LEN] = '\0';
_rc_param_map.scale[i] = map_rc.scale;
_rc_param_map.value0[i] = map_rc.param_value0;
+ _rc_param_map.value_min[i] = map_rc.param_value_min;
+ _rc_param_map.value_max[i] = map_rc.param_value_max;
if (map_rc.param_index == -2) { // -2 means unset map
_rc_param_map.valid[i] = false;
} else {
diff --git a/src/modules/sensors/sensors.cpp b/src/modules/sensors/sensors.cpp
index d404d8a4c..3fa1575f0 100644
--- a/src/modules/sensors/sensors.cpp
+++ b/src/modules/sensors/sensors.cpp
@@ -1440,11 +1440,13 @@ Sensors::rc_parameter_map_poll(bool forced)
}
warnx("rc to parameter map updated");
for (int i = 0; i < RC_PARAM_MAP_NCHAN; i++) {
- warnx("\ti %d param_id %s scale %.3f value0 %.3f",
+ warnx("\ti %d param_id %s scale %.3f value0 %.3f, min %.3f, max %.3f",
i,
_rc_parameter_map.param_id[i],
(double)_rc_parameter_map.scale[i],
- (double)_rc_parameter_map.value0[i]
+ (double)_rc_parameter_map.value0[i],
+ (double)_rc_parameter_map.value_min[i],
+ (double)_rc_parameter_map.value_max[i]
);
}
}
@@ -1645,7 +1647,9 @@ Sensors::set_params_from_rc()
* maybe we need to introduce a more aggressive limit here */
if (rc_val > param_rc_values[i] + FLT_EPSILON || rc_val < param_rc_values[i] - FLT_EPSILON) {
param_rc_values[i] = rc_val;
- float param_val = _rc_parameter_map.value0[i] + _rc_parameter_map.scale[i] * rc_val;
+ float param_val = math::constrain(
+ _rc_parameter_map.value0[i] + _rc_parameter_map.scale[i] * rc_val,
+ _rc_parameter_map.value_min[i], _rc_parameter_map.value_max[i]);
param_set(_parameter_handles.rc_param[i], &param_val);
}
}
diff --git a/src/modules/uORB/topics/rc_parameter_map.h b/src/modules/uORB/topics/rc_parameter_map.h
index 47672c5d5..6e68dc4b6 100644
--- a/src/modules/uORB/topics/rc_parameter_map.h
+++ b/src/modules/uORB/topics/rc_parameter_map.h
@@ -63,6 +63,8 @@ struct rc_parameter_map_s {
char param_id[RC_PARAM_MAP_NCHAN][PARAM_ID_LEN + 1]; /**< corresponding param id, null terminated */
float scale[RC_PARAM_MAP_NCHAN]; /** scale to map the RC input [-1, 1] to a parameter value */
float value0[RC_PARAM_MAP_NCHAN]; /** inital value around which the parameter value is changed */
+ float value_min[RC_PARAM_MAP_NCHAN]; /** minimal parameter value */
+ float value_max[RC_PARAM_MAP_NCHAN]; /** minimal parameter value */
};
/**