diff --git a/src/modules/logger/logged_topics.cpp b/src/modules/logger/logged_topics.cpp index 00dcbaff63..a08b8bd627 100644 --- a/src/modules/logger/logged_topics.cpp +++ b/src/modules/logger/logged_topics.cpp @@ -106,9 +106,9 @@ void LoggedTopics::add_default_topics() add_topic("yaw_estimator_status", 200); // multi topics - add_topic_multi("actuator_outputs", 100); - add_topic_multi("logger_status"); - add_topic_multi("multirotor_motor_limits", 1000); + add_topic_multi("actuator_outputs", 100, 2); + add_topic_multi("logger_status", 0, 2); + add_topic_multi("multirotor_motor_limits", 1000, 2); add_topic_multi("telemetry_status", 1000); add_topic_multi("wind_estimate", 1000); @@ -117,13 +117,13 @@ void LoggedTopics::add_default_topics() add_topic_multi("differential_pressure", 1000); add_topic_multi("distance_sensor", 1000); add_topic_multi("optical_flow", 1000); - add_topic_multi("sensor_accel", 1000); - add_topic_multi("sensor_baro", 1000); - add_topic_multi("sensor_gyro", 1000); - add_topic_multi("sensor_mag", 1000); - add_topic_multi("vehicle_gps_position", 1000); - add_topic_multi("vehicle_imu", 500); - add_topic_multi("vehicle_imu_status", 1000); + add_topic_multi("sensor_accel", 1000, 3); + add_topic_multi("sensor_baro", 1000, 3); + add_topic_multi("sensor_gyro", 1000, 3); + add_topic_multi("sensor_mag", 1000, 4); + add_topic_multi("vehicle_gps_position", 1000, 2); + add_topic_multi("vehicle_imu", 500, 3); + add_topic_multi("vehicle_imu_status", 1000, 3); #ifdef CONFIG_ARCH_BOARD_PX4_SITL add_topic("actuator_controls_virtual_fw"); @@ -180,22 +180,22 @@ void LoggedTopics::add_estimator_replay_topics() add_topic("vehicle_visual_odometry"); add_topic("vehicle_visual_odometry_aligned"); add_topic_multi("distance_sensor"); - add_topic_multi("vehicle_gps_position"); + add_topic_multi("vehicle_gps_position", 0, 2); } void LoggedTopics::add_thermal_calibration_topics() { - add_topic_multi("sensor_accel", 100); - add_topic_multi("sensor_baro", 100); - add_topic_multi("sensor_gyro", 100); + add_topic_multi("sensor_accel", 100, 3); + add_topic_multi("sensor_baro", 100, 3); + add_topic_multi("sensor_gyro", 100, 3); } void LoggedTopics::add_sensor_comparison_topics() { - add_topic_multi("sensor_accel", 100); - add_topic_multi("sensor_baro", 100); - add_topic_multi("sensor_gyro", 100); - add_topic_multi("sensor_mag", 100); + add_topic_multi("sensor_accel", 100, 3); + add_topic_multi("sensor_baro", 100, 3); + add_topic_multi("sensor_gyro", 100, 3); + add_topic_multi("sensor_mag", 100, 4); } void LoggedTopics::add_vision_and_avoidance_topics() @@ -358,10 +358,10 @@ bool LoggedTopics::add_topic(const char *name, uint16_t interval_ms, uint8_t ins return success; } -bool LoggedTopics::add_topic_multi(const char *name, uint16_t interval_ms) +bool LoggedTopics::add_topic_multi(const char *name, uint16_t interval_ms, uint8_t max_num_instances) { // add all possible instances - for (uint8_t instance = 0; instance < ORB_MULTI_MAX_INSTANCES; instance++) { + for (uint8_t instance = 0; instance < max_num_instances; instance++) { add_topic(name, interval_ms, instance); } diff --git a/src/modules/logger/logged_topics.h b/src/modules/logger/logged_topics.h index 648d6c046c..1a15daaf38 100644 --- a/src/modules/logger/logged_topics.h +++ b/src/modules/logger/logged_topics.h @@ -110,7 +110,16 @@ private: * @return true on success */ bool add_topic(const char *name, uint16_t interval_ms = 0, uint8_t instance = 0); - bool add_topic_multi(const char *name, uint16_t interval_ms = 0); + + /** + * Add a topic to be logged. + * @param name topic name + * @param interval limit in milliseconds if >0, otherwise log as fast as the topic is updated. + * @param instance orb topic instance + * @param max_num_instances the max multi-instance to add. + * @return true on success + */ + bool add_topic_multi(const char *name, uint16_t interval_ms = 0, uint8_t max_num_instances = ORB_MULTI_MAX_INSTANCES); /** * Parse a file containing a list of uORB topics to log, calling add_topic for each