mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-26 17:55:28 +03:00
CLI interface to set async modes
This commit is contained in:
parent
68536c62b4
commit
0dc1c21365
5 changed files with 78 additions and 0 deletions
|
@ -381,6 +381,32 @@ static void resetServoMixerConfig(servoMixerConfig_t *servoMixerConfig)
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef ASYNC_GYRO_PROCESSING
|
||||
uint32_t getLooptime(void) {
|
||||
return masterConfig.looptime;
|
||||
}
|
||||
|
||||
uint16_t getAccUpdateFrequency(void) {
|
||||
if (masterConfig.asyncMode == ASYNC_MODE_ALL) {
|
||||
return masterConfig.accTaskFrequency;
|
||||
} else {
|
||||
return 1000000 / getLooptime();
|
||||
}
|
||||
}
|
||||
|
||||
uint16_t getAttiUpdateFrequency(void) {
|
||||
if (masterConfig.asyncMode == ASYNC_MODE_ALL) {
|
||||
return masterConfig.attiTaskFrequency;
|
||||
} else {
|
||||
return 1000000 / getLooptime();
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t getAsyncMode(void) {
|
||||
return masterConfig.asyncMode;
|
||||
}
|
||||
#endif
|
||||
|
||||
uint8_t getCurrentProfile(void)
|
||||
{
|
||||
return masterConfig.current_profile_index;
|
||||
|
@ -522,6 +548,12 @@ static void resetConf(void)
|
|||
masterConfig.gyroSync = 0;
|
||||
masterConfig.gyroSyncDenominator = 2;
|
||||
|
||||
#ifdef ASYNC_GYRO_PROCESSING
|
||||
masterConfig.accTaskFrequency = ACC_TASK_FREQUENCY_DEFAULT;
|
||||
masterConfig.attiTaskFrequency = ATTI_TASK_FREQUENCY_DEFAULT;
|
||||
masterConfig.asyncMode = ASYNC_MODE_NONE;
|
||||
#endif
|
||||
|
||||
resetPidProfile(¤tProfile->pidProfile);
|
||||
|
||||
resetControlRateConfig(&masterConfig.controlRateProfiles[0]);
|
||||
|
|
|
@ -28,6 +28,20 @@
|
|||
#define MAX_CONTROL_RATE_PROFILE_COUNT 3
|
||||
#define ONESHOT_FEATURE_CHANGED_DELAY_ON_BOOT_MS 1500
|
||||
|
||||
#define ACC_TASK_FREQUENCY_DEFAULT 500
|
||||
#define ACC_TASK_FREQUENCY_MIN 15
|
||||
#define ACC_TASK_FREQUENCY_MAX 1000
|
||||
#define ATTI_TASK_FREQUENCY_DEFAULT 1000
|
||||
#define ATTI_TASK_FREQUENCY_MIN 15
|
||||
#define ATTI_TASK_FREQUENCY_MAX 1000
|
||||
|
||||
#ifdef ASYNC_GYRO_PROCESSING
|
||||
typedef enum {
|
||||
ASYNC_MODE_NONE,
|
||||
ASYNC_MODE_GYRO,
|
||||
ASYNC_MODE_ALL
|
||||
} asyncMode_e;
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
FEATURE_RX_PPM = 1 << 0,
|
||||
|
@ -105,3 +119,9 @@ uint16_t getCurrentMinthrottle(void);
|
|||
struct master_s;
|
||||
void targetConfiguration(struct master_s *config);
|
||||
|
||||
#ifdef ASYNC_GYRO_PROCESSING
|
||||
uint32_t getLooptime(void);
|
||||
uint16_t getAccUpdateFrequency(void);
|
||||
uint16_t getAttiUpdateFrequency(void);
|
||||
uint8_t getAsyncMode(void);
|
||||
#endif
|
||||
|
|
|
@ -74,6 +74,12 @@ typedef struct master_s {
|
|||
uint8_t gyroSync; // Enable interrupt based loop
|
||||
uint8_t gyroSyncDenominator; // Gyro sync Denominator
|
||||
|
||||
#ifdef ASYNC_GYRO_PROCESSING
|
||||
uint16_t accTaskFrequency;
|
||||
uint16_t attiTaskFrequency;
|
||||
uint8_t asyncMode;
|
||||
#endif
|
||||
|
||||
motorMixer_t customMotorMixer[MAX_SUPPORTED_MOTORS];
|
||||
#ifdef USE_SERVOS
|
||||
servoMixer_t customServoMixer[MAX_SERVO_RULES];
|
||||
|
|
|
@ -468,6 +468,12 @@ static const char * const lookupTablePwmProtocol[] = {
|
|||
"STANDARD", "ONESHOT125", "ONESHOT42", "MULTISHOT", "BRUSHED"
|
||||
};
|
||||
|
||||
#ifdef ASYNC_GYRO_PROCESSING
|
||||
static const char * const lookupTableAsyncMode[] = {
|
||||
"NONE", "GYRO", "ALL"
|
||||
};
|
||||
#endif
|
||||
|
||||
typedef struct lookupTableEntry_s {
|
||||
const char * const *values;
|
||||
const uint8_t valueCount;
|
||||
|
@ -503,6 +509,9 @@ typedef enum {
|
|||
#endif
|
||||
TABLE_AUX_OPERATOR,
|
||||
TABLE_MOTOR_PWM_PROTOCOL,
|
||||
#ifdef ASYNC_GYRO_PROCESSING
|
||||
TABLE_ASYNC_MODE,
|
||||
#endif
|
||||
} lookupTableIndex_e;
|
||||
|
||||
static const lookupTableEntry_t lookupTables[] = {
|
||||
|
@ -535,6 +544,9 @@ static const lookupTableEntry_t lookupTables[] = {
|
|||
#endif
|
||||
{ lookupTableAuxOperator, sizeof(lookupTableAuxOperator) / sizeof(char *) },
|
||||
{ lookupTablePwmProtocol, sizeof(lookupTablePwmProtocol) / sizeof(char *) },
|
||||
#ifdef ASYNC_GYRO_PROCESSING
|
||||
{ lookupTableAsyncMode, sizeof(lookupTableAsyncMode) / sizeof(char *) },
|
||||
#endif
|
||||
};
|
||||
|
||||
#define VALUE_TYPE_OFFSET 0
|
||||
|
@ -592,6 +604,12 @@ const clivalue_t valueTable[] = {
|
|||
{ "gyro_sync", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, &masterConfig.gyroSync, .config.lookup = { TABLE_OFF_ON } },
|
||||
{ "gyro_sync_denom", VAR_UINT8 | MASTER_VALUE, &masterConfig.gyroSyncDenominator, .config.minmax = { 1, 32 } },
|
||||
|
||||
#ifdef ASYNC_GYRO_PROCESSING
|
||||
{ "acc_task_frequency", VAR_UINT16 | MASTER_VALUE, &masterConfig.accTaskFrequency, .config.minmax = { ACC_TASK_FREQUENCY_MIN, ACC_TASK_FREQUENCY_MAX } },
|
||||
{ "atti_task_frequency", VAR_UINT16 | MASTER_VALUE, &masterConfig.attiTaskFrequency, .config.minmax = { ATTI_TASK_FREQUENCY_MIN, ATTI_TASK_FREQUENCY_MAX } },
|
||||
{ "async_mode", VAR_UINT8 | MASTER_VALUE | MODE_LOOKUP, &masterConfig.asyncMode, .config.lookup = { TABLE_ASYNC_MODE } },
|
||||
#endif
|
||||
|
||||
{ "mid_rc", VAR_UINT16 | MASTER_VALUE, &masterConfig.rxConfig.midrc, .config.minmax = { 1200, 1700 }, 0 },
|
||||
{ "min_check", VAR_UINT16 | MASTER_VALUE, &masterConfig.rxConfig.mincheck, .config.minmax = { PWM_RANGE_ZERO, PWM_RANGE_MAX }, 0 },
|
||||
{ "max_check", VAR_UINT16 | MASTER_VALUE, &masterConfig.rxConfig.maxcheck, .config.minmax = { PWM_RANGE_ZERO, PWM_RANGE_MAX }, 0 },
|
||||
|
|
|
@ -25,6 +25,8 @@
|
|||
#define SERIAL_RX
|
||||
#define USE_CLI
|
||||
|
||||
#define ASYNC_GYRO_PROCESSING
|
||||
|
||||
#if (FLASH_SIZE <= 64)
|
||||
#define SKIP_TASK_STATISTICS
|
||||
#define SKIP_CLI_COMMAND_HELP
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue