tecscde 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.rubocop.yml +125 -0
  4. data/.rubocop_todo.yml +188 -0
  5. data/CHANGELOG.md +3 -0
  6. data/Gemfile +6 -0
  7. data/LICENSE +46 -0
  8. data/LICENSE.ja +32 -0
  9. data/README.ja.md +200 -0
  10. data/README.md +35 -0
  11. data/Rakefile +27 -0
  12. data/bin/tecscde +64 -0
  13. data/glade/tecscde-cell-property.glade +205 -0
  14. data/glade/tecscde-celltype-property.glade +172 -0
  15. data/glade/tecscde-celltype.glade +414 -0
  16. data/glade/tecscde-export.glade +161 -0
  17. data/glade/test-cell-plugin.rb +51 -0
  18. data/glade/test-cell-property.rb +35 -0
  19. data/glade/test-export.rb +35 -0
  20. data/glade/test-palette.rb +26 -0
  21. data/lib/tcflow.rb +148 -0
  22. data/lib/tecscde.rb +65 -0
  23. data/lib/tecscde/NewCell.png +0 -0
  24. data/lib/tecscde/SelectArrow.png +0 -0
  25. data/lib/tecscde/attr_tree_view.rb +253 -0
  26. data/lib/tecscde/cell_plugin_dialog.glade +294 -0
  27. data/lib/tecscde/cell_plugin_dialog.rb +89 -0
  28. data/lib/tecscde/celltype_tree_view.rb +105 -0
  29. data/lib/tecscde/change_set_control.rb +35 -0
  30. data/lib/tecscde/change_set_control/change_set.rb +32 -0
  31. data/lib/tecscde/change_set_control/change_set_manager.rb +62 -0
  32. data/lib/tecscde/command.rb +35 -0
  33. data/lib/tecscde/control.rb +491 -0
  34. data/lib/tecscde/highlighted_objects.rb +180 -0
  35. data/lib/tecscde/logger.rb +74 -0
  36. data/lib/tecscde/main_view_and_model.rb +80 -0
  37. data/lib/tecscde/palette.glade +553 -0
  38. data/lib/tecscde/palette.rb +174 -0
  39. data/lib/tecscde/preferences.glade +117 -0
  40. data/lib/tecscde/preferences.rb +44 -0
  41. data/lib/tecscde/tecs_model.rb +1137 -0
  42. data/lib/tecscde/tecs_model/hbar.rb +68 -0
  43. data/lib/tecscde/tecs_model/tm_c_port.rb +122 -0
  44. data/lib/tecscde/tecs_model/tm_c_port_array.rb +98 -0
  45. data/lib/tecscde/tecs_model/tm_cell.rb +496 -0
  46. data/lib/tecscde/tecs_model/tm_e_port.rb +126 -0
  47. data/lib/tecscde/tecs_model/tm_e_port_array.rb +78 -0
  48. data/lib/tecscde/tecs_model/tm_join.rb +293 -0
  49. data/lib/tecscde/tecs_model/tm_join_bar.rb +146 -0
  50. data/lib/tecscde/tecs_model/tm_port.rb +238 -0
  51. data/lib/tecscde/tecs_model/tm_port_array.rb +246 -0
  52. data/lib/tecscde/tecs_model/tm_region.rb +107 -0
  53. data/lib/tecscde/tecs_model/tm_uneditable.rb +68 -0
  54. data/lib/tecscde/tecs_model/vbar.rb +68 -0
  55. data/lib/tecscde/templates/_cell_info.cde.erb +15 -0
  56. data/lib/tecscde/templates/_join_info.cde.erb +28 -0
  57. data/lib/tecscde/templates/main.cde.erb +49 -0
  58. data/lib/tecscde/tm_object.rb +91 -0
  59. data/lib/tecscde/version.rb +4 -0
  60. data/lib/tecscde/view.rb +58 -0
  61. data/lib/tecscde/view/cairo_matrix.rb +90 -0
  62. data/lib/tecscde/view/canvas.rb +59 -0
  63. data/lib/tecscde/view/constants.rb +114 -0
  64. data/lib/tecscde/view/main_view.rb +1245 -0
  65. data/lib/tecsflow.rb +475 -0
  66. data/lib/tecsflow/C_parser.tab.rb +2471 -0
  67. data/lib/tecsflow/C_parser.y.rb +1087 -0
  68. data/lib/tecsflow/classes.rb +421 -0
  69. data/lib/tecsgen.rb +581 -0
  70. data/lib/tecsgen/core/C_parser.tab.rb +2477 -0
  71. data/lib/tecsgen/core/C_parser.y +1032 -0
  72. data/lib/tecsgen/core/bnf-deb.tab.rb +5193 -0
  73. data/lib/tecsgen/core/bnf.tab.rb +5193 -0
  74. data/lib/tecsgen/core/bnf.y +2211 -0
  75. data/lib/tecsgen/core/componentobj.rb +7901 -0
  76. data/lib/tecsgen/core/ctypes.rb +226 -0
  77. data/lib/tecsgen/core/expression.rb +1031 -0
  78. data/lib/tecsgen/core/gen_xml.rb +374 -0
  79. data/lib/tecsgen/core/generate.rb +5206 -0
  80. data/lib/tecsgen/core/location.rb +116 -0
  81. data/lib/tecsgen/core/messages.rb +101 -0
  82. data/lib/tecsgen/core/optimize.rb +456 -0
  83. data/lib/tecsgen/core/plugin.rb +332 -0
  84. data/lib/tecsgen/core/pluginModule.rb +165 -0
  85. data/lib/tecsgen/core/syntaxobj.rb +1234 -0
  86. data/lib/tecsgen/core/tecs_lang.rb +306 -0
  87. data/lib/tecsgen/core/tecsgen.rb +453 -0
  88. data/lib/tecsgen/core/tecsinfo.rb +860 -0
  89. data/lib/tecsgen/core/tool_info.rb +258 -0
  90. data/lib/tecsgen/core/types.rb +1632 -0
  91. data/lib/tecsgen/core/unjoin_plugin.rb +218 -0
  92. data/lib/tecsgen/core/value.rb +650 -0
  93. data/lib/tecsgen/messages/messages_console_en_US.rb +1171 -0
  94. data/lib/tecsgen/messages/messages_console_ja_JP.rb +1171 -0
  95. data/lib/tecsgen/messages/messages_file_en_US.rb +334 -0
  96. data/lib/tecsgen/messages/messages_file_ja_JP.rb +163 -0
  97. data/lib/tecsgen/plugin/ATK1AlarmPlugin.rb +196 -0
  98. data/lib/tecsgen/plugin/ATK1DelayTaskPlugin.rb +106 -0
  99. data/lib/tecsgen/plugin/ATK1EventPlugin.rb +147 -0
  100. data/lib/tecsgen/plugin/ATK1ISRPlugin.rb +174 -0
  101. data/lib/tecsgen/plugin/ATK1KernelPlugin.rb +287 -0
  102. data/lib/tecsgen/plugin/ATK1ResourcePlugin.rb +124 -0
  103. data/lib/tecsgen/plugin/ATK1TaskPlugin.rb +220 -0
  104. data/lib/tecsgen/plugin/C2TECSBridgePlugin.rb +210 -0
  105. data/lib/tecsgen/plugin/CellPlugin.rb +61 -0
  106. data/lib/tecsgen/plugin/CelltypePlugin.rb +72 -0
  107. data/lib/tecsgen/plugin/CompositePlugin.rb +66 -0
  108. data/lib/tecsgen/plugin/DomainPlugin.rb +89 -0
  109. data/lib/tecsgen/plugin/HRP2AlarmHandlerPlugin.rb +76 -0
  110. data/lib/tecsgen/plugin/HRP2Cache.rb +1 -0
  111. data/lib/tecsgen/plugin/HRP2CyclicHandlerPlugin.rb +75 -0
  112. data/lib/tecsgen/plugin/HRP2DataqueuePlugin.rb +68 -0
  113. data/lib/tecsgen/plugin/HRP2EventflagPlugin.rb +68 -0
  114. data/lib/tecsgen/plugin/HRP2FixedSizeMemoryPoolPlugin.rb +68 -0
  115. data/lib/tecsgen/plugin/HRP2HandlerPlugin.rb +117 -0
  116. data/lib/tecsgen/plugin/HRP2KernelObjectPlugin.rb +372 -0
  117. data/lib/tecsgen/plugin/HRP2ObjectPlugin.rb +94 -0
  118. data/lib/tecsgen/plugin/HRP2Plugin.rb +140 -0
  119. data/lib/tecsgen/plugin/HRP2PostHook.rb +111 -0
  120. data/lib/tecsgen/plugin/HRP2PriorityDataqueuePlugin.rb +66 -0
  121. data/lib/tecsgen/plugin/HRP2RPCPlugin.rb +319 -0
  122. data/lib/tecsgen/plugin/HRP2SVCPlugin.rb +473 -0
  123. data/lib/tecsgen/plugin/HRP2SemaphorePlugin.rb +67 -0
  124. data/lib/tecsgen/plugin/HRP2TaskPlugin.rb +200 -0
  125. data/lib/tecsgen/plugin/HRPHandlerPlugin.rb +125 -0
  126. data/lib/tecsgen/plugin/HRPKernelObjectManager.rb +72 -0
  127. data/lib/tecsgen/plugin/HRPKernelObjectPlugin.rb +333 -0
  128. data/lib/tecsgen/plugin/HRPObjectPlugin.rb +93 -0
  129. data/lib/tecsgen/plugin/HRPPlugin.rb +356 -0
  130. data/lib/tecsgen/plugin/HRPRPCPlugin.rb +407 -0
  131. data/lib/tecsgen/plugin/HRPSVCPlugin.rb +859 -0
  132. data/lib/tecsgen/plugin/HRPTaskPlugin.rb +107 -0
  133. data/lib/tecsgen/plugin/Mruby2CBridgePlugin.rb +86 -0
  134. data/lib/tecsgen/plugin/MrubyBridgeCellPlugin.rb +264 -0
  135. data/lib/tecsgen/plugin/MrubyBridgeCelltypePlugin.rb +293 -0
  136. data/lib/tecsgen/plugin/MrubyBridgeCompositePlugin.rb +49 -0
  137. data/lib/tecsgen/plugin/MrubyBridgePlugin.rb +67 -0
  138. data/lib/tecsgen/plugin/MrubyBridgeSignaturePlugin.rb +1307 -0
  139. data/lib/tecsgen/plugin/MrubyInfoBridgePlugin.rb +14 -0
  140. data/lib/tecsgen/plugin/MrubyInfoBridgeSignaturePlugin.rb +994 -0
  141. data/lib/tecsgen/plugin/MultiPlugin.rb +57 -0
  142. data/lib/tecsgen/plugin/NotifierPlugin.rb +1217 -0
  143. data/lib/tecsgen/plugin/OpaqueMarshalerPlugin.rb +81 -0
  144. data/lib/tecsgen/plugin/OpaqueRPCPlugin.rb +323 -0
  145. data/lib/tecsgen/plugin/RPCPlugin.rb +266 -0
  146. data/lib/tecsgen/plugin/RepeatCellPlugin.rb +166 -0
  147. data/lib/tecsgen/plugin/RepeatJoinPlugin.rb +130 -0
  148. data/lib/tecsgen/plugin/SharedOpaqueRPCPlugin.rb +357 -0
  149. data/lib/tecsgen/plugin/SharedRPCPlugin.rb +329 -0
  150. data/lib/tecsgen/plugin/SignaturePlugin.rb +77 -0
  151. data/lib/tecsgen/plugin/TECS2CBridgePlugin.rb +178 -0
  152. data/lib/tecsgen/plugin/TECSInfoPlugin.rb +280 -0
  153. data/lib/tecsgen/plugin/ThroughPlugin.rb +333 -0
  154. data/lib/tecsgen/plugin/TracePlugin.rb +484 -0
  155. data/lib/tecsgen/plugin/lib/GenHRP2Marshaler.rb +761 -0
  156. data/lib/tecsgen/plugin/lib/GenOpaqueMarshaler.rb +1107 -0
  157. data/lib/tecsgen/plugin/lib/GenParamCopy.rb +365 -0
  158. data/lib/tecsgen/plugin/lib/GenTransparentMarshaler.rb +683 -0
  159. data/lib/tecsgen/plugin/lib/MrubyBridgeCelltypePluginModule.rb +283 -0
  160. data/lib/tecsgen/plugin/lib/MrubyBridgeSignaturePluginModule.rb +277 -0
  161. data/lib/tecsgen/version.rb +6 -0
  162. data/samples/FigureSamples/active/active.cde +104 -0
  163. data/samples/FigureSamples/active/active.cdl +20 -0
  164. data/samples/FigureSamples/active/active.pdf +0 -0
  165. data/samples/FigureSamples/active/active.png +0 -0
  166. data/samples/FigureSamples/active/gen/tmp_C_src.c +36 -0
  167. data/samples/FigureSamples/active/gen/tmp_cygwin_tecs.h +1908 -0
  168. data/samples/FigureSamples/active/gen/tmp_plugin_post_code.cdl +0 -0
  169. data/samples/FigureSamples/allocator/allocator-internal.png +0 -0
  170. data/samples/FigureSamples/allocator/allocator.cde +171 -0
  171. data/samples/FigureSamples/allocator/allocator.cdl +58 -0
  172. data/samples/FigureSamples/allocator/allocator.png +0 -0
  173. data/samples/FigureSamples/basic/Makefile +87 -0
  174. data/samples/FigureSamples/basic/SimpleSample-trace.cdl +50 -0
  175. data/samples/FigureSamples/basic/SimpleSample.cde +91 -0
  176. data/samples/FigureSamples/basic/SimpleSample.cdl +47 -0
  177. data/samples/FigureSamples/basic/basic.cde +93 -0
  178. data/samples/FigureSamples/basic/basic.cdl +46 -0
  179. data/samples/FigureSamples/basic/basic.png +0 -0
  180. data/samples/FigureSamples/callback/callback.cde +130 -0
  181. data/samples/FigureSamples/callback/callback.cdl +29 -0
  182. data/samples/FigureSamples/callback/callback.png +0 -0
  183. data/samples/FigureSamples/carray/carray.cde +144 -0
  184. data/samples/FigureSamples/carray/carray.cdl +38 -0
  185. data/samples/FigureSamples/carray/carray.png +0 -0
  186. data/samples/FigureSamples/cearray/cearray.cde +314 -0
  187. data/samples/FigureSamples/cearray/cearray.cdl +60 -0
  188. data/samples/FigureSamples/cearray/cearray.png +0 -0
  189. data/samples/FigureSamples/composite/composite-internal.png +0 -0
  190. data/samples/FigureSamples/composite/composite.cde +216 -0
  191. data/samples/FigureSamples/composite/composite.cdl +95 -0
  192. data/samples/FigureSamples/composite/composite.png +0 -0
  193. data/samples/FigureSamples/earray/earray.cde +142 -0
  194. data/samples/FigureSamples/earray/earray.cdl +38 -0
  195. data/samples/FigureSamples/earray/earray.png +0 -0
  196. data/samples/FigureSamples/join/Makefile +87 -0
  197. data/samples/FigureSamples/join/join.cde +132 -0
  198. data/samples/FigureSamples/join/join.cdl +40 -0
  199. data/samples/FigureSamples/join/join.png +0 -0
  200. data/samples/FigureSamples/relay/Makefile +99 -0
  201. data/samples/FigureSamples/relay/relay-internal.png +0 -0
  202. data/samples/FigureSamples/relay/relay.cde +284 -0
  203. data/samples/FigureSamples/relay/relay.cdl +52 -0
  204. data/samples/FigureSamples/relay/relay.png +0 -0
  205. data/samples/FigureSamples/rpc/Makefile +123 -0
  206. data/samples/FigureSamples/rpc/rpc-expand.png +0 -0
  207. data/samples/FigureSamples/rpc/rpc.cde +245 -0
  208. data/samples/FigureSamples/rpc/rpc.png +0 -0
  209. data/samples/FigureSamples/rpc/rpc_sample.cdl +53 -0
  210. data/samples/SimpleSample/Makefile +25 -0
  211. data/samples/SimpleSample/SimpleSample/Makefile +86 -0
  212. data/samples/SimpleSample/SimpleSample/Makefile-trace +91 -0
  213. data/samples/SimpleSample/SimpleSample/README.txt +106 -0
  214. data/samples/SimpleSample/SimpleSample/SimpleSample-trace.cdl +50 -0
  215. data/samples/SimpleSample/SimpleSample/SimpleSample.cdl +45 -0
  216. data/samples/SimpleSample/SimpleSample/src/tSample.c +77 -0
  217. data/samples/SimpleSample/SimpleSample/src/tSimple.c +48 -0
  218. data/samples/SimpleSample/SimpleSample/src/tecs-types.h +27 -0
  219. data/samples/SimpleSample/SimpleSampleOpaqueRPC/Makefile +51 -0
  220. data/samples/SimpleSample/SimpleSampleOpaqueRPC/Makefile-trace +91 -0
  221. data/samples/SimpleSample/SimpleSampleOpaqueRPC/README.txt +106 -0
  222. data/samples/SimpleSample/SimpleSampleOpaqueRPC/SimpleSample-trace.cdl +80 -0
  223. data/samples/SimpleSample/SimpleSampleOpaqueRPC/SimpleSample.cdl +77 -0
  224. data/samples/SimpleSample/SimpleSampleOpaqueRPC/rSample/Makefile +112 -0
  225. data/samples/SimpleSample/SimpleSampleOpaqueRPC/rSimple/Makefile +109 -0
  226. data/samples/SimpleSample/SimpleSampleOpaqueRPC/src/tSample.c +80 -0
  227. data/samples/SimpleSample/SimpleSampleOpaqueRPC/src/tSimple.c +47 -0
  228. data/samples/SimpleSample/SimpleSampleOpaqueRPC/src/tTaskMain.c +66 -0
  229. data/samples/SimpleSample/SimpleSampleOpaqueRPC/src/tecs-types.h +27 -0
  230. data/samples/SimpleSample/SimpleSampleTransparentRPC/Makefile +125 -0
  231. data/samples/SimpleSample/SimpleSampleTransparentRPC/Makefile-trace +130 -0
  232. data/samples/SimpleSample/SimpleSampleTransparentRPC/SimpleSample-trace.cdl +54 -0
  233. data/samples/SimpleSample/SimpleSampleTransparentRPC/SimpleSample.cdl +53 -0
  234. data/samples/SimpleSample/SimpleSampleTransparentRPC/src/tSample.c +80 -0
  235. data/samples/SimpleSample/SimpleSampleTransparentRPC/src/tSimple.c +54 -0
  236. data/tecscde.gemspec +41 -0
  237. metadata +353 -0
