OSDN Git Service

029d3235a940d47bc7c27c12210d5f54aa99bb39
[nxt-jsp/etrobo-atk.git] / nxtOSEK / samples_c++ / cpp / New / sample.cpp
1 /* sample.cpp for TOPPERS/ATK(OSEK) */ \r
2 \r
3 // ECRobot++ API\r
4 #include "Lcd.h"\r
5 #include "Clock.h"\r
6 using namespace ecrobot;\r
7 \r
8 extern "C"\r
9 {\r
10 #include <string.h>\r
11 \r
12 #include "kernel.h"\r
13 #include "kernel_id.h"\r
14 #include "ecrobot_interface.h"\r
15 \r
16 Lcd lcd;\r
17 \r
18 // test classes\r
19 class Hoge\r
20 {\r
21 private:\r
22         U8 buf[256]; // certain size of memory to be heaped\r
23 public:\r
24         Hoge() { lcd.putf("sn", "new Hoge"); }\r
25 \r
26         virtual ~Hoge(){ lcd.putf("ns", "delete Hoge"); }\r
27 \r
28         void func(void) { lcd.putf("s", "func "); }\r
29 };\r
30 \r
31 class Hoge1: public Hoge\r
32 {\r
33 public:\r
34         Hoge1() { lcd.putf("sn", "new Hoge1"); }\r
35         \r
36         ~Hoge1() { lcd.putf("ns", "delete Hoge1");}\r
37 };\r
38 \r
39 // nxtOSEK hook to be invoked from an ISR in category 2\r
40 void user_1ms_isr_type2(void)\r
41 {\r
42         SleeperMonitor(); // needed for I2C device and Clock classes\r
43 }\r
44 \r
45 TASK(TaskMain)\r
46 {\r
47         Clock clock;\r
48 \r
49         U32 cnt = 0;\r
50         while(1)\r
51         {\r
52                 lcd.clear();\r
53                 lcd.putf("dn", cnt,0);\r
54                 if ((cnt++ << 31) == 0)\r
55                 {\r
56                         // single new/delete\r
57                         Hoge1* hoge1 = new Hoge1;\r
58 \r
59                         hoge1->func();\r
60 \r
61                         delete hoge1;\r
62                 }\r
63                 else\r
64                 {\r
65                         // array new/delete\r
66                         Hoge* hoges = new Hoge[3];\r
67 \r
68                         hoges[0].func();\r
69                         hoges[1].func();\r
70                         hoges[2].func();\r
71 \r
72                         delete [] hoges;\r
73                 }\r
74                 lcd.disp();\r
75                 clock.wait(2000);\r
76         }\r
77 }\r
78 }\r