Commit Graph
51 Commits
Author SHA1 Message Date
Beat Küng 24380ae88c logger: add SDLOG_DIRS_MAX param to limit the max number of log directories
Disabled by default, so that logs are not deleted unexpectedly.
2017-04-10 23:37:09 +02:00
Beat Küng 7f0db95f87 logger: reduce CPU load by ~1.5%
Reduces CPU load from ~6.9% to 5.3% (tested on Pixracer & Pixhawk). The
method is only used once, so it does not increase flash usage.
2017-04-10 23:37:09 +02:00
Beat Küng 75bd4f1121 logger: implement a logrotate
Remove old log directories on startup if free space falls below a threshold.
The threshold is 300MB or 10% of the disk capacity if that's smaller.
2017-04-10 23:37:09 +02:00
Beat Küng 190c14c186 logger: add preflight & postflight process usage & perf counters to the log
For the process usage: we need to measure over a certain period of time,
then we can use the results. To avoid blocking, this does:
- after log is started, initialze the load counters, then one second later
  add the results to the log
- after disarming: continue logging for one more second, then add the process
  load to the log and stop logging.
- to avoid a delay, 'logger stop' will stop immediately and not log
  postflight process usage.
2017-04-01 20:19:52 +02:00
Beat Küng 45ffb190e3 logger: add -p <topic> option to poll on a topic instead of running at fixed rate
this will be needed for fast replay. In addition, this option disables
the orb interval.
It can be removed again once we have time simulation.
2017-03-04 22:47:54 +08:00
Paul Riseborough 3a029e58c7 logger: Add mode for thermal calibration logging
Logs the IMU and baro data at 10Hz
2017-01-21 11:48:02 +01:00
wangxdflight b693e29d64 enable px4 flight for excelsior(legacy) 2017-01-16 08:25:58 -08:00
Beat Küng 30f80515ec fix logger: sscanf was used wrong for custom topics file
using scanf with %s reads until the first whitespace, which included the
comma (as per C standard and tested on linux). Behavior on NuttX differs.

This makes it work on both Linux and Nuttx.
2017-01-09 11:09:37 +01:00
Beat Küng 59ca22ee6d px4.h: remove this include, causes compile problems on GCC 6.1.0
It causes problems because it includes px4_nodehandle.h which in turn
includes <functional>, and this is not available on NuttX
2017-01-03 10:39:55 +01:00
Beat Küng 5ad2595f43 logger: add more version info & uuid
in particular:
- SW release version (in addition to the git hash)
- OS version (tag + git hash if exists)
- mcu version & revision & UUID
- toolchain version

The uuid can be disabled via parameter, it's enabled by default.
2016-12-21 11:35:10 +01:00
Beat Küng 41dc34204c version cleanup: move all version information into version.c and use a common API
The provided versioning information is the same, except for some additions,
like OS version (which still need to be implemented on NuttX).
2016-12-21 11:35:10 +01:00
Beat Küng 7140914d38 logger: remove LoggerSubscription::time_tried_subscribe
Instead use a single timestamp for subscription checks. This frees up
~800B of RAM.

