source: azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2Plugin.rb@ 388

Last change on this file since 388 was 388, checked in by coas-nagasima, 5 years ago

Azure IoT Hub Device C SDK を使ったサンプルの追加

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-ruby
File size: 6.8 KB
Line 
1# -*- coding: utf-8 -*-
2#
3# TECS Generator
4# Generator for TOPPERS Embedded Component System
5#
6# Copyright (C) 2018 by TOPPERS Project
7#--
8# 上記著作権者
9は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
10# ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
11# 変・再é…
12å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
13# (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
14# 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
15# スコード中に含まれていること.
16# (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
17# 用できる形で再é…
18å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
19å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
20# 者
21マニュアルなど)に,上記の著作権表示,この利用条件および下記
22# の無保証規定を掲載すること.
23# (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
24# 用できない形で再é…
25å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
26# と.
27# (a) 再é…
28å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
29マニュアルなど)に,上記の著
30# 作権表示,この利用条件および下記の無保証規定を掲載すること.
31# (b) 再é…
32å¸ƒã®å½¢æ…
33‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
34# 報告すること.
35# (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
36# 害からも,上記著作権者
37およびTOPPERSプロジェクトをå…
38è²¬ã™ã‚‹ã“と.
39# また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
40# 由に基づく請求からも,上記著作権者
41およびTOPPERSプロジェクトを
42# å…
43è²¬ã™ã‚‹ã“と.
44#
45# 本ソフトウェアは,無保証で提供されているものである.上記著作権者
46お
47# よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
48# に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
49# アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
50# の責任を負わない.
51#
52# $Id$
53#++
54
55#
56# 各メソッドの役割りは、DomainPlugin.rb を参ç…
57§ã®ã“と
58# HRP2カーネル用ドメインプラグイン
59class HRP2Plugin < DomainPlugin
60
61 def initialize( region, name, option )
62 super
63 print "HRP2Plugin: initialize: region=#{region.get_name}, domainName=#{name}, option=#{option}\n"
64 @region = region
65 @name = name
66
67 case option
68 when "trusted", "nontrusted", "OutOfDomain"
69 # OK
70 @option = option
71 else
72 cdl_error( "HRPPlugin: '$1' is unacceptable domain kind, specify 'trusted' or 'nontrusted'", option )
73 @option = "trusted" # とりあえず trusted を設定しておく
74 end
75 end
76
77 def add_through_plugin( join, current_region, next_region, through_type )
78 # join.get_owner:Cell 左辺のセル
79 # join.get_definition:Port 呼び口
80 # join.get_subscript:Integer or nil 呼び口é…
81åˆ—の添数 (Join::@subscript の説明参ç…
82§)
83 # join.get_cell:Cell 右辺のセル
84 # join.get_port_name:Symbol 受け口
85 # get_rhs_subscript:Integer or nil 受け口é…
86åˆ—の添数 (Join::@rhs_subscript の説明参ç…
87§)
88 # return []
89 print "HRP2Plugin: add_through_plugin: #{current_region.get_name}=>#{next_region.get_name}, #{join.get_owner.get_name}.#{join.get_definition.get_name}=>#{join.get_cell.get_name}.#{join.get_port_name}, #{through_type}\n"
90
91 puts "=====Join Check Start====="
92 puts "caller: #{join.get_owner.get_name.to_s}, callee: #{join.get_cell.get_name.to_s}"
93 puts "=====Join Check param====="
94 current_domain = current_region.get_domain_root.get_domain_type
95 next_domain = next_region.get_domain_root.get_domain_type
96 puts current_domain.get_option.to_s
97 if !next_domain.nil?
98 puts next_domain.get_option.to_s
99 else
100 puts "next domain is nil!"
101 end
102
103 if HRP2KernelObjectPlugin.include_celltype?(join.get_cell.get_celltype)
104 # 結合å…
105ˆãŒã‚«ãƒ¼ãƒãƒ«ã‚ªãƒ–ジェクトセル
106 # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
107 # 何もしないthrough
108 puts "***** #{join.get_cell.get_celltype.get_name} is kernel object"
109 return []
110 # return [ :HRP2SVCPlugin, "channelCelltype=tMessagebufferChannel,noClientSemaphore=true" ]
111 # elsif @end_region.is_root?
112 # elsif next_region.get_option == OutOfDomain
113 # elsif next_domain.nil?
114 elsif next_domain.get_option.to_s == "OutOfDomain"
115 # # 結合å…
116ˆãŒç„¡æ‰€å±ž
117 # # 何もしないthrough
118 # # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
119 puts "***** nil"
120 return []
121 # return [ :HRP2SVCPlugin, "channelCelltype=tMessagebufferChannel,noClientSemaphore=true" ]
122 #elsif @start_region.get_param != :KERNEL_DOMAIN && @end_region.get_param == :KERNEL_DOMAIN
123 elsif current_domain.get_option.to_s != "trusted" && next_domain.get_option.to_s == "trusted"
124 # ユーザドメインからカーネルドメインへの結合
125 # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
126 puts "***** svc"
127 return [ :HRP2SVCPlugin, "" ]
128 elsif current_domain != next_domain
129 # ユーザドメインから別のユーザドメインへの結合
130 # @plugin_body = HRP2RPCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
131 puts "***** rpc"
132 return [ :HRP2RPCPlugin, "channelCelltype=tMessagebufferChannel,noClientSemaphore=true" ]
133 else
134 # その他
135 # 何もしないthrough
136 # @plugin_body = HRP2SVCPlugin.new(cell_name, plugin_arg, next_cell, next_cell_port_name, signature, celltype, caller_cell)
137 print "warning: at HRP2 Join Check"
138 return nil
139 end
140
141 puts "=====Join Check End====="
142 end
143
144 #== ドメイン種別を返す
145 #return::Symbol :kernel, :user, :OutOfDomain
146 def get_kind
147 case @option
148 when "trusted"
149 return :kernel
150 when "nontrusted"
151 return :user
152 when "OutOfDomain"
153 return :OutOfDomain
154 end
155 end
156
157 def joinable?(current_region, next_region, through_type )
158 print "HRP2Plugin: joinable? from #{current_region.get_name} to #{next_region.get_name} (#{through_type})\n"
159 return true
160 end
161
162 def self.gen_post_code file
163 end
164end
Note: See TracBrowser for help on using the repository browser.