Files
uDCCD/firmware/tests/ut_hw/ut_hb_control.c
2024-03-12 21:22:26 +02:00

2639 lines
106 KiB
C

#include "ut_hb_control.h"
#include "..\mock_board\mock_board_halfbridge.h"
#include "..\..\src\hw\hb_control.h"
static void print_fb_struct(hb_feedback_t* f1)
{
printf("Sup-U:%d Sup-I:%d Sup-P:%d \n", f1->analog.sup_voltage, f1->analog.sup_current, f1->analog.sup_power);
printf("Out-U:%d Out-I:%d Out-P:%d Out-Z:%d \n", f1->analog.out_voltage, f1->analog.out_current, f1->analog.out_power, f1->analog.out_impedance);
printf("Low:%d PWM:%d \n", f1->analog.low_side_ctrl, f1->analog.pwm);
printf("Enabled:%d Warnin:%d Fault:%d Fused:%d \n", f1->enabled, f1->warning_act, f1->fault_act, f1->fused);
printf("Sup-UVP:%d Sup-OVP:%d Sup-OCP:%d Sup-OPP:%d \n", f1->warnings.sup_uvp, f1->warnings.sup_ovp, f1->warnings.sup_ocp, f1->warnings.sup_opp);
printf("Out-OVP:%d Out-OCP:%d Out-OPP:%d Out-Short:%d Out-Open:%d \n", f1->warnings.out_ovp, f1->warnings.out_ocp, f1->warnings.out_opp, f1->warnings.out_short, f1->warnings.out_open);
printf("Sup-UVP:%d Sup-OVP:%d Sup-OCP:%d Sup-OPP:%d \n", f1->faults.sup_uvp, f1->faults.sup_ovp, f1->faults.sup_ocp, f1->faults.sup_opp);
printf("Out-OVP:%d Out-OCP:%d Out-OPP:%d Out-Short:%d Out-Open:%d \n", f1->faults.out_ovp, f1->faults.out_ocp, f1->faults.out_opp, f1->faults.out_short, f1->faults.out_open);
}
static void print_ctrl_struct(hb_control_t* c1)
{
printf("Enabled:%d \n", c1->enabled);
printf("Sup UVP: Sev:%d W-time:%d F-time:%d \n", c1->out_faults.sup_uvp.severity, c1->out_faults.sup_uvp.w_time, c1->out_faults.sup_uvp.f_time);
printf("Sup OVP: Sev:%d W-time:%d F-time:%d \n", c1->out_faults.sup_ovp.severity, c1->out_faults.sup_ovp.w_time, c1->out_faults.sup_ovp.f_time);
printf("Sup OCP: Sev:%d W-time:%d F-time:%d \n", c1->out_faults.sup_ocp.severity, c1->out_faults.sup_ocp.w_time, c1->out_faults.sup_ocp.f_time);
printf("Sup OPP: Sev:%d W-time:%d F-time:%d \n", c1->out_faults.sup_opp.severity, c1->out_faults.sup_opp.w_time, c1->out_faults.sup_opp.f_time);
printf("Out OVP: Sev:%d W-time:%d F-time:%d \n", c1->out_faults.out_ovp.severity, c1->out_faults.out_ovp.w_time, c1->out_faults.out_ovp.f_time);
printf("Out OCP: Sev:%d W-time:%d F-time:%d \n", c1->out_faults.out_ocp.severity, c1->out_faults.out_ocp.w_time, c1->out_faults.out_ocp.f_time);
printf("Out OPP: Sev:%d W-time:%d F-time:%d \n", c1->out_faults.out_opp.severity, c1->out_faults.out_opp.w_time, c1->out_faults.out_opp.f_time);
printf("Out Short: Sev:%d W-time:%d F-time:%d \n", c1->out_faults.out_short.severity, c1->out_faults.out_short.w_time, c1->out_faults.out_short.f_time);
printf("Out Open: Sev:%d W-time:%d F-time:%d \n", c1->out_faults.out_open.severity, c1->out_faults.out_open.w_time, c1->out_faults.out_open.f_time);
printf("EN-Sup-uvp:%d EN-Sup-ovp:%d EN-Sup-ocp:%d EN-Sup-opp:%d \n", c1->out_faults_en.sup_uvp, c1->out_faults_en.sup_ovp, c1->out_faults_en.sup_ocp, c1->out_faults_en.sup_opp);
printf("EN-Out-ovp:%d EN-Out-ocp:%d EN-Out-opp:%d EN-Out-open:%d EN-Out-short:%d \n", c1->out_faults_en.out_ovp, c1->out_faults_en.out_ocp, c1->out_faults_en.out_opp, c1->out_faults_en.out_open, c1->out_faults_en.out_short);
printf("Fuse: state:%d count:%d timer:%d \n", c1->out_fuse.state, c1->out_fuse.count, c1->out_fuse.timer);
printf("Fuse-Cfg: cooldown:%d Retry-time:%d \n", c1->out_fuse_cfg.cooldown_time, c1->out_fuse_cfg.retry_time);
}
static int ut_hb_is_equal_fb_struct(hb_feedback_t* f1, hb_feedback_t* f2, uint8_t exp_out, hb_feedback_t* exp_f1, hb_feedback_t* exp_f2)
{
uint8_t out = hb_is_equal_fb_struct(f1, f2);
int f1_equal = 1;
if(f1->analog.out_voltage != exp_f1->analog.out_voltage ) f1_equal=0;
if(f1->analog.out_current != exp_f1->analog.out_current ) f1_equal= 0;
if(f1->analog.sup_voltage != exp_f1->analog.sup_voltage ) f1_equal= 0;
if(f1->analog.sup_current != exp_f1->analog.sup_current ) f1_equal= 0;
if(f1->analog.out_power != exp_f1->analog.out_power ) f1_equal= 0;
if(f1->analog.sup_power != exp_f1->analog.sup_power ) f1_equal= 0;
if(f1->analog.out_impedance != exp_f1->analog.out_impedance ) f1_equal= 0;
if(f1->analog.low_side_ctrl != exp_f1->analog.low_side_ctrl ) f1_equal= 0;
if(f1->analog.pwm != exp_f1->analog.pwm ) f1_equal= 0;
if(f1->enabled != exp_f1->enabled ) f1_equal= 0;
if(f1->warning_act != exp_f1->warning_act ) f1_equal= 0;
if(f1->fault_act != exp_f1->fault_act ) f1_equal= 0;
if(f1->fused != exp_f1->fused ) f1_equal= 0;
if(f1->warnings.sup_uvp != exp_f1->warnings.sup_uvp ) f1_equal= 0;
if(f1->warnings.sup_ovp != exp_f1->warnings.sup_ovp ) f1_equal= 0;
if(f1->warnings.sup_ocp != exp_f1->warnings.sup_ocp ) f1_equal= 0;
if(f1->warnings.sup_opp != exp_f1->warnings.sup_opp ) f1_equal= 0;
if(f1->warnings.out_ovp != exp_f1->warnings.out_ovp ) f1_equal= 0;
if(f1->warnings.out_ocp != exp_f1->warnings.out_ocp ) f1_equal= 0;
if(f1->warnings.out_opp != exp_f1->warnings.out_opp ) f1_equal= 0;
if(f1->warnings.out_short != exp_f1->warnings.out_short ) f1_equal= 0;
if(f1->warnings.out_open != exp_f1->warnings.out_open ) f1_equal= 0;
if(f1->faults.sup_uvp != exp_f1->faults.sup_uvp ) f1_equal= 0;
if(f1->faults.sup_ovp != exp_f1->faults.sup_ovp ) f1_equal= 0;
if(f1->faults.sup_ocp != exp_f1->faults.sup_ocp ) f1_equal= 0;
if(f1->faults.sup_opp != exp_f1->faults.sup_opp ) f1_equal= 0;
if(f1->faults.out_ovp != exp_f1->faults.out_ovp ) f1_equal= 0;
if(f1->faults.out_ocp != exp_f1->faults.out_ocp ) f1_equal= 0;
if(f1->faults.out_opp != exp_f1->faults.out_opp ) f1_equal= 0;
if(f1->faults.out_short != exp_f1->faults.out_short ) f1_equal= 0;
if(f1->faults.out_open != exp_f1->faults.out_open ) f1_equal= 0;
int f2_equal = 1;
if(f2->analog.out_voltage != exp_f2->analog.out_voltage ) f2_equal=0;
if(f2->analog.out_current != exp_f2->analog.out_current ) f2_equal= 0;
if(f2->analog.sup_voltage != exp_f2->analog.sup_voltage ) f2_equal= 0;
if(f2->analog.sup_current != exp_f2->analog.sup_current ) f2_equal= 0;
if(f2->analog.out_power != exp_f2->analog.out_power ) f2_equal= 0;
if(f2->analog.sup_power != exp_f2->analog.sup_power ) f2_equal= 0;
if(f2->analog.out_impedance != exp_f2->analog.out_impedance ) f2_equal= 0;
if(f2->analog.low_side_ctrl != exp_f2->analog.low_side_ctrl ) f2_equal= 0;
if(f2->analog.pwm != exp_f2->analog.pwm ) f2_equal= 0;
if(f2->enabled != exp_f2->enabled ) f2_equal= 0;
if(f2->warning_act != exp_f2->warning_act ) f2_equal= 0;
if(f2->fault_act != exp_f2->fault_act ) f2_equal= 0;
if(f2->fused != exp_f2->fused ) f2_equal= 0;
if(f2->warnings.sup_uvp != exp_f2->warnings.sup_uvp ) f2_equal= 0;
if(f2->warnings.sup_ovp != exp_f2->warnings.sup_ovp ) f2_equal= 0;
if(f2->warnings.sup_ocp != exp_f2->warnings.sup_ocp ) f2_equal= 0;
if(f2->warnings.sup_opp != exp_f2->warnings.sup_opp ) f2_equal= 0;
if(f2->warnings.out_ovp != exp_f2->warnings.out_ovp ) f2_equal= 0;
if(f2->warnings.out_ocp != exp_f2->warnings.out_ocp ) f2_equal= 0;
if(f2->warnings.out_opp != exp_f2->warnings.out_opp ) f2_equal= 0;
if(f2->warnings.out_short != exp_f2->warnings.out_short ) f2_equal= 0;
if(f2->warnings.out_open != exp_f2->warnings.out_open ) f2_equal= 0;
if(f2->faults.sup_uvp != exp_f2->faults.sup_uvp ) f2_equal= 0;
if(f2->faults.sup_ovp != exp_f2->faults.sup_ovp ) f2_equal= 0;
if(f2->faults.sup_ocp != exp_f2->faults.sup_ocp ) f2_equal= 0;
if(f2->faults.sup_opp != exp_f2->faults.sup_opp ) f2_equal= 0;
if(f2->faults.out_ovp != exp_f2->faults.out_ovp ) f2_equal= 0;
if(f2->faults.out_ocp != exp_f2->faults.out_ocp ) f2_equal= 0;
if(f2->faults.out_opp != exp_f2->faults.out_opp ) f2_equal= 0;
if(f2->faults.out_short != exp_f2->faults.out_short ) f2_equal= 0;
if(f2->faults.out_open != exp_f2->faults.out_open ) f2_equal= 0;
printf("f1-unchanged:%d f2-unchanged:%d \n", f1_equal, f2_equal);
printf(" Output: %d \n", out);
printf("Expected: %d \n", exp_out);
if((out==exp_out)&&(f1_equal)&&(f2_equal))
{
printf("PASS\n\n");
return 1;
}
else
{
printf("FAIL\n\n");
return 0;
}
}
int ut_hb_is_equal_fb_struct_test(void)
{
printf("******************************************************\n");
printf("uint8_t hb_is_equal_fb_struct(hb_feedback_t* f1, hb_feedback_t* f2) \n");
int test_res;
int pass = 1;
hb_feedback_t f1;
hb_feedback_t f2;
uint8_t exp_out;
hb_feedback_t exp_f1;
hb_feedback_t exp_f2;
// EQUAL
f1.analog.out_voltage = 0xAAAA;
f1.analog.out_current = 0xAAAA;
f1.analog.sup_voltage = 0xAAAA;
f1.analog.sup_current = 0xAAAA;
f1.analog.out_power = 0xAAAA;
f1.analog.sup_power = 0xAAAA;
f1.analog.out_impedance = 0xAAAA;
f1.analog.low_side_ctrl = 0xAA;
f1.analog.pwm = 0xAAAA;
f1.enabled = 0xAA;
f1.warning_act = 0xAA;
f1.fault_act = 0xAA;
f1.fused = 0xAA;
f1.warnings.sup_uvp = 0xAA;
f1.warnings.sup_ovp = 0xAA;
f1.warnings.sup_ocp = 0xAA;
f1.warnings.sup_opp = 0xAA;
f1.warnings.out_ovp = 0xAA;
f1.warnings.out_ocp = 0xAA;
f1.warnings.out_opp = 0xAA;
f1.warnings.out_short = 0xAA;
f1.warnings.out_open = 0xAA;
f1.faults.sup_uvp = 0xAA;
f1.faults.sup_ovp = 0xAA;
f1.faults.sup_ocp = 0xAA;
f1.faults.sup_opp = 0xAA;
f1.faults.out_ovp = 0xAA;
f1.faults.out_ocp = 0xAA;
f1.faults.out_opp = 0xAA;
f1.faults.out_short = 0xAA;
f1.faults.out_open = 0xAA;
f2.analog.out_voltage = 0xAAAA;
f2.analog.out_current = 0xAAAA;
f2.analog.sup_voltage = 0xAAAA;
f2.analog.sup_current = 0xAAAA;
f2.analog.out_power = 0xAAAA;
f2.analog.sup_power = 0xAAAA;
f2.analog.out_impedance = 0xAAAA;
f2.analog.low_side_ctrl = 0xAA;
f2.analog.pwm = 0xAAAA;
f2.enabled = 0xAA;
f2.warning_act = 0xAA;
f2.fault_act = 0xAA;
f2.fused = 0xAA;
f2.warnings.sup_uvp = 0xAA;
f2.warnings.sup_ovp = 0xAA;
f2.warnings.sup_ocp = 0xAA;
f2.warnings.sup_opp = 0xAA;
f2.warnings.out_ovp = 0xAA;
f2.warnings.out_ocp = 0xAA;
f2.warnings.out_opp = 0xAA;
f2.warnings.out_short = 0xAA;
f2.warnings.out_open = 0xAA;
f2.faults.sup_uvp = 0xAA;
f2.faults.sup_ovp = 0xAA;
f2.faults.sup_ocp = 0xAA;
f2.faults.sup_opp = 0xAA;
f2.faults.out_ovp = 0xAA;
f2.faults.out_ocp = 0xAA;
f2.faults.out_opp = 0xAA;
f2.faults.out_short = 0xAA;
f2.faults.out_open = 0xAA;
exp_out = 1;
exp_f1.analog.out_voltage = f1.analog.out_voltage;
exp_f1.analog.out_current = f1.analog.out_current;
exp_f1.analog.sup_voltage = f1.analog.sup_voltage;
exp_f1.analog.sup_current = f1.analog.sup_current;
exp_f1.analog.out_power = f1.analog.out_power;
exp_f1.analog.sup_power = f1.analog.sup_power;
exp_f1.analog.out_impedance = f1.analog.out_impedance;
exp_f1.analog.low_side_ctrl = f1.analog.low_side_ctrl;
exp_f1.analog.pwm = f1.analog.pwm;
exp_f1.enabled = f1.enabled;
exp_f1.warning_act = f1.warning_act;
exp_f1.fault_act = f1.fault_act;
exp_f1.fused = f1.fused;
exp_f1.warnings.sup_uvp = f1.warnings.sup_uvp;
exp_f1.warnings.sup_ovp = f1.warnings.sup_ovp;
exp_f1.warnings.sup_ocp = f1.warnings.sup_ocp;
exp_f1.warnings.sup_opp = f1.warnings.sup_opp;
exp_f1.warnings.out_ovp = f1.warnings.out_ovp;
exp_f1.warnings.out_ocp = f1.warnings.out_ocp;
exp_f1.warnings.out_opp = f1.warnings.out_opp;
exp_f1.warnings.out_short = f1.warnings.out_short;
exp_f1.warnings.out_open = f1.warnings.out_open;
exp_f1.faults.sup_uvp = f1.faults.sup_uvp;
exp_f1.faults.sup_ovp = f1.faults.sup_ovp;
exp_f1.faults.sup_ocp = f1.faults.sup_ocp;
exp_f1.faults.sup_opp = f1.faults.sup_opp;
exp_f1.faults.out_ovp = f1.faults.out_ovp;
exp_f1.faults.out_ocp = f1.faults.out_ocp;
exp_f1.faults.out_opp = f1.faults.out_opp;
exp_f1.faults.out_short = f1.faults.out_short;
exp_f1.faults.out_open = f1.faults.out_open;
exp_f2.analog.out_voltage = f2.analog.out_voltage;
exp_f2.analog.out_current = f2.analog.out_current;
exp_f2.analog.sup_voltage = f2.analog.sup_voltage;
exp_f2.analog.sup_current = f2.analog.sup_current;
exp_f2.analog.out_power = f2.analog.out_power;
exp_f2.analog.sup_power = f2.analog.sup_power;
exp_f2.analog.out_impedance = f2.analog.out_impedance;
exp_f2.analog.low_side_ctrl = f2.analog.low_side_ctrl;
exp_f2.analog.pwm = f2.analog.pwm;
exp_f2.enabled = f2.enabled;
exp_f2.warning_act = f2.warning_act;
exp_f2.fault_act = f2.fault_act;
exp_f2.fused = f2.fused;
exp_f2.warnings.sup_uvp = f2.warnings.sup_uvp;
exp_f2.warnings.sup_ovp = f2.warnings.sup_ovp;
exp_f2.warnings.sup_ocp = f2.warnings.sup_ocp;
exp_f2.warnings.sup_opp = f2.warnings.sup_opp;
exp_f2.warnings.out_ovp = f2.warnings.out_ovp;
exp_f2.warnings.out_ocp = f2.warnings.out_ocp;
exp_f2.warnings.out_opp = f2.warnings.out_opp;
exp_f2.warnings.out_short = f2.warnings.out_short;
exp_f2.warnings.out_open = f2.warnings.out_open;
exp_f2.faults.sup_uvp = f2.faults.sup_uvp;
exp_f2.faults.sup_ovp = f2.faults.sup_ovp;
exp_f2.faults.sup_ocp = f2.faults.sup_ocp;
exp_f2.faults.sup_opp = f2.faults.sup_opp;
exp_f2.faults.out_ovp = f2.faults.out_ovp;
exp_f2.faults.out_ocp = f2.faults.out_ocp;
exp_f2.faults.out_opp = f2.faults.out_opp;
exp_f2.faults.out_short = f2.faults.out_short;
exp_f2.faults.out_open = f2.faults.out_open;
test_res = ut_hb_is_equal_fb_struct(&f1, &f2, exp_out, &exp_f1, &exp_f2);
if(!test_res) pass = 0;
// NOT EQUAL
f1.analog.out_voltage = 0xAAAA;
f1.analog.out_current = 0xAAAA;
f1.analog.sup_voltage = 0xAAAA;
f1.analog.sup_current = 0xAAAA;
f1.analog.out_power = 0xAAAA;
f1.analog.sup_power = 0xAAAA;
f1.analog.out_impedance = 0xAAAA;
f1.analog.low_side_ctrl = 0xAA;
f1.analog.pwm = 0xAAAA;
f1.enabled = 0xAA;
f1.warning_act = 0xAA;
f1.fault_act = 0xAA;
f1.fused = 0xAA;
f1.warnings.sup_uvp = 0xAA;
f1.warnings.sup_ovp = 0xAA;
f1.warnings.sup_ocp = 0xAA;
f1.warnings.sup_opp = 0xAA;
f1.warnings.out_ovp = 0xAA;
f1.warnings.out_ocp = 0xAA;
f1.warnings.out_opp = 0xAA;
f1.warnings.out_short = 0xAA;
f1.warnings.out_open = 0xAA;
f1.faults.sup_uvp = 0xAA;
f1.faults.sup_ovp = 0xAA;
f1.faults.sup_ocp = 0xAA;
f1.faults.sup_opp = 0xAA;
f1.faults.out_ovp = 0xAA;
f1.faults.out_ocp = 0xAA;
f1.faults.out_opp = 0xAA;
f1.faults.out_short = 0xAA;
f1.faults.out_open = 0xAA;
f2.analog.out_voltage = 0x5555;
f2.analog.out_current = 0x5555;
f2.analog.sup_voltage = 0x5555;
f2.analog.sup_current = 0x5555;
f2.analog.out_power = 0x5555;
f2.analog.sup_power = 0x5555;
f2.analog.out_impedance = 0x5555;
f2.analog.low_side_ctrl = 0x55;
f2.analog.pwm = 0x5555;
f2.enabled = 0x55;
f2.warning_act = 0x55;
f2.fault_act = 0x55;
f2.fused = 0x55;
f2.warnings.sup_uvp = 0x55;
f2.warnings.sup_ovp = 0x55;
f2.warnings.sup_ocp = 0x55;
f2.warnings.sup_opp = 0x55;
f2.warnings.out_ovp = 0x55;
f2.warnings.out_ocp = 0x55;
f2.warnings.out_opp = 0x55;
f2.warnings.out_short = 0x55;
f2.warnings.out_open = 0x55;
f2.faults.sup_uvp = 0x55;
f2.faults.sup_ovp = 0x55;
f2.faults.sup_ocp = 0x55;
f2.faults.sup_opp = 0x55;
f2.faults.out_ovp = 0x55;
f2.faults.out_ocp = 0x55;
f2.faults.out_opp = 0x55;
f2.faults.out_short = 0x55;
f2.faults.out_open = 0x55;
exp_out = 0;
exp_f1.analog.out_voltage = f1.analog.out_voltage;
exp_f1.analog.out_current = f1.analog.out_current;
exp_f1.analog.sup_voltage = f1.analog.sup_voltage;
exp_f1.analog.sup_current = f1.analog.sup_current;
exp_f1.analog.out_power = f1.analog.out_power;
exp_f1.analog.sup_power = f1.analog.sup_power;
exp_f1.analog.out_impedance = f1.analog.out_impedance;
exp_f1.analog.low_side_ctrl = f1.analog.low_side_ctrl;
exp_f1.analog.pwm = f1.analog.pwm;
exp_f1.enabled = f1.enabled;
exp_f1.warning_act = f1.warning_act;
exp_f1.fault_act = f1.fault_act;
exp_f1.fused = f1.fused;
exp_f1.warnings.sup_uvp = f1.warnings.sup_uvp;
exp_f1.warnings.sup_ovp = f1.warnings.sup_ovp;
exp_f1.warnings.sup_ocp = f1.warnings.sup_ocp;
exp_f1.warnings.sup_opp = f1.warnings.sup_opp;
exp_f1.warnings.out_ovp = f1.warnings.out_ovp;
exp_f1.warnings.out_ocp = f1.warnings.out_ocp;
exp_f1.warnings.out_opp = f1.warnings.out_opp;
exp_f1.warnings.out_short = f1.warnings.out_short;
exp_f1.warnings.out_open = f1.warnings.out_open;
exp_f1.faults.sup_uvp = f1.faults.sup_uvp;
exp_f1.faults.sup_ovp = f1.faults.sup_ovp;
exp_f1.faults.sup_ocp = f1.faults.sup_ocp;
exp_f1.faults.sup_opp = f1.faults.sup_opp;
exp_f1.faults.out_ovp = f1.faults.out_ovp;
exp_f1.faults.out_ocp = f1.faults.out_ocp;
exp_f1.faults.out_opp = f1.faults.out_opp;
exp_f1.faults.out_short = f1.faults.out_short;
exp_f1.faults.out_open = f1.faults.out_open;
exp_f2.analog.out_voltage = f2.analog.out_voltage;
exp_f2.analog.out_current = f2.analog.out_current;
exp_f2.analog.sup_voltage = f2.analog.sup_voltage;
exp_f2.analog.sup_current = f2.analog.sup_current;
exp_f2.analog.out_power = f2.analog.out_power;
exp_f2.analog.sup_power = f2.analog.sup_power;
exp_f2.analog.out_impedance = f2.analog.out_impedance;
exp_f2.analog.low_side_ctrl = f2.analog.low_side_ctrl;
exp_f2.analog.pwm = f2.analog.pwm;
exp_f2.enabled = f2.enabled;
exp_f2.warning_act = f2.warning_act;
exp_f2.fault_act = f2.fault_act;
exp_f2.fused = f2.fused;
exp_f2.warnings.sup_uvp = f2.warnings.sup_uvp;
exp_f2.warnings.sup_ovp = f2.warnings.sup_ovp;
exp_f2.warnings.sup_ocp = f2.warnings.sup_ocp;
exp_f2.warnings.sup_opp = f2.warnings.sup_opp;
exp_f2.warnings.out_ovp = f2.warnings.out_ovp;
exp_f2.warnings.out_ocp = f2.warnings.out_ocp;
exp_f2.warnings.out_opp = f2.warnings.out_opp;
exp_f2.warnings.out_short = f2.warnings.out_short;
exp_f2.warnings.out_open = f2.warnings.out_open;
exp_f2.faults.sup_uvp = f2.faults.sup_uvp;
exp_f2.faults.sup_ovp = f2.faults.sup_ovp;
exp_f2.faults.sup_ocp = f2.faults.sup_ocp;
exp_f2.faults.sup_opp = f2.faults.sup_opp;
exp_f2.faults.out_ovp = f2.faults.out_ovp;
exp_f2.faults.out_ocp = f2.faults.out_ocp;
exp_f2.faults.out_opp = f2.faults.out_opp;
exp_f2.faults.out_short = f2.faults.out_short;
exp_f2.faults.out_open = f2.faults.out_open;
test_res = ut_hb_is_equal_fb_struct(&f1, &f2, exp_out, &exp_f1, &exp_f2);
if(!test_res) pass = 0;
return pass;
}
static int ut_hb_is_equal_ctrl_struct(hb_control_t* c1, hb_control_t* c2, uint8_t exp_out, hb_control_t* exp_c1, hb_control_t* exp_c2)
{
uint8_t out = hb_is_equal_ctrl_struct(c1, c2);
int c1_equal = 1;
if(c1->enabled != exp_c1->enabled ) c1_equal = 0;
if(c1->out_faults.sup_uvp.severity != exp_c1->out_faults.sup_uvp.severity ) c1_equal = 0;
if(c1->out_faults.sup_uvp.w_time != exp_c1->out_faults.sup_uvp.w_time ) c1_equal = 0;
if(c1->out_faults.sup_uvp.f_time != exp_c1->out_faults.sup_uvp.f_time ) c1_equal = 0;
if(c1->out_faults.sup_ovp.severity != exp_c1->out_faults.sup_ovp.severity ) c1_equal = 0;
if(c1->out_faults.sup_ovp.w_time != exp_c1->out_faults.sup_ovp.w_time ) c1_equal = 0;
if(c1->out_faults.sup_ovp.f_time != exp_c1->out_faults.sup_ovp.f_time ) c1_equal = 0;
if(c1->out_faults.sup_ocp.severity != exp_c1->out_faults.sup_ocp.severity ) c1_equal = 0;
if(c1->out_faults.sup_ocp.w_time != exp_c1->out_faults.sup_ocp.w_time ) c1_equal = 0;
if(c1->out_faults.sup_ocp.f_time != exp_c1->out_faults.sup_ocp.f_time ) c1_equal = 0;
if(c1->out_faults.sup_opp.severity != exp_c1->out_faults.sup_opp.severity ) c1_equal = 0;
if(c1->out_faults.sup_opp.w_time != exp_c1->out_faults.sup_opp.w_time ) c1_equal = 0;
if(c1->out_faults.sup_opp.f_time != exp_c1->out_faults.sup_opp.f_time ) c1_equal = 0;
if(c1->out_faults.out_ovp.severity != exp_c1->out_faults.out_ovp.severity ) c1_equal = 0;
if(c1->out_faults.out_ovp.w_time != exp_c1->out_faults.out_ovp.w_time ) c1_equal = 0;
if(c1->out_faults.out_ovp.f_time != exp_c1->out_faults.out_ovp.f_time ) c1_equal = 0;
if(c1->out_faults.out_ocp.severity != exp_c1->out_faults.out_ocp.severity ) c1_equal = 0;
if(c1->out_faults.out_ocp.w_time != exp_c1->out_faults.out_ocp.w_time ) c1_equal = 0;
if(c1->out_faults.out_ocp.f_time != exp_c1->out_faults.out_ocp.f_time ) c1_equal = 0;
if(c1->out_faults.out_opp.severity != exp_c1->out_faults.out_opp.severity ) c1_equal = 0;
if(c1->out_faults.out_opp.w_time != exp_c1->out_faults.out_opp.w_time ) c1_equal = 0;
if(c1->out_faults.out_opp.f_time != exp_c1->out_faults.out_opp.f_time ) c1_equal = 0;
if(c1->out_faults.out_short.severity != exp_c1->out_faults.out_short.severity ) c1_equal = 0;
if(c1->out_faults.out_short.w_time != exp_c1->out_faults.out_short.w_time ) c1_equal = 0;
if(c1->out_faults.out_short.f_time != exp_c1->out_faults.out_short.f_time ) c1_equal = 0;
if(c1->out_faults.out_open.severity != exp_c1->out_faults.out_open.severity ) c1_equal = 0;
if(c1->out_faults.out_open.w_time != exp_c1->out_faults.out_open.w_time ) c1_equal = 0;
if(c1->out_faults.out_open.f_time != exp_c1->out_faults.out_open.f_time ) c1_equal = 0;
if(c1->out_faults_en.sup_uvp != exp_c1->out_faults_en.sup_uvp ) c1_equal = 0;
if(c1->out_faults_en.sup_ovp != exp_c1->out_faults_en.sup_ovp ) c1_equal = 0;
if(c1->out_faults_en.sup_ocp != exp_c1->out_faults_en.sup_ocp ) c1_equal = 0;
if(c1->out_faults_en.sup_opp != exp_c1->out_faults_en.sup_opp ) c1_equal = 0;
if(c1->out_faults_en.out_ovp != exp_c1->out_faults_en.out_ovp ) c1_equal = 0;
if(c1->out_faults_en.out_ocp != exp_c1->out_faults_en.out_ocp ) c1_equal = 0;
if(c1->out_faults_en.out_opp != exp_c1->out_faults_en.out_opp ) c1_equal = 0;
if(c1->out_faults_en.out_short != exp_c1->out_faults_en.out_short ) c1_equal = 0;
if(c1->out_faults_en.out_open != exp_c1->out_faults_en.out_open ) c1_equal = 0;
if(c1->out_fuse.state != exp_c1->out_fuse.state ) c1_equal = 0;
if(c1->out_fuse.count != exp_c1->out_fuse.count ) c1_equal = 0;
if(c1->out_fuse.timer != exp_c1->out_fuse.timer ) c1_equal = 0;
if(c1->out_fuse_cfg.cooldown_time != exp_c1->out_fuse_cfg.cooldown_time ) c1_equal = 0;
if(c1->out_fuse_cfg.retry_time != exp_c1->out_fuse_cfg.retry_time ) c1_equal = 0;
int c2_equal = 1;
if(c2->enabled != exp_c2->enabled ) c2_equal = 0;
if(c2->out_faults.sup_uvp.severity != exp_c2->out_faults.sup_uvp.severity ) c2_equal = 0;
if(c2->out_faults.sup_uvp.w_time != exp_c2->out_faults.sup_uvp.w_time ) c2_equal = 0;
if(c2->out_faults.sup_uvp.f_time != exp_c2->out_faults.sup_uvp.f_time ) c2_equal = 0;
if(c2->out_faults.sup_ovp.severity != exp_c2->out_faults.sup_ovp.severity ) c2_equal = 0;
if(c2->out_faults.sup_ovp.w_time != exp_c2->out_faults.sup_ovp.w_time ) c2_equal = 0;
if(c2->out_faults.sup_ovp.f_time != exp_c2->out_faults.sup_ovp.f_time ) c2_equal = 0;
if(c2->out_faults.sup_ocp.severity != exp_c2->out_faults.sup_ocp.severity ) c2_equal = 0;
if(c2->out_faults.sup_ocp.w_time != exp_c2->out_faults.sup_ocp.w_time ) c2_equal = 0;
if(c2->out_faults.sup_ocp.f_time != exp_c2->out_faults.sup_ocp.f_time ) c2_equal = 0;
if(c2->out_faults.sup_opp.severity != exp_c2->out_faults.sup_opp.severity ) c2_equal = 0;
if(c2->out_faults.sup_opp.w_time != exp_c2->out_faults.sup_opp.w_time ) c2_equal = 0;
if(c2->out_faults.sup_opp.f_time != exp_c2->out_faults.sup_opp.f_time ) c2_equal = 0;
if(c2->out_faults.out_ovp.severity != exp_c2->out_faults.out_ovp.severity ) c2_equal = 0;
if(c2->out_faults.out_ovp.w_time != exp_c2->out_faults.out_ovp.w_time ) c2_equal = 0;
if(c2->out_faults.out_ovp.f_time != exp_c2->out_faults.out_ovp.f_time ) c2_equal = 0;
if(c2->out_faults.out_ocp.severity != exp_c2->out_faults.out_ocp.severity ) c2_equal = 0;
if(c2->out_faults.out_ocp.w_time != exp_c2->out_faults.out_ocp.w_time ) c2_equal = 0;
if(c2->out_faults.out_ocp.f_time != exp_c2->out_faults.out_ocp.f_time ) c2_equal = 0;
if(c2->out_faults.out_opp.severity != exp_c2->out_faults.out_opp.severity ) c2_equal = 0;
if(c2->out_faults.out_opp.w_time != exp_c2->out_faults.out_opp.w_time ) c2_equal = 0;
if(c2->out_faults.out_opp.f_time != exp_c2->out_faults.out_opp.f_time ) c2_equal = 0;
if(c2->out_faults.out_short.severity != exp_c2->out_faults.out_short.severity ) c2_equal = 0;
if(c2->out_faults.out_short.w_time != exp_c2->out_faults.out_short.w_time ) c2_equal = 0;
if(c2->out_faults.out_short.f_time != exp_c2->out_faults.out_short.f_time ) c2_equal = 0;
if(c2->out_faults.out_open.severity != exp_c2->out_faults.out_open.severity ) c2_equal = 0;
if(c2->out_faults.out_open.w_time != exp_c2->out_faults.out_open.w_time ) c2_equal = 0;
if(c2->out_faults.out_open.f_time != exp_c2->out_faults.out_open.f_time ) c2_equal = 0;
if(c2->out_faults_en.sup_uvp != exp_c2->out_faults_en.sup_uvp ) c2_equal = 0;
if(c2->out_faults_en.sup_ovp != exp_c2->out_faults_en.sup_ovp ) c2_equal = 0;
if(c2->out_faults_en.sup_ocp != exp_c2->out_faults_en.sup_ocp ) c2_equal = 0;
if(c2->out_faults_en.sup_opp != exp_c2->out_faults_en.sup_opp ) c2_equal = 0;
if(c2->out_faults_en.out_ovp != exp_c2->out_faults_en.out_ovp ) c2_equal = 0;
if(c2->out_faults_en.out_ocp != exp_c2->out_faults_en.out_ocp ) c2_equal = 0;
if(c2->out_faults_en.out_opp != exp_c2->out_faults_en.out_opp ) c2_equal = 0;
if(c2->out_faults_en.out_short != exp_c2->out_faults_en.out_short ) c2_equal = 0;
if(c2->out_faults_en.out_open != exp_c2->out_faults_en.out_open ) c2_equal = 0;
if(c2->out_fuse.state != exp_c2->out_fuse.state ) c2_equal = 0;
if(c2->out_fuse.count != exp_c2->out_fuse.count ) c2_equal = 0;
if(c2->out_fuse.timer != exp_c2->out_fuse.timer ) c2_equal = 0;
if(c2->out_fuse_cfg.cooldown_time != exp_c2->out_fuse_cfg.cooldown_time ) c2_equal = 0;
if(c2->out_fuse_cfg.retry_time != exp_c2->out_fuse_cfg.retry_time ) c2_equal = 0;
printf("c1-unchanged:%d c2-unchanged:%d \n", c1_equal, c2_equal);
printf(" Output: %d \n", out);
printf("Expected: %d \n", exp_out);
if((out==exp_out)&&(c1_equal)&&(c2_equal))
{
printf("PASS\n\n");
return 1;
}
else
{
printf("FAIL\n\n");
return 0;
}
}
int ut_hb_is_equal_ctrl_struct_test(void)
{
printf("******************************************************\n");
printf("uint8_t hb_is_equal_ctrl_struct(hb_control_t* c1, hb_control_t* c2) \n");
int test_res;
int pass = 1;
hb_control_t c1;
hb_control_t c2;
uint8_t exp_out;
hb_control_t exp_c1;
hb_control_t exp_c2;
// EQUAL
c1.enabled = 0xAA;
c1.out_faults.sup_uvp.severity = FAULT_LVL_FAULT;
c1.out_faults.sup_uvp.w_time = 0xAAAA;
c1.out_faults.sup_uvp.f_time = 0xAAAA;
c1.out_faults.sup_ovp.severity = FAULT_LVL_FAULT;
c1.out_faults.sup_ovp.w_time = 0xAAAA;
c1.out_faults.sup_ovp.f_time = 0xAAAA;
c1.out_faults.sup_ocp.severity = FAULT_LVL_FAULT;
c1.out_faults.sup_ocp.w_time = 0xAAAA;
c1.out_faults.sup_ocp.f_time = 0xAAAA;
c1.out_faults.sup_opp.severity = FAULT_LVL_FAULT;
c1.out_faults.sup_opp.w_time = 0xAAAA;
c1.out_faults.sup_opp.f_time = 0xAAAA;
c1.out_faults.out_ovp.severity = FAULT_LVL_FAULT;
c1.out_faults.out_ovp.w_time = 0xAAAA;
c1.out_faults.out_ovp.f_time = 0xAAAA;
c1.out_faults.out_ocp.severity = FAULT_LVL_FAULT;
c1.out_faults.out_ocp.w_time = 0xAAAA;
c1.out_faults.out_ocp.f_time = 0xAAAA;
c1.out_faults.out_opp.severity = FAULT_LVL_FAULT;
c1.out_faults.out_opp.w_time = 0xAAAA;
c1.out_faults.out_opp.f_time = 0xAAAA;
c1.out_faults.out_short.severity = FAULT_LVL_FAULT;
c1.out_faults.out_short.w_time = 0xAAAA;
c1.out_faults.out_short.f_time = 0xAAAA;
c1.out_faults.out_open.severity = FAULT_LVL_FAULT;
c1.out_faults.out_open.w_time = 0xAAAA;
c1.out_faults.out_open.f_time = 0xAAAA;
c1.out_faults_en.sup_uvp = 0xAA;
c1.out_faults_en.sup_ovp = 0xAA;
c1.out_faults_en.sup_ocp = 0xAA;
c1.out_faults_en.sup_opp = 0xAA;
c1.out_faults_en.out_ovp = 0xAA;
c1.out_faults_en.out_ocp = 0xAA;
c1.out_faults_en.out_opp = 0xAA;
c1.out_faults_en.out_open = 0xAA;
c1.out_faults_en.out_short = 0xAA;
c1.out_fuse.state = FUSE_ACTIVE;
c1.out_fuse.count = 0xAA;
c1.out_fuse.timer = 0xAAAA;
c1.out_fuse_cfg.cooldown_time = 0xAAAA;
c1.out_fuse_cfg.retry_time = 0xAAAA;
c2.enabled = 0xAA;
c2.out_faults.sup_uvp.severity = FAULT_LVL_FAULT;
c2.out_faults.sup_uvp.w_time = 0xAAAA;
c2.out_faults.sup_uvp.f_time = 0xAAAA;
c2.out_faults.sup_ovp.severity = FAULT_LVL_FAULT;
c2.out_faults.sup_ovp.w_time = 0xAAAA;
c2.out_faults.sup_ovp.f_time = 0xAAAA;
c2.out_faults.sup_ocp.severity = FAULT_LVL_FAULT;
c2.out_faults.sup_ocp.w_time = 0xAAAA;
c2.out_faults.sup_ocp.f_time = 0xAAAA;
c2.out_faults.sup_opp.severity = FAULT_LVL_FAULT;
c2.out_faults.sup_opp.w_time = 0xAAAA;
c2.out_faults.sup_opp.f_time = 0xAAAA;
c2.out_faults.out_ovp.severity = FAULT_LVL_FAULT;
c2.out_faults.out_ovp.w_time = 0xAAAA;
c2.out_faults.out_ovp.f_time = 0xAAAA;
c2.out_faults.out_ocp.severity = FAULT_LVL_FAULT;
c2.out_faults.out_ocp.w_time = 0xAAAA;
c2.out_faults.out_ocp.f_time = 0xAAAA;
c2.out_faults.out_opp.severity = FAULT_LVL_FAULT;
c2.out_faults.out_opp.w_time = 0xAAAA;
c2.out_faults.out_opp.f_time = 0xAAAA;
c2.out_faults.out_short.severity = FAULT_LVL_FAULT;
c2.out_faults.out_short.w_time = 0xAAAA;
c2.out_faults.out_short.f_time = 0xAAAA;
c2.out_faults.out_open.severity = FAULT_LVL_FAULT;
c2.out_faults.out_open.w_time = 0xAAAA;
c2.out_faults.out_open.f_time = 0xAAAA;
c2.out_faults_en.sup_uvp = 0xAA;
c2.out_faults_en.sup_ovp = 0xAA;
c2.out_faults_en.sup_ocp = 0xAA;
c2.out_faults_en.sup_opp = 0xAA;
c2.out_faults_en.out_ovp = 0xAA;
c2.out_faults_en.out_ocp = 0xAA;
c2.out_faults_en.out_opp = 0xAA;
c2.out_faults_en.out_open = 0xAA;
c2.out_faults_en.out_short = 0xAA;
c2.out_fuse.state = FUSE_ACTIVE;
c2.out_fuse.count = 0xAA;
c2.out_fuse.timer = 0xAAAA;
c2.out_fuse_cfg.cooldown_time = 0xAAAA;
c2.out_fuse_cfg.retry_time = 0xAAAA;
exp_out = 1;
exp_c1.enabled = c1.enabled;
exp_c1.out_faults.sup_uvp.severity = c1.out_faults.sup_uvp.severity;
exp_c1.out_faults.sup_uvp.w_time = c1.out_faults.sup_uvp.w_time;
exp_c1.out_faults.sup_uvp.f_time = c1.out_faults.sup_uvp.f_time;
exp_c1.out_faults.sup_ovp.severity = c1.out_faults.sup_ovp.severity;
exp_c1.out_faults.sup_ovp.w_time = c1.out_faults.sup_ovp.w_time;
exp_c1.out_faults.sup_ovp.f_time = c1.out_faults.sup_ovp.f_time;
exp_c1.out_faults.sup_ocp.severity = c1.out_faults.sup_ocp.severity;
exp_c1.out_faults.sup_ocp.w_time = c1.out_faults.sup_ocp.w_time;
exp_c1.out_faults.sup_ocp.f_time = c1.out_faults.sup_ocp.f_time;
exp_c1.out_faults.sup_opp.severity = c1.out_faults.sup_opp.severity;
exp_c1.out_faults.sup_opp.w_time = c1.out_faults.sup_opp.w_time;
exp_c1.out_faults.sup_opp.f_time = c1.out_faults.sup_opp.f_time;
exp_c1.out_faults.out_ovp.severity = c1.out_faults.out_ovp.severity;
exp_c1.out_faults.out_ovp.w_time = c1.out_faults.out_ovp.w_time;
exp_c1.out_faults.out_ovp.f_time = c1.out_faults.out_ovp.f_time;
exp_c1.out_faults.out_ocp.severity = c1.out_faults.out_ocp.severity;
exp_c1.out_faults.out_ocp.w_time = c1.out_faults.out_ocp.w_time;
exp_c1.out_faults.out_ocp.f_time = c1.out_faults.out_ocp.f_time;
exp_c1.out_faults.out_opp.severity = c1.out_faults.out_opp.severity;
exp_c1.out_faults.out_opp.w_time = c1.out_faults.out_opp.w_time;
exp_c1.out_faults.out_opp.f_time = c1.out_faults.out_opp.f_time;
exp_c1.out_faults.out_short.severity = c1.out_faults.out_short.severity;
exp_c1.out_faults.out_short.w_time = c1.out_faults.out_short.w_time;
exp_c1.out_faults.out_short.f_time = c1.out_faults.out_short.f_time;
exp_c1.out_faults.out_open.severity = c1.out_faults.out_open.severity;
exp_c1.out_faults.out_open.w_time = c1.out_faults.out_open.w_time;
exp_c1.out_faults.out_open.f_time = c1.out_faults.out_open.f_time;
exp_c1.out_faults_en.sup_uvp = c1.out_faults_en.sup_uvp;
exp_c1.out_faults_en.sup_ovp = c1.out_faults_en.sup_ovp;
exp_c1.out_faults_en.sup_ocp = c1.out_faults_en.sup_ocp;
exp_c1.out_faults_en.sup_opp = c1.out_faults_en.sup_opp;
exp_c1.out_faults_en.out_ovp = c1.out_faults_en.out_ovp;
exp_c1.out_faults_en.out_ocp = c1.out_faults_en.out_ocp;
exp_c1.out_faults_en.out_opp = c1.out_faults_en.out_opp;
exp_c1.out_faults_en.out_open = c1.out_faults_en.out_open;
exp_c1.out_faults_en.out_short = c1.out_faults_en.out_short;
exp_c1.out_fuse.state = c1.out_fuse.state;
exp_c1.out_fuse.count = c1.out_fuse.count;
exp_c1.out_fuse.timer = c1.out_fuse.timer;
exp_c1.out_fuse_cfg.cooldown_time = c1.out_fuse_cfg.cooldown_time;
exp_c1.out_fuse_cfg.retry_time = c1.out_fuse_cfg.retry_time;
exp_c2.enabled = c2.enabled;
exp_c2.out_faults.sup_uvp.severity = c2.out_faults.sup_uvp.severity;
exp_c2.out_faults.sup_uvp.w_time = c2.out_faults.sup_uvp.w_time;
exp_c2.out_faults.sup_uvp.f_time = c2.out_faults.sup_uvp.f_time;
exp_c2.out_faults.sup_ovp.severity = c2.out_faults.sup_ovp.severity;
exp_c2.out_faults.sup_ovp.w_time = c2.out_faults.sup_ovp.w_time;
exp_c2.out_faults.sup_ovp.f_time = c2.out_faults.sup_ovp.f_time;
exp_c2.out_faults.sup_ocp.severity = c2.out_faults.sup_ocp.severity;
exp_c2.out_faults.sup_ocp.w_time = c2.out_faults.sup_ocp.w_time;
exp_c2.out_faults.sup_ocp.f_time = c2.out_faults.sup_ocp.f_time;
exp_c2.out_faults.sup_opp.severity = c2.out_faults.sup_opp.severity;
exp_c2.out_faults.sup_opp.w_time = c2.out_faults.sup_opp.w_time;
exp_c2.out_faults.sup_opp.f_time = c2.out_faults.sup_opp.f_time;
exp_c2.out_faults.out_ovp.severity = c2.out_faults.out_ovp.severity;
exp_c2.out_faults.out_ovp.w_time = c2.out_faults.out_ovp.w_time;
exp_c2.out_faults.out_ovp.f_time = c2.out_faults.out_ovp.f_time;
exp_c2.out_faults.out_ocp.severity = c2.out_faults.out_ocp.severity;
exp_c2.out_faults.out_ocp.w_time = c2.out_faults.out_ocp.w_time;
exp_c2.out_faults.out_ocp.f_time = c2.out_faults.out_ocp.f_time;
exp_c2.out_faults.out_opp.severity = c2.out_faults.out_opp.severity;
exp_c2.out_faults.out_opp.w_time = c2.out_faults.out_opp.w_time;
exp_c2.out_faults.out_opp.f_time = c2.out_faults.out_opp.f_time;
exp_c2.out_faults.out_short.severity = c2.out_faults.out_short.severity;
exp_c2.out_faults.out_short.w_time = c2.out_faults.out_short.w_time;
exp_c2.out_faults.out_short.f_time = c2.out_faults.out_short.f_time;
exp_c2.out_faults.out_open.severity = c2.out_faults.out_open.severity;
exp_c2.out_faults.out_open.w_time = c2.out_faults.out_open.w_time;
exp_c2.out_faults.out_open.f_time = c2.out_faults.out_open.f_time;
exp_c2.out_faults_en.sup_uvp = c2.out_faults_en.sup_uvp;
exp_c2.out_faults_en.sup_ovp = c2.out_faults_en.sup_ovp;
exp_c2.out_faults_en.sup_ocp = c2.out_faults_en.sup_ocp;
exp_c2.out_faults_en.sup_opp = c2.out_faults_en.sup_opp;
exp_c2.out_faults_en.out_ovp = c2.out_faults_en.out_ovp;
exp_c2.out_faults_en.out_ocp = c2.out_faults_en.out_ocp;
exp_c2.out_faults_en.out_opp = c2.out_faults_en.out_opp;
exp_c2.out_faults_en.out_open = c2.out_faults_en.out_open;
exp_c2.out_faults_en.out_short = c2.out_faults_en.out_short;
exp_c2.out_fuse.state = c2.out_fuse.state;
exp_c2.out_fuse.count = c2.out_fuse.count;
exp_c2.out_fuse.timer = c2.out_fuse.timer;
exp_c2.out_fuse_cfg.cooldown_time = c2.out_fuse_cfg.cooldown_time;
exp_c2.out_fuse_cfg.retry_time = c2.out_fuse_cfg.retry_time;
test_res = ut_hb_is_equal_ctrl_struct(&c1, &c2, exp_out, &exp_c1, &exp_c2);
if(!test_res) pass = 0;
// NOT EQUAL
c1.enabled = 0xAA;
c1.out_faults.sup_uvp.severity = FAULT_LVL_FAULT;
c1.out_faults.sup_uvp.w_time = 0xAAAA;
c1.out_faults.sup_uvp.f_time = 0xAAAA;
c1.out_faults.sup_ovp.severity = FAULT_LVL_FAULT;
c1.out_faults.sup_ovp.w_time = 0xAAAA;
c1.out_faults.sup_ovp.f_time = 0xAAAA;
c1.out_faults.sup_ocp.severity = FAULT_LVL_FAULT;
c1.out_faults.sup_ocp.w_time = 0xAAAA;
c1.out_faults.sup_ocp.f_time = 0xAAAA;
c1.out_faults.sup_opp.severity = FAULT_LVL_FAULT;
c1.out_faults.sup_opp.w_time = 0xAAAA;
c1.out_faults.sup_opp.f_time = 0xAAAA;
c1.out_faults.out_ovp.severity = FAULT_LVL_FAULT;
c1.out_faults.out_ovp.w_time = 0xAAAA;
c1.out_faults.out_ovp.f_time = 0xAAAA;
c1.out_faults.out_ocp.severity = FAULT_LVL_FAULT;
c1.out_faults.out_ocp.w_time = 0xAAAA;
c1.out_faults.out_ocp.f_time = 0xAAAA;
c1.out_faults.out_opp.severity = FAULT_LVL_FAULT;
c1.out_faults.out_opp.w_time = 0xAAAA;
c1.out_faults.out_opp.f_time = 0xAAAA;
c1.out_faults.out_short.severity = FAULT_LVL_FAULT;
c1.out_faults.out_short.w_time = 0xAAAA;
c1.out_faults.out_short.f_time = 0xAAAA;
c1.out_faults.out_open.severity = FAULT_LVL_FAULT;
c1.out_faults.out_open.w_time = 0xAAAA;
c1.out_faults.out_open.f_time = 0xAAAA;
c1.out_faults_en.sup_uvp = 0xAA;
c1.out_faults_en.sup_ovp = 0xAA;
c1.out_faults_en.sup_ocp = 0xAA;
c1.out_faults_en.sup_opp = 0xAA;
c1.out_faults_en.out_ovp = 0xAA;
c1.out_faults_en.out_ocp = 0xAA;
c1.out_faults_en.out_opp = 0xAA;
c1.out_faults_en.out_open = 0xAA;
c1.out_faults_en.out_short = 0xAA;
c1.out_fuse.state = FUSE_ACTIVE;
c1.out_fuse.count = 0xAA;
c1.out_fuse.timer = 0xAAAA;
c1.out_fuse_cfg.cooldown_time = 0xAAAA;
c1.out_fuse_cfg.retry_time = 0xAAAA;
c2.enabled = 0x55;
c2.out_faults.sup_uvp.severity = FAULT_LVL_WARNING;
c2.out_faults.sup_uvp.w_time = 0x5555;
c2.out_faults.sup_uvp.f_time = 0x5555;
c2.out_faults.sup_ovp.severity = FAULT_LVL_WARNING;
c2.out_faults.sup_ovp.w_time = 0x5555;
c2.out_faults.sup_ovp.f_time = 0x5555;
c2.out_faults.sup_ocp.severity = FAULT_LVL_WARNING;
c2.out_faults.sup_ocp.w_time = 0x5555;
c2.out_faults.sup_ocp.f_time = 0x5555;
c2.out_faults.sup_opp.severity = FAULT_LVL_WARNING;
c2.out_faults.sup_opp.w_time = 0x5555;
c2.out_faults.sup_opp.f_time = 0x5555;
c2.out_faults.out_ovp.severity = FAULT_LVL_WARNING;
c2.out_faults.out_ovp.w_time = 0x5555;
c2.out_faults.out_ovp.f_time = 0x5555;
c2.out_faults.out_ocp.severity = FAULT_LVL_WARNING;
c2.out_faults.out_ocp.w_time = 0x5555;
c2.out_faults.out_ocp.f_time = 0x5555;
c2.out_faults.out_opp.severity = FAULT_LVL_WARNING;
c2.out_faults.out_opp.w_time = 0x5555;
c2.out_faults.out_opp.f_time = 0x5555;
c2.out_faults.out_short.severity = FAULT_LVL_WARNING;
c2.out_faults.out_short.w_time = 0x5555;
c2.out_faults.out_short.f_time = 0x5555;
c2.out_faults.out_open.severity = FAULT_LVL_WARNING;
c2.out_faults.out_open.w_time = 0x5555;
c2.out_faults.out_open.f_time = 0x5555;
c2.out_faults_en.sup_uvp = 0x55;
c2.out_faults_en.sup_ovp = 0x55;
c2.out_faults_en.sup_ocp = 0x55;
c2.out_faults_en.sup_opp = 0x55;
c2.out_faults_en.out_ovp = 0x55;
c2.out_faults_en.out_ocp = 0x55;
c2.out_faults_en.out_opp = 0x55;
c2.out_faults_en.out_open = 0x55;
c2.out_faults_en.out_short = 0x55;
c2.out_fuse.state = FUSE_COOLDOWN;
c2.out_fuse.count = 0x55;
c2.out_fuse.timer = 0x5555;
c2.out_fuse_cfg.cooldown_time = 0x5555;
c2.out_fuse_cfg.retry_time = 0x5555;
exp_out = 0;
exp_c1.enabled = c1.enabled;
exp_c1.out_faults.sup_uvp.severity = c1.out_faults.sup_uvp.severity;
exp_c1.out_faults.sup_uvp.w_time = c1.out_faults.sup_uvp.w_time;
exp_c1.out_faults.sup_uvp.f_time = c1.out_faults.sup_uvp.f_time;
exp_c1.out_faults.sup_ovp.severity = c1.out_faults.sup_ovp.severity;
exp_c1.out_faults.sup_ovp.w_time = c1.out_faults.sup_ovp.w_time;
exp_c1.out_faults.sup_ovp.f_time = c1.out_faults.sup_ovp.f_time;
exp_c1.out_faults.sup_ocp.severity = c1.out_faults.sup_ocp.severity;
exp_c1.out_faults.sup_ocp.w_time = c1.out_faults.sup_ocp.w_time;
exp_c1.out_faults.sup_ocp.f_time = c1.out_faults.sup_ocp.f_time;
exp_c1.out_faults.sup_opp.severity = c1.out_faults.sup_opp.severity;
exp_c1.out_faults.sup_opp.w_time = c1.out_faults.sup_opp.w_time;
exp_c1.out_faults.sup_opp.f_time = c1.out_faults.sup_opp.f_time;
exp_c1.out_faults.out_ovp.severity = c1.out_faults.out_ovp.severity;
exp_c1.out_faults.out_ovp.w_time = c1.out_faults.out_ovp.w_time;
exp_c1.out_faults.out_ovp.f_time = c1.out_faults.out_ovp.f_time;
exp_c1.out_faults.out_ocp.severity = c1.out_faults.out_ocp.severity;
exp_c1.out_faults.out_ocp.w_time = c1.out_faults.out_ocp.w_time;
exp_c1.out_faults.out_ocp.f_time = c1.out_faults.out_ocp.f_time;
exp_c1.out_faults.out_opp.severity = c1.out_faults.out_opp.severity;
exp_c1.out_faults.out_opp.w_time = c1.out_faults.out_opp.w_time;
exp_c1.out_faults.out_opp.f_time = c1.out_faults.out_opp.f_time;
exp_c1.out_faults.out_short.severity = c1.out_faults.out_short.severity;
exp_c1.out_faults.out_short.w_time = c1.out_faults.out_short.w_time;
exp_c1.out_faults.out_short.f_time = c1.out_faults.out_short.f_time;
exp_c1.out_faults.out_open.severity = c1.out_faults.out_open.severity;
exp_c1.out_faults.out_open.w_time = c1.out_faults.out_open.w_time;
exp_c1.out_faults.out_open.f_time = c1.out_faults.out_open.f_time;
exp_c1.out_faults_en.sup_uvp = c1.out_faults_en.sup_uvp;
exp_c1.out_faults_en.sup_ovp = c1.out_faults_en.sup_ovp;
exp_c1.out_faults_en.sup_ocp = c1.out_faults_en.sup_ocp;
exp_c1.out_faults_en.sup_opp = c1.out_faults_en.sup_opp;
exp_c1.out_faults_en.out_ovp = c1.out_faults_en.out_ovp;
exp_c1.out_faults_en.out_ocp = c1.out_faults_en.out_ocp;
exp_c1.out_faults_en.out_opp = c1.out_faults_en.out_opp;
exp_c1.out_faults_en.out_open = c1.out_faults_en.out_open;
exp_c1.out_faults_en.out_short = c1.out_faults_en.out_short;
exp_c1.out_fuse.state = c1.out_fuse.state;
exp_c1.out_fuse.count = c1.out_fuse.count;
exp_c1.out_fuse.timer = c1.out_fuse.timer;
exp_c1.out_fuse_cfg.cooldown_time = c1.out_fuse_cfg.cooldown_time;
exp_c1.out_fuse_cfg.retry_time = c1.out_fuse_cfg.retry_time;
exp_c2.enabled = c2.enabled;
exp_c2.out_faults.sup_uvp.severity = c2.out_faults.sup_uvp.severity;
exp_c2.out_faults.sup_uvp.w_time = c2.out_faults.sup_uvp.w_time;
exp_c2.out_faults.sup_uvp.f_time = c2.out_faults.sup_uvp.f_time;
exp_c2.out_faults.sup_ovp.severity = c2.out_faults.sup_ovp.severity;
exp_c2.out_faults.sup_ovp.w_time = c2.out_faults.sup_ovp.w_time;
exp_c2.out_faults.sup_ovp.f_time = c2.out_faults.sup_ovp.f_time;
exp_c2.out_faults.sup_ocp.severity = c2.out_faults.sup_ocp.severity;
exp_c2.out_faults.sup_ocp.w_time = c2.out_faults.sup_ocp.w_time;
exp_c2.out_faults.sup_ocp.f_time = c2.out_faults.sup_ocp.f_time;
exp_c2.out_faults.sup_opp.severity = c2.out_faults.sup_opp.severity;
exp_c2.out_faults.sup_opp.w_time = c2.out_faults.sup_opp.w_time;
exp_c2.out_faults.sup_opp.f_time = c2.out_faults.sup_opp.f_time;
exp_c2.out_faults.out_ovp.severity = c2.out_faults.out_ovp.severity;
exp_c2.out_faults.out_ovp.w_time = c2.out_faults.out_ovp.w_time;
exp_c2.out_faults.out_ovp.f_time = c2.out_faults.out_ovp.f_time;
exp_c2.out_faults.out_ocp.severity = c2.out_faults.out_ocp.severity;
exp_c2.out_faults.out_ocp.w_time = c2.out_faults.out_ocp.w_time;
exp_c2.out_faults.out_ocp.f_time = c2.out_faults.out_ocp.f_time;
exp_c2.out_faults.out_opp.severity = c2.out_faults.out_opp.severity;
exp_c2.out_faults.out_opp.w_time = c2.out_faults.out_opp.w_time;
exp_c2.out_faults.out_opp.f_time = c2.out_faults.out_opp.f_time;
exp_c2.out_faults.out_short.severity = c2.out_faults.out_short.severity;
exp_c2.out_faults.out_short.w_time = c2.out_faults.out_short.w_time;
exp_c2.out_faults.out_short.f_time = c2.out_faults.out_short.f_time;
exp_c2.out_faults.out_open.severity = c2.out_faults.out_open.severity;
exp_c2.out_faults.out_open.w_time = c2.out_faults.out_open.w_time;
exp_c2.out_faults.out_open.f_time = c2.out_faults.out_open.f_time;
exp_c2.out_faults_en.sup_uvp = c2.out_faults_en.sup_uvp;
exp_c2.out_faults_en.sup_ovp = c2.out_faults_en.sup_ovp;
exp_c2.out_faults_en.sup_ocp = c2.out_faults_en.sup_ocp;
exp_c2.out_faults_en.sup_opp = c2.out_faults_en.sup_opp;
exp_c2.out_faults_en.out_ovp = c2.out_faults_en.out_ovp;
exp_c2.out_faults_en.out_ocp = c2.out_faults_en.out_ocp;
exp_c2.out_faults_en.out_opp = c2.out_faults_en.out_opp;
exp_c2.out_faults_en.out_open = c2.out_faults_en.out_open;
exp_c2.out_faults_en.out_short = c2.out_faults_en.out_short;
exp_c2.out_fuse.state = c2.out_fuse.state;
exp_c2.out_fuse.count = c2.out_fuse.count;
exp_c2.out_fuse.timer = c2.out_fuse.timer;
exp_c2.out_fuse_cfg.cooldown_time = c2.out_fuse_cfg.cooldown_time;
exp_c2.out_fuse_cfg.retry_time = c2.out_fuse_cfg.retry_time;
test_res = ut_hb_is_equal_ctrl_struct(&c1, &c2, exp_out, &exp_c1, &exp_c2);
if(!test_res) pass = 0;
return pass;
}
static const uint8_t NOT_ACCESD_LOW = 255;
static const uint16_t NOT_ACCESD_PWM = 0xFFFF;
static int ut_hb_init(hb_feedback_t* hb_fb, hb_control_t* hb_ctrl, hb_meas_t* meas, uint8_t exp_low, uint16_t exp_pwm, hb_feedback_t* exp_hb_fb, hb_control_t* exp_hb_ctrl)
{
printf("Input:\n");
mock_board_halfbridge_write_low(NOT_ACCESD_LOW);
mock_board_halfbridge_write_pwm(NOT_ACCESD_PWM);
mock_board_halfbridge_write_feedback(meas);
hb_init(hb_fb, hb_ctrl);
uint8_t out_low = mock_board_halfbridge_read_low();
uint16_t out_pwm = mock_board_halfbridge_read_pwm();
uint8_t fb_ok = hb_is_equal_fb_struct(hb_fb, exp_hb_fb);
uint8_t ctrl_ok = hb_is_equal_ctrl_struct(hb_ctrl, exp_hb_ctrl);
printf(" Output: Low:%d PWM:%d FB:%d CTRL:%d \n", out_low, out_pwm, fb_ok, ctrl_ok);
printf("Expected: Low:%d PWM:%d \n", exp_low, exp_pwm);
if((out_low==exp_low)&&(out_pwm==exp_pwm)&&(fb_ok)&&(ctrl_ok))
{
printf("PASS\n\n");
return 1;
}
else
{
printf("FAIL\n\n");
return 0;
}
}
int ut_hb_init_test(void)
{
printf("******************************************************\n");
printf("void hb_init(hb_feedback_t* hb_fb, hb_control_t* hb_ctrl) \n");
int test_res;
int pass = 1;
hb_feedback_t hb_fb;
hb_control_t hb_ctrl;
hb_meas_t meas;
uint8_t exp_low;
uint16_t exp_pwm;
hb_feedback_t exp_hb_fb;
hb_control_t exp_hb_ctrl;
// Normal 1
hb_fb.analog.out_voltage = 0xAAAA;
hb_fb.analog.out_current = 0xAAAA;
hb_fb.analog.sup_voltage = 0xAAAA;
hb_fb.analog.sup_current = 0xAAAA;
hb_fb.analog.out_power = 0xAAAA;
hb_fb.analog.sup_power = 0xAAAA;
hb_fb.analog.out_impedance = 0xAAAA;
hb_fb.analog.low_side_ctrl = 0xAA;
hb_fb.analog.pwm = 0xAAAA;
hb_fb.enabled = 0xAA;
hb_fb.warning_act = 0xAA;
hb_fb.fault_act = 0xAA;
hb_fb.fused = 0xAA;
hb_fb.warnings.sup_uvp = 0xAA;
hb_fb.warnings.sup_ovp = 0xAA;
hb_fb.warnings.sup_ocp = 0xAA;
hb_fb.warnings.sup_opp = 0xAA;
hb_fb.warnings.out_ovp = 0xAA;
hb_fb.warnings.out_ocp = 0xAA;
hb_fb.warnings.out_opp = 0xAA;
hb_fb.warnings.out_short = 0xAA;
hb_fb.warnings.out_open = 0xAA;
hb_fb.faults.sup_uvp = 0xAA;
hb_fb.faults.sup_ovp = 0xAA;
hb_fb.faults.sup_ocp = 0xAA;
hb_fb.faults.sup_opp = 0xAA;
hb_fb.faults.out_ovp = 0xAA;
hb_fb.faults.out_ocp = 0xAA;
hb_fb.faults.out_opp = 0xAA;
hb_fb.faults.out_short = 0xAA;
hb_fb.faults.out_open = 0xAA;
hb_ctrl.enabled = 0xAA;
hb_ctrl.out_faults.sup_uvp.severity = FAULT_LVL_FAULT;
hb_ctrl.out_faults.sup_uvp.w_time = 0xAAAA;
hb_ctrl.out_faults.sup_uvp.f_time = 0xAAAA;
hb_ctrl.out_faults.sup_ovp.severity = FAULT_LVL_FAULT;
hb_ctrl.out_faults.sup_ovp.w_time = 0xAAAA;
hb_ctrl.out_faults.sup_ovp.f_time = 0xAAAA;
hb_ctrl.out_faults.sup_ocp.severity = FAULT_LVL_FAULT;
hb_ctrl.out_faults.sup_ocp.w_time = 0xAAAA;
hb_ctrl.out_faults.sup_ocp.f_time = 0xAAAA;
hb_ctrl.out_faults.sup_opp.severity = FAULT_LVL_FAULT;
hb_ctrl.out_faults.sup_opp.w_time = 0xAAAA;
hb_ctrl.out_faults.sup_opp.f_time = 0xAAAA;
hb_ctrl.out_faults.out_ovp.severity = FAULT_LVL_FAULT;
hb_ctrl.out_faults.out_ovp.w_time = 0xAAAA;
hb_ctrl.out_faults.out_ovp.f_time = 0xAAAA;
hb_ctrl.out_faults.out_ocp.severity = FAULT_LVL_FAULT;
hb_ctrl.out_faults.out_ocp.w_time = 0xAAAA;
hb_ctrl.out_faults.out_ocp.f_time = 0xAAAA;
hb_ctrl.out_faults.out_opp.severity = FAULT_LVL_FAULT;
hb_ctrl.out_faults.out_opp.w_time = 0xAAAA;
hb_ctrl.out_faults.out_opp.f_time = 0xAAAA;
hb_ctrl.out_faults.out_short.severity = FAULT_LVL_FAULT;
hb_ctrl.out_faults.out_short.w_time = 0xAAAA;
hb_ctrl.out_faults.out_short.f_time = 0xAAAA;
hb_ctrl.out_faults.out_open.severity = FAULT_LVL_FAULT;
hb_ctrl.out_faults.out_open.w_time = 0xAAAA;
hb_ctrl.out_faults.out_open.f_time = 0xAAAA;
hb_ctrl.out_faults_en.sup_uvp = 0xAA;
hb_ctrl.out_faults_en.sup_ovp = 0xAA;
hb_ctrl.out_faults_en.sup_ocp = 0xAA;
hb_ctrl.out_faults_en.sup_opp = 0xAA;
hb_ctrl.out_faults_en.out_ovp = 0xAA;
hb_ctrl.out_faults_en.out_ocp = 0xAA;
hb_ctrl.out_faults_en.out_opp = 0xAA;
hb_ctrl.out_faults_en.out_short = 0xAA;
hb_ctrl.out_faults_en.out_open = 0xAA;
hb_ctrl.out_fuse.state = FUSE_ACTIVE;
hb_ctrl.out_fuse.count = 0xAAAA;
hb_ctrl.out_fuse.timer = 0xAAAA;
hb_ctrl.out_fuse_cfg.cooldown_time = 0xAAAA;
hb_ctrl.out_fuse_cfg.retry_time = 0xAAAA;
meas.out_voltage = 12000;
meas.out_current = 100;
meas.sup_voltage = 0;
meas.sup_current = 0;
meas.out_power = 0;
meas.sup_power = 1200;
meas.out_impedance = 0xFFFF;
meas.low_side_ctrl = 0;
meas.pwm = 0;
exp_low = 0;
exp_pwm = 0;
exp_hb_fb.analog.out_voltage = meas.out_voltage;
exp_hb_fb.analog.out_current = meas.out_current;
exp_hb_fb.analog.sup_voltage = meas.sup_voltage;
exp_hb_fb.analog.sup_current = meas.sup_current;
exp_hb_fb.analog.out_power = meas.out_power;
exp_hb_fb.analog.sup_power = meas.sup_power;
exp_hb_fb.analog.out_impedance = meas.out_impedance;
exp_hb_fb.analog.low_side_ctrl = meas.low_side_ctrl;
exp_hb_fb.analog.pwm = meas.pwm;
exp_hb_fb.enabled = 0;
exp_hb_fb.warning_act = 0;
exp_hb_fb.fault_act = 0;
exp_hb_fb.fused = 0;
exp_hb_fb.warnings.sup_uvp = 0;
exp_hb_fb.warnings.sup_ovp = 0;
exp_hb_fb.warnings.sup_ocp = 0;
exp_hb_fb.warnings.sup_opp = 0;
exp_hb_fb.warnings.out_ovp = 0;
exp_hb_fb.warnings.out_ocp = 0;
exp_hb_fb.warnings.out_opp = 0;
exp_hb_fb.warnings.out_short = 0;
exp_hb_fb.warnings.out_open = 0;
exp_hb_fb.faults.sup_uvp = 0;
exp_hb_fb.faults.sup_ovp = 0;
exp_hb_fb.faults.sup_ocp = 0;
exp_hb_fb.faults.sup_opp = 0;
exp_hb_fb.faults.out_ovp = 0;
exp_hb_fb.faults.out_ocp = 0;
exp_hb_fb.faults.out_opp = 0;
exp_hb_fb.faults.out_short = 0;
exp_hb_fb.faults.out_open = 0;
exp_hb_ctrl.enabled = 0;
exp_hb_ctrl.out_faults.sup_uvp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_uvp.w_time = 0;
exp_hb_ctrl.out_faults.sup_uvp.f_time = 0;
exp_hb_ctrl.out_faults.sup_ovp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_ovp.w_time = 0;
exp_hb_ctrl.out_faults.sup_ovp.f_time = 0;
exp_hb_ctrl.out_faults.sup_ocp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_ocp.w_time = 0;
exp_hb_ctrl.out_faults.sup_ocp.f_time = 0;
exp_hb_ctrl.out_faults.sup_opp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_opp.w_time = 0;
exp_hb_ctrl.out_faults.sup_opp.f_time = 0;
exp_hb_ctrl.out_faults.out_ovp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_ovp.w_time = 0;
exp_hb_ctrl.out_faults.out_ovp.f_time = 0;
exp_hb_ctrl.out_faults.out_ocp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_ocp.w_time = 0;
exp_hb_ctrl.out_faults.out_ocp.f_time = 0;
exp_hb_ctrl.out_faults.out_opp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_opp.w_time = 0;
exp_hb_ctrl.out_faults.out_opp.f_time = 0;
exp_hb_ctrl.out_faults.out_short.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_short.w_time = 0;
exp_hb_ctrl.out_faults.out_short.f_time = 0;
exp_hb_ctrl.out_faults.out_open.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_open.w_time = 0;
exp_hb_ctrl.out_faults.out_open.f_time = 0;
exp_hb_ctrl.out_faults_en.sup_uvp = 0;
exp_hb_ctrl.out_faults_en.sup_ovp = 0;
exp_hb_ctrl.out_faults_en.sup_ocp = 1;
exp_hb_ctrl.out_faults_en.sup_opp = 0;
exp_hb_ctrl.out_faults_en.out_ovp = 0;
exp_hb_ctrl.out_faults_en.out_ocp = 1;
exp_hb_ctrl.out_faults_en.out_opp = 0;
exp_hb_ctrl.out_faults_en.out_short = 1;
exp_hb_ctrl.out_faults_en.out_open = 0;
exp_hb_ctrl.out_fuse.state = FUSE_OFF;
exp_hb_ctrl.out_fuse.count = 0;
exp_hb_ctrl.out_fuse.timer = 0;
exp_hb_ctrl.out_fuse_cfg.cooldown_time = 1000;
exp_hb_ctrl.out_fuse_cfg.retry_time = 1000;
test_res = ut_hb_init(&hb_fb, &hb_ctrl, &meas, exp_low, exp_pwm, &exp_hb_fb, &exp_hb_ctrl);
if(!test_res) pass = 0;
return pass;
}
static int ut_hb_enable(hb_control_t* hb_ctrl, uint8_t exp_low, uint16_t exp_pwm, hb_control_t* exp_hb_ctrl)
{
printf(" Input:\n");
mock_board_halfbridge_write_low(NOT_ACCESD_LOW);
mock_board_halfbridge_write_pwm(NOT_ACCESD_PWM);
hb_enable(hb_ctrl);
uint8_t out_low = mock_board_halfbridge_read_low();
uint16_t out_pwm = mock_board_halfbridge_read_pwm();
uint8_t ctrl_ok = hb_is_equal_ctrl_struct(hb_ctrl, exp_hb_ctrl);
printf(" Output: Low:%d PWM:%d Ctrl:%d\n", out_low, out_pwm, ctrl_ok);
printf("Expected: Low:%d PWM:%d \n", exp_low, exp_pwm);
if((out_low==exp_low)&&(out_pwm==exp_pwm)&&(ctrl_ok))
{
printf("PASS\n\n");
return 1;
}
else
{
printf("FAIL\n\n");
return 0;
}
}
int ut_hb_enable_test(void)
{
printf("******************************************************\n");
printf("void hb_enable(hb_control_t* hb_ctrl) \n");
int test_res;
int pass = 1;
hb_control_t hb_ctrl;
uint8_t exp_low;
uint16_t exp_pwm;
hb_control_t exp_hb_ctrl;
// Normal 1
hb_ctrl.enabled = 0;
hb_ctrl.out_faults.sup_uvp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_uvp.w_time = 0;
hb_ctrl.out_faults.sup_uvp.f_time = 0;
hb_ctrl.out_faults.sup_ovp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_ovp.w_time = 0;
hb_ctrl.out_faults.sup_ovp.f_time = 0;
hb_ctrl.out_faults.sup_ocp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_ocp.w_time = 0;
hb_ctrl.out_faults.sup_ocp.f_time = 0;
hb_ctrl.out_faults.sup_opp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_opp.w_time = 0;
hb_ctrl.out_faults.sup_opp.f_time = 0;
hb_ctrl.out_faults.out_ovp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_ovp.w_time = 0;
hb_ctrl.out_faults.out_ovp.f_time = 0;
hb_ctrl.out_faults.out_ocp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_ocp.w_time = 0;
hb_ctrl.out_faults.out_ocp.f_time = 0;
hb_ctrl.out_faults.out_opp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_opp.w_time = 0;
hb_ctrl.out_faults.out_opp.f_time = 0;
hb_ctrl.out_faults.out_short.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_short.w_time = 0;
hb_ctrl.out_faults.out_short.f_time = 0;
hb_ctrl.out_faults.out_open.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_open.w_time = 0;
hb_ctrl.out_faults.out_open.f_time = 0;
hb_ctrl.out_faults_en.sup_uvp = 0;
hb_ctrl.out_faults_en.sup_ovp = 0;
hb_ctrl.out_faults_en.sup_ocp = 1;
hb_ctrl.out_faults_en.sup_opp = 0;
hb_ctrl.out_faults_en.out_ovp = 0;
hb_ctrl.out_faults_en.out_ocp = 1;
hb_ctrl.out_faults_en.out_opp = 0;
hb_ctrl.out_faults_en.out_short = 1;
hb_ctrl.out_faults_en.out_open = 0;
hb_ctrl.out_fuse.state = FUSE_OFF;
hb_ctrl.out_fuse.count = 0;
hb_ctrl.out_fuse.timer = 0;
hb_ctrl.out_fuse_cfg.cooldown_time = 1000;
hb_ctrl.out_fuse_cfg.retry_time = 1000;
exp_low = 1;
exp_pwm = 0;
exp_hb_ctrl.enabled = 1;
exp_hb_ctrl.out_faults.sup_uvp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_uvp.w_time = 0;
exp_hb_ctrl.out_faults.sup_uvp.f_time = 0;
exp_hb_ctrl.out_faults.sup_ovp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_ovp.w_time = 0;
exp_hb_ctrl.out_faults.sup_ovp.f_time = 0;
exp_hb_ctrl.out_faults.sup_ocp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_ocp.w_time = 0;
exp_hb_ctrl.out_faults.sup_ocp.f_time = 0;
exp_hb_ctrl.out_faults.sup_opp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_opp.w_time = 0;
exp_hb_ctrl.out_faults.sup_opp.f_time = 0;
exp_hb_ctrl.out_faults.out_ovp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_ovp.w_time = 0;
exp_hb_ctrl.out_faults.out_ovp.f_time = 0;
exp_hb_ctrl.out_faults.out_ocp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_ocp.w_time = 0;
exp_hb_ctrl.out_faults.out_ocp.f_time = 0;
exp_hb_ctrl.out_faults.out_opp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_opp.w_time = 0;
exp_hb_ctrl.out_faults.out_opp.f_time = 0;
exp_hb_ctrl.out_faults.out_short.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_short.w_time = 0;
exp_hb_ctrl.out_faults.out_short.f_time = 0;
exp_hb_ctrl.out_faults.out_open.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_open.w_time = 0;
exp_hb_ctrl.out_faults.out_open.f_time = 0;
exp_hb_ctrl.out_faults_en.sup_uvp = 0;
exp_hb_ctrl.out_faults_en.sup_ovp = 0;
exp_hb_ctrl.out_faults_en.sup_ocp = 1;
exp_hb_ctrl.out_faults_en.sup_opp = 0;
exp_hb_ctrl.out_faults_en.out_ovp = 0;
exp_hb_ctrl.out_faults_en.out_ocp = 1;
exp_hb_ctrl.out_faults_en.out_opp = 0;
exp_hb_ctrl.out_faults_en.out_short = 1;
exp_hb_ctrl.out_faults_en.out_open = 0;
exp_hb_ctrl.out_fuse.state = FUSE_OFF;
exp_hb_ctrl.out_fuse.count = 0;
exp_hb_ctrl.out_fuse.timer = 0;
exp_hb_ctrl.out_fuse_cfg.cooldown_time = 1000;
exp_hb_ctrl.out_fuse_cfg.retry_time = 1000;
test_res = ut_hb_enable(&hb_ctrl, exp_low, exp_pwm, &exp_hb_ctrl);
if(!test_res) pass = 0;
return pass;
}
static int ut_hb_disable(hb_control_t* hb_ctrl, uint8_t exp_low, uint16_t exp_pwm, hb_control_t* exp_hb_ctrl)
{
printf(" Input:\n");
mock_board_halfbridge_write_low(NOT_ACCESD_LOW);
mock_board_halfbridge_write_pwm(NOT_ACCESD_PWM);
hb_disable(hb_ctrl);
uint8_t out_low = mock_board_halfbridge_read_low();
uint16_t out_pwm = mock_board_halfbridge_read_pwm();
uint8_t ctrl_ok = hb_is_equal_ctrl_struct(hb_ctrl, exp_hb_ctrl);
printf(" Output: Low:%d PWM:%d Ctrl:%d\n", out_low, out_pwm, ctrl_ok);
printf("Expected: Low:%d PWM:%d \n", exp_low, exp_pwm);
if((out_low==exp_low)&&(out_pwm==exp_pwm)&&(ctrl_ok))
{
printf("PASS\n\n");
return 1;
}
else
{
printf("FAIL\n\n");
return 0;
}
}
int ut_hb_disable_test(void)
{
printf("******************************************************\n");
printf("void hb_disable(hb_control_t* hb_ctrl) \n");
int test_res;
int pass = 1;
hb_control_t hb_ctrl;
uint8_t exp_low;
uint16_t exp_pwm;
hb_control_t exp_hb_ctrl;
// Normal 1
hb_ctrl.enabled = 1;
hb_ctrl.out_faults.sup_uvp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_uvp.w_time = 0;
hb_ctrl.out_faults.sup_uvp.f_time = 0;
hb_ctrl.out_faults.sup_ovp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_ovp.w_time = 0;
hb_ctrl.out_faults.sup_ovp.f_time = 0;
hb_ctrl.out_faults.sup_ocp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_ocp.w_time = 0;
hb_ctrl.out_faults.sup_ocp.f_time = 0;
hb_ctrl.out_faults.sup_opp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_opp.w_time = 0;
hb_ctrl.out_faults.sup_opp.f_time = 0;
hb_ctrl.out_faults.out_ovp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_ovp.w_time = 0;
hb_ctrl.out_faults.out_ovp.f_time = 0;
hb_ctrl.out_faults.out_ocp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_ocp.w_time = 0;
hb_ctrl.out_faults.out_ocp.f_time = 0;
hb_ctrl.out_faults.out_opp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_opp.w_time = 0;
hb_ctrl.out_faults.out_opp.f_time = 0;
hb_ctrl.out_faults.out_short.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_short.w_time = 0;
hb_ctrl.out_faults.out_short.f_time = 0;
hb_ctrl.out_faults.out_open.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_open.w_time = 0;
hb_ctrl.out_faults.out_open.f_time = 0;
hb_ctrl.out_faults_en.sup_uvp = 0;
hb_ctrl.out_faults_en.sup_ovp = 0;
hb_ctrl.out_faults_en.sup_ocp = 1;
hb_ctrl.out_faults_en.sup_opp = 0;
hb_ctrl.out_faults_en.out_ovp = 0;
hb_ctrl.out_faults_en.out_ocp = 1;
hb_ctrl.out_faults_en.out_opp = 0;
hb_ctrl.out_faults_en.out_short = 1;
hb_ctrl.out_faults_en.out_open = 0;
hb_ctrl.out_fuse.state = FUSE_OFF;
hb_ctrl.out_fuse.count = 0;
hb_ctrl.out_fuse.timer = 0;
hb_ctrl.out_fuse_cfg.cooldown_time = 1000;
hb_ctrl.out_fuse_cfg.retry_time = 1000;
exp_low = 0;
exp_pwm = 0;
exp_hb_ctrl.enabled = 0;
exp_hb_ctrl.out_faults.sup_uvp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_uvp.w_time = 0;
exp_hb_ctrl.out_faults.sup_uvp.f_time = 0;
exp_hb_ctrl.out_faults.sup_ovp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_ovp.w_time = 0;
exp_hb_ctrl.out_faults.sup_ovp.f_time = 0;
exp_hb_ctrl.out_faults.sup_ocp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_ocp.w_time = 0;
exp_hb_ctrl.out_faults.sup_ocp.f_time = 0;
exp_hb_ctrl.out_faults.sup_opp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_opp.w_time = 0;
exp_hb_ctrl.out_faults.sup_opp.f_time = 0;
exp_hb_ctrl.out_faults.out_ovp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_ovp.w_time = 0;
exp_hb_ctrl.out_faults.out_ovp.f_time = 0;
exp_hb_ctrl.out_faults.out_ocp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_ocp.w_time = 0;
exp_hb_ctrl.out_faults.out_ocp.f_time = 0;
exp_hb_ctrl.out_faults.out_opp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_opp.w_time = 0;
exp_hb_ctrl.out_faults.out_opp.f_time = 0;
exp_hb_ctrl.out_faults.out_short.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_short.w_time = 0;
exp_hb_ctrl.out_faults.out_short.f_time = 0;
exp_hb_ctrl.out_faults.out_open.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_open.w_time = 0;
exp_hb_ctrl.out_faults.out_open.f_time = 0;
exp_hb_ctrl.out_faults_en.sup_uvp = 0;
exp_hb_ctrl.out_faults_en.sup_ovp = 0;
exp_hb_ctrl.out_faults_en.sup_ocp = 1;
exp_hb_ctrl.out_faults_en.sup_opp = 0;
exp_hb_ctrl.out_faults_en.out_ovp = 0;
exp_hb_ctrl.out_faults_en.out_ocp = 1;
exp_hb_ctrl.out_faults_en.out_opp = 0;
exp_hb_ctrl.out_faults_en.out_short = 1;
exp_hb_ctrl.out_faults_en.out_open = 0;
exp_hb_ctrl.out_fuse.state = FUSE_OFF;
exp_hb_ctrl.out_fuse.count = 0;
exp_hb_ctrl.out_fuse.timer = 0;
exp_hb_ctrl.out_fuse_cfg.cooldown_time = 1000;
exp_hb_ctrl.out_fuse_cfg.retry_time = 1000;
test_res = ut_hb_disable(&hb_ctrl, exp_low, exp_pwm, &exp_hb_ctrl);
if(!test_res) pass = 0;
return pass;
}
static int ut_hb_process(int16_t target, hb_feedback_t* hb_fb, hb_control_t* hb_ctrl, hb_meas_t* meas, uint8_t exp_low, uint16_t exp_pwm, hb_feedback_t* exp_hb_fb, hb_control_t* exp_hb_ctrl)
{
printf(" Input: Target:%d Enabled:%d \n", target, hb_ctrl->enabled);
printf("Supply Voltage:%d Current:%d Power:%d \n", meas->sup_voltage, meas->sup_current, meas->sup_power);
printf("Output Voltage:%d Current:%d Power:%d Impedance:%d\n", meas->out_voltage, meas->out_current, meas->out_power, meas->out_impedance);
printf("Low side:%d PWM:%d \n", meas->low_side_ctrl, meas->pwm);
printf("Control struct input: \n");
print_ctrl_struct(hb_ctrl);
mock_board_halfbridge_write_low(NOT_ACCESD_LOW);
mock_board_halfbridge_write_pwm(NOT_ACCESD_PWM);
mock_board_halfbridge_write_feedback(meas);
hb_process(target, hb_fb, hb_ctrl);
uint8_t out_low = mock_board_halfbridge_read_low();
uint16_t out_pwm = mock_board_halfbridge_read_pwm();
uint8_t fb_ok = hb_is_equal_fb_struct(hb_fb, exp_hb_fb);
uint8_t ctrl_ok = hb_is_equal_ctrl_struct(hb_ctrl, exp_hb_ctrl);
printf("\n");
printf("Output: \n");
printf("Low:%d PWM:%d FB:%d CTRL:%d \n", out_low, out_pwm, fb_ok, ctrl_ok);
print_fb_struct(hb_fb);
print_ctrl_struct(hb_ctrl);
printf("\n");
printf("Expected: \n");
printf("Low:%d PWM:%d \n", exp_low, exp_pwm);
print_ctrl_struct(exp_hb_ctrl);
if((out_low==exp_low)&&(out_pwm==exp_pwm)&&(fb_ok)&&(ctrl_ok))
{
printf("PASS\n\n");
return 1;
}
else
{
printf("FAIL\n\n");
return 0;
}
}
int ut_hb_process_test(void)
{
printf("******************************************************\n");
printf("void hb_process(int16_t target, hb_feedback_t* hb_fb, hb_control_t* hb_ctrl) \n");
int test_res;
int pass = 1;
int16_t target;
hb_feedback_t hb_fb;
hb_control_t hb_ctrl;
hb_meas_t meas;
uint8_t exp_low;
uint16_t exp_pwm;
hb_feedback_t exp_hb_fb;
hb_control_t exp_hb_ctrl;
// 0V target
printf("----- 0V target ------------------ \n");
target = 0;
hb_fb.analog.sup_voltage = 12000;
hb_fb.analog.sup_current = 100;
hb_fb.analog.sup_power = 1200;
hb_fb.analog.out_voltage = 0;
hb_fb.analog.out_current = 0;
hb_fb.analog.out_power = 0;
hb_fb.analog.out_impedance = 0xFFFF;
hb_fb.analog.low_side_ctrl = 1;
hb_fb.analog.pwm = 0;
hb_fb.enabled = 1;
hb_fb.warning_act = 0;
hb_fb.fault_act = 0;
hb_fb.fused = 0;
hb_fb.warnings.sup_uvp = 0;
hb_fb.warnings.sup_ovp = 0;
hb_fb.warnings.sup_ocp = 0;
hb_fb.warnings.sup_opp = 0;
hb_fb.warnings.out_ovp = 0;
hb_fb.warnings.out_ocp = 0;
hb_fb.warnings.out_opp = 0;
hb_fb.warnings.out_short = 0;
hb_fb.warnings.out_open = 0;
hb_fb.faults.sup_uvp = 0;
hb_fb.faults.sup_ovp = 0;
hb_fb.faults.sup_ocp = 0;
hb_fb.faults.sup_opp = 0;
hb_fb.faults.out_ovp = 0;
hb_fb.faults.out_ocp = 0;
hb_fb.faults.out_opp = 0;
hb_fb.faults.out_short = 0;
hb_fb.faults.out_open = 0;
hb_ctrl.enabled = 1;
hb_ctrl.out_faults.sup_uvp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_uvp.w_time = 0;
hb_ctrl.out_faults.sup_uvp.f_time = 0;
hb_ctrl.out_faults.sup_ovp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_ovp.w_time = 0;
hb_ctrl.out_faults.sup_ovp.f_time = 0;
hb_ctrl.out_faults.sup_ocp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_ocp.w_time = 0;
hb_ctrl.out_faults.sup_ocp.f_time = 0;
hb_ctrl.out_faults.sup_opp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_opp.w_time = 0;
hb_ctrl.out_faults.sup_opp.f_time = 0;
hb_ctrl.out_faults.out_ovp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_ovp.w_time = 0;
hb_ctrl.out_faults.out_ovp.f_time = 0;
hb_ctrl.out_faults.out_ocp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_ocp.w_time = 0;
hb_ctrl.out_faults.out_ocp.f_time = 0;
hb_ctrl.out_faults.out_opp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_opp.w_time = 0;
hb_ctrl.out_faults.out_opp.f_time = 0;
hb_ctrl.out_faults.out_short.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_short.w_time = 0;
hb_ctrl.out_faults.out_short.f_time = 0;
hb_ctrl.out_faults.out_open.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_open.w_time = 0;
hb_ctrl.out_faults.out_open.f_time = 0;
hb_ctrl.out_faults_en.sup_uvp = 0;
hb_ctrl.out_faults_en.sup_ovp = 0;
hb_ctrl.out_faults_en.sup_ocp = 1;
hb_ctrl.out_faults_en.sup_opp = 0;
hb_ctrl.out_faults_en.out_ovp = 0;
hb_ctrl.out_faults_en.out_ocp = 1;
hb_ctrl.out_faults_en.out_opp = 0;
hb_ctrl.out_faults_en.out_short = 1;
hb_ctrl.out_faults_en.out_open = 0;
hb_ctrl.out_fuse.state = FUSE_OFF;
hb_ctrl.out_fuse.count = 0;
hb_ctrl.out_fuse.timer = 0;
hb_ctrl.out_fuse_cfg.cooldown_time = 1000;
hb_ctrl.out_fuse_cfg.retry_time = 1000;
meas.sup_voltage = 12000;
meas.sup_current = 100;
meas.sup_power = 1200;
meas.out_voltage = 0;
meas.out_current = 0;
meas.out_power = 0;
meas.out_impedance = 0xFFFF;
meas.low_side_ctrl = 1;
meas.pwm = 0;
exp_low = 1;
exp_pwm = 0;
exp_hb_fb.analog.sup_voltage = meas.sup_voltage;
exp_hb_fb.analog.sup_current = meas.sup_current;
exp_hb_fb.analog.sup_power = meas.sup_power;
exp_hb_fb.analog.out_voltage = meas.out_voltage;
exp_hb_fb.analog.out_current = meas.out_current;
exp_hb_fb.analog.out_power = meas.out_power;
exp_hb_fb.analog.out_impedance = meas.out_impedance;
exp_hb_fb.analog.low_side_ctrl = meas.low_side_ctrl;
exp_hb_fb.analog.pwm = meas.pwm;
exp_hb_fb.enabled = 1;
exp_hb_fb.warning_act = 0;
exp_hb_fb.fault_act = 0;
exp_hb_fb.fused = 0;
exp_hb_fb.warnings.sup_uvp = 0;
exp_hb_fb.warnings.sup_ovp = 0;
exp_hb_fb.warnings.sup_ocp = 0;
exp_hb_fb.warnings.sup_opp = 0;
exp_hb_fb.warnings.out_ovp = 0;
exp_hb_fb.warnings.out_ocp = 0;
exp_hb_fb.warnings.out_opp = 0;
exp_hb_fb.warnings.out_short = 0;
exp_hb_fb.warnings.out_open = 0;
exp_hb_fb.faults.sup_uvp = 0;
exp_hb_fb.faults.sup_ovp = 0;
exp_hb_fb.faults.sup_ocp = 0;
exp_hb_fb.faults.sup_opp = 0;
exp_hb_fb.faults.out_ovp = 0;
exp_hb_fb.faults.out_ocp = 0;
exp_hb_fb.faults.out_opp = 0;
exp_hb_fb.faults.out_short = 0;
exp_hb_fb.faults.out_open = 0;
exp_hb_ctrl.enabled = 1;
exp_hb_ctrl.out_faults.sup_uvp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_uvp.w_time = 0;
exp_hb_ctrl.out_faults.sup_uvp.f_time = 0;
exp_hb_ctrl.out_faults.sup_ovp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_ovp.w_time = 0;
exp_hb_ctrl.out_faults.sup_ovp.f_time = 0;
exp_hb_ctrl.out_faults.sup_ocp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_ocp.w_time = 0;
exp_hb_ctrl.out_faults.sup_ocp.f_time = 0;
exp_hb_ctrl.out_faults.sup_opp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_opp.w_time = 0;
exp_hb_ctrl.out_faults.sup_opp.f_time = 0;
exp_hb_ctrl.out_faults.out_ovp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_ovp.w_time = 0;
exp_hb_ctrl.out_faults.out_ovp.f_time = 0;
exp_hb_ctrl.out_faults.out_ocp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_ocp.w_time = 0;
exp_hb_ctrl.out_faults.out_ocp.f_time = 0;
exp_hb_ctrl.out_faults.out_opp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_opp.w_time = 0;
exp_hb_ctrl.out_faults.out_opp.f_time = 0;
exp_hb_ctrl.out_faults.out_short.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_short.w_time = 0;
exp_hb_ctrl.out_faults.out_short.f_time = 0;
exp_hb_ctrl.out_faults.out_open.severity = FAULT_LVL_WARNING;
exp_hb_ctrl.out_faults.out_open.w_time = 0;
exp_hb_ctrl.out_faults.out_open.f_time = 0;
exp_hb_ctrl.out_faults_en.sup_uvp = 0;
exp_hb_ctrl.out_faults_en.sup_ovp = 0;
exp_hb_ctrl.out_faults_en.sup_ocp = 1;
exp_hb_ctrl.out_faults_en.sup_opp = 0;
exp_hb_ctrl.out_faults_en.out_ovp = 1;
exp_hb_ctrl.out_faults_en.out_ocp = 1;
exp_hb_ctrl.out_faults_en.out_opp = 0;
exp_hb_ctrl.out_faults_en.out_short = 0;
exp_hb_ctrl.out_faults_en.out_open = 0;
exp_hb_ctrl.out_fuse.state = FUSE_OFF;
exp_hb_ctrl.out_fuse.count = 0;
exp_hb_ctrl.out_fuse.timer = 0;
exp_hb_ctrl.out_fuse_cfg.cooldown_time = 1000;
exp_hb_ctrl.out_fuse_cfg.retry_time = 1000;
test_res = ut_hb_process(target, &hb_fb, &hb_ctrl, &meas, exp_low, exp_pwm, &exp_hb_fb, &exp_hb_ctrl);
if(!test_res) pass = 0;
// 6V target
printf("----- 6V target ------------------ \n");
target = 6000;
hb_fb.analog.sup_voltage = 12000;
hb_fb.analog.sup_current = 100;
hb_fb.analog.sup_power = 1200;
hb_fb.analog.out_voltage = 0;
hb_fb.analog.out_current = 0;
hb_fb.analog.out_power = 0;
hb_fb.analog.out_impedance = 0xFFFF;
hb_fb.analog.low_side_ctrl = 1;
hb_fb.analog.pwm = 0;
hb_fb.enabled = 1;
hb_fb.warning_act = 0;
hb_fb.fault_act = 0;
hb_fb.fused = 0;
hb_fb.warnings.sup_uvp = 0;
hb_fb.warnings.sup_ovp = 0;
hb_fb.warnings.sup_ocp = 0;
hb_fb.warnings.sup_opp = 0;
hb_fb.warnings.out_ovp = 0;
hb_fb.warnings.out_ocp = 0;
hb_fb.warnings.out_opp = 0;
hb_fb.warnings.out_short = 0;
hb_fb.warnings.out_open = 0;
hb_fb.faults.sup_uvp = 0;
hb_fb.faults.sup_ovp = 0;
hb_fb.faults.sup_ocp = 0;
hb_fb.faults.sup_opp = 0;
hb_fb.faults.out_ovp = 0;
hb_fb.faults.out_ocp = 0;
hb_fb.faults.out_opp = 0;
hb_fb.faults.out_short = 0;
hb_fb.faults.out_open = 0;
hb_ctrl.enabled = 1;
hb_ctrl.out_faults.sup_uvp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_uvp.w_time = 0;
hb_ctrl.out_faults.sup_uvp.f_time = 0;
hb_ctrl.out_faults.sup_ovp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_ovp.w_time = 0;
hb_ctrl.out_faults.sup_ovp.f_time = 0;
hb_ctrl.out_faults.sup_ocp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_ocp.w_time = 0;
hb_ctrl.out_faults.sup_ocp.f_time = 0;
hb_ctrl.out_faults.sup_opp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_opp.w_time = 0;
hb_ctrl.out_faults.sup_opp.f_time = 0;
hb_ctrl.out_faults.out_ovp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_ovp.w_time = 0;
hb_ctrl.out_faults.out_ovp.f_time = 0;
hb_ctrl.out_faults.out_ocp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_ocp.w_time = 0;
hb_ctrl.out_faults.out_ocp.f_time = 0;
hb_ctrl.out_faults.out_opp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_opp.w_time = 0;
hb_ctrl.out_faults.out_opp.f_time = 0;
hb_ctrl.out_faults.out_short.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_short.w_time = 0;
hb_ctrl.out_faults.out_short.f_time = 0;
hb_ctrl.out_faults.out_open.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_open.w_time = 0;
hb_ctrl.out_faults.out_open.f_time = 0;
hb_ctrl.out_faults_en.sup_uvp = 0;
hb_ctrl.out_faults_en.sup_ovp = 0;
hb_ctrl.out_faults_en.sup_ocp = 1;
hb_ctrl.out_faults_en.sup_opp = 0;
hb_ctrl.out_faults_en.out_ovp = 1;
hb_ctrl.out_faults_en.out_ocp = 1;
hb_ctrl.out_faults_en.out_opp = 0;
hb_ctrl.out_faults_en.out_short = 1;
hb_ctrl.out_faults_en.out_open = 0;
hb_ctrl.out_fuse.state = FUSE_OFF;
hb_ctrl.out_fuse.count = 0;
hb_ctrl.out_fuse.timer = 0;
hb_ctrl.out_fuse_cfg.cooldown_time = 1000;
hb_ctrl.out_fuse_cfg.retry_time = 1000;
meas.sup_voltage = 12000;
meas.sup_current = 100;
meas.sup_power = 1200;
meas.out_voltage = 0;
meas.out_current = 0;
meas.out_power = 0;
meas.out_impedance = 0xFFFF;
meas.low_side_ctrl = 1;
meas.pwm = 0;
exp_low = 1;
exp_pwm = 0x7FFF;
exp_hb_fb.analog.sup_voltage = meas.sup_voltage;
exp_hb_fb.analog.sup_current = meas.sup_current;
exp_hb_fb.analog.sup_power = meas.sup_power;
exp_hb_fb.analog.out_voltage = meas.out_voltage;
exp_hb_fb.analog.out_current = meas.out_current;
exp_hb_fb.analog.out_power = meas.out_power;
exp_hb_fb.analog.out_impedance = meas.out_impedance;
exp_hb_fb.analog.low_side_ctrl = meas.low_side_ctrl;
exp_hb_fb.analog.pwm = meas.pwm;
exp_hb_fb.enabled = 1;
exp_hb_fb.warning_act = 0;
exp_hb_fb.fault_act = 0;
exp_hb_fb.fused = 0;
exp_hb_fb.warnings.sup_uvp = 0;
exp_hb_fb.warnings.sup_ovp = 0;
exp_hb_fb.warnings.sup_ocp = 0;
exp_hb_fb.warnings.sup_opp = 0;
exp_hb_fb.warnings.out_ovp = 0;
exp_hb_fb.warnings.out_ocp = 0;
exp_hb_fb.warnings.out_opp = 0;
exp_hb_fb.warnings.out_short = 0;
exp_hb_fb.warnings.out_open = 0;
exp_hb_fb.faults.sup_uvp = 0;
exp_hb_fb.faults.sup_ovp = 0;
exp_hb_fb.faults.sup_ocp = 0;
exp_hb_fb.faults.sup_opp = 0;
exp_hb_fb.faults.out_ovp = 0;
exp_hb_fb.faults.out_ocp = 0;
exp_hb_fb.faults.out_opp = 0;
exp_hb_fb.faults.out_short = 0;
exp_hb_fb.faults.out_open = 0;
exp_hb_ctrl.enabled = 1;
exp_hb_ctrl.out_faults.sup_uvp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_uvp.w_time = 0;
exp_hb_ctrl.out_faults.sup_uvp.f_time = 0;
exp_hb_ctrl.out_faults.sup_ovp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_ovp.w_time = 0;
exp_hb_ctrl.out_faults.sup_ovp.f_time = 0;
exp_hb_ctrl.out_faults.sup_ocp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_ocp.w_time = 0;
exp_hb_ctrl.out_faults.sup_ocp.f_time = 0;
exp_hb_ctrl.out_faults.sup_opp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_opp.w_time = 0;
exp_hb_ctrl.out_faults.sup_opp.f_time = 0;
exp_hb_ctrl.out_faults.out_ovp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_ovp.w_time = 0;
exp_hb_ctrl.out_faults.out_ovp.f_time = 0;
exp_hb_ctrl.out_faults.out_ocp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_ocp.w_time = 0;
exp_hb_ctrl.out_faults.out_ocp.f_time = 0;
exp_hb_ctrl.out_faults.out_opp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_opp.w_time = 0;
exp_hb_ctrl.out_faults.out_opp.f_time = 0;
exp_hb_ctrl.out_faults.out_short.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_short.w_time = 0;
exp_hb_ctrl.out_faults.out_short.f_time = 0;
exp_hb_ctrl.out_faults.out_open.severity = FAULT_LVL_WARNING;
exp_hb_ctrl.out_faults.out_open.w_time = 0;
exp_hb_ctrl.out_faults.out_open.f_time = 0;
exp_hb_ctrl.out_faults_en.sup_uvp = 0;
exp_hb_ctrl.out_faults_en.sup_ovp = 0;
exp_hb_ctrl.out_faults_en.sup_ocp = 1;
exp_hb_ctrl.out_faults_en.sup_opp = 0;
exp_hb_ctrl.out_faults_en.out_ovp = 1;
exp_hb_ctrl.out_faults_en.out_ocp = 1;
exp_hb_ctrl.out_faults_en.out_opp = 0;
exp_hb_ctrl.out_faults_en.out_short = 1;
exp_hb_ctrl.out_faults_en.out_open = 0;
exp_hb_ctrl.out_fuse.state = FUSE_OFF;
exp_hb_ctrl.out_fuse.count = 0;
exp_hb_ctrl.out_fuse.timer = 0;
exp_hb_ctrl.out_fuse_cfg.cooldown_time = 1000;
exp_hb_ctrl.out_fuse_cfg.retry_time = 1000;
test_res = ut_hb_process(target, &hb_fb, &hb_ctrl, &meas, exp_low, exp_pwm, &exp_hb_fb, &exp_hb_ctrl);
if(!test_res) pass = 0;
// -1 / Handbrake target
printf("----- -1 Handbarke target ------------------ \n");
target = -1;
hb_fb.analog.sup_voltage = 12000;
hb_fb.analog.sup_current = 100;
hb_fb.analog.sup_power = 1200;
hb_fb.analog.out_voltage = 0;
hb_fb.analog.out_current = 0;
hb_fb.analog.out_power = 0;
hb_fb.analog.out_impedance = 0xFFFF;
hb_fb.analog.low_side_ctrl = 1;
hb_fb.analog.pwm = 0;
hb_fb.enabled = 1;
hb_fb.warning_act = 0;
hb_fb.fault_act = 0;
hb_fb.fused = 0;
hb_fb.warnings.sup_uvp = 0;
hb_fb.warnings.sup_ovp = 0;
hb_fb.warnings.sup_ocp = 0;
hb_fb.warnings.sup_opp = 0;
hb_fb.warnings.out_ovp = 0;
hb_fb.warnings.out_ocp = 0;
hb_fb.warnings.out_opp = 0;
hb_fb.warnings.out_short = 0;
hb_fb.warnings.out_open = 0;
hb_fb.faults.sup_uvp = 0;
hb_fb.faults.sup_ovp = 0;
hb_fb.faults.sup_ocp = 0;
hb_fb.faults.sup_opp = 0;
hb_fb.faults.out_ovp = 0;
hb_fb.faults.out_ocp = 0;
hb_fb.faults.out_opp = 0;
hb_fb.faults.out_short = 0;
hb_fb.faults.out_open = 0;
hb_ctrl.enabled = 1;
hb_ctrl.out_faults.sup_uvp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_uvp.w_time = 0;
hb_ctrl.out_faults.sup_uvp.f_time = 0;
hb_ctrl.out_faults.sup_ovp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_ovp.w_time = 0;
hb_ctrl.out_faults.sup_ovp.f_time = 0;
hb_ctrl.out_faults.sup_ocp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_ocp.w_time = 0;
hb_ctrl.out_faults.sup_ocp.f_time = 0;
hb_ctrl.out_faults.sup_opp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_opp.w_time = 0;
hb_ctrl.out_faults.sup_opp.f_time = 0;
hb_ctrl.out_faults.out_ovp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_ovp.w_time = 0;
hb_ctrl.out_faults.out_ovp.f_time = 0;
hb_ctrl.out_faults.out_ocp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_ocp.w_time = 0;
hb_ctrl.out_faults.out_ocp.f_time = 0;
hb_ctrl.out_faults.out_opp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_opp.w_time = 0;
hb_ctrl.out_faults.out_opp.f_time = 0;
hb_ctrl.out_faults.out_short.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_short.w_time = 0;
hb_ctrl.out_faults.out_short.f_time = 0;
hb_ctrl.out_faults.out_open.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_open.w_time = 0;
hb_ctrl.out_faults.out_open.f_time = 0;
hb_ctrl.out_faults_en.sup_uvp = 0;
hb_ctrl.out_faults_en.sup_ovp = 0;
hb_ctrl.out_faults_en.sup_ocp = 1;
hb_ctrl.out_faults_en.sup_opp = 0;
hb_ctrl.out_faults_en.out_ovp = 0;
hb_ctrl.out_faults_en.out_ocp = 1;
hb_ctrl.out_faults_en.out_opp = 0;
hb_ctrl.out_faults_en.out_short = 1;
hb_ctrl.out_faults_en.out_open = 0;
hb_ctrl.out_fuse.state = FUSE_OFF;
hb_ctrl.out_fuse.count = 0;
hb_ctrl.out_fuse.timer = 0;
hb_ctrl.out_fuse_cfg.cooldown_time = 1000;
hb_ctrl.out_fuse_cfg.retry_time = 1000;
meas.sup_voltage = 12000;
meas.sup_current = 100;
meas.sup_power = 1200;
meas.out_voltage = 0;
meas.out_current = 0;
meas.out_power = 0;
meas.out_impedance = 0xFFFF;
meas.low_side_ctrl = 1;
meas.pwm = 0;
exp_low = 0;
exp_pwm = 0;
exp_hb_fb.analog.sup_voltage = meas.sup_voltage;
exp_hb_fb.analog.sup_current = meas.sup_current;
exp_hb_fb.analog.sup_power = meas.sup_power;
exp_hb_fb.analog.out_voltage = meas.out_voltage;
exp_hb_fb.analog.out_current = meas.out_current;
exp_hb_fb.analog.out_power = meas.out_power;
exp_hb_fb.analog.out_impedance = meas.out_impedance;
exp_hb_fb.analog.low_side_ctrl = meas.low_side_ctrl;
exp_hb_fb.analog.pwm = meas.pwm;
exp_hb_fb.enabled = 1;
exp_hb_fb.warning_act = 0;
exp_hb_fb.fault_act = 0;
exp_hb_fb.fused = 0;
exp_hb_fb.warnings.sup_uvp = 0;
exp_hb_fb.warnings.sup_ovp = 0;
exp_hb_fb.warnings.sup_ocp = 0;
exp_hb_fb.warnings.sup_opp = 0;
exp_hb_fb.warnings.out_ovp = 0;
exp_hb_fb.warnings.out_ocp = 0;
exp_hb_fb.warnings.out_opp = 0;
exp_hb_fb.warnings.out_short = 0;
exp_hb_fb.warnings.out_open = 0;
exp_hb_fb.faults.sup_uvp = 0;
exp_hb_fb.faults.sup_ovp = 0;
exp_hb_fb.faults.sup_ocp = 0;
exp_hb_fb.faults.sup_opp = 0;
exp_hb_fb.faults.out_ovp = 0;
exp_hb_fb.faults.out_ocp = 0;
exp_hb_fb.faults.out_opp = 0;
exp_hb_fb.faults.out_short = 0;
exp_hb_fb.faults.out_open = 0;
exp_hb_ctrl.enabled = 1;
exp_hb_ctrl.out_faults.sup_uvp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_uvp.w_time = 0;
exp_hb_ctrl.out_faults.sup_uvp.f_time = 0;
exp_hb_ctrl.out_faults.sup_ovp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_ovp.w_time = 0;
exp_hb_ctrl.out_faults.sup_ovp.f_time = 0;
exp_hb_ctrl.out_faults.sup_ocp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_ocp.w_time = 0;
exp_hb_ctrl.out_faults.sup_ocp.f_time = 0;
exp_hb_ctrl.out_faults.sup_opp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_opp.w_time = 0;
exp_hb_ctrl.out_faults.sup_opp.f_time = 0;
exp_hb_ctrl.out_faults.out_ovp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_ovp.w_time = 0;
exp_hb_ctrl.out_faults.out_ovp.f_time = 0;
exp_hb_ctrl.out_faults.out_ocp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_ocp.w_time = 0;
exp_hb_ctrl.out_faults.out_ocp.f_time = 0;
exp_hb_ctrl.out_faults.out_opp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_opp.w_time = 0;
exp_hb_ctrl.out_faults.out_opp.f_time = 0;
exp_hb_ctrl.out_faults.out_short.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_short.w_time = 0;
exp_hb_ctrl.out_faults.out_short.f_time = 0;
exp_hb_ctrl.out_faults.out_open.severity = FAULT_LVL_WARNING;
exp_hb_ctrl.out_faults.out_open.w_time = 0;
exp_hb_ctrl.out_faults.out_open.f_time = 0;
exp_hb_ctrl.out_faults_en.sup_uvp = 0;
exp_hb_ctrl.out_faults_en.sup_ovp = 0;
exp_hb_ctrl.out_faults_en.sup_ocp = 1;
exp_hb_ctrl.out_faults_en.sup_opp = 0;
exp_hb_ctrl.out_faults_en.out_ovp = 0;
exp_hb_ctrl.out_faults_en.out_ocp = 1;
exp_hb_ctrl.out_faults_en.out_opp = 0;
exp_hb_ctrl.out_faults_en.out_short = 0;
exp_hb_ctrl.out_faults_en.out_open = 0;
exp_hb_ctrl.out_fuse.state = FUSE_OFF;
exp_hb_ctrl.out_fuse.count = 0;
exp_hb_ctrl.out_fuse.timer = 0;
exp_hb_ctrl.out_fuse_cfg.cooldown_time = 1000;
exp_hb_ctrl.out_fuse_cfg.retry_time = 1000;
test_res = ut_hb_process(target, &hb_fb, &hb_ctrl, &meas, exp_low, exp_pwm, &exp_hb_fb, &exp_hb_ctrl);
if(!test_res) pass = 0;
// Warnings 1
printf("----- Warning 1 ------------------ \n");
target = 1000;
hb_fb.analog.sup_voltage = 12000;
hb_fb.analog.sup_current = 100;
hb_fb.analog.sup_power = 1200;
hb_fb.analog.out_voltage = 0;
hb_fb.analog.out_current = 0;
hb_fb.analog.out_power = 0;
hb_fb.analog.out_impedance = 0xFFFF;
hb_fb.analog.low_side_ctrl = 1;
hb_fb.analog.pwm = 0;
hb_fb.enabled = 1;
hb_fb.warning_act = 0;
hb_fb.fault_act = 0;
hb_fb.fused = 0;
hb_fb.warnings.sup_uvp = 0;
hb_fb.warnings.sup_ovp = 0;
hb_fb.warnings.sup_ocp = 0;
hb_fb.warnings.sup_opp = 0;
hb_fb.warnings.out_ovp = 0;
hb_fb.warnings.out_ocp = 0;
hb_fb.warnings.out_opp = 0;
hb_fb.warnings.out_short = 0;
hb_fb.warnings.out_open = 0;
hb_fb.faults.sup_uvp = 0;
hb_fb.faults.sup_ovp = 0;
hb_fb.faults.sup_ocp = 0;
hb_fb.faults.sup_opp = 0;
hb_fb.faults.out_ovp = 0;
hb_fb.faults.out_ocp = 0;
hb_fb.faults.out_opp = 0;
hb_fb.faults.out_short = 0;
hb_fb.faults.out_open = 0;
hb_ctrl.enabled = 1;
hb_ctrl.out_faults.sup_uvp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_uvp.w_time = 0;
hb_ctrl.out_faults.sup_uvp.f_time = 0;
hb_ctrl.out_faults.sup_ovp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_ovp.w_time = 0;
hb_ctrl.out_faults.sup_ovp.f_time = 0;
hb_ctrl.out_faults.sup_ocp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_ocp.w_time = 0;
hb_ctrl.out_faults.sup_ocp.f_time = 0;
hb_ctrl.out_faults.sup_opp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_opp.w_time = 0;
hb_ctrl.out_faults.sup_opp.f_time = 0;
hb_ctrl.out_faults.out_ovp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_ovp.w_time = 0;
hb_ctrl.out_faults.out_ovp.f_time = 0;
hb_ctrl.out_faults.out_ocp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_ocp.w_time = 0;
hb_ctrl.out_faults.out_ocp.f_time = 0;
hb_ctrl.out_faults.out_opp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_opp.w_time = 0;
hb_ctrl.out_faults.out_opp.f_time = 0;
hb_ctrl.out_faults.out_short.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_short.w_time = 0;
hb_ctrl.out_faults.out_short.f_time = 0;
hb_ctrl.out_faults.out_open.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_open.w_time = 0;
hb_ctrl.out_faults.out_open.f_time = 0;
hb_ctrl.out_faults_en.sup_uvp = 1;
hb_ctrl.out_faults_en.sup_ovp = 1;
hb_ctrl.out_faults_en.sup_ocp = 1;
hb_ctrl.out_faults_en.sup_opp = 1;
hb_ctrl.out_faults_en.out_ovp = 1;
hb_ctrl.out_faults_en.out_ocp = 1;
hb_ctrl.out_faults_en.out_opp = 1;
hb_ctrl.out_faults_en.out_short = 1;
hb_ctrl.out_faults_en.out_open = 1;
hb_ctrl.out_fuse.state = FUSE_OFF;
hb_ctrl.out_fuse.count = 0;
hb_ctrl.out_fuse.timer = 0;
hb_ctrl.out_fuse_cfg.cooldown_time = 1000;
hb_ctrl.out_fuse_cfg.retry_time = 1000;
meas.sup_voltage = HW_HB_SUPPLY_VOLT_MAX_W+1000;
meas.sup_current = HW_HB_SUPPLY_CURRENT_MAX_W+1000;
meas.sup_power = HW_HB_SUPPLY_POWER_MAX_W+1000;
meas.out_voltage = HW_HB_OUT_VOLTAGE_MAX_W+1000;
meas.out_current = HW_HB_OUT_CURRENT_MAX_W+1000;
meas.out_power = HW_HB_OUT_POWER_MAX_W+1000;
meas.out_impedance = HW_HB_OUT_RESISTANCE_MIN_W-50;
meas.low_side_ctrl = 1;
meas.pwm = 0xFF00;
exp_low = 1;
exp_pwm = 3855;
exp_hb_fb.analog.sup_voltage = meas.sup_voltage;
exp_hb_fb.analog.sup_current = meas.sup_current;
exp_hb_fb.analog.sup_power = meas.sup_power;
exp_hb_fb.analog.out_voltage = meas.out_voltage;
exp_hb_fb.analog.out_current = meas.out_current;
exp_hb_fb.analog.out_power = meas.out_power;
exp_hb_fb.analog.out_impedance = meas.out_impedance;
exp_hb_fb.analog.low_side_ctrl = meas.low_side_ctrl;
exp_hb_fb.analog.pwm = meas.pwm;
exp_hb_fb.enabled = 1;
exp_hb_fb.warning_act = 1;
exp_hb_fb.fault_act = 0;
exp_hb_fb.fused = 0;
exp_hb_fb.warnings.sup_uvp = 0;
exp_hb_fb.warnings.sup_ovp = 1;
exp_hb_fb.warnings.sup_ocp = 1;
exp_hb_fb.warnings.sup_opp = 1;
exp_hb_fb.warnings.out_ovp = 1;
exp_hb_fb.warnings.out_ocp = 1;
exp_hb_fb.warnings.out_opp = 1;
exp_hb_fb.warnings.out_short = 1;
exp_hb_fb.warnings.out_open = 0;
exp_hb_fb.faults.sup_uvp = 0;
exp_hb_fb.faults.sup_ovp = 0;
exp_hb_fb.faults.sup_ocp = 0;
exp_hb_fb.faults.sup_opp = 0;
exp_hb_fb.faults.out_ovp = 0;
exp_hb_fb.faults.out_ocp = 0;
exp_hb_fb.faults.out_opp = 0;
exp_hb_fb.faults.out_short = 0;
exp_hb_fb.faults.out_open = 0;
exp_hb_ctrl.enabled = 1;
exp_hb_ctrl.out_faults.sup_uvp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_uvp.w_time = 0;
exp_hb_ctrl.out_faults.sup_uvp.f_time = 0;
exp_hb_ctrl.out_faults.sup_ovp.severity = FAULT_LVL_WARNING;
exp_hb_ctrl.out_faults.sup_ovp.w_time = 0;
exp_hb_ctrl.out_faults.sup_ovp.f_time = 0;
exp_hb_ctrl.out_faults.sup_ocp.severity = FAULT_LVL_WARNING;
exp_hb_ctrl.out_faults.sup_ocp.w_time = 0;
exp_hb_ctrl.out_faults.sup_ocp.f_time = 0;
exp_hb_ctrl.out_faults.sup_opp.severity = FAULT_LVL_WARNING;
exp_hb_ctrl.out_faults.sup_opp.w_time = 0;
exp_hb_ctrl.out_faults.sup_opp.f_time = 0;
exp_hb_ctrl.out_faults.out_ovp.severity = FAULT_LVL_WARNING;
exp_hb_ctrl.out_faults.out_ovp.w_time = 0;
exp_hb_ctrl.out_faults.out_ovp.f_time = 0;
exp_hb_ctrl.out_faults.out_ocp.severity = FAULT_LVL_WARNING;
exp_hb_ctrl.out_faults.out_ocp.w_time = 0;
exp_hb_ctrl.out_faults.out_ocp.f_time = 0;
exp_hb_ctrl.out_faults.out_opp.severity = FAULT_LVL_WARNING;
exp_hb_ctrl.out_faults.out_opp.w_time = 0;
exp_hb_ctrl.out_faults.out_opp.f_time = 0;
exp_hb_ctrl.out_faults.out_short.severity = FAULT_LVL_WARNING;
exp_hb_ctrl.out_faults.out_short.w_time = 0;
exp_hb_ctrl.out_faults.out_short.f_time = 0;
exp_hb_ctrl.out_faults.out_open.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_open.w_time = 0;
exp_hb_ctrl.out_faults.out_open.f_time = 0;
exp_hb_ctrl.out_faults_en.sup_uvp = 1;
exp_hb_ctrl.out_faults_en.sup_ovp = 1;
exp_hb_ctrl.out_faults_en.sup_ocp = 1;
exp_hb_ctrl.out_faults_en.sup_opp = 1;
exp_hb_ctrl.out_faults_en.out_ovp = 1;
exp_hb_ctrl.out_faults_en.out_ocp = 1;
exp_hb_ctrl.out_faults_en.out_opp = 1;
exp_hb_ctrl.out_faults_en.out_short = 1;
exp_hb_ctrl.out_faults_en.out_open = 1;
exp_hb_ctrl.out_fuse.state = FUSE_OFF;
exp_hb_ctrl.out_fuse.count = 0;
exp_hb_ctrl.out_fuse.timer = 0;
exp_hb_ctrl.out_fuse_cfg.cooldown_time = 1000;
exp_hb_ctrl.out_fuse_cfg.retry_time = 1000;
test_res = ut_hb_process(target, &hb_fb, &hb_ctrl, &meas, exp_low, exp_pwm, &exp_hb_fb, &exp_hb_ctrl);
if(!test_res) pass = 0;
// Warnings 2
printf("----- Warning 2 ------------------ \n");
target = 5000;
hb_fb.analog.sup_voltage = 12000;
hb_fb.analog.sup_current = 100;
hb_fb.analog.sup_power = 1200;
hb_fb.analog.out_voltage = 0;
hb_fb.analog.out_current = 0;
hb_fb.analog.out_power = 0;
hb_fb.analog.out_impedance = 0xFFFF;
hb_fb.analog.low_side_ctrl = 1;
hb_fb.analog.pwm = 0;
hb_fb.enabled = 1;
hb_fb.warning_act = 0;
hb_fb.fault_act = 0;
hb_fb.fused = 0;
hb_fb.warnings.sup_uvp = 0;
hb_fb.warnings.sup_ovp = 0;
hb_fb.warnings.sup_ocp = 0;
hb_fb.warnings.sup_opp = 0;
hb_fb.warnings.out_ovp = 0;
hb_fb.warnings.out_ocp = 0;
hb_fb.warnings.out_opp = 0;
hb_fb.warnings.out_short = 0;
hb_fb.warnings.out_open = 0;
hb_fb.faults.sup_uvp = 0;
hb_fb.faults.sup_ovp = 0;
hb_fb.faults.sup_ocp = 0;
hb_fb.faults.sup_opp = 0;
hb_fb.faults.out_ovp = 0;
hb_fb.faults.out_ocp = 0;
hb_fb.faults.out_opp = 0;
hb_fb.faults.out_short = 0;
hb_fb.faults.out_open = 0;
hb_ctrl.enabled = 1;
hb_ctrl.out_faults.sup_uvp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_uvp.w_time = 0;
hb_ctrl.out_faults.sup_uvp.f_time = 0;
hb_ctrl.out_faults.sup_ovp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_ovp.w_time = 0;
hb_ctrl.out_faults.sup_ovp.f_time = 0;
hb_ctrl.out_faults.sup_ocp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_ocp.w_time = 0;
hb_ctrl.out_faults.sup_ocp.f_time = 0;
hb_ctrl.out_faults.sup_opp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_opp.w_time = 0;
hb_ctrl.out_faults.sup_opp.f_time = 0;
hb_ctrl.out_faults.out_ovp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_ovp.w_time = 0;
hb_ctrl.out_faults.out_ovp.f_time = 0;
hb_ctrl.out_faults.out_ocp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_ocp.w_time = 0;
hb_ctrl.out_faults.out_ocp.f_time = 0;
hb_ctrl.out_faults.out_opp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_opp.w_time = 0;
hb_ctrl.out_faults.out_opp.f_time = 0;
hb_ctrl.out_faults.out_short.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_short.w_time = 0;
hb_ctrl.out_faults.out_short.f_time = 0;
hb_ctrl.out_faults.out_open.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_open.w_time = 0;
hb_ctrl.out_faults.out_open.f_time = 0;
hb_ctrl.out_faults_en.sup_uvp = 1;
hb_ctrl.out_faults_en.sup_ovp = 1;
hb_ctrl.out_faults_en.sup_ocp = 1;
hb_ctrl.out_faults_en.sup_opp = 1;
hb_ctrl.out_faults_en.out_ovp = 1;
hb_ctrl.out_faults_en.out_ocp = 1;
hb_ctrl.out_faults_en.out_opp = 1;
hb_ctrl.out_faults_en.out_short = 1;
hb_ctrl.out_faults_en.out_open = 1;
hb_ctrl.out_fuse.state = FUSE_OFF;
hb_ctrl.out_fuse.count = 0;
hb_ctrl.out_fuse.timer = 0;
hb_ctrl.out_fuse_cfg.cooldown_time = 1000;
hb_ctrl.out_fuse_cfg.retry_time = 1000;
meas.sup_voltage = HW_HB_SUPPLY_VOLT_MIN_W-1000;
meas.sup_current = HW_HB_SUPPLY_CURRENT_MAX_W+1000;
meas.sup_power = HW_HB_SUPPLY_POWER_MAX_W+1000;
meas.out_voltage = HW_HB_OUT_VOLTAGE_MAX_W+1000;
meas.out_current = HW_HB_OUT_CURRENT_MAX_W+1000;
meas.out_power = HW_HB_OUT_POWER_MAX_W+1000;
meas.out_impedance = HW_HB_OUT_RESISTANCE_MAX_W+50;
meas.low_side_ctrl = 1;
meas.pwm = 0xFF00;
exp_low = 1;
exp_pwm = 36408;
exp_hb_fb.analog.sup_voltage = meas.sup_voltage;
exp_hb_fb.analog.sup_current = meas.sup_current;
exp_hb_fb.analog.sup_power = meas.sup_power;
exp_hb_fb.analog.out_voltage = meas.out_voltage;
exp_hb_fb.analog.out_current = meas.out_current;
exp_hb_fb.analog.out_power = meas.out_power;
exp_hb_fb.analog.out_impedance = meas.out_impedance;
exp_hb_fb.analog.low_side_ctrl = meas.low_side_ctrl;
exp_hb_fb.analog.pwm = meas.pwm;
exp_hb_fb.enabled = 1;
exp_hb_fb.warning_act = 1;
exp_hb_fb.fault_act = 0;
exp_hb_fb.fused = 0;
exp_hb_fb.warnings.sup_uvp = 1;
exp_hb_fb.warnings.sup_ovp = 0;
exp_hb_fb.warnings.sup_ocp = 1;
exp_hb_fb.warnings.sup_opp = 1;
exp_hb_fb.warnings.out_ovp = 1;
exp_hb_fb.warnings.out_ocp = 1;
exp_hb_fb.warnings.out_opp = 1;
exp_hb_fb.warnings.out_short = 0;
exp_hb_fb.warnings.out_open = 1;
exp_hb_fb.faults.sup_uvp = 0;
exp_hb_fb.faults.sup_ovp = 0;
exp_hb_fb.faults.sup_ocp = 0;
exp_hb_fb.faults.sup_opp = 0;
exp_hb_fb.faults.out_ovp = 0;
exp_hb_fb.faults.out_ocp = 0;
exp_hb_fb.faults.out_opp = 0;
exp_hb_fb.faults.out_short = 0;
exp_hb_fb.faults.out_open = 0;
exp_hb_ctrl.enabled = 1;
exp_hb_ctrl.out_faults.sup_uvp.severity = FAULT_LVL_WARNING;
exp_hb_ctrl.out_faults.sup_uvp.w_time = 0;
exp_hb_ctrl.out_faults.sup_uvp.f_time = 0;
exp_hb_ctrl.out_faults.sup_ovp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_ovp.w_time = 0;
exp_hb_ctrl.out_faults.sup_ovp.f_time = 0;
exp_hb_ctrl.out_faults.sup_ocp.severity = FAULT_LVL_WARNING;
exp_hb_ctrl.out_faults.sup_ocp.w_time = 0;
exp_hb_ctrl.out_faults.sup_ocp.f_time = 0;
exp_hb_ctrl.out_faults.sup_opp.severity = FAULT_LVL_WARNING;
exp_hb_ctrl.out_faults.sup_opp.w_time = 0;
exp_hb_ctrl.out_faults.sup_opp.f_time = 0;
exp_hb_ctrl.out_faults.out_ovp.severity = FAULT_LVL_WARNING;
exp_hb_ctrl.out_faults.out_ovp.w_time = 0;
exp_hb_ctrl.out_faults.out_ovp.f_time = 0;
exp_hb_ctrl.out_faults.out_ocp.severity = FAULT_LVL_WARNING;
exp_hb_ctrl.out_faults.out_ocp.w_time = 0;
exp_hb_ctrl.out_faults.out_ocp.f_time = 0;
exp_hb_ctrl.out_faults.out_opp.severity = FAULT_LVL_WARNING;
exp_hb_ctrl.out_faults.out_opp.w_time = 0;
exp_hb_ctrl.out_faults.out_opp.f_time = 0;
exp_hb_ctrl.out_faults.out_short.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_short.w_time = 0;
exp_hb_ctrl.out_faults.out_short.f_time = 0;
exp_hb_ctrl.out_faults.out_open.severity = FAULT_LVL_WARNING;
exp_hb_ctrl.out_faults.out_open.w_time = 0;
exp_hb_ctrl.out_faults.out_open.f_time = 0;
exp_hb_ctrl.out_faults_en.sup_uvp = 1;
exp_hb_ctrl.out_faults_en.sup_ovp = 1;
exp_hb_ctrl.out_faults_en.sup_ocp = 1;
exp_hb_ctrl.out_faults_en.sup_opp = 1;
exp_hb_ctrl.out_faults_en.out_ovp = 1;
exp_hb_ctrl.out_faults_en.out_ocp = 1;
exp_hb_ctrl.out_faults_en.out_opp = 1;
exp_hb_ctrl.out_faults_en.out_short = 1;
exp_hb_ctrl.out_faults_en.out_open = 1;
exp_hb_ctrl.out_fuse.state = FUSE_OFF;
exp_hb_ctrl.out_fuse.count = 0;
exp_hb_ctrl.out_fuse.timer = 0;
exp_hb_ctrl.out_fuse_cfg.cooldown_time = 1000;
exp_hb_ctrl.out_fuse_cfg.retry_time = 1000;
test_res = ut_hb_process(target, &hb_fb, &hb_ctrl, &meas, exp_low, exp_pwm, &exp_hb_fb, &exp_hb_ctrl);
if(!test_res) pass = 0;
// Faults 1
printf("----- Faults 1 first sample ------------------ \n");
target = 2500;
hb_fb.analog.sup_voltage = 12000;
hb_fb.analog.sup_current = 100;
hb_fb.analog.sup_power = 1200;
hb_fb.analog.out_voltage = 0;
hb_fb.analog.out_current = 0;
hb_fb.analog.out_power = 0;
hb_fb.analog.out_impedance = 0xFFFF;
hb_fb.analog.low_side_ctrl = 1;
hb_fb.analog.pwm = 0;
hb_fb.enabled = 1;
hb_fb.warning_act = 0;
hb_fb.fault_act = 0;
hb_fb.fused = 0;
hb_fb.warnings.sup_uvp = 0;
hb_fb.warnings.sup_ovp = 0;
hb_fb.warnings.sup_ocp = 0;
hb_fb.warnings.sup_opp = 0;
hb_fb.warnings.out_ovp = 0;
hb_fb.warnings.out_ocp = 0;
hb_fb.warnings.out_opp = 0;
hb_fb.warnings.out_short = 0;
hb_fb.warnings.out_open = 0;
hb_fb.faults.sup_uvp = 0;
hb_fb.faults.sup_ovp = 0;
hb_fb.faults.sup_ocp = 0;
hb_fb.faults.sup_opp = 0;
hb_fb.faults.out_ovp = 0;
hb_fb.faults.out_ocp = 0;
hb_fb.faults.out_opp = 0;
hb_fb.faults.out_short = 0;
hb_fb.faults.out_open = 0;
hb_ctrl.enabled = 1;
hb_ctrl.out_faults.sup_uvp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_uvp.w_time = 0;
hb_ctrl.out_faults.sup_uvp.f_time = 0;
hb_ctrl.out_faults.sup_ovp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_ovp.w_time = 0;
hb_ctrl.out_faults.sup_ovp.f_time = 0;
hb_ctrl.out_faults.sup_ocp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_ocp.w_time = 0;
hb_ctrl.out_faults.sup_ocp.f_time = 0;
hb_ctrl.out_faults.sup_opp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.sup_opp.w_time = 0;
hb_ctrl.out_faults.sup_opp.f_time = 0;
hb_ctrl.out_faults.out_ovp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_ovp.w_time = 0;
hb_ctrl.out_faults.out_ovp.f_time = 0;
hb_ctrl.out_faults.out_ocp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_ocp.w_time = 0;
hb_ctrl.out_faults.out_ocp.f_time = 0;
hb_ctrl.out_faults.out_opp.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_opp.w_time = 0;
hb_ctrl.out_faults.out_opp.f_time = 0;
hb_ctrl.out_faults.out_short.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_short.w_time = 0;
hb_ctrl.out_faults.out_short.f_time = 0;
hb_ctrl.out_faults.out_open.severity = FAULT_LVL_OK;
hb_ctrl.out_faults.out_open.w_time = 0;
hb_ctrl.out_faults.out_open.f_time = 0;
hb_ctrl.out_faults_en.sup_uvp = 1;
hb_ctrl.out_faults_en.sup_ovp = 1;
hb_ctrl.out_faults_en.sup_ocp = 1;
hb_ctrl.out_faults_en.sup_opp = 1;
hb_ctrl.out_faults_en.out_ovp = 1;
hb_ctrl.out_faults_en.out_ocp = 1;
hb_ctrl.out_faults_en.out_opp = 1;
hb_ctrl.out_faults_en.out_short = 1;
hb_ctrl.out_faults_en.out_open = 1;
hb_ctrl.out_fuse.state = FUSE_OFF;
hb_ctrl.out_fuse.count = 0;
hb_ctrl.out_fuse.timer = 0;
hb_ctrl.out_fuse_cfg.cooldown_time = 1000;
hb_ctrl.out_fuse_cfg.retry_time = 1000;
meas.sup_voltage = 20000;
meas.sup_current = 10000;
meas.sup_power = 50000;
meas.out_voltage = 12000;
meas.out_current = 10000;
meas.out_power = 50000;
meas.out_impedance = 200;
meas.low_side_ctrl = 1;
meas.pwm = 0xFF00;
exp_low = 1;
exp_pwm = 8191;
exp_hb_fb.analog.sup_voltage = meas.sup_voltage;
exp_hb_fb.analog.sup_current = meas.sup_current;
exp_hb_fb.analog.sup_power = meas.sup_power;
exp_hb_fb.analog.out_voltage = meas.out_voltage;
exp_hb_fb.analog.out_current = meas.out_current;
exp_hb_fb.analog.out_power = meas.out_power;
exp_hb_fb.analog.out_impedance = meas.out_impedance;
exp_hb_fb.analog.low_side_ctrl = meas.low_side_ctrl;
exp_hb_fb.analog.pwm = meas.pwm;
exp_hb_fb.enabled = 1;
exp_hb_fb.warning_act = 1;
exp_hb_fb.fault_act = 0;
exp_hb_fb.fused = 0;
exp_hb_fb.warnings.sup_uvp = 0;
exp_hb_fb.warnings.sup_ovp = 1;
exp_hb_fb.warnings.sup_ocp = 1;
exp_hb_fb.warnings.sup_opp = 1;
exp_hb_fb.warnings.out_ovp = 1;
exp_hb_fb.warnings.out_ocp = 1;
exp_hb_fb.warnings.out_opp = 1;
exp_hb_fb.warnings.out_short = 1;
exp_hb_fb.warnings.out_open = 0;
exp_hb_fb.faults.sup_uvp = 0;
exp_hb_fb.faults.sup_ovp = 0;
exp_hb_fb.faults.sup_ocp = 0;
exp_hb_fb.faults.sup_opp = 0;
exp_hb_fb.faults.out_ovp = 0;
exp_hb_fb.faults.out_ocp = 0;
exp_hb_fb.faults.out_opp = 0;
exp_hb_fb.faults.out_short = 0;
exp_hb_fb.faults.out_open = 0;
exp_hb_ctrl.enabled = 1;
exp_hb_ctrl.out_faults.sup_uvp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_uvp.w_time = 0;
exp_hb_ctrl.out_faults.sup_uvp.f_time = 0;
exp_hb_ctrl.out_faults.sup_ovp.severity = FAULT_LVL_WARNING;
exp_hb_ctrl.out_faults.sup_ovp.w_time = 0;
exp_hb_ctrl.out_faults.sup_ovp.f_time = 0;
exp_hb_ctrl.out_faults.sup_ocp.severity = FAULT_LVL_WARNING;
exp_hb_ctrl.out_faults.sup_ocp.w_time = 0;
exp_hb_ctrl.out_faults.sup_ocp.f_time = 0;
exp_hb_ctrl.out_faults.sup_opp.severity = FAULT_LVL_WARNING;
exp_hb_ctrl.out_faults.sup_opp.w_time = 0;
exp_hb_ctrl.out_faults.sup_opp.f_time = 0;
exp_hb_ctrl.out_faults.out_ovp.severity = FAULT_LVL_WARNING;
exp_hb_ctrl.out_faults.out_ovp.w_time = 0;
exp_hb_ctrl.out_faults.out_ovp.f_time = 0;
exp_hb_ctrl.out_faults.out_ocp.severity = FAULT_LVL_WARNING;
exp_hb_ctrl.out_faults.out_ocp.w_time = 0;
exp_hb_ctrl.out_faults.out_ocp.f_time = 0;
exp_hb_ctrl.out_faults.out_opp.severity = FAULT_LVL_WARNING;
exp_hb_ctrl.out_faults.out_opp.w_time = 0;
exp_hb_ctrl.out_faults.out_opp.f_time = 0;
exp_hb_ctrl.out_faults.out_short.severity = FAULT_LVL_WARNING;
exp_hb_ctrl.out_faults.out_short.w_time = 0;
exp_hb_ctrl.out_faults.out_short.f_time = 0;
exp_hb_ctrl.out_faults.out_open.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_open.w_time = 0;
exp_hb_ctrl.out_faults.out_open.f_time = 0;
exp_hb_ctrl.out_faults_en.sup_uvp = 1;
exp_hb_ctrl.out_faults_en.sup_ovp = 1;
exp_hb_ctrl.out_faults_en.sup_ocp = 1;
exp_hb_ctrl.out_faults_en.sup_opp = 1;
exp_hb_ctrl.out_faults_en.out_ovp = 1;
exp_hb_ctrl.out_faults_en.out_ocp = 1;
exp_hb_ctrl.out_faults_en.out_opp = 1;
exp_hb_ctrl.out_faults_en.out_short = 1;
exp_hb_ctrl.out_faults_en.out_open = 1;
exp_hb_ctrl.out_fuse.state = FUSE_OFF;
exp_hb_ctrl.out_fuse.count = 0;
exp_hb_ctrl.out_fuse.timer = 0;
exp_hb_ctrl.out_fuse_cfg.cooldown_time = 1000;
exp_hb_ctrl.out_fuse_cfg.retry_time = 1000;
test_res = ut_hb_process(target, &hb_fb, &hb_ctrl, &meas, exp_low, exp_pwm, &exp_hb_fb, &exp_hb_ctrl);
if(!test_res) pass = 0;
// Faults 1
printf("----- Faults 1 transition sample ------------------ \n");
target = 2500;
hb_fb.analog.sup_voltage = 12000;
hb_fb.analog.sup_current = 100;
hb_fb.analog.sup_power = 1200;
hb_fb.analog.out_voltage = 0;
hb_fb.analog.out_current = 0;
hb_fb.analog.out_power = 0;
hb_fb.analog.out_impedance = 0xFFFF;
hb_fb.analog.low_side_ctrl = 1;
hb_fb.analog.pwm = 0;
hb_fb.enabled = 1;
hb_fb.warning_act = 0;
hb_fb.fault_act = 0;
hb_fb.fused = 0;
hb_fb.warnings.sup_uvp = 0;
hb_fb.warnings.sup_ovp = 0;
hb_fb.warnings.sup_ocp = 0;
hb_fb.warnings.sup_opp = 0;
hb_fb.warnings.out_ovp = 0;
hb_fb.warnings.out_ocp = 0;
hb_fb.warnings.out_opp = 0;
hb_fb.warnings.out_short = 0;
hb_fb.warnings.out_open = 0;
hb_fb.faults.sup_uvp = 0;
hb_fb.faults.sup_ovp = 0;
hb_fb.faults.sup_ocp = 0;
hb_fb.faults.sup_opp = 0;
hb_fb.faults.out_ovp = 0;
hb_fb.faults.out_ocp = 0;
hb_fb.faults.out_opp = 0;
hb_fb.faults.out_short = 0;
hb_fb.faults.out_open = 0;
hb_ctrl.enabled = 1;
hb_ctrl.out_faults.sup_uvp.severity = FAULT_LVL_WARNING;
hb_ctrl.out_faults.sup_uvp.w_time = 499;
hb_ctrl.out_faults.sup_uvp.f_time = 499;
hb_ctrl.out_faults.sup_ovp.severity = FAULT_LVL_WARNING;
hb_ctrl.out_faults.sup_ovp.w_time = 499;
hb_ctrl.out_faults.sup_ovp.f_time = 499;
hb_ctrl.out_faults.sup_ocp.severity = FAULT_LVL_WARNING;
hb_ctrl.out_faults.sup_ocp.w_time = 499;
hb_ctrl.out_faults.sup_ocp.f_time = 499;
hb_ctrl.out_faults.sup_opp.severity = FAULT_LVL_WARNING;
hb_ctrl.out_faults.sup_opp.w_time = 499;
hb_ctrl.out_faults.sup_opp.f_time = 499;
hb_ctrl.out_faults.out_ovp.severity = FAULT_LVL_WARNING;
hb_ctrl.out_faults.out_ovp.w_time = 499;
hb_ctrl.out_faults.out_ovp.f_time = 499;
hb_ctrl.out_faults.out_ocp.severity = FAULT_LVL_WARNING;
hb_ctrl.out_faults.out_ocp.w_time = 499;
hb_ctrl.out_faults.out_ocp.f_time = 499;
hb_ctrl.out_faults.out_opp.severity = FAULT_LVL_WARNING;
hb_ctrl.out_faults.out_opp.w_time = 499;
hb_ctrl.out_faults.out_opp.f_time = 499;
hb_ctrl.out_faults.out_short.severity = FAULT_LVL_WARNING;
hb_ctrl.out_faults.out_short.w_time = 499;
hb_ctrl.out_faults.out_short.f_time = 499;
hb_ctrl.out_faults.out_open.severity = FAULT_LVL_WARNING;
hb_ctrl.out_faults.out_open.w_time = 499;
hb_ctrl.out_faults.out_open.f_time = 499;
hb_ctrl.out_faults_en.sup_uvp = 1;
hb_ctrl.out_faults_en.sup_ovp = 1;
hb_ctrl.out_faults_en.sup_ocp = 1;
hb_ctrl.out_faults_en.sup_opp = 1;
hb_ctrl.out_faults_en.out_ovp = 1;
hb_ctrl.out_faults_en.out_ocp = 1;
hb_ctrl.out_faults_en.out_opp = 1;
hb_ctrl.out_faults_en.out_short = 1;
hb_ctrl.out_faults_en.out_open = 1;
hb_ctrl.out_fuse.state = FUSE_OFF;
hb_ctrl.out_fuse.count = 0;
hb_ctrl.out_fuse.timer = 0;
hb_ctrl.out_fuse_cfg.cooldown_time = 1000;
hb_ctrl.out_fuse_cfg.retry_time = 1000;
meas.sup_voltage = 20000;
meas.sup_current = 10000;
meas.sup_power = 50000;
meas.out_voltage = 12000;
meas.out_current = 10000;
meas.out_power = 50000;
meas.out_impedance = 200;
meas.low_side_ctrl = 1;
meas.pwm = 0xFF00;
exp_low = 0;
exp_pwm = 0;
exp_hb_fb.analog.sup_voltage = meas.sup_voltage;
exp_hb_fb.analog.sup_current = meas.sup_current;
exp_hb_fb.analog.sup_power = meas.sup_power;
exp_hb_fb.analog.out_voltage = meas.out_voltage;
exp_hb_fb.analog.out_current = meas.out_current;
exp_hb_fb.analog.out_power = meas.out_power;
exp_hb_fb.analog.out_impedance = meas.out_impedance;
exp_hb_fb.analog.low_side_ctrl = meas.low_side_ctrl;
exp_hb_fb.analog.pwm = meas.pwm;
exp_hb_fb.enabled = 1;
exp_hb_fb.warning_act = 0;
exp_hb_fb.fault_act = 1;
exp_hb_fb.fused = 1;
exp_hb_fb.warnings.sup_uvp = 0;
exp_hb_fb.warnings.sup_ovp = 0;
exp_hb_fb.warnings.sup_ocp = 0;
exp_hb_fb.warnings.sup_opp = 0;
exp_hb_fb.warnings.out_ovp = 0;
exp_hb_fb.warnings.out_ocp = 0;
exp_hb_fb.warnings.out_opp = 0;
exp_hb_fb.warnings.out_short = 0;
exp_hb_fb.warnings.out_open = 0;
exp_hb_fb.faults.sup_uvp = 0;
exp_hb_fb.faults.sup_ovp = 1;
exp_hb_fb.faults.sup_ocp = 1;
exp_hb_fb.faults.sup_opp = 1;
exp_hb_fb.faults.out_ovp = 1;
exp_hb_fb.faults.out_ocp = 1;
exp_hb_fb.faults.out_opp = 1;
exp_hb_fb.faults.out_short = 1;
exp_hb_fb.faults.out_open = 0;
exp_hb_ctrl.enabled = 1;
exp_hb_ctrl.out_faults.sup_uvp.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.sup_uvp.w_time = 0;
exp_hb_ctrl.out_faults.sup_uvp.f_time = 0;
exp_hb_ctrl.out_faults.sup_ovp.severity = FAULT_LVL_FAULT;
exp_hb_ctrl.out_faults.sup_ovp.w_time = 500;
exp_hb_ctrl.out_faults.sup_ovp.f_time = 500;
exp_hb_ctrl.out_faults.sup_ocp.severity = FAULT_LVL_FAULT;
exp_hb_ctrl.out_faults.sup_ocp.w_time = 500;
exp_hb_ctrl.out_faults.sup_ocp.f_time = 500;
exp_hb_ctrl.out_faults.sup_opp.severity = FAULT_LVL_FAULT;
exp_hb_ctrl.out_faults.sup_opp.w_time = 500;
exp_hb_ctrl.out_faults.sup_opp.f_time = 500;
exp_hb_ctrl.out_faults.out_ovp.severity = FAULT_LVL_FAULT;
exp_hb_ctrl.out_faults.out_ovp.w_time = 500;
exp_hb_ctrl.out_faults.out_ovp.f_time = 500;
exp_hb_ctrl.out_faults.out_ocp.severity = FAULT_LVL_FAULT;
exp_hb_ctrl.out_faults.out_ocp.w_time = 500;
exp_hb_ctrl.out_faults.out_ocp.f_time = 500;
exp_hb_ctrl.out_faults.out_opp.severity = FAULT_LVL_FAULT;
exp_hb_ctrl.out_faults.out_opp.w_time = 500;
exp_hb_ctrl.out_faults.out_opp.f_time = 500;
exp_hb_ctrl.out_faults.out_short.severity = FAULT_LVL_FAULT;
exp_hb_ctrl.out_faults.out_short.w_time = 500;
exp_hb_ctrl.out_faults.out_short.f_time = 500;
exp_hb_ctrl.out_faults.out_open.severity = FAULT_LVL_OK;
exp_hb_ctrl.out_faults.out_open.w_time = 0;
exp_hb_ctrl.out_faults.out_open.f_time = 0;
exp_hb_ctrl.out_faults_en.sup_uvp = 1;
exp_hb_ctrl.out_faults_en.sup_ovp = 1;
exp_hb_ctrl.out_faults_en.sup_ocp = 1;
exp_hb_ctrl.out_faults_en.sup_opp = 1;
exp_hb_ctrl.out_faults_en.out_ovp = 1;
exp_hb_ctrl.out_faults_en.out_ocp = 1;
exp_hb_ctrl.out_faults_en.out_opp = 1;
exp_hb_ctrl.out_faults_en.out_short = 1;
exp_hb_ctrl.out_faults_en.out_open = 1;
exp_hb_ctrl.out_fuse.state = FUSE_ACTIVE;
exp_hb_ctrl.out_fuse.count = 1;
exp_hb_ctrl.out_fuse.timer = 0;
exp_hb_ctrl.out_fuse_cfg.cooldown_time = 1000;
exp_hb_ctrl.out_fuse_cfg.retry_time = 1000;
test_res = ut_hb_process(target, &hb_fb, &hb_ctrl, &meas, exp_low, exp_pwm, &exp_hb_fb, &exp_hb_ctrl);
if(!test_res) pass = 0;
return pass;
}