Move safety weights and persistencies to config file
This commit is contained in:
		@@ -55,6 +55,11 @@ enum analog_value_monitor {
 | 
				
			|||||||
	ERR_AMON_UC_TEMP = (1<<1),
 | 
						ERR_AMON_UC_TEMP = (1<<1),
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define ERR_FLAG_ENTRY(errflag, persistency) {.name=#errflag, .flag = (errflag), .error_state = false, .error_state_inv = true, .persistent = (persistency), .key = 0UL}
 | 
				
			||||||
 | 
					#define TIM_MON_ENTRY(mon, min, max, flag) {.name=#mon, .monitor = (mon), .associated_flag=(flag), .min_delta = (min), .max_delta = (max), .last = 0ULL, .enabled= false}
 | 
				
			||||||
 | 
					#define ANA_MON_ENTRY(mon, min_value, max_value, flag) {.name=#mon, .monitor = (mon), .associated_flag=(flag), .min = (min_value), .max = (max_value), .value = 0.0f, .valid = false}
 | 
				
			||||||
 | 
					#define ERR_FLAG_WEIGHT_ENTRY(_flag, _weight) {.flag = (_flag), .flag_ptr = NULL, .weight = (_weight), .start_dummy = 0x11823344, .end_dummy = 0xAABBCCFD}
 | 
				
			||||||
 | 
					#define ERR_FLAG_PERSIST_ENTRY(_flag, _persist) {.flag = (_flag), .flag_ptr = NULL, .persistency = (_persist), .start_dummy = 0xFF1100BB, .end_dummy = 0xEBB439A2}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @brief Magic key used to reset the watchdog using the @ref watchdog_ack function
 | 
					 * @brief Magic key used to reset the watchdog using the @ref watchdog_ack function
 | 
				
			||||||
@@ -98,4 +103,40 @@ enum analog_value_monitor {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#define SAFETY_CONTROLLER_ADC_DELAY_MS 120
 | 
					#define SAFETY_CONTROLLER_ADC_DELAY_MS 120
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SAFETY_CONFIG_DEFAULT_PERSIST	ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_MEAS_ADC_OFF, false), \
 | 
				
			||||||
 | 
										ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_MEAS_ADC_WATCHDOG, false), \
 | 
				
			||||||
 | 
										ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_MEAS_ADC_UNSTABLE, false), \
 | 
				
			||||||
 | 
										ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_MEAS_ADC_OVERFLOW, false), \
 | 
				
			||||||
 | 
										ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_TIMING_MEAS_ADC, false), \
 | 
				
			||||||
 | 
										ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_TIMING_PID, false), \
 | 
				
			||||||
 | 
										ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_AMON_UC_TEMP, false), \
 | 
				
			||||||
 | 
										ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_AMON_VREF, false), \
 | 
				
			||||||
 | 
										ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_STACK, false), \
 | 
				
			||||||
 | 
										ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_SAFETY_ADC, false), \
 | 
				
			||||||
 | 
										ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_SYSTICK, false), \
 | 
				
			||||||
 | 
										ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_WTCHDG_FIRED, false), \
 | 
				
			||||||
 | 
										ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_UNCAL, false), \
 | 
				
			||||||
 | 
										ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_DEBUG, false), \
 | 
				
			||||||
 | 
										ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_TIMING_MAIN_LOOP, false), \
 | 
				
			||||||
 | 
										ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_SAFETY_MEM_CORRUPT, false), \
 | 
				
			||||||
 | 
										ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_SAFETY_TAB_CORRUPT, false),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define SAFETY_CONFIG_DEFAULT_WEIGHTS 	ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_MEAS_ADC_OFF, SAFETY_FLAG_CONFIG_WEIGHT_NONE), \
 | 
				
			||||||
 | 
								ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_MEAS_ADC_WATCHDOG, SAFETY_FLAG_CONFIG_WEIGHT_NONE), \
 | 
				
			||||||
 | 
								ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_MEAS_ADC_UNSTABLE, SAFETY_FLAG_CONFIG_WEIGHT_NONE), \
 | 
				
			||||||
 | 
								ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_MEAS_ADC_OVERFLOW, SAFETY_FLAG_CONFIG_WEIGHT_NONE), \
 | 
				
			||||||
 | 
								ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_TIMING_MEAS_ADC, SAFETY_FLAG_CONFIG_WEIGHT_NONE), \
 | 
				
			||||||
 | 
								ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_TIMING_PID, SAFETY_FLAG_CONFIG_WEIGHT_NONE), \
 | 
				
			||||||
 | 
								ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_AMON_UC_TEMP, SAFETY_FLAG_CONFIG_WEIGHT_NONE), \
 | 
				
			||||||
 | 
								ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_AMON_VREF, SAFETY_FLAG_CONFIG_WEIGHT_NONE), \
 | 
				
			||||||
 | 
								ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_STACK, SAFETY_FLAG_CONFIG_WEIGHT_NONE), \
 | 
				
			||||||
 | 
								ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_SAFETY_ADC, SAFETY_FLAG_CONFIG_WEIGHT_NONE), \
 | 
				
			||||||
 | 
								ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_SYSTICK, SAFETY_FLAG_CONFIG_WEIGHT_NONE), \
 | 
				
			||||||
 | 
								ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_WTCHDG_FIRED, SAFETY_FLAG_CONFIG_WEIGHT_NONE), \
 | 
				
			||||||
 | 
								ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_UNCAL, SAFETY_FLAG_CONFIG_WEIGHT_NONE), \
 | 
				
			||||||
 | 
								ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_DEBUG, SAFETY_FLAG_CONFIG_WEIGHT_NONE), \
 | 
				
			||||||
 | 
								ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_TIMING_MAIN_LOOP, SAFETY_FLAG_CONFIG_WEIGHT_NONE), \
 | 
				
			||||||
 | 
								ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_SAFETY_MEM_CORRUPT, SAFETY_FLAG_CONFIG_WEIGHT_NONE), \
 | 
				
			||||||
 | 
								ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_SAFETY_TAB_CORRUPT, SAFETY_FLAG_CONFIG_WEIGHT_NONE),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* __SAFETY_CONFIG_H__ */
 | 
					#endif /* __SAFETY_CONFIG_H__ */
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -86,12 +86,6 @@ struct safety_persistency {
 | 
				
			|||||||
	uint32_t end_dummy;
 | 
						uint32_t end_dummy;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ERR_FLAG_ENTRY(errflag, persistency) {.name=#errflag, .flag = (errflag), .error_state = false, .error_state_inv = true, .persistent = (persistency), .key = 0UL}
 | 
					 | 
				
			||||||
#define TIM_MON_ENTRY(mon, min, max, flag) {.name=#mon, .monitor = (mon), .associated_flag=(flag), .min_delta = (min), .max_delta = (max), .last = 0ULL, .enabled= false}
 | 
					 | 
				
			||||||
#define ANA_MON_ENTRY(mon, min_value, max_value, flag) {.name=#mon, .monitor = (mon), .associated_flag=(flag), .min = (min_value), .max = (max_value), .value = 0.0f, .valid = false}
 | 
					 | 
				
			||||||
#define ERR_FLAG_WEIGHT_ENTRY(_flag, _weight) {.flag = (_flag), .flag_ptr = NULL, .weight = (_weight), .start_dummy = 0x11823344, .end_dummy = 0xAABBCCFD}
 | 
					 | 
				
			||||||
#define ERR_FLAG_PERSIST_ENTRY(_flag, _persist) {.flag = (_flag), .flag_ptr = NULL, .persistency = (_persist), .start_dummy = 0xFF1100BB, .end_dummy = 0xEBB439A2}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static volatile struct error_flag IN_SECTION(.ccm.data) flags[] = {
 | 
					static volatile struct error_flag IN_SECTION(.ccm.data) flags[] = {
 | 
				
			||||||
	ERR_FLAG_ENTRY(ERR_FLAG_MEAS_ADC_OFF, false),
 | 
						ERR_FLAG_ENTRY(ERR_FLAG_MEAS_ADC_OFF, false),
 | 
				
			||||||
	ERR_FLAG_ENTRY(ERR_FLAG_MEAS_ADC_WATCHDOG, false),
 | 
						ERR_FLAG_ENTRY(ERR_FLAG_MEAS_ADC_WATCHDOG, false),
 | 
				
			||||||
@@ -126,49 +120,10 @@ static volatile struct analog_mon IN_SECTION(.ccm.data) analog_mons[] = {
 | 
				
			|||||||
		      ERR_FLAG_AMON_UC_TEMP),
 | 
							      ERR_FLAG_AMON_UC_TEMP),
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const struct safety_weight default_flag_weights[] = {
 | 
					static const struct safety_weight default_flag_weights[] = { SAFETY_CONFIG_DEFAULT_WEIGHTS };
 | 
				
			||||||
	ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_MEAS_ADC_OFF, SAFETY_FLAG_CONFIG_WEIGHT_NONE),
 | 
					static const struct safety_persistency default_flag_persistencies[] = {SAFETY_CONFIG_DEFAULT_PERSIST};
 | 
				
			||||||
	ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_MEAS_ADC_WATCHDOG, SAFETY_FLAG_CONFIG_WEIGHT_NONE),
 | 
					 | 
				
			||||||
	ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_MEAS_ADC_UNSTABLE, SAFETY_FLAG_CONFIG_WEIGHT_NONE),
 | 
					 | 
				
			||||||
	ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_MEAS_ADC_OVERFLOW, SAFETY_FLAG_CONFIG_WEIGHT_NONE),
 | 
					 | 
				
			||||||
	ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_TIMING_MEAS_ADC, SAFETY_FLAG_CONFIG_WEIGHT_NONE),
 | 
					 | 
				
			||||||
	ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_TIMING_PID, SAFETY_FLAG_CONFIG_WEIGHT_NONE),
 | 
					 | 
				
			||||||
	ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_AMON_UC_TEMP, SAFETY_FLAG_CONFIG_WEIGHT_NONE),
 | 
					 | 
				
			||||||
	ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_AMON_VREF, SAFETY_FLAG_CONFIG_WEIGHT_NONE),
 | 
					 | 
				
			||||||
	ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_STACK, SAFETY_FLAG_CONFIG_WEIGHT_NONE),
 | 
					 | 
				
			||||||
	ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_SAFETY_ADC, SAFETY_FLAG_CONFIG_WEIGHT_NONE),
 | 
					 | 
				
			||||||
	ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_SYSTICK, SAFETY_FLAG_CONFIG_WEIGHT_NONE),
 | 
					 | 
				
			||||||
	ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_WTCHDG_FIRED, SAFETY_FLAG_CONFIG_WEIGHT_NONE),
 | 
					 | 
				
			||||||
	ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_UNCAL, SAFETY_FLAG_CONFIG_WEIGHT_NONE),
 | 
					 | 
				
			||||||
	ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_DEBUG, SAFETY_FLAG_CONFIG_WEIGHT_NONE),
 | 
					 | 
				
			||||||
	ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_TIMING_MAIN_LOOP, SAFETY_FLAG_CONFIG_WEIGHT_NONE),
 | 
					 | 
				
			||||||
	ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_SAFETY_MEM_CORRUPT, SAFETY_FLAG_CONFIG_WEIGHT_NONE),
 | 
					 | 
				
			||||||
	ERR_FLAG_WEIGHT_ENTRY(ERR_FLAG_SAFETY_TAB_CORRUPT, SAFETY_FLAG_CONFIG_WEIGHT_NONE),
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static const struct safety_persistency default_flag_persistencies[] = {
 | 
					 | 
				
			||||||
		ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_MEAS_ADC_OFF, false),
 | 
					 | 
				
			||||||
		ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_MEAS_ADC_WATCHDOG, false),
 | 
					 | 
				
			||||||
		ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_MEAS_ADC_UNSTABLE, false),
 | 
					 | 
				
			||||||
		ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_MEAS_ADC_OVERFLOW, false),
 | 
					 | 
				
			||||||
		ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_TIMING_MEAS_ADC, false),
 | 
					 | 
				
			||||||
		ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_TIMING_PID, false),
 | 
					 | 
				
			||||||
		ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_AMON_UC_TEMP, false),
 | 
					 | 
				
			||||||
		ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_AMON_VREF, false),
 | 
					 | 
				
			||||||
		ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_STACK, false),
 | 
					 | 
				
			||||||
		ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_SAFETY_ADC, false),
 | 
					 | 
				
			||||||
		ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_SYSTICK, false),
 | 
					 | 
				
			||||||
		ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_WTCHDG_FIRED, false),
 | 
					 | 
				
			||||||
		ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_UNCAL, false),
 | 
					 | 
				
			||||||
		ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_DEBUG, false),
 | 
					 | 
				
			||||||
		ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_TIMING_MAIN_LOOP, false),
 | 
					 | 
				
			||||||
		ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_SAFETY_MEM_CORRUPT, false),
 | 
					 | 
				
			||||||
		ERR_FLAG_PERSIST_ENTRY(ERR_FLAG_SAFETY_TAB_CORRUPT, false),
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static volatile struct safety_persistency IN_SECTION(.ccm.bss) flag_persistencies[COUNT_OF(default_flag_persistencies)];
 | 
					static volatile struct safety_persistency IN_SECTION(.ccm.bss) flag_persistencies[COUNT_OF(default_flag_persistencies)];
 | 
				
			||||||
static uint32_t IN_SECTION(.ccm.bss) flag_persistencies_crc;
 | 
					static uint32_t IN_SECTION(.ccm.bss) flag_persistencies_crc;
 | 
				
			||||||
 | 
					 | 
				
			||||||
static volatile struct safety_weight IN_SECTION(.ccm.bss) flag_weights[COUNT_OF(default_flag_weights)];
 | 
					static volatile struct safety_weight IN_SECTION(.ccm.bss) flag_weights[COUNT_OF(default_flag_weights)];
 | 
				
			||||||
static uint32_t IN_SECTION(.ccm.bss) flag_weight_crc;
 | 
					static uint32_t IN_SECTION(.ccm.bss) flag_weight_crc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user