land_detector: get rid of one dot at a time

This commit is contained in:
Ban Siesta 2015-05-25 19:01:34 +01:00 committed by Lorenz Meier
parent 1734b97635
commit 11f80ceb64
1 changed files with 16 additions and 10 deletions

View File

@ -151,20 +151,26 @@ static int land_detector_start(const char *mode)
/* avoid memory fragmentation by not exiting start handler until the task has fully started */
const uint32_t timeout = hrt_absolute_time() + 5000000; //5 second timeout
while (!land_detector_task->isRunning()) {
usleep(50000);
printf(".");
fflush(stdout);
/* avoid printing dots just yet and do one sleep before the first check */
usleep(10000);
if (hrt_absolute_time() > timeout) {
err(1, "start failed - timeout");
land_detector_stop();
exit(1);
/* check if the waiting involving dots and a newline are still needed */
if (!land_detector_task->isRunning()) {
while (!land_detector_task->isRunning()) {
printf(".");
fflush(stdout);
usleep(50000);
if (hrt_absolute_time() > timeout) {
err(1, "start failed - timeout");
land_detector_stop();
exit(1);
}
}
printf("\n");
}
printf("\n");
//Remember current active mode
strncpy(_currentMode, mode, 12);