mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-22 15:55:48 +03:00
93 lines
2.2 KiB
C
Executable file
93 lines
2.2 KiB
C
Executable file
/*
|
|
* This file is part of Cleanflight.
|
|
*
|
|
* Cleanflight is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* Cleanflight is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with Cleanflight. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
typedef enum {
|
|
TASK_PRIORITY_IDLE = 0, // Disables dynamic scheduling, task is executed only if no other task is active this cycle
|
|
TASK_PRIORITY_LOW = 1,
|
|
TASK_PRIORITY_MEDIUM = 3,
|
|
TASK_PRIORITY_HIGH = 5,
|
|
TASK_PRIORITY_REALTIME = 6,
|
|
TASK_PRIORITY_MAX = 255
|
|
} cfTaskPriority_e;
|
|
|
|
typedef struct {
|
|
const char * taskName;
|
|
bool isEnabled;
|
|
uint32_t desiredPeriod;
|
|
uint8_t staticPriority;
|
|
uint32_t maxExecutionTime;
|
|
uint32_t totalExecutionTime;
|
|
uint32_t lastExecutionTime;
|
|
uint32_t averageExecutionTime;
|
|
} cfTaskInfo_t;
|
|
|
|
typedef enum {
|
|
/* Actual tasks */
|
|
TASK_SYSTEM = 0,
|
|
TASK_GYROPID,
|
|
TASK_ACCEL,
|
|
TASK_SERIAL,
|
|
TASK_BEEPER,
|
|
TASK_BATTERY,
|
|
TASK_RX,
|
|
#ifdef GPS
|
|
TASK_GPS,
|
|
#endif
|
|
#ifdef MAG
|
|
TASK_COMPASS,
|
|
#endif
|
|
#ifdef BARO
|
|
TASK_BARO,
|
|
#endif
|
|
#ifdef SONAR
|
|
TASK_SONAR,
|
|
#endif
|
|
#if defined(BARO) || defined(SONAR)
|
|
TASK_ALTITUDE,
|
|
#endif
|
|
#ifdef DISPLAY
|
|
TASK_DISPLAY,
|
|
#endif
|
|
#ifdef TELEMETRY
|
|
TASK_TELEMETRY,
|
|
#endif
|
|
#ifdef LED_STRIP
|
|
TASK_LEDSTRIP,
|
|
#endif
|
|
#ifdef USE_BST
|
|
TASK_BST_PROCESS,
|
|
#endif
|
|
|
|
/* Count of real tasks */
|
|
TASK_COUNT,
|
|
|
|
/* Service task IDs */
|
|
TASK_NONE = TASK_COUNT,
|
|
TASK_SELF
|
|
} cfTaskId_e;
|
|
|
|
extern uint16_t cpuLoad;
|
|
extern uint16_t averageWaitingTasks100;
|
|
|
|
void getTaskInfo(cfTaskId_e taskId, cfTaskInfo_t * taskInfo);
|
|
void rescheduleTask(cfTaskId_e taskId, uint32_t newPeriodMicros);
|
|
void setTaskEnabled(cfTaskId_e taskId, bool newEnabledState);
|
|
uint32_t getTaskDeltaTime(cfTaskId_e taskId);
|
|
|
|
void scheduler(void);
|