aboutsummaryrefslogtreecommitdiff
path: root/src/modules/sensors
diff options
context:
space:
mode:
authortstellanova <tstellanova+github@gmail.com>2013-08-28 18:32:16 -0700
committertstellanova <tstellanova+github@gmail.com>2013-08-28 18:32:16 -0700
commitb986607a750db74e05c60d09b048971bb0cfb18f (patch)
treea1e9189bc0a527659c44be4d21041a03aafe5384 /src/modules/sensors
parent53813d44a0c6322e46e72c0439e0265ddea76e9e (diff)
downloadpx4-firmware-b986607a750db74e05c60d09b048971bb0cfb18f.tar.gz
px4-firmware-b986607a750db74e05c60d09b048971bb0cfb18f.tar.bz2
px4-firmware-b986607a750db74e05c60d09b048971bb0cfb18f.zip
Add defines for RC15 params (16 channels total)
minor cleanup of rc sanity check code
Diffstat (limited to 'src/modules/sensors')
-rw-r--r--src/modules/sensors/sensor_params.c7
-rw-r--r--src/modules/sensors/sensors.cpp23
2 files changed, 21 insertions, 9 deletions
diff --git a/src/modules/sensors/sensor_params.c b/src/modules/sensors/sensor_params.c
index 16bfc8094..dd86f3e2e 100644
--- a/src/modules/sensors/sensor_params.c
+++ b/src/modules/sensors/sensor_params.c
@@ -158,6 +158,13 @@ PARAM_DEFINE_FLOAT(RC14_MAX, 2000);
PARAM_DEFINE_FLOAT(RC14_REV, 1.0f);
PARAM_DEFINE_FLOAT(RC14_DZ, 0.0f);
+PARAM_DEFINE_FLOAT(RC15_MIN, 1000);
+PARAM_DEFINE_FLOAT(RC15_TRIM, 1500);
+PARAM_DEFINE_FLOAT(RC15_MAX, 2000);
+PARAM_DEFINE_FLOAT(RC15_REV, 1.0f);
+PARAM_DEFINE_FLOAT(RC15_DZ, 0.0f);
+
+
PARAM_DEFINE_INT32(RC_RL1_DSM_VCC, 0); /* Relay 1 controls DSM VCC */
PARAM_DEFINE_INT32(RC_DSM_BIND, 0); /* 0 = Idle, 1 = Start DSM2 bind, 2 = Start DSMX bind */
diff --git a/src/modules/sensors/sensors.cpp b/src/modules/sensors/sensors.cpp
index 88a6bebb8..e98c4d548 100644
--- a/src/modules/sensors/sensors.cpp
+++ b/src/modules/sensors/sensors.cpp
@@ -660,7 +660,9 @@ int
Sensors::parameters_update()
{
bool rc_valid = true;
-
+ float tmpScaleFactor = 0.0f;
+ float tmpRevFactor = 0.0f;
+
/* rc values */
for (unsigned int i = 0; i < RC_CHANNELS_MAX; i++) {
@@ -670,18 +672,21 @@ Sensors::parameters_update()
param_get(_parameter_handles.rev[i], &(_parameters.rev[i]));
param_get(_parameter_handles.dz[i], &(_parameters.dz[i]));
- _parameters.scaling_factor[i] = (1.0f / ((_parameters.max[i] - _parameters.min[i]) / 2.0f) * _parameters.rev[i]);
-
+ tmpScaleFactor = (1.0f / ((_parameters.max[i] - _parameters.min[i]) / 2.0f) * _parameters.rev[i]);
+ tmpRevFactor = tmpScaleFactor * _parameters.rev[i];
+
/* handle blowup in the scaling factor calculation */
- if (!isfinite(_parameters.scaling_factor[i]) ||
- _parameters.scaling_factor[i] * _parameters.rev[i] < 0.000001f ||
- _parameters.scaling_factor[i] * _parameters.rev[i] > 0.2f) {
- warnx("RC chan %u not sane, scaling: %8.6f, rev: %d", i, _parameters.scaling_factor[i], (int)(_parameters.rev[i]));
+ if (!isfinite(tmpScaleFactor) ||
+ (tmpRevFactor < 0.000001f) ||
+ (tmpRevFactor > 0.2f) ) {
+ warnx("RC chan %u not sane, scaling: %8.6f, rev: %d", i, tmpScaleFactor, (int)(_parameters.rev[i]));
/* scaling factors do not make sense, lock them down */
- _parameters.scaling_factor[i] = 0;
+ _parameters.scaling_factor[i] = 0.0f;
rc_valid = false;
}
-
+ else {
+ _parameters.scaling_factor[i] = tmpScaleFactor;
+ }
}
/* handle wrong values */