new standalone drivers/system_power (split out of adc)

- system_power portion of drivers/adc split into a new standalone module (drivers/system_power)
 - additional availability flags added to system_power.msg so we know what boards even support (previously certain flags were faked if not available)
 - drivers/system_power scheduled at minimum rate by default, but now also scheduled immediately on any relevant GPIO events
 - now instead of running at 100 Hz with heavily reduced logging we can run at a minimal rate, log at full rate, and catch relevant changes immediately
This commit is contained in:
Daniel Agar
2021-01-16 14:20:54 -05:00
parent cee4016665
commit 3fff512ec0
127 changed files with 863 additions and 1017 deletions
@@ -129,37 +129,41 @@
# define BOARD_VALID_UV (3.7f)
#endif
/* Legacy default */
#if !defined(BOARD_NUMBER_BRICKS)
# define BOARD_NUMBER_BRICKS 1
# if !defined(BOARD_ADC_BRICK_VALID)
# define BOARD_ADC_BRICK_VALID (1)
# endif
#endif
#if BOARD_NUMBER_BRICKS == 0
/* allow SITL to disable all bricks */
#elif BOARD_NUMBER_BRICKS == 1
# define BOARD_BATT_V_LIST {ADC_BATTERY_VOLTAGE_CHANNEL}
# define BOARD_BATT_I_LIST {ADC_BATTERY_CURRENT_CHANNEL}
# define BOARD_BRICK_VALID_LIST {BOARD_ADC_BRICK_VALID}
#elif BOARD_NUMBER_BRICKS == 2
# if !defined(BOARD_NUMBER_DIGITAL_BRICKS)
# define BOARD_BATT_V_LIST {ADC_BATTERY1_VOLTAGE_CHANNEL, ADC_BATTERY2_VOLTAGE_CHANNEL}
# define BOARD_BATT_I_LIST {ADC_BATTERY1_CURRENT_CHANNEL, ADC_BATTERY2_CURRENT_CHANNEL}
# endif
# define BOARD_BRICK_VALID_LIST {BOARD_ADC_BRICK1_VALID, BOARD_ADC_BRICK2_VALID}
#elif BOARD_NUMBER_BRICKS == 3
# define BOARD_BATT_V_LIST {ADC_BATTERY1_VOLTAGE_CHANNEL, ADC_BATTERY2_VOLTAGE_CHANNEL, ADC_BATTERY3_VOLTAGE_CHANNEL}
# define BOARD_BATT_I_LIST {ADC_BATTERY1_CURRENT_CHANNEL, ADC_BATTERY2_CURRENT_CHANNEL, ADC_BATTERY3_CURRENT_CHANNEL}
# define BOARD_BRICK_VALID_LIST {BOARD_ADC_BRICK1_VALID, BOARD_ADC_BRICK2_VALID, BOARD_ADC_BRICK3_VALID}
#elif BOARD_NUMBER_BRICKS == 4
#if defined(ADC_BATTERY4_VOLTAGE_CHANNEL) && defined(ADC_BATTERY4_CURRENT_CHANNEL)
# define BOARD_NUMBER_BRICKS 4
# define BOARD_BATT_V_LIST {ADC_BATTERY1_VOLTAGE_CHANNEL, ADC_BATTERY2_VOLTAGE_CHANNEL, ADC_BATTERY3_VOLTAGE_CHANNEL, ADC_BATTERY4_VOLTAGE_CHANNEL}
# define BOARD_BATT_I_LIST {ADC_BATTERY1_CURRENT_CHANNEL, ADC_BATTERY2_CURRENT_CHANNEL, ADC_BATTERY3_CURRENT_CHANNEL, ADC_BATTERY4_CURRENT_CHANNEL}
# if defined(BOARD_ADC_BRICK4_VALID)
# define BOARD_BRICK_VALID_LIST {BOARD_ADC_BRICK1_VALID, BOARD_ADC_BRICK2_VALID, BOARD_ADC_BRICK3_VALID, BOARD_ADC_BRICK4_VALID}
#else
# error Unsuported BOARD_NUMBER_BRICKS number.
# endif // BOARD_ADC_BRICK4_VALID
#elif defined(ADC_BATTERY3_VOLTAGE_CHANNEL) && defined(ADC_BATTERY3_CURRENT_CHANNEL)
# define BOARD_NUMBER_BRICKS 3
# define BOARD_BATT_V_LIST {ADC_BATTERY1_VOLTAGE_CHANNEL, ADC_BATTERY2_VOLTAGE_CHANNEL, ADC_BATTERY3_VOLTAGE_CHANNEL}
# define BOARD_BATT_I_LIST {ADC_BATTERY1_CURRENT_CHANNEL, ADC_BATTERY2_CURRENT_CHANNEL, ADC_BATTERY3_CURRENT_CHANNEL}
# if defined(BOARD_ADC_BRICK3_VALID)
# define BOARD_BRICK_VALID_LIST {BOARD_ADC_BRICK1_VALID, BOARD_ADC_BRICK2_VALID, BOARD_ADC_BRICK3_VALID}
# endif // BOARD_ADC_BRICK3_VALID
#elif defined(ADC_BATTERY2_VOLTAGE_CHANNEL) && defined(ADC_BATTERY2_CURRENT_CHANNEL)
# define BOARD_NUMBER_BRICKS 2
# define BOARD_BATT_V_LIST {ADC_BATTERY1_VOLTAGE_CHANNEL, ADC_BATTERY2_VOLTAGE_CHANNEL}
# define BOARD_BATT_I_LIST {ADC_BATTERY1_CURRENT_CHANNEL, ADC_BATTERY2_CURRENT_CHANNEL}
# if defined(BOARD_ADC_BRICK2_VALID)
# define BOARD_BRICK_VALID_LIST {BOARD_ADC_BRICK1_VALID, BOARD_ADC_BRICK2_VALID}
# endif // BOARD_ADC_BRICK2_VALID
#elif defined(ADC_BATTERY1_VOLTAGE_CHANNEL) && defined(ADC_BATTERY1_CURRENT_CHANNEL)
# define BOARD_NUMBER_BRICKS 1
# define BOARD_BATT_V_LIST {ADC_BATTERY1_VOLTAGE_CHANNEL}
# define BOARD_BATT_I_LIST {ADC_BATTERY1_CURRENT_CHANNEL}
# if defined(BOARD_ADC_BRICK1_VALID)
# define BOARD_BRICK_VALID_LIST {BOARD_ADC_BRICK1_VALID}
# endif // BOARD_ADC_BRICK1_VALID
#elif defined(ADC_BATTERY_VOLTAGE_CHANNEL) && defined(ADC_BATTERY_CURRENT_CHANNEL)
# define BOARD_NUMBER_BRICKS 1
# define BOARD_BATT_V_LIST {ADC_BATTERY_VOLTAGE_CHANNEL}
# define BOARD_BATT_I_LIST {ADC_BATTERY_CURRENT_CHANNEL}
# if defined(BOARD_ADC_BRICK_VALID)
# define BOARD_BRICK_VALID_LIST {BOARD_ADC_BRICK_VALID}
# endif // BOARD_ADC_BRICK_VALID
#endif
/* Choose the source for ADC_SCALED_V5_SENSE */