Changeset 167 for UsbWattMeter/trunk/ecnl_lwip
- Timestamp:
- Mar 8, 2016, 8:37:45 PM (7 years ago)
- Location:
- UsbWattMeter/trunk/ecnl_lwip
- Files:
-
- 23 edited
Legend:
- Unmodified
- Added
- Removed
-
UsbWattMeter/trunk/ecnl_lwip/echonet.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; charset=SHIFT_JIS
r164 r167 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 6 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 7 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 8 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 9 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 10 * \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[ 11 * XR[hÉÜÜêĢ鱯D 12 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 13 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 14 gip 15 * Ò}j 16 AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL 17 * Ì³ÛØKèðfÚ·é±ÆD 18 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 19 * pūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 20 * ÆD 21 * (a) Äzzɺ¤hL 22 gipÒ}j 23 AÈÇjÉCãLÌ 24 * ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD 25 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 26 * ñ·é±ÆD 27 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 28 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 29 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 30 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 31 * ÆÓ·é±ÆD 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 * 免責すること. 32 28 * 33 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨34 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI35 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF36 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»37 * ÌÓCðíÈ¢D29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 38 34 * 39 35 * @(#) $Id$ … … 52 48 53 49 /* 54 * ECHONET Lite T[rXJn50 * ECHONET Liteサービス処理開始 55 51 */ 56 52 ER ecn_sta_svc() … … 60 56 61 57 /* 62 * ECHONET IuWFNgQÆ63 * ø64 * ID fa_eobjid ECHONET IuWFNgID65 * T_REOBJ *fp_eobj ECHONET IuWFNgÌÝèàeRs[æ58 * ECHONETオブジェクト参照 59 * 引数 60 * ID fa_eobjid ECHONETオブジェクトID 61 * T_REOBJ *fp_eobj ECHONETオブジェクトの設定内容コピー先 66 62 * 67 * eobjid Åwèµ½ECHONETIuWFNgÌÝèàeðQÆ·éB68 * QƵ½ÝèàeÍpk_eobjÉwèµ½ÉÔ³êéB63 * eobjidで指定したECHONETオブジェクトの設定内容を参照する。 64 * 参照した設定内容はpk_eobjに指定したメモリに返される。 69 65 */ 70 66 ER ecn_ref_eobj(ID fa_eobjid, T_REOBJ *fp_eobj) … … 73 69 74 70 if (!fp_eobj) 75 return E_PAR; /* p[^G[*/71 return E_PAR; /* パラメータエラー */ 76 72 77 73 if ((fa_eobjid <= 0) || (fa_eobjid > tmax_eobjid)) 78 return E_OBJ; /* IuWFNg¢o^*/74 return E_OBJ; /* オブジェクト未登録 */ 79 75 80 76 p_obj = &eobjinib_table[fa_eobjid - 1]; … … 86 82 87 83 /* 88 * ECHONET vpeBQÆ89 * ø90 * ID fa_eobjid ECHONET IuWFNgID91 * uint8_t fa_epc vpeBR[h92 * T_RPRP *fp_eprp ECHONET IuWFNgÌvpeBÝèàeRs[æ84 * ECHONETプロパティ参照 85 * 引数 86 * ID fa_eobjid ECHONETオブジェクトID 87 * uint8_t fa_epc プロパティコード 88 * T_RPRP *fp_eprp ECHONETオブジェクトのプロパティ設定内容コピー先 93 89 * 94 * eobjid Åwèµ½ECHONETIuWFNgÌAepcÅwèµ½vpeBÌÝèàeðQÆ·éB95 * QƵ½ÝèàeÍpk_eprpÉwèµ½ÉÔ³êéB90 * eobjidで指定したECHONETオブジェクトの、epcで指定したプロパティの設定内容を参照する。 91 * 参照した設定内容はpk_eprpに指定したメモリに返される。 96 92 */ 97 93 ER ecn_ref_eprp(ID fa_eobjid, uint8_t fa_epc, T_RPRP *fp_eprp) … … 102 98 103 99 if (!fp_eprp) 104 return E_PAR; /* p[^G[*/100 return E_PAR; /* パラメータエラー */ 105 101 106 102 if ((fa_eobjid <= 0) || (fa_eobjid > tmax_eobjid)) 107 return E_OBJ; /* IuWFNg¢o^*/103 return E_OBJ; /* オブジェクト未登録 */ 108 104 109 105 p_obj = &eobjinib_table[fa_eobjid - 1]; 110 106 111 /* eoj ÌÂvpeBú»è`zñ©çõ*/107 /* eojの持つプロパティ初期化定義配列から検索 */ 112 108 p = p_obj->eprp; 113 109 for (i = 0; i < p_obj->eprpcnt; i++, p++) { … … 118 114 } 119 115 120 return E_PAR; /* p[^G[*/121 } 122 123 /* 124 * vpeBl«Ývisvjd¶ì¬125 * ø126 * T_EDATA **ppk_esv æ¾µ½d¶Ìi[æ127 * ID fa_deoj ¶æÌECHONETIuWFNgID128 * uint8_t fa_epc vpeBR[h129 * uint8_t fa_pdc vpeBlf[^TCY130 * const void *p_edt vpeBlf[^116 return E_PAR; /* パラメータエラー */ 117 } 118 119 /* 120 * プロパティ値書き込み要求(応答不要)電文作成 121 * 引数 122 * T_EDATA **ppk_esv 取得した電文の格納先 123 * ID fa_deoj 宛先のECHONETオブジェクトID 124 * uint8_t fa_epc プロパティコード 125 * uint8_t fa_pdc プロパティ値データサイズ 126 * const void *p_edt プロパティ値データ 131 127 * 132 * vpeBl«Ývisvjd¶ð쬷éB133 * d¶ÍdeojÅwèµ½ECHONETIuWFNgð¶æÆµA134 * d¶ÌßÌvpeBlƵÄAepcÆpdcAp_edtÅwè³ê½135 * vpeBR[hAf[^TCYAf[^ðd¶ÉÝè·éB136 * 쬵½d¶ÌæªAhXÍ|C^oRÅÔ³êéB128 * プロパティ値書き込み要求(応答不要)電文を作成する。 129 * 電文はdeojで指定したECHONETオブジェクトを宛先とし、 130 * 電文の初めのプロパティ値として、epcとpdc、p_edtで指定された 131 * プロパティコード、データサイズ、データを電文に設定する。 132 * 作成した電文の先頭アドレスはポインタ経由で返される。 137 133 */ 138 134 ER ecn_esv_seti(T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc, uint8_t fa_pdc, … … 143 139 144 140 /* 145 * vpeBl«Ývivjd¶ì¬146 * ø147 * T_EDATA **ppk_esv æ¾µ½d¶Ìi[æ148 * ID fa_deoj ¶æÌECHONETIuWFNgID149 * uint8_t fa_epc vpeBR[h150 * uint8_t fa_pdc vpeBlf[^TCY151 * const void *p_edt vpeBlf[^141 * プロパティ値書き込み要求(応答要)電文作成 142 * 引数 143 * T_EDATA **ppk_esv 取得した電文の格納先 144 * ID fa_deoj 宛先のECHONETオブジェクトID 145 * uint8_t fa_epc プロパティコード 146 * uint8_t fa_pdc プロパティ値データサイズ 147 * const void *p_edt プロパティ値データ 152 148 * 153 * vpeBl«Ývivjd¶ð쬷éB154 * d¶ÍdeojÅwèµ½ECHONETIuWFNgð¶æÆµA155 * d¶ÌßÌvpeBlƵÄAepcÆpdcAp_edtÅwè³ê½156 * vpeBR[hAf[^TCYAf[^ðd¶ÉÝè·éB157 * 쬵½d¶ÌæªAhXÍ|C^oRÅÔ³êéB149 * プロパティ値書き込み要求(応答要)電文を作成する。 150 * 電文はdeojで指定したECHONETオブジェクトを宛先とし、 151 * 電文の初めのプロパティ値として、epcとpdc、p_edtで指定された 152 * プロパティコード、データサイズ、データを電文に設定する。 153 * 作成した電文の先頭アドレスはポインタ経由で返される。 158 154 */ 159 155 ER ecn_esv_setc(T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc, uint8_t fa_pdc, … … 164 160 165 161 /* 166 * vpeBlÇÝoµvd¶ì¬167 * ø168 * T_EDATA **ppk_esv æ¾µ½d¶Ìi[æ169 * ID fa_deoj ¶æÌECHONETIuWFNgID170 * uint8_t fa_epc vpeBR[h162 * プロパティ値読み出し要求電文作成 163 * 引数 164 * T_EDATA **ppk_esv 取得した電文の格納先 165 * ID fa_deoj 宛先のECHONETオブジェクトID 166 * uint8_t fa_epc プロパティコード 171 167 * 172 * vpeBlÇÝoµvd¶ð쬷éB173 * d¶ÍdeojÅwèµ½ECHONETIuWFNgð¶æÆµA174 * d¶ÌßÌvpeBlƵÄAepcÅwè³ê½175 * vpeBR[hðd¶ÉÝè·éB176 * 쬵½d¶ÌæªAhXÍ|C^oRÅÔ³êéB168 * プロパティ値読み出し要求電文を作成する。 169 * 電文はdeojで指定したECHONETオブジェクトを宛先とし、 170 * 電文の初めのプロパティ値として、epcで指定された 171 * プロパティコードを電文に設定する。 172 * 作成した電文の先頭アドレスはポインタ経由で返される。 177 173 */ 178 174 ER ecn_esv_get(T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc) … … 182 178 183 179 /* 184 * vpeBlÊmvd¶ì¬185 * ø186 * T_EDATA **ppk_esv æ¾µ½d¶Ìi[æ187 * ID fa_deoj ¶æÌECHONETIuWFNgID188 * uint8_t fa_epc vpeBR[h180 * プロパティ値通知要求電文作成 181 * 引数 182 * T_EDATA **ppk_esv 取得した電文の格納先 183 * ID fa_deoj 宛先のECHONETオブジェクトID 184 * uint8_t fa_epc プロパティコード 189 185 * 190 * vpeBlÊmvd¶ð쬷éB191 * d¶ÍdeojÅwèµ½ECHONETIuWFNgð¶æÆµA192 * d¶ÌßÌvpeBlƵÄAepcÅwè³ê½193 * vpeBR[hðd¶ÉÝè·éB194 * 쬵½d¶ÌæªAhXÍ|C^oRÅÔ³êéB186 * プロパティ値通知要求電文を作成する。 187 * 電文はdeojで指定したECHONETオブジェクトを宛先とし、 188 * 電文の初めのプロパティ値として、epcで指定された 189 * プロパティコードを電文に設定する。 190 * 作成した電文の先頭アドレスはポインタ経由で返される。 195 191 */ 196 192 ER ecn_esv_inf_req(T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc) … … 200 196 201 197 /* 202 * vpeBl«ÝEÇÝoµvd¶ì¬203 * ø204 * T_EDATA **ppk_esv æ¾µ½d¶Ìi[æ205 * ID fa_deoj ¶æÌECHONETIuWFNgID206 * uint8_t fa_epc vpeBR[h207 * uint8_t fa_pdc vpeBlf[^TCY208 * const void *p_edt vpeBlf[^198 * プロパティ値書き込み・読み出し要求電文作成 199 * 引数 200 * T_EDATA **ppk_esv 取得した電文の格納先 201 * ID fa_deoj 宛先のECHONETオブジェクトID 202 * uint8_t fa_epc プロパティコード 203 * uint8_t fa_pdc プロパティ値データサイズ 204 * const void *p_edt プロパティ値データ 209 205 * 210 * vpeBl«ÝEÇÝoµvd¶ð쬷éB211 * d¶ÍdeojÅwèµ½ECHONETIuWFNgð¶æÆµA212 * d¶ÌßÌvpeBlƵÄAepcÆpdcAp_edtÅwè³ê½213 * vpeBR[hAf[^TCYAf[^ðd¶ÉÝè·éB214 * 쬵½d¶ÌæªAhXÍ|C^oRÅÔ³êéB206 * プロパティ値書き込み・読み出し要求電文を作成する。 207 * 電文はdeojで指定したECHONETオブジェクトを宛先とし、 208 * 電文の初めのプロパティ値として、epcとpdc、p_edtで指定された 209 * プロパティコード、データサイズ、データを電文に設定する。 210 * 作成した電文の先頭アドレスはポインタ経由で返される。 215 211 */ 216 212 ER ecn_esv_set_get(T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc, uint8_t fa_pdc, … … 221 217 222 218 /* 223 * vpeBl«ÝEÇÝoµvd¶ì¬FÜèÔµwè224 * vpeBl«ÝEÇÝoµvd¶ì¬ÌA«ÝvpeBzñðI¦Ä225 * ÇÝoµvpeBzñÉÚéÉp¢éB219 * プロパティ値書き込み・読み出し要求電文作成:折り返し指定 220 * プロパティ値書き込み・読み出し要求電文作成中の、書き込みプロパティ配列を終えて 221 * 読み出しプロパティ配列に移る時に用いる。 226 222 */ 227 223 ER ecn_trn_set_get(T_EDATA *ppk_esv, int *p_trn_pos) … … 234 230 return E_PAR; 235 231 236 /* vpeBÇÝÝ«ÝÌwbhîñðL^*/232 /* プロパティ読み込み件数書き込み時のヘッド情報を記録 */ 237 233 *p_trn_pos = _ecn_fbs_get_datalen(*(ECN_FBS_ID *)&ppk_esv); 238 234 239 /* d¶pÉf[^ÇÁE±Ì_ÅÌd¶vpeBðL^*/235 /* 応答電文用メモリにデータ追加・この時点での応答電文中プロパティ件数を記録 */ 240 236 a_ret = _ecn_fbs_add_data_ex(*(ECN_FBS_ID *)&ppk_esv, &ppk_esv->hdr.edata.opc, 1); 241 237 if (a_ret) { … … 244 240 } 245 241 246 /* d¶vpeBð 0 Éß·i¡ãAI¹wè·éÜÅÍÇÝoµvpeBÉÈéj*/242 /* 応答電文中プロパティ件数を 0 に戻す(今後、終了指定するまでは読み出しプロパティ件数になる) */ 247 243 ppk_esv->hdr.edata.opc = 0; 248 244 … … 251 247 252 248 /* 253 * vpeBl«ÝEÇÝoµvd¶ì¬FI¹wè254 * vpeBl«ÝEÇÝoµvd¶ì¬ÌAÇÝoµvpeBzñðI¦éÉp¢éB249 * プロパティ値書き込み・読み出し要求電文作成:終了指定 250 * プロパティ値書き込み・読み出し要求電文作成中の、読み出しプロパティ配列を終える時に用いる。 255 251 */ 256 252 ER ecn_end_set_get(T_EDATA *ppk_esv, int fa_trn_pos) … … 263 259 return E_PAR; 264 260 265 /* ±Ì_ÅÌd¶vpeB(ÇÝoµvpeB)ðÛ*/261 /* この時点での応答電文中プロパティ件数(読み出しプロパティ件数)を保持 */ 266 262 a_rd_opc = ppk_esv->hdr.edata.opc; 267 263 268 /* d¶vpeB(«ÝvpeB)ðÛ¶Êu©çÇÝæè*/264 /* 応答電文中プロパティ件数(書き込みプロパティ件数)を保存位置から読み取り */ 269 265 a_wr_opc = _ecn_fbs_peek(*(ECN_FBS_ID *)&ppk_esv, fa_trn_pos); 270 266 if (a_wr_opc < 0) { … … 273 269 } 274 270 275 /* d¶vpeB(«ÝvpeB)ð³*/271 /* 応答電文中プロパティ件数(書き込みプロパティ件数)を復元 */ 276 272 ppk_esv->hdr.edata.opc = (uint8_t)a_wr_opc; 277 273 278 /* d¶vpeB(ÇÝoµvpeB)ðÛ¶ÊuÉ«Ý*/274 /* 応答電文中プロパティ件数(読み出しプロパティ件数)を保存位置に書き込み */ 279 275 a_ret = _ecn_fbs_poke(*(ECN_FBS_ID *)&ppk_esv, fa_trn_pos, a_rd_opc); 280 276 if (a_ret) { … … 287 283 288 284 /* 289 * vpeBlÊmivjd¶ì¬290 * ø291 * T_EDATA **ppk_esv æ¾µ½d¶Ìi[æ292 * ID fa_deoj ¶æÌECHONETIuWFNgID293 * ID fa_seoj M³ÌECHONETIuWFNgID294 * uint8_t fa_sepc M³ÌvpeBR[h285 * プロパティ値通知(応答要)電文作成 286 * 引数 287 * T_EDATA **ppk_esv 取得した電文の格納先 288 * ID fa_deoj 宛先のECHONETオブジェクトID 289 * ID fa_seoj 送信元のECHONETオブジェクトID 290 * uint8_t fa_sepc 送信元のプロパティコード 295 291 */ 296 292 ER ecn_esv_infc(T_EDATA **ppk_esv, ID fa_deoj, ID fa_seoj, uint8_t fa_sepc) … … 300 296 301 297 /* 302 * vd¶ÖÌvpeBwèÇÁ (vpeBf[^ªtµÈ¢êÉp¢é)298 * 要求電文へのプロパティ指定追加 (プロパティデータが付随しない場合に用いる) 303 299 */ 304 300 ER ecn_add_epc(T_EDATA *pk_esv, uint8_t epc) … … 308 304 309 305 /* 310 * vd¶ÖÌvpeBf[^ÇÁ (vpeB¨æÑtf[^ðÇÁ·é)306 * 要求電文へのプロパティデータ追加 (プロパティおよび付随データを追加する) 311 307 */ 312 308 ER ecn_add_edt(T_EDATA *pk_esv, uint8_t fa_epc, uint8_t fa_pdc, const void *p_edt) … … 317 313 318 314 if (!pk_esv) 319 return E_PAR; /* æ¾µ½FBS_IDÌi[æªNULL */315 return E_PAR; /* 取得したFBS_IDの格納先がNULL */ 320 316 if (ECHONET_MEMPOOL_BLOCK_SIZE <= fa_pdc) 321 return E_PAR; /* vpeBlTCYªå«·¬é*/317 return E_PAR; /* プロパティ値サイズが大きすぎる */ 322 318 if (!p_edt && 0 < fa_pdc) 323 return E_PAR; /* vpeBlTCYª1ÈãÈÌÉf[^|C^ªNULL */319 return E_PAR; /* プロパティ値サイズが1以上なのにデータポインタがNULL */ 324 320 325 321 a_fbs_id.ptr = (T_ECN_FST_BLK *)pk_esv; 326 322 if (((T_EDATA *)a_fbs_id.ptr)->hdr.edata.opc == 0xFF) 327 return E_PAR; /* vpeBª½·¬é*/328 329 /* vd¶pÉf[^ÇÁ*/323 return E_PAR; /* プロパティが多すぎる */ 324 325 /* 要求電文用メモリにデータ追加 */ 330 326 memset(&a_ecn_prp, 0, sizeof(a_ecn_prp)); 331 327 a_ecn_prp.epc = fa_epc; … … 339 335 } 340 336 if (0 < fa_pdc) { 341 /* tf[^ÇÁ*/337 /* 付随データ追加 */ 342 338 a_ret = _ecn_fbs_add_data_ex(a_fbs_id, p_edt, fa_pdc); 343 339 if (a_ret) { … … 348 344 } 349 345 } 350 /* vpeBCNg*/346 /* プロパティ数インクリメント */ 351 347 ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.opc++; 352 348 … … 356 352 357 353 /* 358 * vd¶ÌM359 * esv Åwè³ê½vd¶ðM·éB360 * d¶Éwè³ê½¶æ©çIPAhXðÁèµAUDPpPbgƵÄM·éB354 * 要求電文の送信 355 * esvで指定された要求電文を送信する。 356 * 電文に指定された宛先からIPアドレスを特定し、UDPパケットとして送信する。 361 357 */ 362 358 ER ecn_snd_esv(T_EDATA *pk_esv) … … 368 364 369 365 /* 370 * d¶ÌóMiÒ¿371 * d¶ðóM·éÌðÒÂB372 * óMµ½d¶Íppk_esvÅwèµ½|C^[ÉæªAhXªÔ³êéB373 * vd¶Ì¶æÌECHONETIuWFNgªlbg[NɶݵȢêA374 * d¶ÍÔ³êÈ¢ÌÅAiÉÒ±ÆÉÈéÌÅ^CAEgt«Ì375 * ecn_trcv_esv ðgp·é±Æð§·éB366 * 応答電文の受信永遠待ち 367 * 応答電文を受信するのを待つ。 368 * 受信した応答電文はppk_esvで指定したポインターに先頭アドレスが返される。 369 * 要求電文の宛先のECHONETオブジェクトがネットワークに存在しない場合、 370 * 応答電文は返送されないので、永遠に待つことになるのでタイムアウト付きの 371 * ecn_trcv_esvを使用することを推奨する。 376 372 */ 377 373 ER ecn_rcv_esv(T_EDATA **ppk_esv) … … 381 377 382 378 /* 383 * d¶ÌóMÒ¿^CAEg è384 * d¶ðóM·éÌðÒÂB385 * óMµ½d¶Íppk_esvÅwèµ½|C^[ÉæªAhXªÔ³êéB386 * tmo Åwè³ê½^CAEgÔªoßµÄàd¶ðóMµÈ¢êA387 * Ò¿ªð³êAßèlªE_TMOÅÔ³êéB388 * tmo ÉTMO_FEVRðwè·éÆecn_rcv_esvƯ¶Ué¢ð·éB389 * tmo É0ðwè·éÆecn_prcv_esvƯ¶Ué¢ð·éB379 * 応答電文の受信待ちタイムアウトあり 380 * 応答電文を受信するのを待つ。 381 * 受信した応答電文はppk_esvで指定したポインターに先頭アドレスが返される。 382 * tmoで指定されたタイムアウト時間が経過しても応答電文を受信しない場合、 383 * 待ちが解除され、戻り値がE_TMOで返される。 384 * tmoにTMO_FEVRを指定するとecn_rcv_esvと同じ振る舞いをする。 385 * tmoに0を指定するとecn_prcv_esvと同じ振る舞いをする。 390 386 */ 391 387 ER ecn_trcv_esv(T_EDATA **ppk_esv, TMO fa_tmout) … … 408 404 409 405 /* 410 * d¶ÌóM|[O411 * d¶ðóM·éÌðÒÂB412 * óMµ½d¶Íppk_esvÅwèµ½|C^[ÉæªAhXªÔ³êéB413 * d¶ÌóMÌL³É©©íç¸AÒ½¸ÉÖð²¯éB406 * 応答電文の受信ポーリング 407 * 応答電文を受信するのを待つ。 408 * 受信した応答電文はppk_esvで指定したポインターに先頭アドレスが返される。 409 * 応答電文の受信の有無にかかわらず、待たずに関数を抜ける。 414 410 */ 415 411 ER ecn_prcv_esv(T_EDATA **ppk_esv) … … 419 415 420 416 /* 421 * d¶Ìjü417 * 応答電文の破棄 422 418 */ 423 419 ER ecn_rel_esv(T_EDATA *pk_esv) … … 432 428 433 429 /* 434 * d¶ÌM³@íIuWFNgðæ¾·é430 * 応答電文の送信元機器オブジェクトを取得する 435 431 */ 436 432 ID ecn_get_eobj(T_EDATA *pk_esv) … … 443 439 p_snod = _ecn_eno_fnd(((T_ECN_FST_BLK *)pk_esv)->hdr.sender.id); 444 440 if (p_snod != NULL) { 445 /* m[hvt@CÌê*/441 /* ノードプロファイルの場合 */ 446 442 if ((p_esv->edata.seoj.eojx1 == EOJ_X1_PROFILE) 447 443 && (p_esv->edata.seoj.eojx2 == EOJ_X2_NODE_PROFILE)) { 448 444 p_sobj = p_snod->profile; 449 445 } 450 /* @íIuWFNgÌê*/446 /* 機器オブジェクトの場合 */ 451 447 else { 452 448 p_sobj = _ecn_eoj_fnd(p_snod, &p_esv->edata.seoj); … … 464 460 465 461 /* 466 * d¶ðÍCe[^[ú»462 * 応答電文解析イテレーター初期化 467 463 */ 468 464 ER ecn_itr_ini(T_ENUM_EPC *pk_itr, T_EDATA *pk_esv) … … 476 472 pk_itr->pk_esv = pk_esv; 477 473 pk_itr->count = pk_esv->hdr.edata.opc; 478 /* ¡ÌubNÅÌvpeB*/479 pk_itr->got_ct = 0; /* ¡ÌubNÅAÇÝæÁ½*/480 pk_itr->next_blk_ct = 0; /* ã±ubN*/481 pk_itr->is_eof = 0; /* I[ÉBµ½Añ0 */474 /* 今のブロックでのプロパティ総数 */ 475 pk_itr->got_ct = 0; /* 今のブロックで、読み取った数 */ 476 pk_itr->next_blk_ct = 0; /* 後続ブロック数 */ 477 pk_itr->is_eof = 0; /* 終端に達した時、非0 */ 482 478 pk_itr->cur = offsetof(T_ECN_EDT_HDR, ecn_prp); 483 479 484 480 switch (pk_esv->hdr.edata.esv) { 485 case ESV_SET_GET: /* 0x6E vpeBl«ÝEÇÝoµv*/486 case ESV_SET_GET_RES: /* 0x7E vpeBl«ÝEÇÝoµ*/487 case ESV_SET_GET_SNA: /* 0x5E vpeBl«ÝEÇÝoµsÂ*/481 case ESV_SET_GET: /* 0x6E プロパティ値書き込み・読み出し要求 */ 482 case ESV_SET_GET_RES: /* 0x7E プロパティ値書き込み・読み出し応答 */ 483 case ESV_SET_GET_SNA: /* 0x5E プロパティ値書き込み・読み出し不可応答 */ 488 484 pk_itr->next_blk_ct ++; 489 485 default: … … 495 491 496 492 /* 497 * d¶ðÍCe[^[CNg493 * 応答電文解析イテレーターインクリメント 498 494 */ 499 495 ER ecn_itr_nxt(T_ENUM_EPC *pk_itr, uint8_t *p_epc, uint8_t *p_pdc, void *p_edt) … … 517 513 518 514 if (pk_itr->is_eof) 519 return E_BOVR; /* f[^I¹*/515 return E_BOVR; /* データ終了 */ 520 516 if ( pk_itr->count <= pk_itr->got_ct 521 517 && pk_itr->next_blk_ct < 1) { 522 pk_itr->is_eof = 1; /* I[ÉBµ½Añ0 */523 return E_BOVR; /* f[^I¹*/518 pk_itr->is_eof = 1; /* 終端に達した時、非0 */ 519 return E_BOVR; /* データ終了 */ 524 520 } 525 521 526 522 a_fbs_id.ptr = (T_ECN_FST_BLK *)pk_itr->pk_esv; 527 523 528 /* ³ÌJ[\ÊuðÛ¶µACe[^ÌJ[\ÊuÉ·é*/524 /* 元のカーソル位置を保存し、イテレータのカーソル位置にする */ 529 525 a_rd_bak = a_fbs_id.ptr->hdr.rd; 530 526 a_fbs_id.ptr->hdr.rd = pk_itr->cur; … … 534 530 #endif 535 531 if (pk_itr->count <= pk_itr->got_ct && 0 < pk_itr->next_blk_ct) { 536 /* ubNÉÚ®*/532 /* 次ブロックに移動 */ 537 533 pk_itr->next_blk_ct --; 538 pk_itr->count = 0; /* ¡ÌubNÅÌvpeB*/539 pk_itr->got_ct = 0; /* ¡ÌubNÅAÇÝæÁ½*/540 541 /* ubNÌvpeBðÇÝæé*/534 pk_itr->count = 0; /* 今のブロックでのプロパティ総数 */ 535 pk_itr->got_ct = 0; /* 今のブロックで、読み取った数 */ 536 537 /* 次ブロックのプロパティ数を読み取る */ 542 538 a_rd_len = 0; 543 539 a_ret = _ecn_fbs_get_data(a_fbs_id, &a_ecn_prp.pdc, 1, &a_rd_len); … … 545 541 goto lb_except; 546 542 if (0 < a_rd_len) { 547 pk_itr->count = a_ecn_prp.pdc; /* ¡ÌubNÅÌvpeB*/543 pk_itr->count = a_ecn_prp.pdc; /* 今のブロックでのプロパティ総数 */ 548 544 } 549 a_ret = E_BOVR; /* f[^I¹*/545 a_ret = E_BOVR; /* データ終了 */ 550 546 goto lb_finally; 551 547 } 552 548 553 /* vpeBR[hÆf[^TCYðÇÝæé*/549 /* プロパティコードとデータサイズを読み取る */ 554 550 memset(&a_ecn_prp, 0, sizeof(a_ecn_prp)); 555 551 a_rd_len = 0; … … 560 556 ECN_DBG_PUT( "ecn_itr_nxt() ecn_prp read fault." 561 557 " rd.cur=%d", pk_itr->cur ); 562 pk_itr->is_eof = 1; /* I[ÉBµ½Añ0 */563 a_ret = E_BOVR; /* f[^I¹*/558 pk_itr->is_eof = 1; /* 終端に達した時、非0 */ 559 a_ret = E_BOVR; /* データ終了 */ 564 560 goto lb_finally; 565 561 } … … 568 564 569 565 if (0 < a_ecn_prp.pdc) { 570 /* tf[^ðÇÝæé*/566 /* 付随データを読み取る */ 571 567 a_rd_len = 0; 572 568 a_ret = _ecn_fbs_get_data(a_fbs_id, p_edt, a_ecn_prp.pdc, &a_rd_len); … … 576 572 ECN_DBG_PUT( "ecn_itr_nxt() edt read fault." 577 573 " rd.cur=%d,epc=0x%02X,pdc=%u", pk_itr->cur, a_ecn_prp.epc , a_ecn_prp.pdc ); 578 pk_itr->is_eof = 1; /* I[ÉBµ½Añ0 */579 a_ret = E_BOVR; /* f[^I¹*/574 pk_itr->is_eof = 1; /* 終端に達した時、非0 */ 575 a_ret = E_BOVR; /* データ終了 */ 580 576 goto lb_finally; 581 577 } … … 588 584 589 585 lb_finally: 590 /* Ce[^ÌJ[\ÊuðXV*/586 /* イテレータのカーソル位置を更新 */ 591 587 pk_itr->cur = a_fbs_id.ptr->hdr.rd; 592 588 593 589 lb_except: 594 /* ³ÌJ[\ÊuÉß·*/590 /* 元のカーソル位置に戻す */ 595 591 a_fbs_id.ptr->hdr.rd = a_rd_bak; 596 592 return a_ret; … … 598 594 599 595 /* 600 * d¶Ò¿ÌèÝM596 * 応答電文待ちの割り込み送信 601 597 */ 602 598 ER ecn_brk_wai(const void *p_dat, int fa_datsz) 603 599 { 604 600 ER a_ret; 605 ECN_FBS_ID a_fbs_id = { 0 }; /* vd¶p*/606 607 /* d¶Ò¿ÌèÝd¶ì¬*/601 ECN_FBS_ID a_fbs_id = { 0 }; /* 要求電文用メモリ */ 602 603 /* 応答電文待ちの割り込み電文作成 */ 608 604 a_ret = _ecn_mk_brk_wai(&a_fbs_id, p_dat, fa_datsz); 609 605 if (a_ret) 610 606 return a_ret; 611 607 612 /* èÝM*/608 /* 割り込み送信 */ 613 609 a_ret = _ecn_tsk_snd_mbx(a_fbs_id, true); 614 610 if (a_ret) { … … 618 614 } 619 615 620 /* ³íI¹*/616 /* 正常終了 */ 621 617 return a_ret; 622 618 623 619 lb_except: 624 /* f[^쬸sµ½çÌæðú*/620 /* データ作成失敗したら領域解放 */ 625 621 if (a_fbs_id.ptr) 626 622 _ecn_fbs_del(a_fbs_id); … … 630 626 631 627 /* 632 * èÝf[^Ìæ¾628 * 割り込みデータの取得 633 629 */ 634 630 ER ecn_get_brk_dat(T_EDATA *pk_esv, void *p_buf, int fa_bufsz, int *p_datsz) … … 650 646 } 651 647 652 /* ÇÝæèÊuðæªÉß·*/648 /* 読み取り位置を先頭に戻す */ 653 649 a_ret = _ecn_fbs_set_rpos(a_fbs, 0); 654 650 if (a_ret) { … … 658 654 } 659 655 660 /* tf[^ðÇÝÞ*/656 /* 付随データを読み込む */ 661 657 if (p_buf && 0 < fa_bufsz) { 662 658 a_len = 0; … … 675 671 #ifndef ECN_USER_DATA_PROP_SET 676 672 /* 677 * f[^ÝèÖ673 * データ設定関数 678 674 */ 679 675 int ecn_data_prop_set(const EPRPINIB *item, const void *src, int size, bool_t *anno) … … 693 689 #ifndef ECN_USER_DATA_PROP_GET 694 690 /* 695 * f[^æ¾Ö691 * データ取得関数 696 692 */ 697 693 int ecn_data_prop_get(const EPRPINIB *item, void *dst, int size) -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/ecnl_lwip/echonet.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=SHIFT_JIS
r164 r167 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 6 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 7 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 8 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 9 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 10 * \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[ 11 * XR[hÉÜÜêĢ鱯D 12 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 13 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 14 gip 15 * Ò}j 16 AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL 17 * Ì³ÛØKèðfÚ·é±ÆD 18 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 19 * pūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 20 * ÆD 21 * (a) Äzzɺ¤hL 22 gipÒ}j 23 AÈÇjÉCãLÌ 24 * ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD 25 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 26 * ñ·é±ÆD 27 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 28 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 29 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 30 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 31 * ÆÓ·é±ÆD 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 * 免責すること. 32 28 * 33 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨34 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI35 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF36 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»37 * ÌÓCðíÈ¢D29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 38 34 * 39 35 * @(#) $Id$ … … 57 53 58 54 #define EOBJ_NULL 0x00 59 #define EOBJ_LOCAL_NODE 0x01 /* ©m[h*/60 #define EOBJ_SYNC_REMOTE_NODE 0x02 /* ¼m[h*/61 #define EOBJ_ASYNC_REMOTE_NODE 0x04 /* ¼m[hiñ¯új*/62 #define EOBJ_DEVICE 0x08 /* @íIuWFNg*/55 #define EOBJ_LOCAL_NODE 0x01 /* 自ノード */ 56 #define EOBJ_SYNC_REMOTE_NODE 0x02 /* 他ノード */ 57 #define EOBJ_ASYNC_REMOTE_NODE 0x04 /* 他ノード(非同期) */ 58 #define EOBJ_DEVICE 0x08 /* 機器オブジェクト */ 63 59 64 60 #define EPC_NONE 0x00 65 #define EPC_RULE_SET 0x01 /* ANZX[Set */66 #define EPC_RULE_GET 0x02 /* ANZX[Get */67 #define EPC_RULE_ANNO 0x04 /* ANZX[Anno */68 #define EPC_ANNOUNCE 0x40 /* óÔÏ»Êm*/69 #define EPC_VARIABLE 0x80 /* ÂÏ·f[^*/61 #define EPC_RULE_SET 0x01 /* アクセスルール Set */ 62 #define EPC_RULE_GET 0x02 /* アクセスルール Get */ 63 #define EPC_RULE_ANNO 0x04 /* アクセスルール Anno */ 64 #define EPC_ANNOUNCE 0x40 /* 状態変化時通知 */ 65 #define EPC_VARIABLE 0x80 /* 可変長データ */ 70 66 71 67 typedef enum _echonet_enod_id 72 68 { 73 69 ENOD_NOT_MATCH_ID = -1, 74 ENOD_MULTICAST_ID = 0, /* }`LXgAhXID */75 ENOD_LOCAL_ID = 1, /* ©m[hAhXID */76 ENOD_API_ID = 2, /* API AhXID */77 ENOD_REMOTE_ID = 3, /* ¼m[hAhXID */70 ENOD_MULTICAST_ID = 0, /* マルチキャストアドレスID */ 71 ENOD_LOCAL_ID = 1, /* 自ノードアドレスID */ 72 ENOD_API_ID = 2, /* APIアドレスID */ 73 ENOD_REMOTE_ID = 3, /* 他ノードアドレスID */ 78 74 } ECN_ENOD_ID; 79 75 80 /* ECHONET Lite Ki*/76 /* ECHONET Lite規格 */ 81 77 typedef enum 82 78 { … … 84 80 } ECN_EHD1_ECL_VERSION; 85 81 86 /* d¶`®1/2 */82 /* 電文形式1/2 */ 87 83 typedef enum 88 84 { 89 ECN_EDH2_FORMAT_1 = 0x81, /* d¶`®1 */90 ECN_EDH2_FORMAT_2 = 0x82 /* d¶`®2 */85 ECN_EDH2_FORMAT_1 = 0x81, /* 電文形式1 */ 86 ECN_EDH2_FORMAT_2 = 0x82 /* 電文形式2 */ 91 87 } ECN_EHD2_FORMAT; 92 88 93 /* ECHONET Lite T[rXR[h*/89 /* ECHONET Liteサービスコード */ 94 90 typedef enum _echonet_service_code 95 91 { 96 ESV_NOP = 0, /* ( @\wèȵ) */97 ESV_SET_I = 0x60, /* vpeBl«Ývisvj*/98 ESV_SET_C = 0x61, /* vpeBl«Ývivj*/99 ESV_GET = 0x62, /* vpeBlÇÝoµv*/100 ESV_INF_REQ = 0x63, /* vpeBlÊmv*/101 ESV_SET_GET = 0x6E, /* vpeBl«ÝEÇÝoµv*/102 ESV_SET_RES = 0x71, /* vpeBl«Ý*/103 ESV_GET_RES = 0x72, /* vpeBlÇÝoµ*/104 ESV_INF = 0x73, /* vpeBlÊm*/105 ESV_INFC = 0x74, /* vpeBlÊmivj*/106 ESV_INFC_RES = 0x7A, /* vpeBlÊm*/107 ESV_SET_GET_RES = 0x7E, /* vpeBl«ÝEÇÝoµ*/108 ESV_SET_I_SNA = 0x50, /* vpeBl«ÝvsÂ*/109 ESV_SET_C_SNA = 0x51, /* vpeBl«ÝvsÂ*/110 ESV_GET_SNA = 0x52, /* vpeBlÇÝoµsÂ*/111 ESV_INF_SNA = 0x53, /* vpeBlÊmsÂ*/112 ESV_SET_GET_SNA = 0x5E /* vpeBl«ÝEÇÝoµsÂ*/92 ESV_NOP = 0, /* (機能指定なし) */ 93 ESV_SET_I = 0x60, /* プロパティ値書き込み要求(応答不要) */ 94 ESV_SET_C = 0x61, /* プロパティ値書き込み要求(応答要) */ 95 ESV_GET = 0x62, /* プロパティ値読み出し要求 */ 96 ESV_INF_REQ = 0x63, /* プロパティ値通知要求 */ 97 ESV_SET_GET = 0x6E, /* プロパティ値書き込み・読み出し要求 */ 98 ESV_SET_RES = 0x71, /* プロパティ値書き込み応答 */ 99 ESV_GET_RES = 0x72, /* プロパティ値読み出し応答 */ 100 ESV_INF = 0x73, /* プロパティ値通知 */ 101 ESV_INFC = 0x74, /* プロパティ値通知(応答要) */ 102 ESV_INFC_RES = 0x7A, /* プロパティ値通知応答 */ 103 ESV_SET_GET_RES = 0x7E, /* プロパティ値書き込み・読み出し応答 */ 104 ESV_SET_I_SNA = 0x50, /* プロパティ値書き込み要求不可応答 */ 105 ESV_SET_C_SNA = 0x51, /* プロパティ値書き込み要求不可応答 */ 106 ESV_GET_SNA = 0x52, /* プロパティ値読み出し不可応答 */ 107 ESV_INF_SNA = 0x53, /* プロパティ値通知不可応答 */ 108 ESV_SET_GET_SNA = 0x5E /* プロパティ値書き込み・読み出し不可応答 */ 113 109 } ECN_SRV_CODE; 114 110 … … 122 118 123 119 /* 124 * ECHONET Lite d¶wb_[120 * ECHONET Lite電文ヘッダー 125 121 */ 126 122 typedef struct 127 123 { 128 uint8_t ehd1; /* ECHONET Lite d¶wb_[1 ECN_EHD1_ECL_VERSION */129 uint8_t ehd2; /* ECHONET Lite d¶wb_[2 ECN_EHD2_FORMAT */130 uint16_t tid; /* gUNVID */124 uint8_t ehd1; /* ECHONET Lite電文ヘッダー1 ECN_EHD1_ECL_VERSION */ 125 uint8_t ehd2; /* ECHONET Lite電文ヘッダー2 ECN_EHD2_FORMAT */ 126 uint16_t tid; /* トランザクションID */ 131 127 } T_ECN_HDR; 132 128 133 129 /* 134 * ECHONET Lite IuWFNgR[h130 * ECHONET Liteオブジェクトコード 135 131 */ 136 132 typedef struct 137 133 { 138 uint8_t eojx1; /* NXO[vR[h*/139 uint8_t eojx2; /* NXR[h*/140 uint8_t eojx3; /* CX^XR[h*/134 uint8_t eojx1; /* クラスグループコード */ 135 uint8_t eojx2; /* クラスコード */ 136 uint8_t eojx3; /* インスタンスコード */ 141 137 } T_ECN_EOJ; 142 138 143 139 /* 144 * ECHONET Lite f[^wb_[140 * ECHONET Liteデータヘッダー 145 141 */ 146 142 typedef struct 147 143 { 148 T_ECN_EOJ seoj; /* M³ECHONET LiteIuWFNgwè*/149 T_ECN_EOJ deoj; /* èæECHONET LiteIuWFNgwè*/150 uint8_t esv; /* ECHONET Lite T[rX(ECN_SRV_CODE) */151 uint8_t opc; /* vpeB*/144 T_ECN_EOJ seoj; /* 送信元ECHONET Liteオブジェクト指定 */ 145 T_ECN_EOJ deoj; /* 相手先ECHONET Liteオブジェクト指定 */ 146 uint8_t esv; /* ECHONET Liteサービス (ECN_SRV_CODE) */ 147 uint8_t opc; /* 処理プロパティ数 */ 152 148 } T_ECN_EDATA_BODY; 153 149 154 150 /* 155 * ECHONET Lite vpeB151 * ECHONET Liteプロパティ 156 152 */ 157 153 typedef struct 158 154 { 159 uint8_t epc; /* ECHONET Lite vpeBR[h*/160 uint8_t pdc; /* EDT ÌoCg*/161 /*void *p_edt;*/ /* vpeBlf[^*/155 uint8_t epc; /* ECHONET Liteプロパティコード */ 156 uint8_t pdc; /* EDTのバイト数 */ 157 /*void *p_edt;*/ /* プロパティ値データ */ 162 158 } T_ECN_PRP; 163 159 164 160 /* 165 * ECHONET Lite f[^161 * ECHONET Liteデータ 166 162 */ 167 163 typedef struct … … 173 169 174 170 /* 175 * ECHONET Lite d¶171 * ECHONET Lite 電文 176 172 */ 177 173 typedef struct echonet_object_data … … 191 187 192 188 /* 193 * d¶ðÍCe[^[189 * 応答電文解析イテレーター 194 190 */ 195 191 typedef struct echonet_epc_enumerator 196 192 { 197 193 T_EDATA *pk_esv; 198 uint8_t count; /* ¡ÇÝæèÌubNÉ évpeB*/199 uint8_t got_ct; /* ¡ÇÝæèÌubNÅAÇÝæÁ½*/200 uint8_t next_blk_ct; /* ã±ubN*/201 uint8_t is_eof; /* I[ÉBµ½Añ0 */194 uint8_t count; /* 今読み取り中のブロックにあるプロパティ総数 */ 195 uint8_t got_ct; /* 今読み取り中のブロックで、読み取った数 */ 196 uint8_t next_blk_ct; /* 後続ブロック数 */ 197 uint8_t is_eof; /* 終端に達した時、非0 */ 202 198 int cur; 203 199 } T_ENUM_EPC; … … 206 202 207 203 /* 208 * ECHONET Lite vpeBÌÝèÖ204 * ECHONET Lite プロパティの設定関数 209 205 */ 210 206 typedef int (EPRP_SETTER)(const EPRPINIB *item, const void *src, int size, bool_t *anno); 211 207 212 208 /* 213 * ECHONET Lite vpeBÌæ¾Ö209 * ECHONET Lite プロパティの取得関数 214 210 */ 215 211 typedef int (EPRP_GETTER)(const EPRPINIB *item, void *dst, int size); 216 212 217 213 /* 218 * ECHONET Lite vpeBú»ubN214 * ECHONET Lite プロパティ初期化ブロック 219 215 */ 220 216 struct echonet_property_initialization_block 221 217 { 222 uint8_t eprpcd; /* ECHONET Lite vpeBR[h*/223 ATR eprpatr; /* ECHONET Lite vpeB®«*/224 uint8_t eprpsz; /* ECHONET Lite vpeBÌTCY*/225 intptr_t exinf; /* ECHONET Lite vpeBÌg£îñ*/226 EPRP_SETTER *eprpset; /* ECHONET Lite vpeBÌÝèÖ*/227 EPRP_GETTER *eprpget; /* ECHONET Lite vpeBÌæ¾Ö*/218 uint8_t eprpcd; /* ECHONET Lite プロパティコード */ 219 ATR eprpatr; /* ECHONET Lite プロパティ属性 */ 220 uint8_t eprpsz; /* ECHONET Lite プロパティのサイズ */ 221 intptr_t exinf; /* ECHONET Lite プロパティの拡張情報 */ 222 EPRP_SETTER *eprpset; /* ECHONET Lite プロパティの設定関数 */ 223 EPRP_GETTER *eprpget; /* ECHONET Lite プロパティの取得関数 */ 228 224 }; 229 225 230 #define TMIN_EOBJID 1 /* ECHONET Lite IuWFNgIDÌŬl*/231 232 /* 233 * ECHONET Lite IuWFNgú»ubN226 #define TMIN_EOBJID 1 /* ECHONET Lite オブジェクトIDの最小値 */ 227 228 /* 229 * ECHONET Lite オブジェクト初期化ブロック 234 230 */ 235 231 typedef struct echonet_object_initialization_block 236 232 { 237 ATR eobjatr; /* ECHONET Lite IuWFNg®«*/238 ID enodid; /* ECHONET Lite m[hvt@CIuWFNgID */239 intptr_t exinf; /* ECHONET Lite IuWFNgÌg£îñ*/240 uint8_t eojx1; /* ECHONET Lite IuWFNgÌNXO[vR[h*/241 uint8_t eojx2; /* ECHONET Lite IuWFNgÌNXR[h*/242 uint8_t eojx3; /* ECHONET Lite IuWFNgÌCX^XR[h*/243 const EPRPINIB *eprp; /* ECHONET Lite vpeBú»ubN*/244 uint_t eprpcnt; /* ECHONET Lite vpeBú»ubN*/233 ATR eobjatr; /* ECHONET Lite オブジェクト属性 */ 234 ID enodid; /* ECHONET Lite ノードプロファイルオブジェクトID */ 235 intptr_t exinf; /* ECHONET Lite オブジェクトの拡張情報 */ 236 uint8_t eojx1; /* ECHONET Lite オブジェクトのクラスグループコード */ 237 uint8_t eojx2; /* ECHONET Lite オブジェクトのクラスコード */ 238 uint8_t eojx3; /* ECHONET Lite オブジェクトのインスタンスコード */ 239 const EPRPINIB *eprp; /* ECHONET Lite プロパティ初期化ブロック */ 240 uint_t eprpcnt; /* ECHONET Lite プロパティ初期化ブロック数 */ 245 241 } EOBJINIB; 246 242 247 243 /* 248 * ECHONET Lite m[hÇubN244 * ECHONET Lite ノード管理ブロック 249 245 */ 250 246 typedef struct echonet_object_control_block 251 247 { 252 const EOBJINIB *profile; /* ECHONET Lite m[hvt@CÖÌ|C^*/253 const EOBJINIB **eobjs; /* ECHONET Lite IuWFNgXgÖÌ|C^*/254 uint_t eobjcnt; /* ECHONET Lite IuWFNg*/248 const EOBJINIB *profile; /* ECHONET Lite ノードプロファイルへのポインタ */ 249 const EOBJINIB **eobjs; /* ECHONET Lite オブジェクトリストへのポインタ */ 250 uint_t eobjcnt; /* ECHONET Lite オブジェクト数 */ 255 251 } EOBJCB; 256 252 257 253 /* 258 * ECHONET Lite m[hÆIPAhXÌÎîñubNÌè`254 * ECHONET Lite ノードとIPアドレスの対応情報ブロックの定義 259 255 */ 260 256 typedef struct echonet_node_address_block 261 257 { 262 bool_t inuse; /* gpóµ*/263 uint8_t ipaddr[16]; /* IP AhX*/258 bool_t inuse; /* 使用状況 */ 259 uint8_t ipaddr[16]; /* IPアドレス */ 264 260 } ENODADRB; 265 261 266 262 /* 267 * ECHONET Lite IuWFNgIDÌÅåliechonet_cfg.cj263 * ECHONET Lite オブジェクトIDの最大値(echonet_cfg.c) 268 264 */ 269 265 extern const ID tmax_eobjid; 270 266 271 267 /* 272 * ECHONET Lite IuWFNgú»ubNÌGAiechonet_cfg.cj268 * ECHONET Lite オブジェクト初期化ブロックのエリア(echonet_cfg.c) 273 269 */ 274 270 extern const EOBJINIB eobjinib_table[]; 275 271 276 272 /* 277 * ECHONET Lite m[hÇubNÌ273 * ECHONET Liteノード管理ブロックの数 278 274 */ 279 275 extern const int tnum_enodid; 280 276 281 277 /* 282 * ECHONET Lite IuWFNgÇubNÌGAiechonet_cfg.cj278 * ECHONET Lite オブジェクト管理ブロックのエリア(echonet_cfg.c) 283 279 */ 284 280 extern EOBJCB eobjcb_table[]; 285 281 286 282 /* 287 * ECHONET Lite m[hÆIPAhXÌÎîñÌ283 * ECHONET LiteノードとIPアドレスの対応情報の数 288 284 */ 289 285 extern const int tnum_enodadr; 290 286 291 287 /* 292 * ECHONET Lite m[hÆIPAhXÌÎîñubNÌGAiechonet_cfg.cj288 * ECHONET Lite ノードとIPアドレスの対応情報ブロックのエリア(echonet_cfg.c) 293 289 */ 294 290 extern ENODADRB enodadrb_table[]; 295 291 296 292 /* 297 * ECHONET Lite J[lIuWFNgID293 * ECHONET Lite カーネルオブジェクトID 298 294 */ 299 295 extern const ID ecn_svc_taskid; … … 306 302 307 303 /* 308 * ECHONET Lite IuWFNgÇubN©çECHONET Lite IuWFNgIDðæèo·½ßÌ}N304 * ECHONET Lite オブジェクト管理ブロックからECHONET Lite オブジェクトIDを取り出すためのマクロ 309 305 */ 310 306 #define EOBJID(p_eobjcb) ((ID)(((p_eobjcb) - eobjcb_table) + TMIN_EOBJID)) 311 307 312 308 /* 313 * ECHONET Lite IuWFNg@\Ìú»309 * ECHONET Lite オブジェクト機能の初期化 314 310 */ 315 311 extern void initialize_echonet_object(void); … … 322 318 323 319 /* 324 * ECHONET Lite T[rXJn320 * ECHONET Liteサービス処理開始 325 321 */ 326 322 ER ecn_sta_svc(); 327 323 328 324 /* 329 * ECHONET IuWFNgQÆ325 * ECHONETオブジェクト参照 330 326 */ 331 327 ER ecn_ref_eobj(ID eobjid, T_REOBJ *pk_eobj); 332 328 333 329 /* 334 * ECHONET vpeBQÆ330 * ECHONETプロパティ参照 335 331 */ 336 332 ER ecn_ref_eprp(ID eobjid, uint8_t epc, T_RPRP *pk_eprp); 337 333 338 334 /* 339 * vpeBl«Ývisvjd¶ì¬335 * プロパティ値書き込み要求(応答不要)電文作成 340 336 */ 341 337 ER ecn_esv_seti(T_EDATA **ppk_esv, ID eobjid, uint8_t epc, uint8_t pdc, const void *p_edt); 342 338 343 339 /* 344 * vpeBl«Ývivjd¶ì¬340 * プロパティ値書き込み要求(応答要)電文作成 345 341 */ 346 342 ER ecn_esv_setc(T_EDATA **ppk_esv, ID eobjid, uint8_t epc, uint8_t pdc, const void *p_edt); 347 343 348 344 /* 349 * vpeBlÇÝoµvd¶ì¬345 * プロパティ値読み出し要求電文作成 350 346 */ 351 347 ER ecn_esv_get(T_EDATA **ppk_esv, ID eobjid, uint8_t epc); 352 348 353 349 /* 354 * vpeBlÊmvd¶ì¬350 * プロパティ値通知要求電文作成 355 351 */ 356 352 ER ecn_esv_inf_req(T_EDATA **ppk_esv, ID eobjid, uint8_t epc); 357 353 358 354 /* 359 * vpeBl«ÝEÇÝoµvd¶ì¬355 * プロパティ値書き込み・読み出し要求電文作成 360 356 */ 361 357 ER ecn_esv_set_get(T_EDATA **ppk_esv, ID eobjid, uint8_t epc, uint8_t pdc, const void *p_edt); 362 358 363 359 /* 364 * vpeBl«ÝEÇÝoµvd¶ÜèÔµwè360 * プロパティ値書き込み・読み出し要求電文折り返し指定 365 361 */ 366 362 ER ecn_trn_set_get(T_EDATA *pk_esv, int *p_trn_pos); 367 363 368 364 /* 369 * vpeBl«ÝEÇÝoµvd¶I¹wè365 * プロパティ値書き込み・読み出し要求電文終了指定 370 366 */ 371 367 ER ecn_end_set_get(T_EDATA *pk_esv, int trn_pos); 372 368 373 369 /* 374 * vpeBlÊmivjd¶ì¬370 * プロパティ値通知(応答要)電文作成 375 371 */ 376 372 ER ecn_esv_infc(T_EDATA **ppk_esv, ID eobjid, ID seobjid, uint8_t sepc); 377 373 378 374 /* 379 * vd¶ÖÌvpeBwèÇÁ375 * 要求電文へのプロパティ指定追加 380 376 */ 381 377 ER ecn_add_epc(T_EDATA *pk_esv, uint8_t epc); 382 378 383 379 /* 384 * vd¶ÖÌvpeBf[^ÇÁ380 * 要求電文へのプロパティデータ追加 385 381 */ 386 382 ER ecn_add_edt(T_EDATA *pk_esv, uint8_t epc, uint8_t pdc, const void *p_edt); 387 383 388 384 /* 389 * vd¶ÌM385 * 要求電文の送信 390 386 */ 391 387 ER ecn_snd_esv(T_EDATA *pk_esv); 392 388 393 389 /* 394 * d¶ÌóMiÒ¿390 * 応答電文の受信永遠待ち 395 391 */ 396 392 ER ecn_rcv_esv(T_EDATA **ppk_esv); 397 393 398 394 /* 399 * d¶ÌóMÒ¿^CAEg è395 * 応答電文の受信待ちタイムアウトあり 400 396 */ 401 397 ER ecn_trcv_esv(T_EDATA **ppk_esv, TMO tmout); 402 398 403 399 /* 404 * d¶ÌóM|[O400 * 応答電文の受信ポーリング 405 401 */ 406 402 ER ecn_prcv_esv(T_EDATA **ppk_esv); 407 403 408 404 /* 409 * d¶Ìjü405 * 応答電文の破棄 410 406 */ 411 407 ER ecn_rel_esv(T_EDATA *pk_esv); 412 408 413 409 /* 414 * d¶ÌM³@íIuWFNgðæ¾·é410 * 応答電文の送信元機器オブジェクトを取得する 415 411 */ 416 412 ID ecn_get_eobj(T_EDATA *pk_esv); 417 413 418 414 /* 419 * d¶ðÍCe[^[ú»415 * 応答電文解析イテレーター初期化 420 416 */ 421 417 ER ecn_itr_ini(T_ENUM_EPC *pk_itr, T_EDATA *pk_esv); 422 418 423 419 /* 424 * d¶ðÍCe[^[CNg420 * 応答電文解析イテレーターインクリメント 425 421 */ 426 422 ER ecn_itr_nxt(T_ENUM_EPC *pk_itr, uint8_t *p_epc, uint8_t *p_pdc, void *p_edt); 427 423 428 424 /* 429 * d¶Ò¿ÌèÝM425 * 応答電文待ちの割り込み送信 430 426 */ 431 427 ER ecn_brk_wai(const void *p_dat, int datsz); 432 428 433 429 /* 434 * èÝf[^Ìæ¾430 * 割り込みデータの取得 435 431 */ 436 432 ER ecn_get_brk_dat(T_EDATA *pk_esv, void *p_buf, int bufsz, int *p_datsz); 437 433 438 434 /* 439 * f[^ÝèÖ435 * データ設定関数 440 436 */ 441 437 int ecn_data_prop_set(const EPRPINIB *item, const void *src, int size, bool_t *anno); 442 438 443 439 /* 444 * f[^æ¾Ö440 * データ取得関数 445 441 */ 446 442 int ecn_data_prop_get(const EPRPINIB *item, void *dst, int size); -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/ecnl_lwip/echonet.tf
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r164 r167 5 5 $ Copyright (C) 2014-2016 Cores Co., Ltd. Japan 6 6 $ 7 $ ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 8 $ Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 9 $ ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 10 $ (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 11 $ \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[ 12 $ XR[hÉÜÜêĢ鱯D 13 $ (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 14 $ pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 15 gip 16 $ Ò}j 17 AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL 18 $ Ì³ÛØKèðfÚ·é±ÆD 19 $ (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 20 $ pūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 21 $ ÆD 22 $ (a) Äzzɺ¤hL 23 gipÒ}j 24 AÈÇjÉCãLÌ 25 $ ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD 26 $ (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 27 $ ñ·é±ÆD 28 $ (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 29 $ Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 30 $ ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 31 $ RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 32 $ ÆÓ·é±ÆD 33 $ 34 $ {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨ 35 $ æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI 36 $ ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF 37 $ AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC» 38 $ ÌÓCðíÈ¢D 7 $ 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 8 $ ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 9 $ 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 10 $ (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 11 $ 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 12 $ スコード中に含まれていること. 13 $ (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 14 $ 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 15 $ 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 16 $ の無保証規定を掲載すること. 17 $ (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 18 $ 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 19 $ と. 20 $ (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 21 $ 作権表示,この利用条件および下記の無保証規定を掲載すること. 22 $ (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 23 $ 報告すること. 24 $ (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 25 $ 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 26 $ また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 27 $ 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 28 $ 免責すること. 29 $ 30 $ 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 31 $ よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 32 $ に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 33 $ アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 34 $ の責任を負わない. 39 35 $ 40 36 $ @(#) $Id$ … … 43 39 44 40 $ ===================================================================== 45 $ echonet_cfg.h ̶¬41 $ echonet_cfg.hの生成 46 42 $ ===================================================================== 47 43 … … 55 51 $NL$ 56 52 57 $ m[hXgÌì¬53 $ ノードリストの作成 58 54 $ENOD.LIST = {}$ 59 55 $LOCAL_NODE = {}$ … … 61 57 62 58 $FOREACH eobjid EOBJ.ORDER_LIST$ 63 $ // m[hvt@CIuWFNgÌê59 $ // ノードプロファイルオブジェクトの場合 64 60 $IF (EOBJ.EOBJATR[eobjid] & EOBJ_LOCAL_NODE) != 0$ 65 61 $LOCAL_NODE = APPEND(LOCAL_NODE, eobjid)$ 66 $ // @íIuWFNgÌê62 $ // 機器オブジェクトの場合 67 63 $ELIF (EOBJ.EOBJATR[eobjid] & (EOBJ_SYNC_REMOTE_NODE|EOBJ_ASYNC_REMOTE_NODE)) != 0$ 68 64 $REMOTE_NODE = APPEND(REMOTE_NODE, eobjid)$ … … 70 66 $END$ 71 67 72 $ // [JÌm[hvt@CÍP¾¯68 $ // ローカルのノードプロファイルは1つだけ 73 69 $IF LENGTH(LOCAL_NODE) != 1$ 74 70 $ERROR$Local node must be only one.$END$ … … 90 86 $eprp_list = {}$ 91 87 $prp_map_cnt = 3$ 92 $ // m[hvt@CÌê88 $ // ノードプロファイルの場合 93 89 $IF (EOBJ.EOBJATR[eobjid] & (EOBJ_LOCAL_NODE|EOBJ_SYNC_REMOTE_NODE|EOBJ_ASYNC_REMOTE_NODE)) != 0$ 94 90 $prp_map_cnt = prp_map_cnt + 5$ … … 104 100 $END$ 105 101 106 $ // m[hvt@CÌê102 $ // ノードプロファイルの場合 107 103 $IF (EOBJ.EOBJATR[eobjid] & (EOBJ_LOCAL_NODE|EOBJ_SYNC_REMOTE_NODE|EOBJ_ASYNC_REMOTE_NODE)) != 0$ 108 104 $IF (EPRP.EPRPCD[eprpno] >= 0xD3) && (EPRP.EPRPCD[eprpno] <= 0xD7)$ … … 135 131 136 132 $ ===================================================================== 137 $ echonet_cfg.c ̶¬133 $ echonet_cfg.cの生成 138 134 $ ===================================================================== 139 135 … … 145 141 146 142 $ 147 $ CN[hfBNeBui#includej143 $ インクルードディレクティブ(#include) 148 144 $ 149 145 /*$NL$ … … 155 151 156 152 $ 157 $ IuWFNgÌIDÔðÛ·éÏ153 $ オブジェクトのID番号を保持する変数 158 154 $ 159 155 $IF USE_EXTERNAL_ID$ … … 168 164 169 165 $ 170 $ ECHONET Lite vpeB166 $ ECHONET Liteプロパティ 171 167 $ 172 168 /*$NL$ … … 177 173 $INCLUDE "echonet_chk.tf"$ 178 174 179 $ ECHONET Lite vpeBú»ubN̶¬175 $ ECHONET Liteプロパティ初期化ブロックの生成 180 176 $IF LENGTH(EOBJ.ID_LIST) && LENGTH(EPRP.ID_LIST)$ 181 177 $FOREACH enodid ENOD.LIST$ … … 200 196 201 197 /*$NL$ 202 $SPC$* CX^X$NL$198 $SPC$* インスタンス数$NL$ 203 199 $SPC$*/$NL$ 204 200 $inst_list_len = LENGTH(INST_LIST)$ … … 209 205 210 206 /*$NL$ 211 $SPC$* NX$NL$212 $SPC$*/$NL$ 213 $ // m[hvt@CàÜßéi + 1j207 $SPC$* クラス数$NL$ 208 $SPC$*/$NL$ 209 $ // ノードプロファイルも含める( + 1) 214 210 $class_list_len = LENGTH(CLASS_LIST) + 1$ 215 211 const uint8_t _echonet_$EOBJ.EOBJID[enodid]$_class_count[] = {$NL$ … … 219 215 220 216 /*$NL$ 221 $SPC$* CX^XXg$NL$217 $SPC$* インスタンスリスト$NL$ 222 218 $SPC$*/$NL$ 223 219 $pos = 0$ … … 238 234 239 235 /*$NL$ 240 $SPC$* NXXg$NL$236 $SPC$* クラスリスト$NL$ 241 237 $SPC$*/$NL$ 242 238 $pos = 0$ … … 268 264 $get_map[i] = 0x00$ 269 265 $END$ 270 $ // 0x9D A0x9EA0x9FÍONɵĨ266 $ // 0x9D、0x9E、0x9FはONにしておく 271 267 $FOREACH i { 13 , 14 , 15 }$ 272 268 $anno_map[i] = anno_map[i] | 0x02$ 273 269 $get_map[i] = get_map[i] | 0x02$ 274 270 $END$ 275 $ // m[hvt@CÌê271 $ // ノードプロファイルの場合 276 272 $IF (EOBJ.EOBJATR[eobjid] & (EOBJ_LOCAL_NODE|EOBJ_SYNC_REMOTE_NODE|EOBJ_ASYNC_REMOTE_NODE)) != 0$ 277 273 $anno_map[5] = anno_map[5] | 0x20$ … … 285 281 $FOREACH eprpno EPRP.ID_LIST$ 286 282 $IF EQ(EPRP.EOBJID[eprpno], eobjid)$ 287 $ // (0x80 <= eprpcd && eprpcd <= 0xFF) ÅÈ¢êiE_PARj283 $ // (0x80 <= eprpcd && eprpcd <= 0xFF)でない場合(E_PAR) 288 284 $IF !(0x80 <= EPRP.EPRPCD[eprpno] && EPRP.EPRPCD[eprpno] <= 0xFF)$ 289 285 $ERROR EPRP.TEXT_LINE[eprpno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eprpcd", EPRP.EPRPCD[eprpno], eprpno, "ECN_DEF_EPRP")$$END$ 290 286 $END$ 291 287 292 $ // eprpatr ªimEPC_RULE_SET] | [EPC_RULE_GET] | [EPC_RULE_ANNO] | [EPC_ANNOUNCEn| [EPC_VARIABLE]jÅÈ¢êiE_RSATRj288 $ // eprpatrが([EPC_RULE_SET] | [EPC_RULE_GET] | [EPC_RULE_ANNO] | [EPC_ANNOUNCE]| [EPC_VARIABLE])でない場合(E_RSATR) 293 289 $IF (EPRP.EPRPATR[eprpno] & ~(EPC_RULE_SET|EPC_RULE_GET|EPC_RULE_ANNO|EPC_ANNOUNCE|EPC_VARIABLE)) != 0$ 294 290 $ERROR EPRP.TEXT_LINE[eprpno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eprpatr", EPRP.EPRPATR[eprpno], eprpno, "ECN_DEF_EPRP")$$END$ 295 291 $END$ 296 292 297 $ // (0 <= eprpsz && eprpsz <= 255) ÅÈ¢êiE_PARj293 $ // (0 <= eprpsz && eprpsz <= 255)でない場合(E_PAR) 298 294 $IF !(0 <= EPRP.EPRPSZ[eprpno] && EPRP.EPRPSZ[eprpno] <= 255)$ 299 295 $ERROR EPRP.TEXT_LINE[eprpno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eprpsz", EPRP.EPRPSZ[eprpno], eprpno, "ECN_DEF_EPRP")$$END$ 300 296 $END$ 301 297 302 $ // vpeB}bvÉÝè298 $ // プロパティマップに設定 303 299 $pos = EPRP.EPRPCD[eprpno] & 0xF$ 304 300 $bit = (EPRP.EPRPCD[eprpno] >> 4) - 8$ … … 320 316 $END$ 321 317 322 $ // K{AiEXvpeBª é©`FbN318 $ // 必須アナウンスプロパティがあるかチェック 323 319 $must_anno_map = GetPropertyInfo(EOBJ.EOJX1[eobjid], EOBJ.EOJX2[eobjid], EPC_ANNOUNCE)$ 324 320 $i = 0$ … … 331 327 $END$ 332 328 333 $ // K{SETvpeBª é©`FbN329 $ // 必須SETプロパティがあるかチェック 334 330 $must_set_map = GetPropertyInfo(EOBJ.EOJX1[eobjid], EOBJ.EOJX2[eobjid], EPC_RULE_SET)$ 335 331 $i = 0$ … … 342 338 $END$ 343 339 344 $ // K{GETvpeBª é©`FbN340 $ // 必須GETプロパティがあるかチェック 345 341 $must_get_map = GetPropertyInfo(EOBJ.EOJX1[eobjid], EOBJ.EOJX2[eobjid], EPC_RULE_GET)$ 346 342 $i = 0$ … … 354 350 355 351 /*$NL$ 356 $SPC$* AiEXvpeB}bv$NL$352 $SPC$* アナウンスプロパティマップ$NL$ 357 353 $SPC$*/$NL$ 358 354 $anno_list = LSORT(anno_list, "compare")$ … … 375 371 376 372 /*$NL$ 377 $SPC$* SET vpeB}bv$NL$373 $SPC$* SETプロパティマップ$NL$ 378 374 $SPC$*/$NL$ 379 375 $set_list = LSORT(set_list, "compare")$ … … 396 392 397 393 /*$NL$ 398 $SPC$* GET vpeB}bv$NL$394 $SPC$* GETプロパティマップ$NL$ 399 395 $SPC$*/$NL$ 400 396 $get_list = LSORT(get_list, "compare")$ … … 417 413 418 414 /*$NL$ 419 $SPC$* vpeBè`$NL$415 $SPC$* プロパティ定義$NL$ 420 416 $SPC$*/$NL$ 421 417 const EPRPINIB _echonet_$EOBJ.EOBJID[eobjid]$_eprpinib_table[TNUM_$EOBJ.EOBJID[eobjid]$_EPRPNO] = {$NL$ 422 418 $FOREACH eprpno eprp_list$ 423 $ // ECHONET Lite vpeBú»ubN419 $ // ECHONET Liteプロパティ初期化ブロック 424 420 $TAB${ ($EPRP.EPRPCD[eprpno]$), ($EPRP.EPRPATR[eprpno]$), ($EPRP.EPRPSZ[eprpno]$), ($EPRP.EXINF[eprpno]$), ($EPRP.EPRPSET[eprpno]$), ($EPRP.EPRPGET[eprpno]$) },$NL$ 425 421 $END$ 426 $ // óÔAiEXvpeB}bv422 $ // 状態アナウンスプロパティマップ 427 423 $TAB${ (0x9D), (EPC_RULE_GET), $FORMAT("0x%1$x" , +anno_len)$, (intptr_t)_echonet_$EOBJ.EOBJID[eobjid]$_anno_prpmap, ((EPRP_SETTER *)NULL), ((EPRP_GETTER *)ecn_data_prop_get) },$NL$ 428 $ // Set vpeB}bv424 $ // Setプロパティマップ 429 425 $TAB${ (0x9E), (EPC_RULE_GET), $FORMAT("0x%1$x" , +set_len)$, (intptr_t)_echonet_$EOBJ.EOBJID[eobjid]$_set_prpmap, ((EPRP_SETTER *)NULL), ((EPRP_GETTER *)ecn_data_prop_get) },$NL$ 430 $ // Get vpeB}bv426 $ // Getプロパティマップ 431 427 $TAB${ (0x9F), (EPC_RULE_GET), $FORMAT("0x%1$x" , +get_len)$, (intptr_t)_echonet_$EOBJ.EOBJID[eobjid]$_get_prpmap, ((EPRP_SETTER *)NULL), ((EPRP_GETTER *)ecn_data_prop_get) } 432 $ // m[hvt@CÌê428 $ // ノードプロファイルの場合 433 429 $IF (EOBJ.EOBJATR[eobjid] & (EOBJ_LOCAL_NODE|EOBJ_SYNC_REMOTE_NODE|EOBJ_ASYNC_REMOTE_NODE)) != 0$ 434 430 ,$NL$ 435 $ // CX^X431 $ // インスタンス数 436 432 $TAB${ (0xD3), (EPC_RULE_GET), (3), (intptr_t)_echonet_$EOBJ.EOBJID[eobjid]$_inst_count, ((EPRP_SETTER *)NULL), ((EPRP_GETTER *)ecn_data_prop_get) },$NL$ 437 $ // NX433 $ // クラス数 438 434 $TAB${ (0xD4), (EPC_RULE_GET), (2), (intptr_t)_echonet_$EOBJ.EOBJID[eobjid]$_class_count, ((EPRP_SETTER *)NULL), ((EPRP_GETTER *)ecn_data_prop_get) },$NL$ 439 $ // CX^XXgÊm435 $ // インスタンスリスト通知 440 436 $TAB${ (0xD5), (EPC_RULE_ANNO), sizeof(_echonet_$EOBJ.EOBJID[eobjid]$_inst_list), (intptr_t)_echonet_$EOBJ.EOBJID[eobjid]$_inst_list, ((EPRP_SETTER *)NULL), ((EPRP_GETTER *)ecn_data_prop_get) },$NL$ 441 $ // CX^XXgS437 $ // インスタンスリストS 442 438 $TAB${ (0xD6), (EPC_RULE_GET), sizeof(_echonet_$EOBJ.EOBJID[eobjid]$_inst_list), (intptr_t)_echonet_$EOBJ.EOBJID[eobjid]$_inst_list, ((EPRP_SETTER *)NULL), ((EPRP_GETTER *)ecn_data_prop_get) },$NL$ 443 $ // NXXgS439 $ // クラスリストS 444 440 $TAB${ (0xD7), (EPC_RULE_GET), sizeof(_echonet_$EOBJ.EOBJID[eobjid]$_class_list), (intptr_t)_echonet_$EOBJ.EOBJID[eobjid]$_class_list, ((EPRP_SETTER *)NULL), ((EPRP_GETTER *)ecn_data_prop_get) }$NL$ 445 441 $ELSE$ … … 455 451 456 452 $ 457 $ ECHONET Lite IuWFNg453 $ ECHONET Liteオブジェクト 458 454 $ 459 455 /*$NL$ … … 462 458 $NL$ 463 459 464 $ ECHONET Lite IuWFNgIDÔÌÅål460 $ ECHONET LiteオブジェクトID番号の最大値 465 461 const ID _echonet_tmax_eobjid = (TMIN_EOBJID + TNUM_EOBJID - 1);$NL$ 466 462 $NL$ 467 463 468 $ ECHONET Lite IuWFNgú»ubN̶¬464 $ ECHONET Liteオブジェクト初期化ブロックの生成 469 465 $IF LENGTH(EOBJ.ID_LIST)$ 470 466 const EOBJINIB _echonet_eobjinib_table[TNUM_EOBJID] = {$NL$ 471 467 $JOINEACH eobjid EOBJ.ID_LIST ",\n"$ 472 $ // eobjatr ªimEOBJ_LOCAL_NODE] | [EOBJ_SYNC_REMOTE_NODE] | [EOBJ_ASYNC_REMOTE_NODE] | [EOBJ_DEVICEnjÅÈ¢êiE_RSATRj468 $ // eobjatrが([EOBJ_LOCAL_NODE] | [EOBJ_SYNC_REMOTE_NODE] | [EOBJ_ASYNC_REMOTE_NODE] | [EOBJ_DEVICE])でない場合(E_RSATR) 473 469 $IF (EOBJ.EOBJATR[eobjid] & ~(EOBJ_LOCAL_NODE|EOBJ_SYNC_REMOTE_NODE|EOBJ_ASYNC_REMOTE_NODE|EOBJ_DEVICE)) != 0$ 474 470 $ERROR EOBJ.TEXT_LINE[eobjid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eobjatr", EOBJ.EOBJATR[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$ 475 471 $END$ 476 472 477 $ // m[hvt@CIuWFNgÌê473 $ // ノードプロファイルオブジェクトの場合 478 474 $IF (EOBJ.EOBJATR[eobjid] & (EOBJ_LOCAL_NODE|EOBJ_SYNC_REMOTE_NODE|EOBJ_ASYNC_REMOTE_NODE)) != 0$ 479 $ // (enodid == EOBJ_NULL) ÅÈ¢êiE_PARj475 $ // (enodid == EOBJ_NULL)でない場合(E_PAR) 480 476 $IF !EQ(EOBJ.ENODID[eobjid], EOBJ_NULL)$ 481 477 $ERROR EOBJ.TEXT_LINE[eobjid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "enodid", EOBJ.ENODID[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$ 482 478 $END$ 483 479 484 $ // (eojx1 == EOJ_X1_PROFILE) ÅÈ¢êiE_PARj480 $ // (eojx1 == EOJ_X1_PROFILE)でない場合(E_PAR) 485 481 $IF EOBJ.EOJX1[eobjid] != EOJ_X1_PROFILE$ 486 482 $ERROR EOBJ.TEXT_LINE[eobjid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eojx1", EOBJ.EOJX1[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$ 487 483 $END$ 488 484 489 $ // (eojx2 == EOJ_X2_NODE_PROFILE) ÅÈ¢êiE_PARj485 $ // (eojx2 == EOJ_X2_NODE_PROFILE)でない場合(E_PAR) 490 486 $IF EOBJ.EOJX2[eobjid] != EOJ_X2_NODE_PROFILE$ 491 487 $ERROR EOBJ.TEXT_LINE[eobjid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eojx2", EOBJ.EOJX2[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$ 492 488 $END$ 493 489 494 $ // (1 <= eojx3 && eojx3 <= 2) ÅÈ¢êiE_PARj490 $ // (1 <= eojx3 && eojx3 <= 2)でない場合(E_PAR) 495 491 $IF !(1 <= EOBJ.EOJX3[eobjid] && EOBJ.EOJX3[eobjid] <= 2)$ 496 492 $ERROR EOBJ.TEXT_LINE[eobjid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eojx3", EOBJ.EOJX3[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$ 497 493 $END$ 498 $ // @íIuWFNgÌê499 $ELSE$ 500 $ // (enodid != EOBJ_NULL) ÅÈ¢êiE_PARj494 $ // 機器オブジェクトの場合 495 $ELSE$ 496 $ // (enodid != EOBJ_NULL)でない場合(E_PAR) 501 497 $IF EQ(EOBJ.ENODID[eobjid], EOBJ_NULL)$ 502 498 $ERROR EOBJ.TEXT_LINE[eobjid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "enodid", EOBJ.ENODID[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$ 503 499 $END$ 504 500 505 $ // (0 <= eojx1 && eojx1 <= 255) ÅÈ¢êiE_PARj501 $ // (0 <= eojx1 && eojx1 <= 255)でない場合(E_PAR) 506 502 $IF !(0 <= EOBJ.EOJX1[eobjid] && EOBJ.EOJX1[eobjid] <= 255)$ 507 503 $ERROR EOBJ.TEXT_LINE[eobjid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eojx1", EOBJ.EOJX1[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$ 508 504 $END$ 509 505 510 $ // (0 <= eojx2 && eojx2 <= 255) ÅÈ¢êiE_PARj506 $ // (0 <= eojx2 && eojx2 <= 255)でない場合(E_PAR) 511 507 $IF !(0 <= EOBJ.EOJX2[eobjid] && EOBJ.EOJX2[eobjid] <= 255)$ 512 508 $ERROR EOBJ.TEXT_LINE[eobjid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eojx2", EOBJ.EOJX2[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$ 513 509 $END$ 514 510 515 $ // (0 <= eojx3 && eojx3 <= 255) ÅÈ¢êiE_PARj511 $ // (0 <= eojx3 && eojx3 <= 255)でない場合(E_PAR) 516 512 $IF !(0 <= EOBJ.EOJX3[eobjid] && EOBJ.EOJX3[eobjid] <= 255)$ 517 513 $ERROR EOBJ.TEXT_LINE[eobjid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "eojx3", EOBJ.EOJX3[eobjid], eobjid, "ECN_CRE_EOBJ")$$END$ … … 519 515 $END$ 520 516 521 $ // ECHONET Lite IuWFNgú»ubN517 $ // ECHONET Liteオブジェクト初期化ブロック 522 518 $TAB${ ($EOBJ.EOBJATR[eobjid]$), ($EOBJ.ENODID[eobjid]$), ($EOBJ.EXINF[eobjid]$), ($EOBJ.EOJX1[eobjid]$), ($EOBJ.EOJX2[eobjid]$), ($EOBJ.EOJX3[eobjid]$), _echonet_$EOBJ.EOBJID[eobjid]$_eprpinib_table, TNUM_$EOBJ.EOBJID[eobjid]$_EPRPNO } 523 519 $END$$NL$ … … 529 525 $NL$ 530 526 531 $ ECHONET Lite m[hÇubNÌ527 $ ECHONET Liteノード管理ブロックの数 532 528 const int _echonet_tnum_enodid = TNUM_ENODID;$NL$ 533 529 $NL$ 534 530 535 531 $ 536 $ ECHONET Lite m[hÇubN532 $ ECHONET Liteノード管理ブロック 537 533 $ 538 534 /*$NL$ … … 540 536 $SPC$*/$NL$ 541 537 $NL$ 542 $ ECHONET Lite m[hÆIPAhXÌÎîñubN̶¬538 $ ECHONET LiteノードとIPアドレスの対応情報ブロックの生成 543 539 $FOREACH enodid ENOD.LIST$ 544 540 $eobj_list = {}$ … … 549 545 $END$ 550 546 /*$NL$ 551 $SPC$* m[hÉ®·é@íIuWFNgÌê$NL$547 $SPC$* ノードに所属する機器オブジェクトの一覧$NL$ 552 548 $SPC$*/$NL$ 553 549 const EOBJINIB *_echonet_$EOBJ.EOBJID[enodid]$_eobjinib_table[TNUM_$EOBJ.EOBJID[enodid]$_EOBJNO] = {$NL$ … … 560 556 $IF LENGTH(ENOD.LIST)$ 561 557 /*$NL$ 562 $SPC$* ECHONET Lite m[hÇubN$NL$558 $SPC$* ECHONET Liteノード管理ブロック$NL$ 563 559 $SPC$*/$NL$ 564 560 EOBJCB _echonet_eobjcb_table[TNUM_ENODID] = {$NL$ … … 572 568 $NL$ 573 569 574 $ ECHONET Lite m[hÆIPAhXÌÎîñÌ570 $ ECHONET LiteノードとIPアドレスの対応情報の数 575 571 const int _echonet_tnum_enodadr = TNUM_ENODADR;$NL$ 576 572 $NL$ 577 573 578 574 $ 579 $ ECHONET Lite m[hÆIPAhXÌÎîñ575 $ ECHONET LiteノードとIPアドレスの対応情報 580 576 $ 581 577 /*$NL$ … … 583 579 $SPC$*/$NL$ 584 580 $NL$ 585 $ ECHONET Lite m[hÆIPAhXÌÎîñubN̶¬581 $ ECHONET LiteノードとIPアドレスの対応情報ブロックの生成 586 582 $IF LENGTH(EOBJ.ID_LIST)$ 587 583 ENODADRB _echonet_enodadrb_table[TNUM_ENODADR] = {$NL$ … … 606 602 607 603 $ 608 $ ECHONET Lite J[lIuWFNgID604 $ ECHONET Lite カーネルオブジェクトID 609 605 $ 610 606 const ID _echonet_ecn_svc_taskid = ECHONET_SVC_TASK;$NL$ -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/ecnl_lwip/echonet_agent.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; charset=SHIFT_JIS
r164 r167 4 4 * Copyright (C) 2015 Cores Co., Ltd. Japan 5 5 * 6 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 7 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 8 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 9 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 10 * \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[ 11 * XR[hÉÜÜêĢ鱯D 12 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 13 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 14 gip 15 * Ò}j 16 AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL 17 * Ì³ÛØKèðfÚ·é±ÆD 18 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 19 * pūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 20 * ÆD 21 * (a) Äzzɺ¤hL 22 gipÒ}j 23 AÈÇjÉCãLÌ 24 * ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD 25 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 26 * ñ·é±ÆD 27 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 28 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 29 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 30 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 31 * ÆÓ·é±ÆD 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 * 免責すること. 32 28 * 33 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨34 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI35 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF36 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»37 * ÌÓCðíÈ¢D29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 38 34 * 39 35 * @(#) $Id$ … … 41 37 42 38 /* 43 * ECHONET Lite ®I¶¬m[h39 * ECHONET Lite 動的生成ノード 44 40 */ 45 41 … … 181 177 182 178 /* 183 * L 184 [Ìú» 179 * キューの初期化 185 180 * 186 * p_queueÉÍL 187 [wb_ðwè·éD 181 * p_queueにはキューヘッダを指定する. 188 182 */ 189 183 Inline void … … 198 192 199 193 /* 200 * L 201 [ÌOGgÖÌ}ü 194 * キューの前エントリへの挿入 202 195 * 203 * p_queueÌOÉp_entryð}ü·éDp_queueÉL 204 [wb_ðwèµ½ê 205 * ÉÍCL 206 [ÌöÉp_entryð}ü·é±ÆÉÈéD 196 * p_queueの前にp_entryを挿入する.p_queueにキューヘッダを指定した場 197 * 合には,キューの末尾にp_entryを挿入することになる. 207 198 */ 208 199 Inline void … … 220 211 221 212 /* 222 * GgÌí213 * エントリの削除 223 214 * 224 * p_entryðL 225 [©çí·éD 215 * p_entryをキューから削除する. 226 216 */ 227 217 Inline void … … 336 326 int i = eobjid; 337 327 338 /* IuWFNgID©çÀÌðæ¾*/328 /* オブジェクトIDから実体を取得 */ 339 329 i -= (tmax_eobjid + 1); 340 330 if ((i < 0) … … 347 337 return false; 348 338 349 /* IuWFNgÌEOJðRs[*/339 /* オブジェクトのEOJをコピー */ 350 340 memcpy(eoj, &buf->obj.inib.eojx1, sizeof(*eoj)); 351 341 352 /* ®·ém[hÌIuWFNgIDðæ¾*/342 /* 所属するノードのオブジェクトIDを取得 */ 353 343 if(buf->obj.inib.enodid == 0) 354 344 i = buf->obj.eobjId; … … 362 352 } 363 353 364 /* m[hIDðæ¾*/354 /* ノードIDを取得 */ 365 355 buf = &agent->blockes[i]; 366 356 *enodid = buf->node.enodId; … … 403 393 T_ECN_EOJ *eoj, *end; 404 394 405 // vpeBÊm©æ¾ÅA395 // プロパティ通知か取得応答で、 406 396 switch (esv->hdr.edata.esv) { 407 397 case ESV_GET_RES: … … 413 403 } 414 404 415 // m[hvt@C¶Ìê405 // ノードプロファイル宛の場合 416 406 eoj = &esv->hdr.edata.seoj; 417 407 if ((eoj->eojx1 != EOJ_X1_PROFILE) || (eoj->eojx2 != EOJ_X2_NODE_PROFILE) … … 426 416 while (ecn_itr_nxt(&enm, &epc, &pdc, &edt) == E_OK) { 427 417 switch (epc) { 428 // CX^XXgÊmÌê418 // インスタンスリスト通知の場合 429 419 case 0xD5: 430 // ©m[hCX^XXgrÊmÌê420 // 自ノードインスタンスリストS通知の場合 431 421 case 0xD6: 432 // TCYªíÈ¢ê422 // サイズが合わない場合 433 423 if (pdc != (1 + edt[0] * sizeof(T_ECN_EOJ))) 434 424 return NULL; … … 726 716 ecn_obj_t *sobj; 727 717 728 /* ÃIÉè`³ê½M³Ìê*/718 /* 静的に定義された送信元の場合 */ 729 719 if ((*ppk_snod != NULL) && (*ppk_snod)->eobjs != NULL) { 730 /* µÈ¢*/720 /* 処理しない */ 731 721 return; 732 722 } … … 734 724 snod = ecn_agent_find_node2(*ppk_snod); 735 725 736 /* M³ðmçÈ©Á½ç*/726 /* 送信元を知らなかったら */ 737 727 if (snod == NULL) { 738 /* M³Ìm[hîñðVKÉì¬*/728 /* 送信元のノード情報を新規に作成 */ 739 729 snod = ecn_agent_create_node(agent, esv); 740 730 if (snod == NULL) … … 744 734 sobj = ecn_agent_find_obj2(snod, *ppk_sobj); 745 735 746 /* m[hvt@CÌê*/736 /* ノードプロファイルの場合 */ 747 737 if ((esv->hdr.edata.seoj.eojx1 == EOJ_X1_PROFILE) 748 738 && (esv->hdr.edata.seoj.eojx2 == EOJ_X2_NODE_PROFILE)) { 749 739 sobj = &snod->base; 750 740 } 751 /* @íIuWFNgÌê*/741 /* 機器オブジェクトの場合 */ 752 742 else { 753 743 sobj = ecn_agent_find_eobj(&snod->eobj, esv->hdr.edata.seoj); … … 794 784 ecn_obj_t *obj = node->current; 795 785 796 // vpeBlÇÝoµv786 // プロパティ値読み出し要求 797 787 ecn_esv_get(&esv, obj->eobjId, 0x9E); 798 788 ecn_snd_esv(esv); … … 807 797 ecn_obj_t *obj = node->current; 808 798 809 // vpeBlÇÝoµv799 // プロパティ値読み出し要求 810 800 ecn_esv_get(&esv, obj->eobjId, 0x9F); 811 801 ecn_snd_esv(esv); … … 820 810 ecn_obj_t *obj = node->current; 821 811 822 // vpeBlÇÝoµv812 // プロパティ値読み出し要求 823 813 ecn_esv_get(&esv, obj->eobjId, 0x9D); 824 814 ecn_snd_esv(esv); … … 834 824 ecn_device_t *device; 835 825 836 /* obj ªwè³êĢȢê*/826 /* objが指定されていない場合 */ 837 827 if(obj == NULL){ 838 /* ±Ìm[hðÔ·*/828 /* このノードを返す */ 839 829 node->current = &node->base; 840 830 return; 841 831 } 842 /* m[hÌê*/832 /* ノードの場合 */ 843 833 else if((obj->inib.eojx1 == EOJ_X1_PROFILE) && (obj->inib.eojx2 == EOJ_X2_NODE_PROFILE)){ 844 834 node = (ecn_node_t *)obj; 845 835 846 /* zºÌ@íðÔ·*/836 /* 配下の機器を返す */ 847 837 queue = node->devices.p_next; 848 838 device = (ecn_device_t *)cast_obj(queue); 849 839 } 850 /* @íÌê*/840 /* 機器の場合 */ 851 841 else{ 852 /* Ì@íðÔ·*/842 /* 次の機器を返す */ 853 843 node = ((ecn_device_t *)obj)->node; 854 844 queue = cast_queue(obj)->p_next; … … 856 846 } 857 847 858 /* »Ì@íªö¾Á½ê*/848 /* その機器が末尾だった場合 */ 859 849 if(&node->devices == queue){ 860 850 node->current = NULL; … … 985 975 bool_t has = false; 986 976 987 /* m[hÌêÍCX^XXgÊmÆ©m[hCX^XXgrÊmðK{Åó¯æé*/977 /* ノードの場合はインスタンスリスト通知と自ノードインスタンスリストS通知を必須で受け取る */ 988 978 if ((fp_obj->enodid == 0) && ((fa_epc == 0xD5) || (fa_epc == 0xD6))) 989 979 has = true; … … 1019 1009 1020 1010 switch (item->eprpcd) { 1021 /* CX^XXgÊmÌê*/1011 /* インスタンスリスト通知の場合 */ 1022 1012 case 0xD5: 1023 /* ©m[hCX^XXgrÊmÌê*/1013 /* 自ノードインスタンスリストS通知の場合 */ 1024 1014 case 0xD6: 1025 1015 if ((node != NULL) && (node->state == ecn_node_state_idle)) { … … 1039 1029 } 1040 1030 break; 1041 /* ÊmvpeB}bvÌê*/1031 /* 通知プロパティマップの場合 */ 1042 1032 case 0x9D: 1043 1033 eprpcnt = edt[0]; 1044 1034 1045 1035 if (eprpcnt < 16) { 1046 /* TCY`FbN*/1036 /* サイズチェック */ 1047 1037 if (eprpcnt + 1 != size) 1048 1038 return 0; … … 1052 1042 } 1053 1043 else { 1054 /* TCY`FbN*/1044 /* サイズチェック */ 1055 1045 if (size != 17) 1056 1046 return 0; … … 1061 1051 sobj->pmapFlag |= PMAP_FLAG_ANNO; 1062 1052 break; 1063 /* SET vpeB}bvÌê*/1053 /* SETプロパティマップの場合 */ 1064 1054 case 0x9E: 1065 1055 eprpcnt = edt[0]; 1066 1056 1067 1057 if (eprpcnt < 16) { 1068 /* TCY`FbN*/1058 /* サイズチェック */ 1069 1059 if (eprpcnt + 1 != size) 1070 1060 return 0; … … 1074 1064 } 1075 1065 else { 1076 /* TCY`FbN*/1066 /* サイズチェック */ 1077 1067 if (size != 17) 1078 1068 return 0; … … 1083 1073 sobj->pmapFlag |= PMAP_FLAG_SET; 1084 1074 break; 1085 /* GET vpeB}bvÌê*/1075 /* GETプロパティマップの場合 */ 1086 1076 case 0x9F: 1087 1077 eprpcnt = edt[0]; 1088 1078 1089 1079 if (eprpcnt < 16) { 1090 /* TCY`FbN*/1080 /* サイズチェック */ 1091 1081 if (eprpcnt + 1 != size) 1092 1082 return 0; … … 1096 1086 } 1097 1087 else { 1098 /* TCY`FbN*/1088 /* サイズチェック */ 1099 1089 if (size != 17) 1100 1090 return 0; -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/ecnl_lwip/echonet_agent.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=SHIFT_JIS
r164 r167 4 4 * Copyright (C) 2015 Cores Co., Ltd. Japan 5 5 * 6 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 7 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 8 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 9 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 10 * \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[ 11 * XR[hÉÜÜêĢ鱯D 12 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 13 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 14 gip 15 * Ò}j 16 AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL 17 * Ì³ÛØKèðfÚ·é±ÆD 18 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 19 * pūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 20 * ÆD 21 * (a) Äzzɺ¤hL 22 gipÒ}j 23 AÈÇjÉCãLÌ 24 * ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD 25 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 26 * ñ·é±ÆD 27 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 28 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 29 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 30 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 31 * ÆÓ·é±ÆD 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 * 免責すること. 32 28 * 33 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨34 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI35 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF36 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»37 * ÌÓCðíÈ¢D29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 38 34 * 39 35 * @(#) $Id$ … … 41 37 42 38 /* 43 * ECHONET Lite ®I¶¬m[h39 * ECHONET Lite 動的生成ノード 44 40 */ 45 41 … … 56 52 57 53 /* 58 * L 59 [Ìf[^\¢Ìè` 54 * キューのデータ構造の定義 60 55 */ 61 56 typedef struct ecn_agent_queue { 62 57 #ifdef _DEBUG 63 struct ecn_agent_queue *p_parent; /* eL 64 [ÖÌ|C^ */ 58 struct ecn_agent_queue *p_parent; /* 親キューへのポインタ */ 65 59 #endif 66 struct ecn_agent_queue *p_next; /* GgÖÌ|C^*/67 struct ecn_agent_queue *p_prev; /* OGgÖÌ|C^*/60 struct ecn_agent_queue *p_next; /* 次エントリへのポインタ */ 61 struct ecn_agent_queue *p_prev; /* 前エントリへのポインタ */ 68 62 } ecn_agent_queue_t; 69 63 … … 77 71 EOBJINIB inib; 78 72 uint8_t pmapFlag; 79 uint8_t pmapSet[16]; /* SET vpeB}bv*/80 uint8_t pmapGet[16]; /* GET vpeB}bv*/81 uint8_t pmapAnno[16]; /* óÔÏ»ÊmvpeB}bv*/82 uint_t eprpcnt; /* ECHONET Lite vpeB*/73 uint8_t pmapSet[16]; /* SETプロパティマップ */ 74 uint8_t pmapGet[16]; /* GETプロパティマップ */ 75 uint8_t pmapAnno[16]; /* 状態変化時通知プロパティマップ */ 76 uint_t eprpcnt; /* ECHONET Lite プロパティ数 */ 83 77 } ecn_obj_t; 84 78 … … 116 110 typedef struct ecn_inm_get_device_item 117 111 { 118 ID eobjid; /* ECHONET Lite IuWFNgID */119 ID enodid; /* ECHONET Lite m[hvt@CIuWFNgID */120 uint8_t eojx1; /* ECHONET Lite IuWFNgÌNXO[vR[h*/121 uint8_t eojx2; /* ECHONET Lite IuWFNgÌNXR[h*/122 uint8_t eojx3; /* ECHONET Lite IuWFNgÌCX^XR[h*/123 ECN_ENOD_ID addrid; /* IP AhXæ¾pID */112 ID eobjid; /* ECHONET Lite オブジェクトID */ 113 ID enodid; /* ECHONET Lite ノードプロファイルオブジェクトID */ 114 uint8_t eojx1; /* ECHONET Lite オブジェクトのクラスグループコード */ 115 uint8_t eojx2; /* ECHONET Lite オブジェクトのクラスコード */ 116 uint8_t eojx3; /* ECHONET Lite オブジェクトのインスタンスコード */ 117 ECN_ENOD_ID addrid; /* IPアドレス取得用ID */ 124 118 } ecn_inm_get_device_item_t; 125 119 … … 146 140 } ecn_inm_get_device_info_res_t; 147 141 148 /* ú»*/142 /* 初期化 */ 149 143 void ecn_agent_init(void); 150 /* m[hðõ*/144 /* ノードを検索 */ 151 145 ecn_node_t *ecn_agent_find_node(ECN_ENOD_ID enodid); 152 /* @íðõ*/146 /* 機器を検索 */ 153 147 ecn_obj_t *ecn_agent_find_eobj(const EOBJCB *pk_nod, T_ECN_EOJ eoj); 154 /* IuWFNgIDðæ¾*/148 /* オブジェクトIDを取得 */ 155 149 ID ecn_agent_get_eobj(const EOBJINIB *pk_obj); 156 /* Ì@íðæ¾*/150 /* 次の機器を取得 */ 157 151 const EOBJINIB *ecn_agent_next_eobj(const EOBJCB *pk_nod, const EOBJINIB *pk_obj); 158 /* IuWFNgID©çEOJÆm[hIDðæ¾*/152 /* オブジェクトIDからEOJとノードIDを取得 */ 159 153 bool_t ecn_agent_get_eoj_enodid(ID eobjid, T_ECN_EOJ *eoj, ECN_ENOD_ID *enodid); 160 /* ^CAEglðÔ·*/154 /* タイムアウト値を返す */ 161 155 TMO ecn_agent_get_timer(); 162 /* ^C}[ÌÔðißé*/156 /* タイマーの時間を進める */ 163 157 void ecn_agent_progress(TMO interval); 164 /* ^CAEgi̽ßÌÄÑoµj*/158 /* タイムアウト処理(のための呼び出し) */ 165 159 void ecn_agent_timeout(); 166 /* àbZ[W*/160 /* 内部メッセージ処理 */ 167 161 bool_t ecn_agent_proc_int_msg(ECN_FBS_ID fbs, uint8_t cmd); 168 /* ECHONET d¶óM*/162 /* ECHONET電文受信処理 */ 169 163 void ecn_agent_proc_ecn_msg(const EOBJCB **snod, const EOBJINIB **sobj, T_EDATA *esv); 170 /* ECHONET d¶óMI¹*/164 /* ECHONET電文受信処理終了 */ 171 165 void ecn_agent_proc_ecn_msg_end(); 172 /* vpeBðæ¾*/166 /* プロパティを取得 */ 173 167 const EPRPINIB *ecn_agent_get_property(const EOBJINIB *fp_obj, uint8_t fa_epc, const EPRPINIB *item); 174 168 -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/ecnl_lwip/echonet_api.csv
-
Property svn:mime-type
set to
text/plain; charset=SHIFT_JIS
-
Property svn:mime-type
set to
-
UsbWattMeter/trunk/ecnl_lwip/echonet_asp.cfg
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r164 r167 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 6 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 7 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 8 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 9 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 10 * \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[ 11 * XR[hÉÜÜêĢ鱯D 12 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 13 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 14 gip 15 * Ò}j 16 AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL 17 * Ì³ÛØKèðfÚ·é±ÆD 18 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 19 * pūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 20 * ÆD 21 * (a) Äzzɺ¤hL 22 gipÒ}j 23 AÈÇjÉCãLÌ 24 * ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD 25 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 26 * ñ·é±ÆD 27 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 28 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 29 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 30 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 31 * ÆÓ·é±ÆD 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 * 免責すること. 32 28 * 33 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨34 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI35 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF36 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»37 * ÌÓCðíÈ¢D29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 38 34 * 39 35 * @(#) $Id$ … … 41 37 42 38 /* 43 * ECHONET Lite RtBM 44 [Vt@C 39 * ECHONET Lite コンフィギュレーションファイル 45 40 */ 46 41 … … 50 45 51 46 /* 52 * ECHONET Lite d¶ppZ}tH47 * ECHONET Lite 電文用メモリ用セマフォ 53 48 */ 54 49 CRE_SEM(ECHONET_MEM_SEMAPHORE, { TA_TPRI, 1, 1 }); 55 50 56 51 /* 57 * ECHONET Lite API p[{bNX52 * ECHONET Lite API用メールボックス 58 53 */ 59 54 CRE_MBX(ECHONET_API_MAILBOX, { TA_TFIFO, 1, NULL }); 60 55 61 56 /* 62 * ECHONET Lite T[rX^XNp[{bNX57 * ECHONET Lite サービス処理タスク用メールボックス 63 58 */ 64 59 CRE_MBX(ECHONET_SVC_MAILBOX, { TA_TFIFO, 1, NULL }); 65 60 66 61 /* 67 * ECHONET Lite T[rX^XN62 * ECHONET Lite サービス処理タスク 68 63 */ 69 64 CRE_TSK(ECHONET_SVC_TASK, { TA_HLNG, 0, echonet_task, ECHONET_TASK_PRIORITY, ECHONET_TASK_STACK_SIZE, NULL }); 70 65 71 66 /* 72 * ECHONET Lite UDP ÊMp[{bNX67 * ECHONET Lite UDP通信処理用メールボックス 73 68 */ 74 69 CRE_MBX(ECHONET_UDP_MAILBOX, { TA_TFIFO, 1, NULL }); 75 70 76 71 /* 77 * ECHONET Lite UDP ÊM^XN72 * ECHONET Lite UDP通信処理タスク 78 73 */ 79 74 CRE_TSK(ECHONET_UDP_TASK, { TA_HLNG, 0, echonet_udp_task, ECHONET_UDP_TASK_PRIORITY, ECHONET_UDP_TASK_STACK_SIZE, NULL }); -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/ecnl_lwip/echonet_chk.tf
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r164 r167 5 5 $ Copyright (C) 2014-2016 Cores Co., Ltd. Japan 6 6 $ 7 $ ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 8 $ Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 9 $ ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 10 $ (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 11 $ \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[ 12 $ XR[hÉÜÜêĢ鱯D 13 $ (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 14 $ pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 15 gip 16 $ Ò}j 17 AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL 18 $ Ì³ÛØKèðfÚ·é±ÆD 19 $ (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 20 $ pūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 21 $ ÆD 22 $ (a) Äzzɺ¤hL 23 gipÒ}j 24 AÈÇjÉCãLÌ 25 $ ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD 26 $ (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 27 $ ñ·é±ÆD 28 $ (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 29 $ Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 30 $ ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 31 $ RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 32 $ ÆÓ·é±ÆD 7 $ 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 8 $ ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 9 $ 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 10 $ (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 11 $ 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 12 $ スコード中に含まれていること. 13 $ (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 14 $ 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 15 $ 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 16 $ の無保証規定を掲載すること. 17 $ (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 18 $ 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 19 $ と. 20 $ (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 21 $ 作権表示,この利用条件および下記の無保証規定を掲載すること. 22 $ (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 23 $ 報告すること. 24 $ (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 25 $ 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 26 $ また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 27 $ 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 28 $ 免責すること. 33 29 $ 34 $ {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨35 $ æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI36 $ ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF37 $ AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»38 $ ÌÓCðíÈ¢D30 $ 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 31 $ よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 32 $ に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 33 $ アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 34 $ の責任を負わない. 39 35 $ 40 36 $ @(#) $Id$ … … 43 39 44 40 $ ===================================================================== 45 $ K{vpeBÌ`FbN41 $ 必須プロパティのチェック 46 42 $ ===================================================================== 47 43 … … 50 46 $END$ 51 47 52 $ vt@CIuWFNgX[p[NX48 $ プロファイルオブジェクトスーパークラス 53 49 $ProfileObjectSuperClass.EPC = { 0x88, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x9D, 0x9E, 0x9F }$ 54 50 $ProfileObjectSuperClass.MUST = { EPC_NONE, EPC_RULE_GET, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_RULE_GET, EPC_RULE_GET, EPC_RULE_GET }$ 55 51 56 $ m[hvt@CNX52 $ ノードプロファイルクラス 57 53 $NodeProfileClass.EPC = { 0x80, 0x82, 0x83, 0x89, 0xBF, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7 }$ 58 54 $NodeProfileClass.MUST = { EPC_RULE_GET, EPC_RULE_GET, EPC_RULE_GET, EPC_NONE, EPC_NONE, EPC_RULE_GET, EPC_RULE_GET, EPC_RULE_ANNO, EPC_RULE_GET, EPC_RULE_GET }$ 59 55 60 $ @íIuWFNgX[p[NX56 $ 機器オブジェクトスーパークラス 61 57 $DeviceSuperClass.EPC = { 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x93, 0x97, 0x98, 0x99, 0x9A, 0x9D, 0x9E, 0x9F }$ 62 58 $DeviceSuperClass.MUST = { EPC_RULE_GET, EPC_RULE_SET|EPC_RULE_GET, EPC_RULE_GET, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_RULE_GET, EPC_NONE, EPC_RULE_GET, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_NONE, EPC_RULE_GET, EPC_RULE_GET, EPC_RULE_GET }$ -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/ecnl_lwip/echonet_class.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=SHIFT_JIS
r164 r167 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 6 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 7 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 8 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 9 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 10 * \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[ 11 * XR[hÉÜÜêĢ鱯D 12 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 13 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 14 gip 15 * Ò}j 16 AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL 17 * Ì³ÛØKèðfÚ·é±ÆD 18 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 19 * pūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 20 * ÆD 21 * (a) Äzzɺ¤hL 22 gipÒ}j 23 AÈÇjÉCãLÌ 24 * ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD 25 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 26 * ñ·é±ÆD 27 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 28 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 29 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 30 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 31 * ÆÓ·é±ÆD 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 * 免責すること. 32 28 * 33 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨34 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI35 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF36 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»37 * ÌÓCðíÈ¢D29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 38 34 * 39 35 * @(#) $Id$ … … 43 39 #define ECHONET_CLASS_H 44 40 45 /* ZT[ÖA@í*/41 /* センサー関連機器 */ 46 42 #define EOJ_X1_SENSOR 0x00 47 43 48 /* ó²ÖA@í*/44 /* 空調関連機器 */ 49 45 #define EOJ_X1_AIR_CONDITIONER 0x01 50 46 51 /* ZîEÝõÖA@í*/47 /* 住宅・設備関連機器 */ 52 48 #define EOJ_X1_AMENITY 0x02 53 49 54 /* ²EÆÖA@í*/50 /* 調理・家事関連機器 */ 55 51 #define EOJ_X1_HOUSEWORK 0x03 56 52 57 /* NÖA@í*/53 /* 健康関連機器 */ 58 54 #define EOJ_X1_WELLNESS 0x04 59 55 60 /* ÇEìÖA@í*/56 /* 管理・操作関連機器 */ 61 57 #define EOJ_X1_CONTROLLER 0x05 62 58 63 /* AV ÖA@í*/59 /* AV関連機器 */ 64 60 #define EOJ_X1_AUDIO_VISUAL 0x06 65 61 66 /* vt@C*/62 /* プロファイル */ 67 63 #define EOJ_X1_PROFILE 0x0E 68 64 69 /* [U[è`*/65 /* ユーザー定義 */ 70 66 #define EOJ_X1_USER_DEFINED 0x0F 71 67 72 68 /* 73 * ZTÖA@íNXO[v*74 */ 75 /* KXRêZT*/69 * センサ関連機器クラスグループ * 70 */ 71 /* ガス漏れセンサ */ 76 72 #define EOJ_X2_GAS_LEAK_SENSOR 0x01 77 73 78 /* hÆZT*/74 /* 防犯センサ */ 79 75 #define EOJ_X2_CRIME_PREVENTION_SENSOR 0x02 80 76 81 /* ñí{^*/77 /* 非常ボタン */ 82 78 #define EOJ_X2_EMERGENCY_BUTTON 0x03 83 79 84 /* ~}pZT*/80 /* 救急用センサ */ 85 81 #define EOJ_X2_FIRST_AID_SENSOR 0x04 86 82 87 /* nkZT*/83 /* 地震センサ */ 88 84 #define EOJ_X2_EARTHQUAKE_SENSOR 0x05 89 85 90 /* RdZT*/86 /* 漏電センサ */ 91 87 #define EOJ_X2_ELECTRIC_LEAK_SENSOR 0x06 92 88 93 /* lÌmZT*/89 /* 人体検知センサ */ 94 90 #define EOJ_X2_HUMAN_DETECTION_SENSOR 0x07 95 91 96 /* qZT*/92 /* 来客センサ */ 97 93 #define EOJ_X2_VISITOR_SENSOR 0x08 98 94 99 /* ÄÑoµZT*/95 /* 呼び出しセンサ */ 100 96 #define EOJ_X2_CALL_SENSOR 0x09 101 97 102 /* IZT*/98 /* 結露センサ */ 103 99 #define EOJ_X2_CONDENSATION_SENSOR 0x0A 104 100 105 /* óCõZT*/101 /* 空気汚染センサ */ 106 102 #define EOJ_X2_AIR_POLLUTION_SENSOR 0x0B 107 103 108 /* _fZT*/104 /* 酸素センサ */ 109 105 #define EOJ_X2_OXYGEN_SENSOR 0x0C 110 106 111 /* ÆxZT*/107 /* 照度センサ */ 112 108 #define EOJ_X2_ILLUMINANCE_SENSOR 0x0D 113 109 114 /* ¹ZT*/110 /* 音センサ */ 115 111 #define EOJ_X2_SOUND_SENSOR 0x0E 116 112 117 /* ZT*/113 /* 投函センサ */ 118 114 #define EOJ_X2_MAILING_SENSOR 0x0F 119 115 120 /* d×ZT*/116 /* 重荷センサ */ 121 117 #define EOJ_X2_WEIGHT_SENSOR 0x10 122 118 123 /* ·xZT*/119 /* 温度センサ */ 124 120 #define EOJ_X2_TEMPERATURE_SENSOR 0x11 125 121 126 /* ¼xZT*/122 /* 湿度センサ */ 127 123 #define EOJ_X2_HUMIDITY_SENSOR 0x12 128 124 129 /* JZT*/125 /* 雨センサ */ 130 126 #define EOJ_X2_RAIN_SENSOR 0x13 131 127 132 /* 133 ÊZT */ 128 /* 水位センサ */ 134 129 #define EOJ_X2_WATER_LEVEL_SENSOR 0x14 135 130 136 /* C 137 ÊZT */ 131 /* 風呂水位センサ */ 138 132 #define EOJ_X2_BATH_WATER_LEVEL_SENSOR 0x15 139 133 140 /* C¦«ãªèZT*/134 /* 風呂沸き上がりセンサ */ 141 135 #define EOJ_X2_BATH_HEATING_STATUS_SENSOR 0x16 142 136 143 /* 144 RêZT */ 137 /* 水漏れセンサ */ 145 138 #define EOJ_X2_WATER_LEAK_SENSOR 0x17 146 139 147 /* 148 ÓêZT */ 140 /* 水あふれセンサ */ 149 141 #define EOJ_X2_WATER_OVERFLOW_SENSOR 0x18 150 142 151 /* ÎÐZT*/143 /* 火災センサ */ 152 144 #define EOJ_X2_FIRE_SENSOR 0x19 153 145 154 /* ^oRZT*/146 /* タバコ煙センサ */ 155 147 #define EOJ_X2_CIGARETTE_SMOKE_SENSOR 0x1A 156 148 157 /* bnQZT*/149 /* CO2センサ */ 158 150 #define EOJ_X2_CO2_SENSOR 0x1B 159 151 160 /* KXZT*/152 /* ガスセンサ */ 161 153 #define EOJ_X2_GAS_SENSOR 0x1C 162 154 163 /* unbZT*/155 /* VOCセンサ */ 164 156 #define EOJ_X2_VOC_SENSOR 0x1D 165 157 166 /* ·³ZT*/158 /* 差圧センサ */ 167 159 #define EOJ_X2_DIFFERENTIAL_PRESSURE_SENSOR 0x1E 168 160 169 /* ¬ZT*/161 /* 風速センサ */ 170 162 #define EOJ_X2_AIR_SPEED_SENSOR 0x1F 171 163 172 /* L¢ZT*/164 /* 臭いセンサ */ 173 165 #define EOJ_X2_ODOR_SENSOR 0x20 174 166 175 /* ZT*/167 /* 炎センサ */ 176 168 #define EOJ_X2_FLAME_SENSOR 0x21 177 169 178 /* dÍÊZT*/170 /* 電力量センサ */ 179 171 #define EOJ_X2_ELECTRIC_ENERGY_SENSOR 0x22 180 172 181 /* d¬ÊZT*/173 /* 電流量センサ */ 182 174 #define EOJ_X2_CURRENT_VALUE_SENSOR 0x23 183 175 184 /* õZT*/176 /* 昼光センサ */ 185 177 #define EOJ_X2_DAYLIGHT_SENSOR 0x24 186 178 187 /* 188 ¬ÊZT */ 179 /* 水流量センサ */ 189 180 #define EOJ_X2_WATER_FLOW_RATE_SENSOR 0x25 190 181 191 /* ÷®ZT*/182 /* 微動センサ */ 192 183 #define EOJ_X2_MICROMOTION_SENSOR 0x26 193 184 194 /* ÊßZT*/185 /* 通過センサ */ 195 186 #define EOJ_X2_PASSAGE_SENSOR 0x27 196 187 197 /* ݰZT*/188 /* 在床センサ */ 198 189 #define EOJ_X2_BED_PRESENCE_SENSOR 0x28 199 190 200 /* JÂZT*/191 /* 開閉センサ */ 201 192 #define EOJ_X2_OPEN_CLOSE_SENSOR 0x29 202 193 203 /* ®ÊZT*/194 /* 活動量センサ */ 204 195 #define EOJ_X2_ACTIVITY_AMOUNT_SENSOR 0x2A 205 196 206 /* lÌÊuZT*/197 /* 人体位置センサ */ 207 198 #define EOJ_X2_HUMAN_BODY_LOCATION_SENSOR 0x2B 208 199 209 /* áZT*/200 /* 雪センサ */ 210 201 #define EOJ_X2_SNOW_SENSOR 0x2C 211 202 212 203 /* 213 * ó²ÖA@íNXO[v*214 */ 215 /* ÆëpGAR*/204 * 空調関連機器クラスグループ * 205 */ 206 /* 家庭用エアコン */ 216 207 #define EOJ_X2_HOME_AIR_CONDITIONER 0x30 217 208 218 /* â@*/209 /* 冷風機 */ 219 210 #define EOJ_X2_COLD_BLASTER 0x31 220 211 221 /* î@*/212 /* 扇風機 */ 222 213 #define EOJ_X2_ELECTRIC_FAN 0x32 223 214 224 /* ·Cî*/215 /* 換気扇 */ 225 216 #define EOJ_X2_VENTILATION_FAN 0x33 226 217 227 /* ó²·Cî*/218 /* 空調換気扇 */ 228 219 #define EOJ_X2_AIR_CONDITIONING_VENTILATION_FAN 0x34 229 220 230 /* óC´òí*/221 /* 空気清浄器 */ 231 222 #define EOJ_X2_AIR_CLEANER 0x35 232 223 233 /* âî*/224 /* 冷風扇 */ 234 225 #define EOJ_X2_COLD_BLAST_FAN 0x36 235 226 236 /* T[L 237 [^ */ 227 /* サーキュレータ */ 238 228 #define EOJ_X2_CIRCULATOR 0x37 239 229 240 /* ¼@*/230 /* 除湿機 */ 241 231 #define EOJ_X2_DEHUMIDIFIER 0x38 242 232 243 /* Á¼í*/233 /* 加湿器 */ 244 234 #define EOJ_X2_HUMIDIFIER 0x39 245 235 246 /* Väî*/236 /* 天井扇 */ 247 237 #define EOJ_X2_CEILING_FAN 0x3A 248 238 249 /* dC±½Â*/239 /* 電気こたつ */ 250 240 #define EOJ_X2_ELECTRIC_KOTATSU 0x3B 251 241 252 /* dC ñ©*/242 /* 電気あんか */ 253 243 #define EOJ_X2_ELECTRIC_HEATING_PAD 0x3C 254 244 255 /* dCÑz*/245 /* 電気毛布 */ 256 246 #define EOJ_X2_ELECTRIC_BLANKET 0x3D 257 247 258 /* Xg[u*/248 /* ストーブ */ 259 249 #define EOJ_X2_SPACE_HEATER 0x3E 260 250 261 /* plq[^*/251 /* パネルヒータ */ 262 252 #define EOJ_X2_PANEL_HEATER 0x3F 263 253 264 /* dCJ[ybg*/254 /* 電気カーペット */ 265 255 #define EOJ_X2_ELECTRIC_CARPET 0x40 266 256 267 /* tAq[^*/257 /* フロアヒータ */ 268 258 #define EOJ_X2_FLOOR_HEATER 0x41 269 259 270 /* dCg[í*/260 /* 電気暖房器 */ 271 261 #define EOJ_X2_ELECTRIC_HEATER 0x42 272 262 273 /* t@q[^*/263 /* ファンヒータ */ 274 264 #define EOJ_X2_FAN_HEATER 0x43 275 265 276 /* [dí*/266 /* 充電器 */ 277 267 #define EOJ_X2_BATTERY_CHARGER 0x44 278 268 279 /* ƱppbP[WGARºà@*/269 /* 業務用パッケージエアコン室内機 */ 280 270 #define EOJ_X2_PACKAGE_TYPE_COMMERCIAL_AIR_CONDITIONER_INDOOR_UNIT 0x45 281 271 282 /* ƱppbP[WGARºO@*/272 /* 業務用パッケージエアコン室外機 */ 283 273 #define EOJ_X2_PACKAGE_TYPE_COMMERCIAL_AIR_CONDITIONER_OUTDOOR_UNIT 0x46 284 274 285 /* ƱppbP[WGAR~Mjbg*/275 /* 業務用パッケージエアコン蓄熱ユニット */ 286 276 #define EOJ_X2_PACKAGE_TYPE_COMMERCIAL_AIR_CONDITIONER_THERMAL_STORAGE_UNIT 0x47 287 277 288 /* Ʊpt@RCjbg*/278 /* 業務用ファンコイルユニット */ 289 279 #define EOJ_X2_COMMERCIAL_FAN_COIL_UNIT 0x48 290 280 291 /* Ʊpó²âM¹(`[) */281 /* 業務用空調冷熱源(チラー) */ 292 282 #define EOJ_X2_COMMERCIAL_AIR_CONDITIONING_COLD_SOURCE_CHILLER 0x49 293 283 294 /* Ʊpó²·M¹({C[) */284 /* 業務用空調温熱源(ボイラー) */ 295 285 #define EOJ_X2_COMMERCIAL_AIR_CONDITIONING_HEAT_SOURCE_BOILER 0x50 296 286 297 /* Ʊpó²VAV */287 /* 業務用空調VAV */ 298 288 #define EOJ_X2_AIR_CONDITIONING_VAV_FOR_COMMERCIAL_APPLICATION 0x51 299 289 300 /* Ʊpó²GAnhOjbg*/290 /* 業務用空調エアハンドリングユニット */ 301 291 #define EOJ_X2_AIR_HANDLING_UNIT_AIR_CONDITIONING_FOR_COMMERCIAL_APPLICATION 0x52 302 292 303 /* jbgN[[*/293 /* ユニットクーラー */ 304 294 #define EOJ_X2_UNIT_COOLER 0x53 305 295 306 /* ƱpRfVOjbg*/296 /* 業務用コンデンシングユニット */ 307 297 #define EOJ_X2_CONDENSING_UNIT_FOR_COMMERCIAL_APPLICATION 0x54 308 298 309 299 /* 310 * ZîEÝõÖA@íNXO[v*311 */ 312 /* d®uCh*/300 * 住宅・設備関連機器クラスグループ * 301 */ 302 /* 電動ブラインド */ 313 303 #define EOJ_X2_ELECTRICALLY_OPERATED_SHADE 0x60 314 304 315 /* d®Vb^[*/305 /* 電動シャッター */ 316 306 #define EOJ_X2_ELECTRICALLY_OPERATED_SHUTTER 0x61 317 307 318 /* d®J[e*/308 /* 電動カーテン */ 319 309 #define EOJ_X2_ELECTRICALLY_OPERATED_CURTAIN 0x62 320 310 321 /* d®JË*/311 /* 電動雨戸 */ 322 312 #define EOJ_X2_ELECTRICALLY_OPERATED_STORM_WINDOW 0x63 323 313 324 /* d®K[W*/314 /* 電動ガレージ */ 325 315 #define EOJ_X2_ELECTRICALLY_OPERATED_DOOR 0x64 326 316 327 /* d®V*/317 /* 電動天窓 */ 328 318 #define EOJ_X2_ELECTRICALLY_OPERATED_SKYLIGHT 0x65 329 319 330 /* I[jOiúæ¯j*/320 /* オーニング(日よけ) */ 331 321 #define EOJ_X2_AWNING 0x66 332 322 333 /* U 334 íiëpj */ 323 /* 散水器(庭用) */ 335 324 #define EOJ_X2_GARDEN_SPRINKLER 0x67 336 325 337 /* U 338 íiÎÐpj */ 326 /* 散水器(火災用) */ 339 327 #define EOJ_X2_FIRE_SPRINKLER 0x68 340 328 341 /* ¬ 342 */ 329 /* 噴水 */ 343 330 #define EOJ_X2_FOUNTAIN 0x69 344 331 345 /* uÔ¦í*/332 /* 瞬間湯沸器 */ 346 333 #define EOJ_X2_INSTANTANEOUS_WATER_HEATERS 0x6A 347 334 348 /* dC· 349 í */ 335 /* 電気温水器 */ 350 336 #define EOJ_X2_ELECTRIC_WATER_HEATER 0x6B 351 337 352 /* ¾zM· 353 í */ 338 /* 太陽熱温水器 */ 354 339 #define EOJ_X2_SOLAR_WATER_HEATER 0x6C 355 340 356 /* zÂ|v*/341 /* 循環ポンプ */ 357 342 #define EOJ_X2_CIRCULATION_PUMP 0x6D 358 343 359 /* dCÖÀi· 360 ôòÖÀAg[ÖÀÈÇj */ 344 /* 電気便座(温水洗浄便座、暖房便座など) */ 361 345 #define EOJ_X2_BIDET_EQUIPPED_TOILET 0x6E 362 346 363 /* dCù*/347 /* 電気錠 */ 364 348 #define EOJ_X2_ELECTRIC_KEY 0x6F 365 349 366 /* KX³Ù*/350 /* ガス元弁 */ 367 351 #define EOJ_X2_GAS_LINE_VALVE 0x70 368 352 369 /* z[TEi*/353 /* ホームサウナ */ 370 354 #define EOJ_X2_HOME_SAUNA 0x71 371 355 372 /* uÔ®í*/356 /* 瞬間式給湯器 */ 373 357 #define EOJ_X2_HOT_WATER_GENERATOR 0x72 374 358 375 /* ºg[£@*/359 /* 浴室暖房乾燥機 */ 376 360 #define EOJ_X2_BATHROOM_DRYER 0x73 377 361 378 /* z[Gx[^*/362 /* ホームエレベータ */ 379 363 #define EOJ_X2_HOME_ELEVATOR 0x74 380 364 381 /* d®ÔdØè*/365 /* 電動間仕切り */ 382 366 #define EOJ_X2_ELECTRICALLY_OPERATED_ROOM_DIVIDER 0x75 383 367 384 /* 385 ½gXt@ */ 368 /* 水平トランスファ */ 386 369 #define EOJ_X2_HORIZONTAL_TRANSFER 0x76 387 370 388 /* d®¨±µ*/371 /* 電動物干し */ 389 372 #define EOJ_X2_ELECTRICALLY_OPERATED_CLOTHES_DRYING_POLE 0x77 390 373 391 /* ò» 392 */ 374 /* 浄化槽 */ 393 375 #define EOJ_X2_SEPTIC_TANK 0x78 394 376 395 /* Zîp¾zõd*/377 /* 住宅用太陽光発電 */ 396 378 #define EOJ_X2_HOME_SOLAR_POWER_GENERATION 0x79 397 379 398 /* â· 399 M¹@ */ 380 /* 冷温水熱源機 */ 400 381 #define EOJ_X2_COLD_AND_HOT_WATER_HEAT_SOURCE_EQUIPMENT 0x7A 401 382 402 /* °g[*/383 /* 床暖房 */ 403 384 #define EOJ_X2_FLOOR_HEATING 0x7B 404 385 405 /* R¿dr*/386 /* 燃料電池 */ 406 387 #define EOJ_X2_FUEL_CELL 0x7C 407 388 408 /* ~dr*/389 /* 蓄電池 */ 409 390 #define EOJ_X2_STORAGE_BATTERY 0x7D 410 391 411 /* dC©®Ô[údVXe*/392 /* 電気自動車充放電システム */ 412 393 #define EOJ_X2_ELECTRIC_VEHICLE 0x7E 413 394 414 /* dÍÊ[^*/395 /* 電力量メータ */ 415 396 #define EOJ_X2_ELECTRIC_ENERGY_METER 0x80 416 397 417 /* 418 ¬Ê[^ */ 398 /* 水流量メータ */ 419 399 #define EOJ_X2_WATER_FLOW_METER 0x81 420 400 421 /* KX[^*/401 /* ガスメータ */ 422 402 #define EOJ_X2_GAS_METER 0x82 423 403 424 /* LP KX[^*/404 /* LPガスメータ */ 425 405 #define EOJ_X2_LP_GAS_METERS 0x83 426 406 427 /* v*/407 /* 時計 */ 428 408 #define EOJ_X2_CLOCK 0x84 429 409 430 /* ©®hA*/410 /* 自動ドア */ 431 411 #define EOJ_X2_AUTOMATIC_DOOR 0x85 432 412 433 /* ƱpGx[^*/413 /* 業務用エレベータ */ 434 414 #define EOJ_X2_COMMERCIAL_ELEVATOR 0x86 435 415 436 /* ªdÕ[^O*/416 /* 分電盤メータリング */ 437 417 #define EOJ_X2_DISTRIBUTION_PANEL_METERING 0x87 438 418 439 /* X}[gdÍÊ[^*/419 /* スマート電力量メータ */ 440 420 #define EOJ_X2_SMART_ELECTRIC_ENERGY_METER 0x88 441 421 442 /* X}[gKX[^*/422 /* スマートガスメータ */ 443 423 #define EOJ_X2_SMART_GAS_METER 0x89 444 424 445 /* êÊÆ¾*/425 /* 一般照明 */ 446 426 #define EOJ_X2_GENERAL_LIGHTING_CLASS 0x90 447 427 448 /* ñíÆ¾*/428 /* 非常照明 */ 449 429 #define EOJ_X2_EMERGENCY_LIGHTING 0x99 450 430 451 /* Ýõƾ*/431 /* 設備照明 */ 452 432 #define EOJ_X2_EQUIPMENT_LIGHT 0x9D 453 433 454 /* uU[*/434 /* ブザー */ 455 435 #define EOJ_X2_BUZZER 0xA0 456 436 457 437 /* 458 * ²EÆÖA@íNXO[v*459 */ 460 /* R[q[[J*/438 * 調理・家事関連機器クラスグループ * 439 */ 440 /* コーヒーメーカ */ 461 441 #define EOJ_X2_COFFEE_MACHINE 0xB0 462 442 463 /* R[q[~*/443 /* コーヒーミル */ 464 444 #define EOJ_X2_COFFEE_MILL 0xB1 465 445 466 /* dC|bg*/446 /* 電気ポット */ 467 447 #define EOJ_X2_ELECTRIC_HOT_WATER_POT 0xB2 468 448 469 /* dC±ñë*/449 /* 電気こんろ */ 470 450 #define EOJ_X2_ELECTRIC_STOVE 0xB3 471 451 472 /* g[X^*/452 /* トースタ */ 473 453 #define EOJ_X2_TOASTER 0xB4 474 454 475 /* W 476 [TE~LT */ 455 /* ジューサ・ミキサ */ 477 456 #define EOJ_X2_JUICER_FOOD_MIXER 0xB5 478 457 479 /* t[hvZbT*/458 /* フードプロセッサ */ 480 459 #define EOJ_X2_FOOD_PROCESSOR 0xB6 481 460 482 /* ââ É*/461 /* 冷凍冷蔵庫 */ 483 462 #define EOJ_X2_REFRIGERATOR_FREEZER 0xB7 484 463 485 /* I[uW*/464 /* オーブンレンジ */ 486 465 #define EOJ_X2_COMBINATION_MICROWAVE_OVEN 0xB8 487 466 488 /* NbLOq[^*/467 /* クッキングヒータ */ 489 468 #define EOJ_X2_COOKING_HEATER 0xB9 490 469 491 /* I[u*/470 /* オーブン */ 492 471 #define EOJ_X2_OVEN 0xBA 493 472 494 /* Ñí*/473 /* 炊飯器 */ 495 474 #define EOJ_X2_RICE_COOKER 0xBB 496 475 497 /* dqW[*/476 /* 電子ジャー */ 498 477 #define EOJ_X2_ELECTRONIC_JAR 0xBC 499 478 500 /* Híô¢@*/479 /* 食器洗い機 */ 501 480 #define EOJ_X2_DISH_WASHER 0xBD 502 481 503 /* Hí£@*/482 /* 食器乾燥機 */ 504 483 #define EOJ_X2_DISH_DRYER 0xBE 505 484 506 /* dCà¿Â«@*/485 /* 電気もちつき機 */ 507 486 #define EOJ_X2_ELECTRIC_RICE_CAKE_COOKER 0xBF 508 487 509 /* Û·@*/488 /* 保温機 */ 510 489 #define EOJ_X2_KEEP_WARM_MACHINE 0xC0 511 490 512 /* ¸Ä@*/491 /* 精米機 */ 513 492 #define EOJ_X2_RICE_MILL 0xC1 514 493 515 /* ©®»p@*/494 /* 自動製パン機 */ 516 495 #define EOJ_X2_AUTOMATIC_BREAD_COOKER 0xC2 517 496 518 /* X[NbJ[*/497 /* スロークッカー */ 519 498 #define EOJ_X2_SLOW_COOKER 0xC3 520 499 521 /* dCШ@*/500 /* 電気漬物機 */ 522 501 #define EOJ_X2_ELECTRIC_PICKLES_COOKER 0xC4 523 502 524 /* ôó@*/503 /* 洗濯機 */ 525 504 #define EOJ_X2_WASHING_MACHINE 0xC5 526 505 527 /* ßÞ£@*/506 /* 衣類乾燥機 */ 528 507 #define EOJ_X2_CLOTH_DRYER 0xC6 529 508 530 /* dCAC*/509 /* 電気アイロン */ 531 510 #define EOJ_X2_ELECTRIC_IRON 0xC7 532 511 533 /* Y{vbT*/512 /* ズボンプレッサ */ 534 513 #define EOJ_X2_TROUSER_PRESS 0xC8 535 514 536 /* ÓÆñ£@*/515 /* ふとん乾燥機 */ 537 516 #define EOJ_X2_FUTON_DRYER 0xC9 538 517 539 /* ¬¨E£@*/518 /* 小物・くつ乾燥機 */ 540 519 #define EOJ_X2_SMALL_ARTICLE_SHOES_DRYER 0xCA 541 520 542 /* dC|@iZgN[iÜÞj*/521 /* 電気掃除機(セントラルクリーナ含む) */ 543 522 #define EOJ_X2_ELECTRIC_VACUUM_CLEANER 0xCB 544 523 545 /* fBX|[U*/524 /* ディスポーザ */ 546 525 #define EOJ_X2_DISPOSER 0xCC 547 526 548 /* dCáæè@*/527 /* 電気蚊取り機 */ 549 528 #define EOJ_X2_ELECTRIC_MOSQUITO_CATCHER 0xCD 550 529 551 /* ƱpV[P[X*/530 /* 業務用ショーケース */ 552 531 #define EOJ_X2_COMMERCIAL_SHOW_CASE 0xCE 553 532 554 /* Ʊpâ É*/533 /* 業務用冷蔵庫 */ 555 534 #define EOJ_X2_COMMERCIAL_REFRIGERATOR 0xCF 556 535 557 /* ƱpzbgP[X*/536 /* 業務用ホットケース */ 558 537 #define EOJ_X2_COMMERCIAL_HOT_CASE 0xD0 559 538 560 /* ƱptC[*/539 /* 業務用フライヤー */ 561 540 #define EOJ_X2_COMMERCIAL_FRYER 0xD1 562 541 563 /* ƱpdqW*/542 /* 業務用電子レンジ */ 564 543 #define EOJ_X2_COMMERCIAL_MICROWAVE_OVEN 0xD2 565 544 566 /* ôó£@*/545 /* 洗濯乾燥機 */ 567 546 #define EOJ_X2_WASHER_AND_DRYER 0xD3 568 547 569 548 /* 570 * NÖA@íNXO[v*571 */ 572 /* Ìdv*/549 * 健康関連機器クラスグループ * 550 */ 551 /* 体重計 */ 573 552 #define EOJ_X2_WEIGHING_MACHINE 0x01 574 553 575 /* Ì·v*/554 /* 体温計 */ 576 555 #define EOJ_X2_CLINICAL_THERMOMETER 0x02 577 556 578 /* ³v*/557 /* 血圧計 */ 579 558 #define EOJ_X2_BLOOD_PRESSURE_METER 0x03 580 559 581 /* lv*/560 /* 血糖値計 */ 582 561 #define EOJ_X2_BLOOD_SUGAR_METER 0x04 583 562 584 /* Ìbv*/563 /* 体脂肪計 */ 585 564 #define EOJ_X2_BODY_FAT_METER 0x05 586 565 587 566 /* 588 * ÇEìÖA@íNXO[v * 589 */ 590 /* ZL 591 AÊMp¤L®Ýèm[h */ 567 * 管理・操作関連機器クラスグループ * 568 */ 569 /* セキュア通信用共有鍵設定ノード */ 592 570 #define EOJ_X2_SECURE_COMMUNICATION_SHARED_KEY_SETUP_NODE 0xFC 593 571 594 /* XCb`iJEMA/HA[qÎj*/572 /* スイッチ(JEMA/HA端子対応) */ 595 573 #define EOJ_X2_SWITCH 0xFD 596 574 597 /* gÑ[*/575 /* 携帯端末 */ 598 576 #define EOJ_X2_PORTABLE_TERMINAL 0xFE 599 577 600 /* Rg[*/578 /* コントローラ */ 601 579 #define EOJ_X2_CONTROLLER 0xFF 602 580 603 581 /* 604 * `uÖA@íNXO[v*605 */ 606 /* fBXv[*/582 * AV関連機器クラスグループ * 583 */ 584 /* ディスプレー */ 607 585 #define EOJ_X2_DISPLAY 0x01 608 586 609 /* er*/587 /* テレビ */ 610 588 #define EOJ_X2_TELEVISION 0x02 611 589 612 590 /* 613 * vt@CNXO[v*614 */ 615 /* m[hvt@C*/591 * プロファイルクラスグループ * 592 */ 593 /* ノードプロファイル */ 616 594 #define EOJ_X2_NODE_PROFILE 0xF0 617 595 -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/ecnl_lwip/echonet_dbg.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; charset=SHIFT_JIS
r164 r167 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 6 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 7 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 8 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 9 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 10 * \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[ 11 * XR[hÉÜÜêĢ鱯D 12 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 13 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 14 gip 15 * Ò}j 16 AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL 17 * Ì³ÛØKèðfÚ·é±ÆD 18 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 19 * pūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 20 * ÆD 21 * (a) Äzzɺ¤hL 22 gipÒ}j 23 AÈÇjÉCãLÌ 24 * ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD 25 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 26 * ñ·é±ÆD 27 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 28 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 29 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 30 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 31 * ÆÓ·é±ÆD 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 * 免責すること. 32 28 * 33 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨34 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI35 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF36 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»37 * ÌÓCðíÈ¢D29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 38 34 * 39 35 * @(#) $Id$ … … 41 37 42 38 /* 43 * ECHONET Lite ^XN fobOoÍ39 * ECHONET Lite タスク デバッグ出力 44 40 */ 45 41 … … 72 68 static ER _ecn_dbg_wai_syslog(void); 73 69 /* 74 * syslog() obt@É]TªÅ«éÜÅÒÂ70 * syslog()バッファに余裕ができるまで待つ 75 71 */ 76 72 static ER _ecn_dbg_wai_syslog(void) … … 113 109 114 110 /* 115 * fobOoÍ116 * áFECN_DBG_PUT( "task start" );111 * デバッグ出力 112 * 例: ECN_DBG_PUT( "task start" ); 117 113 */ 118 114 int _ecn_dbg_dbgput(const char *fp_srcloc, const char *fp_form, ...) … … 142 138 #endif 143 139 144 _ECN_DBG_WAI_SYSLOG; /* syslog() obt@É]TªÅ«éÜÅÒÂ*/140 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 145 141 146 142 #ifdef SEM_ECN_DBG_PUT … … 155 151 } 156 152 157 /* ECN_ENOD_ID ̶ñÏ·*/153 /* ECN_ENOD_IDの文字列変換 */ 158 154 const char *_ecn_dbg_enod2str(ECN_ENOD_ID fa_enod_id) 159 155 { … … 203 199 204 200 /* 205 * oCi_voÍ201 * バイナリダンプ出力 206 202 */ 207 203 void _ecn_dbg_bindmp(const T_ECN_FST_BLK *buffer, size_t len) 208 204 { 209 /* static ÌæÌobt@ðØèÖ¦éÂ(2^n) */205 /* static領域のバッファを切り替える個数(2^n) */ 210 206 #define _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT (4) 211 207 /* */ … … 213 209 #ifdef _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT 214 210 #undef _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT 215 /* Z}tH(SEM_ECN_DBG_BINDMP)ªè`³êÄ¢éêAobt@ØèÖ¦ÍsvÈÌÅundef */211 /* セマフォ(SEM_ECN_DBG_BINDMP)が定義されている場合、バッファ切り替えは不要なのでundef */ 216 212 #endif 217 213 #endif 218 214 #ifndef _ECN_FBS_DBG_BINDMP_BUFLEN 219 /* obt@TCY(bindmpÌ1sªûÜéTCY) */215 /* バッファサイズ(bindmp中の1行が収まるサイズ) */ 220 216 #define _ECN_FBS_DBG_BINDMP_BUFLEN (80) 221 217 #endif 222 218 #ifdef _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT 223 /* static ÌæÌobt@ðØèÖ¦é½ßÌÇpÏ*/219 /* static領域のバッファを切り替えるための管理用変数 */ 224 220 static volatile uint8_t a_idx_vol = 0; 225 /* static ÌæÌobt@ØèÖ¦Ìæ*/221 /* static領域のバッファ切り替え領域 */ 226 222 static char a_buf_area[1 << _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT][_ECN_FBS_DBG_BINDMP_BUFLEN]; 227 223 uint8_t a_idx; 228 224 char *a_buf; 229 225 #else 230 /* static ÌæÌobt@Ìæ*/226 /* static領域のバッファ領域 */ 231 227 static char a_buf[_ECN_FBS_DBG_BINDMP_BUFLEN]; 232 228 #endif 233 const uint8_t *p = buffer; /* ÇÝæè|C^*/229 const uint8_t *p = buffer; /* 読み取りポインタ */ 234 230 int i, a_blk, a_blk_max, a_pos = 0; 235 231 const T_ECN_EDT_HDR *p_req_esv; … … 248 244 } 249 245 #ifndef ECN_DBG_BINDMP_MAXLEN 250 /* bindmp oÍÌÅåTCY*/246 /* bindmp出力の最大サイズ */ 251 247 #define ECN_DBG_BINDMP_MAXLEN 1600 252 248 #endif … … 263 259 for (a_blk = 0; p && a_blk < a_blk_max; p = buffer->lnk.p_sub[a_blk++]->payload) { 264 260 if (0 < a_blk) { 265 _ECN_DBG_WAI_SYSLOG; /* syslog() obt@É]TªÅ«éÜÅÒÂ*/261 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 266 262 syslog(LOG_NOTICE, "p_sub[%d] (0x%08X)", a_blk - 1, p); 267 263 } … … 270 266 if (i % 16 == 0) { 271 267 if (a_buf[0]) { 272 _ECN_DBG_WAI_SYSLOG; /* syslog() obt@É]TªÅ«éÜÅÒÂ*/268 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 273 269 syslog(LOG_NOTICE, "%s", a_buf); 274 270 } … … 290 286 } 291 287 if (a_buf[0]) { 292 _ECN_DBG_WAI_SYSLOG; /* syslog() obt@É]TªÅ«éÜÅÒÂ*/288 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 293 289 syslog(LOG_NOTICE, "%s", a_buf); 294 290 } … … 301 297 case ECN_MSG_ECHONET: 302 298 p_req_esv = &((T_EDATA *)buffer)->hdr; 303 _ECN_DBG_WAI_SYSLOG; /* syslog() obt@É]TªÅ«éÜÅÒÂ*/299 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 304 300 syslog(LOG_NOTICE, " sender: %d %s, target: %d %s", 305 301 buffer->hdr.sender.id, _ecn_dbg_enod2str(buffer->hdr.sender.id), 306 302 buffer->hdr.target.id, _ecn_dbg_enod2str(buffer->hdr.target.id)); 307 _ECN_DBG_WAI_SYSLOG; /* syslog() obt@É]TªÅ«éÜÅÒÂ*/303 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 308 304 syslog(LOG_NOTICE, " 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); 309 _ECN_DBG_WAI_SYSLOG; /* syslog() obt@É]TªÅ«éÜÅÒÂ*/305 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 310 306 syslog(LOG_NOTICE, " edata: 0x%06X 0x%06X 0x%02X 0x%02X (%s)", 311 307 p_req_esv->edata.seoj.eojx1 << 16 | p_req_esv->edata.seoj.eojx2 << 8 | p_req_esv->edata.seoj.eojx3, 312 308 p_req_esv->edata.deoj.eojx1 << 16 | p_req_esv->edata.deoj.eojx2 << 8 | p_req_esv->edata.deoj.eojx3, 313 309 p_req_esv->edata.esv, p_req_esv->edata.opc, _ecn_dbg_esv2str(p_req_esv->edata.esv)); 314 _ECN_DBG_WAI_SYSLOG; /* syslog() obt@É]TªÅ«éÜÅÒÂ*/310 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 315 311 syslog(LOG_NOTICE, " ecn_prp: 0x%02X 0x%02X", p_req_esv->ecn_prp.epc, p_req_esv->ecn_prp.pdc); 316 _ECN_DBG_WAI_SYSLOG; /* syslog() obt@É]TªÅ«éÜÅÒÂ*/312 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 317 313 syslog(LOG_NOTICE, " cur(blk/pos): wr %d, rd %d", 318 314 (int)buffer->hdr.wr, … … 354 350 && buffer->payload[1] == 0x81) { 355 351 p_req_esv = (const T_ECN_EDT_HDR *)&buffer->payload[0]; 356 _ECN_DBG_WAI_SYSLOG; /* syslog() obt@É]TªÅ«éÜÅÒÂ*/352 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 357 353 syslog(LOG_NOTICE, " 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); 358 _ECN_DBG_WAI_SYSLOG; /* syslog() obt@É]TªÅ«éÜÅÒÂ*/354 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 359 355 syslog(LOG_NOTICE, " edata: 0x%06X 0x%06X 0x%02X 0x%02X (%s)", 360 356 p_req_esv->edata.seoj.eojx1 << 16 | p_req_esv->edata.seoj.eojx2 << 8 | p_req_esv->edata.seoj.eojx3, 361 357 p_req_esv->edata.deoj.eojx1 << 16 | p_req_esv->edata.deoj.eojx2 << 8 | p_req_esv->edata.deoj.eojx3, 362 358 p_req_esv->edata.esv, p_req_esv->edata.opc, _ecn_dbg_esv2str(p_req_esv->edata.esv)); 363 _ECN_DBG_WAI_SYSLOG; /* syslog() obt@É]TªÅ«éÜÅÒÂ*/359 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 364 360 syslog(LOG_NOTICE, " ecn_prp: 0x%02X 0x%02X", p_req_esv->ecn_prp.epc, p_req_esv->ecn_prp.pdc); 365 361 } … … 370 366 371 367 /* 372 * ECHONET Lite T[rXR[h¶ñÏ·368 * ECHONET Liteサービスコード文字列変換 373 369 */ 374 370 const char *_ecn_dbg_esv2str(uint8_t fa_esv) 375 371 { 376 372 switch (fa_esv) { 377 case ESV_SET_I_SNA: return " vpeBl«ÝvsÂ"; /* 0x50 */378 case ESV_SET_C_SNA: return " vpeBl«ÝvsÂ"; /* 0x51 */379 case ESV_GET_SNA: return " vpeBlÇÝoµsÂ"; /* 0x52 */380 case ESV_INF_SNA: return " vpeBlÊmsÂ"; /* 0x53 */381 case ESV_SET_GET_SNA: return " vpeBl«ÝEÇÝoµsÂ"; /* 0x5E */382 case ESV_SET_I: return " vpeBl«Ývisvj"; /* 0x60 */383 case ESV_SET_C: return " vpeBl«Ývivj"; /* 0x61 */384 case ESV_GET: return " vpeBlÇÝoµv"; /* 0x62 */385 case ESV_INF_REQ: return " vpeBlÊmv"; /* 0x63 */386 case ESV_SET_GET: return " vpeBl«ÝEÇÝoµv"; /* 0x6E */387 case ESV_SET_RES: return " vpeBl«Ý"; /* 0x71 */388 case ESV_GET_RES: return " vpeBlÇÝoµ"; /* 0x72 */389 case ESV_INF: return " vpeBlÊm"; /* 0x73 */390 case ESV_INFC: return " vpeBlÊmivj"; /* 0x74 */391 case ESV_SET_GET_RES: return " vpeBl«ÝEÇÝoµ"; /* 0x7E */392 case ESV_INFC_RES: return " vpeBlÊm"; /* 0x7A */373 case ESV_SET_I_SNA: return "プロパティ値書き込み要求不可応答"; /* 0x50 */ 374 case ESV_SET_C_SNA: return "プロパティ値書き込み要求不可応答"; /* 0x51 */ 375 case ESV_GET_SNA: return "プロパティ値読み出し不可応答"; /* 0x52 */ 376 case ESV_INF_SNA: return "プロパティ値通知不可応答"; /* 0x53 */ 377 case ESV_SET_GET_SNA: return "プロパティ値書き込み・読み出し不可応答"; /* 0x5E */ 378 case ESV_SET_I: return "プロパティ値書き込み要求(応答不要)"; /* 0x60 */ 379 case ESV_SET_C: return "プロパティ値書き込み要求(応答要)"; /* 0x61 */ 380 case ESV_GET: return "プロパティ値読み出し要求"; /* 0x62 */ 381 case ESV_INF_REQ: return "プロパティ値通知要求"; /* 0x63 */ 382 case ESV_SET_GET: return "プロパティ値書き込み・読み出し要求"; /* 0x6E */ 383 case ESV_SET_RES: return "プロパティ値書き込み応答"; /* 0x71 */ 384 case ESV_GET_RES: return "プロパティ値読み出し応答"; /* 0x72 */ 385 case ESV_INF: return "プロパティ値通知"; /* 0x73 */ 386 case ESV_INFC: return "プロパティ値通知(応答要)"; /* 0x74 */ 387 case ESV_SET_GET_RES: return "プロパティ値書き込み・読み出し応答"; /* 0x7E */ 388 case ESV_INFC_RES: return "プロパティ値通知応答"; /* 0x7A */ 393 389 default: 394 390 return "(unknown)"; -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/ecnl_lwip/echonet_dbg.cfg
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r164 r167 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 6 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 7 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 8 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 9 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 10 * \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[ 11 * XR[hÉÜÜêĢ鱯D 12 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 13 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 14 gip 15 * Ò}j 16 AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL 17 * Ì³ÛØKèðfÚ·é±ÆD 18 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 19 * pūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 20 * ÆD 21 * (a) Äzzɺ¤hL 22 gipÒ}j 23 AÈÇjÉCãLÌ 24 * ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD 25 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 26 * ñ·é±ÆD 27 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 28 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 29 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 30 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 31 * ÆÓ·é±ÆD 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 * 免責すること. 32 28 * 33 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨34 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI35 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF36 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»37 * ÌÓCðíÈ¢D29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 38 34 * 39 35 * @(#) $Id$ … … 41 37 42 38 /* 43 * lbg[NÎTvvO(1)Ì 44 * VXeRtBM 45 [Vt@C 39 * ネットワーク対応サンプルプログラム(1)の 40 * システムコンフィギュレーションファイル 46 41 */ 47 42 … … 55 50 /* INCLUDE("tinet/tinet_asp.cfg"); // */ 56 51 57 /* Z}tH*/52 /* セマフォ */ 58 53 59 54 CRE_SEM(SEM_ECN_DBG_PUT, { TA_TPRI, 1, 1 }); -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/ecnl_lwip/echonet_dbg.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=SHIFT_JIS
r164 r167 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 6 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 7 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 8 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 9 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 10 * \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[ 11 * XR[hÉÜÜêĢ鱯D 12 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 13 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 14 gip 15 * Ò}j 16 AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL 17 * Ì³ÛØKèðfÚ·é±ÆD 18 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 19 * pūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 20 * ÆD 21 * (a) Äzzɺ¤hL 22 gipÒ}j 23 AÈÇjÉCãLÌ 24 * ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD 25 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 26 * ñ·é±ÆD 27 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 28 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 29 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 30 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 31 * ÆÓ·é±ÆD 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 * 免責すること. 32 28 * 33 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨34 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI35 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF36 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»37 * ÌÓCðíÈ¢D29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 38 34 * 39 35 * @(#) $Id$ … … 41 37 42 38 /* 43 * ECHONET Lite ^XN fobOoÍ39 * ECHONET Lite タスク デバッグ出力 44 40 */ 45 41 … … 59 55 #include "echonet_fbs.h" 60 56 61 /* ECN_SRC_LOC: \[XÌt@C¼ÆsÔ𦷶ñðìé}N*/57 /* ECN_SRC_LOC: ソース中のファイル名と行番号を示す文字列を作るマクロ */ 62 58 #ifndef ECN_SRC_LOC 63 59 #ifndef _ECN_BLD_BASE_DIR … … 83 79 #endif 84 80 85 /* fobOoÍ(CARP) */81 /* デバッグ出力(CARP) */ 86 82 #ifdef ECN_CAP_PUT_ENA 87 83 #define ECN_CAP_PUT(...) _ecn_dbg_dbgput(ECN_SRC_LOC, __VA_ARGS__) … … 91 87 92 88 /* 93 * fobOoÍ94 * áFECN_DBG_PUT( "task start" );89 * デバッグ出力 90 * 例: ECN_DBG_PUT( "task start" ); 95 91 */ 96 92 int _ecn_dbg_dbgput(const char *, const char *, ...); 97 93 98 94 /* 99 * oCi_voÍ95 * バイナリダンプ出力 100 96 */ 101 97 void _ecn_dbg_bindmp(const T_ECN_FST_BLK *buffer, size_t len); 102 98 103 99 /* 104 * ECHONET Lite T[rXR[h¶ñÏ·100 * ECHONET Liteサービスコード文字列変換 105 101 */ 106 102 const char *_ecn_dbg_esv2str(uint8_t fa_esv); 107 103 108 104 /* 109 * ECN_ENOD_ID ̶ñÏ·105 * ECN_ENOD_IDの文字列変換 110 106 */ 111 107 const char *_ecn_dbg_enod2str(ECN_ENOD_ID fa_enod_id); -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/ecnl_lwip/echonet_def.csv
-
Property svn:mime-type
set to
text/plain; charset=SHIFT_JIS
-
Property svn:mime-type
set to
-
UsbWattMeter/trunk/ecnl_lwip/echonet_fbs.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; charset=SHIFT_JIS
r164 r167 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 6 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 7 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 8 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 9 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 10 * \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[ 11 * XR[hÉÜÜêĢ鱯D 12 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 13 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 14 gip 15 * Ò}j 16 AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL 17 * Ì³ÛØKèðfÚ·é±ÆD 18 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 19 * pūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 20 * ÆD 21 * (a) Äzzɺ¤hL 22 gipÒ}j 23 AÈÇjÉCãLÌ 24 * ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD 25 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 26 * ñ·é±ÆD 27 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 28 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 29 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 30 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 31 * ÆÓ·é±ÆD 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 * 免責すること. 32 28 * 33 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨34 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI35 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF36 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»37 * ÌÓCðíÈ¢D29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 38 34 * 39 35 * @(#) $Id$ … … 41 37 42 38 /* 43 * Åè·obt@ÂÏ·Xg[39 * 固定長バッファ可変長ストリーム 44 40 */ 45 41 … … 260 256 } 261 257 262 /* ÌæmÛ*/258 /* 領域確保 */ 263 259 ER _ecn_fbs_cre(ECN_FBS_SIZE_T fa_req_size, ECN_FBS_ID *fp_id) 264 260 { … … 266 262 } 267 263 268 /* Ìæðú*/264 /* 領域解放 */ 269 265 ER _ecn_fbs_del(ECN_FBS_ID fa_id) 270 266 { … … 272 268 } 273 269 274 /* Ûf[^ÌL³*/270 /* 保持データの有無 */ 275 271 bool_t _ecn_fbs_exist_data(ECN_FBS_ID fa_id) 276 272 { … … 278 274 } 279 275 280 /* Ûf[^·Ìæ¾*/276 /* 保持データ長の取得 */ 281 277 ECN_FBS_SSIZE_T _ecn_fbs_get_datalen(ECN_FBS_ID fa_id) 282 278 { … … 284 280 } 285 281 286 /* ÇÝæèJ[\ÌÊuæ¾*/282 /* 読み取りカーソルの位置取得 */ 287 283 ECN_FBS_SSIZE_T _ecn_fbs_get_rpos(ECN_FBS_ID fa_id) 288 284 { … … 290 286 } 291 287 292 /* ÇÝæèJ[\ÌÊuÝè*/288 /* 読み取りカーソルの位置設定 */ 293 289 ER _ecn_fbs_set_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_pos) 294 290 { 295 if (fa_id.ptr->hdr.length <= (unsigned int)fa_pos) /* Êuwèªå«·¬é*/291 if (fa_id.ptr->hdr.length <= (unsigned int)fa_pos) /* 位置指定が大きすぎる */ 296 292 return E_PAR; 297 293 … … 301 297 } 302 298 303 /* ÇÝæèJ[\ÌÊuÚ®*/299 /* 読み取りカーソルの位置移動 */ 304 300 ER _ecn_fbs_seek_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek) 305 301 { … … 311 307 } 312 308 313 /* CÓwèÊuÌ1byteÇÝæè*/309 /* 任意指定位置の1byte読み取り */ 314 310 int _ecn_fbs_peek(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek) 315 311 { … … 322 318 } 323 319 324 /* CÓwèÊuÌ1byte«Ý*/320 /* 任意指定位置の1byte書き込み */ 325 321 ER _ecn_fbs_poke(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek, int fa_val) 326 322 { … … 333 329 } 334 330 335 /* f[^ÇÁ*/331 /* データ追加 */ 336 332 ER _ecn_fbs_add_data(ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len) 337 333 { … … 343 339 } 344 340 345 /* f[^ÇÁ(Ìæð©®IÉg£·é) */341 /* データ追加(領域を自動的に拡張する) */ 346 342 ER _ecn_fbs_add_data_ex(ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len) 347 343 { … … 350 346 } 351 347 352 /* f[^æ¾*/348 /* データ取得 */ 353 349 ER _ecn_fbs_get_data(ECN_FBS_ID fa_id, void *fa_buf, ECN_FBS_SSIZE_T fa_maxlen, ECN_FBS_SSIZE_T *p_len) 354 350 { -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/ecnl_lwip/echonet_fbs.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=SHIFT_JIS
r164 r167 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 6 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 7 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 8 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 9 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 10 * \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[ 11 * XR[hÉÜÜêĢ鱯D 12 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 13 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 14 gip 15 * Ò}j 16 AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL 17 * Ì³ÛØKèðfÚ·é±ÆD 18 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 19 * pūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 20 * ÆD 21 * (a) Äzzɺ¤hL 22 gipÒ}j 23 AÈÇjÉCãLÌ 24 * ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD 25 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 26 * ñ·é±ÆD 27 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 28 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 29 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 30 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 31 * ÆÓ·é±ÆD 32 * 33 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨ 34 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI 35 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF 36 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC» 37 * ÌÓCðíÈ¢D 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 * の責任を負わない. 38 34 * 39 35 * @(#) $Id$ … … 41 37 42 38 /* 43 * Åè·obt@ÂÏ·Xg[39 * 固定長バッファ可変長ストリーム 44 40 */ 45 41 … … 55 51 56 52 #ifndef ECHONET_MEMPOOL_GET_TMO 57 #define ECHONET_MEMPOOL_GET_TMO (0) /* v[æ¾Ì^CAEgwè*/53 #define ECHONET_MEMPOOL_GET_TMO (0) /* メモリプール取得時のタイムアウト指定 */ 58 54 #endif /* ECHONET_MEMPOOL_GET_TMO */ 59 55 60 56 #ifndef NUM_ECHONET_MEMPOOL_BLOCK 61 #define NUM_ECHONET_MEMPOOL_BLOCK (60) /* d¶pubNÌ*/57 #define NUM_ECHONET_MEMPOOL_BLOCK (60) /* 電文用メモリブロックの数 */ 62 58 #endif /* NUM_ECHONET_MEMPOOL_BLOCK */ 63 59 64 60 #ifndef ECHONET_MEMPOOL_BLOCK_SIZE 65 #define ECHONET_MEMPOOL_BLOCK_SIZE (256) /* d¶pubNÌTCY*/61 #define ECHONET_MEMPOOL_BLOCK_SIZE (256) /* 電文用メモリブロックのサイズ */ 66 62 #endif /* ECHONET_MEMPOOL_BLOCK_SIZE */ 67 63 68 typedef unsigned int ECN_FBS_SIZE_T; /* size_t */69 typedef int ECN_FBS_SSIZE_T; /* ssize_t */70 71 /* T_EDATA ÇÌæTCY*/64 typedef unsigned int ECN_FBS_SIZE_T; /* size_t相当 */ 65 typedef int ECN_FBS_SSIZE_T; /* ssize_t相当 */ 66 67 /* T_EDATA管理領域サイズ */ 72 68 #ifdef TARGET_KERNEL_ASP 73 69 #define DEF_ECN_EDT_HDR_LEN (sizeof(T_MSG)) … … 76 72 #endif 77 73 78 /* ÇÌæTCY(64byte - sizeof(T_MSG)) */74 /* 管理領域サイズ(64byte - sizeof(T_MSG)) */ 79 75 /* #define DEF_ECN_FBS_LIB_HDR_LEN ((ECHONET_MEMPOOL_BLOCK_SIZE + sizeof(int) - 1)>> 2) // */ 80 76 #define DEF_ECN_FBS_LIB_HDR_LEN (64 - DEF_ECN_EDT_HDR_LEN) 81 77 82 /* ÇÌæðÜÞubNÉÛ·éf[^TCY*/78 /* 管理領域を含むブロックに保持するデータサイズ */ 83 79 #define DEF_ECN_FBS_FST_DAT_LEN (64) 84 80 85 /* N|C^zñÌTCY(byte) */81 /* リンクポインタ配列のサイズ(byte) */ 86 82 #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) 87 83 88 /* Åè·obt@ÅåTCY*/84 /* 固定長バッファ最大サイズ */ 89 85 #define DEF_ECN_FBS_BUF_MAXLEN ((DEF_ECN_FBS_LNK_LEN / sizeof(void *)) * ECHONET_MEMPOOL_BLOCK_SIZE + DEF_ECN_FBS_FST_DAT_LEN) 90 86 91 /* qvfobt@ÌTCY*/87 /* 子要素バッファのサイズ */ 92 88 #define DEF_ECN_FBS_SUB_BUF_LEN ECHONET_MEMPOOL_BLOCK_SIZE 93 89 94 /* d¶ÌíÊ(àeͼ) */90 /* 電文の種別(内容は仮) */ 95 91 typedef enum 96 92 { 97 ECN_FBS_TYPE_BLANK = 0, /* ¢gpXg[*/98 ECN_FBS_TYPE_INTERNAL = 1, /* àbZ[W*/99 ECN_FBS_TYPE_ECHONET = 2 /* ECHONET d¶*/93 ECN_FBS_TYPE_BLANK = 0, /* 未使用ストリーム */ 94 ECN_FBS_TYPE_INTERNAL = 1, /* 内部メッセージ */ 95 ECN_FBS_TYPE_ECHONET = 2 /* ECHONET電文 */ 100 96 } TA_ECN_MSG_TYPE; 101 97 102 /* N|C^zñÉñ³êéAqvfobt@*/98 /* リンクポインタ配列に列挙される、子要素バッファ */ 103 99 typedef struct 104 100 { … … 106 102 } T_ECN_SUB_BLK; 107 103 108 /* N|C^zñ*/104 /* リンクポインタ配列 */ 109 105 typedef union 110 106 { … … 113 109 } T_ECN_FBS_LNK; 114 110 115 /* ÇÌæ(64byte - sizeof(T_MSG)) */111 /* 管理領域(64byte - sizeof(T_MSG)) */ 116 112 typedef struct 117 113 { 118 uint16_t length; /* bZ[W·*/119 uint16_t type; /* bZ[W^Cv*/114 uint16_t length; /* メッセージ長 */ 115 uint16_t type; /* メッセージタイプ */ 120 116 union{ 121 ECN_ENOD_ID id; /* M³m[hIDiECHONETd¶j*/122 ID mbxid; /* M³[{bNXIDiàbZ[Wj*/117 ECN_ENOD_ID id; /* 送信元ノードID(ECHONET電文) */ 118 ID mbxid; /* 送信元メールボックスID(内部メッセージ) */ 123 119 }sender; 124 120 union{ 125 ECN_ENOD_ID id; /* Mæm[hIDiECHONETd¶j*/126 ID mbxid; /* Mæ[{bNXIDiàbZ[Wj*/121 ECN_ENOD_ID id; /* 送信先ノードID(ECHONET電文) */ 122 ID mbxid; /* 送信先メールボックスID(内部メッセージ) */ 127 123 }target; 128 124 union{ 129 ECN_ENOD_ID id; /* ÔMæm[hIDiECHONETd¶j*/130 ID mbxid; /* ÔMæ[{bNXIDiàbZ[Wj*/125 ECN_ENOD_ID id; /* 返信先ノードID(ECHONET電文) */ 126 ID mbxid; /* 返信先メールボックスID(内部メッセージ) */ 131 127 }reply; 132 128 133 int rd; /* ÇÝæèwbhîñ*/134 int wr; /* «Ýwbhîñ*/129 int rd; /* 読み取りヘッド情報 */ 130 int wr; /* 書き込みヘッド情報 */ 135 131 } T_ECN_FBS_HDR; 136 132 137 /* ÇÌæðÜÞubNÌ\¢*/133 /* 管理領域を含むブロックの構造 */ 138 134 typedef struct 139 135 { 140 136 uint8_t _msg[DEF_ECN_EDT_HDR_LEN]; /* T_MSG */ 141 T_ECN_FBS_HDR hdr; /* ÇÌæ64byte - sizeof(T_MSG) */137 T_ECN_FBS_HDR hdr; /* 管理領域 64byte - sizeof(T_MSG) */ 142 138 uint8_t _gap[DEF_ECN_FBS_LIB_HDR_LEN - sizeof(T_ECN_FBS_HDR)]; 143 T_ECN_FBS_LNK lnk; /* N|C^zñ128byte */139 T_ECN_FBS_LNK lnk; /* リンクポインタ配列 128byte */ 144 140 uint8_t payload[DEF_ECN_FBS_FST_DAT_LEN]; 145 141 } T_ECN_FST_BLK; … … 151 147 } ECN_FBS_ID; 152 148 153 /* bZ[WL 154 [ */ 149 /* メッセージキュー */ 155 150 typedef struct ecn_fbs_queue 156 151 { 157 T_ECN_FST_BLK *pk_head; /* æªÌbZ[W*/158 T_ECN_FST_BLK *pk_last; /* öÌbZ[W*/152 T_ECN_FST_BLK *pk_head; /* 先頭のメッセージ */ 153 T_ECN_FST_BLK *pk_last; /* 末尾のメッセージ */ 159 154 } T_ECN_FBS_QUEUE; 160 155 161 156 /* 162 * ÌæmÛ163 * ø164 * ECN_FBS_SIZE_T fa_req_size vobt@TCY(byte)157 * 領域確保 158 * 引数 159 * ECN_FBS_SIZE_T fa_req_size 要求バッファサイズ(byte) 165 160 * max: DEF_ECN_FBS_BUF_MAXLEN 166 * ECN_FBS_ID *fp_id mÛµ½FBS-IDÌi[æ167 * ßèl168 * ER 0:ok ñ0:NG161 * ECN_FBS_ID *fp_id 確保したFBS-IDの格納先 162 * 戻り値 163 * ER 0:ok 非0:NG 169 164 */ 170 165 ER _ecn_fbs_cre(ECN_FBS_SIZE_T fa_req_size, ECN_FBS_ID *fp_id); 171 166 172 167 /* 173 * Ìæðú174 * ø175 * ecn_fbs_id ^ mÛµ½FBS-ID176 * ßèl177 * ER 0:ok, ñ0:NG168 * 領域解放 169 * 引数 170 * ecn_fbs_id型 確保したFBS-ID 171 * 戻り値 172 * ER 0:ok, 非0:NG 178 173 */ 179 174 ER _ecn_fbs_del(ECN_FBS_ID fa_id); 180 175 181 176 /* 182 * Ûf[^ÌL³183 * ø184 * ecn_fbs_id ^ mÛµ½FBS-ID185 * ßèl186 * bool_t 0: ³µ, 1: è177 * 保持データの有無 178 * 引数 179 * ecn_fbs_id型 確保したFBS-ID 180 * 戻り値 181 * bool_t 0:無し, 1:あり 187 182 */ 188 183 bool_t _ecn_fbs_exist_data(ECN_FBS_ID fa_id); 189 184 190 185 /* 191 * Ûf[^·Ìæ¾192 * ø193 * ecn_fbs_id ^ mÛµ½FBS-ID194 * ßèl195 * ECN_FBS_SSIZE_T ۵Ģéf[^Ì·³(byte) -1:NG186 * 保持データ長の取得 187 * 引数 188 * ecn_fbs_id型 確保したFBS-ID 189 * 戻り値 190 * ECN_FBS_SSIZE_T 保持しているデータの長さ(byte) -1:NG 196 191 */ 197 192 ECN_FBS_SSIZE_T _ecn_fbs_get_datalen(ECN_FBS_ID fa_id); 198 193 199 194 /* 200 * ÇÝæèJ[\ÌÊuæ¾201 * ø202 * ecn_fbs_id ^ mÛµ½FBS-ID203 * ßèl204 * ECN_FBS_SIZE_T 檩çÌâÎÊu-1:NG195 * 読み取りカーソルの位置取得 196 * 引数 197 * ecn_fbs_id型 確保したFBS-ID 198 * 戻り値 199 * ECN_FBS_SIZE_T 先頭からの絶対位置 -1:NG 205 200 */ 206 201 ECN_FBS_SSIZE_T _ecn_fbs_get_rpos(ECN_FBS_ID fa_id); 207 202 208 203 /* 209 * ÇÝæèJ[\ÌÊuÝè210 * ø211 * ecn_fbs_id ^ mÛµ½FBS-ID212 * ECN_FBS_SIZE_T fa_pos Ýè·éÊu(檩çÌâÎÊu)213 * ßèl214 * ER 0:ok, ñ0:NG204 * 読み取りカーソルの位置設定 205 * 引数 206 * ecn_fbs_id型 確保したFBS-ID 207 * ECN_FBS_SIZE_T fa_pos 設定する位置(先頭からの絶対位置) 208 * 戻り値 209 * ER 0:ok, 非0:NG 215 210 */ 216 211 ER _ecn_fbs_set_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_pos); 217 212 218 213 /* 219 * ÇÝæèJ[\ÌÊuÚ®220 * ø221 * ecn_fbs_id ^ mÛµ½FBS-ID222 * ECN_FBS_SIZE_T fa_seek Ú®Ê(»óAOiÌÝ)223 * ßèl224 * ER 0:ok, ñ0:NG214 * 読み取りカーソルの位置移動 215 * 引数 216 * ecn_fbs_id型 確保したFBS-ID 217 * ECN_FBS_SIZE_T fa_seek 移動量(現状、前進のみ) 218 * 戻り値 219 * ER 0:ok, 非0:NG 225 220 */ 226 221 ER _ecn_fbs_seek_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek); 227 222 228 223 /* 229 * CÓwèÊuÌ1byteÇÝæè224 * 任意指定位置の1byte読み取り 230 225 */ 231 226 int _ecn_fbs_peek(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek); 232 227 233 228 /* 234 * CÓwèÊuÌ1byte«Ý229 * 任意指定位置の1byte書き込み 235 230 */ 236 231 ER _ecn_fbs_poke(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek, int fa_val); 237 232 238 233 /* 239 * f[^ÇÁ240 * ø241 * ecn_fbs_id ^ mÛµ½FBS-ID242 * const void * fa_dat ÇÁ·éf[^243 * ECN_FBS_SSIZE_T fa_len ÇÁ·é·³(byte)244 * ßèl245 * ER 0:ok, ñ0:NG234 * データ追加 235 * 引数 236 * ecn_fbs_id型 確保したFBS-ID 237 * const void * fa_dat 追加するデータ 238 * ECN_FBS_SSIZE_T fa_len 追加する長さ(byte) 239 * 戻り値 240 * ER 0:ok, 非0:NG 246 241 */ 247 242 ER _ecn_fbs_add_data(ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len); 248 243 249 244 /* 250 * f[^ÇÁ(Ìæð©®IÉg£·é)251 * ø252 * ecn_fbs_id ^ mÛµ½FBS-ID253 * const void * fa_dat ÇÁ·éf[^254 * ECN_FBS_SSIZE_T fa_len ÇÁ·é·³(byte)255 * ßèl256 * ER 0:ok, ñ0:NG245 * データ追加(領域を自動的に拡張する) 246 * 引数 247 * ecn_fbs_id型 確保したFBS-ID 248 * const void * fa_dat 追加するデータ 249 * ECN_FBS_SSIZE_T fa_len 追加する長さ(byte) 250 * 戻り値 251 * ER 0:ok, 非0:NG 257 252 */ 258 253 ER _ecn_fbs_add_data_ex(ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len); 259 254 260 255 /* 261 * f[^æ¾262 * ø263 * ecn_fbs_id ^ mÛµ½FBS-ID264 * void * fa_buf æ¾·éobt@265 * ECN_FBS_SSIZE_T fa_maxlen æ¾·é·³(byte)266 * ECN_FBS_SSIZE_T *p_len æ¾µ½·³(byte)267 * ßèl268 * ER 0:ok, ñ0:NG256 * データ取得 257 * 引数 258 * ecn_fbs_id型 確保したFBS-ID 259 * void * fa_buf 取得するバッファ 260 * ECN_FBS_SSIZE_T fa_maxlen 取得する長さ(byte) 261 * ECN_FBS_SSIZE_T *p_len 取得した長さ(byte) 262 * 戻り値 263 * ER 0:ok, 非0:NG 269 264 */ 270 265 ER _ecn_fbs_get_data(ECN_FBS_ID fa_id, void *fa_buf, ECN_FBS_SSIZE_T fa_maxlen, -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/ecnl_lwip/echonet_lcl_task.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=SHIFT_JIS
r164 r167 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 6 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 7 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 8 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 9 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 10 * \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[ 11 * XR[hÉÜÜêĢ鱯D 12 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 13 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 14 gip 15 * Ò}j 16 AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL 17 * Ì³ÛØKèðfÚ·é±ÆD 18 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 19 * pūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 20 * ÆD 21 * (a) Äzzɺ¤hL 22 gipÒ}j 23 AÈÇjÉCãLÌ 24 * ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD 25 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 26 * ñ·é±ÆD 27 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 28 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 29 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 30 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 31 * ÆÓ·é±ÆD 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 * 免責すること. 32 28 * 33 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨34 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI35 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF36 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»37 * ÌÓCðíÈ¢D29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 38 34 * 39 35 * @(#) $Id$ … … 41 37 42 38 /* 43 * ECHONET Lite ºÊÊMC[^XN39 * ECHONET Lite 下位通信レイヤー処理タスク 44 40 */ 45 41 -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/ecnl_lwip/echonet_rename.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=SHIFT_JIS
r164 r167 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 6 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 7 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 8 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 9 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 10 * \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[ 11 * XR[hÉÜÜêĢ鱯D 12 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 13 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 14 gip 15 * Ò}j 16 AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL 17 * Ì³ÛØKèðfÚ·é±ÆD 18 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 19 * pūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 20 * ÆD 21 * (a) Äzzɺ¤hL 22 gipÒ}j 23 AÈÇjÉCãLÌ 24 * ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD 25 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 26 * ñ·é±ÆD 27 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 28 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 29 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 30 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 31 * ÆÓ·é±ÆD 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 * 免責すること. 32 28 * 33 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨34 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI35 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF36 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»37 * ÌÓCðíÈ¢D29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 38 34 * 39 35 * @(#) $Id$ -
Property svn:mime-type
changed from
-
UsbWattMeter/trunk/ecnl_lwip/echonet_task.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; charset=SHIFT_JIS
r164 r167 4 4 * Copyright (C) 2014-2016 Cores Co., Ltd. Japan 5 5 * 6 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 7 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 8 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 9 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 10 * \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[ 11 * XR[hÉÜÜêĢ鱯D 12 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 13 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 14 gip 15 * Ò}j 16 AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL 17 * Ì³ÛØKèðfÚ·é±ÆD 18 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 19 * pūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 20 * ÆD 21 * (a) Äzzɺ¤hL 22 gipÒ}j 23 AÈÇjÉCãLÌ 24 * ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD 25 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 26 * ñ·é±ÆD 27 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 28 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 29 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 30 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 31 * ÆÓ·é±ÆD 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 * 免責すること. 32 28 * 33 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨34 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI35 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF36 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»37 * ÌÓCðíÈ¢D29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 31 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 * の責任を負わない. 38 34 * 39 35 * @(#) $Id$ … … 41 37 42 38 /* 43 * ECHONET Lite ^XN39 * ECHONET Lite タスク 44 40 */ 45 41 … … 75 71 #endif /* ECHONET_TASK_TIMEOUT */ 76 72 77 /* AvP[Vªvµ½d¶ÌV[PXÔ*/73 /* アプリケーションが要求した電文のシーケンス番号 */ 78 74 static uint16_t g_api_tid; 79 75 80 /* óMbZ[WðJú·é©Û©*/76 /* 受信メッセージを開放するか否か */ 81 77 static bool_t g_release_esv; 82 78 … … 122 118 i += - ENOD_REMOTE_ID + 1; 123 119 if (from_app && (i < tnum_enodid)) { 124 /* ñ¯úÌ[gm[hÍT[rX^XNÅ·é*/120 /* 非同期のリモートノードはサービス処理タスクで処理する */ 125 121 switch (eobjcb_table[i].profile->eobjatr) { 126 122 case EOBJ_SYNC_REMOTE_NODE: … … 170 166 ECN_FBS_ID fa_fbs_id, ECN_FBS_ID *fa_fbs_anno); 171 167 172 /* W 173 [ú»tO */ 168 /* モジュール初期化フラグ */ 174 169 static uint8_t m_eobjlist_need_init = 1; 175 170 176 /* V[PXÔ*/171 /* シーケンス番号 */ 177 172 static uint16_t g_current_tid = 1; 178 173 179 174 /* 180 * ECHONET Lite ^XNÌú»iRXgN^j175 * ECHONET Lite タスクの初期化(コンストラクタ相当) 181 176 */ 182 177 void echonet_task_init(intptr_t exinf) … … 187 182 188 183 /* 189 * W 190 [ú» 184 * モジュール初期化 191 185 */ 192 186 static void _ecn_tsk_int_module_init(intptr_t exinf) … … 209 203 210 204 /* 211 * ECHONET Lite ^XNÌ{Ì205 * ECHONET Lite タスクの本体 212 206 */ 213 207 void echonet_task(intptr_t fa_exinf) … … 233 227 } 234 228 235 /* bZ[W[v*/229 /* メッセージループ */ 236 230 for (;;) { 237 231 a_prev = a_now; … … 271 265 272 266 switch (a_mdt.fbs_id.ptr->hdr.type) { 273 /* àgpbZ[W*/267 /* 内部使用メッセージ */ 274 268 case ECN_MSG_INTERNAL: 275 269 _ecn_tsk_int_msg(fa_exinf, a_mdt.fbs_id); 276 270 break; 277 271 278 /* ECHONET pbZ[W*/272 /* ECHONET用メッセージ */ 279 273 case ECN_MSG_ECHONET: 280 274 _ecn_tsk_ecn_msg(fa_exinf, a_mdt.fbs_id); … … 285 279 } 286 280 287 /* Ìæðú*/281 /* 領域解放 */ 288 282 if (g_release_esv) 289 283 _ecn_fbs_del(a_mdt.fbs_id); … … 298 292 299 293 /* 300 * V[PXÔ¶¬294 * シーケンス番号生成 301 295 */ 302 296 static uint16_t _ecn_tsk_new_tid(void) … … 306 300 307 301 /* 308 * vd¶ì¬309 * ø310 * ECN_FBS_ID *fp_fbs_id æ¾µ½FBS_IDÌi[æ311 * ID fa_seoj M³ÌECHONETIuWFNgID312 * ID fa_deoj ¶æÌECHONETIuWFNgID313 * uint8_t fa_epc vpeBR[h314 * uint8_t fa_pdc vpeBlf[^TCY315 * const void *p_edt vpeBlf[^316 * ECN_SRV_CODE fa_esv ECHONET Light T[rXR[h302 * 要求電文作成 303 * 引数 304 * ECN_FBS_ID *fp_fbs_id 取得したFBS_IDの格納先 305 * ID fa_seoj 送信元のECHONETオブジェクトID 306 * ID fa_deoj 宛先のECHONETオブジェクトID 307 * uint8_t fa_epc プロパティコード 308 * uint8_t fa_pdc プロパティ値データサイズ 309 * const void *p_edt プロパティ値データ 310 * ECN_SRV_CODE fa_esv ECHONET Light サービスコード 317 311 */ 318 312 ER _ecn_tsk_mk_esv(ECN_FBS_ID *fp_fbs_id, ID fa_seoj, ID fa_deoj, … … 321 315 ER a_ret; 322 316 int a_size, i; 323 ECN_FBS_ID a_fbs_id = { 0 }; /* vd¶p*/317 ECN_FBS_ID a_fbs_id = { 0 }; /* 要求電文用メモリ */ 324 318 T_ECN_EDT_HDR a_ecn_hdp; /* ecn_hdr+edata+ecn_prp 14byte */ 325 319 ID a_enodid; … … 328 322 329 323 if (!fp_fbs_id) 330 return E_PAR; /* æ¾µ½FBS_IDÌi[æªNULL */324 return E_PAR; /* 取得したFBS_IDの格納先がNULL */ 331 325 if (ECHONET_MEMPOOL_BLOCK_SIZE <= fa_pdc) 332 return E_PAR; /* vpeBlTCYªå«·¬é*/326 return E_PAR; /* プロパティ値サイズが大きすぎる */ 333 327 if (!p_edt && 0 < fa_pdc) 334 return E_PAR; /* vpeBlTCYª1ÈãÈÌÉf[^|C^ªNULL */328 return E_PAR; /* プロパティ値サイズが1以上なのにデータポインタがNULL */ 335 329 336 330 if (fa_seoj <= EOBJ_NULL || tmax_eobjid < fa_seoj) 337 return E_NOEXS; /* ECHONET IuWFNgIDª¢è`*/331 return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */ 338 332 #ifndef ECHONET_CONTROLLER_EXTENTION 339 333 if (fa_deoj < EOBJ_NULL || tmax_eobjid < fa_deoj) 340 return E_NOEXS; /* ECHONET IuWFNgIDª¢è`*/334 return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */ 341 335 #else 342 336 if (fa_deoj < EOBJ_NULL || (tmax_eobjid + TNUM_AEOBJID) < fa_deoj) 343 return E_NOEXS; /* ECHONET IuWFNgIDª¢è`*/337 return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */ 344 338 #endif 345 339 if (fa_deoj == EOBJ_NULL && fa_esv == ESV_INFC) 346 return E_NOEXS; /* ECHONET IuWFNgIDª¢è`*/347 348 /* vŬTCYÌæ¾*/340 return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */ 341 342 /* 要求最小サイズの取得 */ 349 343 a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP); 350 344 351 /* vd¶pÌæ¾*/345 /* 要求電文用メモリの取得 */ 352 346 a_ret = _ecn_fbs_cre(a_size, &a_fbs_id); 353 if (a_ret != E_OK || !a_fbs_id.ptr) { /* mÛ¸s*/347 if (a_ret != E_OK || !a_fbs_id.ptr) { /* 確保失敗 */ 354 348 ECN_DBG_PUT( "_ecn_fbs_cre(%d) result = %d:%s", 355 349 a_size, … … 358 352 } 359 353 360 /* vd¶Ýè*/354 /* 要求電文設定 */ 361 355 memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp)); 362 356 a_ecn_hdp.ecn_hdr.ehd1 = ECN_EDH1_ECHONET_LITE; … … 365 359 memcpy(&a_ecn_hdp.edata.seoj, &eobjinib_table[fa_seoj - 1].eojx1, sizeof(a_ecn_hdp.edata.seoj)); 366 360 a_ecn_hdp.edata.esv = fa_esv; 367 a_ecn_hdp.edata.opc = 1; /* vpeB*/368 a_ecn_hdp.ecn_prp.epc = fa_epc; /* vpeBR[h*/369 a_ecn_hdp.ecn_prp.pdc = fa_pdc; /* tf[^TCY*/370 371 /* vd¶pÉf[^ÇÁ*/361 a_ecn_hdp.edata.opc = 1; /* 処理プロパティ数 */ 362 a_ecn_hdp.ecn_prp.epc = fa_epc; /* プロパティコード */ 363 a_ecn_hdp.ecn_prp.pdc = fa_pdc; /* 付随データサイズ */ 364 365 /* 要求電文用メモリにデータ追加 */ 372 366 a_ret = _ecn_fbs_add_data_ex(a_fbs_id, &a_ecn_hdp, a_size); 373 367 if (a_ret) { … … 378 372 } 379 373 if (0 < fa_pdc) { 380 /* tf[^ÇÁ*/374 /* 付随データ追加 */ 381 375 a_ret = _ecn_fbs_add_data_ex(a_fbs_id, p_edt, fa_pdc); 382 376 if (a_ret) { … … 388 382 } 389 383 if (fa_deoj == 0) { 390 ECN_DBG_PUT( "%s", " }`LXg" );391 /* fa_deoj == 0 : }`LXg*/384 ECN_DBG_PUT( "%s", "マルチキャスト" ); 385 /* fa_deoj == 0 : マルチキャスト */ 392 386 ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx1 = EOJ_X1_PROFILE; 393 387 ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx2 = EOJ_X2_NODE_PROFILE; … … 397 391 else if (fa_deoj <= tmax_eobjid) { 398 392 ECN_DBG_PUT( "fa_deoj = %d", fa_deoj ); 399 /* if (fa_deoj < 1 || tmax_eobjid < fa_deoj) cÌÙínÍÖ`ªÅOÏÝÆ·é*/393 /* if (fa_deoj < 1 || tmax_eobjid < fa_deoj) …の異常系は関数冒頭で除外済みとする */ 400 394 a_eobj = &eobjinib_table[fa_deoj - 1]; 401 395 memcpy(&((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj, &a_eobj->eojx1, 402 396 sizeof(((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj)); 403 397 404 /* e[u©çõ*/398 /* テーブルから検索 */ 405 399 a_fbs_id.ptr->hdr.target.id = ENOD_NOT_MATCH_ID; 406 400 a_enodid = (a_eobj->enodid == 0) ? fa_deoj : a_eobj->enodid; … … 442 436 ECN_ENOD_ID enodid; 443 437 ECN_DBG_PUT( "fa_deoj = %d", fa_deoj ); 444 /* IuWFNgID©çEOJÆm[hIDðæ¾*/438 /* オブジェクトIDからEOJとノードIDを取得 */ 445 439 if(ecn_agent_get_eoj_enodid(fa_deoj, &eoj, &enodid)){ 446 440 memcpy(&((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj, &eoj, … … 475 469 a_fbs_id.ptr->hdr.reply.id = ENOD_API_ID; 476 470 477 /* ³íI¹*/471 /* 正常終了 */ 478 472 *fp_fbs_id = a_fbs_id; 479 473 return E_OK; 480 474 481 475 lb_except: 482 /* f[^쬸sµ½çÌæðú*/476 /* データ作成失敗したら領域解放 */ 483 477 if (a_fbs_id.ptr) 484 478 _ecn_fbs_del(a_fbs_id); … … 488 482 489 483 /* 490 * àgpbZ[W484 * 内部使用メッセージ 491 485 */ 492 486 static void _ecn_tsk_int_msg(intptr_t fa_exinf, ECN_FBS_ID fa_fbs_id) … … 519 513 520 514 /* 521 * ^XNú»515 * タスク初期化 522 516 */ 523 517 static void _ecn_tsk_int_startup(intptr_t fa_exinf) … … 528 522 _ecn_tsk_int_module_init(fa_exinf); 529 523 530 /* CX^XXgÊmÌM*/524 /* インスタンスリスト通知の送信 */ 531 525 a_ret = _ecn_tsk_ntf_inl(fa_exinf); 532 526 if (a_ret) { … … 536 530 537 531 /* 538 * CX^XXgÊmÌM539 * ECHONET-Lite_Ver.1.10_02.pdf p.43 }4-1-4532 * インスタンスリスト通知の送信 533 * ECHONET-Lite_Ver.1.10_02.pdf p.43 図4-1-4 540 534 */ 541 535 ER _ecn_tsk_ntf_inl(intptr_t fa_exinf) 542 536 { 543 const T_ECN_EOJ a_seoj = /* 0x01 : êÊm[hA0x02FMêpm[h*/537 const T_ECN_EOJ a_seoj = /* 0x01 : 一般ノード、0x02:送信専用ノード */ 544 538 { EOJ_X1_PROFILE, EOJ_X2_NODE_PROFILE, 0x01 }; 545 539 const T_ECN_EOJ a_deoj = … … 551 545 int i; 552 546 uint8_t a_count; 553 const EOBJCB *enod = &eobjcb_table[0]; /* [Jm[h*/547 const EOBJCB *enod = &eobjcb_table[0]; /* ローカルノード */ 554 548 const EOBJINIB *eobj; 555 549 … … 569 563 570 564 if (!a_eoj_ct) { 571 /* mÛEwb_i[*/572 a_hdr.ecn_hdr.tid = (uint8_t)_ecn_tsk_new_tid(); /* V[PXÔ¶¬*/565 /* メモリ確保・ヘッダ格納 */ 566 a_hdr.ecn_hdr.tid = (uint8_t)_ecn_tsk_new_tid(); /* シーケンス番号生成 */ 573 567 a_ret = _ecn_fbs_cre(sizeof(a_hdr), &a_fbs); 574 if (a_ret != E_OK) /* mÛ¸s*/568 if (a_ret != E_OK) /* 確保失敗 */ 575 569 goto lb_except; 576 570 a_ret = _ecn_fbs_add_data(a_fbs, &a_hdr, sizeof(a_hdr)); 577 if (a_ret != E_OK) /* f[^ÇÁ¸s*/571 if (a_ret != E_OK) /* データ追加失敗 */ 578 572 goto lb_except; 579 573 … … 582 576 a_fbs.ptr->hdr.target.id = ENOD_MULTICAST_ID; 583 577 a_fbs.ptr->hdr.reply.id = ENOD_LOCAL_ID; 584 ((T_EDATA *)a_fbs.ptr)->hdr.ecn_prp.pdc = 1; /* */585 /* ði[*/578 ((T_EDATA *)a_fbs.ptr)->hdr.ecn_prp.pdc = 1; /* 件数 */ 579 /* 件数を格納 */ 586 580 a_count = (uint8_t)(enod->eobjcnt - i); 587 581 if (a_count >= ECN_IST_LST_EOJ_MAX_CT) 588 582 a_count = ECN_IST_LST_EOJ_MAX_CT; 589 583 a_ret = _ecn_fbs_add_data_ex(a_fbs, &a_count, sizeof(a_count)); 590 if (a_ret != E_OK) /* f[^ÇÁ¸s*/584 if (a_ret != E_OK) /* データ追加失敗 */ 591 585 goto lb_except; 592 586 } 593 /* ECHONET IuWFNgID(3byte)ði[*/587 /* ECHONETオブジェクトID(3byte)を格納 */ 594 588 a_ret = _ecn_fbs_add_data_ex(a_fbs, &eobj->eojx1, sizeof(T_ECN_EOJ)); 595 if (a_ret != E_OK) /* f[^ÇÁ¸s*/589 if (a_ret != E_OK) /* データ追加失敗 */ 596 590 goto lb_except; 597 591 598 /* EedtTCYÁZ*/592 /* 件数・edtサイズ加算 */ 599 593 ((T_EDATA *)a_fbs.ptr)->hdr.ecn_prp.pdc += sizeof(T_ECN_EOJ); 600 594 if (++a_eoj_ct < ECN_IST_LST_EOJ_MAX_CT) 601 595 continue; 602 596 603 /* 1 AiEXÅÌãÀÉBµ½çAêUM*/597 /* 1アナウンスでの上限に達したら、一旦送信 */ 604 598 a_ret = _ecn_tsk_snd_mbx(a_fbs, false); 605 if (a_ret != E_OK) /* f[^M¸s*/599 if (a_ret != E_OK) /* データ送信失敗 */ 606 600 goto lb_except; 607 601 a_eoj_ct = 0; … … 609 603 } 610 604 if (a_eoj_ct) { 611 /* ¢Mf[^ª Á½çAM*/605 /* 未送信データがあったら、送信 */ 612 606 a_ret = _ecn_tsk_snd_mbx(a_fbs, false); 613 if (a_ret != E_OK) /* f[^M¸s*/607 if (a_ret != E_OK) /* データ送信失敗 */ 614 608 goto lb_except; 615 609 a_fbs.ptr = 0; … … 655 649 656 650 /* 657 * 3byte ÌeobjidÅzñðõ·é651 * 3byteのeobjidで配列中を検索する 658 652 */ 659 653 const EOBJINIB *_ecn_eoj_fnd(const EOBJCB *fp_nod, const T_ECN_EOJ *fp_eoj) … … 691 685 692 686 /* 693 * ECHONET pbZ[W687 * ECHONET用メッセージ 694 688 */ 695 689 static void _ecn_tsk_ecn_msg(intptr_t fa_exinf, ECN_FBS_ID fa_fbs_id) … … 718 712 } 719 713 720 /* M¶©çm[hðõ*/714 /* 送信宛からノードを検索 */ 721 715 p_nod = _ecn_eno_fnd(fa_fbs_id.ptr->hdr.target.id); 722 /* M³©çm[hðõ*/716 /* 送信元からノードを検索 */ 723 717 p_snod = _ecn_eno_fnd(fa_fbs_id.ptr->hdr.sender.id); 724 718 if (p_snod != NULL) { 725 719 sobjatr = p_snod->profile->eobjatr; 726 /* m[hvt@CÌê*/720 /* ノードプロファイルの場合 */ 727 721 if ((p_esv->edata.seoj.eojx1 == EOJ_X1_PROFILE) 728 722 && (p_esv->edata.seoj.eojx2 == EOJ_X2_NODE_PROFILE)) { 729 723 p_sobj = p_snod->profile; 730 724 } 731 /* @íIuWFNgÌê*/725 /* 機器オブジェクトの場合 */ 732 726 else { 733 727 p_sobj = _ecn_eoj_fnd(p_snod, &p_esv->edata.seoj); … … 739 733 #endif 740 734 741 /* m[hàÌ@íIuWFNgðõ*/735 /* ノード内の機器オブジェクトを検索 */ 742 736 a_prc = false; 743 737 a_fwd = false; … … 745 739 eobjatr = p_nod->profile->eobjatr; 746 740 p_eoj = &p_esv->edata.deoj; 747 /* m[hvt@CÌê*/741 /* ノードプロファイルの場合 */ 748 742 if ((p_eoj->eojx1 == EOJ_X1_PROFILE) 749 743 && (p_eoj->eojx2 == EOJ_X2_NODE_PROFILE)) { 750 744 if ((p_eoj->eojx3 == p_nod->profile->eojx3) 751 745 || (p_eoj->eojx3 == 0)) { 752 /* d¶Às*/746 /* 電文処理実行 */ 753 747 if (_ecn_tsk_ecn_msg_main(fa_fbs_id, p_nod->profile, eobjatr, p_sobj, sobjatr) == 1) 754 748 a_fwd = true; 755 749 a_prc = true; 756 750 } 757 /* 0x74 vpeBlÊmivjÌêµ½±ÆÉ·é*/751 /* 0x74 プロパティ値通知(応答要)の場合処理したことにする */ 758 752 else if (p_esv->edata.esv == ESV_INFC) { 759 753 a_prc = true; 760 754 } 761 755 } 762 /* @íIuWFNgÌê*/756 /* 機器オブジェクトの場合 */ 763 757 else { 764 758 count = p_nod->eobjcnt; … … 779 773 if (p_obj->eojx2 != p_eoj->eojx2) 780 774 continue; 781 /* CX^XR[hªOÌêA¯¶NXÌSÄÌCX^X¶*/775 /* インスタンスコードが0の場合、同じクラスの全てのインスタンス宛 */ 782 776 if ((p_obj->eojx3 != p_eoj->eojx3) && (p_eoj->eojx3 != 0)) 783 777 continue; 784 778 785 /* d¶Às*/779 /* 電文処理実行 */ 786 780 if (_ecn_tsk_ecn_msg_main(fa_fbs_id, p_obj, eobjatr, p_sobj, sobjatr) == 1) 787 781 a_fwd = true; … … 790 784 } 791 785 } 792 /* @íIuWFNgª©Â©çÈ¢êÅà*/786 /* 機器オブジェクトが見つからない場合でも */ 793 787 if (!a_prc) { 794 /* d¶ÀsióMpj*/788 /* 電文処理実行(応答受信用) */ 795 789 if (_ecn_tsk_ecn_msg_main(fa_fbs_id, NULL, EPC_NONE, p_sobj, sobjatr) == 1) 796 790 a_fwd = true; 797 791 } 798 792 799 /* ÌêAvP[VÉ]·é*/793 /* 応答の場合アプリケーションに転送する */ 800 794 if (a_fwd && (p_esv->ecn_hdr.tid == g_api_tid)) { 801 795 g_release_esv = false; 802 796 803 ECN_CAP_PUT( "redirect ecn_svc_mailboxid ¨ecn_api_mailboxid (esv:0x%02X)",797 ECN_CAP_PUT( "redirect ecn_svc_mailboxid → ecn_api_mailboxid (esv:0x%02X)", 804 798 p_esv->edata.esv ); 805 799 fa_fbs_id.ptr->hdr.target.id = ENOD_API_ID; … … 826 820 827 821 switch (p_esv->edata.esv) { 828 /* 0x60 vpeBl«Ývisvj*/822 /* 0x60 プロパティ値書き込み要求(応答不要) */ 829 823 case ESV_SET_I: 830 824 if (!p_obj) { … … 838 832 break; 839 833 840 /* 0x61 vpeBl«Ývivj*/834 /* 0x61 プロパティ値書き込み要求(応答要) */ 841 835 case ESV_SET_C: 842 836 if (!p_obj) { … … 850 844 break; 851 845 852 /* 0x62 vpeBlÇÝoµv*/846 /* 0x62 プロパティ値読み出し要求 */ 853 847 case ESV_GET: 854 848 if (!p_obj) { … … 862 856 break; 863 857 864 /* 0x63 vpeBlÊmv*/858 /* 0x63 プロパティ値通知要求 */ 865 859 case ESV_INF_REQ: 866 860 if (!p_obj) { … … 875 869 break; 876 870 877 /* 0x6E vpeBl«ÝEÇÝoµv*/871 /* 0x6E プロパティ値書き込み・読み出し要求 */ 878 872 case ESV_SET_GET: 879 873 if (!p_obj) { … … 887 881 break; 888 882 889 /* 0x74 vpeBlÊmivj*/883 /* 0x74 プロパティ値通知(応答要) */ 890 884 case ESV_INFC: 891 885 if (!p_sobj) … … 898 892 break; 899 893 900 /* 0x60 vpeBl«Ývisvj*/901 case ESV_SET_I_SNA: /* 0x50 vpeBl«ÝvsÂ*/894 /* 0x60 プロパティ値書き込み要求(応答不要) */ 895 case ESV_SET_I_SNA: /* 0x50 プロパティ値書き込み要求不可応答 */ 902 896 result = 1; 903 897 break; 904 898 905 /* 0x61 vpeBl«Ývivj*/906 case ESV_SET_RES: /* 0x71 vpeBl«Ý*/907 case ESV_SET_C_SNA: /* 0x51 vpeBl«ÝvsÂ*/899 /* 0x61 プロパティ値書き込み要求(応答要) */ 900 case ESV_SET_RES: /* 0x71 プロパティ値書き込み応答 */ 901 case ESV_SET_C_SNA: /* 0x51 プロパティ値書き込み要求不可応答 */ 908 902 result = 1; 909 903 break; 910 904 911 /* 0x62 vpeBlÇÝoµv*/912 case ESV_GET_RES: /* 0x72 vpeBlÇÝoµ*/913 case ESV_GET_SNA: /* 0x52 vpeBlÇÝoµsÂ*/905 /* 0x62 プロパティ値読み出し要求 */ 906 case ESV_GET_RES: /* 0x72 プロパティ値読み出し応答 */ 907 case ESV_GET_SNA: /* 0x52 プロパティ値読み出し不可応答 */ 914 908 if (!p_sobj) { 915 909 ECN_DBG_PUT( "_ecn_tsk_ecn_msg_main() eoj %06X not found.", … … 922 916 break; 923 917 924 /* 0x63 vpeBlÊmv*/925 case ESV_INF: /* 0x73 vpeBlÊm*/926 case ESV_INF_SNA: /* 0x53 vpeBlÊmsÂ*/918 /* 0x63 プロパティ値通知要求 */ 919 case ESV_INF: /* 0x73 プロパティ値通知 */ 920 case ESV_INF_SNA: /* 0x53 プロパティ値通知不可応答 */ 927 921 if (!p_sobj) { 928 922 ECN_DBG_PUT( "_ecn_tsk_ecn_msg_main() eoj %06X not found.", … … 935 929 break; 936 930 937 /* 0x6E vpeBl«ÝEÇÝoµv*/938 case ESV_SET_GET_RES: /* 0x7E vpeBl«ÝEÇÝoµ*/939 case ESV_SET_GET_SNA: /* 0x5E vpeBl«ÝEÇÝoµsÂ*/931 /* 0x6E プロパティ値書き込み・読み出し要求 */ 932 case ESV_SET_GET_RES: /* 0x7E プロパティ値書き込み・読み出し応答 */ 933 case ESV_SET_GET_SNA: /* 0x5E プロパティ値書き込み・読み出し不可応答 */ 940 934 if (!p_sobj) { 941 935 ECN_DBG_PUT( "_ecn_tsk_ecn_msg_main() eoj %06X not found.", … … 948 942 break; 949 943 950 /* 0x74 vpeBlÊmivj*/951 case ESV_INFC_RES: /* 0x7A vpeBlÊm*/944 /* 0x74 プロパティ値通知(応答要) */ 945 case ESV_INFC_RES: /* 0x7A プロパティ値通知応答 */ 952 946 result = 1; 953 947 break; … … 959 953 } 960 954 961 /* vpeBÊmvðM*/955 /* プロパティ通知要求を送信 */ 962 956 if (a_fbs_anno.ptr != NULL) { 963 957 ER a_ret = _ecn_tsk_snd_mbx(a_fbs_anno, true); … … 1039 1033 1040 1034 /* 1041 * ECN_FBS_ID ©çT_ECN_PRP1Æ»Ìtf[^(edt)ðoµAedtÌ|C^ðÔ·1042 * ø1043 * ECN_FBS_ID fa_fbs_id ÇÝæéFBS1044 * T_ECN_PRP *fp_prp epc+pdc Ìi[æ1045 * uint8_t *fp_blk ìÆpÌ|C^1046 * ³íF|C^NG:01035 * ECN_FBS_IDからT_ECN_PRP1件とその付随データ(edt)を抽出し、edtのポインタを返す 1036 * 引数 1037 * ECN_FBS_ID fa_fbs_id 読み取るFBS 1038 * T_ECN_PRP *fp_prp epc+pdcの格納先 1039 * uint8_t *fp_blk 作業用メモリのポインタ 1040 * 正常:ポインタ NG:0 1047 1041 */ 1048 1042 static ID _ecn_tsk_get_prp_pce(ECN_FBS_ID fa_fbs_id, T_ECN_PRP *fp_prp, … … 1054 1048 memset(fp_blk, 0, sizeof(T_ECN_SUB_BLK)); 1055 1049 1056 /* T_ECN_PRP ª(epc,pdc)ðÇÝæé*/ -
Property svn:mime-type
changed from