diff --git a/src/drivers/gps/gps.cpp b/src/drivers/gps/gps.cpp index cc5d6676e5..9294a975d3 100644 --- a/src/drivers/gps/gps.cpp +++ b/src/drivers/gps/gps.cpp @@ -65,12 +65,12 @@ #include #include #include +#include #include #include #include #include #include -#include #include #include #include diff --git a/src/modules/systemlib/scheduling_priorities.h b/src/modules/systemlib/scheduling_priorities.h deleted file mode 100644 index 365fe82fd8..0000000000 --- a/src/modules/systemlib/scheduling_priorities.h +++ /dev/null @@ -1,91 +0,0 @@ -/**************************************************************************** - * - * Copyright (c) 2012-2017 PX4 Development Team. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name PX4 nor the names of its contributors may be - * used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************/ - -#pragma once - -#include - -/** - * @file scheduling_priorities.h - * - * Default schedulign priorities for standard system components - */ - -// SCHED_PRIORITY_MAX - -// Fast drivers - they need to run as quickly as possible to minimize control -// latency. -#define SCHED_PRIORITY_FAST_DRIVER (SCHED_PRIORITY_MAX - 0) - -// Attitude controllers typically are in a blocking wait on driver data -// they should be the first to run on an update, using the current sensor -// data and the *previous* attitude reference from the position controller -// which typically runs at a slower rate -#define SCHED_PRIORITY_ATTITUDE_CONTROL (SCHED_PRIORITY_MAX - 4) - -// Actuator outputs should run before right after the attitude controller -// updated -#define SCHED_PRIORITY_ACTUATOR_OUTPUTS (SCHED_PRIORITY_MAX - 4) - -// Position controllers typically are in a blocking wait on estimator data -// so when new sensor data is available they will run last. Keeping them -// on a high priority ensures that they are the first process to be run -// when the estimator updates. -#define SCHED_PRIORITY_POSITION_CONTROL (SCHED_PRIORITY_MAX - 5) - -// Estimators should run after the attitude controller but before anything -// else in the system. They wait on sensor data which is either coming -// from the sensor hub or from a driver. Keeping this class at a higher -// priority ensures that the estimator runs first if it can, but will -// wait for the sensor hub if its data is coming from it. -#define SCHED_PRIORITY_ESTIMATOR (SCHED_PRIORITY_MAX - 5) - -// The sensor hub conditions sensor data. It is not the fastest component -// in the controller chain, but provides easy-to-use data to the more -// complex downstream consumers -#define SCHED_PRIORITY_SENSOR_HUB (SCHED_PRIORITY_MAX - 6) - -// The log capture (which stores log data into RAM) should run faster -// than other components, but should not run before the control pipeline -#define SCHED_PRIORITY_LOG_CAPTURE (SCHED_PRIORITY_MAX - 10) - -// Slow drivers should run at a rate where they do not impact the overall -// system execution -#define SCHED_PRIORITY_SLOW_DRIVER (SCHED_PRIORITY_MAX - 35) - -// The navigation system needs to execute regularly but has no realtime needs -#define SCHED_PRIORITY_NAVIGATION (SCHED_PRIORITY_DEFAULT + 5) -// SCHED_PRIORITY_DEFAULT -#define SCHED_PRIORITY_LOG_WRITER (SCHED_PRIORITY_DEFAULT - 10) -#define SCHED_PRIORITY_PARAMS (SCHED_PRIORITY_DEFAULT - 15) -/* SCHED_PRIORITY_IDLE */ diff --git a/src/platforms/px4_tasks.h b/src/platforms/px4_tasks.h index 36e7cdad13..2b08b75536 100644 --- a/src/platforms/px4_tasks.h +++ b/src/platforms/px4_tasks.h @@ -1,8 +1,6 @@ /**************************************************************************** * - * Copyright (C) 2012 PX4 Development Team. All rights reserved. - * Author: Lorenz Meier - * Author: Mark Charlebois 2015 + * Copyright (c) 2012-2017 PX4 Development Team. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -35,6 +33,10 @@ /** * @file px4_tasks.h + * + * @author Lorenz Meier + * @author Mark Charlebois (2015) + * * Preserve existing task API call signature with OS abstraction */ @@ -99,6 +101,53 @@ typedef struct { #error "No target OS defined" #endif +// Fast drivers - they need to run as quickly as possible to minimize control +// latency. +#define SCHED_PRIORITY_FAST_DRIVER (SCHED_PRIORITY_MAX - 0) + +// Attitude controllers typically are in a blocking wait on driver data +// they should be the first to run on an update, using the current sensor +// data and the *previous* attitude reference from the position controller +// which typically runs at a slower rate +#define SCHED_PRIORITY_ATTITUDE_CONTROL (SCHED_PRIORITY_MAX - 4) + +// Actuator outputs should run before right after the attitude controller +// updated +#define SCHED_PRIORITY_ACTUATOR_OUTPUTS (SCHED_PRIORITY_MAX - 4) + +// Position controllers typically are in a blocking wait on estimator data +// so when new sensor data is available they will run last. Keeping them +// on a high priority ensures that they are the first process to be run +// when the estimator updates. +#define SCHED_PRIORITY_POSITION_CONTROL (SCHED_PRIORITY_MAX - 5) + +// Estimators should run after the attitude controller but before anything +// else in the system. They wait on sensor data which is either coming +// from the sensor hub or from a driver. Keeping this class at a higher +// priority ensures that the estimator runs first if it can, but will +// wait for the sensor hub if its data is coming from it. +#define SCHED_PRIORITY_ESTIMATOR (SCHED_PRIORITY_MAX - 5) + +// The sensor hub conditions sensor data. It is not the fastest component +// in the controller chain, but provides easy-to-use data to the more +// complex downstream consumers +#define SCHED_PRIORITY_SENSOR_HUB (SCHED_PRIORITY_MAX - 6) + +// The log capture (which stores log data into RAM) should run faster +// than other components, but should not run before the control pipeline +#define SCHED_PRIORITY_LOG_CAPTURE (SCHED_PRIORITY_MAX - 10) + +// Slow drivers should run at a rate where they do not impact the overall +// system execution +#define SCHED_PRIORITY_SLOW_DRIVER (SCHED_PRIORITY_MAX - 35) + +// The navigation system needs to execute regularly but has no realtime needs +#define SCHED_PRIORITY_NAVIGATION (SCHED_PRIORITY_DEFAULT + 5) +// SCHED_PRIORITY_DEFAULT +#define SCHED_PRIORITY_LOG_WRITER (SCHED_PRIORITY_DEFAULT - 10) +#define SCHED_PRIORITY_PARAMS (SCHED_PRIORITY_DEFAULT - 15) +// SCHED_PRIORITY_IDLE + typedef int (*px4_main_t)(int argc, char *argv[]); __BEGIN_DECLS