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

553 lines
14 KiB
C

#include "ut_display.h"
#include "..\..\src\logic\display.h"
static const uint8_t BACKLIGHT_DIMM = DSP_BACKLIGHT_DIMM_PERCENT;
static const uint8_t BACKLIGHT_BRIGTH = DSP_BACKLIGHT_BRIGTH_PERCENT;
static int ut_dsp_init_ctrl(dsp_ctrl_t* ctrl, dsp_ctrl_t* exp_ctrl)
{
printf(" Input: lock:%d act-image:%x \n", ctrl->img_lock, ctrl->act_img);
dsp_init_ctrl(ctrl);
printf(" Output: lock:%d act-image:%x \n", ctrl->img_lock, ctrl->act_img);
printf("Expected: lock:%d act-image:%x \n", exp_ctrl->img_lock, exp_ctrl->act_img);
if((ctrl->img_lock==exp_ctrl->img_lock)&&(ctrl->act_img==exp_ctrl->act_img))
{
printf("PASS\n\n");
return 1;
}
else
{
printf("FAIL\n\n");
return 0;
}
}
int ut_dsp_init_ctrl_test(void)
{
printf("******************************************************\n");
printf("void dsp_init_ctrl(dsp_ctrl_t* ctrl) \n");
int test_res;
int pass = 1;
dsp_ctrl_t ctrl;
dsp_ctrl_t exp_ctrl;
ctrl.img_lock = 0;
ctrl.act_img = 0;
exp_ctrl.img_lock = 0;
exp_ctrl.act_img = 0x00;
test_res = ut_dsp_init_ctrl(&ctrl, &exp_ctrl);
if(!test_res) pass = 0;
ctrl.img_lock = 1;
ctrl.act_img = 0xAA;
exp_ctrl.img_lock = 0;
exp_ctrl.act_img = 0x00;
test_res = ut_dsp_init_ctrl(&ctrl, &exp_ctrl);
if(!test_res) pass = 0;
return pass;
}
static int ut_dsp_set_lock(dsp_ctrl_t* ctrl, dsp_ctrl_t* exp_ctrl)
{
printf(" Input: lock:%d act-image:%x \n", ctrl->img_lock, ctrl->act_img);
dsp_set_lock(ctrl);
printf(" Output: lock:%d act-image:%x \n", ctrl->img_lock, ctrl->act_img);
printf("Expected: lock:%d act-image:%x \n", exp_ctrl->img_lock, exp_ctrl->act_img);
if((ctrl->img_lock==exp_ctrl->img_lock)&&(ctrl->act_img==exp_ctrl->act_img))
{
printf("PASS\n\n");
return 1;
}
else
{
printf("FAIL\n\n");
return 0;
}
}
int ut_dsp_set_lock_test(void)
{
printf("******************************************************\n");
printf("void dsp_set_lock(dsp_ctrl_t* ctrl)\n");
int test_res;
int pass = 1;
dsp_ctrl_t ctrl;
dsp_ctrl_t exp_ctrl;
ctrl.img_lock = 0;
ctrl.act_img = 0x18;
exp_ctrl.img_lock = 1;
exp_ctrl.act_img = 0x18;
test_res = ut_dsp_set_lock(&ctrl, &exp_ctrl);
if(!test_res) pass = 0;
ctrl.img_lock = 1;
ctrl.act_img = 0x3F;
exp_ctrl.img_lock = 1;
exp_ctrl.act_img = 0x3F;
test_res = ut_dsp_set_lock(&ctrl, &exp_ctrl);
if(!test_res) pass = 0;
return pass;
}
static int ut_dsp_reset_lock(dsp_ctrl_t* ctrl, dsp_ctrl_t* exp_ctrl)
{
printf(" Input: lock:%d act-image:%x \n", ctrl->img_lock, ctrl->act_img);
dsp_reset_lock(ctrl);
printf(" Output: lock:%d act-image:%x \n", ctrl->img_lock, ctrl->act_img);
printf("Expected: lock:%d act-image:%x \n", exp_ctrl->img_lock, exp_ctrl->act_img);
if((ctrl->img_lock==exp_ctrl->img_lock)&&(ctrl->act_img==exp_ctrl->act_img))
{
printf("PASS\n\n");
return 1;
}
else
{
printf("FAIL\n\n");
return 0;
}
}
int ut_dsp_reset_lock_test(void)
{
printf("******************************************************\n");
printf("void dsp_reset_lock(dsp_ctrl_t* ctrl)\n");
int test_res;
int pass = 1;
dsp_ctrl_t ctrl;
dsp_ctrl_t exp_ctrl;
ctrl.img_lock = 0;
ctrl.act_img = 0x18;
exp_ctrl.img_lock = 0;
exp_ctrl.act_img = 0x18;
test_res = ut_dsp_reset_lock(&ctrl, &exp_ctrl);
if(!test_res) pass = 0;
ctrl.img_lock = 1;
ctrl.act_img = 0x18;
exp_ctrl.img_lock = 0;
exp_ctrl.act_img = 0x18;
test_res = ut_dsp_reset_lock(&ctrl, &exp_ctrl);
if(!test_res) pass = 0;
return pass;
}
static int ut_dsp_img_percent(uint8_t value, dsp_style_t style, dsp_ctrl_t* ctrl, uint8_t exp_out, dsp_ctrl_t* exp_ctrl)
{
printf(" Input: Percent:%d Style:%d lock:%d act-image:%x \n", value, style, ctrl->img_lock, ctrl->act_img);
uint8_t out = dsp_img_percent(value, style, ctrl);
printf(" Output: image:%x lock:%d act-image:%x \n", out, ctrl->img_lock, ctrl->act_img);
printf("Expected: image:%x lock:%d act-image:%x \n", exp_out, exp_ctrl->img_lock, exp_ctrl->act_img);
if((out==exp_out)&&(ctrl->img_lock==exp_ctrl->img_lock)&&(ctrl->act_img==exp_ctrl->act_img))
{
printf("PASS\n\n");
return 1;
}
else
{
printf("FAIL\n\n");
return 0;
}
}
int ut_dsp_img_percent_test(void)
{
printf("******************************************************\n");
printf("uint8_t dsp_img_percent(uint8_t value, dsp_style_t style, dsp_ctrl_t* ctrl)\n");
int test_res;
int pass = 1;
uint8_t value;
dsp_style_t style;
dsp_ctrl_t ctrl;
uint8_t exp_out;
dsp_ctrl_t exp_ctrl;
// Test lock
value = 50;
style = LED_DSP_BAR;
ctrl.img_lock = 1;
ctrl.act_img = 0x2A;
exp_out = 0x2A;
exp_ctrl.img_lock = ctrl.img_lock;
exp_ctrl.act_img = exp_out;
test_res = ut_dsp_img_percent(value, style, &ctrl, exp_out, &exp_ctrl);
if(!test_res) pass = 0;
// Test styles
value = 50;
style = LED_DSP_BAR;
ctrl.img_lock = 0;
ctrl.act_img = 0x00;
exp_out = 0x07;
exp_ctrl.img_lock = ctrl.img_lock;
exp_ctrl.act_img = exp_out;
test_res = ut_dsp_img_percent(value, style, &ctrl, exp_out, &exp_ctrl);
if(!test_res) pass = 0;
// Test styles
value = 50;
style = LED_DSP_DOT20;
ctrl.img_lock = 0;
ctrl.act_img = 0x00;
exp_out = 0x04;
exp_ctrl.img_lock = ctrl.img_lock;
exp_ctrl.act_img = exp_out;
test_res = ut_dsp_img_percent(value, style, &ctrl, exp_out, &exp_ctrl);
if(!test_res) pass = 0;
// Test styles
value = 50;
style = LED_DSP_DOT10;
ctrl.img_lock = 0;
ctrl.act_img = 0x00;
exp_out = 0x0C;
exp_ctrl.img_lock = ctrl.img_lock;
exp_ctrl.act_img = exp_out;
test_res = ut_dsp_img_percent(value, style, &ctrl, exp_out, &exp_ctrl);
if(!test_res) pass = 0;
// Test values
value = 0;
style = LED_DSP_DOT10;
ctrl.img_lock = 0;
ctrl.act_img = 0x00;
exp_out = 0x01;
exp_ctrl.img_lock = ctrl.img_lock;
exp_ctrl.act_img = exp_out;
test_res = ut_dsp_img_percent(value, style, &ctrl, exp_out, &exp_ctrl);
if(!test_res) pass = 0;
// Test values
value = 10;
style = LED_DSP_DOT10;
ctrl.img_lock = 0;
ctrl.act_img = 0x00;
exp_out = 0x03;
exp_ctrl.img_lock = ctrl.img_lock;
exp_ctrl.act_img = exp_out;
test_res = ut_dsp_img_percent(value, style, &ctrl, exp_out, &exp_ctrl);
if(!test_res) pass = 0;
// Test values
value = 20;
style = LED_DSP_DOT10;
ctrl.img_lock = 0;
ctrl.act_img = 0x00;
exp_out = 0x02;
exp_ctrl.img_lock = ctrl.img_lock;
exp_ctrl.act_img = exp_out;
test_res = ut_dsp_img_percent(value, style, &ctrl, exp_out, &exp_ctrl);
if(!test_res) pass = 0;
// Test values
value = 30;
style = LED_DSP_DOT10;
ctrl.img_lock = 0;
ctrl.act_img = 0x00;
exp_out = 0x06;
exp_ctrl.img_lock = ctrl.img_lock;
exp_ctrl.act_img = exp_out;
test_res = ut_dsp_img_percent(value, style, &ctrl, exp_out, &exp_ctrl);
if(!test_res) pass = 0;
// Test values
value = 40;
style = LED_DSP_DOT10;
ctrl.img_lock = 0;
ctrl.act_img = 0x00;
exp_out = 0x04;
exp_ctrl.img_lock = ctrl.img_lock;
exp_ctrl.act_img = exp_out;
test_res = ut_dsp_img_percent(value, style, &ctrl, exp_out, &exp_ctrl);
if(!test_res) pass = 0;
// Test values
value = 50;
style = LED_DSP_DOT10;
ctrl.img_lock = 0;
ctrl.act_img = 0x00;
exp_out = 0x0C;
exp_ctrl.img_lock = ctrl.img_lock;
exp_ctrl.act_img = exp_out;
test_res = ut_dsp_img_percent(value, style, &ctrl, exp_out, &exp_ctrl);
if(!test_res) pass = 0;
// Test values
value = 60;
style = LED_DSP_DOT10;
ctrl.img_lock = 0;
ctrl.act_img = 0x00;
exp_out = 0x08;
exp_ctrl.img_lock = ctrl.img_lock;
exp_ctrl.act_img = exp_out;
test_res = ut_dsp_img_percent(value, style, &ctrl, exp_out, &exp_ctrl);
if(!test_res) pass = 0;
// Test values
value = 80;
style = LED_DSP_DOT10;
ctrl.img_lock = 0;
ctrl.act_img = 0x00;
exp_out = 0x10;
exp_ctrl.img_lock = ctrl.img_lock;
exp_ctrl.act_img = exp_out;
test_res = ut_dsp_img_percent(value, style, &ctrl, exp_out, &exp_ctrl);
if(!test_res) pass = 0;
// Test values
value = 90;
style = LED_DSP_DOT10;
ctrl.img_lock = 0;
ctrl.act_img = 0x00;
exp_out = 0x30;
exp_ctrl.img_lock = ctrl.img_lock;
exp_ctrl.act_img = exp_out;
test_res = ut_dsp_img_percent(value, style, &ctrl, exp_out, &exp_ctrl);
if(!test_res) pass = 0;
// Test values
value = 110;
style = LED_DSP_DOT10;
ctrl.img_lock = 0;
ctrl.act_img = 0x00;
exp_out = 0x20;
exp_ctrl.img_lock = ctrl.img_lock;
exp_ctrl.act_img = exp_out;
test_res = ut_dsp_img_percent(value, style, &ctrl, exp_out, &exp_ctrl);
if(!test_res) pass = 0;
return pass;
}
static int ut_dsp_img_raw(uint8_t image, dsp_ctrl_t* ctrl, uint8_t exp_out, dsp_ctrl_t* exp_ctrl)
{
printf(" Input: Image:%x lock:%d act-image:%x \n", image, ctrl->img_lock, ctrl->act_img);
uint8_t out = dsp_img_raw(image, ctrl);
printf(" Output: image:%x lock:%d act-image:%x \n", out, ctrl->img_lock, ctrl->act_img);
printf("Expected: image:%x lock:%d act-image:%x \n", exp_out, exp_ctrl->img_lock, exp_ctrl->act_img);
if((out==exp_out)&&(ctrl->img_lock==exp_ctrl->img_lock)&&(ctrl->act_img==exp_ctrl->act_img))
{
printf("PASS\n\n");
return 1;
}
else
{
printf("FAIL\n\n");
return 0;
}
}
int ut_dsp_img_raw_test(void)
{
printf("******************************************************\n");
printf("uint8_t dsp_img_raw(int8_t image, dsp_ctrl_t* ctrl)\n");
int test_res;
int pass = 1;
uint8_t image;
dsp_ctrl_t ctrl;
uint8_t exp_out;
dsp_ctrl_t exp_ctrl;
// Test lock
image = 0x17;
ctrl.img_lock = 1;
ctrl.act_img = 0x2A;
exp_out = 0x2A;
exp_ctrl.img_lock = ctrl.img_lock;
exp_ctrl.act_img = exp_out;
test_res = ut_dsp_img_raw(image, &ctrl, exp_out, &exp_ctrl);
if(!test_res) pass = 0;
// Test normal
image = 0x17;
ctrl.img_lock = 0;
ctrl.act_img = 0x00;
exp_out = 0x17;
exp_ctrl.img_lock = ctrl.img_lock;
exp_ctrl.act_img = exp_out;
test_res = ut_dsp_img_raw(image, &ctrl, exp_out, &exp_ctrl);
if(!test_res) pass = 0;
// Test limit
image = 0xAA;
ctrl.img_lock = 0;
ctrl.act_img = 0x00;
exp_out = 0x2A;
exp_ctrl.img_lock = ctrl.img_lock;
exp_ctrl.act_img = exp_out;
test_res = ut_dsp_img_raw(image, &ctrl, exp_out, &exp_ctrl);
if(!test_res) pass = 0;
// Test limit
image = 0xCC;
ctrl.img_lock = 0;
ctrl.act_img = 0x00;
exp_out = 0x0C;
exp_ctrl.img_lock = ctrl.img_lock;
exp_ctrl.act_img = exp_out;
test_res = ut_dsp_img_raw(image, &ctrl, exp_out, &exp_ctrl);
if(!test_res) pass = 0;
return pass;
}
static int ut_dsp_get_act_img(dsp_ctrl_t* ctrl, uint8_t exp_out, dsp_ctrl_t* exp_ctrl)
{
printf(" Input: lock:%d act-image:%x \n", ctrl->img_lock, ctrl->act_img);
uint8_t out = dsp_get_act_img(ctrl);
printf(" Output: image:%x lock:%d act-image:%x \n", out, ctrl->img_lock, ctrl->act_img);
printf("Expected: image:%x lock:%d act-image:%x \n", exp_out, exp_ctrl->img_lock, exp_ctrl->act_img);
if((out==exp_out)&&(ctrl->img_lock==exp_ctrl->img_lock)&&(ctrl->act_img==exp_ctrl->act_img))
{
printf("PASS\n\n");
return 1;
}
else
{
printf("FAIL\n\n");
return 0;
}
}
int ut_dsp_get_act_img_test(void)
{
printf("******************************************************\n");
printf("uint8_t dsp_get_act_img(void)\n");
int test_res;
int pass = 1;
dsp_ctrl_t ctrl;
uint8_t exp_out;
dsp_ctrl_t exp_ctrl;
// Test
ctrl.img_lock = 0;
ctrl.act_img = 0x2A;
exp_out = 0x2A;
exp_ctrl.img_lock = ctrl.img_lock;
exp_ctrl.act_img = exp_out;
test_res = ut_dsp_get_act_img(&ctrl, exp_out, &exp_ctrl);
if(!test_res) pass = 0;
// Test
ctrl.img_lock = 1;
ctrl.act_img = 0x3F;
exp_out = 0x3F;
exp_ctrl.img_lock = ctrl.img_lock;
exp_ctrl.act_img = exp_out;
test_res = ut_dsp_get_act_img(&ctrl, exp_out, &exp_ctrl);
if(!test_res) pass = 0;
return pass;
}
static int ut_dsp_backlight(uint8_t dimm_act, dsp_ctrl_t* ctrl, uint8_t exp_out, dsp_ctrl_t* exp_ctrl)
{
printf(" Input: dimm-act:%d lock:%d act-image:%x \n", dimm_act, ctrl->img_lock, ctrl->act_img);
uint8_t out = dsp_backlight(dimm_act);
printf(" Output: percent:%x lock:%d act-image:%x \n", out, ctrl->img_lock, ctrl->act_img);
printf("Expected: percent:%x lock:%d act-image:%x \n", exp_out, exp_ctrl->img_lock, exp_ctrl->act_img);
if((out==exp_out)&&(ctrl->img_lock==exp_ctrl->img_lock)&&(ctrl->act_img==exp_ctrl->act_img))
{
printf("PASS\n\n");
return 1;
}
else
{
printf("FAIL\n\n");
return 0;
}
}
int ut_dsp_backlight_test(void)
{
printf("******************************************************\n");
printf("uint8_t dsp_backlight(uint8_t dimm_act)\n");
int test_res;
int pass = 1;
uint8_t dimm_act;
dsp_ctrl_t ctrl;
uint8_t exp_out;
dsp_ctrl_t exp_ctrl;
// Test
dimm_act = 0;
ctrl.img_lock = 0;
ctrl.act_img = 0x2A;
exp_out = DSP_BACKLIGHT_BRIGTH_PERCENT;
exp_ctrl.img_lock = ctrl.img_lock;
exp_ctrl.act_img = ctrl.act_img;
test_res = ut_dsp_backlight(dimm_act, &ctrl, exp_out, &exp_ctrl);
if(!test_res) pass = 0;
// Test
dimm_act = 1;
ctrl.img_lock = 0;
ctrl.act_img = 0x2A;
exp_out = DSP_BACKLIGHT_DIMM_PERCENT;
exp_ctrl.img_lock = ctrl.img_lock;
exp_ctrl.act_img = ctrl.act_img;
test_res = ut_dsp_backlight(dimm_act, &ctrl, exp_out, &exp_ctrl);
if(!test_res) pass = 0;
// Test lock ignore
dimm_act = 0;
ctrl.img_lock = 1;
ctrl.act_img = 0x2A;
exp_out = DSP_BACKLIGHT_BRIGTH_PERCENT;
exp_ctrl.img_lock = ctrl.img_lock;
exp_ctrl.act_img = ctrl.act_img;
test_res = ut_dsp_backlight(dimm_act, &ctrl, exp_out, &exp_ctrl);
if(!test_res) pass = 0;
// Test lock ignore
dimm_act = 1;
ctrl.img_lock = 1;
ctrl.act_img = 0x2A;
exp_out = DSP_BACKLIGHT_DIMM_PERCENT;
exp_ctrl.img_lock = ctrl.img_lock;
exp_ctrl.act_img = ctrl.act_img;
test_res = ut_dsp_backlight(dimm_act, &ctrl, exp_out, &exp_ctrl);
if(!test_res) pass = 0;
return pass;
}