mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-21 05:23:33 +08:00
new logger
This commit is contained in:
committed by
Lorenz Meier
parent
9a0e962cbf
commit
dcdeefd5ea
@@ -31,7 +31,7 @@ then
|
|||||||
then
|
then
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if logger start -b 20
|
if logger start -b 32
|
||||||
then
|
then
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -22,23 +22,11 @@ LogWriter::LogWriter(uint8_t *buffer, size_t buffer_size) :
|
|||||||
void LogWriter::start_log(const char *filename)
|
void LogWriter::start_log(const char *filename)
|
||||||
{
|
{
|
||||||
::strncpy(_filename, filename, sizeof(_filename));
|
::strncpy(_filename, filename, sizeof(_filename));
|
||||||
_fd = ::open(_filename, O_CREAT | O_WRONLY, PX4_O_MODE_666);
|
|
||||||
|
|
||||||
if (_fd < 0) {
|
|
||||||
PX4_WARN("can't open log file %s", _filename);
|
|
||||||
_should_run = false;
|
|
||||||
return;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
PX4_WARN("opened log file: %s", _filename);
|
|
||||||
_should_run = true;
|
|
||||||
_running = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Clear buffer and counters
|
// Clear buffer and counters
|
||||||
_head = 0;
|
_head = 0;
|
||||||
_count = 0;
|
_count = 0;
|
||||||
_total_written = 0;
|
_total_written = 0;
|
||||||
|
_should_run = true;
|
||||||
notify();
|
notify();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -102,7 +90,21 @@ void LogWriter::run()
|
|||||||
}
|
}
|
||||||
|
|
||||||
while (!_exit_thread) {
|
while (!_exit_thread) {
|
||||||
// Outer endless loop
|
// Outer endless loop, start new file each time
|
||||||
|
// _filename must be set before setting _should_run = true
|
||||||
|
|
||||||
|
|
||||||
|
_fd = ::open(_filename, O_CREAT | O_WRONLY, PX4_O_MODE_666);
|
||||||
|
|
||||||
|
if (_fd < 0) {
|
||||||
|
PX4_WARN("can't open log file %s", _filename);
|
||||||
|
_should_run = false;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
PX4_WARN("started, log file: %s", _filename);
|
||||||
|
|
||||||
|
_should_run = true;
|
||||||
|
|
||||||
int poll_count = 0;
|
int poll_count = 0;
|
||||||
int written = 0;
|
int written = 0;
|
||||||
@@ -162,25 +164,22 @@ void LogWriter::run()
|
|||||||
_total_written += written;
|
_total_written += written;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_running && !_should_run && written == static_cast<int>(available) && !is_part) {
|
if (!_should_run && written == static_cast<int>(available) && !is_part) {
|
||||||
// Stop only when all data written
|
// Stop only when all data written
|
||||||
_running = false;
|
|
||||||
_head = 0;
|
|
||||||
_count = 0;
|
|
||||||
|
|
||||||
int res = ::close(_fd);
|
|
||||||
|
|
||||||
if (res) {
|
|
||||||
PX4_WARN("error closing log file");
|
|
||||||
|
|
||||||
} else {
|
|
||||||
PX4_WARN("closed logfile: %s, bytes written: %zu", _filename, _total_written);
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_head = 0;
|
||||||
|
_count = 0;
|
||||||
|
|
||||||
|
int res = ::close(_fd);
|
||||||
|
|
||||||
|
if (res) {
|
||||||
|
PX4_WARN("error closing log file");
|
||||||
|
}
|
||||||
|
|
||||||
|
PX4_WARN("stopped, bytes written: %zu", _total_written);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -63,7 +63,6 @@ private:
|
|||||||
size_t _count = 0;
|
size_t _count = 0;
|
||||||
size_t _total_written = 0;
|
size_t _total_written = 0;
|
||||||
bool _should_run = false;
|
bool _should_run = false;
|
||||||
bool _running = false;
|
|
||||||
bool _exit_thread = false;
|
bool _exit_thread = false;
|
||||||
pthread_mutex_t _mtx;
|
pthread_mutex_t _mtx;
|
||||||
pthread_cond_t _cv;
|
pthread_cond_t _cv;
|
||||||
|
|||||||
@@ -356,7 +356,7 @@ void Logger::run()
|
|||||||
struct mallinfo alloc_info = {};
|
struct mallinfo alloc_info = {};
|
||||||
#endif /* DBGPRINT */
|
#endif /* DBGPRINT */
|
||||||
|
|
||||||
PX4_WARN("logger started");
|
PX4_WARN("started");
|
||||||
|
|
||||||
int mkdir_ret = mkdir(LOG_ROOT, S_IRWXU | S_IRWXG | S_IRWXO);
|
int mkdir_ret = mkdir(LOG_ROOT, S_IRWXU | S_IRWXG | S_IRWXO);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user