858
|
1 #include <stdio.h>
|
|
2 #include <string.h>
|
|
3 #include "SceneGraphRoot.h"
|
|
4 #include "lindaapi.h"
|
|
5 #include "aquarium.h"
|
|
6
|
863
|
7 #define GET_SERIAL_ID 65535
|
|
8
|
859
|
9 linda_t aquarium::linda_addr = { "localhost", 10000 };
|
|
10 int aquarium::linda;
|
863
|
11 int aquarium::serial_id;
|
|
12
|
859
|
13 const char *usr_help_str = "Usage: ./aquarium -linda LINDA_SERVER_NAME\n";
|
858
|
14 void TMend(TaskManager *manager);
|
|
15
|
|
16 extern void task_initialize();
|
|
17 extern int init(TaskManager *manager, int argc, char *argv[]);
|
|
18 extern Application *
|
|
19 application() {
|
|
20 return new aquarium();
|
|
21 }
|
|
22
|
859
|
23 void init_network() {
|
|
24 aquarium::linda_connect();
|
|
25
|
863
|
26
|
859
|
27 }
|
|
28
|
858
|
29 MainLoopPtr
|
|
30 aquarium::init(Viewer *sgroot, int screen_w, int screen_h)
|
|
31 {
|
859
|
32 init_network();
|
858
|
33 return sgroot;
|
|
34 }
|
|
35
|
859
|
36 void
|
|
37 aquarium::linda_connect() {
|
|
38 init_linda(); // セレクタの初期化
|
|
39 linda = open_linda_java(linda_addr.hostname, linda_addr.port);
|
863
|
40 // serial_id の取得
|
|
41 int seq = psx_in(linda, GET_SERIAL_ID);
|
|
42 unsigned char *data = NULL;
|
|
43 do {
|
|
44 psx_sync_n();
|
|
45 data = psx_reply(seq);
|
|
46 } while (data == NULL);
|
|
47 serial_id = atoi((char *)data + LINDA_HEADER_SIZE);
|
|
48 printf("Get serial_id: %d\n", serial_id);
|
859
|
49 }
|
858
|
50
|
|
51 int
|
|
52 TMmain(TaskManager *manager, int argc, char *argv[])
|
|
53 {
|
|
54 task_initialize();
|
|
55 manager->set_TMend(TMend);
|
|
56
|
|
57 for (int i = 0; i < argc; i++) {
|
|
58 if (strcmp(argv[i],"-linda") == 0 && i + 1 <= argc) {
|
859
|
59 aquarium::linda_addr.hostname = argv[i+1];
|
|
60 } else if (strcmp(argv[i],"-port") == 0 && i + 1 <= argc) {
|
|
61 aquarium::linda_addr.port = atoi(argv[i+1]);
|
|
62 }
|
858
|
63 }
|
|
64 return init(manager, argc, argv);
|
|
65 }
|
|
66
|
|
67 void
|
|
68 TMend(TaskManager *manager)
|
|
69 {
|
|
70 printf("aquarium end\n");
|
|
71 }
|
|
72
|
|
73 /* end */
|