OSDN Git Service

Moved the junk codes to junk directory.
[kozos-expbrd/kozos_expbrd.git] / firm / junk / 02 / os / command.c
1 #include "defines.h"
2 #include "kozos.h"
3 #include "consdrv.h"
4 #include "timerdrv.h"
5 #include "leddrv.h"
6 #include "lib.h"
7
8 /* ¥³¥ó¥½¡¼¥ë¡¦¥É¥é¥¤¥Ð¤Î»ÈÍѳ«»Ï¤ò¥³¥ó¥½¡¼¥ë¡¦¥É¥é¥¤¥Ð¤Ë°ÍÍꤹ¤ë */
9 static void send_use(int index)
10 {
11   char *p;
12   p = kz_kmalloc(3);
13   p[0] = '0';
14   p[1] = CONSDRV_CMD_USE;
15   p[2] = '0' + index;
16   kz_send(MSGBOX_ID_CONSOUTPUT, 3, p);
17 }
18
19 /* ¥³¥ó¥½¡¼¥ë¤Ø¤Îʸ»úÎó½ÐÎϤò¥³¥ó¥½¡¼¥ë¡¦¥É¥é¥¤¥Ð¤Ë°ÍÍꤹ¤ë */
20 static void send_write(char *str)
21 {
22   char *p;
23   int len;
24   len = strlen(str);
25   p = kz_kmalloc(len + 2);
26   p[0] = '0';
27   p[1] = CONSDRV_CMD_WRITE;
28   memcpy(&p[2], str, len);
29   kz_send(MSGBOX_ID_CONSOUTPUT, len + 2, p);
30 }
31
32 /* ¥¿¥¤¥Þ¤Î¥«¥¦¥ó¥È³«»Ï¤ò¥¿¥¤¥Þ¡¦¥É¥é¥¤¥Ð¤Ë°ÍÍꤹ¤ë */
33 static void send_start(int msec)
34 {
35   struct timerreq *req;
36   req = kz_kmalloc(sizeof(*req));
37   req->id = MSGBOX_ID_CONSINPUT;
38   req->msec = msec;
39   kz_send(MSGBOX_ID_TIMDRIVE, TIMERDRV_CMD_START, (char *)req);
40 }
41
42 static void send_led_toggle(int target)
43 {
44   char *p;
45   p = kz_kmalloc(2);
46   p[0] = LEDDRV_CMD_LED_TOGGLE;
47   p[1] = '0' + target;
48   kz_send(MSGBOX_ID_LEDDRIVE, 2, p);
49 }
50
51 int command_main(int argc, char *argv[])
52 {
53   char *p;
54   int size;
55
56   send_use(SERIAL_DEFAULT_DEVICE);
57
58   while (1) {
59     send_write("command> "); /* ¥×¥í¥ó¥×¥Èɽ¼¨ */
60
61     /* ¥³¥ó¥½¡¼¥ë¤«¤é¤Î¼õ¿®Ê¸»úÎó¤ò¼õ¤±¼è¤ë */
62     kz_recv(MSGBOX_ID_CONSINPUT, &size, &p);
63     if (p == NULL) {
64       send_write("expired.\n");
65       continue;
66     }
67     p[size] = '\0';
68
69     if (!strncmp(p, "echo", 4)) { /* echo¥³¥Þ¥ó¥É */
70       send_write(p + 4); /* echo¤Ë³¤¯Ê¸»úÎó¤ò½ÐÎϤ¹¤ë */
71       send_write("\n");
72     } else if (!strncmp(p, "timer", 4)) { /* timer¥³¥Þ¥ó¥É */
73       send_write("timer start.\n");
74       send_start(1000);
75     } else if (!strncmp(p, "led1", 4)) {
76       send_led_toggle(0);
77     } else if (!strncmp(p, "led2", 4)) {
78       send_led_toggle(1);
79     } else if (!strncmp(p, "ledg", 4)) {
80       send_led_toggle(2);
81     } else if (!strncmp(p, "ledr", 4)) {
82       send_led_toggle(3);
83     } else {
84       send_write("unknown.\n");
85     }
86
87     kz_kmfree(p);
88   }
89
90   return 0;
91 }