Program Listing for File feedback.h¶
↰ Return to documentation for file (mainboard/Inc/feedback.h
)
#pragma once
#include "error.h"
#include <inttypes.h>
typedef uint16_t feedback_t;
extern feedback_t feedback;
enum {
FEEDBACK_VREF_POS,
FEEDBACK_FROM_TSMS_POS,
FEEDBACK_TO_TSMS_POS,
FEEDBACK_FROM_SHUTDOWN_POS,
FEEDBACK_LATCH_IMD_POS,
FEEDBACK_LATCH_BMS_POS,
FEEDBACK_IMD_FAULT_POS,
FEEDBACK_BMS_FAULT_POS,
FEEDBACK_TSAL_HV_POS,
FEEDBACK_AIR_POSITIVE_POS,
FEEDBACK_AIR_NEGATIVE_POS,
FEEDBACK_PC_END_POS,
FEEDBACK_RELAY_LV_POS,
FEEDBACK_IMD_SHUTDOWN_POS,
FEEDBACK_BMS_SHUTDOWN_POS,
FEEDBACK_TS_ON_POS,
//do not move FEEDBACK_N
FEEDBACK_N,
};
#define FEEDBACK_NULL 0
#define FEEDBACK_VREF ((feedback_t)1 << FEEDBACK_VREF_POS)
#define FEEDBACK_FROM_TSMS ((feedback_t)1 << FEEDBACK_FROM_TSMS_POS)
#define FEEDBACK_TO_TSMS ((feedback_t)1 << FEEDBACK_TO_TSMS_POS)
#define FEEDBACK_FROM_SHUTDOWN ((feedback_t)1 << FEEDBACK_FROM_SHUTDOWN_POS)
#define FEEDBACK_LATCH_IMD ((feedback_t)1 << FEEDBACK_LATCH_IMD_POS)
#define FEEDBACK_LATCH_BMS ((feedback_t)1 << FEEDBACK_LATCH_BMS_POS)
#define FEEDBACK_IMD_FAULT ((feedback_t)1 << FEEDBACK_IMD_FAULT_POS)
#define FEEDBACK_BMS_FAULT ((feedback_t)1 << FEEDBACK_BMS_FAULT_POS)
#define FEEDBACK_TSAL_HV ((feedback_t)1 << FEEDBACK_TSAL_HV_POS)
#define FEEDBACK_AIR_POSITIVE ((feedback_t)1 << FEEDBACK_AIR_POSITIVE_POS)
#define FEEDBACK_AIR_NEGATIVE ((feedback_t)1 << FEEDBACK_AIR_NEGATIVE_POS)
#define FEEDBACK_PC_END ((feedback_t)1 << FEEDBACK_PC_END_POS)
#define FEEDBACK_RELAY_LV ((feedback_t)1 << FEEDBACK_RELAY_LV_POS)
#define FEEDBACK_IMD_SHUTDOWN ((feedback_t)1 << FEEDBACK_IMD_SHUTDOWN_POS)
#define FEEDBACK_BMS_SHUTDOWN ((feedback_t)1 << FEEDBACK_BMS_SHUTDOWN_POS)
#define FEEDBACK_TS_ON ((feedback_t)1 << FEEDBACK_TS_ON_POS)
#define FEEDBACK_ALL (feedback_t)(((feedback_t)1 << FEEDBACK_N) - 1)
// Feedbacks to check after TS OFF
#define FEEDBACK_TS_OFF_VAL FEEDBACK_VREF
#define FEEDBACK_TS_OFF_MASK \
FEEDBACK_VREF | FEEDBACK_AIR_POSITIVE | FEEDBACK_AIR_NEGATIVE | FEEDBACK_PC_END | FEEDBACK_TS_ON
// Feedback states before closing AIR- and trigger PC
#define FEEDBACK_IDLE_TS_ON_TRIGGER_VAL \
(FEEDBACK_VREF | FEEDBACK_FROM_TSMS | FEEDBACK_TO_TSMS | FEEDBACK_FROM_SHUTDOWN | FEEDBACK_LATCH_IMD | \
FEEDBACK_LATCH_BMS | FEEDBACK_IMD_FAULT | FEEDBACK_BMS_FAULT)
#define FEEDBACK_IDLE_TS_ON_TRIGGER_MASK FEEDBACK_ALL
// Feedback states after closing AIR-
#define FEEDBACK_TO_PRECHARGE_VAL \
(FEEDBACK_IDLE_TS_ON_TRIGGER_VAL | FEEDBACK_AIR_NEGATIVE | FEEDBACK_RELAY_LV | FEEDBACK_IMD_SHUTDOWN | \
FEEDBACK_BMS_FAULT | FEEDBACK_BMS_SHUTDOWN | FEEDBACK_TS_ON)
#define FEEDBACK_TO_PRECHARGE_MASK FEEDBACK_ALL &(~FEEDBACK_TSAL_HV)
#define FEEDBACK_ON_VAL FEEDBACK_TO_PRECHARGE_VAL | FEEDBACK_TSAL_HV
#define FEEDBACK_ON_MASK FEEDBACK_ALL
bool feedback_check(feedback_t fb_check_mask, feedback_t fb_value, error_id error_id);
void feedback_read(feedback_t fb_mask);
bool feedback_check_charge();
bool feedback_check_precharge();
bool feedback_check_on();