#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; }