OSDN Git Service

Moved some unused codes.
[kozos-expbrd/kozos_expbrd.git] / misc / hwtest / 05 / os / rotenc.c
1 #include "defines.h"
2 #include "kozos.h"
3 #include "lib.h"
4 #include "consdrv.h"
5 #include "rotenc.h"
6 #include "re.h"
7 #include "leddrv.h"
8
9 /* \e$B%3%s%=!<%k$X$NJ8;zNs=PNO$r%3%s%=!<%k!&%I%i%$%P$K0MMj$9$k\e(B */
10 static void send_write(char *str)
11 {
12   char *p;
13   int len;
14   len = strlen(str);
15   p = kz_kmalloc(len + 2);
16   p[0] = '0';
17   p[1] = CONSDRV_CMD_WRITE;
18   memcpy(&p[2], str, len);
19   kz_send(MSGBOX_ID_CONSOUTPUT, len + 2, p);
20 }
21
22 static void send_led_write(int target, int state)
23 {
24   char *p;
25   p = kz_kmalloc(2);
26   p[0] = state ? LEDDRV_CMD_LED_ON : LEDDRV_CMD_LED_OFF;
27   p[1] = '0' + target;
28   kz_send(MSGBOX_ID_LEDDRIVE, 2, p);
29 }
30
31 static void send_led_toggle(int target)
32 {
33   char *p;
34   p = kz_kmalloc(2);
35   p[0] = LEDDRV_CMD_LED_TOGGLE;
36   p[1] = '0' + target;
37   kz_send(MSGBOX_ID_LEDDRIVE, 2, p);
38 }
39
40 int rotenc_main(int argc, char *argv[])
41 {
42   re_init();
43
44   uint16 prev = 0, curr = 0;
45   while (1) {
46     curr = re_read();
47     if (curr != prev) {
48       int dir = (int)(curr & 0xff) - (int)(prev & 0xff);
49       if (dir < 0) {
50         if (-32 < dir) {
51           send_write("<-\n");
52           send_led_toggle(2);
53           send_led_write(3, 0);
54         }
55       } else {
56         if (dir < 32) {
57           send_write("->\n");
58           send_led_write(2, 0);
59           send_led_toggle(3);
60         }
61       }
62       prev = curr;
63     }
64   }
65
66   return 0;
67 }