xref: /OK3568_Linux_fs/external/rk_pcba_test/pcba_minui/screen_test.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun #include <stdio.h>
2*4882a593Smuzhiyun #include <stdlib.h>
3*4882a593Smuzhiyun #include <string.h>
4*4882a593Smuzhiyun #include <unistd.h>
5*4882a593Smuzhiyun #include "screen_test.h"
6*4882a593Smuzhiyun #include "test_case.h"
7*4882a593Smuzhiyun #include "common.h"
8*4882a593Smuzhiyun #include "language.h"
9*4882a593Smuzhiyun #include "minui/minui.h"
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun #include <linux/input.h>
12*4882a593Smuzhiyun #include "script.h"
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun /*  variable for test_config.cfg  */
15*4882a593Smuzhiyun int key_times;
16*4882a593Smuzhiyun int all_key_change;
17*4882a593Smuzhiyun unsigned int start_key;
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun unsigned int code_tmp = 0;
20*4882a593Smuzhiyun unsigned int picture_change_key;
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun unsigned char code_cnt = 0;
23*4882a593Smuzhiyun unsigned char screen_start = 0;
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun int w1, h1, lcd_y;
26*4882a593Smuzhiyun 
screen_change(uint8_t screen_cnt)27*4882a593Smuzhiyun void screen_change(uint8_t screen_cnt)
28*4882a593Smuzhiyun {
29*4882a593Smuzhiyun //    printf("////////// screen_chage : %d ///////////\n",screen_cnt);
30*4882a593Smuzhiyun 	switch (screen_cnt) {
31*4882a593Smuzhiyun 	case  0:
32*4882a593Smuzhiyun 		FillColor(255, 0, 0, 255, 0, 0, w1, h1);    /*red*/
33*4882a593Smuzhiyun 		break;
34*4882a593Smuzhiyun 	case  1:
35*4882a593Smuzhiyun 		tiles_count--;
36*4882a593Smuzhiyun 		FillColor(0, 255, 0, 255, 0, 0, w1, h1);    /*green*/
37*4882a593Smuzhiyun 		break;
38*4882a593Smuzhiyun 	case  2:
39*4882a593Smuzhiyun 		tiles_count--;
40*4882a593Smuzhiyun 		FillColor(0, 0, 255, 255, 0, 0, w1, h1);    /*blue*/
41*4882a593Smuzhiyun 		break;
42*4882a593Smuzhiyun 	case  3:
43*4882a593Smuzhiyun 		tiles_count--;
44*4882a593Smuzhiyun 		FillColor(0, 0, 0, 255, 0, 0, w1, h1);      /*black*/
45*4882a593Smuzhiyun 		break;
46*4882a593Smuzhiyun 	case  4:
47*4882a593Smuzhiyun 		tiles_count--;
48*4882a593Smuzhiyun 		FillColor(255, 255, 255, 255, 0, 0, w1, h1);/*white*/
49*4882a593Smuzhiyun 		break;
50*4882a593Smuzhiyun 	case  5:
51*4882a593Smuzhiyun 		tiles_count--;
52*4882a593Smuzhiyun 		ui_print_xy_rgba(0, lcd_y, 0, 255, 0, 255,
53*4882a593Smuzhiyun 			            "%s:[%s]\n", PCBA_LCD, PCBA_TESTED);
54*4882a593Smuzhiyun 		break;
55*4882a593Smuzhiyun 	default:
56*4882a593Smuzhiyun 		screen_start = 0;
57*4882a593Smuzhiyun 		ui_print_xy_rgba(0, lcd_y, 0, 255, 0, 255,
58*4882a593Smuzhiyun 			            "%s:[%s]\n", PCBA_LCD, PCBA_TESTED);
59*4882a593Smuzhiyun 		break;
60*4882a593Smuzhiyun 	}
61*4882a593Smuzhiyun 	/*printf("-----------%s--%s---screen_cnt=%d----------\n",
62*4882a593Smuzhiyun 		__FILE__,__FUNCTION__,screen_cnt);*/
63*4882a593Smuzhiyun }
64*4882a593Smuzhiyun 
get_key_code(char * key_char)65*4882a593Smuzhiyun unsigned int get_key_code(char *key_char)
66*4882a593Smuzhiyun {
67*4882a593Smuzhiyun 	if (!strcmp(key_char, "KEY_VOLUMEDOWN"))
68*4882a593Smuzhiyun 		return KEY_VOLUMEDOWN;
69*4882a593Smuzhiyun 	else if (!strcmp(key_char, "KEY_VOLUMEUP"))
70*4882a593Smuzhiyun 		return KEY_VOLUMEUP;
71*4882a593Smuzhiyun 	else if (!strcmp(key_char, "KEY_POWER"))
72*4882a593Smuzhiyun 		return KEY_POWER;
73*4882a593Smuzhiyun 	else if (!strcmp(key_char, "KEY_F1"))
74*4882a593Smuzhiyun 		return KEY_F1;
75*4882a593Smuzhiyun 	else if (!strcmp(key_char, "KEY_HOME"))
76*4882a593Smuzhiyun 		return KEY_HOME;
77*4882a593Smuzhiyun 	else if (!strcmp(key_char, "KEY_BACK"))
78*4882a593Smuzhiyun 		return KEY_BACK;
79*4882a593Smuzhiyun 	else if (!strcmp(key_char, "KEY_UP"))
80*4882a593Smuzhiyun 		return KEY_UP;
81*4882a593Smuzhiyun 	else if (!strcmp(key_char, "KEY_DOWN"))
82*4882a593Smuzhiyun 		return KEY_DOWN;
83*4882a593Smuzhiyun 	else if (!strcmp(key_char, "KEY_LEFT"))
84*4882a593Smuzhiyun 		return KEY_LEFT;
85*4882a593Smuzhiyun 	else if (!strcmp(key_char, "KEY_RIGHT"))
86*4882a593Smuzhiyun 		return KEY_RIGHT;
87*4882a593Smuzhiyun 	else if (!strcmp(key_char, "KEY_MENU"))
88*4882a593Smuzhiyun 		return KEY_MENU;
89*4882a593Smuzhiyun 	else if (!strcmp(key_char, "KEY_ENTER"))
90*4882a593Smuzhiyun 		return KEY_ENTER;
91*4882a593Smuzhiyun 	else if (!strcmp(key_char, "KEY_ALL"))
92*4882a593Smuzhiyun 		return 0;
93*4882a593Smuzhiyun 	else {
94*4882a593Smuzhiyun 		printf("un supported key:%s\n", key_char);
95*4882a593Smuzhiyun 		return 0;
96*4882a593Smuzhiyun 	}
97*4882a593Smuzhiyun }
98*4882a593Smuzhiyun 
99*4882a593Smuzhiyun /*  key detect
100*4882a593Smuzhiyun *   start the test and change the picture
101*4882a593Smuzhiyun */
screenTest_key_detect(unsigned int code)102*4882a593Smuzhiyun void screenTest_key_detect(unsigned int code)
103*4882a593Smuzhiyun {
104*4882a593Smuzhiyun 	if (!screen_start) {
105*4882a593Smuzhiyun 		if (code != code_tmp) {
106*4882a593Smuzhiyun 			code_tmp = code;
107*4882a593Smuzhiyun 			code_cnt = 0;
108*4882a593Smuzhiyun 		} else {
109*4882a593Smuzhiyun 			if ((!start_key) || (code == start_key)) {
110*4882a593Smuzhiyun 				if (++code_cnt >= (key_times-1)) {
111*4882a593Smuzhiyun 					picture_change_key = code;
112*4882a593Smuzhiyun 					screen_start = 1;
113*4882a593Smuzhiyun 					code_cnt = 0;
114*4882a593Smuzhiyun 					screen_change(code_cnt);
115*4882a593Smuzhiyun 				}
116*4882a593Smuzhiyun 			}
117*4882a593Smuzhiyun 		}
118*4882a593Smuzhiyun 	} else {
119*4882a593Smuzhiyun 		if ((code == picture_change_key) || all_key_change) {
120*4882a593Smuzhiyun 			code_cnt++;
121*4882a593Smuzhiyun 			screen_change(code_cnt);
122*4882a593Smuzhiyun 			if (code_cnt >= 5) {
123*4882a593Smuzhiyun 				code_cnt = 0;
124*4882a593Smuzhiyun 				screen_start = 0;
125*4882a593Smuzhiyun 				code_tmp = !code;
126*4882a593Smuzhiyun 			}
127*4882a593Smuzhiyun 		}
128*4882a593Smuzhiyun 	}
129*4882a593Smuzhiyun }
130*4882a593Smuzhiyun 
screen_test(void * argv)131*4882a593Smuzhiyun void *screen_test(void *argv)
132*4882a593Smuzhiyun {
133*4882a593Smuzhiyun 	struct testcase_info *tc_info = (struct testcase_info *)argv;
134*4882a593Smuzhiyun 	char key_name[16];
135*4882a593Smuzhiyun 
136*4882a593Smuzhiyun 	if (script_fetch("Lcd", "start_key", (int *)key_name, 4) != 0) {
137*4882a593Smuzhiyun 		printf("%s: key_times err : %s !!!\r\n",__func__, key_name);
138*4882a593Smuzhiyun 		strcpy(key_name, "KEY_ALL");
139*4882a593Smuzhiyun 	}
140*4882a593Smuzhiyun 	printf("=========== code_cnt is:   %d ==========\n", code_cnt);
141*4882a593Smuzhiyun 	start_key = get_key_code(key_name);
142*4882a593Smuzhiyun 
143*4882a593Smuzhiyun 	if (script_fetch("Lcd", "key_times", &key_times, 1) != 0) {
144*4882a593Smuzhiyun 		printf("%s: key_times err : %d !!!\r\n",__func__, key_times);
145*4882a593Smuzhiyun 		key_times = 3;
146*4882a593Smuzhiyun 	}
147*4882a593Smuzhiyun 	if (script_fetch("Lcd", "all_key_change", &all_key_change, 1) != 0) {
148*4882a593Smuzhiyun 		printf("%s: all_key_change err : %d !!!\r\n",__func__, all_key_change);
149*4882a593Smuzhiyun 		all_key_change = 0;
150*4882a593Smuzhiyun 	}
151*4882a593Smuzhiyun 
152*4882a593Smuzhiyun 	w1 =  gr_fb_width();
153*4882a593Smuzhiyun 	h1 =  gr_fb_height();
154*4882a593Smuzhiyun 
155*4882a593Smuzhiyun 	if (tc_info->y <= 0)
156*4882a593Smuzhiyun 		tc_info->y = get_cur_print_y();
157*4882a593Smuzhiyun 
158*4882a593Smuzhiyun 	ui_print_xy_rgba(0, tc_info->y, 255, 255, 0, 255, \
159*4882a593Smuzhiyun 	                "%s: pls press [%s] %d times to start test.\n", \
160*4882a593Smuzhiyun 	                PCBA_LCD, key_name, key_times);
161*4882a593Smuzhiyun 	lcd_y = tc_info->y;
162*4882a593Smuzhiyun 
163*4882a593Smuzhiyun 	int x =  gr_fb_width() >> 1;
164*4882a593Smuzhiyun 	int y = (gr_fb_height()*2)/3;
165*4882a593Smuzhiyun 	int w =  gr_fb_width() >> 1;
166*4882a593Smuzhiyun 	int h = gr_fb_height()/3;
167*4882a593Smuzhiyun 
168*4882a593Smuzhiyun 	FillColor(255, 0, 0, 255, x, y, w/3, h);
169*4882a593Smuzhiyun 	FillColor(0, 255, 0, 255, x+w/3, y, w/3, h);
170*4882a593Smuzhiyun 	FillColor(0, 0, 255, 255, x+(2*w)/3, y, w/3, h);
171*4882a593Smuzhiyun 	sleep(3);
172*4882a593Smuzhiyun 
173*4882a593Smuzhiyun 	tc_info->result = 0;
174*4882a593Smuzhiyun 	return argv;
175*4882a593Smuzhiyun }
176