Repo unification
This commit is contained in:
951
firmware/tests/ut_utils/ut_fault.c
Normal file
951
firmware/tests/ut_utils/ut_fault.c
Normal file
@@ -0,0 +1,951 @@
|
||||
#include "ut_fault.h"
|
||||
|
||||
#include "..\..\src\hw\board\utils\faults.h"
|
||||
|
||||
static int ut_fault_process(fault_t* fault, uint8_t w_trig, uint8_t f_trig, fault_cfg_t* cfg, uint8_t exp_out, fault_t* exp_out_fault, fault_cfg_t* exp_out_cfg)
|
||||
{
|
||||
printf("W-Trig:%d F-trig:%d \n", w_trig, f_trig);
|
||||
printf("Severity:%d W-time:%d F-time:%d \n", fault->severity, fault->w_time, fault->f_time);
|
||||
printf("Delay:%d WtoF:%d \n", cfg->delay, cfg->wtof);
|
||||
|
||||
uint8_t out = fault_process(fault, w_trig, f_trig, cfg);
|
||||
|
||||
printf("Output:%d Expected:%d\n", out, exp_out);
|
||||
printf(" Output: Severity:%d W-time:%d F-time:%d \n", fault->severity, fault->w_time, fault->f_time);
|
||||
printf("Expected: Severity:%d W-time:%d F-time:%d \n", exp_out_fault->severity, exp_out_fault->w_time, exp_out_fault->f_time);
|
||||
printf("Delay:%d WtoF:%d \n", cfg->delay, cfg->wtof);
|
||||
|
||||
if((out==exp_out)&&(fault->severity==exp_out_fault->severity)&&(fault->w_time==exp_out_fault->w_time)&&(fault->f_time==exp_out_fault->f_time)&&(cfg->delay==exp_out_cfg->delay)&&(cfg->wtof==exp_out_cfg->wtof))
|
||||
{
|
||||
printf("PASS\n\n");
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("FAIL\n\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int ut_fault_process_test(void)
|
||||
{
|
||||
printf("******************************************************\n");
|
||||
printf("uint8_t fault_process(fault_t* fault, uint8_t w_trig, uint8_t f_trig, fault_cfg_t* cfg)\n");
|
||||
|
||||
int test_res;
|
||||
int pass = 1;
|
||||
|
||||
fault_t fault;
|
||||
uint8_t w_trig;
|
||||
uint8_t f_trig;
|
||||
fault_cfg_t cfg;
|
||||
|
||||
uint8_t exp_out;
|
||||
fault_t exp_out_fault;
|
||||
fault_cfg_t exp_out_cfg;
|
||||
|
||||
// NORMAL NO FAULT CONDITION *************************************************************************
|
||||
// No change test, start form OK
|
||||
fault.severity = FAULT_LVL_OK;
|
||||
fault.w_time = 0;
|
||||
fault.f_time = 0;
|
||||
w_trig = 0;
|
||||
f_trig = 0;
|
||||
cfg.delay = 0;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_OK;
|
||||
exp_out_fault.w_time = 0;
|
||||
exp_out_fault.f_time = 0;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// STARTING CONDITIONS *************************************************************************
|
||||
// Warning trigger test, start form OK
|
||||
fault.severity = FAULT_LVL_OK;
|
||||
fault.w_time = 0;
|
||||
fault.f_time = 0;
|
||||
w_trig = 1;
|
||||
f_trig = 0;
|
||||
cfg.delay = 0;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_WARNING;
|
||||
exp_out_fault.w_time = 0;
|
||||
exp_out_fault.f_time = 0;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Fault trigger test, start form OK
|
||||
fault.severity = FAULT_LVL_OK;
|
||||
fault.w_time = 0;
|
||||
fault.f_time = 0;
|
||||
w_trig = 0;
|
||||
f_trig = 1;
|
||||
cfg.delay = 0;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 1;
|
||||
exp_out_fault.severity = FAULT_LVL_FAULT;
|
||||
exp_out_fault.w_time = 0;
|
||||
exp_out_fault.f_time = 0;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Warning and Fault trigger test, start form OK
|
||||
fault.severity = FAULT_LVL_OK;
|
||||
fault.w_time = 0;
|
||||
fault.f_time = 0;
|
||||
w_trig = 1;
|
||||
f_trig = 1;
|
||||
cfg.delay = 0;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 1;
|
||||
exp_out_fault.severity = FAULT_LVL_FAULT;
|
||||
exp_out_fault.w_time = 0;
|
||||
exp_out_fault.f_time = 0;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Wrong start severity WARNING, with no triggers
|
||||
fault.severity = FAULT_LVL_WARNING;
|
||||
fault.w_time = 0;
|
||||
fault.f_time = 0;
|
||||
w_trig = 0;
|
||||
f_trig = 0;
|
||||
cfg.delay = 0;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_OK;
|
||||
exp_out_fault.w_time = 0;
|
||||
exp_out_fault.f_time = 0;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Wrong start severity FAULT, with no triggers
|
||||
fault.severity = FAULT_LVL_FAULT;
|
||||
fault.w_time = 0;
|
||||
fault.f_time = 0;
|
||||
w_trig = 0;
|
||||
f_trig = 0;
|
||||
cfg.delay = 0;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_OK;
|
||||
exp_out_fault.w_time = 0;
|
||||
exp_out_fault.f_time = 0;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Wrong start times, with no triggers
|
||||
fault.severity = FAULT_LVL_OK;
|
||||
fault.w_time = 78;
|
||||
fault.f_time = 56;
|
||||
w_trig = 0;
|
||||
f_trig = 0;
|
||||
cfg.delay = 0;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_OK;
|
||||
exp_out_fault.w_time = 0;
|
||||
exp_out_fault.f_time = 0;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
|
||||
// TIME INCREASE TESTS - SECOND ITERATION WITH TRIGGER ACTIVE *************************************************************************
|
||||
// Warning time increase with continuing warning condition
|
||||
fault.severity = FAULT_LVL_WARNING;
|
||||
fault.w_time = 45;
|
||||
fault.f_time = 0;
|
||||
w_trig = 1;
|
||||
f_trig = 0;
|
||||
cfg.delay = 0;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_WARNING;
|
||||
exp_out_fault.w_time = 46;
|
||||
exp_out_fault.f_time = 0;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Fault and warning time increase with continuing fault only condition
|
||||
fault.severity = FAULT_LVL_FAULT;
|
||||
fault.w_time = 78;
|
||||
fault.f_time = 23;
|
||||
w_trig = 0;
|
||||
f_trig = 1;
|
||||
cfg.delay = 0;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 1;
|
||||
exp_out_fault.severity = FAULT_LVL_FAULT;
|
||||
exp_out_fault.w_time = 79;
|
||||
exp_out_fault.f_time = 24;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Fault and warning time increase with continuing both triggers condition
|
||||
fault.severity = FAULT_LVL_FAULT;
|
||||
fault.w_time = 57;
|
||||
fault.f_time = 12;
|
||||
w_trig = 1;
|
||||
f_trig = 1;
|
||||
cfg.delay = 0;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 1;
|
||||
exp_out_fault.severity = FAULT_LVL_FAULT;
|
||||
exp_out_fault.w_time = 58;
|
||||
exp_out_fault.f_time = 13;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Time increase and transition to fault with both triggers
|
||||
fault.severity = FAULT_LVL_WARNING;
|
||||
fault.w_time = 0;
|
||||
fault.f_time = 0;
|
||||
w_trig = 1;
|
||||
f_trig = 1;
|
||||
cfg.delay = 0;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 1;
|
||||
exp_out_fault.severity = FAULT_LVL_FAULT;
|
||||
exp_out_fault.w_time = 1;
|
||||
exp_out_fault.f_time = 1;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Warning time increase and transition to fault with only fault trigger
|
||||
fault.severity = FAULT_LVL_WARNING;
|
||||
fault.w_time = 0;
|
||||
fault.f_time = 0;
|
||||
w_trig = 0;
|
||||
f_trig = 1;
|
||||
cfg.delay = 0;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 1;
|
||||
exp_out_fault.severity = FAULT_LVL_FAULT;
|
||||
exp_out_fault.w_time = 1;
|
||||
exp_out_fault.f_time = 1;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Time saturation
|
||||
fault.severity = FAULT_LVL_FAULT;
|
||||
fault.w_time = 65535;
|
||||
fault.f_time = 65535;
|
||||
w_trig = 1;
|
||||
f_trig = 1;
|
||||
cfg.delay = 0;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 1;
|
||||
exp_out_fault.severity = FAULT_LVL_FAULT;
|
||||
exp_out_fault.w_time = 65535;
|
||||
exp_out_fault.f_time = 65535;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Fallback to warning and time increase
|
||||
fault.severity = FAULT_LVL_FAULT;
|
||||
fault.w_time = 784;
|
||||
fault.f_time = 457;
|
||||
w_trig = 1;
|
||||
f_trig = 0;
|
||||
cfg.delay = 0;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_WARNING;
|
||||
exp_out_fault.w_time = 785;
|
||||
exp_out_fault.f_time = 0;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Fallback to OK and time reset from fault
|
||||
fault.severity = FAULT_LVL_FAULT;
|
||||
fault.w_time = 784;
|
||||
fault.f_time = 457;
|
||||
w_trig = 0;
|
||||
f_trig = 0;
|
||||
cfg.delay = 0;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_OK;
|
||||
exp_out_fault.w_time = 0;
|
||||
exp_out_fault.f_time = 0;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Fallback to OK and time reset from warning
|
||||
fault.severity = FAULT_LVL_WARNING;
|
||||
fault.w_time = 479;
|
||||
fault.f_time = 0;
|
||||
w_trig = 0;
|
||||
f_trig = 0;
|
||||
cfg.delay = 0;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_OK;
|
||||
exp_out_fault.w_time = 0;
|
||||
exp_out_fault.f_time = 0;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// FAULT DELAY TESTS *************************************************************************
|
||||
// Not transition to fault
|
||||
fault.severity = FAULT_LVL_OK;
|
||||
fault.w_time = 0;
|
||||
fault.f_time = 0;
|
||||
w_trig = 1;
|
||||
f_trig = 1;
|
||||
cfg.delay = 100;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_WARNING;
|
||||
exp_out_fault.w_time = 0;
|
||||
exp_out_fault.f_time = 0;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Not transition to fault second time
|
||||
fault.severity = FAULT_LVL_WARNING;
|
||||
fault.w_time = 0;
|
||||
fault.f_time = 0;
|
||||
w_trig = 1;
|
||||
f_trig = 1;
|
||||
cfg.delay = 100;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_WARNING;
|
||||
exp_out_fault.w_time = 1;
|
||||
exp_out_fault.f_time = 1;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Not transition to fault before limit
|
||||
fault.severity = FAULT_LVL_WARNING;
|
||||
fault.w_time = 128;
|
||||
fault.f_time = 98;
|
||||
w_trig = 1;
|
||||
f_trig = 1;
|
||||
cfg.delay = 100;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_WARNING;
|
||||
exp_out_fault.w_time = 129;
|
||||
exp_out_fault.f_time = 99;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Transition to fault at limit
|
||||
fault.severity = FAULT_LVL_WARNING;
|
||||
fault.w_time = 358;
|
||||
fault.f_time = 99;
|
||||
w_trig = 1;
|
||||
f_trig = 1;
|
||||
cfg.delay = 100;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 1;
|
||||
exp_out_fault.severity = FAULT_LVL_FAULT;
|
||||
exp_out_fault.w_time = 359;
|
||||
exp_out_fault.f_time = 100;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Transition to fault after limit
|
||||
fault.severity = FAULT_LVL_WARNING;
|
||||
fault.w_time = 786;
|
||||
fault.f_time = 100;
|
||||
w_trig = 1;
|
||||
f_trig = 1;
|
||||
cfg.delay = 100;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 1;
|
||||
exp_out_fault.severity = FAULT_LVL_FAULT;
|
||||
exp_out_fault.w_time = 787;
|
||||
exp_out_fault.f_time = 101;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Continued fault condition
|
||||
fault.severity = FAULT_LVL_FAULT;
|
||||
fault.w_time = 101;
|
||||
fault.f_time = 101;
|
||||
w_trig = 1;
|
||||
f_trig = 1;
|
||||
cfg.delay = 100;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 1;
|
||||
exp_out_fault.severity = FAULT_LVL_FAULT;
|
||||
exp_out_fault.w_time = 102;
|
||||
exp_out_fault.f_time = 102;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Fallback to warning
|
||||
fault.severity = FAULT_LVL_FAULT;
|
||||
fault.w_time = 101;
|
||||
fault.f_time = 101;
|
||||
w_trig = 1;
|
||||
f_trig = 0;
|
||||
cfg.delay = 100;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_WARNING;
|
||||
exp_out_fault.w_time = 102;
|
||||
exp_out_fault.f_time = 0;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Fallback to OK
|
||||
fault.severity = FAULT_LVL_FAULT;
|
||||
fault.w_time = 101;
|
||||
fault.f_time = 101;
|
||||
w_trig = 0;
|
||||
f_trig = 0;
|
||||
cfg.delay = 100;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_OK;
|
||||
exp_out_fault.w_time = 0;
|
||||
exp_out_fault.f_time = 0;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Allready was fault condition, with lower time - fixes to correct state
|
||||
fault.severity = FAULT_LVL_FAULT;
|
||||
fault.w_time = 45;
|
||||
fault.f_time = 45;
|
||||
w_trig = 1;
|
||||
f_trig = 1;
|
||||
cfg.delay = 100;
|
||||
cfg.wtof = 0;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_WARNING;
|
||||
exp_out_fault.w_time = 46;
|
||||
exp_out_fault.f_time = 46;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// WARNING TO FAULT TRANSITION TESTS *************************************************************************
|
||||
// Not transition to fault
|
||||
fault.severity = FAULT_LVL_OK;
|
||||
fault.w_time = 0;
|
||||
fault.f_time = 0;
|
||||
w_trig = 1;
|
||||
f_trig = 0;
|
||||
cfg.delay = 0;
|
||||
cfg.wtof = 200;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_WARNING;
|
||||
exp_out_fault.w_time = 0;
|
||||
exp_out_fault.f_time = 0;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Not transition to fault
|
||||
fault.severity = FAULT_LVL_WARNING;
|
||||
fault.w_time = 0;
|
||||
fault.f_time = 0;
|
||||
w_trig = 1;
|
||||
f_trig = 0;
|
||||
cfg.delay = 0;
|
||||
cfg.wtof = 200;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_WARNING;
|
||||
exp_out_fault.w_time = 1;
|
||||
exp_out_fault.f_time = 0;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Not transition to fault before limit
|
||||
fault.severity = FAULT_LVL_WARNING;
|
||||
fault.w_time = 198;
|
||||
fault.f_time = 0;
|
||||
w_trig = 1;
|
||||
f_trig = 0;
|
||||
cfg.delay = 0;
|
||||
cfg.wtof = 200;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_WARNING;
|
||||
exp_out_fault.w_time = 199;
|
||||
exp_out_fault.f_time = 0;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Not Transition to fault at limit
|
||||
fault.severity = FAULT_LVL_WARNING;
|
||||
fault.w_time = 199;
|
||||
fault.f_time = 0;
|
||||
w_trig = 1;
|
||||
f_trig = 0;
|
||||
cfg.delay = 0;
|
||||
cfg.wtof = 200;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_WARNING;
|
||||
exp_out_fault.w_time = 200;
|
||||
exp_out_fault.f_time = 0;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Transition to fault after limit
|
||||
fault.severity = FAULT_LVL_WARNING;
|
||||
fault.w_time = 200;
|
||||
fault.f_time = 0;
|
||||
w_trig = 1;
|
||||
f_trig = 0;
|
||||
cfg.delay = 0;
|
||||
cfg.wtof = 200;
|
||||
exp_out = 1;
|
||||
exp_out_fault.severity = FAULT_LVL_FAULT;
|
||||
exp_out_fault.w_time = 201;
|
||||
exp_out_fault.f_time = 1;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Continued fault
|
||||
fault.severity = FAULT_LVL_FAULT;
|
||||
fault.w_time = 201;
|
||||
fault.f_time = 1;
|
||||
w_trig = 1;
|
||||
f_trig = 0;
|
||||
cfg.delay = 0;
|
||||
cfg.wtof = 200;
|
||||
exp_out = 1;
|
||||
exp_out_fault.severity = FAULT_LVL_FAULT;
|
||||
exp_out_fault.w_time = 202;
|
||||
exp_out_fault.f_time = 2;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Fallback to ok
|
||||
fault.severity = FAULT_LVL_FAULT;
|
||||
fault.w_time = 247;
|
||||
fault.f_time = 0;
|
||||
w_trig = 0;
|
||||
f_trig = 0;
|
||||
cfg.delay = 0;
|
||||
cfg.wtof = 200;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_OK;
|
||||
exp_out_fault.w_time = 0;
|
||||
exp_out_fault.f_time = 0;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// WARNING TO FAULT TRANSITION WITH FAULT DELAY TESTS *************************************************************************
|
||||
// Not transition to fault
|
||||
fault.severity = FAULT_LVL_OK;
|
||||
fault.w_time = 0;
|
||||
fault.f_time = 0;
|
||||
w_trig = 1;
|
||||
f_trig = 0;
|
||||
cfg.delay = 50;
|
||||
cfg.wtof = 200;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_WARNING;
|
||||
exp_out_fault.w_time = 0;
|
||||
exp_out_fault.f_time = 0;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Not transition to fault
|
||||
fault.severity = FAULT_LVL_OK;
|
||||
fault.w_time = 0;
|
||||
fault.f_time = 0;
|
||||
w_trig = 1;
|
||||
f_trig = 1;
|
||||
cfg.delay = 50;
|
||||
cfg.wtof = 200;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_WARNING;
|
||||
exp_out_fault.w_time = 0;
|
||||
exp_out_fault.f_time = 0;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
fault.severity = FAULT_LVL_OK;
|
||||
fault.w_time = 0;
|
||||
fault.f_time = 0;
|
||||
w_trig = 0;
|
||||
f_trig = 1;
|
||||
cfg.delay = 50;
|
||||
cfg.wtof = 200;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_WARNING;
|
||||
exp_out_fault.w_time = 0;
|
||||
exp_out_fault.f_time = 0;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Transition to fault at delay
|
||||
fault.severity = FAULT_LVL_WARNING;
|
||||
fault.w_time = 49;
|
||||
fault.f_time = 49;
|
||||
w_trig = 1;
|
||||
f_trig = 1;
|
||||
cfg.delay = 50;
|
||||
cfg.wtof = 200;
|
||||
exp_out = 1;
|
||||
exp_out_fault.severity = FAULT_LVL_FAULT;
|
||||
exp_out_fault.w_time = 50;
|
||||
exp_out_fault.f_time = 50;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// No Transition to fault at wtof
|
||||
fault.severity = FAULT_LVL_WARNING;
|
||||
fault.w_time = 200;
|
||||
fault.f_time = 0;
|
||||
w_trig = 1;
|
||||
f_trig = 0;
|
||||
cfg.delay = 50;
|
||||
cfg.wtof = 200;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_WARNING;
|
||||
exp_out_fault.w_time = 201;
|
||||
exp_out_fault.f_time = 1;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// No Transition to fault before wtof + delay
|
||||
fault.severity = FAULT_LVL_WARNING;
|
||||
fault.w_time = 248;
|
||||
fault.f_time = 48;
|
||||
w_trig = 1;
|
||||
f_trig = 0;
|
||||
cfg.delay = 50;
|
||||
cfg.wtof = 200;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_WARNING;
|
||||
exp_out_fault.w_time = 249;
|
||||
exp_out_fault.f_time = 49;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Transition to fault before wtof + delay
|
||||
fault.severity = FAULT_LVL_WARNING;
|
||||
fault.w_time = 249;
|
||||
fault.f_time = 49;
|
||||
w_trig = 1;
|
||||
f_trig = 0;
|
||||
cfg.delay = 50;
|
||||
cfg.wtof = 200;
|
||||
exp_out = 1;
|
||||
exp_out_fault.severity = FAULT_LVL_FAULT;
|
||||
exp_out_fault.w_time = 250;
|
||||
exp_out_fault.f_time = 50;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Continued wtof fault condition
|
||||
fault.severity = FAULT_LVL_FAULT;
|
||||
fault.w_time = 250;
|
||||
fault.f_time = 50;
|
||||
w_trig = 1;
|
||||
f_trig = 0;
|
||||
cfg.delay = 50;
|
||||
cfg.wtof = 200;
|
||||
exp_out = 1;
|
||||
exp_out_fault.severity = FAULT_LVL_FAULT;
|
||||
exp_out_fault.w_time = 251;
|
||||
exp_out_fault.f_time = 51;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// Continued wtof fault condition, without warning trigger
|
||||
fault.severity = FAULT_LVL_FAULT;
|
||||
fault.w_time = 350;
|
||||
fault.f_time = 150;
|
||||
w_trig = 0;
|
||||
f_trig = 1;
|
||||
cfg.delay = 50;
|
||||
cfg.wtof = 200;
|
||||
exp_out = 1;
|
||||
exp_out_fault.severity = FAULT_LVL_FAULT;
|
||||
exp_out_fault.w_time = 351;
|
||||
exp_out_fault.f_time = 151;
|
||||
exp_out_cfg.delay = cfg.delay;
|
||||
exp_out_cfg.wtof = cfg.wtof;
|
||||
test_res = ut_fault_process(&fault, w_trig, f_trig, &cfg, exp_out, &exp_out_fault, &exp_out_cfg);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
return pass;
|
||||
}
|
||||
|
||||
static int ut_fault_is_active(fault_t* fault, uint8_t exp_out, fault_t* exp_out_fault)
|
||||
{
|
||||
printf("Severity:%d W-time:%d F-time:%d \n", fault->severity, fault->w_time, fault->f_time);
|
||||
|
||||
uint8_t out = fault_is_active(fault);
|
||||
|
||||
printf("Output:%d Expected:%d\n", out, exp_out);
|
||||
printf(" Output: Severity:%d W-time:%d F-time:%d \n", fault->severity, fault->w_time, fault->f_time);
|
||||
printf("Expected: Severity:%d W-time:%d F-time:%d \n", exp_out_fault->severity, exp_out_fault->w_time, exp_out_fault->f_time);
|
||||
|
||||
if((out==exp_out)&&(fault->severity==exp_out_fault->severity)&&(fault->w_time==exp_out_fault->w_time)&&(fault->f_time==exp_out_fault->f_time))
|
||||
{
|
||||
printf("PASS\n\n");
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("FAIL\n\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int ut_fault_is_active_test(void)
|
||||
{
|
||||
printf("******************************************************\n");
|
||||
printf("uint8_t fault_is_active(fault_t* fault)\n");
|
||||
|
||||
int test_res;
|
||||
int pass = 1;
|
||||
|
||||
fault_t fault;
|
||||
|
||||
uint8_t exp_out;
|
||||
fault_t exp_out_fault;
|
||||
|
||||
fault.severity = FAULT_LVL_OK;
|
||||
fault.w_time = 500;
|
||||
fault.f_time = 300;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = fault.severity;
|
||||
exp_out_fault.w_time = fault.w_time;
|
||||
exp_out_fault.f_time = fault.f_time;
|
||||
test_res = ut_fault_is_active(&fault, exp_out, &exp_out_fault);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
fault.severity = FAULT_LVL_WARNING;
|
||||
fault.w_time = 500;
|
||||
fault.f_time = 300;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = fault.severity;
|
||||
exp_out_fault.w_time = fault.w_time;
|
||||
exp_out_fault.f_time = fault.f_time;
|
||||
test_res = ut_fault_is_active(&fault, exp_out, &exp_out_fault);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
fault.severity = FAULT_LVL_FAULT;
|
||||
fault.w_time = 500;
|
||||
fault.f_time = 300;
|
||||
exp_out = 1;
|
||||
exp_out_fault.severity = fault.severity;
|
||||
exp_out_fault.w_time = fault.w_time;
|
||||
exp_out_fault.f_time = fault.f_time;
|
||||
test_res = ut_fault_is_active(&fault, exp_out, &exp_out_fault);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
return pass;
|
||||
}
|
||||
|
||||
static int ut_fault_is_warning(fault_t* fault, uint8_t exp_out, fault_t* exp_out_fault)
|
||||
{
|
||||
printf("Severity:%d W-time:%d F-time:%d \n", fault->severity, fault->w_time, fault->f_time);
|
||||
|
||||
uint8_t out = fault_is_warning(fault);
|
||||
|
||||
printf("Output:%d Expected:%d\n", out, exp_out);
|
||||
printf(" Output: Severity:%d W-time:%d F-time:%d \n", fault->severity, fault->w_time, fault->f_time);
|
||||
printf("Expected: Severity:%d W-time:%d F-time:%d \n", exp_out_fault->severity, exp_out_fault->w_time, exp_out_fault->f_time);
|
||||
|
||||
if((out==exp_out)&&(fault->severity==exp_out_fault->severity)&&(fault->w_time==exp_out_fault->w_time)&&(fault->f_time==exp_out_fault->f_time))
|
||||
{
|
||||
printf("PASS\n\n");
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("FAIL\n\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int ut_fault_is_warning_test(void)
|
||||
{
|
||||
printf("******************************************************\n");
|
||||
printf("uint8_t fault_is_warning(fault_t* fault)\n");
|
||||
|
||||
int test_res;
|
||||
int pass = 1;
|
||||
|
||||
fault_t fault;
|
||||
|
||||
uint8_t exp_out;
|
||||
fault_t exp_out_fault;
|
||||
|
||||
fault.severity = FAULT_LVL_OK;
|
||||
fault.w_time = 500;
|
||||
fault.f_time = 300;
|
||||
exp_out = 0;
|
||||
exp_out_fault.severity = fault.severity;
|
||||
exp_out_fault.w_time = fault.w_time;
|
||||
exp_out_fault.f_time = fault.f_time;
|
||||
test_res = ut_fault_is_warning(&fault, exp_out, &exp_out_fault);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
fault.severity = FAULT_LVL_WARNING;
|
||||
fault.w_time = 500;
|
||||
fault.f_time = 300;
|
||||
exp_out = 1;
|
||||
exp_out_fault.severity = fault.severity;
|
||||
exp_out_fault.w_time = fault.w_time;
|
||||
exp_out_fault.f_time = fault.f_time;
|
||||
test_res = ut_fault_is_warning(&fault, exp_out, &exp_out_fault);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
fault.severity = FAULT_LVL_FAULT;
|
||||
fault.w_time = 500;
|
||||
fault.f_time = 300;
|
||||
exp_out = 1;
|
||||
exp_out_fault.severity = fault.severity;
|
||||
exp_out_fault.w_time = fault.w_time;
|
||||
exp_out_fault.f_time = fault.f_time;
|
||||
test_res = ut_fault_is_warning(&fault, exp_out, &exp_out_fault);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
return pass;
|
||||
}
|
||||
|
||||
static int ut_fault_reset(fault_t* fault, fault_t* exp_out_fault)
|
||||
{
|
||||
printf("Severity:%d W-time:%d F-time:%d \n", fault->severity, fault->w_time, fault->f_time);
|
||||
|
||||
fault_reset(fault);
|
||||
|
||||
printf(" Output: Severity:%d W-time:%d F-time:%d \n", fault->severity, fault->w_time, fault->f_time);
|
||||
printf("Expected: Severity:%d W-time:%d F-time:%d \n", exp_out_fault->severity, exp_out_fault->w_time, exp_out_fault->f_time);
|
||||
|
||||
if((fault->severity==exp_out_fault->severity)&&(fault->w_time==exp_out_fault->w_time)&&(fault->f_time==exp_out_fault->f_time))
|
||||
{
|
||||
printf("PASS\n\n");
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("FAIL\n\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int ut_fault_reset_test(void)
|
||||
{
|
||||
printf("******************************************************\n");
|
||||
printf("void fault_reset(fault_t* fault)\n");
|
||||
|
||||
int test_res;
|
||||
int pass = 1;
|
||||
|
||||
fault_t fault;
|
||||
|
||||
fault_t exp_out_fault;
|
||||
|
||||
fault.severity = FAULT_LVL_OK;
|
||||
fault.w_time = 0;
|
||||
fault.f_time = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_OK;
|
||||
exp_out_fault.w_time = 0;
|
||||
exp_out_fault.f_time = 0;
|
||||
test_res = ut_fault_reset(&fault, &exp_out_fault);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
fault.severity = FAULT_LVL_WARNING;
|
||||
fault.w_time = 500;
|
||||
fault.f_time = 0;
|
||||
exp_out_fault.severity = FAULT_LVL_OK;
|
||||
exp_out_fault.w_time = 0;
|
||||
exp_out_fault.f_time = 0;
|
||||
test_res = ut_fault_reset(&fault, &exp_out_fault);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
fault.severity = FAULT_LVL_FAULT;
|
||||
fault.w_time = 1000;
|
||||
fault.f_time = 500;
|
||||
exp_out_fault.severity = FAULT_LVL_OK;
|
||||
exp_out_fault.w_time = 0;
|
||||
exp_out_fault.f_time = 0;
|
||||
test_res = ut_fault_reset(&fault, &exp_out_fault);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
return pass;
|
||||
}
|
||||
|
||||
12
firmware/tests/ut_utils/ut_fault.h
Normal file
12
firmware/tests/ut_utils/ut_fault.h
Normal file
@@ -0,0 +1,12 @@
|
||||
#ifndef UT_FAULTS_H_
|
||||
#define UT_FAULTS_H_
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int ut_fault_process_test(void);
|
||||
int ut_fault_is_active_test(void);
|
||||
int ut_fault_is_warning_test(void);
|
||||
int ut_fault_reset_test(void);
|
||||
|
||||
#endif /* UT_FAULTS_H_ */
|
||||
79
firmware/tests/ut_utils/ut_fuses.c
Normal file
79
firmware/tests/ut_utils/ut_fuses.c
Normal file
@@ -0,0 +1,79 @@
|
||||
#include "ut_fuses.h"
|
||||
|
||||
#include "..\..\src\hw\board\utils\fuses.h"
|
||||
|
||||
static int ut_fuse_reset(fuse_t* fuse, fuse_t* exp_out_fuse)
|
||||
{
|
||||
printf("State:%d Timer:%d Count:%d \n", fuse->state, fuse->timer, fuse->count);
|
||||
|
||||
fuse_reset(fuse);
|
||||
|
||||
printf(" Output: State:%d Timer:%d Count:%d \n", fuse->state, fuse->timer, fuse->count);
|
||||
printf("Expected: State:%d Timer:%d Count:%d \n", exp_out_fuse->state, exp_out_fuse->timer, exp_out_fuse->count);
|
||||
|
||||
if((fuse->state==exp_out_fuse->state)&&(fuse->timer==exp_out_fuse->timer)&&(fuse->count==exp_out_fuse->count))
|
||||
{
|
||||
printf("PASS\n\n");
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("FAIL\n\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
int ut_fuse_reset_test(void)
|
||||
{
|
||||
printf("******************************************************\n");
|
||||
printf("void fuse_reset(fuse_t* fuse)\n");
|
||||
|
||||
int test_res;
|
||||
int pass = 1;
|
||||
|
||||
fuse_t fuse;
|
||||
|
||||
fuse_t exp_out_fuse;
|
||||
|
||||
// No change test
|
||||
fuse.state = FUSE_OFF;
|
||||
fuse.timer = 0;
|
||||
fuse.count = 0;
|
||||
exp_out_fuse.state = FUSE_OFF;
|
||||
exp_out_fuse.timer = 0;
|
||||
exp_out_fuse.count = 0;
|
||||
test_res = ut_fuse_reset(&fuse, &exp_out_fuse);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// No change test
|
||||
fuse.state = FUSE_ACTIVE;
|
||||
fuse.timer = 1254;
|
||||
fuse.count = 124;
|
||||
exp_out_fuse.state = FUSE_OFF;
|
||||
exp_out_fuse.timer = 0;
|
||||
exp_out_fuse.count = 0;
|
||||
test_res = ut_fuse_reset(&fuse, &exp_out_fuse);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// No change test
|
||||
fuse.state = FUSE_COOLDOWN;
|
||||
fuse.timer = 4578;
|
||||
fuse.count = 14;
|
||||
exp_out_fuse.state = FUSE_OFF;
|
||||
exp_out_fuse.timer = 0;
|
||||
exp_out_fuse.count = 0;
|
||||
test_res = ut_fuse_reset(&fuse, &exp_out_fuse);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
// No change test
|
||||
fuse.state = FUSE_RETRY;
|
||||
fuse.timer = 0;
|
||||
fuse.count = 0;
|
||||
exp_out_fuse.state = FUSE_OFF;
|
||||
exp_out_fuse.timer = 0;
|
||||
exp_out_fuse.count = 0;
|
||||
test_res = ut_fuse_reset(&fuse, &exp_out_fuse);
|
||||
if(!test_res) pass = 0;
|
||||
|
||||
return pass;
|
||||
}
|
||||
9
firmware/tests/ut_utils/ut_fuses.h
Normal file
9
firmware/tests/ut_utils/ut_fuses.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifndef UT_FUSES_H_
|
||||
#define UT_FUSES_H_
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int ut_fuse_reset_test(void);
|
||||
|
||||
#endif /* UT_FUSES_H_ */
|
||||
1334
firmware/tests/ut_utils/ut_utils.c
Normal file
1334
firmware/tests/ut_utils/ut_utils.c
Normal file
File diff suppressed because it is too large
Load Diff
27
firmware/tests/ut_utils/ut_utils.h
Normal file
27
firmware/tests/ut_utils/ut_utils.h
Normal file
@@ -0,0 +1,27 @@
|
||||
#ifndef UT_UTILS_H_
|
||||
#define UT_UTILS_H_
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int ut_util_invert_8b_test(void);
|
||||
int ut_util_sat_add_8b_test(void);
|
||||
int ut_util_sat_subtract_8b_test(void);
|
||||
int ut_util_sat_util_sat_add_16b_test(void);
|
||||
int ut_util_sat_subtract_16b_test(void);
|
||||
|
||||
int ut_util_limit_u32b_to_u16b_test(void);
|
||||
int ut_util_limit_s32b_to_u16b_test(void);
|
||||
|
||||
int ut_util_convert_muldivoff_test(void);
|
||||
|
||||
int ut_util_sat_mul_kilo_test(void);
|
||||
int ut_util_sat_div_kilo_test(void);
|
||||
|
||||
int ut_util_sat_ratio_16b_test(void);
|
||||
int ut_util_percent_to_16b_test(void);
|
||||
|
||||
int ut_util_interpolate_1d_u16b_test(void);
|
||||
int ut_util_interpolate_2d_u16b_test(void);
|
||||
|
||||
#endif /* UT_UTILS_H_ */
|
||||
Reference in New Issue
Block a user