Changeset 321 for EcnlProtoTool/trunk/mrbgems/mruby-ecnl
- Timestamp:
- Aug 23, 2017, 9:27:43 AM (7 years ago)
- Location:
- EcnlProtoTool/trunk/mrbgems/mruby-ecnl
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/mrbgems/mruby-ecnl/mrbgem.rake
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
-
Property svn:mime-type
changed from
-
EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r270 r321 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 6 * ä¸è¨èä½æ¨©è 7 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 8 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 9 * å¤ã»åé 10 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 11 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 12 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 13 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 14 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 15 * ç¨ã§ããå½¢ã§åé 16 å¸ããå ´åã«ã¯ï¼åé 17 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 18 * è 19 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 20 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 21 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 * ç¨ã§ããªãå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 24 * ã¨ï¼ 25 * (a) åé 26 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 27 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 28 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 29 * (b) åé 30 å¸ã®å½¢æ 31 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 32 * å ±åãããã¨ï¼ 33 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 34 * 害ãããï¼ä¸è¨èä½æ¨©è 35 ããã³TOPPERSããã¸ã§ã¯ããå 36 責ãããã¨ï¼ 37 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 38 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ãã 40 * å 41 責ãããã¨ï¼ 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 8 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 9 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 10 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 11 * スコード中に含まれていること. 12 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 13 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 14 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 15 * の無保証規定を掲載すること. 16 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 17 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 18 * と. 19 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 20 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 21 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 22 * 報告すること. 23 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 24 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 25 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 * 免責すること. 42 28 * 43 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 44 ã 45 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 46 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 47 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 48 * ã®è²¬ä»»ãè² ããªãï¼ 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 49 34 * 50 35 */ … … 62 47 63 48 /* 64 * ECHONET Lite ãµã¼ãã¹å¦çéå§49 * ECHONET Liteサービス処理開始 65 50 */ 66 51 ER ecn_sta_svc(ecnl_svc_task_t *svc) … … 72 57 73 58 /* 74 * ECHONETãªãã¸ã§ã¯ãåç 75 § 76 * å¼æ° 77 * ID fa_eobjid ECHONETãªãã¸ã§ã¯ãID 78 * T_REOBJ *fp_eobj ECHONETãªãã¸ã§ã¯ãã®è¨å®å 79 容ã³ãã¼å 80 59 * ECHONETオブジェクト参照 60 * 引数 61 * ID fa_eobjid ECHONETオブジェクトID 62 * T_REOBJ *fp_eobj ECHONETオブジェクトの設定内容コピー先 81 63 * 82 * eobjidã§æå®ããECHONETãªãã¸ã§ã¯ãã®è¨å®å 83 容ãåç 84 §ããã 85 * åç 86 §ããè¨å®å 87 容ã¯pk_eobjã«æå®ããã¡ã¢ãªã«è¿ãããã 64 * eobjidで指定したECHONETオブジェクトの設定内容を参照する。 65 * 参照した設定内容はpk_eobjに指定したメモリに返される。 88 66 */ 89 67 ER ecn_ref_eobj(ecnl_svc_task_t *svc, ID fa_eobjid, T_REOBJ *fp_eobj) … … 92 70 93 71 if (!fp_eobj) 94 return E_PAR; /* ãã©ã¡ã¼ã¿ã¨ã©ã¼*/72 return E_PAR; /* パラメータエラー */ 95 73 96 74 if ((fa_eobjid <= 0) || (fa_eobjid > svc->tmax_eobjid)) 97 return E_OBJ; /* ãªãã¸ã§ã¯ãæªç»é²*/75 return E_OBJ; /* オブジェクト未登録 */ 98 76 99 77 p_obj = echonet_svctask_get_eobjinib(svc, fa_eobjid); … … 105 83 106 84 /* 107 * ECHONETããããã£åç 108 § 109 * å¼æ° 110 * ID fa_eobjid ECHONETãªãã¸ã§ã¯ãID 111 * uint8_t fa_epc ããããã£ã³ã¼ã 112 * T_RPRP *fp_eprp ECHONETãªãã¸ã§ã¯ãã®ããããã£è¨å®å 113 容ã³ãã¼å 114 85 * ECHONETプロパティ参照 86 * 引数 87 * ID fa_eobjid ECHONETオブジェクトID 88 * uint8_t fa_epc プロパティコード 89 * T_RPRP *fp_eprp ECHONETオブジェクトのプロパティ設定内容コピー先 115 90 * 116 * eobjidã§æå®ããECHONETãªãã¸ã§ã¯ãã®ãepcã§æå®ããããããã£ã®è¨å®å 117 容ãåç 118 §ããã 119 * åç 120 §ããè¨å®å 121 容ã¯pk_eprpã«æå®ããã¡ã¢ãªã«è¿ãããã 91 * eobjidで指定したECHONETオブジェクトの、epcで指定したプロパティの設定内容を参照する。 92 * 参照した設定内容はpk_eprpに指定したメモリに返される。 122 93 */ 123 94 ER ecn_ref_eprp(ecnl_svc_task_t *svc, ID fa_eobjid, uint8_t fa_epc, T_RPRP *fp_eprp) … … 128 99 129 100 if (!fp_eprp) 130 return E_PAR; /* ãã©ã¡ã¼ã¿ã¨ã©ã¼*/101 return E_PAR; /* パラメータエラー */ 131 102 132 103 if ((fa_eobjid <= 0) || (fa_eobjid > svc->tmax_eobjid)) 133 return E_OBJ; /* ãªãã¸ã§ã¯ãæªç»é²*/104 return E_OBJ; /* オブジェクト未登録 */ 134 105 135 106 p_obj = svc->eobjinib_table[fa_eobjid - 1]; 136 107 137 /* eojã®æã¤ããããã£åæåå®ç¾©é 138 åããæ¤ç´¢ */ 108 /* eojの持つプロパティ初期化定義配列から検索 */ 139 109 p = p_obj->eprp; 140 110 for (i = 0; i < p_obj->eprpcnt; i++, p++) { … … 145 115 } 146 116 147 return E_PAR; /* ãã©ã¡ã¼ã¿ã¨ã©ã¼ */ 148 } 149 150 /* 151 * ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ï¼å¿çä¸è¦ï¼é»æä½æ 152 * å¼æ° 153 * T_EDATA **ppk_esv åå¾ããé»æã®æ ¼ç´å 154 155 * ID fa_deoj å®å 156 ã®ECHONETãªãã¸ã§ã¯ãID 157 * uint8_t fa_epc ããããã£ã³ã¼ã 158 * uint8_t fa_pdc ããããã£å¤ãã¼ã¿ãµã¤ãº 159 * const void *p_edt ããããã£å¤ãã¼ã¿ 117 return E_PAR; /* パラメータエラー */ 118 } 119 120 /* 121 * プロパティ値書き込み要求(応答不要)電文作成 122 * 引数 123 * T_EDATA **ppk_esv 取得した電文の格納先 124 * ID fa_deoj 宛先のECHONETオブジェクトID 125 * uint8_t fa_epc プロパティコード 126 * uint8_t fa_pdc プロパティ値データサイズ 127 * const void *p_edt プロパティ値データ 160 128 * 161 * ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ï¼å¿çä¸è¦ï¼é»æãä½æããã 162 * é»æã¯deojã§æå®ããECHONETãªãã¸ã§ã¯ããå®å 163 ã¨ãã 164 * é»æã®åãã®ããããã£å¤ã¨ãã¦ãepcã¨pdcãp_edtã§æå®ããã 165 * ããããã£ã³ã¼ãããã¼ã¿ãµã¤ãºããã¼ã¿ãé»æã«è¨å®ããã 166 * ä½æããé»æã®å 167 é ã¢ãã¬ã¹ã¯ãã¤ã³ã¿çµç±ã§è¿ãããã 129 * プロパティ値書き込み要求(応答不要)電文を作成する。 130 * 電文はdeojで指定したECHONETオブジェクトを宛先とし、 131 * 電文の初めのプロパティ値として、epcとpdc、p_edtで指定された 132 * プロパティコード、データサイズ、データを電文に設定する。 133 * 作成した電文の先頭アドレスはポインタ経由で返される。 168 134 */ 169 135 ER ecn_esv_seti(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc, uint8_t fa_pdc, … … 174 140 175 141 /* 176 * ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ï¼å¿çè¦ï¼é»æä½æ 177 * å¼æ° 178 * T_EDATA **ppk_esv åå¾ããé»æã®æ ¼ç´å 179 180 * ID fa_deoj å®å 181 ã®ECHONETãªãã¸ã§ã¯ãID 182 * uint8_t fa_epc ããããã£ã³ã¼ã 183 * uint8_t fa_pdc ããããã£å¤ãã¼ã¿ãµã¤ãº 184 * const void *p_edt ããããã£å¤ãã¼ã¿ 142 * プロパティ値書き込み要求(応答要)電文作成 143 * 引数 144 * T_EDATA **ppk_esv 取得した電文の格納先 145 * ID fa_deoj 宛先のECHONETオブジェクトID 146 * uint8_t fa_epc プロパティコード 147 * uint8_t fa_pdc プロパティ値データサイズ 148 * const void *p_edt プロパティ値データ 185 149 * 186 * ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ï¼å¿çè¦ï¼é»æãä½æããã 187 * é»æã¯deojã§æå®ããECHONETãªãã¸ã§ã¯ããå®å 188 ã¨ãã 189 * é»æã®åãã®ããããã£å¤ã¨ãã¦ãepcã¨pdcãp_edtã§æå®ããã 190 * ããããã£ã³ã¼ãããã¼ã¿ãµã¤ãºããã¼ã¿ãé»æã«è¨å®ããã 191 * ä½æããé»æã®å 192 é ã¢ãã¬ã¹ã¯ãã¤ã³ã¿çµç±ã§è¿ãããã 150 * プロパティ値書き込み要求(応答要)電文を作成する。 151 * 電文はdeojで指定したECHONETオブジェクトを宛先とし、 152 * 電文の初めのプロパティ値として、epcとpdc、p_edtで指定された 153 * プロパティコード、データサイズ、データを電文に設定する。 154 * 作成した電文の先頭アドレスはポインタ経由で返される。 193 155 */ 194 156 ER ecn_esv_setc(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc, uint8_t fa_pdc, … … 199 161 200 162 /* 201 * ããããã£å¤èªã¿åºãè¦æ±é»æä½æ 202 * å¼æ° 203 * T_EDATA **ppk_esv åå¾ããé»æã®æ ¼ç´å 204 205 * ID fa_deoj å®å 206 ã®ECHONETãªãã¸ã§ã¯ãID 207 * uint8_t fa_epc ããããã£ã³ã¼ã 163 * プロパティ値読み出し要求電文作成 164 * 引数 165 * T_EDATA **ppk_esv 取得した電文の格納先 166 * ID fa_deoj 宛先のECHONETオブジェクトID 167 * uint8_t fa_epc プロパティコード 208 168 * 209 * ããããã£å¤èªã¿åºãè¦æ±é»æãä½æããã 210 * é»æã¯deojã§æå®ããECHONETãªãã¸ã§ã¯ããå®å 211 ã¨ãã 212 * é»æã®åãã®ããããã£å¤ã¨ãã¦ãepcã§æå®ããã 213 * ããããã£ã³ã¼ããé»æã«è¨å®ããã 214 * ä½æããé»æã®å 215 é ã¢ãã¬ã¹ã¯ãã¤ã³ã¿çµç±ã§è¿ãããã 169 * プロパティ値読み出し要求電文を作成する。 170 * 電文はdeojで指定したECHONETオブジェクトを宛先とし、 171 * 電文の初めのプロパティ値として、epcで指定された 172 * プロパティコードを電文に設定する。 173 * 作成した電文の先頭アドレスはポインタ経由で返される。 216 174 */ 217 175 ER ecn_esv_get(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc) … … 221 179 222 180 /* 223 * ããããã£å¤éç¥è¦æ±é»æä½æ 224 * å¼æ° 225 * T_EDATA **ppk_esv åå¾ããé»æã®æ ¼ç´å 226 227 * ID fa_deoj å®å 228 ã®ECHONETãªãã¸ã§ã¯ãID 229 * uint8_t fa_epc ããããã£ã³ã¼ã 181 * プロパティ値通知要求電文作成 182 * 引数 183 * T_EDATA **ppk_esv 取得した電文の格納先 184 * ID fa_deoj 宛先のECHONETオブジェクトID 185 * uint8_t fa_epc プロパティコード 230 186 * 231 * ããããã£å¤éç¥è¦æ±é»æãä½æããã 232 * é»æã¯deojã§æå®ããECHONETãªãã¸ã§ã¯ããå®å 233 ã¨ãã 234 * é»æã®åãã®ããããã£å¤ã¨ãã¦ãepcã§æå®ããã 235 * ããããã£ã³ã¼ããé»æã«è¨å®ããã 236 * ä½æããé»æã®å 237 é ã¢ãã¬ã¹ã¯ãã¤ã³ã¿çµç±ã§è¿ãããã 187 * プロパティ値通知要求電文を作成する。 188 * 電文はdeojで指定したECHONETオブジェクトを宛先とし、 189 * 電文の初めのプロパティ値として、epcで指定された 190 * プロパティコードを電文に設定する。 191 * 作成した電文の先頭アドレスはポインタ経由で返される。 238 192 */ 239 193 ER ecn_esv_inf_req(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc) … … 243 197 244 198 /* 245 * ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãè¦æ±é»æä½æ 246 * å¼æ° 247 * T_EDATA **ppk_esv åå¾ããé»æã®æ ¼ç´å 248 249 * ID fa_deoj å®å 250 ã®ECHONETãªãã¸ã§ã¯ãID 251 * uint8_t fa_epc ããããã£ã³ã¼ã 252 * uint8_t fa_pdc ããããã£å¤ãã¼ã¿ãµã¤ãº 253 * const void *p_edt ããããã£å¤ãã¼ã¿ 199 * プロパティ値書き込み・読み出し要求電文作成 200 * 引数 201 * T_EDATA **ppk_esv 取得した電文の格納先 202 * ID fa_deoj 宛先のECHONETオブジェクトID 203 * uint8_t fa_epc プロパティコード 204 * uint8_t fa_pdc プロパティ値データサイズ 205 * const void *p_edt プロパティ値データ 254 206 * 255 * ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãè¦æ±é»æãä½æããã 256 * é»æã¯deojã§æå®ããECHONETãªãã¸ã§ã¯ããå®å 257 ã¨ãã 258 * é»æã®åãã®ããããã£å¤ã¨ãã¦ãepcã¨pdcãp_edtã§æå®ããã 259 * ããããã£ã³ã¼ãããã¼ã¿ãµã¤ãºããã¼ã¿ãé»æã«è¨å®ããã 260 * ä½æããé»æã®å 261 é ã¢ãã¬ã¹ã¯ãã¤ã³ã¿çµç±ã§è¿ãããã 207 * プロパティ値書き込み・読み出し要求電文を作成する。 208 * 電文はdeojで指定したECHONETオブジェクトを宛先とし、 209 * 電文の初めのプロパティ値として、epcとpdc、p_edtで指定された 210 * プロパティコード、データサイズ、データを電文に設定する。 211 * 作成した電文の先頭アドレスはポインタ経由で返される。 262 212 */ 263 213 ER ecn_esv_set_get(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc, uint8_t fa_pdc, … … 268 218 269 219 /* 270 * ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãè¦æ±é»æä½æï¼æãè¿ãæå® 271 * ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãè¦æ±é»æä½æä¸ã®ãæ¸ãè¾¼ã¿ããããã£é 272 åãçµã㦠273 * èªã¿åºãããããã£é 274 åã«ç§»ãæã«ç¨ããã 220 * プロパティ値書き込み・読み出し要求電文作成:折り返し指定 221 * プロパティ値書き込み・読み出し要求電文作成中の、書き込みプロパティ配列を終えて 222 * 読み出しプロパティ配列に移る時に用いる。 275 223 */ 276 224 ER ecn_trn_set_get(mrb_state *mrb, T_EDATA *ppk_esv, int *p_trn_pos) … … 283 231 return E_PAR; 284 232 285 /* ããããã£èªã¿è¾¼ã¿ä»¶æ°æ¸ãè¾¼ã¿æã®ãããæ 286 å ±ãè¨é² */ 233 /* プロパティ読み込み件数書き込み時のヘッド情報を記録 */ 287 234 *p_trn_pos = _ecn_fbs_get_datalen(*(ECN_FBS_ID *)&ppk_esv); 288 235 289 /* å¿çé»æç¨ã¡ã¢ãªã«ãã¼ã¿è¿½å ã»ãã®æç¹ã§ã®å¿çé»æä¸ããããã£ä»¶æ°ãè¨é²*/236 /* 応答電文用メモリにデータ追加・この時点での応答電文中プロパティ件数を記録 */ 290 237 a_ret = _ecn_fbs_add_data_ex(mrb, *(ECN_FBS_ID *)&ppk_esv, &ppk_esv->hdr.edata.opc, 1); 291 238 if (a_ret) { … … 294 241 } 295 242 296 /* å¿çé»æä¸ããããã£ä»¶æ°ã 0 ã«æ»ãï¼ä»å¾ãçµäºæå®ããã¾ã§ã¯èªã¿åºãããããã£ä»¶æ°ã«ãªãï¼*/243 /* 応答電文中プロパティ件数を 0 に戻す(今後、終了指定するまでは読み出しプロパティ件数になる) */ 297 244 ppk_esv->hdr.edata.opc = 0; 298 245 … … 301 248 302 249 /* 303 * ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãè¦æ±é»æä½æï¼çµäºæå® 304 * ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãè¦æ±é»æä½æä¸ã®ãèªã¿åºãããããã£é 305 åãçµããæã«ç¨ããã 250 * プロパティ値書き込み・読み出し要求電文作成:終了指定 251 * プロパティ値書き込み・読み出し要求電文作成中の、読み出しプロパティ配列を終える時に用いる。 306 252 */ 307 253 ER ecn_end_set_get(mrb_state *mrb, T_EDATA *ppk_esv, int fa_trn_pos) … … 314 260 return E_PAR; 315 261 316 /* ãã®æç¹ã§ã®å¿çé»æä¸ããããã£ä»¶æ°(èªã¿åºãããããã£ä»¶æ°)ãä¿æ*/262 /* この時点での応答電文中プロパティ件数(読み出しプロパティ件数)を保持 */ 317 263 a_rd_opc = ppk_esv->hdr.edata.opc; 318 264 319 /* å¿çé»æä¸ããããã£ä»¶æ°(æ¸ãè¾¼ã¿ããããã£ä»¶æ°)ãä¿åä½ç½®ããèªã¿åã*/265 /* 応答電文中プロパティ件数(書き込みプロパティ件数)を保存位置から読み取り */ 320 266 a_wr_opc = _ecn_fbs_peek(mrb, *(ECN_FBS_ID *)&ppk_esv, fa_trn_pos); 321 267 if (a_wr_opc < 0) { … … 324 270 } 325 271 326 /* å¿çé»æä¸ããããã£ä»¶æ°(æ¸ãè¾¼ã¿ããããã£ä»¶æ°)ã復å 327 */ 272 /* 応答電文中プロパティ件数(書き込みプロパティ件数)を復元 */ 328 273 ppk_esv->hdr.edata.opc = (uint8_t)a_wr_opc; 329 274 330 /* å¿çé»æä¸ããããã£ä»¶æ°(èªã¿åºãããããã£ä»¶æ°)ãä¿åä½ç½®ã«æ¸ãè¾¼ã¿*/275 /* 応答電文中プロパティ件数(読み出しプロパティ件数)を保存位置に書き込み */ 331 276 a_ret = _ecn_fbs_poke(mrb, *(ECN_FBS_ID *)&ppk_esv, fa_trn_pos, a_rd_opc); 332 277 if (a_ret) { … … 339 284 340 285 /* 341 * ããããã£å¤éç¥ï¼å¿çè¦ï¼é»æä½æ 342 * å¼æ° 343 * T_EDATA **ppk_esv åå¾ããé»æã®æ ¼ç´å 344 345 * ID fa_deoj å®å 346 ã®ECHONETãªãã¸ã§ã¯ãID 347 * ID fa_seoj éä¿¡å 348 ã®ECHONETãªãã¸ã§ã¯ãID 349 * uint8_t fa_sepc éä¿¡å 350 ã®ããããã£ã³ã¼ã 286 * プロパティ値通知(応答要)電文作成 287 * 引数 288 * T_EDATA **ppk_esv 取得した電文の格納先 289 * ID fa_deoj 宛先のECHONETオブジェクトID 290 * ID fa_seoj 送信元のECHONETオブジェクトID 291 * uint8_t fa_sepc 送信元のプロパティコード 351 292 */ 352 293 ER ecn_esv_infc(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID fa_deoj, ID fa_seoj, uint8_t fa_sepc) … … 356 297 357 298 /* 358 * è¦æ±é»æã¸ã®ããããã£æå®è¿½å (ããããã£ãã¼ã¿ãä»éããªãå ´åã«ç¨ãã)299 * 要求電文へのプロパティ指定追加 (プロパティデータが付随しない場合に用いる) 359 300 */ 360 301 ER ecn_add_epc(mrb_state *mrb, T_EDATA *pk_esv, uint8_t epc) … … 364 305 365 306 /* 366 * è¦æ±é»æã¸ã®ããããã£ãã¼ã¿è¿½å (ããããã£ããã³ä»éãã¼ã¿ã追å ãã)307 * 要求電文へのプロパティデータ追加 (プロパティおよび付随データを追加する) 367 308 */ 368 309 ER ecn_add_edt(mrb_state *mrb, T_EDATA *pk_esv, uint8_t fa_epc, uint8_t fa_pdc, const void *p_edt) … … 373 314 374 315 if (!pk_esv) 375 return E_PAR; /* åå¾ããFBS_IDã®æ ¼ç´å 376 ãNULL */ 316 return E_PAR; /* 取得したFBS_IDの格納先がNULL */ 377 317 if (ECHONET_MEMPOOL_BLOCK_SIZE <= fa_pdc) 378 return E_PAR; /* ããããã£å¤ãµã¤ãºã大ãããã*/318 return E_PAR; /* プロパティ値サイズが大きすぎる */ 379 319 if (!p_edt && 0 < fa_pdc) 380 return E_PAR; /* ããããã£å¤ãµã¤ãºã1以ä¸ãªã®ã«ãã¼ã¿ãã¤ã³ã¿ãNULL */320 return E_PAR; /* プロパティ値サイズが1以上なのにデータポインタがNULL */ 381 321 382 322 a_fbs_id.ptr = (T_ECN_FST_BLK *)pk_esv; 383 323 if (((T_EDATA *)a_fbs_id.ptr)->hdr.edata.opc == 0xFF) 384 return E_PAR; /* ããããã£ãå¤ããã*/385 386 /* è¦æ±é»æç¨ã¡ã¢ãªã«ãã¼ã¿è¿½å*/324 return E_PAR; /* プロパティが多すぎる */ 325 326 /* 要求電文用メモリにデータ追加 */ 387 327 memset(&a_ecn_prp, 0, sizeof(a_ecn_prp)); 388 328 a_ecn_prp.epc = fa_epc; … … 395 335 } 396 336 if (0 < fa_pdc) { 397 /* ä»éãã¼ã¿è¿½å*/337 /* 付随データ追加 */ 398 338 a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_id, p_edt, fa_pdc); 399 339 if (a_ret) { … … 403 343 } 404 344 } 405 /* ããããã£æ°ã¤ã³ã¯ãªã¡ã³ã*/345 /* プロパティ数インクリメント */ 406 346 ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.opc++; 407 347 … … 411 351 412 352 /* 413 * è¦æ±é»æã®éä¿¡ 414 * esvã§æå®ãããè¦æ±é»æãéä¿¡ããã 415 * é»æã«æå®ãããå®å 416 ããéä¿¡ã¬ã¤ã¤ã¼ã¢ãã¬ã¹ãç¹å®ããUDPãã±ããã¨ãã¦éä¿¡ããã 353 * 要求電文の送信 354 * esvで指定された要求電文を送信する。 355 * 電文に指定された宛先から通信レイヤーアドレスを特定し、UDPパケットとして送信する。 417 356 */ 418 357 ER ecn_snd_esv(ecnl_svc_task_t *svc, T_EDATA *pk_esv) … … 424 363 425 364 /* 426 * å¿çé»æã®åä¿¡ãã¼ãªã³ã° 427 * å¿çé»æãåä¿¡ããã®ãå¾ 428 ã¤ã 429 * åä¿¡ããå¿çé»æã¯ppk_esvã§æå®ãããã¤ã³ã¿ã¼ã«å 430 é ã¢ãã¬ã¹ãè¿ãããã 431 * å¿çé»æã®åä¿¡ã®æç¡ã«ããããããå¾ 432 ããã«é¢æ°ãæããã 365 * 応答電文の受信ポーリング 366 * 応答電文を受信するのを待つ。 367 * 受信した応答電文はppk_esvで指定したポインターに先頭アドレスが返される。 368 * 応答電文の受信の有無にかかわらず、待たずに関数を抜ける。 433 369 */ 434 370 ER ecn_prcv_esv(ecnl_svc_task_t *svc, T_EDATA **ppk_esv) … … 451 387 452 388 /* 453 * å¿çé»æã®ç ´æ£389 * 応答電文の破棄 454 390 */ 455 391 ER ecn_rel_esv(mrb_state *mrb, T_EDATA *pk_esv) … … 464 400 465 401 /* 466 * å¿çé»æã®éä¿¡å 467 ãã¼ããåå¾ãã 402 * 応答電文の送信元ノードを取得する 468 403 */ 469 404 ID ecn_get_enod(ecnl_svc_task_t *svc, T_EDATA *pk_esv) … … 487 422 488 423 /* 489 * å¿çé»æã®éä¿¡å 490 æ©å¨ãªãã¸ã§ã¯ããåå¾ãã 424 * 応答電文の送信元機器オブジェクトを取得する 491 425 */ 492 426 ID ecn_get_eobj(ecnl_svc_task_t *svc, T_EDATA *pk_esv) … … 499 433 p_snod = _ecn_eno_fnd(svc, ((T_ECN_FST_BLK *)pk_esv)->hdr.sender.id); 500 434 if (p_snod != NULL) { 501 /* ãã¼ããããã¡ã¤ã«ã®å ´å*/435 /* ノードプロファイルの場合 */ 502 436 if ((p_esv->edata.seoj.eojx1 == EOJ_X1_PROFILE) 503 437 && (p_esv->edata.seoj.eojx2 == EOJ_X2_NODE_PROFILE)) { 504 438 p_sobj = p_snod->profile; 505 439 } 506 /* æ©å¨ãªãã¸ã§ã¯ãã®å ´å*/440 /* 機器オブジェクトの場合 */ 507 441 else { 508 442 p_sobj = _ecn_eoj_fnd(p_snod, &p_esv->edata.seoj); … … 520 454 521 455 /* 522 * å¿çé»æ解æã¤ãã¬ã¼ã¿ã¼åæå456 * 応答電文解析イテレーター初期化 523 457 */ 524 458 ER ecn_itr_ini(T_ENUM_EPC *pk_itr, T_EDATA *pk_esv) … … 532 466 pk_itr->pk_esv = pk_esv; 533 467 pk_itr->count = pk_esv->hdr.edata.opc; 534 /* ä»ã®ãããã¯ã§ã®ããããã£ç·æ°*/535 pk_itr->got_ct = 0; /* ä»ã®ãããã¯ã§ãèªã¿åã£ãæ°*/536 pk_itr->next_blk_ct = 0; /* å¾ç¶ãããã¯æ°*/537 pk_itr->is_eof = 0; /* çµç«¯ã«éããæãé0 */468 /* 今のブロックでのプロパティ総数 */ 469 pk_itr->got_ct = 0; /* 今のブロックで、読み取った数 */ 470 pk_itr->next_blk_ct = 0; /* 後続ブロック数 */ 471 pk_itr->is_eof = 0; /* 終端に達した時、非0 */ 538 472 pk_itr->cur = offsetof(T_ECN_EDT_HDR, ecn_prp); 539 473 540 474 switch (pk_esv->hdr.edata.esv) { 541 case ESV_SET_GET: /* 0x6E ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãè¦æ±*/542 case ESV_SET_GET_RES: /* 0x7E ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãå¿ç*/543 case ESV_SET_GET_SNA: /* 0x5E ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãä¸å¯å¿ç*/475 case ESV_SET_GET: /* 0x6E プロパティ値書き込み・読み出し要求 */ 476 case ESV_SET_GET_RES: /* 0x7E プロパティ値書き込み・読み出し応答 */ 477 case ESV_SET_GET_SNA: /* 0x5E プロパティ値書き込み・読み出し不可応答 */ 544 478 pk_itr->next_blk_ct ++; 545 479 default: … … 551 485 552 486 /* 553 * å¿çé»æ解æã¤ãã¬ã¼ã¿ã¼ã¤ã³ã¯ãªã¡ã³ã487 * 応答電文解析イテレーターインクリメント 554 488 */ 555 489 ER ecn_itr_nxt(mrb_state *mrb, T_ENUM_EPC *pk_itr, uint8_t *p_epc, uint8_t *p_pdc, void *p_edt) … … 571 505 572 506 if (pk_itr->is_eof) 573 return E_BOVR; /* ãã¼ã¿çµäº*/507 return E_BOVR; /* データ終了 */ 574 508 if (pk_itr->count <= pk_itr->got_ct && pk_itr->next_blk_ct < 1) { 575 pk_itr->is_eof = 1; /* çµç«¯ã«éããæãé0 */576 return E_BOVR; /* ãã¼ã¿çµäº*/509 pk_itr->is_eof = 1; /* 終端に達した時、非0 */ 510 return E_BOVR; /* データ終了 */ 577 511 } 578 512 579 513 a_fbs_id.ptr = (T_ECN_FST_BLK *)pk_itr->pk_esv; 580 514 581 /* å 582 ã®ã«ã¼ã½ã«ä½ç½®ãä¿åããã¤ãã¬ã¼ã¿ã®ã«ã¼ã½ã«ä½ç½®ã«ãã */ 515 /* 元のカーソル位置を保存し、イテレータのカーソル位置にする */ 583 516 a_rd_bak = a_fbs_id.ptr->hdr.rd; 584 517 a_fbs_id.ptr->hdr.rd = pk_itr->cur; … … 588 521 #endif 589 522 if (pk_itr->count <= pk_itr->got_ct && 0 < pk_itr->next_blk_ct) { 590 /* 次ãããã¯ã«ç§»å*/523 /* 次ブロックに移動 */ 591 524 pk_itr->next_blk_ct --; 592 pk_itr->count = 0; /* ä»ã®ãããã¯ã§ã®ããããã£ç·æ°*/593 pk_itr->got_ct = 0; /* ä»ã®ãããã¯ã§ãèªã¿åã£ãæ°*/594 595 /* 次ãããã¯ã®ããããã£æ°ãèªã¿åã*/525 pk_itr->count = 0; /* 今のブロックでのプロパティ総数 */ 526 pk_itr->got_ct = 0; /* 今のブロックで、読み取った数 */ 527 528 /* 次ブロックのプロパティ数を読み取る */ 596 529 a_rd_len = 0; 597 530 a_ret = _ecn_fbs_get_data(mrb, a_fbs_id, &a_ecn_prp.pdc, 1, &a_rd_len); … … 599 532 goto lb_except; 600 533 if (0 < a_rd_len) { 601 pk_itr->count = a_ecn_prp.pdc; /* ä»ã®ãããã¯ã§ã®ããããã£ç·æ°*/534 pk_itr->count = a_ecn_prp.pdc; /* 今のブロックでのプロパティ総数 */ 602 535 } 603 a_ret = E_BOVR; /* ãã¼ã¿çµäº*/536 a_ret = E_BOVR; /* データ終了 */ 604 537 goto lb_finally; 605 538 } 606 539 607 /* ããããã£ã³ã¼ãã¨ãã¼ã¿ãµã¤ãºãèªã¿åã*/540 /* プロパティコードとデータサイズを読み取る */ 608 541 memset(&a_ecn_prp, 0, sizeof(a_ecn_prp)); 609 542 a_rd_len = 0; … … 613 546 if (a_rd_len < sizeof(a_ecn_prp)) { 614 547 ECN_DBG_PUT_1("ecn_itr_nxt() ecn_prp read fault. rd.cur=%d", pk_itr->cur); 615 pk_itr->is_eof = 1; /* çµç«¯ã«éããæãé0 */616 a_ret = E_BOVR; /* ãã¼ã¿çµäº*/548 pk_itr->is_eof = 1; /* 終端に達した時、非0 */ 549 a_ret = E_BOVR; /* データ終了 */ 617 550 goto lb_finally; 618 551 } … … 627 560 } 628 561 else { 629 /* ä»éãã¼ã¿ãèªã¿åã*/562 /* 付随データを読み取る */ 630 563 a_rd_len = 0; 631 564 a_ret = _ecn_fbs_get_data(mrb, a_fbs_id, p_edt, a_ecn_prp.pdc, &a_rd_len); … … 635 568 ECN_DBG_PUT_3("ecn_itr_nxt() edt read fault. rd.cur=%d,epc=0x%02X,pdc=%u", 636 569 pk_itr->cur, a_ecn_prp.epc , a_ecn_prp.pdc); 637 pk_itr->is_eof = 1; /* çµç«¯ã«éããæãé0 */638 a_ret = E_BOVR; /* ãã¼ã¿çµäº*/570 pk_itr->is_eof = 1; /* 終端に達した時、非0 */ 571 a_ret = E_BOVR; /* データ終了 */ 639 572 goto lb_finally; 640 573 } … … 648 581 649 582 lb_finally: 650 /* ã¤ãã¬ã¼ã¿ã®ã«ã¼ã½ã«ä½ç½®ãæ´æ°*/583 /* イテレータのカーソル位置を更新 */ 651 584 pk_itr->cur = a_fbs_id.ptr->hdr.rd; 652 585 653 586 lb_except: 654 /* å 655 ã®ã«ã¼ã½ã«ä½ç½®ã«æ»ã */ 587 /* 元のカーソル位置に戻す */ 656 588 a_fbs_id.ptr->hdr.rd = a_rd_bak; 657 589 return a_ret; … … 659 591 660 592 /* 661 * å¿çé»æå¾ 662 ã¡ã®å²ãè¾¼ã¿éä¿¡ 593 * 応答電文待ちの割り込み送信 663 594 */ 664 595 ER ecn_brk_wai(ecnl_svc_task_t *svc, const void *p_dat, int fa_datsz) 665 596 { 666 597 ER a_ret; 667 ECN_FBS_ID a_fbs_id = { 0 }; /* è¦æ±é»æç¨ã¡ã¢ãª */ 668 669 /* å¿çé»æå¾ 670 ã¡ã®å²ãè¾¼ã¿é»æä½æ */ 598 ECN_FBS_ID a_fbs_id = { 0 }; /* 要求電文用メモリ */ 599 600 /* 応答電文待ちの割り込み電文作成 */ 671 601 a_ret = _ecn_mk_brk_wai(svc, &a_fbs_id, p_dat, fa_datsz); 672 602 if (a_ret) 673 603 return a_ret; 674 604 675 /* å²ãè¾¼ã¿éä¿¡*/605 /* 割り込み送信 */ 676 606 a_ret = _ecn_tsk_snd_mbx(svc, a_fbs_id, true); 677 607 if (a_ret) { … … 681 611 } 682 612 683 /* æ£å¸¸çµäº*/613 /* 正常終了 */ 684 614 return a_ret; 685 615 686 616 lb_except: 687 /* ãã¼ã¿ä½æ失æãããé å解æ¾*/617 /* データ作成失敗したら領域解放 */ 688 618 if (a_fbs_id.ptr) 689 619 _ecn_fbs_del(svc->mrb, a_fbs_id); … … 693 623 694 624 /* 695 * å²ãè¾¼ã¿ãã¼ã¿ã®åå¾625 * 割り込みデータの取得 696 626 */ 697 627 ER ecn_get_brk_dat(mrb_state *mrb, T_EDATA *pk_esv, void *p_buf, int fa_bufsz, int *p_datsz) … … 713 643 } 714 644 715 /* èªã¿åãä½ç½®ãå 716 é ã«æ»ã */ 645 /* 読み取り位置を先頭に戻す */ 717 646 a_ret = _ecn_fbs_set_rpos(a_fbs, 0); 718 647 if (a_ret) { … … 722 651 } 723 652 724 /* ä»éãã¼ã¿ãèªã¿è¾¼ã*/653 /* 付随データを読み込む */ 725 654 if (p_buf && 0 < fa_bufsz) { 726 655 a_len = 0; … … 739 668 #ifndef ECN_USER_DATA_PROP_SET 740 669 /* 741 * ãã¼ã¿è¨å®é¢æ°670 * データ設定関数 742 671 */ 743 672 int ecn_data_prop_set(ecnl_svc_task_t *svc, const EPRPINIB *item, const void *src, int size, bool_t *anno) … … 757 686 #ifndef ECN_USER_DATA_PROP_GET 758 687 /* 759 * ãã¼ã¿åå¾é¢æ°688 * データ取得関数 760 689 */ 761 690 int ecn_data_prop_get(ecnl_svc_task_t *svc, const EPRPINIB *item, void *dst, int size) -
EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 6 * ä¸è¨èä½æ¨©è 7 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 8 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 9 * å¤ã»åé 10 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 11 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 12 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 13 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 14 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 15 * ç¨ã§ããå½¢ã§åé 16 å¸ããå ´åã«ã¯ï¼åé 17 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 18 * è 19 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 20 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 21 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 * ç¨ã§ããªãå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 24 * ã¨ï¼ 25 * (a) åé 26 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 27 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 28 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 29 * (b) åé 30 å¸ã®å½¢æ 31 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 32 * å ±åãããã¨ï¼ 33 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 34 * 害ãããï¼ä¸è¨èä½æ¨©è 35 ããã³TOPPERSããã¸ã§ã¯ããå 36 責ãããã¨ï¼ 37 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 38 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ãã 40 * å 41 責ãããã¨ï¼ 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 8 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 9 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 10 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 11 * スコード中に含まれていること. 12 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 13 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 14 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 15 * の無保証規定を掲載すること. 16 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 17 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 18 * と. 19 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 20 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 21 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 22 * 報告すること. 23 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 24 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 25 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 * 免責すること. 42 28 * 43 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 44 ã 45 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 46 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 47 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 48 * ã®è²¬ä»»ãè² ããªãï¼ 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 49 34 * 50 35 */ … … 64 49 65 50 #ifndef TOPPERS_T_STDDEF_H 66 typedef char bool_t; /* çå½å¤*/67 68 typedef signed int int_t; /* èªç¶ãªãµã¤ãºã®ç¬¦å·ä»ãæ´æ°*/69 typedef unsigned int uint_t; /* èªç¶ãªãµã¤ãºã®ç¬¦å·ç¡ãæ´æ°*/70 71 typedef int_t ER; /* ã¨ã©ã¼ã³ã¼ã*/72 typedef int_t ID; /* ãªãã¸ã§ã¯ãã®IDçªå·*/73 typedef uint_t ATR; /* ãªãã¸ã§ã¯ãã®å±æ§*/74 typedef int_t TMO; /* ã¿ã¤ã ã¢ã¦ãæå®*/51 typedef char bool_t; /* 真偽値 */ 52 53 typedef signed int int_t; /* 自然なサイズの符号付き整数 */ 54 typedef unsigned int uint_t; /* 自然なサイズの符号無し整数 */ 55 56 typedef int_t ER; /* エラーコード */ 57 typedef int_t ID; /* オブジェクトのID番号 */ 58 typedef uint_t ATR; /* オブジェクトの属性 */ 59 typedef int_t TMO; /* タイムアウト指定 */ 75 60 76 61 #ifndef NULL 77 #define NULL 0 /* ç¡å¹ãã¤ã³ã¿*/62 #define NULL 0 /* 無効ポインタ */ 78 63 #endif /* NULL */ 79 64 80 65 #ifndef true 81 #define true 1 /* ç*/66 #define true 1 /* 真 */ 82 67 #endif /* true */ 83 68 84 69 #ifndef false 85 #define false 0 /* å½*/70 #define false 0 /* 偽 */ 86 71 #endif /* false */ 87 72 88 #define E_OK 0 /* æ£å¸¸çµäº */ 89 90 #define E_SYS (-5) /* ã·ã¹ãã ã¨ã©ã¼ */ 91 #define E_PAR (-17) /* ãã©ã¡ã¼ã¿ã¨ã©ã¼ */ 92 #define E_NOMEM (-33) /* ã¡ã¢ãªä¸è¶³ */ 93 #define E_OBJ (-41) /* ãªãã¸ã§ã¯ãç¶æ 94 ã¨ã©ã¼ */ 95 #define E_NOEXS (-42) /* ãªãã¸ã§ã¯ãæªçæ */ 96 #define E_TMOUT (-50) /* ãã¼ãªã³ã°å¤±æã¾ãã¯ã¿ã¤ã ã¢ã¦ã */ 97 #define E_BOVR (-58) /* ãããã¡ãªã¼ãã¼ããã¼ */ 98 #define E_BRK (-100) /* ã¦ã¼ã¶ã¼ã«ããä¸æ */ 99 100 #define TMO_FEVR (-1) /* æ°¸ä¹ 101 å¾ 102 ã¡ */ 73 #define E_OK 0 /* 正常終了 */ 74 75 #define E_SYS (-5) /* システムエラー */ 76 #define E_PAR (-17) /* パラメータエラー */ 77 #define E_NOMEM (-33) /* メモリ不足 */ 78 #define E_OBJ (-41) /* オブジェクト状態エラー */ 79 #define E_NOEXS (-42) /* オブジェクト未生成 */ 80 #define E_TMOUT (-50) /* ポーリング失敗またはタイムアウト */ 81 #define E_BOVR (-58) /* バッファオーバーフロー */ 82 #define E_BRK (-100) /* ユーザーによる中断 */ 83 84 #define TMO_FEVR (-1) /* 永久待ち */ 103 85 #endif 104 86 105 87 #define EOBJ_NULL 0x00 106 #define EOBJ_LOCAL_NODE 0x01 /* èªãã¼ã*/107 #define EOBJ_SYNC_REMOTE_NODE 0x02 /* ä»ãã¼ã*/108 #define EOBJ_ASYNC_REMOTE_NODE 0x04 /* ä»ãã¼ãï¼éåæï¼*/109 #define EOBJ_DEVICE 0x08 /* æ©å¨ãªãã¸ã§ã¯ã*/88 #define EOBJ_LOCAL_NODE 0x01 /* 自ノード */ 89 #define EOBJ_SYNC_REMOTE_NODE 0x02 /* 他ノード */ 90 #define EOBJ_ASYNC_REMOTE_NODE 0x04 /* 他ノード(非同期) */ 91 #define EOBJ_DEVICE 0x08 /* 機器オブジェクト */ 110 92 111 93 #define EPC_NONE 0x00 112 #define EPC_RULE_SET 0x01 /* ã¢ã¯ã»ã¹ã«ã¼ã« Set */ 113 #define EPC_RULE_GET 0x02 /* ã¢ã¯ã»ã¹ã«ã¼ã« Get */ 114 #define EPC_RULE_ANNO 0x04 /* ã¢ã¯ã»ã¹ã«ã¼ã« Anno */ 115 #define EPC_ANNOUNCE 0x40 /* ç¶æ 116 å¤åæéç¥ */ 117 #define EPC_VARIABLE 0x80 /* å¯å¤é·ãã¼ã¿ */ 94 #define EPC_RULE_SET 0x01 /* アクセスルール Set */ 95 #define EPC_RULE_GET 0x02 /* アクセスルール Get */ 96 #define EPC_RULE_ANNO 0x04 /* アクセスルール Anno */ 97 #define EPC_ANNOUNCE 0x40 /* 状態変化時通知 */ 98 #define EPC_VARIABLE 0x80 /* 可変長データ */ 118 99 119 100 typedef enum _echonet_enod_id 120 101 { 121 ENOD_NOT_MATCH_ID = -1, /* ã¢ãã¬ã¹IDç»é²ãªã*/122 ENOD_MULTICAST_ID = 0, /* ãã«ããã£ã¹ãã¢ãã¬ã¹ID */123 ENOD_LOCAL_ID = 1, /* èªãã¼ãã¢ãã¬ã¹ID */124 ENOD_API_ID = 2, /* API ã¢ãã¬ã¹ID */125 ENOD_REMOTE_ID = 3, /* ä»ãã¼ãã¢ãã¬ã¹ID */102 ENOD_NOT_MATCH_ID = -1, /* アドレスID登録なし */ 103 ENOD_MULTICAST_ID = 0, /* マルチキャストアドレスID */ 104 ENOD_LOCAL_ID = 1, /* 自ノードアドレスID */ 105 ENOD_API_ID = 2, /* APIアドレスID */ 106 ENOD_REMOTE_ID = 3, /* 他ノードアドレスID */ 126 107 } ECN_ENOD_ID; 127 108 128 /* ECHONET Lite è¦æ ¼*/109 /* ECHONET Lite規格 */ 129 110 typedef enum 130 111 { … … 132 113 } ECN_EHD1_ECL_VERSION; 133 114 134 /* é»æå½¢å¼1/2 */115 /* 電文形式1/2 */ 135 116 typedef enum 136 117 { 137 ECN_EDH2_FORMAT_1 = 0x81, /* é»æå½¢å¼1 */138 ECN_EDH2_FORMAT_2 = 0x82 /* é»æå½¢å¼2 */118 ECN_EDH2_FORMAT_1 = 0x81, /* 電文形式1 */ 119 ECN_EDH2_FORMAT_2 = 0x82 /* 電文形式2 */ 139 120 } ECN_EHD2_FORMAT; 140 121 141 /* ECHONET Lite ãµã¼ãã¹ã³ã¼ã*/122 /* ECHONET Liteサービスコード */ 142 123 typedef enum _echonet_service_code 143 124 { 144 ESV_NOP = 0, /* ( æ©è½æå®ãªã) */145 ESV_SET_I = 0x60, /* ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ï¼å¿çä¸è¦ï¼*/146 ESV_SET_C = 0x61, /* ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ï¼å¿çè¦ï¼*/147 ESV_GET = 0x62, /* ããããã£å¤èªã¿åºãè¦æ±*/148 ESV_INF_REQ = 0x63, /* ããããã£å¤éç¥è¦æ±*/149 ESV_SET_GET = 0x6E, /* ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãè¦æ±*/150 ESV_SET_RES = 0x71, /* ããããã£å¤æ¸ãè¾¼ã¿å¿ç*/151 ESV_GET_RES = 0x72, /* ããããã£å¤èªã¿åºãå¿ç*/152 ESV_INF = 0x73, /* ããããã£å¤éç¥*/153 ESV_INFC = 0x74, /* ããããã£å¤éç¥ï¼å¿çè¦ï¼*/154 ESV_INFC_RES = 0x7A, /* ããããã£å¤éç¥å¿ç*/155 ESV_SET_GET_RES = 0x7E, /* ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãå¿ç*/156 ESV_SET_I_SNA = 0x50, /* ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ä¸å¯å¿ç*/157 ESV_SET_C_SNA = 0x51, /* ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ä¸å¯å¿ç*/158 ESV_GET_SNA = 0x52, /* ããããã£å¤èªã¿åºãä¸å¯å¿ç*/159 ESV_INF_SNA = 0x53, /* ããããã£å¤éç¥ä¸å¯å¿ç*/160 ESV_SET_GET_SNA = 0x5E /* ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãä¸å¯å¿ç*/125 ESV_NOP = 0, /* (機能指定なし) */ 126 ESV_SET_I = 0x60, /* プロパティ値書き込み要求(応答不要) */ 127 ESV_SET_C = 0x61, /* プロパティ値書き込み要求(応答要) */ 128 ESV_GET = 0x62, /* プロパティ値読み出し要求 */ 129 ESV_INF_REQ = 0x63, /* プロパティ値通知要求 */ 130 ESV_SET_GET = 0x6E, /* プロパティ値書き込み・読み出し要求 */ 131 ESV_SET_RES = 0x71, /* プロパティ値書き込み応答 */ 132 ESV_GET_RES = 0x72, /* プロパティ値読み出し応答 */ 133 ESV_INF = 0x73, /* プロパティ値通知 */ 134 ESV_INFC = 0x74, /* プロパティ値通知(応答要) */ 135 ESV_INFC_RES = 0x7A, /* プロパティ値通知応答 */ 136 ESV_SET_GET_RES = 0x7E, /* プロパティ値書き込み・読み出し応答 */ 137 ESV_SET_I_SNA = 0x50, /* プロパティ値書き込み要求不可応答 */ 138 ESV_SET_C_SNA = 0x51, /* プロパティ値書き込み要求不可応答 */ 139 ESV_GET_SNA = 0x52, /* プロパティ値読み出し不可応答 */ 140 ESV_INF_SNA = 0x53, /* プロパティ値通知不可応答 */ 141 ESV_SET_GET_SNA = 0x5E /* プロパティ値書き込み・読み出し不可応答 */ 161 142 } ECN_SRV_CODE; 162 143 … … 173 154 174 155 /* 175 * ECHONET Lite é»æãããã¼156 * ECHONET Lite電文ヘッダー 176 157 */ 177 158 typedef struct 178 159 { 179 uint8_t ehd1; /* ECHONET Lite é»æãããã¼1 ECN_EHD1_ECL_VERSION */180 uint8_t ehd2; /* ECHONET Lite é»æãããã¼2 ECN_EHD2_FORMAT */181 uint16_t tid; /* ãã©ã³ã¶ã¯ã·ã§ã³ID */160 uint8_t ehd1; /* ECHONET Lite電文ヘッダー1 ECN_EHD1_ECL_VERSION */ 161 uint8_t ehd2; /* ECHONET Lite電文ヘッダー2 ECN_EHD2_FORMAT */ 162 uint16_t tid; /* トランザクションID */ 182 163 } __attribute__((packed)) T_ECN_HDR; 183 164 184 165 /* 185 * ECHONET Lite ãªãã¸ã§ã¯ãã³ã¼ã166 * ECHONET Liteオブジェクトコード 186 167 */ 187 168 typedef struct 188 169 { 189 uint8_t eojx1; /* ã¯ã©ã¹ã°ã«ã¼ãã³ã¼ã*/190 uint8_t eojx2; /* ã¯ã©ã¹ã³ã¼ã*/191 uint8_t eojx3; /* ã¤ã³ã¹ã¿ã³ã¹ã³ã¼ã*/170 uint8_t eojx1; /* クラスグループコード */ 171 uint8_t eojx2; /* クラスコード */ 172 uint8_t eojx3; /* インスタンスコード */ 192 173 } __attribute__((packed)) T_ECN_EOJ; 193 174 194 175 /* 195 * ECHONET Lite ãã¼ã¿ãããã¼176 * ECHONET Liteデータヘッダー 196 177 */ 197 178 typedef struct 198 179 { 199 T_ECN_EOJ seoj; /* éä¿¡å 200 ECHONET Liteãªãã¸ã§ã¯ãæå® */ 201 T_ECN_EOJ deoj; /* ç¸æå 202 ECHONET Liteãªãã¸ã§ã¯ãæå® */ 203 uint8_t esv; /* ECHONET Liteãµã¼ãã¹ (ECN_SRV_CODE) */ 204 uint8_t opc; /* å¦çããããã£æ° */ 180 T_ECN_EOJ seoj; /* 送信元ECHONET Liteオブジェクト指定 */ 181 T_ECN_EOJ deoj; /* 相手先ECHONET Liteオブジェクト指定 */ 182 uint8_t esv; /* ECHONET Liteサービス (ECN_SRV_CODE) */ 183 uint8_t opc; /* 処理プロパティ数 */ 205 184 } __attribute__((packed)) T_ECN_EDATA_BODY; 206 185 207 186 /* 208 * ECHONET Lite ããããã£187 * ECHONET Liteプロパティ 209 188 */ 210 189 typedef struct 211 190 { 212 uint8_t epc; /* ECHONET Lite ããããã£ã³ã¼ã*/213 uint8_t pdc; /* EDT ã®ãã¤ãæ°*/214 /*void *p_edt;*/ /* ããããã£å¤ãã¼ã¿*/191 uint8_t epc; /* ECHONET Liteプロパティコード */ 192 uint8_t pdc; /* EDTのバイト数 */ 193 /*void *p_edt;*/ /* プロパティ値データ */ 215 194 } __attribute__((packed)) T_ECN_PRP; 216 195 217 196 /* 218 * ECHONET Lite ãã¼ã¿197 * ECHONET Liteデータ 219 198 */ 220 199 typedef struct … … 226 205 227 206 /* 228 * ECHONET Lite é»æ207 * ECHONET Lite 電文 229 208 */ 230 209 typedef struct echonet_object_data … … 246 225 247 226 /* 248 * å¿çé»æ解æã¤ãã¬ã¼ã¿ã¼227 * 応答電文解析イテレーター 249 228 */ 250 229 typedef struct echonet_epc_enumerator 251 230 { 252 231 T_EDATA *pk_esv; 253 uint8_t count; /* ä»èªã¿åãä¸ã®ãããã¯ã«ããããããã£ç·æ°*/254 uint8_t got_ct; /* ä»èªã¿åãä¸ã®ãããã¯ã§ãèªã¿åã£ãæ°*/255 uint8_t next_blk_ct; /* å¾ç¶ãããã¯æ°*/256 uint8_t is_eof; /* çµç«¯ã«éããæãé0 */232 uint8_t count; /* 今読み取り中のブロックにあるプロパティ総数 */ 233 uint8_t got_ct; /* 今読み取り中のブロックで、読み取った数 */ 234 uint8_t next_blk_ct; /* 後続ブロック数 */ 235 uint8_t is_eof; /* 終端に達した時、非0 */ 257 236 int cur; 258 237 } T_ENUM_EPC; … … 263 242 264 243 /* 265 * ECHONET Lite ããããã£ã®è¨å®é¢æ°244 * ECHONET Lite プロパティの設定関数 266 245 */ 267 246 typedef int (EPRP_SETTER)(ecnl_svc_task_t *svc, const EPRPINIB *item, const void *src, int size, bool_t *anno); 268 247 269 248 /* 270 * ECHONET Lite ããããã£ã®åå¾é¢æ°249 * ECHONET Lite プロパティの取得関数 271 250 */ 272 251 typedef int (EPRP_GETTER)(ecnl_svc_task_t *svc, const EPRPINIB *item, void *dst, int size); 273 252 274 253 /* 275 * ECHONET Lite ããããã£åæåãããã¯254 * ECHONET Lite プロパティ初期化ブロック 276 255 */ 277 256 struct echonet_property_initialization_block 278 257 { 279 uint8_t eprpcd; /* ECHONET Lite ããããã£ã³ã¼ã */ 280 ATR eprpatr; /* ECHONET Lite ããããã£å±æ§ */ 281 uint8_t eprpsz; /* ECHONET Lite ããããã£ã®ãµã¤ãº */ 282 intptr_t exinf; /* ECHONET Lite ããããã£ã®æ¡å¼µæ 283 å ± */ 284 EPRP_SETTER *eprpset; /* ECHONET Lite ããããã£ã®è¨å®é¢æ° */ 285 EPRP_GETTER *eprpget; /* ECHONET Lite ããããã£ã®åå¾é¢æ° */ 258 uint8_t eprpcd; /* ECHONET Lite プロパティコード */ 259 ATR eprpatr; /* ECHONET Lite プロパティ属性 */ 260 uint8_t eprpsz; /* ECHONET Lite プロパティのサイズ */ 261 intptr_t exinf; /* ECHONET Lite プロパティの拡張情報 */ 262 EPRP_SETTER *eprpset; /* ECHONET Lite プロパティの設定関数 */ 263 EPRP_GETTER *eprpget; /* ECHONET Lite プロパティの取得関数 */ 286 264 }; 287 265 288 #define TMIN_EOBJID 1 /* ECHONET Lite ãªãã¸ã§ã¯ãIDã®æå°å¤*/289 290 /* 291 * ECHONET Lite ãªãã¸ã§ã¯ãåæåãããã¯266 #define TMIN_EOBJID 1 /* ECHONET Lite オブジェクトIDの最小値 */ 267 268 /* 269 * ECHONET Lite オブジェクト初期化ブロック 292 270 */ 293 271 typedef struct echonet_object_initialization_block 294 272 { 295 ATR eobjatr; /* ECHONET Lite ãªãã¸ã§ã¯ãå±æ§ */ 296 ID enodid; /* ECHONET Lite ãã¼ããããã¡ã¤ã«ãªãã¸ã§ã¯ãID */ 297 intptr_t exinf; /* ECHONET Lite ãªãã¸ã§ã¯ãã®æ¡å¼µæ 298 å ± */ 299 uint8_t eojx1; /* ECHONET Lite ãªãã¸ã§ã¯ãã®ã¯ã©ã¹ã°ã«ã¼ãã³ã¼ã */ 300 uint8_t eojx2; /* ECHONET Lite ãªãã¸ã§ã¯ãã®ã¯ã©ã¹ã³ã¼ã */ 301 uint8_t eojx3; /* ECHONET Lite ãªãã¸ã§ã¯ãã®ã¤ã³ã¹ã¿ã³ã¹ã³ã¼ã */ 302 const EPRPINIB **eprp; /* ECHONET Lite ããããã£åæåããã㯠*/ 303 uint_t eprpcnt; /* ECHONET Lite ããããã£åæåãããã¯æ° */ 273 ATR eobjatr; /* ECHONET Lite オブジェクト属性 */ 274 ID enodid; /* ECHONET Lite ノードプロファイルオブジェクトID */ 275 intptr_t exinf; /* ECHONET Lite オブジェクトの拡張情報 */ 276 uint8_t eojx1; /* ECHONET Lite オブジェクトのクラスグループコード */ 277 uint8_t eojx2; /* ECHONET Lite オブジェクトのクラスコード */ 278 uint8_t eojx3; /* ECHONET Lite オブジェクトのインスタンスコード */ 279 const EPRPINIB **eprp; /* ECHONET Lite プロパティ初期化ブロック */ 280 uint_t eprpcnt; /* ECHONET Lite プロパティ初期化ブロック数 */ 304 281 } EOBJINIB; 305 282 306 283 /* 307 * ECHONET Lite ãã¼ã管çãããã¯284 * ECHONET Lite ノード管理ブロック 308 285 */ 309 286 typedef struct echonet_object_control_block 310 287 { 311 const EOBJINIB *profile; /* ECHONET Lite ãã¼ããããã¡ã¤ã«ã¸ã®ãã¤ã³ã¿*/312 const EOBJINIB **eobjs; /* ECHONET Lite ãªãã¸ã§ã¯ããªã¹ãã¸ã®ãã¤ã³ã¿*/313 uint_t eobjcnt; /* ECHONET Lite ãªãã¸ã§ã¯ãæ°*/288 const EOBJINIB *profile; /* ECHONET Lite ノードプロファイルへのポインタ */ 289 const EOBJINIB **eobjs; /* ECHONET Lite オブジェクトリストへのポインタ */ 290 uint_t eobjcnt; /* ECHONET Lite オブジェクト数 */ 314 291 } EOBJCB; 315 292 316 293 /* 317 * ECHONET Lite ãªãã¸ã§ã¯ãæ©è½ã®åæå294 * ECHONET Lite オブジェクト機能の初期化 318 295 */ 319 296 extern void initialize_echonet_object(void); … … 324 301 325 302 /* 326 * ECHONET Lite ãµã¼ãã¹å¦çéå§303 * ECHONET Liteサービス処理開始 327 304 */ 328 305 ER ecn_sta_svc(ecnl_svc_task_t *svc); 329 306 330 307 /* 331 * ECHONETãªãã¸ã§ã¯ãåç 332 § 308 * ECHONETオブジェクト参照 333 309 */ 334 310 ER ecn_ref_eobj(ecnl_svc_task_t *svc, ID eobjid, T_REOBJ *pk_eobj); 335 311 336 312 /* 337 * ECHONETããããã£åç 338 § 313 * ECHONETプロパティ参照 339 314 */ 340 315 ER ecn_ref_eprp(ecnl_svc_task_t *svc, ID eobjid, uint8_t epc, T_RPRP *pk_eprp); 341 316 342 317 /* 343 * ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ï¼å¿çä¸è¦ï¼é»æä½æ318 * プロパティ値書き込み要求(応答不要)電文作成 344 319 */ 345 320 ER ecn_esv_seti(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID eobjid, uint8_t epc, uint8_t pdc, const void *p_edt); 346 321 347 322 /* 348 * ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ï¼å¿çè¦ï¼é»æä½æ323 * プロパティ値書き込み要求(応答要)電文作成 349 324 */ 350 325 ER ecn_esv_setc(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID eobjid, uint8_t epc, uint8_t pdc, const void *p_edt); 351 326 352 327 /* 353 * ããããã£å¤èªã¿åºãè¦æ±é»æä½æ328 * プロパティ値読み出し要求電文作成 354 329 */ 355 330 ER ecn_esv_get(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID eobjid, uint8_t epc); 356 331 357 332 /* 358 * ããããã£å¤éç¥è¦æ±é»æä½æ333 * プロパティ値通知要求電文作成 359 334 */ 360 335 ER ecn_esv_inf_req(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID eobjid, uint8_t epc); 361 336 362 337 /* 363 * ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãè¦æ±é»æä½æ338 * プロパティ値書き込み・読み出し要求電文作成 364 339 */ 365 340 ER ecn_esv_set_get(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID eobjid, uint8_t epc, uint8_t pdc, const void *p_edt); 366 341 367 342 /* 368 * ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãè¦æ±é»ææãè¿ãæå®343 * プロパティ値書き込み・読み出し要求電文折り返し指定 369 344 */ 370 345 ER ecn_trn_set_get(mrb_state *mrb, T_EDATA *pk_esv, int *p_trn_pos); 371 346 372 347 /* 373 * ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãè¦æ±é»æçµäºæå®348 * プロパティ値書き込み・読み出し要求電文終了指定 374 349 */ 375 350 ER ecn_end_set_get(mrb_state *mrb, T_EDATA *pk_esv, int trn_pos); 376 351 377 352 /* 378 * ããããã£å¤éç¥ï¼å¿çè¦ï¼é»æä½æ353 * プロパティ値通知(応答要)電文作成 379 354 */ 380 355 ER ecn_esv_infc(ecnl_svc_task_t *svc, T_EDATA **ppk_esv, ID eobjid, ID seobjid, uint8_t sepc); 381 356 382 357 /* 383 * è¦æ±é»æã¸ã®ããããã£æå®è¿½å358 * 要求電文へのプロパティ指定追加 384 359 */ 385 360 ER ecn_add_epc(mrb_state *mrb, T_EDATA *pk_esv, uint8_t epc); 386 361 387 362 /* 388 * è¦æ±é»æã¸ã®ããããã£ãã¼ã¿è¿½å363 * 要求電文へのプロパティデータ追加 389 364 */ 390 365 ER ecn_add_edt(mrb_state *mrb, T_EDATA *pk_esv, uint8_t epc, uint8_t pdc, const void *p_edt); 391 366 392 367 /* 393 * è¦æ±é»æã®éä¿¡368 * 要求電文の送信 394 369 */ 395 370 ER ecn_snd_esv(ecnl_svc_task_t *svc, T_EDATA *pk_esv); 396 371 397 372 /* 398 * å¿çé»æã®åä¿¡ãã¼ãªã³ã°373 * 応答電文の受信ポーリング 399 374 */ 400 375 ER ecn_prcv_esv(ecnl_svc_task_t *svc, T_EDATA **ppk_esv); 401 376 402 377 /* 403 * å¿çé»æã®ç ´æ£378 * 応答電文の破棄 404 379 */ 405 380 ER ecn_rel_esv(mrb_state *mrb, T_EDATA *pk_esv); 406 381 407 382 /* 408 * å¿çé»æã®éä¿¡å 409 ãã¼ããåå¾ãã 383 * 応答電文の送信元ノードを取得する 410 384 */ 411 385 ID ecn_get_enod(ecnl_svc_task_t *svc, T_EDATA *pk_esv); 412 386 413 387 /* 414 * å¿çé»æã®éä¿¡å 415 æ©å¨ãªãã¸ã§ã¯ããåå¾ãã 388 * 応答電文の送信元機器オブジェクトを取得する 416 389 */ 417 390 ID ecn_get_eobj(ecnl_svc_task_t *svc, T_EDATA *pk_esv); 418 391 419 392 /* 420 * å¿çé»æ解æã¤ãã¬ã¼ã¿ã¼åæå393 * 応答電文解析イテレーター初期化 421 394 */ 422 395 ER ecn_itr_ini(T_ENUM_EPC *pk_itr, T_EDATA *pk_esv); 423 396 424 397 /* 425 * å¿çé»æ解æã¤ãã¬ã¼ã¿ã¼ã¤ã³ã¯ãªã¡ã³ã398 * 応答電文解析イテレーターインクリメント 426 399 */ 427 400 ER ecn_itr_nxt(mrb_state *mrb, T_ENUM_EPC *pk_itr, uint8_t *p_epc, uint8_t *p_pdc, void *p_edt); 428 401 429 402 /* 430 * å¿çé»æå¾ 431 ã¡ã®å²ãè¾¼ã¿éä¿¡ 403 * 応答電文待ちの割り込み送信 432 404 */ 433 405 ER ecn_brk_wai(ecnl_svc_task_t *svc, const void *p_dat, int datsz); 434 406 435 407 /* 436 * å²ãè¾¼ã¿ãã¼ã¿ã®åå¾408 * 割り込みデータの取得 437 409 */ 438 410 ER ecn_get_brk_dat(mrb_state *mrb, T_EDATA *pk_esv, void *p_buf, int bufsz, int *p_datsz); 439 411 440 412 /* 441 * ãã¼ã¿è¨å®é¢æ°413 * データ設定関数 442 414 */ 443 415 int ecn_data_prop_set(ecnl_svc_task_t *svc, const EPRPINIB *item, const void *src, int size, bool_t *anno); 444 416 445 417 /* 446 * ãã¼ã¿åå¾é¢æ°418 * データ取得関数 447 419 */ 448 420 int ecn_data_prop_get(ecnl_svc_task_t *svc, const EPRPINIB *item, void *dst, int size); -
EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet_agent.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r270 r321 4 4 * Copyright (C) 2015-2016 Cores Co., Ltd. Japan 5 5 * 6 * ä¸è¨èä½æ¨©è 7 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 8 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 9 * å¤ã»åé 10 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 11 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 12 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 13 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 14 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 15 * ç¨ã§ããå½¢ã§åé 16 å¸ããå ´åã«ã¯ï¼åé 17 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 18 * è 19 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 20 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 21 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 * ç¨ã§ããªãå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 24 * ã¨ï¼ 25 * (a) åé 26 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 27 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 28 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 29 * (b) åé 30 å¸ã®å½¢æ 31 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 32 * å ±åãããã¨ï¼ 33 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 34 * 害ãããï¼ä¸è¨èä½æ¨©è 35 ããã³TOPPERSããã¸ã§ã¯ããå 36 責ãããã¨ï¼ 37 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 38 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ãã 40 * å 41 責ãããã¨ï¼ 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 8 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 9 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 10 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 11 * スコード中に含まれていること. 12 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 13 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 14 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 15 * の無保証規定を掲載すること. 16 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 17 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 18 * と. 19 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 20 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 21 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 22 * 報告すること. 23 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 24 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 25 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 * 免責すること. 42 28 * 43 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 44 ã 45 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 46 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 47 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 48 * ã®è²¬ä»»ãè² ããªãï¼ 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 49 34 * 50 35 * @(#) $Id$ … … 52 37 53 38 /* 54 * ECHONET Lite åççæãã¼ã39 * ECHONET Lite 動的生成ノード 55 40 */ 56 41 … … 158 143 159 144 /* 160 * ãã¥ã¼ã®åæå145 * キューの初期化 161 146 * 162 * p_queue ã«ã¯ãã¥ã¼ããããæå®ããï¼147 * p_queueにはキューヘッダを指定する. 163 148 */ 164 149 static void … … 173 158 174 159 /* 175 * ãã¥ã¼ã®åã¨ã³ããªã¸ã®æ¿å 176 ¥ 160 * キューの前エントリへの挿入 177 161 * 178 * p_queueã®åã«p_entryãæ¿å 179 ¥ããï¼p_queueã«ãã¥ã¼ããããæå®ããå ´ 180 * åã«ã¯ï¼ãã¥ã¼ã®æ«å°¾ã«p_entryãæ¿å 181 ¥ãããã¨ã«ãªãï¼ 162 * p_queueの前にp_entryを挿入する.p_queueにキューヘッダを指定した場 163 * 合には,キューの末尾にp_entryを挿入することになる. 182 164 */ 183 165 static void … … 195 177 196 178 /* 197 * ã¨ã³ããªã®åé¤179 * エントリの削除 198 180 * 199 * p_entry ããã¥ã¼ããåé¤ããï¼181 * p_entryをキューから削除する. 200 182 */ 201 183 static void … … 310 292 int i = eobjid; 311 293 312 /* ãªãã¸ã§ã¯ãIDããå®ä½ãåå¾*/294 /* オブジェクトIDから実体を取得 */ 313 295 i -= (svc->tmax_eobjid + 1); 314 296 if ((i < 0) … … 321 303 return false; 322 304 323 /* ãªãã¸ã§ã¯ãã®EOJãã³ãã¼*/305 /* オブジェクトのEOJをコピー */ 324 306 memcpy(eoj, &buf->cnt.obj.inib.eojx1, sizeof(*eoj)); 325 307 326 /* æå±ãããã¼ãã®ãªãã¸ã§ã¯ãIDãåå¾*/308 /* 所属するノードのオブジェクトIDを取得 */ 327 309 if(buf->cnt.obj.inib.enodid == 0) 328 310 i = buf->cnt.obj.eobjId; … … 336 318 } 337 319 338 /* ãã¼ãIDãåå¾*/320 /* ノードIDを取得 */ 339 321 buf = &agent->blockes[i]; 340 322 *enodid = buf->cnt.node.node.enodId; … … 365 347 void ecn_agent_init(ecnl_svc_task_t *svc) 366 348 { 367 svc->agent.eprpinib.eprpcd = 0x00; /* ããããã£ã³ã¼ã */ 368 svc->agent.eprpinib.eprpatr = EPC_RULE_SET | EPC_RULE_GET; /* ããããã£å±æ§ */ 369 svc->agent.eprpinib.eprpsz = 255; /* ããããã£ã®ãµã¤ãº */ 370 svc->agent.eprpinib.exinf = (intptr_t)&svc->agent; /* ããããã£ã®æ¡å¼µæ 371 å ± */ 372 svc->agent.eprpinib.eprpset = ecn_agent_eprpset; /* ããããã£ã®è¨å®é¢æ° */ 373 svc->agent.eprpinib.eprpget = ecn_agent_eprpget; /* ããããã£ã®åå¾é¢æ° */ 349 svc->agent.eprpinib.eprpcd = 0x00; /* プロパティコード */ 350 svc->agent.eprpinib.eprpatr = EPC_RULE_SET | EPC_RULE_GET; /* プロパティ属性 */ 351 svc->agent.eprpinib.eprpsz = 255; /* プロパティのサイズ */ 352 svc->agent.eprpinib.exinf = (intptr_t)&svc->agent; /* プロパティの拡張情報 */ 353 svc->agent.eprpinib.eprpset = ecn_agent_eprpset; /* プロパティの設定関数 */ 354 svc->agent.eprpinib.eprpget = ecn_agent_eprpget; /* プロパティの取得関数 */ 374 355 375 356 svc->agent.peprpinib = &svc->agent.eprpinib; … … 390 371 T_ECN_EOJ *eoj, *end; 391 372 392 // ããããã£éç¥ãåå¾å¿çã§ã373 // プロパティ通知か取得応答で、 393 374 switch (esv->hdr.edata.esv) { 394 375 case ESV_GET_RES: … … 400 381 } 401 382 402 // ãã¼ããããã¡ã¤ã«å®ã®å ´å383 // ノードプロファイル宛の場合 403 384 eoj = &esv->hdr.edata.seoj; 404 385 if ((eoj->eojx1 != EOJ_X1_PROFILE) || (eoj->eojx2 != EOJ_X2_NODE_PROFILE) … … 413 394 while (ecn_itr_nxt(mrb, &enm, &epc, &pdc, &edt) == E_OK) { 414 395 switch (epc) { 415 // ã¤ã³ã¹ã¿ã³ã¹ãªã¹ãéç¥ã®å ´å396 // インスタンスリスト通知の場合 416 397 case 0xD5: 417 // èªãã¼ãã¤ã³ã¹ã¿ã³ã¹ãªã¹ãï¼³éç¥ã®å ´å398 // 自ノードインスタンスリストS通知の場合 418 399 case 0xD6: 419 // ãµã¤ãºãåããªãå ´å400 // サイズが合わない場合 420 401 if (pdc != (1 + edt[0] * sizeof(T_ECN_EOJ))) 421 402 return NULL; … … 765 746 ecn_obj_t *sobj; 766 747 767 /* éçã«å®ç¾©ãããéä¿¡å 768 ã®å ´å */ 748 /* 静的に定義された送信元の場合 */ 769 749 if ((*ppk_snod != NULL) && (*ppk_snod)->eobjs != NULL) { 770 /* å¦çããªã*/750 /* 処理しない */ 771 751 return; 772 752 } … … 774 754 snod = ecn_agent_find_node2(svc, *ppk_snod); 775 755 776 /* éä¿¡å 777 ãç¥ããªãã£ãã */ 756 /* 送信元を知らなかったら */ 778 757 if (snod == NULL) { 779 /* éä¿¡å 780 ã®ãã¼ãæ 781 å ±ãæ°è¦ã«ä½æ */ 758 /* 送信元のノード情報を新規に作成 */ 782 759 snod = ecn_agent_create_node(svc, agent, esv); 783 760 if (snod == NULL) … … 787 764 sobj = ecn_agent_find_obj2(snod, *ppk_sobj); 788 765 789 /* ãã¼ããããã¡ã¤ã«ã®å ´å*/766 /* ノードプロファイルの場合 */ 790 767 if ((esv->hdr.edata.seoj.eojx1 == EOJ_X1_PROFILE) 791 768 && (esv->hdr.edata.seoj.eojx2 == EOJ_X2_NODE_PROFILE)) { 792 769 sobj = &snod->node.base; 793 770 } 794 /* æ©å¨ãªãã¸ã§ã¯ãã®å ´å*/771 /* 機器オブジェクトの場合 */ 795 772 else { 796 773 sobj = ecn_agent_find_eobj(&snod->node.eobj, esv->hdr.edata.seoj); … … 837 814 ecn_obj_t *obj = node->current; 838 815 839 // ããããã£å¤èªã¿åºãè¦æ±816 // プロパティ値読み出し要求 840 817 ecn_esv_get(svc, &esv, obj->eobjId, 0x9E); 841 818 ecn_snd_esv(svc, esv); … … 850 827 ecn_obj_t *obj = node->current; 851 828 852 // ããããã£å¤èªã¿åºãè¦æ±829 // プロパティ値読み出し要求 853 830 ecn_esv_get(svc, &esv, obj->eobjId, 0x9F); 854 831 ecn_snd_esv(svc, esv); … … 863 840 ecn_obj_t *obj = node->current; 864 841 865 // ããããã£å¤èªã¿åºãè¦æ±842 // プロパティ値読み出し要求 866 843 ecn_esv_get(svc, &esv, obj->eobjId, 0x9D); 867 844 ecn_snd_esv(svc, esv); … … 877 854 ecn_device_t *device; 878 855 879 /* obj ãæå®ããã¦ããªãå ´å*/856 /* objが指定されていない場合 */ 880 857 if(obj == NULL){ 881 /* ãã®ãã¼ããè¿ã*/858 /* このノードを返す */ 882 859 node->current = &node->node.base; 883 860 return; 884 861 } 885 /* ãã¼ãã®å ´å*/862 /* ノードの場合 */ 886 863 else if((obj->inib.eojx1 == EOJ_X1_PROFILE) && (obj->inib.eojx2 == EOJ_X2_NODE_PROFILE)){ 887 864 node = (ecn_node_agent_t *)obj; 888 865 889 /* é 890 ä¸ã®æ©å¨ãè¿ã */ 866 /* 配下の機器を返す */ 891 867 queue = node->node.devices.p_next; 892 868 device = (ecn_device_t *)cast_obj(queue); 893 869 } 894 /* æ©å¨ã®å ´å*/870 /* 機器の場合 */ 895 871 else{ 896 /* 次ã®æ©å¨ãè¿ã*/872 /* 次の機器を返す */ 897 873 node = (ecn_node_agent_t *)((ecn_device_t *)obj)->node; 898 874 queue = cast_queue(obj)->p_next; … … 900 876 } 901 877 902 /* ãã®æ©å¨ãæ«å°¾ã ã£ãå ´å*/878 /* その機器が末尾だった場合 */ 903 879 if(&node->node.devices == queue){ 904 880 node->current = NULL; … … 1037 1013 bool_t has = false; 1038 1014 1039 /* ãã¼ãã®å ´åã¯ã¤ã³ã¹ã¿ã³ã¹ãªã¹ãéç¥ã¨èªãã¼ãã¤ã³ã¹ã¿ã³ã¹ãªã¹ãï¼³éç¥ãå¿ 1040 é ã§åãåã */ 1015 /* ノードの場合はインスタンスリスト通知と自ノードインスタンスリストS通知を必須で受け取る */ 1041 1016 if ((fp_obj->enodid == 0) && ((fa_epc == 0xD5) || (fa_epc == 0xD6))) 1042 1017 has = true; … … 1072 1047 1073 1048 switch (item->eprpcd) { 1074 /* ã¤ã³ã¹ã¿ã³ã¹ãªã¹ãéç¥ã®å ´å*/1049 /* インスタンスリスト通知の場合 */ 1075 1050 case 0xD5: 1076 /* èªãã¼ãã¤ã³ã¹ã¿ã³ã¹ãªã¹ãï¼³éç¥ã®å ´å*/1051 /* 自ノードインスタンスリストS通知の場合 */ 1077 1052 case 0xD6: 1078 1053 if ((node != NULL) && (node->state == ecn_node_state_idle)) { … … 1092 1067 } 1093 1068 break; 1094 /* éç¥ããããã£ãããã®å ´å*/1069 /* 通知プロパティマップの場合 */ 1095 1070 case 0x9D: 1096 1071 eprpcnt = edt[0]; 1097 1072 1098 1073 if (eprpcnt < 16) { 1099 /* ãµã¤ãºãã§ãã¯*/1074 /* サイズチェック */ 1100 1075 if (eprpcnt + 1 != size) 1101 1076 return 0; … … 1105 1080 } 1106 1081 else { 1107 /* ãµã¤ãºãã§ãã¯*/1082 /* サイズチェック */ 1108 1083 if (size != 17) 1109 1084 return 0; … … 1114 1089 sobj->pmapFlag |= PMAP_FLAG_ANNO; 1115 1090 break; 1116 /* SET ããããã£ãããã®å ´å*/1091 /* SETプロパティマップの場合 */ 1117 1092 case 0x9E: 1118 1093 eprpcnt = edt[0]; 1119 1094 1120 1095 if (eprpcnt < 16) { 1121 /* ãµã¤ãºãã§ãã¯*/1096 /* サイズチェック */ 1122 1097 if (eprpcnt + 1 != size) 1123 1098 return 0; … … 1127 1102 } 1128 1103 else { 1129 /* ãµã¤ãºãã§ãã¯*/1104 /* サイズチェック */ 1130 1105 if (size != 17) 1131 1106 return 0; … … 1136 1111 sobj->pmapFlag |= PMAP_FLAG_SET; 1137 1112 break; 1138 /* GET ããããã£ãããã®å ´å*/1113 /* GETプロパティマップの場合 */ 1139 1114 case 0x9F: 1140 1115 eprpcnt = edt[0]; 1141 1116 1142 1117 if (eprpcnt < 16) { 1143 /* ãµã¤ãºãã§ãã¯*/1118 /* サイズチェック */ 1144 1119 if (eprpcnt + 1 != size) 1145 1120 return 0; … … 1149 1124 } 1150 1125 else { 1151 /* ãµã¤ãºãã§ãã¯*/1126 /* サイズチェック */ 1152 1127 if (size != 17) 1153 1128 return 0; -
EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet_agent.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 4 4 * Copyright (C) 2015-2016 Cores Co., Ltd. Japan 5 5 * 6 * ä¸è¨èä½æ¨©è 7 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 8 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 9 * å¤ã»åé 10 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 11 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 12 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 13 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 14 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 15 * ç¨ã§ããå½¢ã§åé 16 å¸ããå ´åã«ã¯ï¼åé 17 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 18 * è 19 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 20 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 21 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 * ç¨ã§ããªãå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 24 * ã¨ï¼ 25 * (a) åé 26 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 27 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 28 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 29 * (b) åé 30 å¸ã®å½¢æ 31 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 32 * å ±åãããã¨ï¼ 33 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 34 * 害ãããï¼ä¸è¨èä½æ¨©è 35 ããã³TOPPERSããã¸ã§ã¯ããå 36 責ãããã¨ï¼ 37 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 38 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ãã 40 * å 41 責ãããã¨ï¼ 42 * 43 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 44 ã 45 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 46 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 47 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 48 * ã®è²¬ä»»ãè² ããªãï¼ 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 8 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 9 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 10 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 11 * スコード中に含まれていること. 12 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 13 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 14 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 15 * の無保証規定を掲載すること. 16 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 17 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 18 * と. 19 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 20 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 21 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 22 * 報告すること. 23 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 24 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 25 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 * 免責すること. 28 * 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 49 34 * 50 35 * @(#) $Id$ … … 52 37 53 38 /* 54 * ECHONET Lite åççæãã¼ã39 * ECHONET Lite 動的生成ノード 55 40 */ 56 41 … … 65 50 66 51 /* 67 * ãã¥ã¼ã®ãã¼ã¿æ§é ã®å®ç¾©52 * キューのデータ構造の定義 68 53 */ 69 54 typedef struct ecn_agent_queue { 70 55 #ifdef _DEBUG 71 struct ecn_agent_queue *p_parent; /* 親ãã¥ã¼ã¸ã®ãã¤ã³ã¿*/56 struct ecn_agent_queue *p_parent; /* 親キューへのポインタ */ 72 57 #endif 73 struct ecn_agent_queue *p_next; /* 次ã¨ã³ããªã¸ã®ãã¤ã³ã¿*/74 struct ecn_agent_queue *p_prev; /* åã¨ã³ããªã¸ã®ãã¤ã³ã¿*/58 struct ecn_agent_queue *p_next; /* 次エントリへのポインタ */ 59 struct ecn_agent_queue *p_prev; /* 前エントリへのポインタ */ 75 60 } ecn_agent_queue_t; 76 61 … … 84 69 ID eobjId; 85 70 EOBJINIB inib; 86 uint8_t pmapSet[16]; /* SETããããã£ããã */ 87 uint8_t pmapGet[16]; /* GETããããã£ããã */ 88 uint8_t pmapAnno[16]; /* ç¶æ 89 å¤åæéç¥ããããã£ããã */ 71 uint8_t pmapSet[16]; /* SETプロパティマップ */ 72 uint8_t pmapGet[16]; /* GETプロパティマップ */ 73 uint8_t pmapAnno[16]; /* 状態変化時通知プロパティマップ */ 90 74 uint8_t pmapFlag; 91 uint8_t eprpcnt; /* ECHONET Lite ããããã£æ°*/92 uint8_t annocnt; /* éç¥ããããã£ã®æ°*/93 uint8_t setcnt; /* è¨å®ããããã£ã®æ°*/94 uint8_t getcnt; /* åå¾ããããã£ã®æ°*/75 uint8_t eprpcnt; /* ECHONET Lite プロパティ数 */ 76 uint8_t annocnt; /* 通知プロパティの数 */ 77 uint8_t setcnt; /* 設定プロパティの数 */ 78 uint8_t getcnt; /* 取得プロパティの数 */ 95 79 } ecn_obj_t; 96 80 … … 158 142 typedef struct ecn_inm_get_device_item 159 143 { 160 ID eobjid; /* ECHONET Lite ãªãã¸ã§ã¯ãID */ 161 ID enodid; /* ECHONET Lite ãã¼ããããã¡ã¤ã«ãªãã¸ã§ã¯ãID */ 162 uint8_t state; /* æ 163 å ±åéç¶æ 164 */ 165 uint8_t eojx1; /* ECHONET Lite ãªãã¸ã§ã¯ãã®ã¯ã©ã¹ã°ã«ã¼ãã³ã¼ã */ 166 uint8_t eojx2; /* ECHONET Lite ãªãã¸ã§ã¯ãã®ã¯ã©ã¹ã³ã¼ã */ 167 uint8_t eojx3; /* ECHONET Lite ãªãã¸ã§ã¯ãã®ã¤ã³ã¹ã¿ã³ã¹ã³ã¼ã */ 168 ECN_ENOD_ID addrid; /* éä¿¡ã¬ã¤ã¤ã¼ã¢ãã¬ã¹åå¾ç¨ID */ 144 ID eobjid; /* ECHONET Lite オブジェクトID */ 145 ID enodid; /* ECHONET Lite ノードプロファイルオブジェクトID */ 146 uint8_t state; /* 情報収集状態 */ 147 uint8_t eojx1; /* ECHONET Lite オブジェクトのクラスグループコード */ 148 uint8_t eojx2; /* ECHONET Lite オブジェクトのクラスコード */ 149 uint8_t eojx3; /* ECHONET Lite オブジェクトのインスタンスコード */ 150 ECN_ENOD_ID addrid; /* 通信レイヤーアドレス取得用ID */ 169 151 } ecn_inm_get_device_item_t; 170 152 … … 191 173 } ecn_inm_get_device_info_res_t; 192 174 193 /* åæå*/175 /* 初期化 */ 194 176 void ecn_agent_init(ecnl_svc_task_t *svc); 195 /* ãã¼ããæ¤ç´¢*/177 /* ノードを検索 */ 196 178 ecn_node_t *ecn_agent_find_node(ecnl_svc_task_t *svc, ECN_ENOD_ID enodid); 197 /* æ©å¨ãæ¤ç´¢*/179 /* 機器を検索 */ 198 180 ecn_obj_t *ecn_agent_find_eobj(const EOBJCB *pk_nod, T_ECN_EOJ eoj); 199 /* ãªãã¸ã§ã¯ãIDãåå¾*/181 /* オブジェクトIDを取得 */ 200 182 ID ecn_agent_get_eobj(const EOBJINIB *pk_obj); 201 /* 次ã®æ©å¨ãåå¾*/183 /* 次の機器を取得 */ 202 184 const EOBJINIB *ecn_agent_next_eobj(const EOBJCB *pk_nod, const EOBJINIB *pk_obj); 203 /* ãªãã¸ã§ã¯ãIDããEOJã¨ãã¼ãIDãåå¾*/185 /* オブジェクトIDからEOJとノードIDを取得 */ 204 186 bool_t ecn_agent_get_eoj_enodid(ecnl_svc_task_t *svc, ID eobjid, T_ECN_EOJ *eoj, ECN_ENOD_ID *enodid); 205 /* ã¿ã¤ã ã¢ã¦ãå¤ãè¿ã*/187 /* タイムアウト値を返す */ 206 188 TMO ecn_agent_get_timer(ecnl_svc_task_t *svc); 207 /* ã¿ã¤ãã¼ã®æéãé²ãã*/189 /* タイマーの時間を進める */ 208 190 void ecn_agent_progress(ecnl_svc_task_t *svc, TMO interval); 209 /* ã¿ã¤ã ã¢ã¦ãå¦çï¼ã®ããã®å¼ã³åºãï¼*/191 /* タイムアウト処理(のための呼び出し) */ 210 192 void ecn_agent_timeout(ecnl_svc_task_t *svc); 211 /* å 212 é¨ã¡ãã»ã¼ã¸å¦ç */ 193 /* 内部メッセージ処理 */ 213 194 bool_t ecn_agent_proc_int_msg(ecnl_svc_task_t *svc, ECN_FBS_ID fbs, uint8_t cmd); 214 /* ECHONET é»æåä¿¡å¦ç*/195 /* ECHONET電文受信処理 */ 215 196 void ecn_agent_proc_ecn_msg(ecnl_svc_task_t *svc, const EOBJCB **snod, const EOBJINIB **sobj, T_EDATA *esv); 216 /* ECHONET é»æåä¿¡å¦ççµäº*/197 /* ECHONET電文受信処理終了 */ 217 198 void ecn_agent_proc_ecn_msg_end(ecnl_svc_task_t *svc); 218 /* ããããã£ãåå¾*/199 /* プロパティを取得 */ 219 200 const EPRPINIB *ecn_agent_get_property(const EOBJINIB *fp_obj, uint8_t fa_epc, const EPRPINIB *item); 220 201 -
EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet_class.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 6 * ä¸è¨èä½æ¨©è 7 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 8 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 9 * å¤ã»åé 10 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 11 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 12 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 13 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 14 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 15 * ç¨ã§ããå½¢ã§åé 16 å¸ããå ´åã«ã¯ï¼åé 17 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 18 * è 19 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 20 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 21 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 * ç¨ã§ããªãå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 24 * ã¨ï¼ 25 * (a) åé 26 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 27 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 28 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 29 * (b) åé 30 å¸ã®å½¢æ 31 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 32 * å ±åãããã¨ï¼ 33 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 34 * 害ãããï¼ä¸è¨èä½æ¨©è 35 ããã³TOPPERSããã¸ã§ã¯ããå 36 責ãããã¨ï¼ 37 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 38 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ãã 40 * å 41 責ãããã¨ï¼ 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 8 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 9 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 10 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 11 * スコード中に含まれていること. 12 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 13 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 14 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 15 * の無保証規定を掲載すること. 16 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 17 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 18 * と. 19 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 20 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 21 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 22 * 報告すること. 23 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 24 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 25 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 * 免責すること. 42 28 * 43 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 44 ã 45 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 46 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 47 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 48 * ã®è²¬ä»»ãè² ããªãï¼ 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 49 34 * 50 35 */ … … 53 38 #define ECHONET_CLASS_H 54 39 55 /* ã»ã³ãµã¼é¢é£æ©å¨*/40 /* センサー関連機器 */ 56 41 #define EOJ_X1_SENSOR 0x00 57 42 58 /* 空調é¢é£æ©å¨*/43 /* 空調関連機器 */ 59 44 #define EOJ_X1_AIR_CONDITIONER 0x01 60 45 61 /* ä½å® 62 ã»è¨åé¢é£æ©å¨ */ 46 /* 住宅・設備関連機器 */ 63 47 #define EOJ_X1_AMENITY 0x02 64 48 65 /* 調çã»å®¶äºé¢é£æ©å¨*/49 /* 調理・家事関連機器 */ 66 50 #define EOJ_X1_HOUSEWORK 0x03 67 51 68 /* å¥åº·é¢é£æ©å¨*/52 /* 健康関連機器 */ 69 53 #define EOJ_X1_WELLNESS 0x04 70 54 71 /* 管çã»æä½é¢é£æ©å¨*/55 /* 管理・操作関連機器 */ 72 56 #define EOJ_X1_CONTROLLER 0x05 73 57 74 /* AV é¢é£æ©å¨*/58 /* AV関連機器 */ 75 59 #define EOJ_X1_AUDIO_VISUAL 0x06 76 60 77 /* ãããã¡ã¤ã«*/61 /* プロファイル */ 78 62 #define EOJ_X1_PROFILE 0x0E 79 63 80 /* ã¦ã¼ã¶ã¼å®ç¾©*/64 /* ユーザー定義 */ 81 65 #define EOJ_X1_USER_DEFINED 0x0F 82 66 83 67 /* 84 * ã»ã³ãµé¢é£æ©å¨ã¯ã©ã¹ã°ã«ã¼ã*85 */ 86 /* ã¬ã¹æ¼ãã»ã³ãµ*/68 * センサ関連機器クラスグループ * 69 */ 70 /* ガス漏れセンサ */ 87 71 #define EOJ_X2_GAS_LEAK_SENSOR 0x01 88 72 89 /* é²ç¯ã»ã³ãµ*/73 /* 防犯センサ */ 90 74 #define EOJ_X2_CRIME_PREVENTION_SENSOR 0x02 91 75 92 /* é常ãã¿ã³*/76 /* 非常ボタン */ 93 77 #define EOJ_X2_EMERGENCY_BUTTON 0x03 94 78 95 /* ææ¥ç¨ã»ã³ãµ*/79 /* 救急用センサ */ 96 80 #define EOJ_X2_FIRST_AID_SENSOR 0x04 97 81 98 /* å°éã»ã³ãµ*/82 /* 地震センサ */ 99 83 #define EOJ_X2_EARTHQUAKE_SENSOR 0x05 100 84 101 /* æ¼é»ã»ã³ãµ*/85 /* 漏電センサ */ 102 86 #define EOJ_X2_ELECTRIC_LEAK_SENSOR 0x06 103 87 104 /* 人ä½æ¤ç¥ã»ã³ãµ*/88 /* 人体検知センサ */ 105 89 #define EOJ_X2_HUMAN_DETECTION_SENSOR 0x07 106 90 107 /* æ¥å®¢ã»ã³ãµ*/91 /* 来客センサ */ 108 92 #define EOJ_X2_VISITOR_SENSOR 0x08 109 93 110 /* å¼ã³åºãã»ã³ãµ*/94 /* 呼び出しセンサ */ 111 95 #define EOJ_X2_CALL_SENSOR 0x09 112 96 113 /* çµé²ã»ã³ãµ*/97 /* 結露センサ */ 114 98 #define EOJ_X2_CONDENSATION_SENSOR 0x0A 115 99 116 /* 空æ°æ±æã»ã³ãµ*/100 /* 空気汚染センサ */ 117 101 #define EOJ_X2_AIR_POLLUTION_SENSOR 0x0B 118 102 119 /* é 120 ¸ç´ ã»ã³ãµ */ 103 /* 酸素センサ */ 121 104 #define EOJ_X2_OXYGEN_SENSOR 0x0C 122 105 123 /* ç 124 §åº¦ã»ã³ãµ */ 106 /* 照度センサ */ 125 107 #define EOJ_X2_ILLUMINANCE_SENSOR 0x0D 126 108 127 /* é³ã»ã³ãµ*/109 /* 音センサ */ 128 110 #define EOJ_X2_SOUND_SENSOR 0x0E 129 111 130 /* æå½ã»ã³ãµ*/112 /* 投函センサ */ 131 113 #define EOJ_X2_MAILING_SENSOR 0x0F 132 114 133 /* éè·ã»ã³ãµ*/115 /* 重荷センサ */ 134 116 #define EOJ_X2_WEIGHT_SENSOR 0x10 135 117 136 /* 温度ã»ã³ãµ*/118 /* 温度センサ */ 137 119 #define EOJ_X2_TEMPERATURE_SENSOR 0x11 138 120 139 /* 湿度ã»ã³ãµ*/121 /* 湿度センサ */ 140 122 #define EOJ_X2_HUMIDITY_SENSOR 0x12 141 123 142 /* é¨ã»ã³ãµ*/124 /* 雨センサ */ 143 125 #define EOJ_X2_RAIN_SENSOR 0x13 144 126 145 /* æ°´ä½ã»ã³ãµ*/127 /* 水位センサ */ 146 128 #define EOJ_X2_WATER_LEVEL_SENSOR 0x14 147 129 148 /* 風åæ°´ä½ã»ã³ãµ*/130 /* 風呂水位センサ */ 149 131 #define EOJ_X2_BATH_WATER_LEVEL_SENSOR 0x15 150 132 151 /* 風å沸ãä¸ããã»ã³ãµ*/133 /* 風呂沸き上がりセンサ */ 152 134 #define EOJ_X2_BATH_HEATING_STATUS_SENSOR 0x16 153 135 154 /* æ°´æ¼ãã»ã³ãµ*/136 /* 水漏れセンサ */ 155 137 #define EOJ_X2_WATER_LEAK_SENSOR 0x17 156 138 157 /* æ°´ããµãã»ã³ãµ*/139 /* 水あふれセンサ */ 158 140 #define EOJ_X2_WATER_OVERFLOW_SENSOR 0x18 159 141 160 /* ç«ç½ã»ã³ãµ*/142 /* 火災センサ */ 161 143 #define EOJ_X2_FIRE_SENSOR 0x19 162 144 163 /* ã¿ãã³ç 164 ã»ã³ãµ */ 145 /* タバコ煙センサ */ 165 146 #define EOJ_X2_CIGARETTE_SMOKE_SENSOR 0x1A 166 147 167 /* COï¼ã»ã³ãµ*/148 /* CO2センサ */ 168 149 #define EOJ_X2_CO2_SENSOR 0x1B 169 150 170 /* ã¬ã¹ã»ã³ãµ*/151 /* ガスセンサ */ 171 152 #define EOJ_X2_GAS_SENSOR 0x1C 172 153 173 /* VOCã»ã³ãµ*/154 /* VOCセンサ */ 174 155 #define EOJ_X2_VOC_SENSOR 0x1D 175 156 176 /* å·®å§ã»ã³ãµ*/157 /* 差圧センサ */ 177 158 #define EOJ_X2_DIFFERENTIAL_PRESSURE_SENSOR 0x1E 178 159 179 /* 風éã»ã³ãµ*/160 /* 風速センサ */ 180 161 #define EOJ_X2_AIR_SPEED_SENSOR 0x1F 181 162 182 /* èãã»ã³ãµ*/163 /* 臭いセンサ */ 183 164 #define EOJ_X2_ODOR_SENSOR 0x20 184 165 185 /* çã»ã³ãµ*/166 /* 炎センサ */ 186 167 #define EOJ_X2_FLAME_SENSOR 0x21 187 168 188 /* é»åéã»ã³ãµ*/169 /* 電力量センサ */ 189 170 #define EOJ_X2_ELECTRIC_ENERGY_SENSOR 0x22 190 171 191 /* é»æµéã»ã³ãµ*/172 /* 電流量センサ */ 192 173 #define EOJ_X2_CURRENT_VALUE_SENSOR 0x23 193 174 194 /* æ¼å 195 ã»ã³ãµ */ 175 /* 昼光センサ */ 196 176 #define EOJ_X2_DAYLIGHT_SENSOR 0x24 197 177 198 /* æ°´æµéã»ã³ãµ*/178 /* 水流量センサ */ 199 179 #define EOJ_X2_WATER_FLOW_RATE_SENSOR 0x25 200 180 201 /* å¾®åã»ã³ãµ*/181 /* 微動センサ */ 202 182 #define EOJ_X2_MICROMOTION_SENSOR 0x26 203 183 204 /* ééã»ã³ãµ*/184 /* 通過センサ */ 205 185 #define EOJ_X2_PASSAGE_SENSOR 0x27 206 186 207 /* å¨åºã»ã³ãµ*/187 /* 在床センサ */ 208 188 #define EOJ_X2_BED_PRESENCE_SENSOR 0x28 209 189 210 /* ééã»ã³ãµ*/190 /* 開閉センサ */ 211 191 #define EOJ_X2_OPEN_CLOSE_SENSOR 0x29 212 192 213 /* æ´»åéã»ã³ãµ*/193 /* 活動量センサ */ 214 194 #define EOJ_X2_ACTIVITY_AMOUNT_SENSOR 0x2A 215 195 216 /* 人ä½ä½ç½®ã»ã³ãµ*/196 /* 人体位置センサ */ 217 197 #define EOJ_X2_HUMAN_BODY_LOCATION_SENSOR 0x2B 218 198 219 /* éªã»ã³ãµ*/199 /* 雪センサ */ 220 200 #define EOJ_X2_SNOW_SENSOR 0x2C 221 201 222 202 /* 223 * 空調é¢é£æ©å¨ã¯ã©ã¹ã°ã«ã¼ã*224 */ 225 /* 家åºç¨ã¨ã¢ã³ã³*/203 * 空調関連機器クラスグループ * 204 */ 205 /* 家庭用エアコン */ 226 206 #define EOJ_X2_HOME_AIR_CONDITIONER 0x30 227 207 228 /* å·é¢¨æ©*/208 /* 冷風機 */ 229 209 #define EOJ_X2_COLD_BLASTER 0x31 230 210 231 /* æ風æ©*/211 /* 扇風機 */ 232 212 #define EOJ_X2_ELECTRIC_FAN 0x32 233 213 234 /* ææ°æ*/214 /* 換気扇 */ 235 215 #define EOJ_X2_VENTILATION_FAN 0x33 236 216 237 /* 空調ææ°æ*/217 /* 空調換気扇 */ 238 218 #define EOJ_X2_AIR_CONDITIONING_VENTILATION_FAN 0x34 239 219 240 /* 空æ°æ¸ 241 æµå¨ */ 220 /* 空気清浄器 */ 242 221 #define EOJ_X2_AIR_CLEANER 0x35 243 222 244 /* å·é¢¨æ*/223 /* 冷風扇 */ 245 224 #define EOJ_X2_COLD_BLAST_FAN 0x36 246 225 247 /* ãµã¼ãã¥ã¬ã¼ã¿*/226 /* サーキュレータ */ 248 227 #define EOJ_X2_CIRCULATOR 0x37 249 228 250 /* é¤æ¹¿æ©*/229 /* 除湿機 */ 251 230 #define EOJ_X2_DEHUMIDIFIER 0x38 252 231 253 /* å 湿å¨*/232 /* 加湿器 */ 254 233 #define EOJ_X2_HUMIDIFIER 0x39 255 234 256 /* 天äºæ*/235 /* 天井扇 */ 257 236 #define EOJ_X2_CEILING_FAN 0x3A 258 237 259 /* é»æ°ããã¤*/238 /* 電気こたつ */ 260 239 #define EOJ_X2_ELECTRIC_KOTATSU 0x3B 261 240 262 /* é»æ°ããã*/241 /* 電気あんか */ 263 242 #define EOJ_X2_ELECTRIC_HEATING_PAD 0x3C 264 243 265 /* é»æ°æ¯å¸*/244 /* 電気毛布 */ 266 245 #define EOJ_X2_ELECTRIC_BLANKET 0x3D 267 246 268 /* ã¹ãã¼ã*/247 /* ストーブ */ 269 248 #define EOJ_X2_SPACE_HEATER 0x3E 270 249 271 /* ããã«ãã¼ã¿*/250 /* パネルヒータ */ 272 251 #define EOJ_X2_PANEL_HEATER 0x3F 273 252 274 /* é»æ°ã«ã¼ããã*/253 /* 電気カーペット */ 275 254 #define EOJ_X2_ELECTRIC_CARPET 0x40 276 255 277 /* ããã¢ãã¼ã¿*/256 /* フロアヒータ */ 278 257 #define EOJ_X2_FLOOR_HEATER 0x41 279 258 280 /* é»æ°ææ¿å¨*/259 /* 電気暖房器 */ 281 260 #define EOJ_X2_ELECTRIC_HEATER 0x42 282 261 283 /* ãã¡ã³ãã¼ã¿*/262 /* ファンヒータ */ 284 263 #define EOJ_X2_FAN_HEATER 0x43 285 264 286 /* å 287 288 é»å¨ */ 265 /* 充電器 */ 289 266 #define EOJ_X2_BATTERY_CHARGER 0x44 290 267 291 /* æ¥åç¨ããã±ã¼ã¸ã¨ã¢ã³ã³å®¤å 292 æ© */ 268 /* 業務用パッケージエアコン室内機 */ 293 269 #define EOJ_X2_PACKAGE_TYPE_COMMERCIAL_AIR_CONDITIONER_INDOOR_UNIT 0x45 294 270 295 /* æ¥åç¨ããã±ã¼ã¸ã¨ã¢ã³ã³å®¤å¤æ©*/271 /* 業務用パッケージエアコン室外機 */ 296 272 #define EOJ_X2_PACKAGE_TYPE_COMMERCIAL_AIR_CONDITIONER_OUTDOOR_UNIT 0x46 297 273 298 /* æ¥åç¨ããã±ã¼ã¸ã¨ã¢ã³ã³èç±ã¦ããã*/274 /* 業務用パッケージエアコン蓄熱ユニット */ 299 275 #define EOJ_X2_PACKAGE_TYPE_COMMERCIAL_AIR_CONDITIONER_THERMAL_STORAGE_UNIT 0x47 300 276 301 /* æ¥åç¨ãã¡ã³ã³ã¤ã«ã¦ããã*/277 /* 業務用ファンコイルユニット */ 302 278 #define EOJ_X2_COMMERCIAL_FAN_COIL_UNIT 0x48 303 279 304 /* æ¥åç¨ç©ºèª¿å·ç±æº(ãã©ã¼) */280 /* 業務用空調冷熱源(チラー) */ 305 281 #define EOJ_X2_COMMERCIAL_AIR_CONDITIONING_COLD_SOURCE_CHILLER 0x49 306 282 307 /* æ¥åç¨ç©ºèª¿æ¸©ç±æº(ãã¤ã©ã¼) */283 /* 業務用空調温熱源(ボイラー) */ 308 284 #define EOJ_X2_COMMERCIAL_AIR_CONDITIONING_HEAT_SOURCE_BOILER 0x50 309 285 310 /* æ¥åç¨ç©ºèª¿VAV */286 /* 業務用空調VAV */ 311 287 #define EOJ_X2_AIR_CONDITIONING_VAV_FOR_COMMERCIAL_APPLICATION 0x51 312 288 313 /* æ¥åç¨ç©ºèª¿ã¨ã¢ãã³ããªã³ã°ã¦ããã*/289 /* 業務用空調エアハンドリングユニット */ 314 290 #define EOJ_X2_AIR_HANDLING_UNIT_AIR_CONDITIONING_FOR_COMMERCIAL_APPLICATION 0x52 315 291 316 /* ã¦ãããã¯ã¼ã©ã¼*/292 /* ユニットクーラー */ 317 293 #define EOJ_X2_UNIT_COOLER 0x53 318 294 319 /* æ¥åç¨ã³ã³ãã³ã·ã³ã°ã¦ããã*/295 /* 業務用コンデンシングユニット */ 320 296 #define EOJ_X2_CONDENSING_UNIT_FOR_COMMERCIAL_APPLICATION 0x54 321 297 322 298 /* 323 * ä½å® 324 ã»è¨åé¢é£æ©å¨ã¯ã©ã¹ã°ã«ã¼ã * 325 */ 326 /* é»åãã©ã¤ã³ã */ 299 * 住宅・設備関連機器クラスグループ * 300 */ 301 /* 電動ブラインド */ 327 302 #define EOJ_X2_ELECTRICALLY_OPERATED_SHADE 0x60 328 303 329 /* é»åã·ã£ãã¿ã¼*/304 /* 電動シャッター */ 330 305 #define EOJ_X2_ELECTRICALLY_OPERATED_SHUTTER 0x61 331 306 332 /* é»åã«ã¼ãã³*/307 /* 電動カーテン */ 333 308 #define EOJ_X2_ELECTRICALLY_OPERATED_CURTAIN 0x62 334 309 335 /* é»åé¨æ¸*/310 /* 電動雨戸 */ 336 311 #define EOJ_X2_ELECTRICALLY_OPERATED_STORM_WINDOW 0x63 337 312 338 /* é»åã¬ã¬ã¼ã¸*/313 /* 電動ガレージ */ 339 314 #define EOJ_X2_ELECTRICALLY_OPERATED_DOOR 0x64 340 315 341 /* é»å天çª*/316 /* 電動天窓 */ 342 317 #define EOJ_X2_ELECTRICALLY_OPERATED_SKYLIGHT 0x65 343 318 344 /* ãªã¼ãã³ã°ï¼æ¥ããï¼*/319 /* オーニング(日よけ) */ 345 320 #define EOJ_X2_AWNING 0x66 346 321 347 /* æ£æ°´å¨ï¼åºç¨ï¼*/322 /* 散水器(庭用) */ 348 323 #define EOJ_X2_GARDEN_SPRINKLER 0x67 349 324 350 /* æ£æ°´å¨ï¼ç«ç½ç¨ï¼*/325 /* 散水器(火災用) */ 351 326 #define EOJ_X2_FIRE_SPRINKLER 0x68 352 327 353 /* å´æ°´*/328 /* 噴水 */ 354 329 #define EOJ_X2_FOUNTAIN 0x69 355 330 356 /* ç¬é湯沸å¨*/331 /* 瞬間湯沸器 */ 357 332 #define EOJ_X2_INSTANTANEOUS_WATER_HEATERS 0x6A 358 333 359 /* é»æ°æ¸©æ°´å¨*/334 /* 電気温水器 */ 360 335 #define EOJ_X2_ELECTRIC_WATER_HEATER 0x6B 361 336 362 /* 太é½ç±æ¸©æ°´å¨*/337 /* 太陽熱温水器 */ 363 338 #define EOJ_X2_SOLAR_WATER_HEATER 0x6C 364 339 365 /* 循ç°ãã³ã*/340 /* 循環ポンプ */ 366 341 #define EOJ_X2_CIRCULATION_PUMP 0x6D 367 342 368 /* é»æ°ä¾¿åº§ï¼æ¸©æ°´æ´æµä¾¿åº§ãææ¿ä¾¿åº§ãªã©ï¼*/343 /* 電気便座(温水洗浄便座、暖房便座など) */ 369 344 #define EOJ_X2_BIDET_EQUIPPED_TOILET 0x6E 370 345 371 /* é»æ°é*/346 /* 電気錠 */ 372 347 #define EOJ_X2_ELECTRIC_KEY 0x6F 373 348 374 /* ã¬ã¹å 375 å¼ */ 349 /* ガス元弁 */ 376 350 #define EOJ_X2_GAS_LINE_VALVE 0x70 377 351 378 /* ãã¼ã ãµã¦ã*/352 /* ホームサウナ */ 379 353 #define EOJ_X2_HOME_SAUNA 0x71 380 354 381 /* ç¬éå¼çµ¦æ¹¯å¨*/355 /* 瞬間式給湯器 */ 382 356 #define EOJ_X2_HOT_WATER_GENERATOR 0x72 383 357 384 /* 浴室ææ¿ä¹¾ç¥æ©*/358 /* 浴室暖房乾燥機 */ 385 359 #define EOJ_X2_BATHROOM_DRYER 0x73 386 360 387 /* ãã¼ã ã¨ã¬ãã¼ã¿*/361 /* ホームエレベータ */ 388 362 #define EOJ_X2_HOME_ELEVATOR 0x74 389 363 390 /* é»åéä»åã*/364 /* 電動間仕切り */ 391 365 #define EOJ_X2_ELECTRICALLY_OPERATED_ROOM_DIVIDER 0x75 392 366 393 /* æ°´å¹³ãã©ã³ã¹ãã¡*/367 /* 水平トランスファ */ 394 368 #define EOJ_X2_HORIZONTAL_TRANSFER 0x76 395 369 396 /* é»åç©å¹²ã*/370 /* 電動物干し */ 397 371 #define EOJ_X2_ELECTRICALLY_OPERATED_CLOTHES_DRYING_POLE 0x77 398 372 399 /* æµå槽*/373 /* 浄化槽 */ 400 374 #define EOJ_X2_SEPTIC_TANK 0x78 401 375 402 /* ä½å® 403 ç¨å¤ªé½å 404 çºé» */ 376 /* 住宅用太陽光発電 */ 405 377 #define EOJ_X2_HOME_SOLAR_POWER_GENERATION 0x79 406 378 407 /* å·æ¸©æ°´ç±æºæ©*/379 /* 冷温水熱源機 */ 408 380 #define EOJ_X2_COLD_AND_HOT_WATER_HEAT_SOURCE_EQUIPMENT 0x7A 409 381 410 /* åºææ¿*/382 /* 床暖房 */ 411 383 #define EOJ_X2_FLOOR_HEATING 0x7B 412 384 413 /* çæé»æ±*/385 /* 燃料電池 */ 414 386 #define EOJ_X2_FUEL_CELL 0x7C 415 387 416 /* èé»æ±*/388 /* 蓄電池 */ 417 389 #define EOJ_X2_STORAGE_BATTERY 0x7D 418 390 419 /* é»æ°èªåè»å 420 421 æ¾é»ã·ã¹ãã */ 391 /* 電気自動車充放電システム */ 422 392 #define EOJ_X2_ELECTRIC_VEHICLE 0x7E 423 393 424 /* é»åéã¡ã¼ã¿*/394 /* 電力量メータ */ 425 395 #define EOJ_X2_ELECTRIC_ENERGY_METER 0x80 426 396 427 /* æ°´æµéã¡ã¼ã¿*/397 /* 水流量メータ */ 428 398 #define EOJ_X2_WATER_FLOW_METER 0x81 429 399 430 /* ã¬ã¹ã¡ã¼ã¿*/400 /* ガスメータ */ 431 401 #define EOJ_X2_GAS_METER 0x82 432 402 433 /* LP ã¬ã¹ã¡ã¼ã¿*/403 /* LPガスメータ */ 434 404 #define EOJ_X2_LP_GAS_METERS 0x83 435 405 436 /* æè¨*/406 /* 時計 */ 437 407 #define EOJ_X2_CLOCK 0x84 438 408 439 /* èªåãã¢*/409 /* 自動ドア */ 440 410 #define EOJ_X2_AUTOMATIC_DOOR 0x85 441 411 442 /* æ¥åç¨ã¨ã¬ãã¼ã¿*/412 /* 業務用エレベータ */ 443 413 #define EOJ_X2_COMMERCIAL_ELEVATOR 0x86 444 414 445 /* åé»ç¤ã¡ã¼ã¿ãªã³ã°*/415 /* 分電盤メータリング */ 446 416 #define EOJ_X2_DISTRIBUTION_PANEL_METERING 0x87 447 417 448 /* ã¹ãã¼ãé»åéã¡ã¼ã¿*/418 /* スマート電力量メータ */ 449 419 #define EOJ_X2_SMART_ELECTRIC_ENERGY_METER 0x88 450 420 451 /* ã¹ãã¼ãã¬ã¹ã¡ã¼ã¿*/421 /* スマートガスメータ */ 452 422 #define EOJ_X2_SMART_GAS_METER 0x89 453 423 454 /* ä¸è¬ç 455 §æ */ 424 /* 一般照明 */ 456 425 #define EOJ_X2_GENERAL_LIGHTING_CLASS 0x90 457 426 458 /* é常ç 459 §æ */ 427 /* 非常照明 */ 460 428 #define EOJ_X2_EMERGENCY_LIGHTING 0x99 461 429 462 /* è¨åç 463 §æ */ 430 /* 設備照明 */ 464 431 #define EOJ_X2_EQUIPMENT_LIGHT 0x9D 465 432 466 /* ãã¶ã¼*/433 /* ブザー */ 467 434 #define EOJ_X2_BUZZER 0xA0 468 435 469 436 /* 470 * 調çã»å®¶äºé¢é£æ©å¨ã¯ã©ã¹ã°ã«ã¼ã*471 */ 472 /* ã³ã¼ãã¼ã¡ã¼ã«*/437 * 調理・家事関連機器クラスグループ * 438 */ 439 /* コーヒーメーカ */ 473 440 #define EOJ_X2_COFFEE_MACHINE 0xB0 474 441 475 /* ã³ã¼ãã¼ãã«*/442 /* コーヒーミル */ 476 443 #define EOJ_X2_COFFEE_MILL 0xB1 477 444 478 /* é»æ°ããã*/445 /* 電気ポット */ 479 446 #define EOJ_X2_ELECTRIC_HOT_WATER_POT 0xB2 480 447 481 /* é»æ°ããã*/448 /* 電気こんろ */ 482 449 #define EOJ_X2_ELECTRIC_STOVE 0xB3 483 450 484 /* ãã¼ã¹ã¿*/451 /* トースタ */ 485 452 #define EOJ_X2_TOASTER 0xB4 486 453 487 /* ã¸ã¥ã¼ãµã»ãããµ*/454 /* ジューサ・ミキサ */ 488 455 #define EOJ_X2_JUICER_FOOD_MIXER 0xB5 489 456 490 /* ãã¼ãããã»ããµ*/457 /* フードプロセッサ */ 491 458 #define EOJ_X2_FOOD_PROCESSOR 0xB6 492 459 493 /* å·åå·èµåº«*/460 /* 冷凍冷蔵庫 */ 494 461 #define EOJ_X2_REFRIGERATOR_FREEZER 0xB7 495 462 496 /* ãªã¼ãã³ã¬ã³ã¸*/463 /* オーブンレンジ */ 497 464 #define EOJ_X2_COMBINATION_MICROWAVE_OVEN 0xB8 498 465 499 /* ã¯ããã³ã°ãã¼ã¿*/466 /* クッキングヒータ */ 500 467 #define EOJ_X2_COOKING_HEATER 0xB9 501 468 502 /* ãªã¼ãã³*/469 /* オーブン */ 503 470 #define EOJ_X2_OVEN 0xBA 504 471 505 /* ç飯å¨*/472 /* 炊飯器 */ 506 473 #define EOJ_X2_RICE_COOKER 0xBB 507 474 508 /* é»åã¸ã£ã¼*/475 /* 電子ジャー */ 509 476 #define EOJ_X2_ELECTRONIC_JAR 0xBC 510 477 511 /* é£å¨æ´ãæ©*/478 /* 食器洗い機 */ 512 479 #define EOJ_X2_DISH_WASHER 0xBD 513 480 514 /* é£å¨ä¹¾ç¥æ©*/481 /* 食器乾燥機 */ 515 482 #define EOJ_X2_DISH_DRYER 0xBE 516 483 517 /* é»æ°ãã¡ã¤ãæ©*/484 /* 電気もちつき機 */ 518 485 #define EOJ_X2_ELECTRIC_RICE_CAKE_COOKER 0xBF 519 486 520 /* ä¿æ¸©æ©*/487 /* 保温機 */ 521 488 #define EOJ_X2_KEEP_WARM_MACHINE 0xC0 522 489 523 /* 精米æ©*/490 /* 精米機 */ 524 491 #define EOJ_X2_RICE_MILL 0xC1 525 492 526 /* èªå製ãã³æ©*/493 /* 自動製パン機 */ 527 494 #define EOJ_X2_AUTOMATIC_BREAD_COOKER 0xC2 528 495 529 /* ã¹ãã¼ã¯ãã«ã¼*/496 /* スロークッカー */ 530 497 #define EOJ_X2_SLOW_COOKER 0xC3 531 498 532 /* é»æ°æ¼¬ç©æ©*/499 /* 電気漬物機 */ 533 500 #define EOJ_X2_ELECTRIC_PICKLES_COOKER 0xC4 534 501 535 /* æ´æ¿¯æ©*/502 /* 洗濯機 */ 536 503 #define EOJ_X2_WASHING_MACHINE 0xC5 537 504 538 /* è¡£é¡ä¹¾ç¥æ©*/505 /* 衣類乾燥機 */ 539 506 #define EOJ_X2_CLOTH_DRYER 0xC6 540 507 541 /* é»æ°ã¢ã¤ãã³*/508 /* 電気アイロン */ 542 509 #define EOJ_X2_ELECTRIC_IRON 0xC7 543 510 544 /* ãºãã³ãã¬ããµ*/511 /* ズボンプレッサ */ 545 512 #define EOJ_X2_TROUSER_PRESS 0xC8 546 513 547 /* ãµã¨ãä¹¾ç¥æ©*/514 /* ふとん乾燥機 */ 548 515 #define EOJ_X2_FUTON_DRYER 0xC9 549 516 550 /* å°ç©ã»ãã¤ä¹¾ç¥æ©*/517 /* 小物・くつ乾燥機 */ 551 518 #define EOJ_X2_SMALL_ARTICLE_SHOES_DRYER 0xCA 552 519 553 /* é»æ°æé¤æ©ï¼ã»ã³ãã©ã«ã¯ãªã¼ãå«ãï¼*/520 /* 電気掃除機(セントラルクリーナ含む) */ 554 521 #define EOJ_X2_ELECTRIC_VACUUM_CLEANER 0xCB 555 522 556 /* ãã£ã¹ãã¼ã¶*/523 /* ディスポーザ */ 557 524 #define EOJ_X2_DISPOSER 0xCC 558 525 559 /* é»æ°èåãæ©*/526 /* 電気蚊取り機 */ 560 527 #define EOJ_X2_ELECTRIC_MOSQUITO_CATCHER 0xCD 561 528 562 /* æ¥åç¨ã·ã§ã¼ã±ã¼ã¹*/529 /* 業務用ショーケース */ 563 530 #define EOJ_X2_COMMERCIAL_SHOW_CASE 0xCE 564 531 565 /* æ¥åç¨å·èµåº«*/532 /* 業務用冷蔵庫 */ 566 533 #define EOJ_X2_COMMERCIAL_REFRIGERATOR 0xCF 567 534 568 /* æ¥åç¨ãããã±ã¼ã¹*/535 /* 業務用ホットケース */ 569 536 #define EOJ_X2_COMMERCIAL_HOT_CASE 0xD0 570 537 571 /* æ¥åç¨ãã©ã¤ã¤ã¼*/538 /* 業務用フライヤー */ 572 539 #define EOJ_X2_COMMERCIAL_FRYER 0xD1 573 540 574 /* æ¥åç¨é»åã¬ã³ã¸*/541 /* 業務用電子レンジ */ 575 542 #define EOJ_X2_COMMERCIAL_MICROWAVE_OVEN 0xD2 576 543 577 /* æ´æ¿¯ä¹¾ç¥æ©*/544 /* 洗濯乾燥機 */ 578 545 #define EOJ_X2_WASHER_AND_DRYER 0xD3 579 546 580 547 /* 581 * å¥åº·é¢é£æ©å¨ã¯ã©ã¹ã°ã«ã¼ã*582 */ 583 /* ä½éè¨*/548 * 健康関連機器クラスグループ * 549 */ 550 /* 体重計 */ 584 551 #define EOJ_X2_WEIGHING_MACHINE 0x01 585 552 586 /* ä½æ¸©è¨*/553 /* 体温計 */ 587 554 #define EOJ_X2_CLINICAL_THERMOMETER 0x02 588 555 589 /* è¡å§è¨*/556 /* 血圧計 */ 590 557 #define EOJ_X2_BLOOD_PRESSURE_METER 0x03 591 558 592 /* è¡ç³å¤è¨*/559 /* 血糖値計 */ 593 560 #define EOJ_X2_BLOOD_SUGAR_METER 0x04 594 561 595 /* ä½èèªè¨*/562 /* 体脂肪計 */ 596 563 #define EOJ_X2_BODY_FAT_METER 0x05 597 564 598 565 /* 599 * 管çã»æä½é¢é£æ©å¨ã¯ã©ã¹ã°ã«ã¼ã * 600 */ 601 /* ã»ãã¥ã¢éä¿¡ç¨å 602 ±æéµè¨å®ãã¼ã */ 566 * 管理・操作関連機器クラスグループ * 567 */ 568 /* セキュア通信用共有鍵設定ノード */ 603 569 #define EOJ_X2_SECURE_COMMUNICATION_SHARED_KEY_SETUP_NODE 0xFC 604 570 605 /* ã¹ã¤ããï¼JEMA/HA端å対å¿ï¼*/571 /* スイッチ(JEMA/HA端子対応) */ 606 572 #define EOJ_X2_SWITCH 0xFD 607 573 608 /* æºå¸¯ç«¯æ«*/574 /* 携帯端末 */ 609 575 #define EOJ_X2_PORTABLE_TERMINAL 0xFE 610 576 611 /* ã³ã³ããã¼ã©*/577 /* コントローラ */ 612 578 #define EOJ_X2_CONTROLLER 0xFF 613 579 614 580 /* 615 * AVé¢é£æ©å¨ã¯ã©ã¹ã°ã«ã¼ã*616 */ 617 /* ãã£ã¹ãã¬ã¼*/581 * AV関連機器クラスグループ * 582 */ 583 /* ディスプレー */ 618 584 #define EOJ_X2_DISPLAY 0x01 619 585 620 /* ãã¬ã*/586 /* テレビ */ 621 587 #define EOJ_X2_TELEVISION 0x02 622 588 623 589 /* 624 * ãããã¡ã¤ã«ã¯ã©ã¹ã°ã«ã¼ã*625 */ 626 /* ãã¼ããããã¡ã¤ã«*/590 * プロファイルクラスグループ * 591 */ 592 /* ノードプロファイル */ 627 593 #define EOJ_X2_NODE_PROFILE 0xF0 628 594 -
EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet_dbg.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r270 r321 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 6 * ä¸è¨èä½æ¨©è 7 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 8 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 9 * å¤ã»åé 10 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 11 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 12 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 13 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 14 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 15 * ç¨ã§ããå½¢ã§åé 16 å¸ããå ´åã«ã¯ï¼åé 17 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 18 * è 19 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 20 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 21 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 * ç¨ã§ããªãå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 24 * ã¨ï¼ 25 * (a) åé 26 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 27 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 28 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 29 * (b) åé 30 å¸ã®å½¢æ 31 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 32 * å ±åãããã¨ï¼ 33 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 34 * 害ãããï¼ä¸è¨èä½æ¨©è 35 ããã³TOPPERSããã¸ã§ã¯ããå 36 責ãããã¨ï¼ 37 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 38 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ãã 40 * å 41 責ãããã¨ï¼ 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 8 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 9 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 10 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 11 * スコード中に含まれていること. 12 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 13 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 14 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 15 * の無保証規定を掲載すること. 16 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 17 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 18 * と. 19 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 20 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 21 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 22 * 報告すること. 23 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 24 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 25 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 * 免責すること. 42 28 * 43 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 44 ã 45 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 46 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 47 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 48 * ã®è²¬ä»»ãè² ããªãï¼ 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 49 34 * 50 35 */ 51 36 52 37 /* 53 * ECHONET Lite ã¿ã¹ã¯ ãããã°åºå38 * ECHONET Lite タスク デバッグ出力 54 39 */ 55 40 … … 76 61 static ER _ecn_dbg_wai_syslog(void); 77 62 /* 78 * syslog()ãããã¡ã«ä½è£ãã§ããã¾ã§å¾ 79 㤠63 * syslog()バッファに余裕ができるまで待つ 80 64 */ 81 65 static ER _ecn_dbg_wai_syslog(void) … … 118 102 119 103 /* 120 * ãããã°åºå121 * ä¾ï¼ECN_DBG_PUT_2("task start");104 * デバッグ出力 105 * 例: ECN_DBG_PUT_2("task start"); 122 106 */ 123 107 int _ecn_dbg_dbgput(ecnl_svc_task_t *svc, const char *fp_srcloc, const char *fp_form, ...) … … 127 111 #ifdef ECN_DBG_PUT_USE_STATIC 128 112 #ifndef SEM_ECN_DBG_PUT 129 /* 256byte ãããã¡8æ¬ãã¼ãã¼ã·ã§ã³*/113 /* 256byteバッファ8本ローテーション */ 130 114 static char a_buf[8][256]; 131 115 static volatile uint_t a_buf_idx = 0; 132 116 uint_t a_buf_idx_a; 133 117 #else 134 /* ã»ããã©ãç¨ãã¦ã1æ¬ã®ãããã¡ä¸ã«æååã並ã¹ã¦ä½¿ã*/118 /* セマフォを用いて、1本のバッファ上に文字列を並べて使う */ 135 119 static char a_buf[1024]; 136 120 static volatile uint_t a_buf_pos = 0; … … 155 139 p_buf = a_buf[a_buf_idx_a & 0x07]; 156 140 #else 157 if (sizeof(a_buf) - a_buf_pos < 80) /* æ®ãã80byteæªæºã«ãªã£ãããå 158 é ã«æ»ã */ 141 if (sizeof(a_buf) - a_buf_pos < 80) /* 残りが80byte未満になったら、先頭に戻る */ 159 142 a_buf_pos = 0; 160 143 p_buf = a_buf + a_buf_pos; 161 144 a_buf_len = sizeof(a_buf) - a_buf_pos - 1; 162 if (80 * 2 <= a_buf_len) /* 80byte*2 以ä¸ã®ä½ç½ããããã¡ã¯ãæ«å°¾80byteãæ®ã*/145 if (80 * 2 <= a_buf_len) /* 80byte*2以上の余白があるうちは、末尾80byteを残す */ 163 146 a_buf_len -= 80; 164 147 #endif /* #ifdef SEM_ECN_DBG_PUT */ … … 184 167 #ifdef SEM_ECN_DBG_PUT 185 168 a_buf_len = strlen(p_buf) + 1; 186 /* æ®ãã80byteæªæºã«ãªã£ãã*/169 /* 残りが80byte未満になったら */ 187 170 if (sizeof(a_buf) - a_buf_pos - a_buf_len < 80) { 188 /* å 189 é ã«æ»ã */ 171 /* 先頭に戻る */ 190 172 a_buf_pos = 0; 191 173 } else { … … 195 177 #endif 196 178 197 _ECN_DBG_WAI_SYSLOG; /* syslog()ãããã¡ã«ä½è£ãã§ããã¾ã§å¾ 198 㤠*/ 179 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 199 180 200 181 #ifdef SEM_ECN_DBG_PUT … … 212 193 } 213 194 214 /* ECN_ENOD_ID ã®æååå¤æ*/195 /* ECN_ENOD_IDの文字列変換 */ 215 196 const char *_ecn_dbg_enod2str(ECN_ENOD_ID fa_enod_id) 216 197 { … … 260 241 261 242 /* 262 * ãã¤ããªãã³ãåºå243 * バイナリダンプ出力 263 244 */ 264 245 void _ecn_dbg_bindmp(const uint8_t *buffer, size_t len) 265 246 { 266 /* static é åã®ãããã¡ãåãæ¿ããåæ°(2^n) */247 /* static領域のバッファを切り替える個数(2^n) */ 267 248 #define _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT (4) 268 249 /* */ … … 270 251 #ifdef _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT 271 252 #undef _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT 272 /* ã»ããã©(SEM_ECN_DBG_BINDMP)ãå®ç¾©ããã¦ããå ´åããããã¡åãæ¿ãã¯ä¸è¦ãªã®ã§undef */253 /* セマフォ(SEM_ECN_DBG_BINDMP)が定義されている場合、バッファ切り替えは不要なのでundef */ 273 254 #endif 274 255 #endif 275 256 #ifndef _ECN_FBS_DBG_BINDMP_BUFLEN 276 /* ãããã¡ãµã¤ãº(bindmpä¸ã®1è¡ãåã¾ããµã¤ãº) */257 /* バッファサイズ(bindmp中の1行が収まるサイズ) */ 277 258 #define _ECN_FBS_DBG_BINDMP_BUFLEN (80) 278 259 #endif 279 260 #ifdef _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT 280 /* static é åã®ãããã¡ãåãæ¿ããããã®ç®¡çç¨å¤æ°*/261 /* static領域のバッファを切り替えるための管理用変数 */ 281 262 static volatile uint8_t a_idx_vol = 0; 282 /* static é åã®ãããã¡åãæ¿ãé å*/263 /* static領域のバッファ切り替え領域 */ 283 264 static char a_buf_area[1 << _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT][_ECN_FBS_DBG_BINDMP_BUFLEN]; 284 265 uint8_t a_idx; 285 266 char *a_buf; 286 267 #else 287 /* static é åã®ãããã¡é å*/268 /* static領域のバッファ領域 */ 288 269 static char a_buf[_ECN_FBS_DBG_BINDMP_BUFLEN]; 289 270 #endif 290 const uint8_t *p = buffer; /* èªã¿åããã¤ã³ã¿*/271 const uint8_t *p = buffer; /* 読み取りポインタ */ 291 272 int i, a_blk, a_blk_max, a_pos = 0; 292 273 const T_ECN_EDT_HDR *p_req_esv; … … 305 286 } 306 287 #ifndef ECN_DBG_BINDMP_MAXLEN 307 /* bindmp åºåã®æ大ãµã¤ãº*/288 /* bindmp出力の最大サイズ */ 308 289 #define ECN_DBG_BINDMP_MAXLEN 1600 309 290 #endif … … 320 301 for (a_blk = 0; p && a_blk < a_blk_max; p = ((T_ECN_FST_BLK *)buffer)->lnk.p_sub[a_blk++]->payload) { 321 302 if (0 < a_blk) { 322 _ECN_DBG_WAI_SYSLOG; /* syslog()ãããã¡ã«ä½è£ãã§ããã¾ã§å¾ 323 㤠*/ 303 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 324 304 printf("p_sub[%d] (0x%p)", a_blk - 1, p); 325 305 } … … 328 308 if (i % 16 == 0) { 329 309 if (a_buf[0]) { 330 _ECN_DBG_WAI_SYSLOG; /* syslog()ãããã¡ã«ä½è£ãã§ããã¾ã§å¾ 331 㤠*/ 310 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 332 311 printf("%s", a_buf); 333 312 } … … 349 328 } 350 329 if (a_buf[0]) { 351 _ECN_DBG_WAI_SYSLOG; /* syslog()ãããã¡ã«ä½è£ãã§ããã¾ã§å¾ 352 㤠*/ 330 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 353 331 printf("%s", a_buf); 354 332 } … … 361 339 case ECN_MSG_ECHONET: 362 340 p_req_esv = (T_ECN_EDT_HDR *)&((const T_ECN_FST_BLK *)buffer)->payload; 363 _ECN_DBG_WAI_SYSLOG; /* syslog()ãããã¡ã«ä½è£ãã§ããã¾ã§å¾ 364 㤠*/ 341 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 365 342 printf(" sender: %d %s, target: %d %s", 366 343 ((T_ECN_FST_BLK *)buffer)->hdr.sender.id, _ecn_dbg_enod2str(((T_ECN_FST_BLK *)buffer)->hdr.sender.id), 367 344 ((T_ECN_FST_BLK *)buffer)->hdr.target.id, _ecn_dbg_enod2str(((T_ECN_FST_BLK *)buffer)->hdr.target.id)); 368 _ECN_DBG_WAI_SYSLOG; /* syslog()ãããã¡ã«ä½è£ãã§ããã¾ã§å¾ 369 㤠*/ 345 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 370 346 printf(" ecn_hdr: 0x%02X 0x%02X 0x%04X", p_req_esv->ecn_hdr.ehd1, p_req_esv->ecn_hdr.ehd2, p_req_esv->ecn_hdr.tid); 371 _ECN_DBG_WAI_SYSLOG; /* syslog()ãããã¡ã«ä½è£ãã§ããã¾ã§å¾ 372 㤠*/ 347 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 373 348 printf(" edata: 0x%06X 0x%06X 0x%02X 0x%02X (%s)", 374 349 p_req_esv->edata.seoj.eojx1 << 16 | p_req_esv->edata.seoj.eojx2 << 8 | p_req_esv->edata.seoj.eojx3, 375 350 p_req_esv->edata.deoj.eojx1 << 16 | p_req_esv->edata.deoj.eojx2 << 8 | p_req_esv->edata.deoj.eojx3, 376 351 p_req_esv->edata.esv, p_req_esv->edata.opc, _ecn_dbg_esv2str(p_req_esv->edata.esv)); 377 _ECN_DBG_WAI_SYSLOG; /* syslog()ãããã¡ã«ä½è£ãã§ããã¾ã§å¾ 378 㤠*/ 352 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 379 353 printf(" ecn_prp: 0x%02X 0x%02X", p_req_esv->ecn_prp.epc, p_req_esv->ecn_prp.pdc); 380 _ECN_DBG_WAI_SYSLOG; /* syslog()ãããã¡ã«ä½è£ãã§ããã¾ã§å¾ 381 㤠*/ 354 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 382 355 printf(" cur(blk/pos): wr %d, rd %d", 383 356 (int)((T_ECN_FST_BLK *)buffer)->hdr.wr, … … 419 392 && ((const T_ECN_FST_BLK *)buffer)->payload[1] == 0x81) { 420 393 p_req_esv = (const T_ECN_EDT_HDR *)&((const T_ECN_FST_BLK *)buffer)->payload[0]; 421 _ECN_DBG_WAI_SYSLOG; /* syslog()ãããã¡ã«ä½è£ãã§ããã¾ã§å¾ 422 㤠*/ 394 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 423 395 printf(" ecn_hdr: 0x%02X 0x%02X 0x%04X", p_req_esv->ecn_hdr.ehd1, p_req_esv->ecn_hdr.ehd2, p_req_esv->ecn_hdr.tid); 424 _ECN_DBG_WAI_SYSLOG; /* syslog()ãããã¡ã«ä½è£ãã§ããã¾ã§å¾ 425 㤠*/ 396 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 426 397 printf(" edata: 0x%06X 0x%06X 0x%02X 0x%02X (%s)", 427 398 p_req_esv->edata.seoj.eojx1 << 16 | p_req_esv->edata.seoj.eojx2 << 8 | p_req_esv->edata.seoj.eojx3, 428 399 p_req_esv->edata.deoj.eojx1 << 16 | p_req_esv->edata.deoj.eojx2 << 8 | p_req_esv->edata.deoj.eojx3, 429 400 p_req_esv->edata.esv, p_req_esv->edata.opc, _ecn_dbg_esv2str(p_req_esv->edata.esv)); 430 _ECN_DBG_WAI_SYSLOG; /* syslog()ãããã¡ã«ä½è£ãã§ããã¾ã§å¾ 431 㤠*/ 401 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 432 402 printf(" ecn_prp: 0x%02X 0x%02X", p_req_esv->ecn_prp.epc, p_req_esv->ecn_prp.pdc); 433 403 } … … 438 408 439 409 /* 440 * ECHONET Lite ãµã¼ãã¹ã³ã¼ãæååå¤æ410 * ECHONET Liteサービスコード文字列変換 441 411 */ 442 412 const char *_ecn_dbg_esv2str(uint8_t fa_esv) 443 413 { 444 414 switch (fa_esv) { 445 case ESV_SET_I_SNA: return " ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ä¸å¯å¿ç"; /* 0x50 */446 case ESV_SET_C_SNA: return " ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ä¸å¯å¿ç"; /* 0x51 */447 case ESV_GET_SNA: return " ããããã£å¤èªã¿åºãä¸å¯å¿ç"; /* 0x52 */448 case ESV_INF_SNA: return " ããããã£å¤éç¥ä¸å¯å¿ç"; /* 0x53 */449 case ESV_SET_GET_SNA: return " ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãä¸å¯å¿ç"; /* 0x5E */450 case ESV_SET_I: return " ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ï¼å¿çä¸è¦ï¼"; /* 0x60 */451 case ESV_SET_C: return " ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ï¼å¿çè¦ï¼"; /* 0x61 */452 case ESV_GET: return " ããããã£å¤èªã¿åºãè¦æ±"; /* 0x62 */453 case ESV_INF_REQ: return " ããããã£å¤éç¥è¦æ±"; /* 0x63 */454 case ESV_SET_GET: return " ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãè¦æ±"; /* 0x6E */455 case ESV_SET_RES: return " ããããã£å¤æ¸ãè¾¼ã¿å¿ç"; /* 0x71 */456 case ESV_GET_RES: return " ããããã£å¤èªã¿åºãå¿ç"; /* 0x72 */457 case ESV_INF: return " ããããã£å¤éç¥"; /* 0x73 */458 case ESV_INFC: return " ããããã£å¤éç¥ï¼å¿çè¦ï¼"; /* 0x74 */459 case ESV_SET_GET_RES: return " ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãå¿ç"; /* 0x7E */460 case ESV_INFC_RES: return " ããããã£å¤éç¥å¿ç"; /* 0x7A */415 case ESV_SET_I_SNA: return "プロパティ値書き込み要求不可応答"; /* 0x50 */ 416 case ESV_SET_C_SNA: return "プロパティ値書き込み要求不可応答"; /* 0x51 */ 417 case ESV_GET_SNA: return "プロパティ値読み出し不可応答"; /* 0x52 */ 418 case ESV_INF_SNA: return "プロパティ値通知不可応答"; /* 0x53 */ 419 case ESV_SET_GET_SNA: return "プロパティ値書き込み・読み出し不可応答"; /* 0x5E */ 420 case ESV_SET_I: return "プロパティ値書き込み要求(応答不要)"; /* 0x60 */ 421 case ESV_SET_C: return "プロパティ値書き込み要求(応答要)"; /* 0x61 */ 422 case ESV_GET: return "プロパティ値読み出し要求"; /* 0x62 */ 423 case ESV_INF_REQ: return "プロパティ値通知要求"; /* 0x63 */ 424 case ESV_SET_GET: return "プロパティ値書き込み・読み出し要求"; /* 0x6E */ 425 case ESV_SET_RES: return "プロパティ値書き込み応答"; /* 0x71 */ 426 case ESV_GET_RES: return "プロパティ値読み出し応答"; /* 0x72 */ 427 case ESV_INF: return "プロパティ値通知"; /* 0x73 */ 428 case ESV_INFC: return "プロパティ値通知(応答要)"; /* 0x74 */ 429 case ESV_SET_GET_RES: return "プロパティ値書き込み・読み出し応答"; /* 0x7E */ 430 case ESV_INFC_RES: return "プロパティ値通知応答"; /* 0x7A */ 461 431 default: 462 432 return "(unknown)"; … … 467 437 { 468 438 switch (errorno) { 469 case E_SYS: return "ã·ã¹ãã ã¨ã©ã¼"; 470 case E_PAR: return "ãã©ã¡ã¼ã¿ã¨ã©ã¼"; 471 case E_NOMEM: return "ã¡ã¢ãªä¸è¶³"; 472 case E_OBJ: return "ãªãã¸ã§ã¯ãç¶æ 473 ã¨ã©ã¼"; 474 case E_NOEXS: return "ãªãã¸ã§ã¯ãæªçæ"; 475 case E_TMOUT: return "ãã¼ãªã³ã°å¤±æã¾ãã¯ã¿ã¤ã ã¢ã¦ã"; 476 case E_BOVR: return "ãããã¡ãªã¼ãã¼ããã¼"; 477 case E_BRK: return "ã¦ã¼ã¶ã¼ã«ããä¸æ"; 439 case E_SYS: return "システムエラー"; 440 case E_PAR: return "パラメータエラー"; 441 case E_NOMEM: return "メモリ不足"; 442 case E_OBJ: return "オブジェクト状態エラー"; 443 case E_NOEXS: return "オブジェクト未生成"; 444 case E_TMOUT: return "ポーリング失敗またはタイムアウト"; 445 case E_BOVR: return "バッファオーバーフロー"; 446 case E_BRK: return "ユーザーによる中断"; 478 447 default: 479 448 return "(unknown)"; -
EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet_dbg.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 6 * ä¸è¨èä½æ¨©è 7 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 8 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 9 * å¤ã»åé 10 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 11 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 12 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 13 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 14 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 15 * ç¨ã§ããå½¢ã§åé 16 å¸ããå ´åã«ã¯ï¼åé 17 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 18 * è 19 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 20 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 21 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 * ç¨ã§ããªãå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 24 * ã¨ï¼ 25 * (a) åé 26 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 27 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 28 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 29 * (b) åé 30 å¸ã®å½¢æ 31 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 32 * å ±åãããã¨ï¼ 33 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 34 * 害ãããï¼ä¸è¨èä½æ¨©è 35 ããã³TOPPERSããã¸ã§ã¯ããå 36 責ãããã¨ï¼ 37 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 38 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ãã 40 * å 41 責ãããã¨ï¼ 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 8 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 9 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 10 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 11 * スコード中に含まれていること. 12 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 13 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 14 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 15 * の無保証規定を掲載すること. 16 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 17 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 18 * と. 19 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 20 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 21 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 22 * 報告すること. 23 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 24 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 25 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 * 免責すること. 42 28 * 43 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 44 ã 45 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 46 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 47 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 48 * ã®è²¬ä»»ãè² ããªãï¼ 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 49 34 * 50 35 */ 51 36 52 37 /* 53 * ECHONET Lite ã¿ã¹ã¯ ãããã°åºå38 * ECHONET Lite タスク デバッグ出力 54 39 */ 55 40 … … 79 64 #endif 80 65 81 /* ãããã°åºå(CARP) */66 /* デバッグ出力(CARP) */ 82 67 #ifdef ECN_CAP_PUT_ENA 83 68 #define ECN_CAP_PUT(a) printf(a) -
EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet_fbs.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r270 r321 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 6 * ä¸è¨èä½æ¨©è 7 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 8 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 9 * å¤ã»åé 10 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 11 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 12 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 13 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 14 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 15 * ç¨ã§ããå½¢ã§åé 16 å¸ããå ´åã«ã¯ï¼åé 17 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 18 * è 19 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 20 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 21 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 * ç¨ã§ããªãå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 24 * ã¨ï¼ 25 * (a) åé 26 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 27 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 28 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 29 * (b) åé 30 å¸ã®å½¢æ 31 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 32 * å ±åãããã¨ï¼ 33 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 34 * 害ãããï¼ä¸è¨èä½æ¨©è 35 ããã³TOPPERSããã¸ã§ã¯ããå 36 責ãããã¨ï¼ 37 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 38 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ãã 40 * å 41 責ãããã¨ï¼ 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 8 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 9 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 10 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 11 * スコード中に含まれていること. 12 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 13 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 14 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 15 * の無保証規定を掲載すること. 16 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 17 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 18 * と. 19 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 20 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 21 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 22 * 報告すること. 23 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 24 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 25 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 * 免責すること. 42 28 * 43 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 44 ã 45 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 46 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 47 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 48 * ã®è²¬ä»»ãè² ããªãï¼ 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 49 34 * 50 35 */ 51 36 52 37 /* 53 * åºå®é·ãããã¡å¯å¤é·ã¹ããªã¼ã38 * 固定長バッファ可変長ストリーム 54 39 */ 55 40 … … 264 249 } 265 250 266 /* ã¡ã¢ãªãããã¯åå¾ ok:ãã¤ã³ã¿NG:NULL */251 /* メモリブロック取得 ok:ポインタ NG:NULL */ 267 252 void *_ecn_fbs_mbx_get(mrb_state *mrb, ECN_FBS_SIZE_T fa_req_size) 268 253 { … … 281 266 } 282 267 283 /* ã¡ã¢ãªãããã¯è§£æ¾*/268 /* メモリブロック解放 */ 284 269 ER _ecn_fbs_mbx_rel(mrb_state *mrb, void *p) 285 270 { … … 289 274 } 290 275 291 /* é å確ä¿*/276 /* 領域確保 */ 292 277 ER _ecn_fbs_cre(mrb_state *mrb, ECN_FBS_SIZE_T fa_req_size, ECN_FBS_ID *fp_id) 293 278 { … … 295 280 } 296 281 297 /* é å解æ¾*/282 /* 領域解放 */ 298 283 ER _ecn_fbs_del(mrb_state *mrb, ECN_FBS_ID fa_id) 299 284 { … … 301 286 } 302 287 303 /* ä¿æãã¼ã¿ã®æç¡*/288 /* 保持データの有無 */ 304 289 bool_t _ecn_fbs_exist_data(ECN_FBS_ID fa_id) 305 290 { … … 307 292 } 308 293 309 /* ä¿æãã¼ã¿é·ã®åå¾*/294 /* 保持データ長の取得 */ 310 295 ECN_FBS_SSIZE_T _ecn_fbs_get_datalen(ECN_FBS_ID fa_id) 311 296 { … … 313 298 } 314 299 315 /* èªã¿åãã«ã¼ã½ã«ã®ä½ç½®åå¾*/300 /* 読み取りカーソルの位置取得 */ 316 301 ECN_FBS_SSIZE_T _ecn_fbs_get_rpos(ECN_FBS_ID fa_id) 317 302 { … … 319 304 } 320 305 321 /* èªã¿åãã«ã¼ã½ã«ã®ä½ç½®è¨å®*/306 /* 読み取りカーソルの位置設定 */ 322 307 ER _ecn_fbs_set_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_pos) 323 308 { 324 if (fa_id.ptr->hdr.length <= (unsigned int)fa_pos) /* ä½ç½®æå®ã大ãããã*/309 if (fa_id.ptr->hdr.length <= (unsigned int)fa_pos) /* 位置指定が大きすぎる */ 325 310 return E_PAR; 326 311 … … 330 315 } 331 316 332 /* èªã¿åãã«ã¼ã½ã«ã®ä½ç½®ç§»å*/317 /* 読み取りカーソルの位置移動 */ 333 318 ER _ecn_fbs_seek_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek) 334 319 { … … 340 325 } 341 326 342 /* ä»»ææå®ä½ç½®ã®1byteèªã¿åã*/327 /* 任意指定位置の1byte読み取り */ 343 328 int _ecn_fbs_peek(mrb_state *mrb, ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek) 344 329 { … … 351 336 } 352 337 353 /* ä»»ææå®ä½ç½®ã®1byteæ¸ãè¾¼ã¿*/338 /* 任意指定位置の1byte書き込み */ 354 339 ER _ecn_fbs_poke(mrb_state *mrb, ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek, int fa_val) 355 340 { … … 362 347 } 363 348 364 /* ãã¼ã¿è¿½å*/349 /* データ追加 */ 365 350 ER _ecn_fbs_add_data(mrb_state *mrb, ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len) 366 351 { … … 372 357 } 373 358 374 /* ãã¼ã¿è¿½å (é åãèªåçã«æ¡å¼µãã) */359 /* データ追加(領域を自動的に拡張する) */ 375 360 ER _ecn_fbs_add_data_ex(mrb_state *mrb, ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len) 376 361 { … … 379 364 } 380 365 381 /* ãã¼ã¿åå¾*/366 /* データ取得 */ 382 367 ER _ecn_fbs_get_data(mrb_state *mrb, ECN_FBS_ID fa_id, void *fa_buf, ECN_FBS_SSIZE_T fa_maxlen, ECN_FBS_SSIZE_T *p_len) 383 368 { -
EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet_fbs.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 6 * ä¸è¨èä½æ¨©è 7 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 8 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 9 * å¤ã»åé 10 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 11 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 12 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 13 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 14 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 15 * ç¨ã§ããå½¢ã§åé 16 å¸ããå ´åã«ã¯ï¼åé 17 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 18 * è 19 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 20 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 21 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 * ç¨ã§ããªãå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 24 * ã¨ï¼ 25 * (a) åé 26 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 27 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 28 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 29 * (b) åé 30 å¸ã®å½¢æ 31 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 32 * å ±åãããã¨ï¼ 33 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 34 * 害ãããï¼ä¸è¨èä½æ¨©è 35 ããã³TOPPERSããã¸ã§ã¯ããå 36 責ãããã¨ï¼ 37 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 38 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ãã 40 * å 41 責ãããã¨ï¼ 42 * 43 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 44 ã 45 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 46 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 47 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 48 * ã®è²¬ä»»ãè² ããªãï¼ 49 * 50 */ 51 52 /* 53 * åºå®é·ãããã¡å¯å¤é·ã¹ããªã¼ã 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 8 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 9 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 10 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 11 * スコード中に含まれていること. 12 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 13 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 14 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 15 * の無保証規定を掲載すること. 16 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 17 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 18 * と. 19 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 20 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 21 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 22 * 報告すること. 23 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 24 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 25 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 * 免責すること. 28 * 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 34 * 35 */ 36 37 /* 38 * 固定長バッファ可変長ストリーム 54 39 */ 55 40 … … 66 51 67 52 #ifndef NUM_ECHONET_MEMPOOL_BLOCK 68 #define NUM_ECHONET_MEMPOOL_BLOCK (60) /* é»æç¨ã¡ã¢ãªãããã¯ã®æ°*/53 #define NUM_ECHONET_MEMPOOL_BLOCK (60) /* 電文用メモリブロックの数 */ 69 54 #endif /* NUM_ECHONET_MEMPOOL_BLOCK */ 70 55 71 56 #ifndef ECHONET_MEMPOOL_BLOCK_SIZE 72 #define ECHONET_MEMPOOL_BLOCK_SIZE (256) /* é»æç¨ã¡ã¢ãªãããã¯ã®ãµã¤ãº*/57 #define ECHONET_MEMPOOL_BLOCK_SIZE (256) /* 電文用メモリブロックのサイズ */ 73 58 #endif /* ECHONET_MEMPOOL_BLOCK_SIZE */ 74 59 75 typedef unsigned int ECN_FBS_SIZE_T; /* size_t ç¸å½*/76 typedef int ECN_FBS_SSIZE_T; /* ssize_t ç¸å½*/77 78 /* T_EDATA 管çé åãµã¤ãº*/60 typedef unsigned int ECN_FBS_SIZE_T; /* size_t相当 */ 61 typedef int ECN_FBS_SSIZE_T; /* ssize_t相当 */ 62 63 /* T_EDATA管理領域サイズ */ 79 64 #define DEF_ECN_EDT_HDR_LEN (sizeof(intptr_t)) 80 65 81 /* 管çé åãµã¤ãº(64byte - sizeof(T_MSG)) */66 /* 管理領域サイズ(64byte - sizeof(T_MSG)) */ 82 67 /* #define DEF_ECN_FBS_LIB_HDR_LEN ((ECHONET_MEMPOOL_BLOCK_SIZE + sizeof(int) - 1)>> 2) // */ 83 68 #define DEF_ECN_FBS_LIB_HDR_LEN (64 - DEF_ECN_EDT_HDR_LEN) 84 69 85 /* 管çé åãå«ããããã¯ã«ä¿æãããã¼ã¿ãµã¤ãº*/70 /* 管理領域を含むブロックに保持するデータサイズ */ 86 71 #define DEF_ECN_FBS_FST_DAT_LEN (64) 87 72 88 /* ãªã³ã¯ãã¤ã³ã¿é 89 åã®ãµã¤ãº(byte) */ 73 /* リンクポインタ配列のサイズ(byte) */ 90 74 #define DEF_ECN_FBS_LNK_LEN (ECHONET_MEMPOOL_BLOCK_SIZE - DEF_ECN_EDT_HDR_LEN - DEF_ECN_FBS_LIB_HDR_LEN - DEF_ECN_FBS_FST_DAT_LEN) 91 75 92 /* åºå®é·ãããã¡æ大ãµã¤ãº*/76 /* 固定長バッファ最大サイズ */ 93 77 #define DEF_ECN_FBS_BUF_MAXLEN ((DEF_ECN_FBS_LNK_LEN / sizeof(void *)) * ECHONET_MEMPOOL_BLOCK_SIZE + DEF_ECN_FBS_FST_DAT_LEN) 94 78 95 /* åè¦ç´ ãããã¡ã®ãµã¤ãº*/79 /* 子要素バッファのサイズ */ 96 80 #define DEF_ECN_FBS_SUB_BUF_LEN ECHONET_MEMPOOL_BLOCK_SIZE 97 81 98 /* é»æã®ç¨®å¥(å 99 容ã¯ä»®) */ 82 /* 電文の種別(内容は仮) */ 100 83 typedef enum 101 84 { 102 ECN_FBS_TYPE_BLANK = 0, /* æªä½¿ç¨ã¹ããªã¼ã */ 103 ECN_FBS_TYPE_INTERNAL = 1, /* å 104 é¨ã¡ãã»ã¼ã¸ */ 105 ECN_FBS_TYPE_ECHONET = 2 /* ECHONETé»æ */ 85 ECN_FBS_TYPE_BLANK = 0, /* 未使用ストリーム */ 86 ECN_FBS_TYPE_INTERNAL = 1, /* 内部メッセージ */ 87 ECN_FBS_TYPE_ECHONET = 2 /* ECHONET電文 */ 106 88 } TA_ECN_MSG_TYPE; 107 89 108 /* ãªã³ã¯ãã¤ã³ã¿é 109 åã«åæããããåè¦ç´ ãããã¡ */ 90 /* リンクポインタ配列に列挙される、子要素バッファ */ 110 91 typedef struct 111 92 { … … 113 94 } T_ECN_SUB_BLK; 114 95 115 /* ãªã³ã¯ãã¤ã³ã¿é 116 å */ 96 /* リンクポインタ配列 */ 117 97 typedef union 118 98 { … … 121 101 } T_ECN_FBS_LNK; 122 102 123 /* 管çé å(64byte - sizeof(T_MSG)) */103 /* 管理領域(64byte - sizeof(T_MSG)) */ 124 104 typedef struct 125 105 { 126 uint16_t length; /* ã¡ãã»ã¼ã¸é·*/127 uint16_t type; /* ã¡ãã»ã¼ã¸ã¿ã¤ã*/106 uint16_t length; /* メッセージ長 */ 107 uint16_t type; /* メッセージタイプ */ 128 108 union{ 129 ECN_ENOD_ID id; /* éä¿¡å 130 ãã¼ãIDï¼ECHONETé»æï¼ */ 131 struct ecn_fbs_queue *mbxid; /* éä¿¡å 132 ã¡ã¼ã«ããã¯ã¹IDï¼å 133 é¨ã¡ãã»ã¼ã¸ï¼ */ 109 ECN_ENOD_ID id; /* 送信元ノードID(ECHONET電文) */ 110 struct ecn_fbs_queue *mbxid; /* 送信元メールボックスID(内部メッセージ) */ 134 111 }sender; 135 112 union{ 136 ECN_ENOD_ID id; /* éä¿¡å 137 ãã¼ãIDï¼ECHONETé»æï¼ */ 138 struct ecn_fbs_queue *mbxid; /* éä¿¡å 139 ã¡ã¼ã«ããã¯ã¹IDï¼å 140 é¨ã¡ãã»ã¼ã¸ï¼ */ 113 ECN_ENOD_ID id; /* 送信先ノードID(ECHONET電文) */ 114 struct ecn_fbs_queue *mbxid; /* 送信先メールボックスID(内部メッセージ) */ 141 115 }target; 142 116 union{ 143 ECN_ENOD_ID id; /* è¿ä¿¡å 144 ãã¼ãIDï¼ECHONETé»æï¼ */ 145 struct ecn_fbs_queue *mbxid; /* è¿ä¿¡å 146 ã¡ã¼ã«ããã¯ã¹IDï¼å 147 é¨ã¡ãã»ã¼ã¸ï¼ */ 117 ECN_ENOD_ID id; /* 返信先ノードID(ECHONET電文) */ 118 struct ecn_fbs_queue *mbxid; /* 返信先メールボックスID(内部メッセージ) */ 148 119 }reply; 149 120 150 int rd; /* èªã¿åããããæ 151 å ± */ 152 int wr; /* æ¸ãè¾¼ã¿ãããæ 153 å ± */ 121 int rd; /* 読み取りヘッド情報 */ 122 int wr; /* 書き込みヘッド情報 */ 154 123 } T_ECN_FBS_HDR; 155 124 156 /* 管çé åãå«ããããã¯ã®æ§é*/125 /* 管理領域を含むブロックの構造 */ 157 126 typedef struct 158 127 { 159 128 uint8_t _msg[DEF_ECN_EDT_HDR_LEN]; /* T_MSG */ 160 T_ECN_FBS_HDR hdr; /* 管çé å64byte - sizeof(T_MSG) */129 T_ECN_FBS_HDR hdr; /* 管理領域 64byte - sizeof(T_MSG) */ 161 130 uint8_t _gap[DEF_ECN_FBS_LIB_HDR_LEN - sizeof(T_ECN_FBS_HDR)]; 162 T_ECN_FBS_LNK lnk; /* ãªã³ã¯ãã¤ã³ã¿é 163 å 128byte */ 131 T_ECN_FBS_LNK lnk; /* リンクポインタ配列 128byte */ 164 132 uint8_t payload[DEF_ECN_FBS_FST_DAT_LEN]; 165 133 } T_ECN_FST_BLK; … … 171 139 } ECN_FBS_ID; 172 140 173 /* ã¡ãã»ã¼ã¸ãã¥ã¼*/141 /* メッセージキュー */ 174 142 typedef struct ecn_fbs_queue 175 143 { 176 T_ECN_FST_BLK *pk_head; /* å 177 é ã®ã¡ãã»ã¼ã¸ */ 178 T_ECN_FST_BLK *pk_last; /* æ«å°¾ã®ã¡ãã»ã¼ã¸ */ 144 T_ECN_FST_BLK *pk_head; /* 先頭のメッセージ */ 145 T_ECN_FST_BLK *pk_last; /* 末尾のメッセージ */ 179 146 } T_ECN_FBS_QUEUE; 180 147 181 /* ã¡ã¢ãªãããã¯åå¾ ok:ãã¤ã³ã¿NG:NULL */148 /* メモリブロック取得 ok:ポインタ NG:NULL */ 182 149 void *_ecn_fbs_mbx_get(mrb_state *mrb, ECN_FBS_SIZE_T fa_req_size); 183 150 184 /* ã¡ã¢ãªãããã¯è§£æ¾ ok:0 NG:é0 */151 /* メモリブロック解放 ok:0 NG:非0 */ 185 152 ER _ecn_fbs_mbx_rel(mrb_state *mrb, void *p); 186 153 187 154 /* 188 * é å確ä¿189 * å¼æ°190 * ECN_FBS_SIZE_T fa_req_size è¦æ±ãããã¡ãµã¤ãº(byte)155 * 領域確保 156 * 引数 157 * ECN_FBS_SIZE_T fa_req_size 要求バッファサイズ(byte) 191 158 * max: DEF_ECN_FBS_BUF_MAXLEN 192 * ECN_FBS_ID *fp_id 確ä¿ããFBS-IDã®æ ¼ç´å 193 194 * æ»ãå¤ 195 * ER 0:ok é0:NG 159 * ECN_FBS_ID *fp_id 確保したFBS-IDの格納先 160 * 戻り値 161 * ER 0:ok 非0:NG 196 162 */ 197 163 ER _ecn_fbs_cre(mrb_state *mrb, ECN_FBS_SIZE_T fa_req_size, ECN_FBS_ID *fp_id); 198 164 199 165 /* 200 * é å解æ¾201 * å¼æ°202 * ecn_fbs_id å 確ä¿ããFBS-ID203 * æ»ãå¤204 * ER 0:ok, é0:NG166 * 領域解放 167 * 引数 168 * ecn_fbs_id型 確保したFBS-ID 169 * 戻り値 170 * ER 0:ok, 非0:NG 205 171 */ 206 172 ER _ecn_fbs_del(mrb_state *mrb, ECN_FBS_ID fa_id); 207 173 208 174 /* 209 * ä¿æãã¼ã¿ã®æç¡210 * å¼æ°211 * ecn_fbs_id å 確ä¿ããFBS-ID212 * æ»ãå¤213 * bool_t 0: ç¡ã, 1:ãã175 * 保持データの有無 176 * 引数 177 * ecn_fbs_id型 確保したFBS-ID 178 * 戻り値 179 * bool_t 0:無し, 1:あり 214 180 */ 215 181 bool_t _ecn_fbs_exist_data(ECN_FBS_ID fa_id); 216 182 217 183 /* 218 * ä¿æãã¼ã¿é·ã®åå¾219 * å¼æ°220 * ecn_fbs_id å 確ä¿ããFBS-ID221 * æ»ãå¤222 * ECN_FBS_SSIZE_T ä¿æãã¦ãããã¼ã¿ã®é·ã(byte) -1:NG184 * 保持データ長の取得 185 * 引数 186 * ecn_fbs_id型 確保したFBS-ID 187 * 戻り値 188 * ECN_FBS_SSIZE_T 保持しているデータの長さ(byte) -1:NG 223 189 */ 224 190 ECN_FBS_SSIZE_T _ecn_fbs_get_datalen(ECN_FBS_ID fa_id); 225 191 226 192 /* 227 * èªã¿åãã«ã¼ã½ã«ã®ä½ç½®åå¾ 228 * å¼æ° 229 * ecn_fbs_idå 確ä¿ããFBS-ID 230 * æ»ãå¤ 231 * ECN_FBS_SIZE_T å 232 é ããã®çµ¶å¯¾ä½ç½® -1:NG 193 * 読み取りカーソルの位置取得 194 * 引数 195 * ecn_fbs_id型 確保したFBS-ID 196 * 戻り値 197 * ECN_FBS_SIZE_T 先頭からの絶対位置 -1:NG 233 198 */ 234 199 ECN_FBS_SSIZE_T _ecn_fbs_get_rpos(ECN_FBS_ID fa_id); 235 200 236 201 /* 237 * èªã¿åãã«ã¼ã½ã«ã®ä½ç½®è¨å® 238 * å¼æ° 239 * ecn_fbs_idå 確ä¿ããFBS-ID 240 * ECN_FBS_SIZE_T fa_pos è¨å®ããä½ç½®(å 241 é ããã®çµ¶å¯¾ä½ç½®) 242 * æ»ãå¤ 243 * ER 0:ok, é0:NG 202 * 読み取りカーソルの位置設定 203 * 引数 204 * ecn_fbs_id型 確保したFBS-ID 205 * ECN_FBS_SIZE_T fa_pos 設定する位置(先頭からの絶対位置) 206 * 戻り値 207 * ER 0:ok, 非0:NG 244 208 */ 245 209 ER _ecn_fbs_set_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_pos); 246 210 247 211 /* 248 * èªã¿åãã«ã¼ã½ã«ã®ä½ç½®ç§»å249 * å¼æ°250 * ecn_fbs_id å 確ä¿ããFBS-ID251 * ECN_FBS_SIZE_T fa_seek 移åé(ç¾ç¶ãåé²ã®ã¿)252 * æ»ãå¤253 * ER 0:ok, é0:NG212 * 読み取りカーソルの位置移動 213 * 引数 214 * ecn_fbs_id型 確保したFBS-ID 215 * ECN_FBS_SIZE_T fa_seek 移動量(現状、前進のみ) 216 * 戻り値 217 * ER 0:ok, 非0:NG 254 218 */ 255 219 ER _ecn_fbs_seek_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek); 256 220 257 221 /* 258 * ä»»ææå®ä½ç½®ã®1byteèªã¿åã222 * 任意指定位置の1byte読み取り 259 223 */ 260 224 int _ecn_fbs_peek(mrb_state *mrb, ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek); 261 225 262 226 /* 263 * ä»»ææå®ä½ç½®ã®1byteæ¸ãè¾¼ã¿227 * 任意指定位置の1byte書き込み 264 228 */ 265 229 ER _ecn_fbs_poke(mrb_state *mrb, ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek, int fa_val); 266 230 267 231 /* 268 * ãã¼ã¿è¿½å269 * å¼æ°270 * ecn_fbs_id å 確ä¿ããFBS-ID271 * const void * fa_dat 追å ãããã¼ã¿272 * ECN_FBS_SSIZE_T fa_len 追å ããé·ã(byte)273 * æ»ãå¤274 * ER 0:ok, é0:NG232 * データ追加 233 * 引数 234 * ecn_fbs_id型 確保したFBS-ID 235 * const void * fa_dat 追加するデータ 236 * ECN_FBS_SSIZE_T fa_len 追加する長さ(byte) 237 * 戻り値 238 * ER 0:ok, 非0:NG 275 239 */ 276 240 ER _ecn_fbs_add_data(mrb_state *mrb, ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len); 277 241 278 242 /* 279 * ãã¼ã¿è¿½å (é åãèªåçã«æ¡å¼µãã)280 * å¼æ°281 * ecn_fbs_id å 確ä¿ããFBS-ID282 * const void * fa_dat 追å ãããã¼ã¿283 * ECN_FBS_SSIZE_T fa_len 追å ããé·ã(byte)284 * æ»ãå¤285 * ER 0:ok, é0:NG243 * データ追加(領域を自動的に拡張する) 244 * 引数 245 * ecn_fbs_id型 確保したFBS-ID 246 * const void * fa_dat 追加するデータ 247 * ECN_FBS_SSIZE_T fa_len 追加する長さ(byte) 248 * 戻り値 249 * ER 0:ok, 非0:NG 286 250 */ 287 251 ER _ecn_fbs_add_data_ex(mrb_state *mrb, ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len); 288 252 289 253 /* 290 * ãã¼ã¿åå¾291 * å¼æ°292 * ecn_fbs_id å 確ä¿ããFBS-ID293 * void * fa_buf åå¾ãããããã¡294 * ECN_FBS_SSIZE_T fa_maxlen åå¾ããé·ã(byte)295 * ECN_FBS_SSIZE_T *p_len åå¾ããé·ã(byte)296 * æ»ãå¤297 * ER 0:ok, é0:NG254 * データ取得 255 * 引数 256 * ecn_fbs_id型 確保したFBS-ID 257 * void * fa_buf 取得するバッファ 258 * ECN_FBS_SSIZE_T fa_maxlen 取得する長さ(byte) 259 * ECN_FBS_SSIZE_T *p_len 取得した長さ(byte) 260 * 戻り値 261 * ER 0:ok, 非0:NG 298 262 */ 299 263 ER _ecn_fbs_get_data(mrb_state *mrb, ECN_FBS_ID fa_id, void *fa_buf, ECN_FBS_SSIZE_T fa_maxlen, -
EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet_lcl_task.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r270 r321 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 6 * ä¸è¨èä½æ¨©è 7 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 8 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 9 * å¤ã»åé 10 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 11 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 12 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 13 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 14 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 15 * ç¨ã§ããå½¢ã§åé 16 å¸ããå ´åã«ã¯ï¼åé 17 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 18 * è 19 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 20 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 21 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 * ç¨ã§ããªãå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 24 * ã¨ï¼ 25 * (a) åé 26 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 27 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 28 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 29 * (b) åé 30 å¸ã®å½¢æ 31 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 32 * å ±åãããã¨ï¼ 33 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 34 * 害ãããï¼ä¸è¨èä½æ¨©è 35 ããã³TOPPERSããã¸ã§ã¯ããå 36 責ãããã¨ï¼ 37 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 38 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ãã 40 * å 41 責ãããã¨ï¼ 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 8 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 9 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 10 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 11 * スコード中に含まれていること. 12 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 13 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 14 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 15 * の無保証規定を掲載すること. 16 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 17 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 18 * と. 19 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 20 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 21 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 22 * 報告すること. 23 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 24 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 25 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 * 免責すること. 42 28 * 43 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 44 ã 45 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 46 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 47 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 48 * ã®è²¬ä»»ãè² ããªãï¼ 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 49 34 * 50 35 */ 51 36 52 37 /* 53 * ECHONET Lite LCL éä¿¡å¦çã¿ã¹ã¯38 * ECHONET Lite LCL通信処理タスク 54 39 */ 55 40 … … 90 75 91 76 /* 92 * åä¿¡ããLCLãã¼ã¿ãMAILBOXã«éã77 * 受信したLCLデータをMAILBOXに送る 93 78 */ 94 79 ER _ecn_lcl2mbx(ecnl_svc_task_t *svc, const uint8_t *buffer, size_t fa_len, const mrb_value dst); … … 106 91 107 92 a_rcv_pkt.buffer = buffer; 108 if ( a_rcv_pkt.t_esv->ecn_hdr.ehd1 != ECN_EDH1_ECHONET_LITE /* ECHONET Lite è¦æ ¼*/109 || a_rcv_pkt.t_esv->ecn_hdr.ehd2 != ECN_EDH2_FORMAT_1 /* é»æå½¢å¼1 */) {93 if ( a_rcv_pkt.t_esv->ecn_hdr.ehd1 != ECN_EDH1_ECHONET_LITE /* ECHONET Lite規格 */ 94 || a_rcv_pkt.t_esv->ecn_hdr.ehd2 != ECN_EDH2_FORMAT_1 /* 電文形式1 */) { 110 95 ECN_DBG_PUT_2("[LCL ECHO SRV] illegal type (0x%02X,0x%02X)", a_rcv_pkt.t_esv->ecn_hdr.ehd1, a_rcv_pkt.t_esv->ecn_hdr.ehd2); 111 96 return E_PAR; … … 130 115 a_fbs_id.ptr->hdr.sender.id = ENOD_NOT_MATCH_ID; 131 116 132 /* éä¿¡ã¬ã¤ã¤ã¼ã¢ãã¬ã¹ãããªã¢ã¼ãECHONETãã¼ãã¸å¤æ*/117 /* 通信レイヤーアドレスからリモートECHONETノードへ変換 */ 133 118 a_enod_id = lcl_get_id(svc, (T_EDATA *)a_fbs_id.ptr, dst); 134 119 if (!lcl_is_valid_addrid(svc, a_enod_id)) { … … 136 121 ip2str(NULL, &dst->lcladdr)); 137 122 } else { 138 /* éä¿¡å 139 ECHONETãã¼ããè¨é² */ 123 /* 送信元ECHONETノードを記録 */ 140 124 a_fbs_id.ptr->hdr.sender.id = a_enod_id; 141 125 } 142 126 a_fbs_id.ptr->hdr.reply.id = a_fbs_id.ptr->hdr.sender.id; 143 127 144 /* echonet_task ã«éã*/128 /* echonet_taskに送る */ 145 129 a_ret = ecn_fbs_enqueue(&svc->svc_mbxid, a_fbs_id.ptr); 146 130 if (a_ret != E_OK) { … … 155 139 156 140 /* 157 * ECHONET Lite éä¿¡ã¬ã¤ã¤ã¼ã¿ã¹ã¯ ã¿ã¤ãã¼å¤åå¾141 * ECHONET Lite 通信レイヤータスク タイマー値取得 158 142 */ 159 143 TMO echonet_lcltask_get_timer(ecnl_svc_task_t *svc) … … 168 152 169 153 /* 170 * ECHONET Lite éä¿¡ã¬ã¤ã¤ã¼ã¿ã¹ã¯ æéçµéå¦ç154 * ECHONET Lite 通信レイヤータスク 時間経過処理 171 155 */ 172 156 void echonet_lcltask_progress(ecnl_svc_task_t *svc, TMO a_timer) … … 176 160 177 161 /* 178 * ECHONET Lite éä¿¡ã¬ã¤ã¤ã¼ã¿ã¹ã¯ ã¡ãã»ã¼ã¸åä¿¡å¦ç162 * ECHONET Lite 通信レイヤータスク メッセージ受信処理 179 163 */ 180 164 void echonet_lcltask_recv_msg(ecnl_svc_task_t *svc, T_ECN_FST_BLK *p_msg) … … 185 169 a_fbs_id.ptr = p_msg; 186 170 187 /* éä¿¡ãã¼ã¿é·ãåå¾*/171 /* 送信データ長を取得 */ 188 172 a_snd_len = _ecn_fbs_get_datalen(a_fbs_id); 189 173 … … 191 175 192 176 switch (a_fbs_id.ptr->hdr.type) { 193 /* å 194 é¨ä½¿ç¨ã¡ãã»ã¼ã¸ */ 177 /* 内部使用メッセージ */ 195 178 case ECN_MSG_INTERNAL: 196 179 _ecn_int_msg(svc, a_fbs_id, a_snd_len); 197 180 break; 198 181 199 /* ECHONET ç¨ã¡ãã»ã¼ã¸*/182 /* ECHONET用メッセージ */ 200 183 case ECN_MSG_ECHONET: 201 184 _ecn_esv_msg(svc, a_fbs_id); … … 206 189 } 207 190 208 /* é å解æ¾*/191 /* 領域解放 */ 209 192 _ecn_fbs_del(svc->mrb, a_fbs_id); 210 193 } 211 194 212 195 /* 213 * ECHONET Lite éä¿¡ã¬ã¤ã¤ã¼ã¿ã¹ã¯ ã¿ã¤ã ã¢ã¦ãå¦ç196 * ECHONET Lite 通信レイヤータスク タイムアウト処理 214 197 */ 215 198 void echonet_lcltask_timeout(ecnl_svc_task_t *svc) … … 218 201 } 219 202 220 /* å¿çé»æç¨fbsè¨å®(sender/targetã®è¨å®) */203 /* 応答電文用fbs設定(sender/targetの設定) */ 221 204 static ER _ecn_lcl_cre_req_fbs(ecnl_svc_task_t *svc, T_ECN_FBS_QUEUE *sender, uint8_t cmd, ECN_FBS_ID *pk_req) 222 205 { … … 248 231 } 249 232 250 /* å¿çé»æç¨fbsè¨å®(sender/targetã®è¨å®) */233 /* 応答電文用fbs設定(sender/targetの設定) */ 251 234 static ER _ecn_lcl_cre_res_fbs(ecnl_svc_task_t *svc, ECN_FBS_ID req, uint8_t cmd, ECN_FBS_ID *pk_res) 252 235 { … … 279 262 280 263 /* 281 * å 282 é¨ã¡ãã»ã¼ã¸åä¿¡å¦ç 264 * 内部メッセージ受信処理 283 265 */ 284 266 void _ecn_int_msg(ecnl_svc_task_t *svc, ECN_FBS_ID fbs_id, ECN_FBS_SSIZE_T a_snd_len) … … 300 282 301 283 switch(cmd){ 302 // éä¿¡ã¬ã¤ã¤ã¼ã¢ãã¬ã¹ãè¿ä¿¡284 // 通信レイヤーアドレスを返信 303 285 case ECN_LCL_MSG_GET_LCLADDR_REQ: 304 286 if (a_snd_len < sizeof(msg)) { … … 370 352 371 353 /* 372 * ECHONET é»æåä¿¡å¦ç354 * ECHONET 電文受信処理 373 355 */ 374 356 void _ecn_esv_msg(ecnl_svc_task_t *svc, ECN_FBS_ID fbs_id) … … 381 363 ECN_FBS_SSIZE_T a_snd_len; 382 364 383 /* éä¿¡å 384 éä¿¡ã¬ã¤ã¤ã¼ã¢ãã¬ã¹ */ 365 /* 送信先通信レイヤーアドレス */ 385 366 a_dst = lcl_get_addr(svc, fbs_id.ptr->hdr.target.id); 386 367 if (mrb_type(a_dst) != MRB_TT_FALSE/*nil*/) { 387 ECN_DBG_PUT_4("[LCL TSK] echonet-node 0x%02X-0x%02X-0x%02X âlcl dest(%s)",368 ECN_DBG_PUT_4("[LCL TSK] echonet-node 0x%02X-0x%02X-0x%02X → lcl dest(%s)", 388 369 ((T_EDATA *)fbs_id.ptr)->hdr.edata.deoj.eojx1, 389 370 ((T_EDATA *)fbs_id.ptr)->hdr.edata.deoj.eojx2, … … 393 374 a_msg = mrb_str_buf_new(mrb, a_len); 394 375 395 /* fbs ããåºåé åã«ãã¼ã¿ãæ½åº*/376 /* fbsから出力領域にデータを抽出 */ 396 377 a_snd_len = 0; 397 378 a_ret = _ecn_fbs_get_data(mrb, fbs_id, RSTRING_PTR(a_msg), a_len, &a_snd_len); … … 402 383 RSTR_SET_LEN(RSTRING(a_msg), a_snd_len); 403 384 404 /* éä¿¡å 405 ã127.0.0.1 â mbxã«è»¢é */ 406 ECN_DBG_PUT_1("redirect svc->lcl_mbxid â svc->svc_mbxid (esv:0x%02X)", 385 /* 送信先が127.0.0.1 → mbxに転送 */ 386 ECN_DBG_PUT_1("redirect svc->lcl_mbxid → svc->svc_mbxid (esv:0x%02X)", 407 387 ((T_EDATA *)fbs_id.ptr)->hdr.edata.esv); 408 388 … … 420 400 _ecn_dbg_bindmp(RSTRING_PTR(a_msg), a_snd_len); 421 401 #endif 422 /* éä¿¡ã¬ã¤ã¤ã¼ã¸éä¿¡*/402 /* 通信レイヤーへ送信 */ 423 403 a_ret = lcl_snd_msg(svc, a_dst, a_msg); 424 404 if (a_ret < 0) { … … 427 407 } 428 408 429 /* ãã¼ã¿ãé·ããã¦1ãã±ããã«åã¾ããªãã£ãå ´å*/409 /* データが長すぎて1パケットに収まらなかった場合 */ 430 410 if (_ecn_fbs_exist_data(fbs_id)) { 431 411 ECN_DBG_PUT_1("[LCL TSK] send, data so long: %dbyte(s)", _ecn_fbs_get_datalen(fbs_id)); … … 440 420 441 421 /* 442 * ãã³ããããã³ã°ã³ã¼ã«ã®ã³ã¼ã«ããã¯é¢æ°422 * ノンブロッキングコールのコールバック関数 443 423 */ 444 424 ER echonet_lcl_input_msg(ecnl_svc_task_t *svc, mrb_value ep, mrb_value data) … … 452 432 453 433 /* 454 * ãªã¢ã¼ãECHONETãã¼ãã®é©å確èª434 * リモートECHONETノードの適合確認 455 435 */ 456 436 bool_t ecn_is_match(ecnl_svc_task_t *svc, const EOBJCB *enodcb, T_EDATA *edata, mrb_value ep) … … 470 450 return false; 471 451 472 /* ãã¼ãã¹ã¿ã¼ãæã¤ã³ã¹ã¿ã³ã¹ãªã¹ãéç¥ä»¥å¤ã¯é¤å¤*/452 /* ノードスタート時インスタンスリスト通知以外は除外 */ 473 453 if ( edata->hdr.edata.esv != ESV_INF 474 454 || edata->hdr.edata.deoj.eojx1 != EOJ_X1_PROFILE … … 492 472 } 493 473 ECN_DBG_PUT_2("ecn_is_match(): ecn_itr_nxt() result: epc=0x%02X, pdc=%d", epc, pdc); 494 /* ã¤ã³ã¹ã¿ã³ã¹ãªã¹ãéç¥ã¾ãã¯èªãã¼ãã¤ã³ã¹ã¿ã³ã¹ãªã¹ãS以å¤ã¯é¤å¤*/474 /* インスタンスリスト通知または自ノードインスタンスリストS以外は除外 */ 495 475 if ((epc != 0xD5) && (epc != 0xD6)) { 496 476 continue; 497 477 } 498 478 499 /* ï¼ãã¤ãç®ä»¥éã«eojãåæããã¦ãã*/479 /* 2バイト目以降にeojが列挙されている */ 500 480 count = (pdc - 1) / sizeof(T_ECN_EOJ); 501 481 502 /* ãã¼ãå 503 ã®æ©å¨ãªãã¸ã§ã¯ããæ¤ç´¢ */ 482 /* ノード内の機器オブジェクトを検索 */ 504 483 for (k = 0; k < enodcb->eobjcnt; k++) { 505 484 p_eobj = enodcb->eobjs[k]; 506 485 507 /* ã¤ã³ã¹ã¿ã³ã¹ãªã¹ãã確èª*/486 /* インスタンスリストを確認 */ 508 487 match = false; 509 488 for (i = 0, j = 1; i < count; i++, j += sizeof(T_ECN_EOJ)) { … … 523 502 } 524 503 525 /* ãã¹ã¦æã£ã¦ãããé©åï¼ã¤ã³ã¹ã¿ã³ã¹ãªã¹ãã®æ¹ãå¤ãã¦ããããã¨ã¨ããï¼*/504 /* すべて揃っていたら適合(インスタンスリストの方が多くてもいいこととする) */ 526 505 return true; 527 506 } … … 531 510 532 511 /* 533 * éä¿¡ã¬ã¤ã¤ã¼ã¢ãã¬ã¹ãããªã¢ã¼ãECHONETãã¼ãã¸å¤æ512 * 通信レイヤーアドレスからリモートECHONETノードへ変換 534 513 */ 535 514 ECN_ENOD_ID lcl_get_id(ecnl_svc_task_t *svc, T_EDATA *edata, const mrb_value ep) … … 542 521 return ENOD_MULTICAST_ID; 543 522 544 /* éä¿¡ã¬ã¤ã¤ã¼ã¢ãã¬ã¹ã®åããã®ãæ¤ç´¢*/523 /* 通信レイヤーアドレスの同じものを検索 */ 545 524 if ((id = lcl_get_remote_id(svc, ep)) != ENOD_NOT_MATCH_ID) { 546 525 ECN_CAP_PUT_2("lcl_get_id(): ip-found remote(%d) = %s", … … 549 528 } 550 529 551 /* 対å¿ãããªã¢ã¼ããã¼ããããã°éä¿¡ã¬ã¤ã¤ã¼ã¢ãã¬ã¹ãè¨å®*/530 /* 対応するリモートノードがあれば通信レイヤーアドレスを設定 */ 552 531 if ((id = lcl_set_remote_addr(svc, edata, ep)) != ENOD_NOT_MATCH_ID) { 553 532 ECN_CAP_PUT_2("lcl_get_id(): enod-found remote(%d) = %s", … … 556 535 } 557 536 558 /* 空ãé åãæ¢ãã¦èªåç»é²*/537 /* 空き領域を探して自動登録 */ 559 538 if ((id = lcl_add_remote_addr(svc, edata, ep)) != ENOD_NOT_MATCH_ID) { 560 539 ECN_CAP_PUT_2("lcl_get_id(): empty-found remote(%d) = %s", … … 567 546 568 547 /* 569 * ãªã¢ã¼ãECHONETãã¼ãããéä¿¡ã¬ã¤ã¤ã¼ã¢ãã¬ã¹ã¸å¤æ548 * リモートECHONETノードから通信レイヤーアドレスへ変換 570 549 */ 571 550 mrb_value lcl_get_addr(ecnl_svc_task_t *svc, ECN_ENOD_ID fa_enodid) 572 551 { 573 552 if (fa_enodid == ENOD_MULTICAST_ID) { 574 /* target ãENOD_MULTICAST_IDã®å ´åããã«ããã£ã¹ããè¡ã*/553 /* targetがENOD_MULTICAST_IDの場合、マルチキャストを行う */ 575 554 return lcl_get_multicast_addr(svc); 576 555 } 577 556 578 557 if (fa_enodid < ENOD_REMOTE_ID) { 579 /* targetãæªå®ç¾©ã»LOCALã»APIã®å ´åããã¼ã«ã«é 580 éãè¡ã */ 558 /* targetが未定義・LOCAL・APIの場合、ローカル配送を行う */ 581 559 return lcl_get_local_addr(svc); 582 560 } -
EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet_lcl_task.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 6 * ä¸è¨èä½æ¨©è 7 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 8 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 9 * å¤ã»åé 10 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 11 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 12 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 13 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 14 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 15 * ç¨ã§ããå½¢ã§åé 16 å¸ããå ´åã«ã¯ï¼åé 17 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 18 * è 19 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 20 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 21 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 * ç¨ã§ããªãå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 24 * ã¨ï¼ 25 * (a) åé 26 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 27 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 28 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 29 * (b) åé 30 å¸ã®å½¢æ 31 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 32 * å ±åãããã¨ï¼ 33 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 34 * 害ãããï¼ä¸è¨èä½æ¨©è 35 ããã³TOPPERSããã¸ã§ã¯ããå 36 責ãããã¨ï¼ 37 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 38 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ãã 40 * å 41 責ãããã¨ï¼ 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 8 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 9 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 10 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 11 * スコード中に含まれていること. 12 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 13 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 14 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 15 * の無保証規定を掲載すること. 16 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 17 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 18 * と. 19 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 20 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 21 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 22 * 報告すること. 23 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 24 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 25 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 * 免責すること. 42 28 * 43 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 44 ã 45 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 46 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 47 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 48 * ã®è²¬ä»»ãè² ããªãï¼ 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 49 34 * 50 35 */ 51 36 52 37 /* 53 * ECHONET Lite ã¿ã¹ã¯38 * ECHONET Lite タスク 54 39 */ 55 40 … … 66 51 67 52 /* 68 * ECHONET Lite ä¸æåå ±ã¢ãã¬ã¹53 * ECHONET Lite 一斉同報アドレス 69 54 */ 70 55 #ifdef SIL_ENDIAN_LITTLE … … 75 60 76 61 /* 77 * ECHONET Lite ã¿ã¹ã¯é¢é£ã®å®æ°ã®ããã©ã«ãå¤ã®å®ç¾©62 * ECHONET Lite タスク関連の定数のデフォルト値の定義 78 63 */ 79 64 #ifndef ECHONET_LCL_TASK_PRIORITY 80 #define ECHONET_LCL_TASK_PRIORITY 3 /* åæåªå 81 度 */ 65 #define ECHONET_LCL_TASK_PRIORITY 3 /* 初期優先度 */ 82 66 #endif /* ECHONET_LCL_TASK_PRIORITY */ 83 67 84 68 #ifndef ECHONET_LCL_TASK_STACK_SIZE 85 #define ECHONET_LCL_TASK_STACK_SIZE 1024 /* ã¹ã¿ãã¯é åã®ãµã¤ãº*/69 #define ECHONET_LCL_TASK_STACK_SIZE 1024 /* スタック領域のサイズ */ 86 70 #endif /* ECHONET_LCL_TASK_STACK_SIZE */ 87 71 … … 90 74 #endif /* NUM_ECHONET_LCL_MAILBOX */ 91 75 92 /* ECHONET Lite éä¿¡ã¬ã¤ã¤ã¼ã¿ã¹ã¯ ã¿ã¤ãã¼å¤åå¾*/76 /* ECHONET Lite 通信レイヤータスク タイマー値取得 */ 93 77 TMO echonet_lcltask_get_timer(ecnl_svc_task_t *svc); 94 78 95 /* ECHONET Lite éä¿¡ã¬ã¤ã¤ã¼ã¿ã¹ã¯ æéçµéå¦ç*/79 /* ECHONET Lite 通信レイヤータスク 時間経過処理 */ 96 80 void echonet_lcltask_progress(ecnl_svc_task_t *svc, TMO a_timer); 97 81 98 /* ECHONET Lite éä¿¡ã¬ã¤ã¤ã¼ã¿ã¹ã¯ ã¡ãã»ã¼ã¸åä¿¡å¦ç*/82 /* ECHONET Lite 通信レイヤータスク メッセージ受信処理 */ 99 83 void echonet_lcltask_recv_msg(ecnl_svc_task_t *svc, T_ECN_FST_BLK *p_msg); 100 84 101 /* ECHONET Lite éä¿¡ã¬ã¤ã¤ã¼ã¿ã¹ã¯ ã¿ã¤ã ã¢ã¦ãå¦ç*/85 /* ECHONET Lite 通信レイヤータスク タイムアウト処理 */ 102 86 void echonet_lcltask_timeout(ecnl_svc_task_t *svc); 103 87 104 /* ECHONET Lite éä¿¡ã¬ã¤ã¤ã¼ã¡ãã»ã¼ã¸å 105 ¥å */ 88 /* ECHONET Lite 通信レイヤーメッセージ入力 */ 106 89 ER echonet_lcl_input_msg(ecnl_svc_task_t *svc, mrb_value ep, mrb_value data); 107 90 108 91 /* 109 * ãªã¢ã¼ãECHONETãã¼ãã®é©å確èª92 * リモートECHONETノードの適合確認 110 93 */ 111 94 bool_t ecn_is_match(ecnl_svc_task_t *svc, const EOBJCB *eobjcb, T_EDATA *edata, mrb_value ep); -
EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet_task.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r270 r321 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 6 * ä¸è¨èä½æ¨©è 7 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 8 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 9 * å¤ã»åé 10 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 11 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 12 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 13 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 14 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 15 * ç¨ã§ããå½¢ã§åé 16 å¸ããå ´åã«ã¯ï¼åé 17 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 18 * è 19 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 20 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 21 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 * ç¨ã§ããªãå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 24 * ã¨ï¼ 25 * (a) åé 26 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 27 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 28 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 29 * (b) åé 30 å¸ã®å½¢æ 31 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 32 * å ±åãããã¨ï¼ 33 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 34 * 害ãããï¼ä¸è¨èä½æ¨©è 35 ããã³TOPPERSããã¸ã§ã¯ããå 36 責ãããã¨ï¼ 37 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 38 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ãã 40 * å 41 責ãããã¨ï¼ 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 8 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 9 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 10 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 11 * スコード中に含まれていること. 12 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 13 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 14 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 15 * の無保証規定を掲載すること. 16 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 17 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 18 * と. 19 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 20 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 21 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 22 * 報告すること. 23 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 24 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 25 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 * 免責すること. 42 28 * 43 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 44 ã 45 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 46 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 47 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 48 * ã®è²¬ä»»ãè² ããªãï¼ 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 49 34 * 50 35 */ 51 36 52 37 /* 53 * ECHONET Lite ã¿ã¹ã¯38 * ECHONET Lite タスク 54 39 */ 55 40 … … 120 105 i += - ENOD_REMOTE_ID + 1; 121 106 if (from_app && (i < svc->tnum_enodid)) { 122 /* éåæã®ãªã¢ã¼ããã¼ãã¯ãµã¼ãã¹å¦çã¿ã¹ã¯ã§å¦çãã*/107 /* 非同期のリモートノードはサービス処理タスクで処理する */ 123 108 switch (svc->eobjcb_table[i].profile->eobjatr) { 124 109 case EOBJ_SYNC_REMOTE_NODE: … … 168 153 169 154 /* 170 * ECHONET Lite ã¿ã¹ã¯ã®åæåï¼ã³ã³ã¹ãã©ã¯ã¿ç¸å½ï¼155 * ECHONET Lite タスクの初期化(コンストラクタ相当) 171 156 */ 172 157 void echonet_task_init(ecnl_svc_task_t *svc, intptr_t exinf) … … 176 161 177 162 /* 178 * ã¢ã¸ã¥ã¼ã«åæå163 * モジュール初期化 179 164 */ 180 165 static void _ecn_tsk_int_module_init(ecnl_svc_task_t *svc) … … 193 178 194 179 /* 195 * ECHONET Lite ã¿ã¹ã¯ ã¿ã¤ãã¼å¤åå¾180 * ECHONET Lite タスク タイマー値取得 196 181 */ 197 182 TMO echonet_svctask_get_timer(ecnl_svc_task_t *svc) … … 217 202 218 203 /* 219 * ECHONET Lite ã¿ã¹ã¯ æéçµéå¦ç204 * ECHONET Lite タスク 時間経過処理 220 205 */ 221 206 void echonet_svctask_progress(ecnl_svc_task_t *svc, TMO a_timer) … … 228 213 229 214 /* 230 * ECHONET Lite ã¿ã¹ã¯ ã¡ãã»ã¼ã¸åä¿¡å¦ç215 * ECHONET Lite タスク メッセージ受信処理 231 216 */ 232 217 void echonet_svctask_recv_msg(ecnl_svc_task_t *svc, T_ECN_FST_BLK *p_msg) … … 239 224 240 225 switch (fbs_id.ptr->hdr.type) { 241 /* å 242 é¨ä½¿ç¨ã¡ãã»ã¼ã¸ */ 226 /* 内部使用メッセージ */ 243 227 case ECN_MSG_INTERNAL: 244 228 _ecn_tsk_int_msg(svc, svc->exinf, fbs_id); 245 229 break; 246 230 247 /* ECHONET ç¨ã¡ãã»ã¼ã¸*/231 /* ECHONET用メッセージ */ 248 232 case ECN_MSG_ECHONET: 249 233 _ecn_tsk_ecn_msg(svc, svc->exinf, fbs_id); … … 254 238 } 255 239 256 /* é å解æ¾*/240 /* 領域解放 */ 257 241 if (svc->release_esv) 258 242 _ecn_fbs_del(svc->mrb, fbs_id); … … 260 244 261 245 /* 262 * ECHONET Lite ã¿ã¹ã¯ ã¿ã¤ã ã¢ã¦ãå¦ç246 * ECHONET Lite タスク タイムアウト処理 263 247 */ 264 248 void echonet_svctask_timeout(ecnl_svc_task_t *svc) … … 271 255 272 256 /* 273 * ã·ã¼ã±ã³ã¹çªå·çæ257 * シーケンス番号生成 274 258 */ 275 259 static uint16_t _ecn_tsk_new_tid(ecnl_svc_task_t *svc) … … 279 263 280 264 /* 281 * è¦æ±é»æä½æ 282 * å¼æ° 283 * ECN_FBS_ID *fp_fbs_id åå¾ããFBS_IDã®æ ¼ç´å 284 285 * ID fa_seoj éä¿¡å 286 ã®ECHONETãªãã¸ã§ã¯ãID 287 * ID fa_deoj å®å 288 ã®ECHONETãªãã¸ã§ã¯ãID 289 * uint8_t fa_epc ããããã£ã³ã¼ã 290 * uint8_t fa_pdc ããããã£å¤ãã¼ã¿ãµã¤ãº 291 * const void *p_edt ããããã£å¤ãã¼ã¿ 292 * ECN_SRV_CODE fa_esv ECHONET Light ãµã¼ãã¹ã³ã¼ã 265 * 要求電文作成 266 * 引数 267 * ECN_FBS_ID *fp_fbs_id 取得したFBS_IDの格納先 268 * ID fa_seoj 送信元のECHONETオブジェクトID 269 * ID fa_deoj 宛先のECHONETオブジェクトID 270 * uint8_t fa_epc プロパティコード 271 * uint8_t fa_pdc プロパティ値データサイズ 272 * const void *p_edt プロパティ値データ 273 * ECN_SRV_CODE fa_esv ECHONET Light サービスコード 293 274 */ 294 275 ER _ecn_tsk_mk_esv(ecnl_svc_task_t *svc, ECN_FBS_ID *fp_fbs_id, ID fa_seoj, ID fa_deoj, … … 298 279 ER a_ret; 299 280 int a_size, i; 300 ECN_FBS_ID a_fbs_id = { 0 }; /* è¦æ±é»æç¨ã¡ã¢ãª*/281 ECN_FBS_ID a_fbs_id = { 0 }; /* 要求電文用メモリ */ 301 282 T_ECN_EDT_HDR a_ecn_hdp; /* ecn_hdr+edata+ecn_prp 14byte */ 302 283 ID a_enodid; … … 305 286 306 287 if (!fp_fbs_id) 307 return E_PAR; /* åå¾ããFBS_IDã®æ ¼ç´å 308 ãNULL */ 288 return E_PAR; /* 取得したFBS_IDの格納先がNULL */ 309 289 if (ECHONET_MEMPOOL_BLOCK_SIZE <= fa_pdc) 310 return E_PAR; /* ããããã£å¤ãµã¤ãºã大ãããã*/290 return E_PAR; /* プロパティ値サイズが大きすぎる */ 311 291 if (!p_edt && 0 < fa_pdc) 312 return E_PAR; /* ããããã£å¤ãµã¤ãºã1以ä¸ãªã®ã«ãã¼ã¿ãã¤ã³ã¿ãNULL */292 return E_PAR; /* プロパティ値サイズが1以上なのにデータポインタがNULL */ 313 293 314 294 if (fa_seoj <= EOBJ_NULL || svc->tmax_eobjid < fa_seoj) 315 return E_NOEXS; /* ECHONET ãªãã¸ã§ã¯ãIDãæªå®ç¾©*/295 return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */ 316 296 #ifndef ECHONET_CONTROLLER_EXTENTION 317 297 if (fa_deoj < EOBJ_NULL || svc->tmax_eobjid < fa_deoj) 318 return E_NOEXS; /* ECHONET ãªãã¸ã§ã¯ãIDãæªå®ç¾©*/298 return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */ 319 299 #else 320 300 if (fa_deoj < EOBJ_NULL || (svc->tmax_eobjid + TNUM_AEOBJID) < fa_deoj) 321 return E_NOEXS; /* ECHONET ãªãã¸ã§ã¯ãIDãæªå®ç¾©*/301 return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */ 322 302 #endif 323 303 if (fa_deoj == EOBJ_NULL && fa_esv == ESV_INFC) 324 return E_NOEXS; /* ECHONET ãªãã¸ã§ã¯ãIDãæªå®ç¾©*/325 326 /* è¦æ±æå°ãµã¤ãºã®åå¾*/304 return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */ 305 306 /* 要求最小サイズの取得 */ 327 307 a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP); 328 308 329 /* è¦æ±é»æç¨ã¡ã¢ãªã®åå¾*/309 /* 要求電文用メモリの取得 */ 330 310 a_ret = _ecn_fbs_cre(mrb, a_size, &a_fbs_id); 331 if (a_ret != E_OK || !a_fbs_id.ptr) { /* 確ä¿å¤±æ*/311 if (a_ret != E_OK || !a_fbs_id.ptr) { /* 確保失敗 */ 332 312 ECN_DBG_PUT_3("_ecn_fbs_cre(%d) result = %d:%s", 333 313 a_size, … … 336 316 } 337 317 338 /* è¦æ±é»æè¨å®*/318 /* 要求電文設定 */ 339 319 memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp)); 340 320 a_ecn_hdp.ecn_hdr.ehd1 = ECN_EDH1_ECHONET_LITE; … … 343 323 memcpy(&a_ecn_hdp.edata.seoj, &echonet_svctask_get_eobjinib(svc, fa_seoj)->eojx1, sizeof(a_ecn_hdp.edata.seoj)); 344 324 a_ecn_hdp.edata.esv = fa_esv; 345 a_ecn_hdp.edata.opc = 1; /* å¦çããããã£æ°*/346 a_ecn_hdp.ecn_prp.epc = fa_epc; /* ããããã£ã³ã¼ã*/347 a_ecn_hdp.ecn_prp.pdc = fa_pdc; /* ä»éãã¼ã¿ãµã¤ãº*/348 349 /* è¦æ±é»æç¨ã¡ã¢ãªã«ãã¼ã¿è¿½å*/325 a_ecn_hdp.edata.opc = 1; /* 処理プロパティ数 */ 326 a_ecn_hdp.ecn_prp.epc = fa_epc; /* プロパティコード */ 327 a_ecn_hdp.ecn_prp.pdc = fa_pdc; /* 付随データサイズ */ 328 329 /* 要求電文用メモリにデータ追加 */ 350 330 a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_id, &a_ecn_hdp, a_size); 351 331 if (a_ret) { … … 356 336 } 357 337 if (0 < fa_pdc) { 358 /* ä»éãã¼ã¿è¿½å*/338 /* 付随データ追加 */ 359 339 a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_id, p_edt, fa_pdc); 360 340 if (a_ret) { … … 366 346 } 367 347 if (fa_deoj == 0) { 368 ECN_DBG_PUT(" ãã«ããã£ã¹ã");369 /* fa_deoj == 0 : ãã«ããã£ã¹ã*/348 ECN_DBG_PUT("マルチキャスト"); 349 /* fa_deoj == 0 : マルチキャスト */ 370 350 ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx1 = EOJ_X1_PROFILE; 371 351 ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx2 = EOJ_X2_NODE_PROFILE; … … 375 355 else if (fa_deoj <= svc->tmax_eobjid) { 376 356 ECN_DBG_PUT_1("fa_deoj = %d", fa_deoj); 377 /* if (fa_deoj < 1 || svc->tmax_eobjid < fa_deoj) â¦ã®ç°å¸¸ç³»ã¯é¢æ°åé ã§é¤å¤æ¸ã¿ã¨ãã*/357 /* if (fa_deoj < 1 || svc->tmax_eobjid < fa_deoj) …の異常系は関数冒頭で除外済みとする */ 378 358 a_eobj = echonet_svctask_get_eobjinib(svc, fa_deoj); 379 359 memcpy(&((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj, &a_eobj->eojx1, 380 360 sizeof(((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj)); 381 361 382 /* ãã¼ãã«ããæ¤ç´¢*/362 /* テーブルから検索 */ 383 363 a_fbs_id.ptr->hdr.target.id = ENOD_NOT_MATCH_ID; 384 364 a_enodid = (a_eobj->enodid == 0) ? fa_deoj : a_eobj->enodid; … … 420 400 ECN_ENOD_ID enodid; 421 401 ECN_DBG_PUT_1("fa_deoj = %d", fa_deoj); 422 /* ãªãã¸ã§ã¯ãIDããEOJã¨ãã¼ãIDãåå¾*/402 /* オブジェクトIDからEOJとノードIDを取得 */ 423 403 if(ecn_agent_get_eoj_enodid(svc, fa_deoj, &eoj, &enodid)){ 424 404 memcpy(&((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj, &eoj, … … 452 432 453 433 ((T_EDATA *)a_fbs_id.ptr)->trn_pos = -1; 454 /* æ£å¸¸çµäº*/434 /* 正常終了 */ 455 435 *fp_fbs_id = a_fbs_id; 456 436 return E_OK; 457 437 458 438 lb_except: 459 /* ãã¼ã¿ä½æ失æãããé å解æ¾*/439 /* データ作成失敗したら領域解放 */ 460 440 if (a_fbs_id.ptr) 461 441 _ecn_fbs_del(mrb, a_fbs_id); … … 465 445 466 446 /* 467 * å 468 é¨ä½¿ç¨ã¡ãã»ã¼ã¸ 447 * 内部使用メッセージ 469 448 */ 470 449 static void _ecn_tsk_int_msg(ecnl_svc_task_t *svc, intptr_t fa_exinf, ECN_FBS_ID fa_fbs_id) … … 497 476 498 477 /* 499 * ã¿ã¹ã¯åæå478 * タスク初期化 500 479 */ 501 480 void _ecn_tsk_int_startup(ecnl_svc_task_t *svc) … … 505 484 506 485 /* 507 * ã¤ã³ã¹ã¿ã³ã¹ãªã¹ãéç¥ã®éä¿¡508 * ECHONET-Lite_Ver.1.10_02.pdf p.43 å³4-1-4486 * インスタンスリスト通知の送信 487 * ECHONET-Lite_Ver.1.10_02.pdf p.43 図4-1-4 509 488 */ 510 489 ER _ecn_tsk_ntf_inl(ecnl_svc_task_t *svc) 511 490 { 512 491 mrb_state *mrb = svc->mrb; 513 const T_ECN_EOJ a_seoj = /* 0x01 : ä¸è¬ãã¼ãã0x02ï¼éä¿¡å°ç¨ãã¼ã*/492 const T_ECN_EOJ a_seoj = /* 0x01 : 一般ノード、0x02:送信専用ノード */ 514 493 { EOJ_X1_PROFILE, EOJ_X2_NODE_PROFILE, 0x01 }; 515 494 const T_ECN_EOJ a_deoj = … … 521 500 int i; 522 501 uint8_t a_count; 523 const EOBJCB *enod = &svc->eobjcb_table[0]; /* ãã¼ã«ã«ãã¼ã*/502 const EOBJCB *enod = &svc->eobjcb_table[0]; /* ローカルノード */ 524 503 const EOBJINIB *eobj; 525 504 … … 539 518 540 519 if (!a_eoj_ct) { 541 /* ã¡ã¢ãªç¢ºä¿ã»ãããæ ¼ç´*/542 a_hdr.ecn_hdr.tid = (uint8_t)_ecn_tsk_new_tid(svc); /* ã·ã¼ã±ã³ã¹çªå·çæ*/520 /* メモリ確保・ヘッダ格納 */ 521 a_hdr.ecn_hdr.tid = (uint8_t)_ecn_tsk_new_tid(svc); /* シーケンス番号生成 */ 543 522 a_ret = _ecn_fbs_cre(mrb, sizeof(a_hdr), &a_fbs); 544 if (a_ret != E_OK) /* 確ä¿å¤±æ*/523 if (a_ret != E_OK) /* 確保失敗 */ 545 524 goto lb_except; 546 525 a_ret = _ecn_fbs_add_data(mrb, a_fbs, &a_hdr, sizeof(a_hdr)); 547 if (a_ret != E_OK) /* ãã¼ã¿è¿½å 失æ*/526 if (a_ret != E_OK) /* データ追加失敗 */ 548 527 goto lb_except; 549 528 … … 552 531 a_fbs.ptr->hdr.target.id = ENOD_MULTICAST_ID; 553 532 a_fbs.ptr->hdr.reply.id = ENOD_LOCAL_ID; 554 ((T_EDATA *)a_fbs.ptr)->hdr.ecn_prp.pdc = 1; /* 件æ°*/555 /* 件æ°ãæ ¼ç´*/533 ((T_EDATA *)a_fbs.ptr)->hdr.ecn_prp.pdc = 1; /* 件数 */ 534 /* 件数を格納 */ 556 535 a_count = (uint8_t)(enod->eobjcnt - i); 557 536 if (a_count >= ECN_IST_LST_EOJ_MAX_CT) 558 537 a_count = ECN_IST_LST_EOJ_MAX_CT; 559 538 a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs, &a_count, sizeof(a_count)); 560 if (a_ret != E_OK) /* ãã¼ã¿è¿½å 失æ*/539 if (a_ret != E_OK) /* データ追加失敗 */ 561 540 goto lb_except; 562 541 } 563 /* ECHONET ãªãã¸ã§ã¯ãID(3byte)ãæ ¼ç´*/542 /* ECHONETオブジェクトID(3byte)を格納 */ 564 543 a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs, &eobj->eojx1, sizeof(T_ECN_EOJ)); 565 if (a_ret != E_OK) /* ãã¼ã¿è¿½å 失æ*/544 if (a_ret != E_OK) /* データ追加失敗 */ 566 545 goto lb_except; 567 546 568 /* 件æ°ã»edtãµã¤ãºå ç®*/547 /* 件数・edtサイズ加算 */ 569 548 ((T_EDATA *)a_fbs.ptr)->hdr.ecn_prp.pdc += sizeof(T_ECN_EOJ); 570 549 if (++a_eoj_ct < ECN_IST_LST_EOJ_MAX_CT) 571 550 continue; 572 551 573 /* 1 ã¢ãã¦ã³ã¹ã§ã®ä¸éã«éããããä¸æ¦éä¿¡*/552 /* 1アナウンスでの上限に達したら、一旦送信 */ 574 553 a_ret = _ecn_tsk_snd_mbx(svc, a_fbs, false); 575 if (a_ret != E_OK) /* ãã¼ã¿é信失æ*/554 if (a_ret != E_OK) /* データ送信失敗 */ 576 555 goto lb_except; 577 556 a_eoj_ct = 0; … … 579 558 } 580 559 if (a_eoj_ct) { 581 /* æªéä¿¡ãã¼ã¿ããã£ãããéä¿¡*/560 /* 未送信データがあったら、送信 */ 582 561 a_ret = _ecn_tsk_snd_mbx(svc, a_fbs, false); 583 if (a_ret != E_OK) /* ãã¼ã¿é信失æ*/562 if (a_ret != E_OK) /* データ送信失敗 */ 584 563 goto lb_except; 585 564 a_fbs.ptr = 0; … … 625 604 626 605 /* 627 * 3byteã®eobjidã§é 628 åä¸ãæ¤ç´¢ãã 606 * 3byteのeobjidで配列中を検索する 629 607 */ 630 608 const EOBJINIB *_ecn_eoj_fnd(const EOBJCB *fp_nod, const T_ECN_EOJ *fp_eoj) … … 659 637 660 638 /* 661 * é»æã®æ§æè¦ç´ æ°ã¨ãµã¤ãºã®ãã§ãã¯ãè¡ã639 * 電文の構成要素数とサイズのチェックを行う 662 640 */ 663 641 static bool_t _ecn_tsk_check_format(ecnl_svc_task_t *svc, T_EDATA *edata, int len) … … 702 680 703 681 /* 704 * ECHONET ç¨ã¡ãã»ã¼ã¸682 * ECHONET用メッセージ 705 683 */ 706 684 static void _ecn_tsk_ecn_msg(ecnl_svc_task_t *svc, intptr_t fa_exinf, ECN_FBS_ID fa_fbs_id) … … 752 730 } 753 731 754 /* é»æã®æ§æè¦ç´ æ°ã¨ãµã¤ãºã®ãã§ãã¯ãè¡ã*/732 /* 電文の構成要素数とサイズのチェックを行う */ 755 733 if (!_ecn_tsk_check_format(svc, (T_EDATA *)fa_fbs_id.ptr, fa_fbs_id.ptr->hdr.length)) { 756 734 ECN_DBG_PUT("_ecn_tsk_ecn_msg() format fault"); … … 758 736 } 759 737 760 /* éä¿¡å®ãããã¼ããæ¤ç´¢*/738 /* 送信宛からノードを検索 */ 761 739 p_nod = _ecn_eno_fnd(svc, fa_fbs_id.ptr->hdr.target.id); 762 /* éä¿¡å 763 ãããã¼ããæ¤ç´¢ */ 740 /* 送信元からノードを検索 */ 764 741 p_snod = _ecn_eno_fnd(svc, fa_fbs_id.ptr->hdr.sender.id); 765 742 if (p_snod != NULL) { 766 743 sobjatr = p_snod->profile->eobjatr; 767 /* ãã¼ããããã¡ã¤ã«ã®å ´å*/744 /* ノードプロファイルの場合 */ 768 745 if ((p_esv->edata.seoj.eojx1 == EOJ_X1_PROFILE) 769 746 && (p_esv->edata.seoj.eojx2 == EOJ_X2_NODE_PROFILE)) { 770 747 p_sobj = p_snod->profile; 771 748 } 772 /* æ©å¨ãªãã¸ã§ã¯ãã®å ´å*/749 /* 機器オブジェクトの場合 */ 773 750 else { 774 751 p_sobj = _ecn_eoj_fnd(p_snod, &p_esv->edata.seoj); … … 780 757 #endif 781 758 782 /* ãã¼ãå 783 ã®æ©å¨ãªãã¸ã§ã¯ããæ¤ç´¢ */ 759 /* ノード内の機器オブジェクトを検索 */ 784 760 a_prc = false; 785 761 a_fwd = false; … … 788 764 eobjatr = p_nod->profile->eobjatr; 789 765 p_eoj = &p_esv->edata.deoj; 790 /* ãã¼ããããã¡ã¤ã«ã®å ´å*/766 /* ノードプロファイルの場合 */ 791 767 if ((p_eoj->eojx1 == EOJ_X1_PROFILE) 792 768 && (p_eoj->eojx2 == EOJ_X2_NODE_PROFILE)) { 793 769 if ((p_eoj->eojx3 == p_nod->profile->eojx3) 794 770 || (p_eoj->eojx3 == 0)) { 795 /* é»æå¦çå®è¡*/771 /* 電文処理実行 */ 796 772 if (_ecn_tsk_ecn_msg_main(svc, fa_fbs_id, p_nod->profile, eobjatr, p_sobj, sobjatr) == 1) 797 773 a_fwd = true; 798 774 a_prc = true; 799 775 } 800 /* 0x74 ããããã£å¤éç¥ï¼å¿çè¦ï¼ã®å ´åã®å ´åã¯é»æç ´æ£*/776 /* 0x74 プロパティ値通知(応答要)の場合の場合は電文破棄 */ 801 777 else if (p_esv->edata.esv == ESV_INFC) { 802 778 a_prc = true; 803 779 } 804 780 } 805 /* æ©å¨ãªãã¸ã§ã¯ãã®å ´å*/781 /* 機器オブジェクトの場合 */ 806 782 else { 807 783 count = p_nod->eobjcnt; … … 822 798 if (p_obj->eojx2 != p_eoj->eojx2) 823 799 continue; 824 /* ã¤ã³ã¹ã¿ã³ã¹ã³ã¼ããï¼ã®å ´åãåãã¯ã©ã¹ã®å 825 ¨ã¦ã®ã¤ã³ã¹ã¿ã³ã¹å® */ 800 /* インスタンスコードが0の場合、同じクラスの全てのインスタンス宛 */ 826 801 if ((p_obj->eojx3 != p_eoj->eojx3) && (p_eoj->eojx3 != 0)) 827 802 continue; 828 803 829 /* é»æå¦çå®è¡*/804 /* 電文処理実行 */ 830 805 if (_ecn_tsk_ecn_msg_main(svc, fa_fbs_id, p_obj, eobjatr, p_sobj, sobjatr) == 1) 831 806 a_fwd = true; … … 833 808 } 834 809 835 /* æ©å¨ãªãã¸ã§ã¯ããè¦ã¤ãããã0x74 ããããã£å¤éç¥ï¼å¿çè¦ï¼ã®å ´åã¯é»æç ´æ£*/810 /* 機器オブジェクトが見つからず、0x74 プロパティ値通知(応答要)の場合は電文破棄 */ 836 811 if (!a_prc && (p_esv->edata.esv == ESV_INFC)) { 837 812 a_prc = true; … … 839 814 } 840 815 } 841 /* æ©å¨ãªãã¸ã§ã¯ããè¦ã¤ãããªãå ´åã§ã*/816 /* 機器オブジェクトが見つからない場合でも */ 842 817 if (!a_prc) { 843 /* é»æå¦çå®è¡ï¼å¿çåä¿¡ç¨ï¼*/818 /* 電文処理実行(応答受信用) */ 844 819 if (_ecn_tsk_ecn_msg_main(svc, fa_fbs_id, NULL, EPC_NONE, p_sobj, sobjatr) == 1) 845 820 a_fwd = true; 846 821 } 847 822 848 /* å¿çã®å ´åã¢ããªã±ã¼ã·ã§ã³ã«è»¢éãã*/823 /* 応答の場合アプリケーションに転送する */ 849 824 if (a_fwd && ((p_esv->ecn_hdr.tid == svc->api_tid) 850 825 || svc->forward_esv)) … … 852 827 svc->release_esv = false; 853 828 854 ECN_CAP_PUT_1("redirect svc->svc_mbxid âsvc->api_mbxid (esv:0x%02X)",829 ECN_CAP_PUT_1("redirect svc->svc_mbxid → svc->api_mbxid (esv:0x%02X)", 855 830 p_esv->edata.esv); 856 831 fa_fbs_id.ptr->hdr.target.id = ENOD_API_ID; … … 878 853 879 854 switch (p_esv->edata.esv) { 880 /* 0x60 ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ï¼å¿çä¸è¦ï¼*/855 /* 0x60 プロパティ値書き込み要求(応答不要) */ 881 856 case ESV_SET_I: 882 857 if (!p_obj) { … … 890 865 break; 891 866 892 /* 0x61 ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ï¼å¿çè¦ï¼*/867 /* 0x61 プロパティ値書き込み要求(応答要) */ 893 868 case ESV_SET_C: 894 869 if (!p_obj) { … … 902 877 break; 903 878 904 /* 0x62 ããããã£å¤èªã¿åºãè¦æ±*/879 /* 0x62 プロパティ値読み出し要求 */ 905 880 case ESV_GET: 906 881 if (!p_obj) { … … 914 889 break; 915 890 916 /* 0x63 ããããã£å¤éç¥è¦æ±*/891 /* 0x63 プロパティ値通知要求 */ 917 892 case ESV_INF_REQ: 918 893 if (!p_obj) { … … 927 902 break; 928 903 929 /* 0x6E ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãè¦æ±*/904 /* 0x6E プロパティ値書き込み・読み出し要求 */ 930 905 case ESV_SET_GET: 931 906 if (!p_obj) { … … 939 914 break; 940 915 941 /* 0x74 ããããã£å¤éç¥ï¼å¿çè¦ï¼*/916 /* 0x74 プロパティ値通知(応答要) */ 942 917 case ESV_INFC: 943 918 if (!p_sobj) 944 /* éä¿¡å 945 ãæªç¥ã®ä»ãã¼ãã§ãã£ãå ´åãå¿çãè¿ã */ 919 /* 送信元が未知の他ノードであった場合、応答を返す */ 946 920 _ecn_tsk_eoj_res(svc, fa_fbs_id, ESV_INFC_RES, ESV_INFC_RES); /* 0x7A; 0x7A */ 947 921 else if (fromapp) 948 /* ã¢ããªã±ã¼ã·ã§ã³ããã®è¦æ±ã®å ´åãããããã£å¤éç¥ï¼å¿çè¦ï¼ãéä¿¡ãã*/922 /* アプリケーションからの要求の場合、プロパティ値通知(応答要)を送信する */ 949 923 _ecn_tsk_eoj_get(svc, p_sobj, sobjatr, true, (EPC_RULE_GET|EPC_RULE_ANNO), fa_fbs_id, ESV_INFC, ESV_NOP); /* 0x74; 0 */ 950 924 else 951 /* éä¿¡å 952 ãæ¢ç¥ã®ä»ãã¼ãã§ãã£ãå ´åãããããã£å¤ãæ´æ°ãå¿çãè¿ã */ 925 /* 送信元が既知の他ノードであった場合、プロパティ値を更新し応答を返す */ 953 926 _ecn_tsk_eoj_set(svc, p_sobj, sobjatr, fromapp, true, fa_fbs_id, ESV_INFC_RES, ESV_INFC_RES, &a_fbs_anno); /* 0x7A; 0x7A */ 954 927 result = 0; 955 928 break; 956 929 957 /* 0x60 ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ï¼å¿çä¸è¦ï¼*/958 case ESV_SET_I_SNA: /* 0x50 ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ä¸å¯å¿ç*/930 /* 0x60 プロパティ値書き込み要求(応答不要) */ 931 case ESV_SET_I_SNA: /* 0x50 プロパティ値書き込み要求不可応答 */ 959 932 result = 1; 960 933 break; 961 934 962 /* 0x61 ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ï¼å¿çè¦ï¼*/963 case ESV_SET_RES: /* 0x71 ããããã£å¤æ¸ãè¾¼ã¿å¿ç*/964 case ESV_SET_C_SNA: /* 0x51 ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ä¸å¯å¿ç*/935 /* 0x61 プロパティ値書き込み要求(応答要) */ 936 case ESV_SET_RES: /* 0x71 プロパティ値書き込み応答 */ 937 case ESV_SET_C_SNA: /* 0x51 プロパティ値書き込み要求不可応答 */ 965 938 result = 1; 966 939 break; 967 940 968 /* 0x62 ããããã£å¤èªã¿åºãè¦æ±*/969 case ESV_GET_RES: /* 0x72 ããããã£å¤èªã¿åºãå¿ç*/970 case ESV_GET_SNA: /* 0x52 ããããã£å¤èªã¿åºãä¸å¯å¿ç*/941 /* 0x62 プロパティ値読み出し要求 */ 942 case ESV_GET_RES: /* 0x72 プロパティ値読み出し応答 */ 943 case ESV_GET_SNA: /* 0x52 プロパティ値読み出し不可応答 */ 971 944 if (!p_sobj) { 972 945 ECN_DBG_PUT_1("_ecn_tsk_ecn_msg_main() eoj %06X not found.", … … 979 952 break; 980 953 981 /* 0x63 ããããã£å¤éç¥è¦æ±*/982 case ESV_INF: /* 0x73 ããããã£å¤éç¥*/983 case ESV_INF_SNA: /* 0x53 ããããã£å¤éç¥ä¸å¯å¿ç*/954 /* 0x63 プロパティ値通知要求 */ 955 case ESV_INF: /* 0x73 プロパティ値通知 */ 956 case ESV_INF_SNA: /* 0x53 プロパティ値通知不可応答 */ 984 957 if (!p_sobj) { 985 958 ECN_DBG_PUT_1("_ecn_tsk_ecn_msg_main() eoj %06X not found.", … … 992 965 break; 993 966 994 /* 0x6E ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãè¦æ±*/995 case ESV_SET_GET_RES: /* 0x7E ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãå¿ç*/996 case ESV_SET_GET_SNA: /* 0x5E ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãä¸å¯å¿ç*/967 /* 0x6E プロパティ値書き込み・読み出し要求 */ 968 case ESV_SET_GET_RES: /* 0x7E プロパティ値書き込み・読み出し応答 */ 969 case ESV_SET_GET_SNA: /* 0x5E プロパティ値書き込み・読み出し不可応答 */ 997 970 if (!p_sobj) { 998 971 ECN_DBG_PUT_1("_ecn_tsk_ecn_msg_main() eoj %06X not found.", … … 1005 978 break; 1006 979 1007 /* 0x74 ããããã£å¤éç¥ï¼å¿çè¦ï¼*/1008 case ESV_INFC_RES: /* 0x7A ããããã£å¤éç¥å¿ç*/980 /* 0x74 プロパティ値通知(応答要) */ 981 case ESV_INFC_RES: /* 0x7A プロパティ値通知応答 */ 1009 982 result = 1; 1010 983 break; … … 1016 989 } 1017 990 1018 /* ããããã£éç¥è¦æ±ãéä¿¡*/991 /* プロパティ通知要求を送信 */ 1019 992 if (a_fbs_anno.ptr != NULL) { 1020 993 ER a_ret = _ecn_tsk_snd_mbx(svc, a_fbs_anno, true); … … 1093 1066 1094 1067 /* 1095 * ECN_FBS_IDããT_ECN_PRP1件ã¨ãã®ä»éãã¼ã¿(edt)ãæ½åºããedtã®ãã¤ã³ã¿ãè¿ã 1096 * å¼æ° 1097 * ECN_FBS_ID fa_fbs_id èªã¿åãFBS 1098 * T_ECN_PRP *fp_prp epc+pdcã®æ ¼ç´å 1099 1100 * T_ECN_SUB_BLK * const fp_prev_blk åå使ã£ãã¡ã¢ãªã®ãã¤ã³ã¿(ç¡ããã°0) 1101 * æ£å¸¸ï¼ãã¤ã³ã¿ NG:0 1102 * ãã¤ã³ã¿ã¯_ecn_fbs_mbx_rel()ã§è§£æ¾ããå¿ 1103 è¦ããã 1068 * ECN_FBS_IDからT_ECN_PRP1件とその付随データ(edt)を抽出し、edtのポインタを返す 1069 * 引数 1070 * ECN_FBS_ID fa_fbs_id 読み取るFBS 1071 * T_ECN_PRP *fp_prp epc+pdcの格納先 1072 * T_ECN_SUB_BLK * const fp_prev_blk 前回使ったメモリのポインタ(無ければ0) 1073 * 正常:ポインタ NG:0 1074 * ポインタは_ecn_fbs_mbx_rel()で解放する必要がある 1104 1075 */ 1105 1076 static T_ECN_SUB_BLK *_ecn_tsk_get_prp_pce(ecnl_svc_task_t *svc, ECN_FBS_ID fa_fbs_id, T_ECN_PRP *fp_prp, … … 1111 1082 ER a_ret; 1112 1083 1113 /* ããããã£ç¨ã¡ã¢ãªã®åå¾*/1084 /* プロパティ用メモリの取得 */ 1114 1085 if (fp_prev_blk) { 1115 p_blk = fp_prev_blk; /* åå使ã£ãã¡ã¢ãªããããªããåå©ç¨ãã*/1086 p_blk = fp_prev_blk; /* 前回使ったメモリがあるなら、再利用する */ 1116 1087 } 1117 1088 else { … … 1119 1090 if (!p_blk) { 1120 1091 ECN_DBG_PUT("_ecn_fbs_mbx_get() fault."); 1121 return 0; /* ã¡ã¢ãªä¸è¶³*/1092 return 0; /* メモリ不足 */ 1122 1093 } 1123 1094 } 1124 1095 memset(p_blk, 0, sizeof(*p_blk)); 1125 1096 1126 /* T_ECN_PRP é¨å(epc,pdc)ãèªã¿åã*/1097 /* T_ECN_PRP部分(epc,pdc)を読み取る */ 1127 1098 a_size = 0; 1128 1099 a_ret = _ecn_fbs_get_data(mrb, fa_fbs_id, fp_prp, sizeof(*fp_prp), &a_size); … … 1133 1104 1134 1105 if (0 < fp_prp->pdc) { 1135 /* ä»éãã¼ã¿é¨å(edt)ãèªã¿åã*/1106 /* 付随データ部分(edt)を読み取る */ 1136 1107 a_size = 0; 1137 1108 a_ret = _ecn_fbs_get_data(mrb, fa_fbs_id, p_blk, fp_prp->pdc, &a_size); … … 1145 1116 1146 1117 lb_except: 1147 /* ããããã£ç¨ã¡ã¢ãªè§£æ¾*/1118 /* プロパティ用メモリ解放 */ 1148 1119 if (p_blk && !fp_prev_blk) 1149 1120 _ecn_fbs_mbx_rel(mrb, p_blk); … … 1155 1126 ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, ECN_FBS_ID *fa_fbs_anno, int a_count, 1156 1127 int *p_sw_ok); 1157 /* ããããã£å¤æ¸ãè¾¼ã¿å®è¡*/1128 /* プロパティ値書き込み実行 */ 1158 1129 static ER _ecn_tsk_eoj_set_main(ecnl_svc_task_t *svc, const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp, bool_t fa_update, 1159 1130 ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, ECN_FBS_ID *fa_fbs_anno, int a_count, … … 1172 1143 1173 1144 for (i = 0; i < a_count; i++) { 1174 /* ECN_FBS_ID ããT_ECN_PRP1件ã¨ãã®ä»éãã¼ã¿ãæ½åºãããã®ãã¤ã³ã¿ãè¿ã*/1145 /* ECN_FBS_IDからT_ECN_PRP1件とその付随データを抽出し、そのポインタを返す */ 1175 1146 p_edt = _ecn_tsk_get_prp_pce(svc, fa_fbs_id, &a_prp, p_edt); 1176 1147 if (!p_edt) { … … 1179 1150 } 1180 1151 1181 /* ããããã£ã®è¨å®set_prp(obj, reqp, resp) */1152 /* プロパティの設定 set_prp(obj, reqp, resp) */ 1182 1153 a_size = a_prp.pdc; 1183 /* obj,epc ã«å¯¾å¿ããseté¢æ°ãå¼ã¶*/1154 /* obj,epcに対応するset関数を呼ぶ */ 1184 1155 a_eprp = _ecn_tsk_eoj_get_property(fp_obj, a_prp.epc); 1185 1156 if ((a_eprp != NULL) … … 1203 1174 fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3, 1204 1175 a_prp.epc, p_edt->payload[0], a_size); 1205 *p_sw_ok = 0; /* ããããã£è¨å®å¤±æ*/1206 /* å¿çå¦çã®å ´åEDTã¯è¨å®ããªã*/1176 *p_sw_ok = 0; /* プロパティ設定失敗 */ 1177 /* 応答処理の場合EDTは設定しない */ 1207 1178 if (fa_update) 1208 1179 a_prp.pdc = 0; 1209 1180 } 1210 1181 1211 /* å¿çé»æç¨ã¡ã¢ãªã«ãã¼ã¿è¿½å (epc,pdcã®2byte) */1182 /* 応答電文用メモリにデータ追加(epc,pdcの2byte) */ 1212 1183 a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_res, &a_prp, sizeof(a_prp)); 1213 1184 if (a_ret) { … … 1217 1188 1218 1189 if (0 < a_prp.pdc) { 1219 /* å¿çé»æç¨ã¡ã¢ãªã«ãã¼ã¿è¿½å(edt n-byte) */1190 /* 応答電文用メモリにデータ追加(edt n-byte) */ 1220 1191 a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_res, p_edt->payload, a_prp.pdc); 1221 1192 if (a_ret) { … … 1226 1197 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc ++; 1227 1198 1228 /* ããããã£éç¥ããã®å ´å*/1199 /* プロパティ通知ありの場合 */ 1229 1200 if (a_anno && (a_ans == a_size)) { 1230 1201 if (fa_fbs_anno->ptr == NULL) { … … 1244 1215 1245 1216 lb_finally: 1246 /* ããããã£ç¨ã¡ã¢ãªè§£æ¾*/1217 /* プロパティ用メモリ解放 */ 1247 1218 if (p_edt) 1248 1219 _ecn_fbs_mbx_rel(mrb, p_edt); … … 1253 1224 static ER _ecn_tsk_eoj_get_main(ecnl_svc_task_t *svc, const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_forward, ATR fa_access, 1254 1225 ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, int a_count, int *p_sw_ok); 1255 /* ããããã£å¤èªã¿åºãå®è¡*/1226 /* プロパティ値読み出し実行 */ 1256 1227 static ER _ecn_tsk_eoj_get_main(ecnl_svc_task_t *svc, const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_forward, ATR fa_access, 1257 1228 ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, int a_count, int *p_sw_ok) … … 1259 1230 mrb_state *mrb = svc->mrb; 1260 1231 T_ECN_SUB_BLK *p_edt = 0; 1261 void *p_prp_buf = 0; /* ä½æ¥é å*/1232 void *p_prp_buf = 0; /* 作業領域 */ 1262 1233 const EPRPINIB *a_eprp; 1263 1234 ER a_ret = E_SYS; … … 1267 1238 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc = 0; 1268 1239 1269 /* ä½æ¥é å確ä¿*/1240 /* 作業領域確保 */ 1270 1241 p_prp_buf = _ecn_fbs_mbx_get(mrb, ECHONET_MEMPOOL_BLOCK_SIZE); 1271 1242 if (!p_prp_buf) { 1272 1243 ECN_DBG_PUT_2("_ecn_fbs_mbx_get() result = %d:%s", a_ret, itron_strerror(a_ret)); 1273 goto lb_except; /* ã¡ã¢ãªä¸è¶³*/1244 goto lb_except; /* メモリ不足 */ 1274 1245 } 1275 1246 1276 1247 for (i = 0; i < a_count; i++) { 1277 /* ECN_FBS_ID ããT_ECN_PRP1件ã¨ãã®ä»éãã¼ã¿ãæ½åº*/1248 /* ECN_FBS_IDからT_ECN_PRP1件とその付随データを抽出 */ 1278 1249 p_edt = _ecn_tsk_get_prp_pce(svc, fa_fbs_id, &a_prp, p_edt); 1279 1250 if (!p_edt) { … … 1282 1253 } 1283 1254 1284 /* ããããã£ã®åå¾get_eprp(obj, reqp, resp, size) */1255 /* プロパティの取得 get_eprp(obj, reqp, resp, size) */ 1285 1256 memset(p_prp_buf, 0, ECHONET_MEMPOOL_BLOCK_SIZE); 1286 /* obj,epc ã«å¯¾å¿ããgeté¢æ°ãå¼ã¶*/1257 /* obj,epcに対応するget関数を呼ぶ */ 1287 1258 a_eprp = _ecn_tsk_eoj_get_property(fp_obj, a_prp.epc); 1288 1259 if ((a_eprp != NULL) && (((a_eprp->eprpatr & fa_access) != 0) && (fa_eobjatr == EOBJ_LOCAL_NODE) || fa_forward)) { … … 1295 1266 a_prp.pdc = (uint8_t)a_ans; 1296 1267 } else { 1297 *p_sw_ok = 0; /* ããããã£åå¾å¤±æ*/1268 *p_sw_ok = 0; /* プロパティ取得失敗 */ 1298 1269 a_ans = 0; 1299 1270 a_prp.pdc = 0; 1300 1271 } 1301 1272 1302 /* å¿çé»æç¨ã¡ã¢ãªã«ãã¼ã¿è¿½å (epc,pdcã®2byte) */1273 /* 応答電文用メモリにデータ追加(epc,pdcの2byte) */ 1303 1274 a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_res, &a_prp, sizeof(a_prp)); 1304 1275 if (a_ret) { … … 1307 1278 } 1308 1279 if (0 < a_ans) { 1309 /* ä»éãã¼ã¿è¿½å*/1280 /* 付随データ追加 */ 1310 1281 a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_res, p_prp_buf, a_ans); 1311 1282 if (a_ret) { … … 1323 1294 1324 1295 lb_finally: 1325 /* ä½æ¥é å解æ¾*/1296 /* 作業領域解放 */ 1326 1297 if (p_prp_buf) 1327 1298 _ecn_fbs_mbx_rel(mrb, p_prp_buf); 1328 1299 1329 /* ããããã£ç¨ã¡ã¢ãªè§£æ¾*/1300 /* プロパティ用メモリ解放 */ 1330 1301 if (p_edt) 1331 1302 _ecn_fbs_mbx_rel(mrb, p_edt); … … 1335 1306 1336 1307 static ER _ecn_tsk_eoj_res_main(ecnl_svc_task_t *svc, ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, int a_count, int *p_sw_ok); 1337 /* ããããã£å¤èªã¿åºãå®è¡*/1308 /* プロパティ値読み出し実行 */ 1338 1309 static ER _ecn_tsk_eoj_res_main(ecnl_svc_task_t *svc, ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, int a_count, int *p_sw_ok) 1339 1310 { 1340 1311 mrb_state *mrb = svc->mrb; 1341 1312 T_ECN_SUB_BLK *p_edt = 0; 1342 void *p_prp_buf = 0; /* ä½æ¥é å*/1313 void *p_prp_buf = 0; /* 作業領域 */ 1343 1314 ER a_ret = E_SYS; 1344 1315 T_ECN_PRP a_prp; /* epc+pdc */ … … 1347 1318 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc = 0; 1348 1319 1349 /* ä½æ¥é å確ä¿*/1320 /* 作業領域確保 */ 1350 1321 p_prp_buf = _ecn_fbs_mbx_get(mrb, ECHONET_MEMPOOL_BLOCK_SIZE); 1351 1322 if (!p_prp_buf) { 1352 1323 ECN_DBG_PUT_2("_ecn_fbs_mbx_get() result = %d:%s", a_ret, itron_strerror(a_ret)); 1353 goto lb_except; /* ã¡ã¢ãªä¸è¶³*/1324 goto lb_except; /* メモリ不足 */ 1354 1325 } 1355 1326 1356 1327 for (i = 0; i < a_count; i++) { 1357 /* ECN_FBS_ID ããT_ECN_PRP1件ã¨ãã®ä»éãã¼ã¿ãæ½åº*/1328 /* ECN_FBS_IDからT_ECN_PRP1件とその付随データを抽出 */ 1358 1329 p_edt = _ecn_tsk_get_prp_pce(svc, fa_fbs_id, &a_prp, p_edt); 1359 1330 if (!p_edt) { … … 1364 1335 a_prp.pdc = 0; 1365 1336 1366 /* å¿çé»æç¨ã¡ã¢ãªã«ãã¼ã¿è¿½å (epc,pdcã®2byte) */1337 /* 応答電文用メモリにデータ追加(epc,pdcの2byte) */ 1367 1338 a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_res, &a_prp, sizeof(a_prp)); 1368 1339 if (a_ret) { … … 1379 1350 1380 1351 lb_finally: 1381 /* ä½æ¥é å解æ¾*/1352 /* 作業領域解放 */ 1382 1353 if (p_prp_buf) 1383 1354 _ecn_fbs_mbx_rel(mrb, p_prp_buf); 1384 1355 1385 /* ããããã£ç¨ã¡ã¢ãªè§£æ¾*/1356 /* プロパティ用メモリ解放 */ 1386 1357 if (p_edt) 1387 1358 _ecn_fbs_mbx_rel(mrb, p_edt); … … 1390 1361 } 1391 1362 1392 /* ããããã£å¤èªã¿é£ã°ãå®è¡*/1363 /* プロパティ値読み飛ばし実行 */ 1393 1364 static ER _ecn_tsk_eoj_skip_main(ecnl_svc_task_t *svc, const EOBJINIB *fp_obj, ECN_FBS_ID fa_fbs_id, 1394 1365 int a_count); … … 1402 1373 1403 1374 for (i = 0; i < a_count; i++) { 1404 /* T_ECN_PRP é¨å(epc,pdc)ãèªã¿åã*/1375 /* T_ECN_PRP部分(epc,pdc)を読み取る */ 1405 1376 a_size = 0; 1406 1377 a_ret = _ecn_fbs_get_data(mrb, fa_fbs_id, &a_prp, sizeof(a_prp), &a_size); … … 1410 1381 } 1411 1382 1412 /* pdc åèªã¿é£ã°ã*/1383 /* pdc分読み飛ばし */ 1413 1384 a_ret = _ecn_fbs_seek_rpos(fa_fbs_id, a_prp.pdc); 1414 1385 if (a_ret) { … … 1429 1400 static void _ecn_tsk_mk_rsp_hdr(const EOBJINIB *fp_obj, T_ECN_EDT_HDR *fp_rsp_esv, 1430 1401 T_ECN_EDT_HDR const *fp_req_esv); 1431 /* å¿çé»æè¨å®*/1402 /* 応答電文設定 */ 1432 1403 static void _ecn_tsk_mk_rsp_hdr(const EOBJINIB *fp_obj, T_ECN_EDT_HDR *fp_rsp_esv, 1433 1404 T_ECN_EDT_HDR const *fp_req_esv) … … 1454 1425 } 1455 1426 1456 /* å¿çé»æç¨fbsè¨å®*/1427 /* 応答電文用fbs設定 */ 1457 1428 static void _ecn_tsk_set_rsp_fbs(ECN_FBS_ID fa_rsp_fbs, T_ECN_FST_BLK const *fp_req_ptr); 1458 /* å¿çé»æç¨fbsè¨å®(sender/targetã®è¨å®) */1429 /* 応答電文用fbs設定(sender/targetの設定) */ 1459 1430 static void _ecn_tsk_set_rsp_fbs(ECN_FBS_ID fa_rsp_fbs, T_ECN_FST_BLK const *fp_req_ptr) 1460 1431 { … … 1465 1436 } 1466 1437 1467 /* ããããã£å¤æ¸ãè¾¼ã¿è¦æ±*/1438 /* プロパティ値書き込み要求 */ 1468 1439 static void _ecn_tsk_eoj_set(ecnl_svc_task_t *svc, const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp, bool_t fa_update, 1469 1440 ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv, … … 1481 1452 memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp)); 1482 1453 1483 /* å¿çæ大ãµã¤ãºã®åå¾*/1454 /* 応答最大サイズの取得 */ 1484 1455 a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP); 1485 1456 1486 /* å¿çé»æç¨ã¡ã¢ãªã®åå¾*/1457 /* 応答電文用メモリの取得 */ 1487 1458 a_ret = _ecn_fbs_cre(mrb, a_size, &a_fbs_res); 1488 if (a_ret != E_OK || !a_fbs_res.ptr) /* 確ä¿å¤±æ*/1459 if (a_ret != E_OK || !a_fbs_res.ptr) /* 確保失敗 */ 1489 1460 return; 1490 1461 1491 /* å¿çé»æè¨å®*/1462 /* 応答電文設定 */ 1492 1463 if(p_req_esv->edata.deoj.eojx3 != 0) 1493 1464 _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv); … … 1495 1466 _ecn_tsk_mk_rsp_hdr(fp_obj, &a_ecn_hdp, p_req_esv); 1496 1467 1497 /* æ£å¸¸æã®å¿çé»æãããããã£å¤éç¥å¿çã®å ´å*/1468 /* 正常時の応答電文がプロパティ値通知応答の場合 */ 1498 1469 if (fa_res_esv == ESV_INFC_RES) { 1499 /* éä¿¡å 1500 ã¨å®å 1501 ãå 1502 ¥ãæ¿ã */ 1470 /* 送信元と宛先を入れ替え */ 1503 1471 eoj = a_ecn_hdp.edata.seoj; 1504 1472 a_ecn_hdp.edata.seoj = a_ecn_hdp.edata.deoj; … … 1506 1474 } 1507 1475 1508 f_put_fbs_eoj("_ecn_tsk_eoj_set", "fa_fbs_id", fa_fbs_id); /* s/deoj ãããã°åºå*/1509 1510 /* å¿çé»æç¨ã¡ã¢ãªã«ãã¼ã¿è¿½å*/1476 f_put_fbs_eoj("_ecn_tsk_eoj_set", "fa_fbs_id", fa_fbs_id); /* s/deoj デバッグ出力 */ 1477 1478 /* 応答電文用メモリにデータ追加 */ 1511 1479 a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_res, &a_ecn_hdp, 1512 1480 sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata)); … … 1514 1482 goto lb_except; 1515 1483 1516 /* payloadå 1517 é ã®T_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)ãèªã¿é£ã°ã */ 1484 /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */ 1518 1485 a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp)); 1519 1486 if (a_ret) 1520 1487 goto lb_except; 1521 1488 1522 /* å¿çé»æç¨fbsè¨å®*/1489 /* 応答電文用fbs設定 */ 1523 1490 _ecn_tsk_set_rsp_fbs(a_fbs_res, fa_fbs_id.ptr); 1524 1491 1525 /* ããããã£å¤æ¸ãè¾¼ã¿å®è¡*/1492 /* プロパティ値書き込み実行 */ 1526 1493 a_ret = _ecn_tsk_eoj_set_main(svc, fp_obj, fa_eobjatr, fa_fromapp, fa_update, fa_fbs_id, a_fbs_res, 1527 1494 fa_fbs_anno, p_req_esv->edata.opc, &a_sw_ok); … … 1529 1496 goto lb_except; 1530 1497 1531 /* å¿çè¦ã®å ´å*/1498 /* 応答要の場合 */ 1532 1499 if (a_sw_ok) { 1533 1500 if (!fa_res_esv) { 1534 /* å¿çä¸è¦ã®å ´å*/1501 /* 応答不要の場合 */ 1535 1502 _ecn_fbs_del(mrb, a_fbs_res); 1536 1503 goto lb_finally; 1537 1504 } 1538 /* è¨å®å¦çæå*/1505 /* 設定処理成功 */ 1539 1506 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_res_esv; 1540 1507 } else { 1541 1508 if (!fa_sna_esv) { 1542 /* å¿çä¸è¦ã®å ´å*/1509 /* 応答不要の場合 */ 1543 1510 _ecn_fbs_del(mrb, a_fbs_res); 1544 1511 goto lb_finally; 1545 1512 } 1546 /* è¨å®å¦ç失æ*/1513 /* 設定処理失敗 */ 1547 1514 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv; 1548 1515 } 1549 /* å¿çéä¿¡*/1516 /* 応答送信 */ 1550 1517 a_ret = _ecn_tsk_snd_mbx(svc, a_fbs_res, false); 1551 1518 if (a_ret == E_OK) … … 1553 1520 1554 1521 lb_except: 1555 /* ãã¼ã¿é信失æãããé å解æ¾*/1522 /* データ送信失敗したら領域解放 */ 1556 1523 if (a_fbs_res.ptr) 1557 1524 _ecn_fbs_del(mrb, a_fbs_res); … … 1561 1528 } 1562 1529 1563 /* ããããã£å¤èªã¿åºãè¦æ±*/1530 /* プロパティ値読み出し要求 */ 1564 1531 static void _ecn_tsk_eoj_get(ecnl_svc_task_t *svc, const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_forward, ATR fa_access, 1565 1532 ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv) … … 1575 1542 memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp)); 1576 1543 1577 /* åæåå¾ãµã¤ãº*/1544 /* 初期取得サイズ */ 1578 1545 a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP); 1579 1546 1580 /* å¿çé»æç¨ã¡ã¢ãªã®åå¾*/1547 /* 応答電文用メモリの取得 */ 1581 1548 a_ret = _ecn_fbs_cre(mrb, a_size, &a_fbs_res); 1582 if (a_ret != E_OK || !a_fbs_res.ptr) { /* 確ä¿å¤±æ*/1549 if (a_ret != E_OK || !a_fbs_res.ptr) { /* 確保失敗 */ 1583 1550 ECN_DBG_PUT_2("_ecn_fbs_cre() result = %d:%s", a_ret, itron_strerror(a_ret)); 1584 1551 goto lb_finally; 1585 1552 } 1586 1553 1587 /* å¿çé»æè¨å®*/1554 /* 応答電文設定 */ 1588 1555 if(p_req_esv->edata.deoj.eojx3 != 0) 1589 1556 _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv); … … 1591 1558 _ecn_tsk_mk_rsp_hdr(fp_obj, &a_ecn_hdp, p_req_esv); 1592 1559 1593 f_put_fbs_eoj("_ecn_tsk_eoj_get", "fa_fbs_id", fa_fbs_id); /* s/deoj ãããã°åºå*/1594 1595 /* å¿çé»æç¨ã¡ã¢ãªã«ãã¼ã¿è¿½å*/1560 f_put_fbs_eoj("_ecn_tsk_eoj_get", "fa_fbs_id", fa_fbs_id); /* s/deoj デバッグ出力 */ 1561 1562 /* 応答電文用メモリにデータ追加 */ 1596 1563 a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_res, &a_ecn_hdp, 1597 1564 sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata)); … … 1601 1568 } 1602 1569 1603 /* payloadå 1604 é ã®T_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)ãèªã¿é£ã°ã */ 1570 /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */ 1605 1571 a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp)); 1606 1572 if (a_ret) { … … 1609 1575 } 1610 1576 1611 /* å¿çé»æç¨fbsè¨å®*/1577 /* 応答電文用fbs設定 */ 1612 1578 _ecn_tsk_set_rsp_fbs(a_fbs_res, fa_fbs_id.ptr); 1613 1579 1614 /* ããããã£å¤èªã¿è¾¼ã¿å®è¡*/1580 /* プロパティ値読み込み実行 */ 1615 1581 a_ret = _ecn_tsk_eoj_get_main(svc, fp_obj, fa_eobjatr, fa_forward, fa_access, fa_fbs_id, a_fbs_res, 1616 1582 ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc, &a_sw_ok); … … 1622 1588 if (a_sw_ok) { 1623 1589 if (!fa_res_esv) { 1624 /* å¿çä¸è¦ã®å ´å*/1590 /* 応答不要の場合 */ 1625 1591 _ecn_fbs_del(mrb, a_fbs_res); 1626 1592 goto lb_finally; 1627 1593 } 1628 /* è¨å®å¦çæå*/1594 /* 設定処理成功 */ 1629 1595 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_res_esv; 1630 1596 } else { 1631 1597 if (!fa_sna_esv) { 1632 /* å¿çä¸è¦ã®å ´å*/1598 /* 応答不要の場合 */ 1633 1599 _ecn_fbs_del(mrb, a_fbs_res); 1634 1600 goto lb_finally; 1635 1601 } 1636 /* è¨å®å¦ç失æ*/1602 /* 設定処理失敗 */ 1637 1603 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv; 1638 1604 1639 /* ä¸å¯å¿çã®å ´åã¯åå¥éä¿¡ãã*/1605 /* 不可応答の場合は個別送信する */ 1640 1606 if (a_fbs_res.ptr->hdr.target.id == ENOD_MULTICAST_ID) { 1641 1607 a_fbs_res.ptr->hdr.target.id = fa_fbs_id.ptr->hdr.sender.id; 1642 1608 } 1643 1609 } 1644 /* å¿çéä¿¡*/1610 /* 応答送信 */ 1645 1611 a_ret = _ecn_tsk_snd_mbx(svc, a_fbs_res, false); 1646 1612 if (a_ret != E_OK) { … … 1651 1617 1652 1618 lb_except: 1653 /* ãã¼ã¿é信失æãããé å解æ¾*/1619 /* データ送信失敗したら領域解放 */ 1654 1620 if (a_fbs_res.ptr) 1655 1621 _ecn_fbs_del(mrb, a_fbs_res); … … 1659 1625 } 1660 1626 1661 /* ããããã£å¤èªã¿åºãè¦æ±*/1627 /* プロパティ値読み出し要求 */ 1662 1628 static void _ecn_tsk_eoj_res(ecnl_svc_task_t *svc, ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, 1663 1629 ECN_SRV_CODE fa_sna_esv) … … 1673 1639 memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp)); 1674 1640 1675 /* åæåå¾ãµã¤ãº*/1641 /* 初期取得サイズ */ 1676 1642 a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP); 1677 1643 1678 /* å¿çé»æç¨ã¡ã¢ãªã®åå¾*/1644 /* 応答電文用メモリの取得 */ 1679 1645 a_ret = _ecn_fbs_cre(mrb, a_size, &a_fbs_res); 1680 if (a_ret != E_OK || !a_fbs_res.ptr) { /* 確ä¿å¤±æ*/1646 if (a_ret != E_OK || !a_fbs_res.ptr) { /* 確保失敗 */ 1681 1647 ECN_DBG_PUT_2("_ecn_fbs_cre() result = %d:%s", a_ret, itron_strerror(a_ret)); 1682 1648 goto lb_finally; 1683 1649 } 1684 1650 1685 /* å¿çé»æè¨å®*/1651 /* 応答電文設定 */ 1686 1652 _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv); 1687 1653 1688 f_put_fbs_eoj("_ecn_tsk_eoj_res", "fa_fbs_id", fa_fbs_id); /* s/deoj ãããã°åºå*/1689 1690 /* å¿çé»æç¨ã¡ã¢ãªã«ãã¼ã¿è¿½å*/1654 f_put_fbs_eoj("_ecn_tsk_eoj_res", "fa_fbs_id", fa_fbs_id); /* s/deoj デバッグ出力 */ 1655 1656 /* 応答電文用メモリにデータ追加 */ 1691 1657 a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_res, &a_ecn_hdp, 1692 1658 sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata)); … … 1696 1662 } 1697 1663 1698 /* payloadå 1699 é ã®T_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)ãèªã¿é£ã°ã */ 1664 /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */ 1700 1665 a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp)); 1701 1666 if (a_ret) { … … 1704 1669 } 1705 1670 1706 /* å¿çé»æç¨fbsè¨å®*/1671 /* 応答電文用fbs設定 */ 1707 1672 _ecn_tsk_set_rsp_fbs(a_fbs_res, fa_fbs_id.ptr); 1708 1673 1709 /* ããããã£å¤èªã¿è¾¼ã¿å®è¡*/1674 /* プロパティ値読み込み実行 */ 1710 1675 a_ret = _ecn_tsk_eoj_res_main(svc, fa_fbs_id, a_fbs_res, 1711 1676 ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc, &a_sw_ok); … … 1717 1682 if (a_sw_ok) { 1718 1683 if (!fa_res_esv) { 1719 /* å¿çä¸è¦ã®å ´å*/1684 /* 応答不要の場合 */ 1720 1685 _ecn_fbs_del(mrb, a_fbs_res); 1721 1686 goto lb_finally; 1722 1687 } 1723 /* è¨å®å¦çæå*/1688 /* 設定処理成功 */ 1724 1689 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_res_esv; 1725 1690 } else { 1726 1691 if (!fa_sna_esv) { 1727 /* å¿çä¸è¦ã®å ´å*/1692 /* 応答不要の場合 */ 1728 1693 _ecn_fbs_del(mrb, a_fbs_res); 1729 1694 goto lb_finally; 1730 1695 } 1731 /* è¨å®å¦ç失æ*/1696 /* 設定処理失敗 */ 1732 1697 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv; 1733 1698 } 1734 /* å¿çéä¿¡*/1699 /* 応答送信 */ 1735 1700 a_ret = _ecn_tsk_snd_mbx(svc, a_fbs_res, false); 1736 1701 if (a_ret != E_OK) { … … 1741 1706 1742 1707 lb_except: 1743 /* ãã¼ã¿é信失æãããé å解æ¾*/1708 /* データ送信失敗したら領域解放 */ 1744 1709 if (a_fbs_res.ptr) 1745 1710 _ecn_fbs_del(mrb, a_fbs_res); … … 1757 1722 T_ECN_EDT_HDR a_ecn_hdp; 1758 1723 ECN_FBS_ID a_fbs_res = { 0 }; 1759 int a_rdprp_wrpos; /* ããããã£èªã¿è¾¼ã¿ä»¶æ°æ¸ãè¾¼ã¿æã®ãããä½ç½®*/1724 int a_rdprp_wrpos; /* プロパティ読み込み件数書き込み時のヘッド位置 */ 1760 1725 ER a_ret; 1761 1726 int i, a_size, a_rdlen; 1762 1727 int a_sw_ok = 1; 1763 int a_count = ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc; /* å¦çããããã£æ°*/1728 int a_count = ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc; /* 処理プロパティ数 */ 1764 1729 1765 1730 memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp)); … … 1768 1733 fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3); 1769 1734 1770 /* åæåå¾ãµã¤ãº*/1735 /* 初期取得サイズ */ 1771 1736 a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP); 1772 1737 1773 /* å¿çé»æç¨ã¡ã¢ãªã®åå¾*/1738 /* 応答電文用メモリの取得 */ 1774 1739 a_ret = _ecn_fbs_cre(mrb, a_size, &a_fbs_res); 1775 if (a_ret != E_OK || !a_fbs_res.ptr) /* 確ä¿å¤±æ*/1740 if (a_ret != E_OK || !a_fbs_res.ptr) /* 確保失敗 */ 1776 1741 goto lb_finally; 1777 1742 1778 /* å¿çé»æè¨å®*/1743 /* 応答電文設定 */ 1779 1744 if(p_req_esv->edata.deoj.eojx3 != 0) 1780 1745 _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv); … … 1783 1748 a_size -= sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY); 1784 1749 1785 f_put_fbs_eoj("_ecn_tsk_eoj_set_get", "fa_fbs_id", fa_fbs_id); /* s/deoj ãããã°åºå*/1786 1787 /* å¿çé»æç¨ã¡ã¢ãªã«ãã¼ã¿è¿½å*/1750 f_put_fbs_eoj("_ecn_tsk_eoj_set_get", "fa_fbs_id", fa_fbs_id); /* s/deoj デバッグ出力 */ 1751 1752 /* 応答電文用メモリにデータ追加 */ 1788 1753 a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_res, &a_ecn_hdp, 1789 1754 sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata)); … … 1791 1756 goto lb_except; 1792 1757 1793 /* payloadå 1794 é ã®T_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)ãèªã¿é£ã°ã */ 1758 /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */ 1795 1759 a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp)); 1796 1760 if (a_ret) 1797 1761 goto lb_except; 1798 1762 1799 /* å¿çé»æç¨fbsè¨å®*/1763 /* 応答電文用fbs設定 */ 1800 1764 _ecn_tsk_set_rsp_fbs(a_fbs_res, fa_fbs_id.ptr); 1801 1765 1802 /* ããããã£å¤æ¸ãè¾¼ã¿å®è¡*/1766 /* プロパティ値書き込み実行 */ 1803 1767 a_ret = _ecn_tsk_eoj_set_main(svc, fp_obj, fa_eobjatr, fa_fromapp, false, fa_fbs_id, a_fbs_res, 1804 1768 fa_fbs_anno, a_count, &a_sw_ok); … … 1813 1777 (a_sw_ok ? "true" : "false")); 1814 1778 1815 /* 次ã®ä»¶æ°ãèªã¿åã(1byte) */1816 /* âECHONET-Lite_Ver.1.10_02.pdf p.40 [OPCGet] */1779 /* 次の件数を読み取る(1byte) */ 1780 /* → ECHONET-Lite_Ver.1.10_02.pdf p.40 [OPCGet] */ 1817 1781 a_rdlen = i = 0; 1818 1782 a_ret = _ecn_fbs_get_data(mrb, fa_fbs_id, &i, 1, &a_rdlen); … … 1821 1785 a_count = *(uint8_t *)&i; 1822 1786 1823 /* ããããã£èªã¿è¾¼ã¿ä»¶æ°æ¸ãè¾¼ã¿æã®ãããæ 1824 å ±ãè¨é² */ 1787 /* プロパティ読み込み件数書き込み時のヘッド情報を記録 */ 1825 1788 a_rdprp_wrpos = _ecn_fbs_get_datalen(a_fbs_res); 1826 1789 1827 /* å¿çé»æç¨ã¡ã¢ãªã«ãã¼ã¿è¿½å(OPCGet 1byte) */1790 /* 応答電文用メモリにデータ追加 (OPCGet 1byte) */ 1828 1791 a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_res, &i, 1); 1829 1792 if (a_ret) 1830 1793 goto lb_except; 1831 1794 1832 /* ãã®æç¹ã§ã®å¿çé»æä¸ããããã£ä»¶æ°ãè¨é²*/1795 /* この時点での応答電文中プロパティ件数を記録 */ 1833 1796 i = ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc; 1834 1797 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc = 0; 1835 1798 1836 /* ããããã£å¤èªã¿è¾¼ã¿å®è¡*/1799 /* プロパティ値読み込み実行 */ 1837 1800 a_ret = _ecn_tsk_eoj_get_main(svc, fp_obj, fa_eobjatr, false, EPC_RULE_GET, fa_fbs_id, a_fbs_res, 1838 1801 a_count, &a_sw_ok); … … 1847 1810 (a_sw_ok ? "true" : "false")); 1848 1811 1849 /* ããããã£èªã¿è¾¼ã¿ä»¶æ°æ¸ãè¾¼ã¿æã®ãããæ 1850 å ±ã§ãèªã¿åºã件æ°ãè¨é² */ 1812 /* プロパティ読み込み件数書き込み時のヘッド情報で、読み出し件数を記録 */ 1851 1813 _ecn_fbs_poke(mrb, a_fbs_res, a_rdprp_wrpos, ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc); 1852 1814 1853 /* è¨é²ãã¦ãããããããã£ä»¶æ°ï¼æ¸ãè¾¼ã¿ä»¶æ°ï¼ãæ¸ãæ»ã*/1815 /* 記録しておいたプロパティ件数(書き込み件数)を書き戻す */ 1854 1816 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc = (uint8_t)i; 1855 1817 1856 /* å¿çè¦ã®å ´å*/1818 /* 応答要の場合 */ 1857 1819 if (a_sw_ok) { 1858 /* è¨å®å¦çæå*/1820 /* 設定処理成功 */ 1859 1821 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_res_esv; 1860 1822 } else { 1861 /* è¨å®å¦ç失æ*/1823 /* 設定処理失敗 */ 1862 1824 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv; 1863 1825 } 1864 /* å¿çéä¿¡*/1826 /* 応答送信 */ 1865 1827 a_ret = _ecn_tsk_snd_mbx(svc, a_fbs_res, false); 1866 1828 if (a_ret == E_OK) … … 1868 1830 1869 1831 lb_except: 1870 /* ãã¼ã¿é信失æãããé å解æ¾*/1832 /* データ送信失敗したら領域解放 */ 1871 1833 if (a_fbs_res.ptr) 1872 1834 _ecn_fbs_del(mrb, a_fbs_res); … … 1886 1848 int i, a_size, a_rdlen; 1887 1849 int a_sw_ok = 1; 1888 int a_count = ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc; /* å¦çããããã£æ°*/1850 int a_count = ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc; /* 処理プロパティ数 */ 1889 1851 1890 1852 memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp)); … … 1893 1855 fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3); 1894 1856 1895 /* åæåå¾ãµã¤ãº*/1857 /* 初期取得サイズ */ 1896 1858 a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP); 1897 1859 1898 /* å¿çé»æç¨ã¡ã¢ãªï¼ããã¼ï¼ã®åå¾*/1860 /* 応答電文用メモリ(ダミー)の取得 */ 1899 1861 a_ret = _ecn_fbs_cre(mrb, a_size, &a_fbs_dmy); 1900 if (a_ret != E_OK || !a_fbs_dmy.ptr) /* 確ä¿å¤±æ*/1862 if (a_ret != E_OK || !a_fbs_dmy.ptr) /* 確保失敗 */ 1901 1863 goto lb_finally; 1902 1864 1903 /* å¿çé»æè¨å®*/1865 /* 応答電文設定 */ 1904 1866 _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv); 1905 1867 a_size -= sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY); 1906 1868 1907 /* payloadå 1908 é ã®T_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)ãèªã¿é£ã°ã */ 1869 /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */ 1909 1870 a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp)); 1910 1871 if (a_ret) 1911 1872 goto lb_except; 1912 1873 1913 /* ããããã£å¤æ¸ãè¾¼ã¿å¿çèªã¿é£ã°ãå®è¡*/1874 /* プロパティ値書き込み応答読み飛ばし実行 */ 1914 1875 a_ret = _ecn_tsk_eoj_skip_main(svc, fp_obj, fa_fbs_id, a_count); 1915 1876 if (a_ret) { … … 1923 1884 (a_sw_ok ? "true" : "false")); 1924 1885 1925 /* 次ã®ä»¶æ°ãèªã¿åã(1byte) */1926 /* âECHONET-Lite_Ver.1.10_02.pdf p.40 [OPCGet] */1886 /* 次の件数を読み取る(1byte) */ 1887 /* → ECHONET-Lite_Ver.1.10_02.pdf p.40 [OPCGet] */ 1927 1888 a_rdlen = i = 0; 1928 1889 a_ret = _ecn_fbs_get_data(mrb, fa_fbs_id, &i, 1, &a_rdlen); … … 1931 1892 a_count = *(uint8_t *)&i; 1932 1893 1933 /* ããããã£å¤èªã¿åºãå¿çã®æ¸ãè¾¼ã¿å®è¡*/1894 /* プロパティ値読み出し応答の書き込み実行 */ 1934 1895 a_ret = _ecn_tsk_eoj_set_main(svc, fp_obj, fa_eobjatr, fa_fromapp, true, fa_fbs_id, a_fbs_dmy, 1935 1896 fa_fbs_anno, a_count, &a_sw_ok); … … 1947 1908 1948 1909 lb_except: 1949 /* ãã¼ã¿é信失æãããé å解æ¾*/1910 /* データ送信失敗したら領域解放 */ 1950 1911 if (a_fbs_dmy.ptr) 1951 1912 _ecn_fbs_del(mrb, a_fbs_dmy); … … 1956 1917 1957 1918 /* 1958 * å¿çé»æå¾ 1959 ã¡ã®å²ãè¾¼ã¿é»æä½æ 1919 * 応答電文待ちの割り込み電文作成 1960 1920 */ 1961 1921 ER _ecn_mk_brk_wai(ecnl_svc_task_t *svc, ECN_FBS_ID *pk_fbs_id, const void *p_dat, size_t fa_size) … … 1963 1923 mrb_state *mrb = svc->mrb; 1964 1924 ER a_ret; 1965 ECN_FBS_ID a_fbs_id = { 0 }; /* è¦æ±é»æç¨ã¡ã¢ãª*/1925 ECN_FBS_ID a_fbs_id = { 0 }; /* 要求電文用メモリ */ 1966 1926 1967 1927 if (!pk_fbs_id) … … 1969 1929 *pk_fbs_id = a_fbs_id; 1970 1930 if (sizeof(a_fbs_id.ptr->payload) <= fa_size) 1971 return E_PAR; /* ä»éãã¼ã¿ã大ãããã*/1931 return E_PAR; /* 付随データが大きすぎる */ 1972 1932 if (!p_dat && 0 < fa_size) 1973 return E_PAR; /* ä»éãã¼ã¿ãµã¤ãºã1以ä¸ãªã®ã«ãã¼ã¿ãã¤ã³ã¿ãNULL */1974 1975 /* è¦æ±é»æç¨ã¡ã¢ãªã®åå¾*/1933 return E_PAR; /* 付随データサイズが1以上なのにデータポインタがNULL */ 1934 1935 /* 要求電文用メモリの取得 */ 1976 1936 a_ret = _ecn_fbs_cre(mrb, (0 < fa_size ? fa_size : 1), &a_fbs_id); 1977 if (a_ret != E_OK || !a_fbs_id.ptr) { /* 確ä¿å¤±æ*/1937 if (a_ret != E_OK || !a_fbs_id.ptr) { /* 確保失敗 */ 1978 1938 ECN_DBG_PUT_3("_ecn_fbs_cre(%d) result = %d:%s", fa_size, a_ret, itron_strerror(a_ret)); 1979 1939 return a_ret; 1980 1940 } 1981 1941 1982 /* è¦æ±é»æè¨å®*/1942 /* 要求電文設定 */ 1983 1943 a_fbs_id.ptr->hdr.type = ECN_MSG_USER_BREAK; 1984 1944 a_fbs_id.ptr->hdr.sender.id = ENOD_API_ID; … … 1987 1947 1988 1948 if (0 < fa_size && p_dat) { 1989 /* ä»éãã¼ã¿è¿½å*/1949 /* 付随データ追加 */ 1990 1950 a_ret = _ecn_fbs_add_data_ex(mrb, a_fbs_id, p_dat, fa_size); 1991 1951 if (a_ret) { … … 1999 1959 *pk_fbs_id = a_fbs_id; 2000 1960 2001 /* æ£å¸¸çµäº*/1961 /* 正常終了 */ 2002 1962 return a_ret; 2003 1963 2004 1964 lb_except: 2005 /* ãã¼ã¿ä½æ失æãããé å解æ¾*/1965 /* データ作成失敗したら領域解放 */ 2006 1966 if (a_fbs_id.ptr) 2007 1967 _ecn_fbs_del(mrb, a_fbs_id); … … 2010 1970 } 2011 1971 2012 /* å¿çé»æç¨fbsè¨å®(sender/targetã®è¨å®) */1972 /* 応答電文用fbs設定(sender/targetの設定) */ 2013 1973 ER _ecn_tsk_cre_req_fbs(ecnl_svc_task_t *svc, T_ECN_FBS_QUEUE *sender, uint8_t cmd, ECN_FBS_ID *pk_req) 2014 1974 { … … 2040 2000 } 2041 2001 2042 /* å¿çé»æç¨fbsè¨å®(sender/targetã®è¨å®) */2002 /* 応答電文用fbs設定(sender/targetの設定) */ 2043 2003 ER _ecn_tsk_cre_res_fbs(ecnl_svc_task_t *svc, ECN_FBS_ID req, uint8_t cmd, ECN_FBS_ID *pk_res) 2044 2004 { -
EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/echonet_task.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 6 * ä¸è¨èä½æ¨©è 7 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 8 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 9 * å¤ã»åé 10 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 11 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 12 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 13 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 14 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 15 * ç¨ã§ããå½¢ã§åé 16 å¸ããå ´åã«ã¯ï¼åé 17 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 18 * è 19 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 20 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 21 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 * ç¨ã§ããªãå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 24 * ã¨ï¼ 25 * (a) åé 26 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 27 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 28 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 29 * (b) åé 30 å¸ã®å½¢æ 31 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 32 * å ±åãããã¨ï¼ 33 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 34 * 害ãããï¼ä¸è¨èä½æ¨©è 35 ããã³TOPPERSããã¸ã§ã¯ããå 36 責ãããã¨ï¼ 37 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 38 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ãã 40 * å 41 責ãããã¨ï¼ 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 8 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 9 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 10 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 11 * スコード中に含まれていること. 12 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 13 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 14 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 15 * の無保証規定を掲載すること. 16 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 17 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 18 * と. 19 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 20 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 21 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 22 * 報告すること. 23 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 24 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 25 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 * 免責すること. 42 28 * 43 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 44 ã 45 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 46 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 47 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 48 * ã®è²¬ä»»ãè² ããªãï¼ 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 49 34 * 50 35 * @(#) $Id$ … … 52 37 53 38 /* 54 * ECHONET Lite ã¿ã¹ã¯39 * ECHONET Lite タスク 55 40 */ 56 41 … … 69 54 70 55 /* 71 * ECHONET Lite ã¿ã¹ã¯é¢é£ã®å®æ°ã®ããã©ã«ãå¤ã®å®ç¾©56 * ECHONET Lite タスク関連の定数のデフォルト値の定義 72 57 */ 73 58 #ifndef ECHONET_TASK_PRIORITY 74 #define ECHONET_TASK_PRIORITY 6 /* åæåªå 75 度 */ 59 #define ECHONET_TASK_PRIORITY 6 /* 初期優先度 */ 76 60 #endif /* ECHONET_TASK_PRIORITY */ 77 61 78 62 #ifndef ECHONET_TASK_STACK_SIZE 79 #define ECHONET_TASK_STACK_SIZE 1024 /* ã¹ã¿ãã¯é åã®ãµã¤ãº*/63 #define ECHONET_TASK_STACK_SIZE 1024 /* スタック領域のサイズ */ 80 64 #endif /* ECHONET_TASK_STACK_SIZE */ 81 65 … … 93 77 intptr_t exinf; 94 78 TMO api_timer; 95 /* ã¢ããªã±ã¼ã·ã§ã³ãè¦æ±ããé»æã®ã·ã¼ã±ã³ã¹çªå·*/79 /* アプリケーションが要求した電文のシーケンス番号 */ 96 80 uint16_t api_tid; 97 /* åä¿¡ã¡ãã»ã¼ã¸ãéæ¾ãããå¦ã*/81 /* 受信メッセージを開放するか否か */ 98 82 bool_t release_esv; 99 /* åä¿¡ã¡ãã»ã¼ã¸ã転éãããå¦ã*/83 /* 受信メッセージを転送するか否か */ 100 84 bool_t forward_esv; 101 /* ã³ã³ããã¼ã©ã¼åã*/85 /* コントローラー向け */ 102 86 ecn_agent_t agent; 103 /* ECHONET Lite ãªãã¸ã§ã¯ãIDã®æ大å¤*/87 /* ECHONET Lite オブジェクトIDの最大値 */ 104 88 ID tmax_eobjid; 105 /* ECHONET Lite ãªãã¸ã§ã¯ãåæåãããã¯ã®ã¨ãªã¢*/89 /* ECHONET Lite オブジェクト初期化ブロックのエリア */ 106 90 const EOBJINIB **eobjinib_table; 107 /* ECHONET Lite ãã¼ã管çãããã¯ã®æ°*/91 /* ECHONET Liteノード管理ブロックの数 */ 108 92 int tnum_enodid; 109 /* ECHONET Lite ãªãã¸ã§ã¯ã管çãããã¯ã®ã¨ãªã¢*/93 /* ECHONET Lite オブジェクト管理ブロックのエリア */ 110 94 EOBJCB eobjcb_table[1]; 111 /* ã¯ã©ã¹æ°*/95 /* クラス数 */ 112 96 uint_t eclscnt; 113 /* ã¯ã©ã¹ãªã¹ã*/97 /* クラスリスト */ 114 98 uint8_t *eclslst; 115 /* ã¡ã¼ã«ããã¯ã¹*/99 /* メールボックス */ 116 100 T_ECN_FBS_QUEUE api_mbxid; 117 101 T_ECN_FBS_QUEUE svc_mbxid; 118 102 T_ECN_FBS_QUEUE lcl_mbxid; 119 /* ã¢ã¸ã¥ã¼ã«åæåãã©ã°*/103 /* モジュール初期化フラグ */ 120 104 uint8_t eobjlist_need_init; 121 /* ã·ã¼ã±ã³ã¹çªå·*/105 /* シーケンス番号 */ 122 106 uint16_t current_tid; 123 /* ã¤ã³ã¹ã¿ã³ã¹ãªã¹ãéç¥ä½ç½®*/107 /* インスタンスリスト通知位置 */ 124 108 int inst_list_pos; 125 109 }; … … 133 117 ID echonet_svctask_get_eobjid(ecnl_svc_task_t *svc, const EOBJINIB *eobjinib); 134 118 135 /* ECHONET Lite ã¤ã³ã¹ã¿ã³ã¹ãªã¹ãã®1ã¢ãã¦ã³ã¹å½ããæ大ãã¼ãæ°*/119 /* ECHONET Lite インスタンスリストの1アナウンス当たり最大ノード数 */ 136 120 #define ECN_IST_LST_EOJ_MAX_CT (84) 137 121 138 /* ECHONET Lite ãªãã¸ã§ã¯ãã³ã¼ã x1,x2,x3(T_ECN_EOJ)ã24bitæ´æ°ã«å¤æ*/122 /* ECHONET Liteオブジェクトコード x1,x2,x3(T_ECN_EOJ)を24bit整数に変換 */ 139 123 #define _ECN_EOJ2VALUE(s) (((s).eojx1 << 16) | ((s).eojx2 << 8) | (s).eojx3) 140 124 141 125 enum ecn_epc_code 142 126 { 143 ECN_EPC_INL_BCS = 0xD5 /* ã¤ã³ã¹ã¿ã³ã¹ãªã¹ãéç¥ããããã£*/127 ECN_EPC_INL_BCS = 0xD5 /* インスタンスリスト通知プロパティ */ 144 128 }; 145 129 … … 170 154 } T_ECN_INTERNAL_MSG; 171 155 172 /* ã¿ã¹ã¯åæå*/156 /* タスク初期化 */ 173 157 void _ecn_tsk_int_startup(ecnl_svc_task_t *svc); 174 /* ã¤ã³ã¹ã¿ã³ã¹ãªã¹ãéç¥ã®éä¿¡*/158 /* インスタンスリスト通知の送信 */ 175 159 ER _ecn_tsk_ntf_inl(ecnl_svc_task_t *svc); 176 160 177 161 /* 178 * è¦æ±é»æä½æ162 * 要求電文作成 179 163 */ 180 164 ER _ecn_tsk_mk_esv(ecnl_svc_task_t *svc, ECN_FBS_ID *fp_fbs_id, ID fa_seoj, ID fa_deoj, … … 184 168 185 169 /* 186 * å¿çé»æå¾ 187 ã¡ã®å²ãè¾¼ã¿é»æä½æ 170 * 応答電文待ちの割り込み電文作成 188 171 */ 189 172 ER _ecn_mk_brk_wai(ecnl_svc_task_t *svc, ECN_FBS_ID *pk_fbs_id, const void *p_dat, size_t fa_size); -
EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/mrb_ecnl.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r270 r321 4 4 * Copyright (C) 2016 Cores Co., Ltd. Japan 5 5 * 6 * ä¸è¨èä½æ¨©è 7 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 8 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 9 * å¤ã»åé 10 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 11 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 12 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 13 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 14 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 15 * ç¨ã§ããå½¢ã§åé 16 å¸ããå ´åã«ã¯ï¼åé 17 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 18 * è 19 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 20 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 21 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 * ç¨ã§ããªãå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 24 * ã¨ï¼ 25 * (a) åé 26 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 27 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 28 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 29 * (b) åé 30 å¸ã®å½¢æ 31 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 32 * å ±åãããã¨ï¼ 33 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 34 * 害ãããï¼ä¸è¨èä½æ¨©è 35 ããã³TOPPERSããã¸ã§ã¯ããå 36 責ãããã¨ï¼ 37 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 38 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ãã 40 * å 41 責ãããã¨ï¼ 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 8 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 9 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 10 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 11 * スコード中に含まれていること. 12 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 13 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 14 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 15 * の無保証規定を掲載すること. 16 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 17 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 18 * と. 19 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 20 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 21 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 22 * 報告すること. 23 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 24 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 25 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 * 免責すること. 42 28 * 43 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 44 ã 45 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 46 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 47 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 48 * ã®è²¬ä»»ãè² ããªãï¼ 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 49 34 * 50 35 */ … … 136 121 rprop = RARRAY_PTR(props); 137 122 icnt = RARRAY_LEN(props); 138 count = icnt + 3; /* ããããã£ãããå*/123 count = icnt + 3; /* プロパティマップ分 */ 139 124 140 125 for (i = 0; i < icnt; i++) { … … 148 133 prop = (T_MRB_ECNL_EPROPERTY *)DATA_PTR(rprop[i]); 149 134 150 /* ããããã£ãããã®å ´åã¯æ¸ç®*/135 /* プロパティマップの場合は減算 */ 151 136 switch (prop->inib.eprpcd) { 152 137 case 0x9D: case 0x9E: case 0x9F: … … 181 166 prop = (T_MRB_ECNL_EPROPERTY *)DATA_PTR(rprop[i]); 182 167 183 /* ããããã£ãããã®å ´åã¯ç¡è¦*/168 /* プロパティマップの場合は無視 */ 184 169 switch (prop->inib.eprpcd) { 185 170 case 0x9D: case 0x9E: case 0x9F: … … 208 193 T_MRB_ECNL_EPROPERTY *prop; 209 194 210 /* æ©å¨ãªãã¸ã§ã¯ãã®è¨å®ã¨ãã¦åãè¾¼ã¾ããå ´åã¯ç ´æ£ããªã*/195 /* 機器オブジェクトの設定として取り込まれた場合は破棄しない */ 211 196 if (obj->base.svc != NULL) 212 197 return; … … 293 278 rprop = RARRAY_PTR(props); 294 279 icnt = RARRAY_LEN(props); 295 count = icnt + 8; /* ã¤ã³ã¹ã¿ã³ã¹ãªã¹ããªã©ã®å*/280 count = icnt + 8; /* インスタンスリストなどの分 */ 296 281 297 282 for (i = 0; i < icnt; i++) { … … 305 290 prop = (T_MRB_ECNL_EPROPERTY *)DATA_PTR(rprop[i]); 306 291 307 /* ã¤ã³ã¹ã¿ã³ã¹ãªã¹ããªã©ã®å ´åã¯æ¸ç®*/292 /* インスタンスリストなどの場合は減算 */ 308 293 switch (prop->inib.eprpcd) { 309 294 case 0xD3: case 0xD4: case 0xD5: case 0xD6: case 0xD7: … … 315 300 316 301 nod = (ecn_node_t *)mrb_calloc(mrb, 1, sizeof(ecn_node_t) + count * sizeof(EPRPINIB *) 317 + (sizeof(EPRPINIB) * 8)/* ã¤ã³ã¹ã¿ã³ã¹ãªã¹ããªã©ã®å*/);302 + (sizeof(EPRPINIB) * 8)/* インスタンスリストなどの分 */); 318 303 DATA_TYPE(self) = &mrb_ecnl_enode_type; 319 304 DATA_PTR(self) = nod; … … 337 322 prop = (T_MRB_ECNL_EPROPERTY *)DATA_PTR(rprop[i]); 338 323 339 /* ã¤ã³ã¹ã¿ã³ã¹ãªã¹ããªã©ã®å ´åã¯ç¡è¦*/324 /* インスタンスリストなどの場合は無視 */ 340 325 switch (prop->inib.eprpcd) { 341 326 case 0xD3: case 0xD4: case 0xD5: case 0xD6: case 0xD7: … … 365 350 T_MRB_ECNL_EPROPERTY *prop; 366 351 367 /* ãã¼ãã®è¨å®ã¨ãã¦åãè¾¼ã¾ããå ´åã¯ç ´æ£ããªã*/352 /* ノードの設定として取り込まれた場合は破棄しない */ 368 353 if (nod->base.svc != NULL) 369 354 return; … … 476 461 int count = 0; 477 462 478 /* éç¥æ°ã®ä½ç½®ã空ãã¦ãã*/463 /* 通知数の位置を空けておく */ 479 464 pos++; 480 465 for (int i = inst_list_pos; (i < eobjcnt) && (count < 84); i++) { … … 489 474 490 475 inst_list_pos += count; 491 /* æå¾ã¾ã§éä¿¡ãçµãã£ã¦ãããåããã*/476 /* 最後まで送信し終わっていたら初めから */ 492 477 if (inst_list_pos >= eobjcnt) 493 478 inst_list_pos = 0; … … 509 494 *pos++ = eobjcnt; 510 495 else 511 *pos++ = 255; /* ãªã¼ãã¼ããã¼*/496 *pos++ = 255; /*オーバーフロー*/ 512 497 513 498 for (int i = 0; (i < eobjcnt) && (i < 84); i++) { … … 530 515 *pos++ = eclscnt; 531 516 else 532 *pos++ = 255; /* ãªã¼ãã¼ããã¼*/517 *pos++ = 255; /*オーバーフロー*/ 533 518 534 519 len = 2 * eclscnt; … … 617 602 eobj = (ecn_obj_t *)DATA_PTR(prop->eobj); 618 603 619 /* ããããã£ã®è¨å®ã¨ãã¦åãè¾¼ã¾ããå ´åã¯ç ´æ£ããªã*/604 /* プロパティの設定として取り込まれた場合は破棄しない */ 620 605 if (eobj != NULL) 621 606 return; … … 625 610 } 626 611 627 /* ECHONET Lite ããããã£ã³ã¼ã*/612 /* ECHONET Lite プロパティコード */ 628 613 static mrb_value mrb_ecnl_eproperty_get_pcd(mrb_state *mrb, mrb_value self) 629 614 { … … 635 620 } 636 621 637 /* ECHONET Lite ããããã£å±æ§*/622 /* ECHONET Lite プロパティ属性 */ 638 623 static mrb_value mrb_ecnl_eproperty_get_atr(mrb_state *mrb, mrb_value self) 639 624 { … … 645 630 } 646 631 647 /* ECHONET Lite ããããã£ã®ãµã¤ãº*/632 /* ECHONET Lite プロパティのサイズ */ 648 633 static mrb_value mrb_ecnl_eproperty_get_sz(mrb_state *mrb, mrb_value self) 649 634 { … … 655 640 } 656 641 657 /* ECHONET Lite ããããã£ã®æ¡å¼µæ 658 å ± */ 642 /* ECHONET Lite プロパティの拡張情報 */ 659 643 static mrb_value mrb_ecnl_eproperty_get_exinf(mrb_state *mrb, mrb_value self) 660 644 { … … 666 650 } 667 651 668 /* ECHONET Lite ããããã£ã®æ¡å¼µæ 669 å ±è¨å® */ 652 /* ECHONET Lite プロパティの拡張情報設定 */ 670 653 static mrb_value mrb_ecnl_eproperty_set_exinf(mrb_state *mrb, mrb_value self) 671 654 { … … 682 665 } 683 666 684 /* ECHONET Lite ããããã£ã®è¨å®é¢æ°*/667 /* ECHONET Lite プロパティの設定関数 */ 685 668 static mrb_value mrb_ecnl_eproperty_get_setcb(mrb_state *mrb, mrb_value self) 686 669 { … … 695 678 } 696 679 697 /* ECHONET Lite ããããã£ã®åå¾é¢æ°*/680 /* ECHONET Lite プロパティの取得関数 */ 698 681 static mrb_value mrb_ecnl_eproperty_get_getcb(mrb_state *mrb, mrb_value self) 699 682 { … … 708 691 } 709 692 710 /* ECHONET Lite ããããã£ã®éç¥æç¡*/693 /* ECHONET Lite プロパティの通知有無 */ 711 694 static mrb_value mrb_ecnl_eproperty_get_anno(mrb_state *mrb, mrb_value self) 712 695 { … … 721 704 } 722 705 723 /* ECHONET Lite ããããã£ã®éç¥æç¡è¨å®*/706 /* ECHONET Lite プロパティの通知有無設定 */ 724 707 static mrb_value mrb_ecnl_eproperty_set_anno(mrb_state *mrb, mrb_value self) 725 708 { … … 737 720 738 721 /* 739 * ãã¼ã¿è¨å®é¢æ°722 * データ設定関数 740 723 */ 741 724 static int mrb_ecnl_prop_set(ecnl_svc_task_t *svc, const EPRPINIB *item, const void *src, int size, bool_t *anno) … … 771 754 772 755 /* 773 * ãã¼ã¿åå¾é¢æ°756 * データ取得関数 774 757 */ 775 758 static int mrb_ecnl_prop_get(ecnl_svc_task_t *svc, const EPRPINIB *item, void *dst, int size) … … 835 818 } 836 819 837 /* ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãè¦æ±é»ææãè¿ãæå®*/820 /* プロパティ値書き込み・読み出し要求電文折り返し指定 */ 838 821 static mrb_value mrb_ecnl_trn_set_get(mrb_state *mrb, mrb_value self) 839 822 { … … 851 834 } 852 835 853 /* è¦æ±é»æã¸ã®ããããã£æå®è¿½å*/836 /* 要求電文へのプロパティ指定追加 */ 854 837 static mrb_value mrb_ecnl_add_epc(mrb_state *mrb, mrb_value self) 855 838 { … … 870 853 } 871 854 872 /* è¦æ±é»æã¸ã®ããããã£ãã¼ã¿è¿½å*/855 /* 要求電文へのプロパティデータ追加 */ 873 856 static mrb_value mrb_ecnl_add_edt(mrb_state *mrb, mrb_value self) 874 857 { … … 919 902 920 903 921 /* å¿çé»æ解æã¤ãã¬ã¼ã¿ã¼åæå*/904 /* 応答電文解析イテレーター初期化 */ 922 905 static mrb_value mrb_ecnl_itr_ini(mrb_state *mrb, mrb_value self) 923 906 { … … 942 925 } 943 926 944 /* å¿çé»æ解æã¤ãã¬ã¼ã¿ã¼ã¤ã³ã¯ãªã¡ã³ã*/927 /* 応答電文解析イテレーターインクリメント */ 945 928 static mrb_value mrb_ecnl_itr_nxt(mrb_state *mrb, mrb_value self) 946 929 { … … 1092 1075 svc = (ecnl_svc_task_t *)mrb_calloc(mrb, 1, sizeof(ecnl_svc_task_t) 1093 1076 + (1 + eobjcnt) * sizeof(EOBJINIB *) 1094 + (2 * eobjcnt)/* ã¯ã©ã¹ãªã¹ãç¨*/);1077 + (2 * eobjcnt)/*クラスリスト用*/); 1095 1078 DATA_TYPE(self) = &mrb_ecnl_svctask_type; 1096 1079 DATA_PTR(self) = svc; … … 1101 1084 svc->mrb = mrb; 1102 1085 svc->self = self; 1103 svc->tnum_enodid = 1; /* ãã®çã§ã¯ãã¼ã«ã«ãã¼ãï¼ã¤*/1086 svc->tnum_enodid = 1; /* この版ではローカルノード1つ */ 1104 1087 svc->tmax_eobjid = 1 + 1 + eobjcnt; 1105 1088 svc->eobjinib_table = (const EOBJINIB **)&svc[1]; … … 1129 1112 } 1130 1113 1131 /* ã¯ã©ã¹ãªã¹ãã®ä½æ*/1114 /* クラスリストの作成 */ 1132 1115 svc->eclslst = (uint8_t *)&svc->eobjinib_table[1 + eobjcnt]; 1133 1116 uint8_t *pos = svc->eclslst; … … 1154 1137 svc->eclscnt = eclscnt; 1155 1138 1156 /* ECHONET ããã«ã¦ã§ã¢ãèµ·å*/1139 /* ECHONETミドルウェアを起動 */ 1157 1140 ret = ecn_sta_svc(svc); 1158 1141 if (ret != E_OK) { … … 1177 1160 { 1178 1161 ecnl_svc_task_t *svc = (ecnl_svc_task_t *)ptr; 1179 #if 0 /* ã©ããã§è§£æ¾ãã¦ããããã・・・*/1162 #if 0 /* どこかで解放しているらしい・・・ */ 1180 1163 const EOBJINIB **table = svc->eobjinib_table; 1181 1164 const EOBJINIB **end = &table[svc->tmax_eobjid]; … … 1206 1189 } 1207 1190 1208 /* ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ï¼å¿çä¸è¦ï¼é»æä½æ*/1191 /* プロパティ値書き込み要求(応答不要)電文作成 */ 1209 1192 static mrb_value mrb_ecnl_esv_set_i(mrb_state *mrb, mrb_value self) 1210 1193 { … … 1245 1228 } 1246 1229 1247 /* ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ï¼å¿çè¦ï¼é»æä½æ*/1230 /* プロパティ値書き込み要求(応答要)電文作成 */ 1248 1231 static mrb_value mrb_ecnl_esv_set_c(mrb_state *mrb, mrb_value self) 1249 1232 { … … 1285 1268 } 1286 1269 1287 /* ããããã£å¤èªã¿åºãè¦æ±é»æä½æ*/1270 /* プロパティ値読み出し要求電文作成 */ 1288 1271 static mrb_value mrb_ecnl_esv_get(mrb_state *mrb, mrb_value self) 1289 1272 { … … 1323 1306 } 1324 1307 1325 /* ããããã£å¤éç¥è¦æ±é»æä½æ*/1308 /* プロパティ値通知要求電文作成 */ 1326 1309 static mrb_value mrb_ecnl_esv_inf_req(mrb_state *mrb, mrb_value self) 1327 1310 { … … 1361 1344 } 1362 1345 1363 /* ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãè¦æ±é»æä½æ*/1346 /* プロパティ値書き込み・読み出し要求電文作成 */ 1364 1347 static mrb_value mrb_ecnl_esv_set_get(mrb_state *mrb, mrb_value self) 1365 1348 { … … 1400 1383 } 1401 1384 1402 /* ããããã£å¤éç¥ï¼å¿çè¦ï¼é»æä½æ*/1385 /* プロパティ値通知(応答要)電文作成 */ 1403 1386 static mrb_value mrb_ecnl_esv_infc(mrb_state *mrb, mrb_value self) 1404 1387 { … … 1448 1431 } 1449 1432 1450 /* è¦æ±é»æã®éä¿¡*/1433 /* 要求電文の送信 */ 1451 1434 static mrb_value mrb_ecnl_snd_esv(mrb_state *mrb, mrb_value self) 1452 1435 { … … 1486 1469 } 1487 1470 1488 /* é»æã®ç ´æ£*/1471 /* 電文の破棄 */ 1489 1472 static mrb_value mrb_ecnl_rel_esv(mrb_state *mrb, mrb_value self) 1490 1473 { … … 1524 1507 svc->mrb = mrb; 1525 1508 1526 /* ã¤ã³ã¹ã¿ã³ã¹ãªã¹ãéç¥ã®éä¿¡*/1509 /* インスタンスリスト通知の送信 */ 1527 1510 ret = _ecn_tsk_ntf_inl(svc); 1528 1511 if (ret != E_OK) { … … 1590 1573 1591 1574 /* 1592 * Echonet é»æåä¿¡å¦ç1575 * Echonet電文受信処理 1593 1576 */ 1594 1577 static void main_recv_esv(ecnl_svc_task_t *svc, T_EDATA *esv) … … 1603 1586 1604 1587 /* 1605 * å¿çé»æå¾ 1606 ã¡ã®å²ãè¾¼ã¿å¦ç 1588 * 応答電文待ちの割り込み処理 1607 1589 */ 1608 1590 static void main_break_wait(ecnl_svc_task_t *svc, uint8_t *brkdat, int32_t len) … … 1623 1605 ER ret; 1624 1606 1625 /* Echonet é»æåä¿¡ã®å ´å*/1607 /* Echonet電文受信の場合 */ 1626 1608 if ((p_msg)->hdr.type == ECN_MSG_ECHONET) { 1627 /* Echonet é»æåä¿¡å¦ç*/1609 /* Echonet電文受信処理 */ 1628 1610 main_recv_esv(svc, (T_EDATA *)p_msg); 1629 1611 1630 /* é å解æ¾ã¯GCã«ä»»ãã1612 /* 領域解放はGCに任せる 1631 1613 ret = ecn_rel_esv(mrb, (T_EDATA *)p_msg); 1632 1614 if (ret != E_OK) { … … 1635 1617 } */ 1636 1618 } 1637 /* å¿çé»æå¾ 1638 ã¡ã®å²ãè¾¼ã¿ã®å ´å */ 1619 /* 応答電文待ちの割り込みの場合 */ 1639 1620 else if ((p_msg)->hdr.type == ECN_MSG_INTERNAL) { 1640 /* å¿çé»æå¾ 1641 ã¡ã®å²ãè¾¼ã¿ãã¼ã¿åå¾ */ 1621 /* 応答電文待ちの割り込みデータ取得 */ 1642 1622 ret = ecn_get_brk_dat(mrb, (T_EDATA *)p_msg, brkdat, sizeof(brkdat), &len); 1643 1623 if (ret != E_OK) { … … 1646 1626 } 1647 1627 1648 /* å¿çé»æå¾ 1649 ã¡ã®å²ãè¾¼ã¿å¦ç */ 1628 /* 応答電文待ちの割り込み処理 */ 1650 1629 main_break_wait(svc, brkdat, len); 1651 1630 1652 /* é å解æ¾*/1631 /* 領域解放 */ 1653 1632 ret = ecn_rel_esv(mrb, (T_EDATA *)p_msg); 1654 1633 if (ret != E_OK) { … … 1688 1667 } 1689 1668 1690 /* éä¿¡ã¬ã¤ã¤ã¼ããã®å 1691 ¥å */ 1669 /* 通信レイヤーからの入力 */ 1692 1670 static mrb_value mrb_ecnl_svctask_recv_msg(mrb_state *mrb, mrb_value self) 1693 1671 { … … 1879 1857 _module_ecnl = mrb_define_module(mrb, "ECNL"); 1880 1858 1881 /* æªè¨å®*/1859 /* 未設定 */ 1882 1860 mrb_define_const(mrb, _module_ecnl, "EPC_NONE", mrb_fixnum_value(EPC_NONE)); 1883 /* ã¢ã¯ã»ã¹ã«ã¼ã«Set */1861 /* アクセスルール Set */ 1884 1862 mrb_define_const(mrb, _module_ecnl, "EPC_RULE_SET", mrb_fixnum_value(EPC_RULE_SET)); 1885 /* ã¢ã¯ã»ã¹ã«ã¼ã«Get */1863 /* アクセスルール Get */ 1886 1864 mrb_define_const(mrb, _module_ecnl, "EPC_RULE_GET", mrb_fixnum_value(EPC_RULE_GET)); 1887 /* ã¢ã¯ã»ã¹ã«ã¼ã«Anno */1865 /* アクセスルール Anno */ 1888 1866 mrb_define_const(mrb, _module_ecnl, "EPC_RULE_ANNO", mrb_fixnum_value(EPC_RULE_ANNO)); 1889 /* ç¶æ 1890 å¤åæéç¥ */ 1867 /* 状態変化時通知 */ 1891 1868 mrb_define_const(mrb, _module_ecnl, "EPC_ANNOUNCE", mrb_fixnum_value(EPC_ANNOUNCE)); 1892 /* å¯å¤é·ãã¼ã¿*/1869 /* 可変長データ */ 1893 1870 mrb_define_const(mrb, _module_ecnl, "EPC_VARIABLE", mrb_fixnum_value(EPC_VARIABLE)); 1894 1871 1895 /* ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ï¼å¿çä¸è¦ï¼*/1872 /* プロパティ値書き込み要求(応答不要) */ 1896 1873 mrb_define_const(mrb, _module_ecnl, "ESV_SET_I", mrb_fixnum_value(ESV_SET_I)); 1897 /* ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ï¼å¿çè¦ï¼*/1874 /* プロパティ値書き込み要求(応答要) */ 1898 1875 mrb_define_const(mrb, _module_ecnl, "ESV_SET_C", mrb_fixnum_value(ESV_SET_C)); 1899 /* ããããã£å¤èªã¿åºãè¦æ±*/1876 /* プロパティ値読み出し要求 */ 1900 1877 mrb_define_const(mrb, _module_ecnl, "ESV_GET", mrb_fixnum_value(ESV_GET)); 1901 /* ããããã£å¤éç¥è¦æ±*/1878 /* プロパティ値通知要求 */ 1902 1879 mrb_define_const(mrb, _module_ecnl, "ESV_INF_REQ", mrb_fixnum_value(ESV_INF_REQ)); 1903 /* ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãè¦æ±*/1880 /* プロパティ値書き込み・読み出し要求 */ 1904 1881 mrb_define_const(mrb, _module_ecnl, "ESV_SET_GET", mrb_fixnum_value(ESV_SET_GET)); 1905 /* ããããã£å¤æ¸ãè¾¼ã¿å¿ç*/1882 /* プロパティ値書き込み応答 */ 1906 1883 mrb_define_const(mrb, _module_ecnl, "ESV_SET_RES", mrb_fixnum_value(ESV_SET_RES)); 1907 /* ããããã£å¤èªã¿åºãå¿ç*/1884 /* プロパティ値読み出し応答 */ 1908 1885 mrb_define_const(mrb, _module_ecnl, "ESV_GET_RES", mrb_fixnum_value(ESV_GET_RES)); 1909 /* ããããã£å¤éç¥*/1886 /* プロパティ値通知 */ 1910 1887 mrb_define_const(mrb, _module_ecnl, "ESV_INF", mrb_fixnum_value(ESV_INF)); 1911 /* ããããã£å¤éç¥ï¼å¿çè¦ï¼*/1888 /* プロパティ値通知(応答要) */ 1912 1889 mrb_define_const(mrb, _module_ecnl, "ESV_INFC", mrb_fixnum_value(ESV_INFC)); 1913 /* ããããã£å¤éç¥å¿ç*/1890 /* プロパティ値通知応答 */ 1914 1891 mrb_define_const(mrb, _module_ecnl, "ESV_INFC_RES", mrb_fixnum_value(ESV_INFC_RES)); 1915 /* ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãå¿ç*/1892 /* プロパティ値書き込み・読み出し応答 */ 1916 1893 mrb_define_const(mrb, _module_ecnl, "ESV_SET_GET_RES", mrb_fixnum_value(ESV_SET_GET_RES)); 1917 /* ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ä¸å¯å¿ç*/1894 /* プロパティ値書き込み要求不可応答 */ 1918 1895 mrb_define_const(mrb, _module_ecnl, "ESV_SET_I_SNA", mrb_fixnum_value(ESV_SET_I_SNA)); 1919 /* ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ä¸å¯å¿ç*/1896 /* プロパティ値書き込み要求不可応答 */ 1920 1897 mrb_define_const(mrb, _module_ecnl, "ESV_SET_C_SNA", mrb_fixnum_value(ESV_SET_C_SNA)); 1921 /* ããããã£å¤èªã¿åºãä¸å¯å¿ç*/1898 /* プロパティ値読み出し不可応答 */ 1922 1899 mrb_define_const(mrb, _module_ecnl, "ESV_GET_SNA", mrb_fixnum_value(ESV_GET_SNA)); 1923 /* ããããã£å¤éç¥ä¸å¯å¿ç*/1900 /* プロパティ値通知不可応答 */ 1924 1901 mrb_define_const(mrb, _module_ecnl, "ESV_INF_SNA", mrb_fixnum_value(ESV_INF_SNA)); 1925 /* ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãä¸å¯å¿ç*/1902 /* プロパティ値書き込み・読み出し不可応答 */ 1926 1903 mrb_define_const(mrb, _module_ecnl, "ESV_SET_GET_SNA", mrb_fixnum_value(ESV_SET_GET_SNA)); 1927 1904 1928 /* ã¢ãã¬ã¹IDç»é²ãªã*/1905 /* アドレスID登録なし */ 1929 1906 mrb_define_const(mrb, _module_ecnl, "ENOD_NOT_MATCH_ID", mrb_fixnum_value(ENOD_NOT_MATCH_ID)); 1930 /* ãã«ããã£ã¹ãã¢ãã¬ã¹ID */1907 /* マルチキャストアドレスID */ 1931 1908 mrb_define_const(mrb, _module_ecnl, "ENOD_MULTICAST_ID", mrb_fixnum_value(ENOD_MULTICAST_ID)); 1932 /* èªãã¼ãã¢ãã¬ã¹ID */1909 /* 自ノードアドレスID */ 1933 1910 mrb_define_const(mrb, _module_ecnl, "ENOD_LOCAL_ID", mrb_fixnum_value(ENOD_LOCAL_ID)); 1934 /* API ã¢ãã¬ã¹ID */1911 /* APIアドレスID */ 1935 1912 mrb_define_const(mrb, _module_ecnl, "ENOD_API_ID", mrb_fixnum_value(ENOD_API_ID)); 1936 /* ä»ãã¼ãID */1913 /* 他ノードID */ 1937 1914 mrb_define_const(mrb, _module_ecnl, "ENOD_REMOTE_ID", mrb_fixnum_value(ENOD_REMOTE_ID)); 1938 1915 … … 1941 1918 mrb_define_method(mrb, _class_object, "initialize", mrb_ecnl_eobject_initialize, MRB_ARGS_REQ(5)); 1942 1919 1943 /* ããããã£å¤æ¸ãè¾¼ã¿*/1920 /* プロパティ値書き込み */ 1944 1921 mrb_define_method(mrb, _class_object, "data_prop_set", mrb_ecnl_eobject_data_prop_set, MRB_ARGS_REQ(4)); 1945 1922 1946 /* ããããã£å¤èªã¿åºã*/1923 /* プロパティ値読み出し */ 1947 1924 mrb_define_method(mrb, _class_object, "data_prop_get", mrb_ecnl_eobject_data_prop_get, MRB_ARGS_REQ(3)); 1948 1925 … … 1951 1928 mrb_define_method(mrb, _class_node, "initialize", mrb_ecnl_enode_initialize, MRB_ARGS_REQ(2)); 1952 1929 1953 /* ããããã£å¤æ¸ãè¾¼ã¿*/1930 /* プロパティ値書き込み */ 1954 1931 mrb_define_method(mrb, _class_node, "data_prop_set", mrb_ecnl_eobject_data_prop_set, MRB_ARGS_REQ(4)); 1955 1932 1956 /* ããããã£å¤èªã¿åºã*/1933 /* プロパティ値読み出し */ 1957 1934 mrb_define_method(mrb, _class_node, "data_prop_get", mrb_ecnl_eobject_data_prop_get, MRB_ARGS_REQ(3)); 1958 1935 … … 1961 1938 mrb_define_method(mrb, _class_property, "initialize", mrb_ecnl_eproperty_initialize, MRB_ARGS_REQ(6)); 1962 1939 1963 /* ECHONET Lite ããããã£ã³ã¼ã*/1940 /* ECHONET Lite プロパティコード */ 1964 1941 mrb_define_method(mrb, _class_property, "pcd", mrb_ecnl_eproperty_get_pcd, MRB_ARGS_NONE()); 1965 /* ECHONET Lite ããããã£å±æ§*/1942 /* ECHONET Lite プロパティ属性 */ 1966 1943 mrb_define_method(mrb, _class_property, "atr", mrb_ecnl_eproperty_get_atr, MRB_ARGS_NONE()); 1967 /* ECHONET Lite ããããã£ã®ãµã¤ãº*/1944 /* ECHONET Lite プロパティのサイズ */ 1968 1945 mrb_define_method(mrb, _class_property, "sz", mrb_ecnl_eproperty_get_sz, MRB_ARGS_NONE()); 1969 /* ECHONET Lite ããããã£ã®æ¡å¼µæ 1970 å ± */ 1946 /* ECHONET Lite プロパティの拡張情報 */ 1971 1947 mrb_define_method(mrb, _class_property, "exinf", mrb_ecnl_eproperty_get_exinf, MRB_ARGS_NONE()); 1972 1948 mrb_define_method(mrb, _class_property, "set_exinf", mrb_ecnl_eproperty_set_exinf, MRB_ARGS_REQ(1)); 1973 /* ECHONET Lite ããããã£ã®è¨å®é¢æ°*/1949 /* ECHONET Lite プロパティの設定関数 */ 1974 1950 mrb_define_method(mrb, _class_property, "setcb", mrb_ecnl_eproperty_get_setcb, MRB_ARGS_NONE()); 1975 /* ECHONET Lite ããããã£ã®åå¾é¢æ°*/1951 /* ECHONET Lite プロパティの取得関数 */ 1976 1952 mrb_define_method(mrb, _class_property, "getcb", mrb_ecnl_eproperty_get_getcb, MRB_ARGS_NONE()); 1977 /* ECHONET Lite ããããã£ã®éç¥æç¡*/1953 /* ECHONET Lite プロパティの通知有無 */ 1978 1954 mrb_define_method(mrb, _class_property, "anno", mrb_ecnl_eproperty_get_anno, MRB_ARGS_NONE()); 1979 1955 mrb_define_method(mrb, _class_property, "set_anno", mrb_ecnl_eproperty_set_anno, MRB_ARGS_REQ(1)); … … 1983 1959 mrb_define_method(mrb, _class_data, "initialize", mrb_ecnl_edata_initialize, MRB_ARGS_NONE()); 1984 1960 1985 /* ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãè¦æ±é»ææãè¿ãæå®*/1961 /* プロパティ値書き込み・読み出し要求電文折り返し指定 */ 1986 1962 mrb_define_method(mrb, _class_data, "trn_set_get", mrb_ecnl_trn_set_get, MRB_ARGS_NONE()); 1987 1963 1988 /* è¦æ±é»æã¸ã®ããããã£æå®è¿½å*/1964 /* 要求電文へのプロパティ指定追加 */ 1989 1965 mrb_define_method(mrb, _class_data, "add_epc", mrb_ecnl_add_epc, MRB_ARGS_REQ(1)); 1990 1966 1991 /* è¦æ±é»æã¸ã®ããããã£ãã¼ã¿è¿½å*/1967 /* 要求電文へのプロパティデータ追加 */ 1992 1968 mrb_define_method(mrb, _class_data, "add_edt", mrb_ecnl_add_edt, MRB_ARGS_REQ(2)); 1993 1969 1994 /* å¿çé»æãµã¼ãã¹ã³ã¼ãåå¾*/1970 /* 応答電文サービスコード取得 */ 1995 1971 mrb_define_method(mrb, _class_data, "esv", mrb_ecnl_get_esv, MRB_ARGS_NONE()); 1996 1972 1997 /* å¿çé»æ解æã¤ãã¬ã¼ã¿ã¼åæå*/1973 /* 応答電文解析イテレーター初期化 */ 1998 1974 mrb_define_method(mrb, _class_data, "itr_ini", mrb_ecnl_itr_ini, MRB_ARGS_NONE()); 1999 1975 … … 2002 1978 mrb_define_method(mrb, _class_iterator, "initialize", mrb_ecnl_eiterator_initialize, MRB_ARGS_NONE()); 2003 1979 2004 /* å¿çé»æ解æã¤ãã¬ã¼ã¿ã¼ã¤ã³ã¯ãªã¡ã³ã*/1980 /* 応答電文解析イテレーターインクリメント */ 2005 1981 mrb_define_method(mrb, _class_iterator, "itr_nxt", mrb_ecnl_itr_nxt, MRB_ARGS_NONE()); 2006 1982 … … 2014 1990 mrb_define_method(mrb, _class_svctask, "initialize", mrb_ecnl_svctask_initialize, MRB_ARGS_NONE()); 2015 1991 2016 /* ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ï¼å¿çä¸è¦ï¼é»æä½æ*/1992 /* プロパティ値書き込み要求(応答不要)電文作成 */ 2017 1993 mrb_define_method(mrb, _class_svctask, "esv_set_i", mrb_ecnl_esv_set_i, MRB_ARGS_REQ(3)); 2018 1994 2019 /* ããããã£å¤æ¸ãè¾¼ã¿è¦æ±ï¼å¿çè¦ï¼é»æä½æ*/1995 /* プロパティ値書き込み要求(応答要)電文作成 */ 2020 1996 mrb_define_method(mrb, _class_svctask, "esv_set_c", mrb_ecnl_esv_set_c, MRB_ARGS_REQ(3)); 2021 1997 2022 /* ããããã£å¤èªã¿åºãè¦æ±é»æä½æ*/1998 /* プロパティ値読み出し要求電文作成 */ 2023 1999 mrb_define_method(mrb, _class_svctask, "esv_get", mrb_ecnl_esv_get, MRB_ARGS_REQ(2)); 2024 2000 2025 /* ããããã£å¤éç¥è¦æ±é»æä½æ*/2001 /* プロパティ値通知要求電文作成 */ 2026 2002 mrb_define_method(mrb, _class_svctask, "esv_inf_req", mrb_ecnl_esv_inf_req, MRB_ARGS_REQ(2)); 2027 2003 2028 /* ããããã£å¤æ¸ãè¾¼ã¿ã»èªã¿åºãè¦æ±é»æä½æ*/2004 /* プロパティ値書き込み・読み出し要求電文作成 */ 2029 2005 mrb_define_method(mrb, _class_svctask, "esv_set_get", mrb_ecnl_esv_set_get, MRB_ARGS_REQ(3)); 2030 2006 2031 /* ããããã£å¤éç¥ï¼å¿çè¦ï¼é»æä½æ*/2007 /* プロパティ値通知(応答要)電文作成 */ 2032 2008 mrb_define_method(mrb, _class_svctask, "esv_infc", mrb_ecnl_esv_infc, MRB_ARGS_REQ(3)); 2033 2009 2034 /* è¦æ±é»æã®éä¿¡*/2010 /* 要求電文の送信 */ 2035 2011 mrb_define_method(mrb, _class_svctask, "snd_esv", mrb_ecnl_snd_esv, MRB_ARGS_REQ(1)); 2036 2012 2037 /* é»æã®ç ´æ£*/2013 /* 電文の破棄 */ 2038 2014 mrb_define_method(mrb, _class_svctask, "rel_esv", mrb_ecnl_rel_esv, MRB_ARGS_REQ(1)); 2039 2015 2040 /* ã¤ã³ã¹ã¿ã³ã¹ãªã¹ãéç¥ã®éä¿¡*/2016 /* インスタンスリスト通知の送信 */ 2041 2017 mrb_define_method(mrb, _class_svctask, "ntf_inl", mrb_ecnl_svctask_ntf_inl, MRB_ARGS_NONE()); 2042 2018 2043 /* ã¡ãã»ã¼ã¸å¦çã«ã¼ã*/2019 /* メッセージ処理ループ */ 2044 2020 mrb_define_method(mrb, _class_svctask, "set_timer", mrb_ecnl_svctask_set_timer, MRB_ARGS_REQ(1)); 2045 2021 mrb_define_method(mrb, _class_svctask, "timer", mrb_ecnl_svctask_get_timer, MRB_ARGS_NONE()); … … 2048 2024 mrb_define_method(mrb, _class_svctask, "call_timeout", mrb_ecnl_svctask_call_timeout, MRB_ARGS_NONE()); 2049 2025 2050 /* ãªã¢ã¼ãECHONETãã¼ãã®é©å確èª*/2026 /* リモートECHONETノードの適合確認 */ 2051 2027 mrb_define_method(mrb, _class_svctask, "is_match", mrb_ecnl_svctask_is_match, MRB_ARGS_REQ(3)); 2052 2028 } -
EcnlProtoTool/trunk/mrbgems/mruby-ecnl/src/mrb_ecnl.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 4 4 * Copyright (C) 2016 Cores Co., Ltd. Japan 5 5 * 6 * ä¸è¨èä½æ¨©è 7 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 8 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 9 * å¤ã»åé 10 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 11 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 12 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 13 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 14 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 15 * ç¨ã§ããå½¢ã§åé 16 å¸ããå ´åã«ã¯ï¼åé 17 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 18 * è 19 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 20 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 21 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 22 * ç¨ã§ããªãå½¢ã§åé 23 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 24 * ã¨ï¼ 25 * (a) åé 26 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 27 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 28 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 29 * (b) åé 30 å¸ã®å½¢æ 31 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 32 * å ±åãããã¨ï¼ 33 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 34 * 害ãããï¼ä¸è¨èä½æ¨©è 35 ããã³TOPPERSããã¸ã§ã¯ããå 36 責ãããã¨ï¼ 37 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 38 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ãã 40 * å 41 責ãããã¨ï¼ 6 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 8 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 9 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 10 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 11 * スコード中に含まれていること. 12 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 13 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 14 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 15 * の無保証規定を掲載すること. 16 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 17 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 18 * と. 19 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 20 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 21 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 22 * 報告すること. 23 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 24 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 25 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 * 免責すること. 42 28 * 43 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 44 ã 45 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 46 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 47 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 48 * ã®è²¬ä»»ãè² ããªãï¼ 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 49 34 * 50 35 */
Note:
See TracChangeset
for help on using the changeset viewer.