OSDN Git Service

Update ecrobot to nxtOSEK_v212.zip
[nxt-jsp/etrobo-atk.git] / nxtOSEK / samples_c++ / cpptest / cppTest.cc
1 //\r
2 // cppTest.cc\r
3 //\r
4 // Test of C++ and LEJOS-OSEK\r
5 //\r
6 // Written 9-jan-2008 by rwk\r
7 //\r
8 // Copyright 2007, 2008 by Takashi Chikamasa and Robert W. Kramer\r
9 //\r
10 \r
11 #include <CompassSensor.h>\r
12 #include <SonarSensor.h>\r
13 \r
14 //\r
15 // To properly interface with LEJOS-OSEK, we need to use C linkage between our\r
16 // code and LEJOS-OSEK\r
17 //\r
18 \r
19 extern "C" {\r
20 \r
21 #include "ecrobot_interface.h"\r
22 \r
23   CompassSensor comp(NXT_PORT_S2);\r
24   SonarSensor sonar(NXT_PORT_S1);\r
25 \r
26   //\r
27   // Main task (thread) declarations\r
28   //\r
29   // You need one DeclareTask( ) per task/thread\r
30   //\r
31 \r
32   DeclareTask(Task1);\r
33 \r
34   //\r
35   // OSEK callback hooks. Often unused, but must exist for proper linkage\r
36   //\r
37 \r
38   void StartupHook(void){\r
39     \r
40     comp.activate();\r
41     sonar.activate();\r
42   }\r
43 \r
44   void ShutdownHook(StatusType ercd){\r
45 \r
46     comp.passivate();\r
47     sonar.passivate();\r
48   }\r
49 \r
50   //\r
51   // User tasks go here.\r
52   //\r
53 \r
54   TASK(Task1) {\r
55 \r
56     display_clear(0);\r
57     \r
58     display_goto_xy(0,1);\r
59     display_int(comp.getHeading(),0);\r
60     \r
61     display_goto_xy(0,3);\r
62     display_int(sonar.getDistance(),0);\r
63 \r
64     display_update();\r
65 \r
66     sleep(1000);\r
67 \r
68     //\r
69     // your task should end like this unless it's a one-shot task\r
70     //\r
71 \r
72     TaskType t;\r
73     GetTaskID(&t);\r
74     ChainTask(t);\r
75   }\r
76 \r
77 };\r