/*
* This file is part of Cleanflight and Betaflight.
*
* Cleanflight and Betaflight are free software. You can redistribute
* this software and/or modify this software 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 and Betaflight are distributed in the hope that they
* 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 this software.
*
* If not, see .
*/
#pragma once
#include
#include "pg/pg.h"
typedef enum {
RATES_TYPE_BETAFLIGHT = 0,
RATES_TYPE_RACEFLIGHT,
RATES_TYPE_KISS,
RATES_TYPE_ACTUAL,
} ratesType_e;
typedef enum {
THROTTLE_LIMIT_TYPE_OFF = 0,
THROTTLE_LIMIT_TYPE_SCALE,
THROTTLE_LIMIT_TYPE_CLIP,
THROTTLE_LIMIT_TYPE_COUNT // must be the last entry
} throttleLimitType_e;
typedef enum {
TPA_MODE_PD,
TPA_MODE_D
} tpaMode_e;
#define MAX_RATE_PROFILE_NAME_LENGTH 8u
typedef struct controlRateConfig_s {
uint8_t thrMid8;
uint8_t thrExpo8;
uint8_t rates_type;
uint8_t rcRates[3];
uint8_t rcExpo[3];
uint8_t rates[3];
uint8_t dynThrPID;
uint16_t tpa_breakpoint; // Breakpoint where TPA is activated
uint8_t throttle_limit_type; // Sets the throttle limiting type - off, scale or clip
uint8_t throttle_limit_percent; // Sets the maximum pilot commanded throttle limit
uint16_t rate_limit[3]; // Sets the maximum rate for the axes
uint8_t tpaMode; // Controls which PID terms TPA effects
char profileName[MAX_RATE_PROFILE_NAME_LENGTH + 1]; // Descriptive name for rate profile
} controlRateConfig_t;
PG_DECLARE_ARRAY(controlRateConfig_t, CONTROL_RATE_PROFILE_COUNT, controlRateProfiles);
extern controlRateConfig_t *currentControlRateProfile;
void loadControlRateProfile(void);
void changeControlRateProfile(uint8_t controlRateProfileIndex);
void copyControlRateProfile(const uint8_t dstControlRateProfileIndex, const uint8_t srcControlRateProfileIndex);