source: asp3_tinet_ecnl_rx/trunk/ntshell/echonet/echonet_chk.trb@ 400

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

ファイルヘッダーの更新

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-ruby;charset=UTF-8
File size: 6.2 KB
Line 
1# =====================================================================
2#
3# TOPPERS ECHONET Lite Communication Middleware
4#
5# Copyright (C) 2014-2019 Cores Co., Ltd. Japan
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
40# =====================================================================
41# 必須プロパティのチェック
42# =====================================================================
43
44# プロファイルオブジェクトスーパークラス
45class ProfileObjectSuperClass
46 EPC = [ 0x88, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x9D, 0x9E, 0x9F ]
47 MUST = [ $EPC_NONE, $EPC_RULE_GET, $EPC_NONE, $EPC_NONE, $EPC_NONE, $EPC_NONE, $EPC_RULE_GET, $EPC_RULE_GET, $EPC_RULE_GET ]
48end
49
50# ノードプロファイルクラス
51class NodeProfileClass
52 EPC = [ 0x80, 0x82, 0x83, 0x89, 0xBF, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7 ]
53 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 ]
54end
55
56# 機器オブジェクトスーパークラス
57class DeviceSuperClass
58 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 ]
59 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 ]
60end
61
62def getPropertyInfo(x1, x2, attr)
63 eoj = {}
64 eoj[:x1] = x1
65 eoj[:x2] = x2
66 list = []
67 map = []
68 for i in [ 0..15 ] do
69 map[i] = 0x00
70 end
71
72 if (attr != $EPC_ANNOUNCE) && (attr != $EPC_RULE_SET) && (attr != $EPC_RULE_GET)
73 error_exit(sprintf("%1% is illegal value, must be EPC_RULE_ANNO or EPC_RULE_SET or EPC_RULE_GET.", attr))
74 end
75
76 if eoj[:x1] == $EOJ_X1_SENSOR
77 i = 0
78 while i < DeviceSuperClass::EPC.length
79 if (DeviceSuperClass::MUST[i] & attr) != 0
80 list << DeviceSuperClass::EPC[i]
81 end
82 i = i + 1
83 end
84 elsif eoj[:x1] == $EOJ_X1_AIR_CONDITIONER
85 i = 0
86 while i < DeviceSuperClass::EPC.length
87 if (DeviceSuperClass::MUST[i] & attr) != 0
88 list << DeviceSuperClass::EPC[i]
89 end
90 i = i + 1
91 end
92 elsif eoj[:x1] == $EOJ_X1_AMENITY
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_HOUSEWORK
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_WELLNESS
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_CONTROLLER
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_AUDIO_VISUAL
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_PROFILE
133 i = 0
134 while i < ProfileObjectSuperClass::EPC.length
135 if (ProfileObjectSuperClass::MUST[i] & attr) != 0
136 list << ProfileObjectSuperClass::EPC[i]
137 end
138 i = i + 1
139 end
140 if eoj[:x2] == $EOJ_X2_NODE_PROFILE
141 i = 0
142 while i < NodeProfileClass::EPC.length
143 if (NodeProfileClass::MUST[i] & attr) != 0
144 list << NodeProfileClass::EPC[i]
145 end
146 i = i + 1
147 end
148 end
149 elsif eoj[:x1] == $EOJ_X1_USER_DEFINED
150 i = 0
151 while i < DeviceSuperClass::EPC.length
152 if (DeviceSuperClass::MUST[i] & attr) != 0
153 list << DeviceSuperClass::EPC[i]
154 end
155 i = i + 1
156 end
157 end
158
159 i = 0
160 while i < list.length
161 pos = list[i] & 0xF
162 bit = (list[i] >> 4) - 8
163 map[pos] = map[pos] | (1 << bit)
164 i = i + 1
165 end
166
167 return list
168end
Note: See TracBrowser for help on using the repository browser.