420 lines
10 KiB
C
420 lines
10 KiB
C
#include "ut_user_force.h"
|
|
#include "..\..\src\logic\user_force.h"
|
|
|
|
static int ut_user_force_btn(uint8_t prev_force, uint8_t up_act, uint8_t down_act, uint8_t delta, uint8_t exp_out)
|
|
{
|
|
uint8_t out = user_force_btn(prev_force, up_act, down_act, delta);
|
|
|
|
printf("Prev-Force:%d Up-act:%d Down-act:%d Delta:%d\n", prev_force, up_act, down_act, delta);
|
|
printf("Output:%d Expected:%d\n", out, exp_out);
|
|
|
|
if(out==exp_out)
|
|
{
|
|
printf("PASS\n\n");
|
|
return 1;
|
|
}
|
|
else
|
|
{
|
|
printf("FAIL\n\n");
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
int ut_user_force_btn_test(void)
|
|
{
|
|
printf("******************************************************\n");
|
|
printf("uint8_t user_force_btn(uint8_t prev_force, uint8_t up_act, uint8_t down_act, uint8_t delta)\n");
|
|
|
|
int test_res;
|
|
int pass = 1;
|
|
|
|
uint8_t prev_force;
|
|
uint8_t up_act;
|
|
uint8_t down_act;
|
|
uint8_t delta;
|
|
|
|
uint8_t exp_out;
|
|
|
|
// No change
|
|
prev_force = 0;
|
|
up_act = 0;
|
|
down_act = 0;
|
|
delta = 5;
|
|
exp_out = 0;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = USER_FORCE_MIN_PERCENT-1;
|
|
up_act = 0;
|
|
down_act = 0;
|
|
delta = 5;
|
|
exp_out = 0;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 50;
|
|
up_act = 0;
|
|
down_act = 0;
|
|
delta = 5;
|
|
exp_out = 50;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = USER_FORCE_MAX_PERCENT+1;
|
|
up_act = 0;
|
|
down_act = 0;
|
|
delta = 5;
|
|
exp_out = 100;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 100;
|
|
up_act = 0;
|
|
down_act = 0;
|
|
delta = 5;
|
|
exp_out = 100;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
// Start 0
|
|
prev_force = 0;
|
|
up_act = 1;
|
|
down_act = 0;
|
|
delta = 5;
|
|
exp_out = USER_FORCE_MIN_PERCENT;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 0;
|
|
up_act = 0;
|
|
down_act = 1;
|
|
delta = 5;
|
|
exp_out = 0;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 0;
|
|
up_act = 1;
|
|
down_act = 1;
|
|
delta = 5;
|
|
exp_out = 0;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 0;
|
|
up_act = 1;
|
|
down_act = 0;
|
|
delta = USER_FORCE_MIN_PERCENT+1;
|
|
exp_out = USER_FORCE_MIN_PERCENT+1;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
// Start 100
|
|
prev_force = 100;
|
|
up_act = 1;
|
|
down_act = 0;
|
|
delta = 5;
|
|
exp_out = 100;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 100;
|
|
up_act = 0;
|
|
down_act = 1;
|
|
delta = 5;
|
|
exp_out = USER_FORCE_MAX_PERCENT;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 100;
|
|
up_act = 1;
|
|
down_act = 1;
|
|
delta = 5;
|
|
exp_out = USER_FORCE_MAX_PERCENT;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 100;
|
|
up_act = 0;
|
|
down_act = 1;
|
|
delta = 100-USER_FORCE_MAX_PERCENT+1;
|
|
exp_out = USER_FORCE_MAX_PERCENT-1;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
// Start 50
|
|
prev_force = 50;
|
|
up_act = 1;
|
|
down_act = 0;
|
|
delta = 5;
|
|
exp_out = 55;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 50;
|
|
up_act = 0;
|
|
down_act = 1;
|
|
delta = 5;
|
|
exp_out = 45;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 50;
|
|
up_act = 1;
|
|
down_act = 1;
|
|
delta = 5;
|
|
exp_out = 45;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 50;
|
|
up_act = 1;
|
|
down_act = 0;
|
|
delta = 10;
|
|
exp_out = 60;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 50;
|
|
up_act = 0;
|
|
down_act = 1;
|
|
delta = 10;
|
|
exp_out = 40;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
// Start MIN_PERCENT+1
|
|
prev_force = USER_FORCE_MIN_PERCENT+1;
|
|
up_act = 1;
|
|
down_act = 0;
|
|
delta = 5;
|
|
exp_out = prev_force+delta;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = USER_FORCE_MIN_PERCENT+1;
|
|
up_act = 0;
|
|
down_act = 1;
|
|
delta = 5;
|
|
exp_out = 0;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = USER_FORCE_MIN_PERCENT+1;
|
|
up_act = 1;
|
|
down_act = 1;
|
|
delta = 5;
|
|
exp_out = 0;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
// Start MAX_PERCENT-1
|
|
prev_force = USER_FORCE_MAX_PERCENT-1;
|
|
up_act = 1;
|
|
down_act = 0;
|
|
delta = 5;
|
|
exp_out = 100;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = USER_FORCE_MAX_PERCENT-1;
|
|
up_act = 0;
|
|
down_act = 1;
|
|
delta = 5;
|
|
exp_out = prev_force-delta;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = USER_FORCE_MAX_PERCENT-1;
|
|
up_act = 1;
|
|
down_act = 1;
|
|
delta = 5;
|
|
exp_out = prev_force-delta;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
// Up down seq
|
|
prev_force = 0;
|
|
up_act = 1;
|
|
down_act = 0;
|
|
delta = 20;
|
|
exp_out = 20;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 20;
|
|
up_act = 1;
|
|
down_act = 0;
|
|
delta = 20;
|
|
exp_out = 40;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 40;
|
|
up_act = 1;
|
|
down_act = 0;
|
|
delta = 20;
|
|
exp_out = 60;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 60;
|
|
up_act = 1;
|
|
down_act = 0;
|
|
delta = 20;
|
|
exp_out = 80;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 80;
|
|
up_act = 1;
|
|
down_act = 0;
|
|
delta = 20;
|
|
exp_out = 100;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 100;
|
|
up_act = 1;
|
|
down_act = 0;
|
|
delta = 20;
|
|
exp_out = 100;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 100;
|
|
up_act = 0;
|
|
down_act = 1;
|
|
delta = 20;
|
|
exp_out = 80;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 80;
|
|
up_act = 0;
|
|
down_act = 1;
|
|
delta = 20;
|
|
exp_out = 60;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 60;
|
|
up_act = 0;
|
|
down_act = 1;
|
|
delta = 20;
|
|
exp_out = 40;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 40;
|
|
up_act = 0;
|
|
down_act = 1;
|
|
delta = 20;
|
|
exp_out = 20;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 20;
|
|
up_act = 0;
|
|
down_act = 1;
|
|
delta = 20;
|
|
exp_out = 0;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 0;
|
|
up_act = 0;
|
|
down_act = 1;
|
|
delta = 20;
|
|
exp_out = 0;
|
|
test_res = ut_user_force_btn(prev_force, up_act, down_act, delta, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
return pass;
|
|
}
|
|
|
|
static int ut_user_force_pot(uint8_t prev_force, uint8_t pot, uint8_t hyst, uint8_t exp_out)
|
|
{
|
|
uint8_t out = user_force_pot(prev_force, pot, hyst);
|
|
|
|
printf("Prev-Force:%d Pot-percent:%d Hysteresis:%d \n", prev_force, pot, hyst);
|
|
printf("Output:%d Expected:%d\n", out, exp_out);
|
|
|
|
if(out==exp_out)
|
|
{
|
|
printf("PASS\n\n");
|
|
return 1;
|
|
}
|
|
else
|
|
{
|
|
printf("FAIL\n\n");
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
int ut_user_force_pot_test(void)
|
|
{
|
|
printf("******************************************************\n");
|
|
printf("uint8_t user_force_pot(uint8_t prev_force, uint8_t pot, uint8_t hyst)\n");
|
|
|
|
int test_res;
|
|
int pass = 1;
|
|
|
|
uint8_t prev_force;
|
|
uint8_t pot;
|
|
uint8_t hyst;
|
|
|
|
uint8_t exp_out;
|
|
|
|
prev_force = 50;
|
|
pot = 0;
|
|
hyst = 10;
|
|
exp_out = 0;
|
|
test_res = ut_user_force_pot(prev_force, pot, hyst, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 50;
|
|
pot = USER_FORCE_MIN_PERCENT-1;
|
|
hyst = 10;
|
|
exp_out = 0;
|
|
test_res = ut_user_force_pot(prev_force, pot, hyst, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 50;
|
|
pot = USER_FORCE_MIN_PERCENT;
|
|
hyst = 10;
|
|
exp_out = USER_FORCE_MIN_PERCENT;
|
|
test_res = ut_user_force_pot(prev_force, pot, hyst, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 50;
|
|
pot = 50;
|
|
hyst = 10;
|
|
exp_out = 50;
|
|
test_res = ut_user_force_pot(prev_force, pot, hyst, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 50;
|
|
pot = USER_FORCE_MAX_PERCENT;
|
|
hyst = 10;
|
|
exp_out = USER_FORCE_MAX_PERCENT;
|
|
test_res = ut_user_force_pot(prev_force, pot, hyst, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 50;
|
|
pot = USER_FORCE_MAX_PERCENT+1;
|
|
hyst = 10;
|
|
exp_out = 100;
|
|
test_res = ut_user_force_pot(prev_force, pot, hyst, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
prev_force = 50;
|
|
pot = 100;
|
|
hyst = 10;
|
|
exp_out = 100;
|
|
test_res = ut_user_force_pot(prev_force, pot, hyst, exp_out);
|
|
if(!test_res) pass = 0;
|
|
|
|
return pass;
|
|
}
|