Repo unification

This commit is contained in:
2024-03-12 21:22:26 +02:00
parent 7aa7edba33
commit 02cb3a9c70
152 changed files with 14575 additions and 2038 deletions

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

View 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_ */

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

View 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_ */

File diff suppressed because it is too large Load Diff

View 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_ */