From 54e9bda4120f8774f1cd1c4da64f2000d565ea93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Wed, 25 Jan 2017 18:28:25 +0100 Subject: [PATCH] temperature_calibration: properly initialize gyro subscriptions & bounds checking --- src/modules/events/temperature_calibration.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/modules/events/temperature_calibration.cpp b/src/modules/events/temperature_calibration.cpp index 8e072c4eab..60143c5d0d 100644 --- a/src/modules/events/temperature_calibration.cpp +++ b/src/modules/events/temperature_calibration.cpp @@ -152,6 +152,10 @@ void Tempcal::task_main() unsigned num_gyro = orb_group_count(ORB_ID(sensor_gyro)); unsigned num_samples[SENSOR_COUNT_MAX] = {0}; + if (num_gyro > SENSOR_COUNT_MAX) { + num_gyro = SENSOR_COUNT_MAX; + } + bool _cold_soaked[SENSOR_COUNT_MAX] = {false}; bool _hot_soaked[SENSOR_COUNT_MAX] = {false}; bool _tempcal_complete[SENSOR_COUNT_MAX] = {false}; @@ -160,12 +164,7 @@ void Tempcal::task_main() float _ref_temp[SENSOR_COUNT_MAX]; for (unsigned i = 0; i < num_gyro; i++) { - if (gyro_sub[i] < 0) { - gyro_sub[i] = orb_subscribe_multi(ORB_ID(sensor_gyro), i); - } - } - - for (unsigned i = 0; i < num_gyro; i++) { + gyro_sub[i] = orb_subscribe_multi(ORB_ID(sensor_gyro), i); fds[i].fd = gyro_sub[i]; fds[i].events = POLLIN; }