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,68 @@
1
+ #
2
+ # TECS Generator
3
+ # Generator for TOPPERS Embedded Component System
4
+ #
5
+ # Copyright (C) 2008-2017 by TOPPERS Project
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: HRP2DataqueuePlugin.rb 2952 2018-05-07 10:19:07Z okuma-top $
37
+ #++
38
+
39
+ # require "HRP2KernelObjectPlugin"
40
+ require_tecsgen_lib "HRP2KernelObjectPlugin.rb"
41
+
42
+
43
+ class HRP2DataqueuePlugin < HRP2KernelObjectPlugin
44
+ @@ep = [:eSendDataqueue, :eReceiveDataqueue, :eManageDataqueue, :eReferDataqueue]
45
+ #=== HRP2DataqueuePlugin#print_cfg_cre
46
+ # CRE_DTQの出力
47
+ # file:: FILE: 出力先ファイル
48
+ # val :: string: カーネルオブジェクトの属性の解析結果
49
+ # tab :: string: インデント用のtab
50
+ def print_cfg_cre(file, cell, val, tab)
51
+ file.print tab
52
+ file.puts "CRE_DTQ(#{val[:id]}, {#{val[:attribute]}, #{val[:count]}, #{val[:dtqmb]}});"
53
+ end
54
+
55
+ #=== HRP2DataqueuePlugin#print_cfg_sac
56
+ # SAC_DTQの出力
57
+ # file:: FILE: 出力先ファイル
58
+ # val :: string: カーネルオブジェクトの属性の解析結果
59
+ # acv :: string: アクセスベクタ
60
+ def print_cfg_sac(file, val, acv)
61
+ file.puts "SAC_DTQ(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});"
62
+ end
63
+
64
+ # tDataqueueの受け口リスト
65
+ def get_entry_ports_name_list
66
+ @@ep
67
+ end
68
+ end
@@ -0,0 +1,68 @@
1
+ #
2
+ # TECS Generator
3
+ # Generator for TOPPERS Embedded Component System
4
+ #
5
+ # Copyright (C) 2008-2017 by TOPPERS Project
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: HRP2EventflagPlugin.rb 2952 2018-05-07 10:19:07Z okuma-top $
37
+ #++
38
+
39
+ # require "HRP2KernelObjectPlugin"
40
+ require_tecsgen_lib "HRP2KernelObjectPlugin.rb"
41
+
42
+
43
+ class HRP2EventflagPlugin < HRP2KernelObjectPlugin
44
+ @@ep = [:eSetEventflag, :eWaitEventflag, :eManageEventflag, :eReferEventflag]
45
+ #=== HRP2EventflagPlugin#print_cfg_cre
46
+ # CRE_FLGの出力
47
+ # file:: FILE: 出力先ファイル
48
+ # val :: string: カーネルオブジェクトの属性の解析結果
49
+ # tab :: string: インデント用のtab
50
+ def print_cfg_cre(file, cell, val, tab)
51
+ file.print tab
52
+ file.puts "CRE_FLG(#{val[:id]}, {#{val[:attribute]}, #{val[:flagPattern]}});"
53
+ end
54
+
55
+ #=== HRP2EventflagPlugin#print_cfg_sac
56
+ # SAC_FLGの出力
57
+ # file:: FILE: 出力先ファイル
58
+ # val :: string: カーネルオブジェクトの属性の解析結果
59
+ # acv :: string: アクセスベクタ
60
+ def print_cfg_sac(file, val, acv)
61
+ file.puts "SAC_FLG(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});"
62
+ end
63
+
64
+ # tEventflagの受け口リスト
65
+ def get_entry_ports_name_list
66
+ @@ep
67
+ end
68
+ end
@@ -0,0 +1,68 @@
1
+ #
2
+ # TECS Generator
3
+ # Generator for TOPPERS Embedded Component System
4
+ #
5
+ # Copyright (C) 2008-2017 by TOPPERS Project
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: HRP2FixedSizeMemoryPoolPlugin.rb 2952 2018-05-07 10:19:07Z okuma-top $
37
+ #++
38
+
39
+ # require "HRP2KernelObjectPlugin"
40
+ require_tecsgen_lib "HRP2KernelObjectPlugin.rb"
41
+
42
+
43
+ class HRP2FixedSizeMemoryPoolPlugin < HRP2KernelObjectPlugin
44
+ @@ep = [:eSendFixedSizeMemoryPool, :eReceiveFixedSizeMemoryPool, :eManageFixedSizeMemoryPool, :eReferFixedSizeMemoryPool]
45
+ #=== HRP2FixedSizeMemoryPoolPlugin#print_cfg_cre
46
+ # CRE_MPFの出力
47
+ # file:: FILE: 出力先ファイル
48
+ # val :: string: カーネルオブジェクトの属性の解析結果
49
+ # tab :: string: インデント用のtab
50
+ def print_cfg_cre(file, cell, val, tab)
51
+ file.print tab
52
+ file.puts "CRE_MPF(#{val[:id]}, {#{val[:attribute]}, #{val[:blockCount]}, #{val[:blockSize]}, #{val[:mpf]}, #{val[:mpfmb]}});"
53
+ end
54
+
55
+ #=== HRP2FixedSizeMemoryPoolPlugin#print_cfg_sac
56
+ # SAC_MPFの出力
57
+ # file:: FILE: 出力先ファイル
58
+ # val :: string: カーネルオブジェクトの属性の解析結果
59
+ # acv :: string: アクセスベクタ
60
+ def print_cfg_sac(file, val, acv)
61
+ file.puts "SAC_MPF(#{val[:id]}, {#{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]}});"
62
+ end
63
+
64
+ # tFixedSizeMemoryPoolの受け口リスト
65
+ def get_entry_ports_name_list
66
+ @@ep
67
+ end
68
+ end
@@ -0,0 +1,117 @@
1
+ #
2
+ # TECS Generator
3
+ # Generator for TOPPERS Embedded Component System
4
+ #
5
+ # Copyright (C) 2008-2018 by TOPPERS Project
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: HRP2HandlerPlugin.rb 2952 2018-05-07 10:19:07Z okuma-top $
37
+ #++
38
+
39
+ # require "HRP2KernelObjectPlugin"
40
+ require_tecsgen_lib "HRP2KernelObjectPlugin.rb"
41
+
42
+ #== celltype プラグインの共通の親クラス
43
+ class HRP2HandlerPlugin < HRP2KernelObjectPlugin
44
+ @@ep = [:eStartAlarm, :eStopAlarm, :eManageAlarm, :eReferAlarm]
45
+ ##
46
+ #
47
+ # file : output file (ex.tecsgen.cfg)
48
+ # cell :
49
+ # val :
50
+ # tab :
51
+ def print_cfg_cre(file, cell, val, tab)
52
+ if !val[:id].nil?
53
+ val[:id] = val[:id].gsub(/(^|[^\$])\$id\$/, "\\1#{@celltype.get_name}_#{cell.get_name}")
54
+ end
55
+ # $cbp$ #983
56
+ name_array = @celltype.get_name_array cell
57
+ cell_CBP = name_array[8] # CBP
58
+ # CRE_XXXの生成
59
+ domainOption = cell.get_region.get_domain_root.get_domain_type.get_option
60
+ # if (cell.get_region.get_region_type != :DOMAIN) || (cell.get_region.get_param != :KERNEL_DOMAIN)
61
+ if (domainOption == "OutOfDomain") || (domainOption != "trusted")
62
+ # 無所属 or ユーザドメインに属する場合
63
+ raise "#{@plugin_arg_str.to_s.downcase} handler #{val[:id]} must belong to kernel domain."
64
+ elsif @plugin_arg_str == "ALARM"
65
+ file.print <<EOT
66
+ #{tab}CRE_ALM(#{val[:id]}, { #{val[:attribute]}, #{cell_CBP}, tAlarmHandler_start });
67
+ EOT
68
+ elsif @plugin_arg_str == "CYCLIC"
69
+ file.print <<EOT
70
+ #{tab}CRE_CYC(#{val[:id]}, { #{val[:attribute]}, #{cell_CBP}, tCyclicHandler_start, #{val[:cyclicTime]}, #{val[:cyclicPhase]} });
71
+ EOT
72
+ elsif @plugin_arg_str == "CONFIG_INT"
73
+ file.print <<EOT
74
+ #{tab}CFG_INT( #{val[:interruptNumber]}, { #{val[:attribute]}, #{val[:interruptPriority]} });
75
+ EOT
76
+ elsif @plugin_arg_str == "ISR"
77
+ file.print <<EOT
78
+ #{tab}ATT_ISR({ #{val[:attribute]}, #{cell_CBP}, #{val[:interruptNumber]}, tISR_start, #{val[:priority]} });
79
+ EOT
80
+ elsif @plugin_arg_str == "INIT_ROUTINE"
81
+ file.print <<EOT
82
+ #{tab}ATT_INI({ #{val[:attribute]}, #{cell_CBP}, tInitializeRoutine_start });
83
+ EOT
84
+ elsif @plugin_arg_str == "TERM_ROUTINE"
85
+ file.print <<EOT
86
+ #{tab}ATT_TER({ #{val[:attribute]}, #{cell_CBP}, tTerminateRoutine_start });
87
+ EOT
88
+ else
89
+ raise "#{@plugin_arg_str} is unknown option"
90
+ end
91
+ end
92
+
93
+ def print_cfg_sac(file, val, acv)
94
+ if @plugin_arg_str == "ALARM"
95
+ file.puts "SAC_ALM(#{val[:id]}, { #{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]} });"
96
+ elsif @plugin_arg_str == "CYCLIC"
97
+ file.puts "SAC_CYC(#{val[:id]}, { #{acv[0]}, #{acv[1]}, #{acv[2]}, #{acv[3]} });"
98
+ elsif @plugin_arg_str == "CONFIG_INT"
99
+ # nothing to do
100
+ elsif @plugin_arg_str == "ISR"
101
+ # nothing to do
102
+ elsif @plugin_arg_str == "INIT_ROUTINE"
103
+ # nothing to do
104
+ elsif @plugin_arg_str == "TERM_ROUTINE"
105
+ # nothing to do
106
+ else
107
+ raise "#{@plugin_arg_str} is unknown option"
108
+ end
109
+ end
110
+
111
+ =begin
112
+ #tAlarmの受け口リスト
113
+ def get_entry_ports_name_list()
114
+ @@ep
115
+ end
116
+ =end
117
+ end
@@ -0,0 +1,372 @@
1
+ #
2
+ # TECS Generator
3
+ # Generator for TOPPERS Embedded Component System
4
+ #
5
+ # Copyright (C) 2008-2017 by TOPPERS Project
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: HRP2KernelObjectPlugin.rb 2952 2018-05-07 10:19:07Z okuma-top $
37
+ #++
38
+
39
+ # Regionクラスにメソッドを追加
40
+ =begin
41
+ class Region
42
+ def get_params
43
+ return @region_type_param
44
+ end
45
+
46
+ def get_param
47
+ return @region_type_param[0]
48
+ end
49
+
50
+ def is_root
51
+ return self == @@root_namespace
52
+ end
53
+ end
54
+ =end
55
+
56
+ # Cellクラスにインスタンス変数とメソッドを追加
57
+ =begin
58
+ class Cell
59
+ def set_referenced_region( region )
60
+ if @referenced_regions.nil?
61
+ @referenced_regions = Array.new
62
+ end
63
+ if !@referenced_regions.include?(region)
64
+ @referenced_regions << region
65
+ end
66
+ end
67
+
68
+ def get_referenced_regions
69
+ return @referenced_regions
70
+ end
71
+
72
+ # set_referenced_cellにしたほうがよい
73
+ # def set_referenced_region( region, port_name )
74
+ def set_referenced_cell( cell, port_name )
75
+ if @referenced_cells.nil?
76
+ @referenced_cells = Hash.new
77
+ end
78
+ if !@referenced_cells.include?(port_name)
79
+ @referenced_cells[port_name] = Array.new
80
+ end
81
+ if !@referenced_cells[port_name].include?(cell)
82
+ @referenced_cells[port_name] << cell
83
+ end
84
+
85
+ region = cell.get_region
86
+ puts "***** set_referenced_regions *****"
87
+ puts "region=#{region.get_name}, port=#{port_name}(#{port_name.class})"
88
+ if @referenced_regions.nil?
89
+ @referenced_regions = Hash.new
90
+ end
91
+ if !@referenced_regions.include?(port_name)
92
+ @referenced_regions[port_name] = Array.new
93
+ end
94
+ if !@referenced_regions[port_name].include?(region)
95
+ @referenced_regions[port_name] << region
96
+ end
97
+ puts "#{@referenced_regions[port_name]}"
98
+ end
99
+
100
+ def get_referenced_cells( port_name )
101
+ if !@referenced_cells.nil? && @referenced_cells.include?(port_name)
102
+ return @referenced_cells[port_name]
103
+ else
104
+ return nil
105
+ end
106
+ end
107
+
108
+ def get_referenced_regions( port_name )
109
+ if !@referenced_regions.nil? && @referenced_regions.include?(port_name)
110
+ return @referenced_regions[port_name]
111
+ else
112
+ return nil
113
+ end
114
+ end
115
+
116
+ def self.get_cell_list
117
+ return @@cell_list
118
+ end
119
+
120
+ def self.get_cell_list2
121
+ return @@cell_list2
122
+ end
123
+ end
124
+ =end
125
+
126
+ #== celltype プラグインの共通の親クラス
127
+ class HRP2KernelObjectPlugin < CelltypePlugin
128
+ # @@obj_hash = {}
129
+
130
+ # @celltype:: Celltype
131
+ # @option:: String :オプション文字列
132
+ def initialize(celltype, option)
133
+ super
134
+ # それぞれのカーネルオブジェクトを解析対象セルタイプに追加
135
+ HRP2KernelObjectPlugin.set_celltype(celltype)
136
+ end
137
+
138
+ #=== HRP2KernelObjectPlugin#print_cfg_cre
139
+ # 各種カーネルオブジェクトのCRE_*の出力
140
+ # file:: FILE: 出力先ファイル
141
+ # val :: string: カーネルオブジェクトの属性の解析結果
142
+ # tab :: string: インデント用のtab
143
+ def print_cfg_cre(file, cell, val, tab)
144
+ raise "called virtual method print_cfg_cre in #{@celltype.get_name} plugin"
145
+ end
146
+
147
+ #=== HRP2KernelObjectPlugin#print_cfg_sac
148
+ # 各種カーネルオブジェクトのSAC_*の出力
149
+ # file:: FILE: 出力先ファイル
150
+ # val :: string: カーネルオブジェクトの属性の解析結果
151
+ # acv :: string: アクセスベクタ
152
+ def print_cfg_sac(file, val, acv)
153
+ raise "called virtual method print_cfg_sac in #{@celltype.get_name} plugin"
154
+ end
155
+
156
+ #=== HRP2KernelObjectPlugin#get_entry_ports_name_list
157
+ # カーネルオブジェクトの各種アクセスの種別の受け口名を取得
158
+ def get_entry_ports_name_list
159
+ raise "called virtual method get_entry_ports_name_list in #{@celltype.get_name} plugin"
160
+ end
161
+
162
+ def string_cfg_cre(cell, val)
163
+ raise "called virtual method string_cfg_cre in #{@celltype.get_name} plugin"
164
+ end
165
+
166
+ def gen_factory(file)
167
+ puts "===== begin #{@celltype.get_name} plugin ====="
168
+
169
+ # 対象となるすべてのセルについて、受け口に結合されている
170
+ # セルの所属ドメインを解析
171
+ if !HRP2KernelObjectPlugin.isChecked
172
+ HRP2KernelObjectPlugin.check_referenced_cells
173
+ else
174
+ puts "***** already checked"
175
+ end
176
+
177
+ # 追記するために AppFile を使う(文字コード変換されない)
178
+ file2 = AppFile.open("#{$gen}/tecsgen.cfg")
179
+ file2.print "\n/* Generated by #{self.class.name} */\n\n"
180
+
181
+ @celltype.get_cell_list.each {|cell|
182
+ if cell.is_generate?
183
+ puts "===== begin check my domain #{cell.get_name} ====="
184
+ # attrの値をハッシュに入れる
185
+ val = {}
186
+ @celltype.get_attribute_list.each{|a|
187
+ # p a.get_name
188
+ if a.get_type.is_a?(ArrayType)
189
+ val[a.get_name] = []
190
+ if j = cell.get_join_list.get_item(a.get_name)
191
+ # セル生成時に初期化する場合
192
+ j.get_rhs.each {|elem|
193
+ val[a.get_name] << elem.to_s
194
+ }
195
+ elsif i = a.get_initializer
196
+ # セルタイプの初期化値を使う場合
197
+ i.each {|elem|
198
+ val[a.get_name] << elem.to_s
199
+ }
200
+ else
201
+ raise "attribute is not initialized"
202
+ end
203
+ else
204
+ if j = cell.get_join_list.get_item(a.get_name)
205
+ # セル生成時に初期化する場合
206
+ val[a.get_name] = j.get_rhs.to_s
207
+ elsif i = a.get_initializer
208
+ # セルタイプの初期化値を使う場合
209
+ val[a.get_name] = i.to_s
210
+ else
211
+ raise "attribute is not initialized"
212
+ end
213
+ end
214
+ }
215
+ # generate.rbを参考に
216
+ # $id$を置換
217
+ if val[:id].nil? != true
218
+ puts val[:id]
219
+ # val[:id] = val[:id].gsub( /(^|[^\$])\$id\$/, "\\1#{@celltype.get_name.to_s}_#{cell.get_name.to_s}" )
220
+ val[:id] = @celltype.subst_name(val[:id], @celltype.get_name_array(cell))
221
+ end
222
+ # $cbp$の代わり
223
+ index = cell.get_id - @celltype.get_id_base
224
+ cell_CB_name = "#{@celltype.get_global_name}_CB_tab[#{index}]"
225
+ cell_domain_root = cell.get_region.get_domain_root
226
+ cell_domain_type = cell.get_region.get_domain_root.get_domain_type
227
+
228
+ # CRE_XXX/DEF_XXXの生成
229
+ if cell_domain_type.get_option.to_s != "OutOfDomain"
230
+ # 保護ドメインに属する場合
231
+ if !HRP2KernelObjectPlugin.include_region(cell_domain_root.get_name.to_s)
232
+ # その保護ドメインの.cfgが生成されていない場合
233
+ HRP2KernelObjectPlugin.set_region_list(cell_domain_root.get_name.to_s)
234
+ puts "~~~~~ #{cell_domain_root.get_name} is registered!"
235
+
236
+ # if cell.get_region.get_param == :KERNEL_DOMAIN
237
+ if cell_domain_type.get_option.to_s == "trusted"
238
+ # file2.print "#{cell.get_region.get_name.to_s}{\n"
239
+ file2.print "KERNEL_DOMAIN{\n"
240
+ else
241
+ file2.print "DOMAIN(#{cell_domain_root.get_name}){\n"
242
+ end
243
+ file2.puts "\tINCLUDE(\"#{$gen}/tecsgen_#{cell_domain_root.get_name}.cfg\");"
244
+ file2.puts "}\n"
245
+ else
246
+ dbgPrint "~~~~~ #{cell.get_region.get_name} is included in"
247
+ # p @@region_list
248
+ end
249
+ file3 = AppFile.open("#{$gen}/tecsgen_#{cell_domain_root.get_name}.cfg")
250
+ print_cfg_cre(file3, cell, val, "")
251
+ file3.close
252
+ else
253
+ # 無所属の場合
254
+ puts "~~~~~ #{cell_domain_root.get_name} is OutOfDomain"
255
+ print_cfg_cre(file2, cell, val, "")
256
+ end
257
+
258
+ puts "===== end check my domain #{cell.get_name} ====="
259
+ # SAC_XXXの生成
260
+ if !val[:accessPattern].nil?
261
+ puts "===== begin check regions #{cell.get_name} ====="
262
+ # p val[:accessPattern]
263
+ # p val[:accessPattern].class
264
+
265
+ # ep = [ :eTaskActivate, :eTaskControl, :eTaskManage, :eTaskRefer ]
266
+ # 各カーネルオブジェクトの受け口名を取得
267
+ # ep = get_entry_ports_name_list()
268
+ i = 0
269
+ acv = []
270
+ # アクセス許可ベクタの生成
271
+ val[:accessPattern].each {|acptnx|
272
+ # アクセス許可パターンの生成
273
+ if acptnx != "OMIT"
274
+ acv << acptnx
275
+ # p acv[i]
276
+ elsif cell_domain_type.get_option.to_s == "trusted"
277
+ acv << "TACP_KERNEL"
278
+ # p acv[i]
279
+ elsif cell_domain_type.get_option.to_s != "OutOfDomain"
280
+ acv << "TACP(#{cell_domain_root.get_name})"
281
+ else
282
+ acv << "TACP_SHARED"
283
+ end
284
+
285
+ i += 1
286
+ }
287
+
288
+ dbgPrint "acv = "
289
+ p acv
290
+
291
+ # 各種SACの生成
292
+ domainOption = cell_domain_type.get_option
293
+ # if cell.get_region.get_region_type == :DOMAIN
294
+ if domainOption != "OutOfDomain"
295
+ # 保護ドメインに属する場合
296
+ file3 = AppFile.open("#{$gen}/tecsgen_#{cell.get_region.get_name}.cfg")
297
+ print_cfg_sac(file3, val, acv)
298
+ file3.close
299
+ else
300
+ # 無所属の場合
301
+ print_cfg_sac(file2, val, acv)
302
+ end
303
+
304
+ puts "===== end check regions #{cell.get_name} ====="
305
+ end
306
+ end
307
+ }
308
+
309
+ puts "===== end #{@celltype.get_name} plugin ====="
310
+ file2.close
311
+ end
312
+
313
+ # カーネルオブジェクトセルタイプの管理
314
+ # HRP2KernelObjectPluginクラスに対してメソッド呼出しを行うことを想定
315
+ @@checked = false
316
+ @@celltype_list = []
317
+ @@region_list = []
318
+
319
+ def self.isChecked
320
+ return @@checked
321
+ end
322
+
323
+ def self.check_referenced_cells
324
+ dbgPrint "===== begin check registered celltype =====\n"
325
+ self.get_celltype_list.each {|ct|
326
+ dbgPrint(ct.get_name.to_s + "\n")
327
+ }
328
+ dbgPrint "===== end check registered celltype =====\n"
329
+
330
+ =begin
331
+ Cell.get_cell_list2.each { |cell|
332
+ cell.get_celltype.get_port_list.each{ |p|
333
+ next if p.get_port_type != :CALL
334
+ j = cell.get_join_list.get_item(p.get_name)
335
+ printf "===== check call port : "
336
+ # p p.get_name.to_s
337
+ next if j.nil? # 未結合の場合
338
+ if @@celltype_list.include?(j.get_celltype)
339
+ # j.get_cell.set_referenced_region(cell.get_region)
340
+ # j.get_cell.set_referenced_region(cell.get_region, j.get_port_name)
341
+ j.get_cell.set_referenced_cell(cell, j.get_port_name)
342
+ printf "===== check joined rhs cell : "
343
+ # p j.get_cell.get_name.to_s
344
+ printf "===== check joined rhs port_name : "
345
+ # p j.get_port_name
346
+ end
347
+ }
348
+ }
349
+ =end
350
+ @@checked = true
351
+ end
352
+
353
+ def self.set_celltype(celltype)
354
+ @@celltype_list << celltype
355
+ end
356
+
357
+ def self.get_celltype_list
358
+ return @@celltype_list
359
+ end
360
+
361
+ def self.set_region_list(region)
362
+ @@region_list << region
363
+ end
364
+
365
+ def self.include_region(region)
366
+ return @@region_list.include?(region)
367
+ end
368
+
369
+ def self.include_celltype?(celltype)
370
+ return @@celltype_list.include?(celltype)
371
+ end
372
+ end