mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-30 04:43:36 +08:00
move default topics into logger.cpp; add on/off command
look for alternate topic list at /fs/microsd/etc/logging/logger_topics.txt on and off commands have the same effect as arm/disarm
This commit is contained in:
committed by
Beat Küng
parent
2bd15f1698
commit
0ca63fa379
@@ -120,6 +120,24 @@ int logger_main(int argc, char *argv[])
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!strcmp(argv[1], "on")) {
|
||||||
|
if (logger_ptr != nullptr) {
|
||||||
|
logger_ptr->set_arm_override(true);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!strcmp(argv[1], "off")) {
|
||||||
|
if (logger_ptr != nullptr) {
|
||||||
|
logger_ptr->set_arm_override(false);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (!strcmp(argv[1], "stop")) {
|
if (!strcmp(argv[1], "stop")) {
|
||||||
if (logger_ptr == nullptr) {
|
if (logger_ptr == nullptr) {
|
||||||
PX4_INFO("not running");
|
PX4_INFO("not running");
|
||||||
@@ -157,7 +175,7 @@ void Logger::usage(const char *reason)
|
|||||||
PX4_WARN("%s\n", reason);
|
PX4_WARN("%s\n", reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
PX4_INFO("usage: logger {start|stop|status} [-r <log rate>] [-b <buffer size>] -e -a -t -x\n"
|
PX4_INFO("usage: logger {start|stop|on|off|status} [-r <log rate>] [-b <buffer size>] -e -a -t -x\n"
|
||||||
"\t-r\tLog rate in Hz, 0 means unlimited rate\n"
|
"\t-r\tLog rate in Hz, 0 means unlimited rate\n"
|
||||||
"\t-b\tLog buffer size in KiB, default is 12\n"
|
"\t-b\tLog buffer size in KiB, default is 12\n"
|
||||||
"\t-e\tEnable logging right after start until disarm (otherwise only when armed)\n"
|
"\t-e\tEnable logging right after start until disarm (otherwise only when armed)\n"
|
||||||
@@ -295,6 +313,7 @@ void Logger::run_trampoline(int argc, char *argv[])
|
|||||||
|
|
||||||
Logger::Logger(size_t buffer_size, unsigned log_interval, bool log_on_start,
|
Logger::Logger(size_t buffer_size, unsigned log_interval, bool log_on_start,
|
||||||
bool log_until_shutdown, bool log_name_timestamp) :
|
bool log_until_shutdown, bool log_name_timestamp) :
|
||||||
|
_arm_override(false),
|
||||||
_log_on_start(log_on_start),
|
_log_on_start(log_on_start),
|
||||||
_log_until_shutdown(log_until_shutdown),
|
_log_until_shutdown(log_until_shutdown),
|
||||||
_log_name_timestamp(log_name_timestamp),
|
_log_name_timestamp(log_name_timestamp),
|
||||||
@@ -422,6 +441,28 @@ bool Logger::copy_if_updated_multi(LoggerSubscription &sub, int multi_instance,
|
|||||||
return updated;
|
return updated;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Logger::add_default_topics()
|
||||||
|
{
|
||||||
|
add_topic("sensor_gyro", 0);
|
||||||
|
add_topic("sensor_accel", 0);
|
||||||
|
add_topic("vehicle_rates_setpoint", 10);
|
||||||
|
add_topic("vehicle_attitude_setpoint", 10);
|
||||||
|
add_topic("vehicle_attitude", 0);
|
||||||
|
add_topic("actuator_outputs", 50);
|
||||||
|
add_topic("battery_status", 100);
|
||||||
|
add_topic("vehicle_command", 100);
|
||||||
|
add_topic("actuator_controls", 10);
|
||||||
|
add_topic("vehicle_local_position_setpoint", 200);
|
||||||
|
add_topic("rc_channels", 20);
|
||||||
|
add_topic("commander_state", 100);
|
||||||
|
add_topic("vehicle_local_position", 200);
|
||||||
|
add_topic("vehicle_global_position", 200);
|
||||||
|
add_topic("system_power", 100);
|
||||||
|
add_topic("servorail_status", 200);
|
||||||
|
add_topic("mc_att_ctrl_status", 50);
|
||||||
|
add_topic("vehicle_status", 200);
|
||||||
|
}
|
||||||
|
|
||||||
int Logger::add_topics_from_file(const char *fname)
|
int Logger::add_topics_from_file(const char *fname)
|
||||||
{
|
{
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
@@ -457,6 +498,7 @@ int Logger::add_topics_from_file(const char *fname)
|
|||||||
// default interval to zero
|
// default interval to zero
|
||||||
interval = 0;
|
interval = 0;
|
||||||
int nfields = sscanf(line, "%s, %u", topic_name, &interval);
|
int nfields = sscanf(line, "%s, %u", topic_name, &interval);
|
||||||
|
|
||||||
if (nfields > 0) {
|
if (nfields > 0) {
|
||||||
/* add topic with specified interval */
|
/* add topic with specified interval */
|
||||||
add_topic(topic_name, interval);
|
add_topic(topic_name, interval);
|
||||||
@@ -494,7 +536,13 @@ void Logger::run()
|
|||||||
uORB::Subscription<parameter_update_s> parameter_update_sub(ORB_ID(parameter_update));
|
uORB::Subscription<parameter_update_s> parameter_update_sub(ORB_ID(parameter_update));
|
||||||
uORB::Subscription<mavlink_log_s> mavlink_log_sub(ORB_ID(mavlink_log));
|
uORB::Subscription<mavlink_log_s> mavlink_log_sub(ORB_ID(mavlink_log));
|
||||||
|
|
||||||
add_topics_from_file("/etc/logging/default_topics.txt");
|
int ntopics = add_topics_from_file("/fs/microsd/etc/logging/logger_topics.txt");
|
||||||
|
warnx("logging %d topics from logger_topics.txt", ntopics);
|
||||||
|
|
||||||
|
if (ntopics < 1) {
|
||||||
|
warnx("logging default topics");
|
||||||
|
add_default_topics();
|
||||||
|
}
|
||||||
|
|
||||||
//all topics added. Get required message buffer size
|
//all topics added. Get required message buffer size
|
||||||
int max_msg_size = 0;
|
int max_msg_size = 0;
|
||||||
@@ -559,7 +607,8 @@ void Logger::run()
|
|||||||
if (vehicle_status_sub.check_updated()) {
|
if (vehicle_status_sub.check_updated()) {
|
||||||
vehicle_status_sub.update();
|
vehicle_status_sub.update();
|
||||||
bool armed = (vehicle_status_sub.get().arming_state == vehicle_status_s::ARMING_STATE_ARMED) ||
|
bool armed = (vehicle_status_sub.get().arming_state == vehicle_status_s::ARMING_STATE_ARMED) ||
|
||||||
(vehicle_status_sub.get().arming_state == vehicle_status_s::ARMING_STATE_ARMED_ERROR);
|
(vehicle_status_sub.get().arming_state == vehicle_status_s::ARMING_STATE_ARMED_ERROR) ||
|
||||||
|
_arm_override;
|
||||||
|
|
||||||
if (_was_armed != armed && !_log_until_shutdown) {
|
if (_was_armed != armed && !_log_until_shutdown) {
|
||||||
_was_armed = armed;
|
_was_armed = armed;
|
||||||
|
|||||||
@@ -107,6 +107,8 @@ public:
|
|||||||
|
|
||||||
void status();
|
void status();
|
||||||
|
|
||||||
|
void set_arm_override(bool override) { _arm_override = override; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static void run_trampoline(int argc, char *argv[]);
|
static void run_trampoline(int argc, char *argv[]);
|
||||||
|
|
||||||
@@ -193,6 +195,8 @@ private:
|
|||||||
*/
|
*/
|
||||||
int add_topics_from_file(const char *fname);
|
int add_topics_from_file(const char *fname);
|
||||||
|
|
||||||
|
void add_default_topics();
|
||||||
|
|
||||||
static constexpr size_t MAX_TOPICS_NUM = 64; /**< Maximum number of logged topics */
|
static constexpr size_t MAX_TOPICS_NUM = 64; /**< Maximum number of logged topics */
|
||||||
static constexpr unsigned MAX_NO_LOGFOLDER = 999; /**< Maximum number of log dirs */
|
static constexpr unsigned MAX_NO_LOGFOLDER = 999; /**< Maximum number of log dirs */
|
||||||
static constexpr unsigned MAX_NO_LOGFILE = 999; /**< Maximum number of log files */
|
static constexpr unsigned MAX_NO_LOGFILE = 999; /**< Maximum number of log files */
|
||||||
@@ -209,6 +213,8 @@ private:
|
|||||||
bool _has_log_dir = false;
|
bool _has_log_dir = false;
|
||||||
bool _enabled = false;
|
bool _enabled = false;
|
||||||
bool _was_armed = false;
|
bool _was_armed = false;
|
||||||
|
bool _arm_override;
|
||||||
|
|
||||||
|
|
||||||
// statistics
|
// statistics
|
||||||
hrt_abstime _start_time; ///< Time when logging started (not the logger thread)
|
hrt_abstime _start_time; ///< Time when logging started (not the logger thread)
|
||||||
|
|||||||
Reference in New Issue
Block a user