mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-25 20:03:34 +08:00
Merge pull request #1392 from PX4/textlog
System feedback message logging
This commit is contained in:
@@ -341,11 +341,18 @@ private:
|
|||||||
/* do not allow top copying this class */
|
/* do not allow top copying this class */
|
||||||
MavlinkStreamStatustext(MavlinkStreamStatustext &);
|
MavlinkStreamStatustext(MavlinkStreamStatustext &);
|
||||||
MavlinkStreamStatustext& operator = (const MavlinkStreamStatustext &);
|
MavlinkStreamStatustext& operator = (const MavlinkStreamStatustext &);
|
||||||
|
FILE *fp = nullptr;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
explicit MavlinkStreamStatustext(Mavlink *mavlink) : MavlinkStream(mavlink)
|
explicit MavlinkStreamStatustext(Mavlink *mavlink) : MavlinkStream(mavlink)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
~MavlinkStreamStatustext() {
|
||||||
|
if (fp) {
|
||||||
|
fclose(fp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void send(const hrt_abstime t)
|
void send(const hrt_abstime t)
|
||||||
{
|
{
|
||||||
if (!mavlink_logbuffer_is_empty(_mavlink->get_logbuffer())) {
|
if (!mavlink_logbuffer_is_empty(_mavlink->get_logbuffer())) {
|
||||||
@@ -359,6 +366,31 @@ protected:
|
|||||||
strncpy(msg.text, logmsg.text, sizeof(msg.text));
|
strncpy(msg.text, logmsg.text, sizeof(msg.text));
|
||||||
|
|
||||||
_mavlink->send_message(MAVLINK_MSG_ID_STATUSTEXT, &msg);
|
_mavlink->send_message(MAVLINK_MSG_ID_STATUSTEXT, &msg);
|
||||||
|
|
||||||
|
/* write log messages in first instance to disk */
|
||||||
|
if (_mavlink->get_instance_id() == 0) {
|
||||||
|
if (fp) {
|
||||||
|
fputs(msg.text, fp);
|
||||||
|
fputs("\n", fp);
|
||||||
|
fsync(fileno(fp));
|
||||||
|
} else {
|
||||||
|
/* string to hold the path to the log */
|
||||||
|
char log_file_name[32] = "";
|
||||||
|
char log_file_path[64] = "";
|
||||||
|
|
||||||
|
timespec ts;
|
||||||
|
clock_gettime(CLOCK_REALTIME, &ts);
|
||||||
|
/* use GPS time for log file naming, e.g. /fs/microsd/2014-01-19/19_37_52.bin */
|
||||||
|
time_t gps_time_sec = ts.tv_sec + (ts.tv_nsec / 1e9);
|
||||||
|
struct tm t;
|
||||||
|
gmtime_r(&gps_time_sec, &t);
|
||||||
|
|
||||||
|
// XXX we do not want to interfere here with the SD log app
|
||||||
|
strftime(log_file_name, sizeof(log_file_name), "msgs_%Y_%m_%d_%H_%M_%S.txt", &t);
|
||||||
|
snprintf(log_file_path, sizeof(log_file_path), "/fs/microsd/%s", log_file_name);
|
||||||
|
fp = fopen(log_file_path, "ab");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -628,6 +628,9 @@ void sdlog2_start_log()
|
|||||||
perf_print_all(perf_fd);
|
perf_print_all(perf_fd);
|
||||||
close(perf_fd);
|
close(perf_fd);
|
||||||
|
|
||||||
|
/* reset performance counters to get in-flight min and max values in post flight log */
|
||||||
|
perf_reset_all();
|
||||||
|
|
||||||
logging_enabled = true;
|
logging_enabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user