source: azure_iot_hub/trunk/ntshell/echonet/echonet_chk.trb@ 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.2 KB
Line 
1# =====================================================================
2#
3# TOPPERS ECHONET Lite Communication Middleware
4#
5# Copyright (C) 2014 Cores Co., Ltd. Japan
6#
7# 上記著作権者
8は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
9# ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
10# 変・再é…
11å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
12# (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
13# 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
14# スコード中に含まれていること.
15# (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
16# 用できる形で再é…
17å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
18å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
19# 者
20マニュアルなど)に,上記の著作権表示,この利用条件および下記
21# の無保証規定を掲載すること.
22# (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
23# 用できない形で再é…
24å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
25# と.
26# (a) 再é…
27å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
28マニュアルなど)に,上記の著
29# 作権表示,この利用条件および下記の無保証規定を掲載すること.
30# (b) 再é…
31å¸ƒã®å½¢æ…
32‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
33# 報告すること.
34# (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
35# 害からも,上記著作権者
36およびTOPPERSプロジェクトをå…
37è²¬ã™ã‚‹ã“と.
38# また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
39# 由に基づく請求からも,上記著作権者
40およびTOPPERSプロジェクトを
41# å…
42è²¬ã™ã‚‹ã“と.
43#
44# 本ソフトウェアは,無保証で提供されているものである.上記著作権者
45お
46# よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
47# に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
48# アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
49# の責任を負わない.
50#
51# @(#) $Id$
52#
53# =====================================================================
54
55# =====================================================================
56# 必
57須プロパティのチェック
58# =====================================================================
59
60# プロファイルオブジェクトスーパークラス
61class ProfileObjectSuperClass
62 EPC = [ 0x88, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x9D, 0x9E, 0x9F ]
63 MUST = [ $EPC_NONE, $EPC_RULE_GET, $EPC_NONE, $EPC_NONE, $EPC_NONE, $EPC_NONE, $EPC_RULE_GET, $EPC_RULE_GET, $EPC_RULE_GET ]
64end
65
66# ノードプロファイルクラス
67class NodeProfileClass
68 EPC = [ 0x80, 0x82, 0x83, 0x89, 0xBF, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7 ]
69 MUST = [ $EPC_RULE_GET, $EPC_RULE_GET, $EPC_RULE_GET, $EPC_NONE, $EPC_NONE, $EPC_RULE_GET, $EPC_RULE_GET, $EPC_RULE_ANNO, $EPC_RULE_GET, $EPC_RULE_GET ]
70end
71
72# 機器オブジェクトスーパークラス
73class DeviceSuperClass
74 EPC = [ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x93, 0x97, 0x98, 0x99, 0x9A, 0x9D, 0x9E, 0x9F ]
75 MUST = [ $EPC_RULE_GET, $EPC_RULE_SET | $EPC_RULE_GET, $EPC_RULE_GET, $EPC_NONE, $EPC_NONE, $EPC_NONE, $EPC_NONE, $EPC_NONE, $EPC_RULE_GET, $EPC_NONE, $EPC_RULE_GET, $EPC_NONE, $EPC_NONE, $EPC_NONE, $EPC_NONE, $EPC_NONE, $EPC_NONE, $EPC_NONE, $EPC_NONE, $EPC_NONE, $EPC_NONE, $EPC_RULE_GET, $EPC_RULE_GET, $EPC_RULE_GET ]
76end
77
78def getPropertyInfo(x1, x2, attr)
79 eoj = {}
80 eoj[:x1] = x1
81 eoj[:x2] = x2
82 list = []
83 map = []
84 for i in [ 0..15 ] do
85 map[i] = 0x00
86 end
87
88 if (attr != $EPC_ANNOUNCE) && (attr != $EPC_RULE_SET) && (attr != $EPC_RULE_GET)
89 error_exit(sprintf("%1% is illegal value, must be EPC_RULE_ANNO or EPC_RULE_SET or EPC_RULE_GET.", attr))
90 end
91
92 if eoj[:x1] == $EOJ_X1_SENSOR
93 i = 0
94 while i < DeviceSuperClass::EPC.length
95 if (DeviceSuperClass::MUST[i] & attr) != 0
96 list << DeviceSuperClass::EPC[i]
97 end
98 i = i + 1
99 end
100 elsif eoj[:x1] == $EOJ_X1_AIR_CONDITIONER
101 i = 0
102 while i < DeviceSuperClass::EPC.length
103 if (DeviceSuperClass::MUST[i] & attr) != 0
104 list << DeviceSuperClass::EPC[i]
105 end
106 i = i + 1
107 end
108 elsif eoj[:x1] == $EOJ_X1_AMENITY
109 i = 0
110 while i < DeviceSuperClass::EPC.length
111 if (DeviceSuperClass::MUST[i] & attr) != 0
112 list << DeviceSuperClass::EPC[i]
113 end
114 i = i + 1
115 end
116 elsif eoj[:x1] == $EOJ_X1_HOUSEWORK
117 i = 0
118 while i < DeviceSuperClass::EPC.length
119 if (DeviceSuperClass::MUST[i] & attr) != 0
120 list << DeviceSuperClass::EPC[i]
121 end
122 i = i + 1
123 end
124 elsif eoj[:x1] == $EOJ_X1_WELLNESS
125 i = 0
126 while i < DeviceSuperClass::EPC.length
127 if (DeviceSuperClass::MUST[i] & attr) != 0
128 list << DeviceSuperClass::EPC[i]
129 end
130 i = i + 1
131 end
132 elsif eoj[:x1] == $EOJ_X1_CONTROLLER
133 i = 0
134 while i < DeviceSuperClass::EPC.length
135 if (DeviceSuperClass::MUST[i] & attr) != 0
136 list << DeviceSuperClass::EPC[i]
137 end
138 i = i + 1
139 end
140 elsif eoj[:x1] == $EOJ_X1_AUDIO_VISUAL
141 i = 0
142 while i < DeviceSuperClass::EPC.length
143 if (DeviceSuperClass::MUST[i] & attr) != 0
144 list << DeviceSuperClass::EPC[i]
145 end
146 i = i + 1
147 end
148 elsif eoj[:x1] == $EOJ_X1_PROFILE
149 i = 0
150 while i < ProfileObjectSuperClass::EPC.length
151 if (ProfileObjectSuperClass::MUST[i] & attr) != 0
152 list << ProfileObjectSuperClass::EPC[i]
153 end
154 i = i + 1
155 end
156 if eoj[:x2] == $EOJ_X2_NODE_PROFILE
157 i = 0
158 while i < NodeProfileClass::EPC.length
159 if (NodeProfileClass::MUST[i] & attr) != 0
160 list << NodeProfileClass::EPC[i]
161 end
162 i = i + 1
163 end
164 end
165 elsif eoj[:x1] == $EOJ_X1_USER_DEFINED
166 i = 0
167 while i < DeviceSuperClass::EPC.length
168 if (DeviceSuperClass::MUST[i] & attr) != 0
169 list << DeviceSuperClass::EPC[i]
170 end
171 i = i + 1
172 end
173 end
174
175 i = 0
176 while i < list.length
177 pos = list[i] & 0xF
178 bit = (list[i] >> 4) - 8
179 map[pos] = map[pos] | (1 << bit)
180 i = i + 1
181 end
182
183 return list
184end
Note: See TracBrowser for help on using the repository browser.