OSDN Git Service

Step 10 added.
[kozos-expbrd/kozos_expbrd.git] / firm / junk / 09 / os / task / task_userinput.c
1 #include "defines.h"
2 #include "kozos.h"
3 #include "driver_timer.h"
4 #include "driver_led.h"
5 #include "driver_lcd.h"
6 #include "lib.h"
7 #include "sw.h"
8 #include "re.h"
9
10 int task_userinput(int argc, char *argv[])
11 {
12   int nx = 40, ny = 12;
13   re_init();
14   sw_init();
15
16   lcddrv_clear();
17   lcddrv_draw_logo(  0, 0, 2);
18   lcddrv_draw_box(0, 0, 121, 31, 1);
19   lcddrv_draw_text(40, 4, "KOZOS EXPBRD #00");
20
21   lcddrv_draw_logo(nx, ny, 0);
22
23   uint16 prev = 0, curr = 0;
24   while (1) {
25     curr = re_read();
26     if (curr != prev) {
27       int dir = (int)(curr & 0xff) - (int)(prev & 0xff);
28       if (dir < 0) {
29         if (-32 < dir) {
30           leddrv_write(1, 0);
31           leddrv_toggle(0);
32         }
33         if (40 < nx) {
34           nx--;
35         }
36       } else {
37         if (dir < 32) {
38           leddrv_write(0, 0);
39           leddrv_toggle(1);
40         }
41         if (nx < 100) {
42           nx++;
43         }
44       }
45       prev = curr;
46
47       lcddrv_draw_box(nx + 20, ny, nx + 20, ny + 16, 0);
48       lcddrv_draw_logo(nx, ny, 0);
49     }
50
51     timerdrv_start(5);
52     timerdrv_wait();
53     leddrv_toggle(3);
54   }
55
56   return 0;
57 }