@@ -0,0 +1,196 @@
1
+ #
2
+ # TECS Generator Cell-type plugin
3
+ # for TOPPERS Embedded Component System
4
+ #
5
+ # Copyright (C) 2008-2014 by TOPPERS Project TECS-WG
6
+ #--
7
+ # 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
8
+ # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
9
+ # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
10
+ # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
11
+ # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
12
+ # スコード中に含まれていること.
13
+ # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
14
+ # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
15
+ # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
16
+ # の無保証規定を掲載すること.
17
+ # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
18
+ # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
19
+ # と.
20
+ # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
21
+ # 作権表示,この利用条件および下記の無保証規定を掲載すること.
22
+ # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
23
+ # 報告すること.
24
+ # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
25
+ # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
26
+ # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
27
+ # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
28
+ # 免責すること.
29
+ #
30
+ # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
31
+ # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
32
+ # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
33
+ # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
34
+ # の責任を負わない.
35
+ #
36
+ # $Id: ATK1AlarmPlugin.rb 2955 2018-05-07 10:23:26Z okuma-top $
37
+ #++
38
+
39
+ #== celltype プラグインの共通の親クラス
40
+ class ATK1AlarmPlugin < CelltypePlugin
41
+ # @celltype:: Celltype
42
+ # @option:: String :オプション文字列
43
+
44
+ # signature:: Celltype シグニチャ(インスタンス)
45
+ def initialize(celltype, option)
46
+ super
47
+ end
48
+
49
+ #=== CDL ファイルの生成
50
+ # typedef, signature, celltype, cell のコードを生成
51
+ # 重複して生成してはならない
52
+ # すでに生成されている場合は出力しないこと。
53
+ # もしくは同名の import により、重複を避けること。
54
+ # file:: FILE 生成するファイル
55
+ # def gen_cdl_file file
56
+ # end
57
+
58
+ def new_cell(cell)
59
+ end
60
+
61
+ #=== 受け口関数の本体(C言語)を生成する
62
+ # このメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
63
+ # このメソッドが定義済みの場合、(テンプレートではなく、変更する必要のない)セルタイプコードを生成する
64
+ # file:: FILE 出力先ファイル
65
+ # b_singleton:: bool true if singleton
66
+ # ct_name:: Symbol
67
+ # global_ct_name:: string
68
+ # sig_name:: string
69
+ # ep_name:: string
70
+ # func_name:: string
71
+ # func_global_name:: string
72
+ # func_type:: class derived from Type
73
+ # def gen_ep_func_body( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
74
+ # end
75
+
76
+ def gen_factory(file)
77
+ file2 = CFile.open("#{$gen}/ALARM_tecsgen.oil", "w")
78
+
79
+ # ALARM
80
+ @celltype.get_cell_list.each {|cell|
81
+
82
+ if cell.is_generate?
83
+
84
+ file2.print "\tALARM #{cell.get_name} {\n"
85
+
86
+ # COUNTER
87
+ join = cell.get_join_list.get_item(:counter)
88
+ if join
89
+ str = join.get_rhs.to_s.gsub(/^"(.*)"$/, '\1')
90
+ file2.print "\t\tCOUNTER = #{str};\n"
91
+ end
92
+
93
+ # ACTION
94
+ join = cell.get_join_list.get_item(:action)
95
+ if join
96
+ str = join.get_rhs.to_s.gsub(/^"(.*)"$/, '\1')
97
+ end
98
+
99
+ case str
100
+ when "SETEVENT"
101
+ file2.print "\t\tACTION = #{str} {\n"
102
+ join2 = cell.get_join_list.get_item(:task)
103
+ if join2
104
+ str = join2.get_rhs.to_s.gsub(/^"(.*)"$/, '\1')
105
+ file2.print "\t\t\tTASK = #{str};\n"
106
+ end
107
+ join2 = cell.get_join_list.get_item(:event)
108
+ if join2
109
+ str = join2.get_rhs.to_s.gsub(/^"(.*)"$/, '\1')
110
+ file2.print "\t\t\tEVENT = #{str};\n"
111
+ end
112
+ file2.print "\t\t};\n"
113
+ when "ACTIVATETASK"
114
+ file2.print "\t\tACTION = #{str} {\n"
115
+ join2 = cell.get_join_list.get_item(:task)
116
+ if join2
117
+ str = join2.get_rhs.to_s.gsub(/^"(.*)"$/, '\1')
118
+ file2.print "\t\t\tTASK = #{str};\n"
119
+ end
120
+ file2.print "\t\t};\n"
121
+ when "ALARMCALLBACK"
122
+ file2.print "\t\tACTION = #{str} {\n"
123
+ join2 = cell.get_join_list.get_item(:callbackName)
124
+ if join2
125
+ str = join2.get_rhs.to_s
126
+ file2.print "\t\t\tALARMCALLBACKNAME = #{str};\n"
127
+ end
128
+ file2.print "\t\t};\n"
129
+ else
130
+ end
131
+
132
+ # AUTOSTART
133
+ join = cell.get_join_list.get_item(:autoStart)
134
+ if join
135
+ str = join.get_rhs.to_s
136
+ end
137
+
138
+ if str == "TRUE"
139
+ file2.print "\t\tAUTOSTART = TRUE {\n"
140
+ join2 = cell.get_join_list.get_item(:alarmTime)
141
+ if join2
142
+ str = join2.get_rhs.to_s
143
+ file2.print "\t\t\tALARMTIME = #{str};\n"
144
+ end
145
+ join2 = cell.get_join_list.get_item(:cycleTime)
146
+ if join2
147
+ str = join2.get_rhs.to_s
148
+ file2.print "\t\t\tCYCLETIME = #{str};\n"
149
+ end
150
+ join2 = cell.get_join_list.get_item(:appMode)
151
+ delim = ""
152
+ if join2
153
+ join2.get_rhs.each {|mode|
154
+ str = mode.to_s.gsub(/^"(.*)"$/, '\1')
155
+ file2.print "\t\t\tAPPMODE = #{str};\n"
156
+ delim = ";"
157
+ }
158
+ end
159
+ file2.print "\t\t};\n"
160
+ else
161
+ file2.print "\t\tAUTOSTART = FALSE;\n"
162
+ end
163
+
164
+ file2.print "\t};\n"
165
+ file2.print "\n"
166
+
167
+ end
168
+ }
169
+
170
+ file2.close
171
+
172
+ # 追記するために AppFile を使う(文字コード変換されない)
173
+ file = AppFile.open("#{$gen}/tAlarm_tecsgen.#{$c_suffix}")
174
+ file.print "\n/* Generated by ATK1AlarmPlugin */\n"
175
+ @celltype.get_cell_list.each {|cell|
176
+ if cell.is_generate?
177
+ name_array = @celltype.get_name_array(cell)
178
+ join2 = cell.get_join_list.get_item(:callbackName)
179
+ if join2
180
+ str = join2.get_rhs.to_s.gsub(/^"(.*)"$/, '\1')
181
+ file.print <<EOT
182
+ ALARMCALLBACK( #{str} );
183
+ ALARMCALLBACK( #{str} )
184
+ {
185
+ CELLCB *p_cellcb = #{name_array[8]};
186
+ cBody_main();
187
+ }
188
+
189
+ EOT
190
+ end
191
+ end
192
+ }
193
+
194
+ file.close
195
+ end
196
+ end
@@ -0,0 +1,106 @@
1
+ #
2
+ # TECS Generator Cell-type plugin
3
+ # for TOPPERS Embedded Component System
4
+ #
5
+ # Copyright (C) 2008-2014 by TOPPERS Project TECS-WG
6
+ #--
7
+ # 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
8
+ # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
9
+ # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
10
+ # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
11
+ # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
12
+ # スコード中に含まれていること.
13
+ # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
14
+ # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
15
+ # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
16
+ # の無保証規定を掲載すること.
17
+ # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
18
+ # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
19
+ # と.
20
+ # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
21
+ # 作権表示,この利用条件および下記の無保証規定を掲載すること.
22
+ # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
23
+ # 報告すること.
24
+ # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
25
+ # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
26
+ # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
27
+ # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
28
+ # 免責すること.
29
+ #
30
+ # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
31
+ # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
32
+ # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
33
+ # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
34
+ # の責任を負わない.
35
+ #
36
+ # $Id: ATK1DelayTaskPlugin.rb 2955 2018-05-07 10:23:26Z okuma-top $
37
+ #++
38
+
39
+ #== celltype プラグインの共通の親クラス
40
+ class ATK1DelayTaskPlugin < CelltypePlugin
41
+ # @celltype:: Celltype
42
+ # @option:: String :オプション文字列
43
+
44
+ # signature:: Celltype シグニチャ(インスタンス)
45
+ def initialize(celltype, option)
46
+ super
47
+ end
48
+
49
+ #=== CDL ファイルの生成
50
+ # typedef, signature, celltype, cell のコードを生成
51
+ # 重複して生成してはならない
52
+ # すでに生成されている場合は出力しないこと。
53
+ # もしくは同名の import により、重複を避けること。
54
+ # file:: FILE 生成するファイル
55
+ # def gen_cdl_file file
56
+ # end
57
+
58
+ def new_cell(cell)
59
+ # join_list = cell.get_join_list
60
+ # a = join_list.get_item( :resource )
61
+ # if a == nil
62
+ # Generator.error( "resource: must be initialized")
63
+ # elsif ! a.get_rhs.instance_of? Array
64
+ # Generator.error( "resource: initializer must be in format of '{val1, val2 ...}'")
65
+ # end
66
+ end
67
+
68
+ #=== 受け口関数の本体(C言語)を生成する
69
+ # このメソッドが未定義の場合、ジェネレータは受け口関数のテンプレートを生成する
70
+ # このメソッドが定義済みの場合、(テンプレートではなく、変更する必要のない)セルタイプコードを生成する
71
+ # file:: FILE 出力先ファイル
72
+ # b_singleton:: bool true if singleton
73
+ # ct_name:: Symbol
74
+ # global_ct_name:: string
75
+ # sig_name:: string
76
+ # ep_name:: string
77
+ # func_name:: string
78
+ # func_global_name:: string
79
+ # func_type:: class derived from Type
80
+ # def gen_ep_func_body( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params )
81
+ # end
82
+
83
+ def gen_factory(file)
84
+ # 追記するために AppFile を使う(文字コード変換されない)
85
+ file2 = AppFile.open("#{$gen}/tDelayTaskBody_factory.#{$h_suffix}")
86
+ file2.print "\n/* Generated by ATK1DelayTaskPlugin */\n\n"
87
+ @celltype.get_cell_list.each {|cell|
88
+ if cell.is_generate?
89
+ name_array = @celltype.get_name_array(cell)
90
+
91
+ join = cell.get_join_list.get_item(:event)
92
+ if join
93
+ str = join.get_rhs.to_s
94
+ if str =~ /&(.*)/
95
+ str = $1
96
+ end
97
+
98
+ file2.print "DeclareEvent( #{str} );\n"
99
+ end
100
+
101
+ end
102
+ }
103
+
104
+ file2.close
105
+ end
106
+ end
@@ -0,0 +1,147 @@
1
+ #
2
+ # TECS Generator Cell-type plugin
3
+ # for TOPPERS Embedded Component System
4
+ #
5
+ # Copyright (C) 2008-2014 by TOPPERS Project TECS-WG
6
+ #--
7
+ # 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
8
+ # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
9
+ # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
10
+ # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
11
+ # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
12
+ # スコード中に含まれていること.
13
+ # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
14
+ # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
15
+ # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
16
+ # の無保証規定を掲載すること.
17
+ # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
18
+ # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
19
+ # と.
20
+ # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
21
+ # 作権表示,この利用条件および下記の無保証規定を掲載すること.
22
+ # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
23
+ # 報告すること.
24
+ # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
25
+ # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
26
+ # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
27
+ # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
28
+ # 免責すること.
29
+ #
30
+ # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
31
+ # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
32
+ # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
33
+ # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
34
+ # の責任を負わない.
35
+ #
36
+ # $Id
37
+ #++
38
+
39
+ #== ATK1 Event celltype プラグインクラス
40
+ class ATK1EventPlugin < CelltypePlugin
41
+ # @@instancies:: [] :セル実体群
42
+ @@instancies = []
43
+
44
+ #=== 初期化
45
+ # 全てのセルの実体を意味解析後に参照する必要があるために
46
+ # 初期化時に singleton の instancies に格納する
47
+ # signature:: Celltype シグニチャ(インスタンス)
48
+ def initialize(celltype, option)
49
+ super
50
+ @@instancies << self
51
+ end
52
+
53
+ #=== cellの生成
54
+ def new_cell(cell)
55
+ end
56
+
57
+ #=== 意味解析実行後のコード生成
58
+ def self.gen_post_code(file)
59
+ @@instancies.each {|inst|
60
+ inst.gen_oil_code file
61
+ }
62
+ end
63
+
64
+ #=== OILファイル出力
65
+ def gen_oil_code(file)
66
+ file2 = CFile.open("#{$gen}/EVENT_tecsgen.oil", "w")
67
+
68
+ whole_mask = 0
69
+
70
+ # EVENT
71
+ @celltype.get_cell_list.each {|cell|
72
+
73
+ # if cell.is_generate?
74
+ join = cell.get_join_list.get_item(:mask)
75
+
76
+ # AUTO type search and change to zero
77
+ if join
78
+ # mask_bit = join.get_rhs.to_s.eval_cnst( nil )
79
+ mask_bit = join.get_rhs.to_s.to_i
80
+ mask_str = join.get_rhs.to_s
81
+ if mask_str == "AUTO"
82
+ new_rhs = Expression.create_integer_constant(32, @locale)
83
+ join.change_rhs new_rhs
84
+ else
85
+ mask_pattern = 1 << mask_bit
86
+ whole_mask |= mask_pattern
87
+ end
88
+ else
89
+ new_rhs = Expression.create_integer_constant(32, @locale)
90
+ join = Join.new(:mask, nil, new_rhs)
91
+ cell.new_join(join)
92
+ end
93
+
94
+ # file2.print "\t /* working #{join.get_rhs.to_s} */\n"
95
+ # end
96
+
97
+ }
98
+
99
+ mask_count = 0
100
+ mask_place = 0
101
+
102
+ @celltype.get_cell_list.each {|cell|
103
+
104
+ # if cell.is_generate?
105
+ # bit place to mask pattern
106
+ file2.print "\tEVENT #{cell.get_name} {\n"
107
+ join = cell.get_join_list.get_item(:mask)
108
+ if join
109
+ mask_bit = join.get_rhs.to_s.to_i
110
+ if mask_bit == 32
111
+ while 1
112
+ p("mask_count, current_mask")
113
+ p mask_count
114
+ current_mask = (1 << mask_count)
115
+ p current_mask
116
+ if 0 == whole_mask & current_mask
117
+ new_rhs = Expression.create_integer_constant(current_mask, @locale)
118
+ join.change_rhs new_rhs
119
+ whole_mask = whole_mask | current_mask
120
+ mask_place = mask_count
121
+ break
122
+ end
123
+ if current_mask >= 0x8000
124
+ mask_place = 0
125
+ break
126
+ end
127
+ mask_count = mask_count + 1
128
+ end
129
+ else
130
+ mask_place = join.get_rhs.to_s.to_i
131
+ current_mask = 1 << mask_place
132
+ new_rhs = Expression.create_integer_constant(current_mask, @locale)
133
+ join.change_rhs new_rhs
134
+ end
135
+ file2.print "\t\tMASK = #{mask_place};\n"
136
+ end
137
+
138
+ file2.print "\t};\n"
139
+ file2.print "\n"
140
+
141
+ # end
142
+
143
+ }
144
+
145
+ file2.close
146
+ end
147
+ end