aboutsummaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2013-03-09 10:47:37 +0100
committerLorenz Meier <lm@inf.ethz.ch>2013-03-09 10:47:37 +0100
commit7c8942f46c87c117533ce2c4a1886f7c364399ca (patch)
treeffd8ce2559ff9d1098b8706f4600bea30864ae42 /apps
parenta35d214d9860f92880cdecc783b17d96169aab92 (diff)
parent87ea7096fd481fde0f0a946366a5b9ff8b5dc638 (diff)
downloadpx4-firmware-7c8942f46c87c117533ce2c4a1886f7c364399ca.tar.gz
px4-firmware-7c8942f46c87c117533ce2c4a1886f7c364399ca.tar.bz2
px4-firmware-7c8942f46c87c117533ce2c4a1886f7c364399ca.zip
Merge branch 'master' of github.com:PX4/Firmware into px4io-i2c
Diffstat (limited to 'apps')
-rw-r--r--apps/sdlog/sdlog.c2
-rw-r--r--apps/sdlog/sdlog_ringbuffer.h4
-rw-r--r--apps/sensors/sensors.cpp8
-rw-r--r--apps/uORB/uORB.cpp7
4 files changed, 16 insertions, 5 deletions
diff --git a/apps/sdlog/sdlog.c b/apps/sdlog/sdlog.c
index 4fd5fea1b..df8745d9f 100644
--- a/apps/sdlog/sdlog.c
+++ b/apps/sdlog/sdlog.c
@@ -683,7 +683,7 @@ int sdlog_thread_main(int argc, char *argv[])
.vbat = buf.batt.voltage_v,
.bat_current = buf.batt.current_a,
.bat_discharged = buf.batt.discharged_mah,
- .adc = {buf.raw.adc_voltage_v[0], buf.raw.adc_voltage_v[1], buf.raw.adc_voltage_v[2]},
+ .adc = {buf.raw.adc_voltage_v[0], buf.raw.adc_voltage_v[1], buf.raw.adc_voltage_v[2], buf.raw.adc_voltage_v[3]},
.local_position = {buf.local_pos.x, buf.local_pos.y, buf.local_pos.z},
.gps_raw_position = {buf.gps_pos.lat, buf.gps_pos.lon, buf.gps_pos.alt},
.attitude = {buf.att.pitch, buf.att.roll, buf.att.yaw},
diff --git a/apps/sdlog/sdlog_ringbuffer.h b/apps/sdlog/sdlog_ringbuffer.h
index f7fc0d450..b65916459 100644
--- a/apps/sdlog/sdlog_ringbuffer.h
+++ b/apps/sdlog/sdlog_ringbuffer.h
@@ -56,7 +56,7 @@ struct sdlog_sysvector {
float vbat; /**< battery voltage in [volt] */
float bat_current; /**< battery discharge current */
float bat_discharged; /**< discharged energy in mAh */
- float adc[3]; /**< remaining auxiliary ADC ports [volt] */
+ float adc[4]; /**< ADC ports [volt] */
float local_position[3]; /**< tangent plane mapping into x,y,z [m] */
int32_t gps_raw_position[3]; /**< latitude [degrees] north, longitude [degrees] east, altitude above MSL [millimeter] */
float attitude[3]; /**< roll, pitch, yaw [rad] */
@@ -88,4 +88,4 @@ void sdlog_logbuffer_write(struct sdlog_logbuffer *lb, const struct sdlog_sysvec
int sdlog_logbuffer_read(struct sdlog_logbuffer *lb, struct sdlog_sysvector *elem);
-#endif \ No newline at end of file
+#endif
diff --git a/apps/sensors/sensors.cpp b/apps/sensors/sensors.cpp
index 9b95c0939..89fd71dc6 100644
--- a/apps/sensors/sensors.cpp
+++ b/apps/sensors/sensors.cpp
@@ -998,12 +998,16 @@ Sensors::adc_poll(struct sensor_combined_s &raw)
/* read all channels available */
int ret = read(_fd_adc, &buf_adc, sizeof(buf_adc));
- /* look for battery channel */
-
for (unsigned i = 0; i < sizeof(buf_adc) / sizeof(buf_adc[0]); i++) {
if (ret >= (int)sizeof(buf_adc[0])) {
+ /* Save raw voltage values */
+ if (i < (sizeof(raw.adc_voltage_v)) / sizeof(raw.adc_voltage_v[0])) {
+ raw.adc_voltage_v[i] = buf_adc[i].am_data / (4096.0f / 3.3f);
+ }
+
+ /* look for specific channels and process the raw voltage to measurement data */
if (ADC_BATTERY_VOLTAGE_CHANNEL == buf_adc[i].am_channel) {
/* Voltage in volts */
float voltage = (buf_adc[i].am_data * _parameters.battery_voltage_scaling);
diff --git a/apps/uORB/uORB.cpp b/apps/uORB/uORB.cpp
index 532e54b8e..7abbf42ae 100644
--- a/apps/uORB/uORB.cpp
+++ b/apps/uORB/uORB.cpp
@@ -429,6 +429,12 @@ ORBDevNode::appears_updated(SubscriberData *sd)
/* avoid racing between interrupt and non-interrupt context calls */
irqstate_t state = irqsave();
+ /* check if this topic has been published yet, if not bail out */
+ if (_data == nullptr) {
+ ret = false;
+ goto out;
+ }
+
/*
* If the subscriber's generation count matches the update generation
* count, there has been no update from their perspective; if they
@@ -485,6 +491,7 @@ ORBDevNode::appears_updated(SubscriberData *sd)
break;
}
+out:
irqrestore(state);
/* consider it updated */