Also make sure the subscription checks are distributed over time. On each
update, at most 1 topic subscription is checked. Reduces the load of the
logger from 7.3% to 5.8% (Pixracer)
2016-10-23 15:25:20 +02:00
Beat Küng f29a50df31 logger: add support for mavlink backend in Logger class, handle start/stop 2016-10-19 13:13:47 +02:00
Beat Küng 8ea38bc278 logger: better status output with configured backend mode 2016-10-19 13:13:47 +02:00
Beat Küng 7a60c1296e logger: re-use subscribed topic id's, only set them once on first use
Will be necessary when using multiple backends in parallel.
2016-10-19 13:13:47 +02:00
Beat Küng 12ded377d1 refactor logger: add need_reliable_transfer flag, remove write_wait 2016-10-19 13:13:47 +02:00
Beat Küng de20f1778e logger: add -m <mode> and -q <queue_size> parameters, prepare for mavlink backend 2016-10-19 13:13:47 +02:00
Beat Küng ccdaabc7fb refactor logger: prepare for multiple write backends 2016-10-19 13:13:47 +02:00
Beat Küng 4e1a4440ca logger: remove _enabled attribute and add LogWriter::is_started() instead 2016-10-19 13:13:47 +02:00
Beat Küng eae1585e38 logger: store full file name in logger, remove it from log writer
- also add log file to the status output
2016-08-24 21:24:35 +02:00
Julian Oes c4cb916afa Fix sdlog2/logger path/file name overflows. (#5138)
* logger: prevent logpath buffer overflows

The handling of the log path had the potential to cause buffer
overflows, especially on POSIX platforms where the paths are often much
longer than just 64 chars.

* sdlog2: prevent logpath buffer overflows

When the log folder path was created, this was done with the unsafe
sprintf function instead of snprintf. This caused buffer overflows in
SITL but the overflow was usually not detected until recent testing of
some work in progress.
2016-07-27 00:55:29 -07:00
Beat Küng a1b710025b Improve new logger update rate (#5073)
* logger: disable some default topics, which are most likely not used

This is also to safe CPU and lower the amount of file descriptors used.

* logger: use the hrt timer for more accurate scheduling

Under NuttX with the default rate of 285Hz, the actual measured rate was
only 200Hz while on Linux it was ~280Hz. The reason is that NuttX only
uses a usleep() granularity of 1ms, so that the typical sleep time is
longer than what we set.

Now the logger waits on a semaphore, which gets activated periodically
with a hrt timer. With this the measured rate is exactly the expected one,
285Hz.
2016-07-15 16:55:32 -07:00
Beat Küng 84a1a10006 logger: check if we are in replay mode via ENV variable 'replay' 2016-07-07 12:51:42 +02:00
Beat Küng 3bfedfff19 logger: printf cleanup, output statistics when stopping the logger 2016-06-10 08:51:54 +02:00
Mark Whitehorn 0ca63fa379 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
2016-06-10 08:51:54 +02:00
Mark Whitehorn f250911776 read topics to log from a text file 2016-06-10 08:51:54 +02:00
Beat Küng 0fb0f17ccb logger: reduce memory usage, by limiting the nr of added topics to 64 (was 128) 2016-06-06 23:27:16 +02:00
Beat Küng febe75bb12 logger: don't use uint8_t buffer[msg_size]; (it's C99 not C++)
Also, it's not clear where the allocation was. It looks like it was on
the heap, but the compiler could decide to put it on the stack. This is
very bad for us because we use fixed size stacks with tights bounds. So if
a user specifies a large topic to log, it could have crashed.

Now the allocation is on the heap and the user can specify any size of
topic to log (as long as there is enough memory).
2016-06-06 23:27:16 +02:00
Beat Küng 034772056a logger: prepare for replay: add replayed file to the log, use _replayed as file name suffix 2016-06-02 07:32:49 +02:00
Beat Küng 069dd01cb0 logger: subscribe to mavlink_log messages and write them to the log 2016-06-02 07:32:49 +02:00
Beat Küng 659ac8faf2 refactor logger: use static fields & move them to source file
avoids multiple declarations of...
2016-06-02 07:32:49 +02:00
Beat Küng bd96afa00b logger: use int32_t for utc_offset instead of uint32_t 2016-05-22 13:31:35 +02:00
Beat Küng c13247e14f logger: log all known formats, add ADD_LOGGED_MSG message
this is needed for nested topics.
2016-05-22 13:31:35 +02:00
Beat Küng 0ddd7a408c logger: write "sys_name" and "time_ref_utc" info to log file 2016-05-22 13:31:35 +02:00
Beat Küng 1719d9a957 logger: add a file magic 2016-05-22 13:31:35 +02:00
Beat Küng 0f30bfa0ac logger: fix -e parameter (logger immediately stopped again after start) 2016-05-14 11:27:07 +02:00
Beat Küng fcf7e8b78c logger: -e option only logs until disarm, add -f option to log until shutdown 2016-05-14 11:27:07 +02:00
Beat Küng fc51f81bf5 logger: add free space check (need at least 50MB to start) 2016-05-14 11:27:07 +02:00
Beat Küng fe2b80ffb8 logger: add '-t' option to use GPS date/time for file and dir name 2016-05-14 11:27:07 +02:00
Julian Oes d3a9930b50 logger: get paths working on Snapdragon 2016-05-14 11:27:07 +02:00
Beat Küng 693703de1e logger: initialize logger_ptr with null 2016-05-14 11:27:07 +02:00
Beat Küng d7f0808316 logger: create _vehicle_status_sub & _parameter_update_sub on stack
Since it's only used in run().
2016-05-14 11:27:07 +02:00
Beat Küng d5dcbf01d0 logger: add copyright to files 2016-05-14 11:27:07 +02:00
Beat Küng dde96dd4d7 logger: allocate _vehicle_status_sub & _parameter_update_sub on the logger thread
This makes sure the file descriptors are closed in the right thread.
Before on NuttX, when stopping the logger, orb unsubscribe failed due to
this.
2016-05-14 11:27:07 +02:00
Beat Küng 9a02dbdd66 logger: extend status ouput, disable DBGPRINT for now 2016-05-14 11:27:07 +02:00
Daniel Agar 69c1ce1714 WIP logger serialization 2016-05-14 11:27:07 +02:00
Beat Küng 63bd2cebf9 refactor logger: add a write_wait method to avoid code duplication 2016-05-14 11:27:07 +02:00
Beat Küng 8b5a325644 logger: remove _log_buffer from Logger, initialize it in the writer instead
it's not used in the logger, so don't store it there. It is accessed via
LogWriter::write.
This also makes sure the buffer size is >= _min_write_chunk and handles
allocation failure properly.
2016-05-14 11:27:07 +02:00
Mark Whitehorn 9dbbe8cd8d log changes to parameters 2016-05-14 11:27:07 +02:00
Mark Whitehorn fb4d72df86 write git and hw version records to log 2016-05-14 11:27:07 +02:00