Changeset 107 for uKadecot/trunk/ecnl_ssp
- Timestamp:
- Jun 10, 2015, 8:40:31 PM (9 years ago)
- Location:
- uKadecot/trunk/ecnl_ssp
- Files:
-
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
uKadecot/trunk/ecnl_ssp/echonet.c
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r101 r107 4 4 * Copyright (C) 2014 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$ … … 51 47 52 48 /* 53 * ECHONET Lite T[rXJn49 * ECHONET Liteサービス処理開始 54 50 */ 55 51 ER ecn_sta_svc() … … 59 55 60 56 /* 61 * ECHONET IuWFNgQÆ62 * ø63 * ID fa_eobjid ECHONET IuWFNgID64 * T_REOBJ *fp_eobj ECHONET IuWFNgÌÝèàeRs[æ57 * ECHONETオブジェクト参照 58 * 引数 59 * ID fa_eobjid ECHONETオブジェクトID 60 * T_REOBJ *fp_eobj ECHONETオブジェクトの設定内容コピー先 65 61 * 66 * eobjid Åwèµ½ECHONETIuWFNgÌÝèàeðQÆ·éB67 * QƵ½ÝèàeÍpk_eobjÉwèµ½ÉÔ³êéB62 * eobjidで指定したECHONETオブジェクトの設定内容を参照する。 63 * 参照した設定内容はpk_eobjに指定したメモリに返される。 68 64 */ 69 65 ER ecn_ref_eobj(ID fa_eobjid, T_REOBJ *fp_eobj) … … 72 68 73 69 if (!fp_eobj) 74 return E_PAR; /* p[^G[*/70 return E_PAR; /* パラメータエラー */ 75 71 76 72 if ((fa_eobjid <= 0) || (fa_eobjid > tmax_eobjid)) 77 return E_OBJ; /* IuWFNg¢o^*/73 return E_OBJ; /* オブジェクト未登録 */ 78 74 79 75 p_obj = &eobjinib_table[fa_eobjid - 1]; … … 85 81 86 82 /* 87 * ECHONET vpeBQÆ88 * ø89 * ID fa_eobjid ECHONET IuWFNgID90 * uint8_t fa_epc vpeBR[h91 * T_RPRP *fp_eprp ECHONET IuWFNgÌvpeBÝèàeRs[æ83 * ECHONETプロパティ参照 84 * 引数 85 * ID fa_eobjid ECHONETオブジェクトID 86 * uint8_t fa_epc プロパティコード 87 * T_RPRP *fp_eprp ECHONETオブジェクトのプロパティ設定内容コピー先 92 88 * 93 * eobjid Åwèµ½ECHONETIuWFNgÌAepcÅwèµ½vpeBÌÝèàeðQÆ·éB94 * QƵ½ÝèàeÍpk_eprpÉwèµ½ÉÔ³êéB89 * eobjidで指定したECHONETオブジェクトの、epcで指定したプロパティの設定内容を参照する。 90 * 参照した設定内容はpk_eprpに指定したメモリに返される。 95 91 */ 96 92 ER ecn_ref_eprp(ID fa_eobjid, uint8_t fa_epc, T_RPRP *fp_eprp) … … 101 97 102 98 if (!fp_eprp) 103 return E_PAR; /* p[^G[*/99 return E_PAR; /* パラメータエラー */ 104 100 105 101 if ((fa_eobjid <= 0) || (fa_eobjid > tmax_eobjid)) 106 return E_OBJ; /* IuWFNg¢o^*/102 return E_OBJ; /* オブジェクト未登録 */ 107 103 108 104 p_obj = &eobjinib_table[fa_eobjid - 1]; 109 105 110 /* eoj ÌÂvpeBú»è`zñ©çõ*/106 /* eojの持つプロパティ初期化定義配列から検索 */ 111 107 p = p_obj->eprp; 112 108 for (i = 0; i < p_obj->eprpcnt; i++, p++) { … … 117 113 } 118 114 119 return E_PAR; /* p[^G[*/120 } 121 122 /* 123 * vpeBl«Ývisvjd¶ì¬124 * ø125 * T_EDATA **ppk_esv æ¾µ½d¶Ìi[æ126 * ID fa_deoj ¶æÌECHONETIuWFNgID127 * uint8_t fa_epc vpeBR[h128 * uint8_t fa_pdc vpeBlf[^TCY129 * const void *p_edt vpeBlf[^115 return E_PAR; /* パラメータエラー */ 116 } 117 118 /* 119 * プロパティ値書き込み要求(応答不要)電文作成 120 * 引数 121 * T_EDATA **ppk_esv 取得した電文の格納先 122 * ID fa_deoj 宛先のECHONETオブジェクトID 123 * uint8_t fa_epc プロパティコード 124 * uint8_t fa_pdc プロパティ値データサイズ 125 * const void *p_edt プロパティ値データ 130 126 * 131 * vpeBl«Ývisvjd¶ð쬷éB132 * d¶ÍdeojÅwèµ½ECHONETIuWFNgð¶æƵA133 * d¶ÌßÌvpeBlƵÄAepcÆpdcAp_edtÅwè³ê½134 * vpeBR[hAf[^TCYAf[^ðd¶ÉÝè·éB135 * 쬵½d¶ÌæªAhXÍ|C^oRÅÔ³êéB127 * プロパティ値書き込み要求(応答不要)電文を作成する。 128 * 電文はdeojで指定したECHONETオブジェクトを宛先とし、 129 * 電文の初めのプロパティ値として、epcとpdc、p_edtで指定された 130 * プロパティコード、データサイズ、データを電文に設定する。 131 * 作成した電文の先頭アドレスはポインタ経由で返される。 136 132 */ 137 133 ER ecn_esv_seti(T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc, uint8_t fa_pdc, … … 142 138 143 139 /* 144 * vpeBl«Ývivjd¶ì¬145 * ø146 * T_EDATA **ppk_esv æ¾µ½d¶Ìi[æ147 * ID fa_deoj ¶æÌECHONETIuWFNgID148 * uint8_t fa_epc vpeBR[h149 * uint8_t fa_pdc vpeBlf[^TCY150 * const void *p_edt vpeBlf[^140 * プロパティ値書き込み要求(応答要)電文作成 141 * 引数 142 * T_EDATA **ppk_esv 取得した電文の格納先 143 * ID fa_deoj 宛先のECHONETオブジェクトID 144 * uint8_t fa_epc プロパティコード 145 * uint8_t fa_pdc プロパティ値データサイズ 146 * const void *p_edt プロパティ値データ 151 147 * 152 * vpeBl«Ývivjd¶ð쬷éB153 * d¶ÍdeojÅwèµ½ECHONETIuWFNgð¶æƵA154 * d¶ÌßÌvpeBlƵÄAepcÆpdcAp_edtÅwè³ê½155 * vpeBR[hAf[^TCYAf[^ðd¶ÉÝè·éB156 * 쬵½d¶ÌæªAhXÍ|C^oRÅÔ³êéB148 * プロパティ値書き込み要求(応答要)電文を作成する。 149 * 電文はdeojで指定したECHONETオブジェクトを宛先とし、 150 * 電文の初めのプロパティ値として、epcとpdc、p_edtで指定された 151 * プロパティコード、データサイズ、データを電文に設定する。 152 * 作成した電文の先頭アドレスはポインタ経由で返される。 157 153 */ 158 154 ER ecn_esv_setc(T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc, uint8_t fa_pdc, … … 163 159 164 160 /* 165 * vpeBlÇÝoµvd¶ì¬166 * ø167 * T_EDATA **ppk_esv æ¾µ½d¶Ìi[æ168 * ID fa_deoj ¶æÌECHONETIuWFNgID169 * uint8_t fa_epc vpeBR[h161 * プロパティ値読み出し要求電文作成 162 * 引数 163 * T_EDATA **ppk_esv 取得した電文の格納先 164 * ID fa_deoj 宛先のECHONETオブジェクトID 165 * uint8_t fa_epc プロパティコード 170 166 * 171 * vpeBlÇÝoµvd¶ð쬷éB172 * d¶ÍdeojÅwèµ½ECHONETIuWFNgð¶æƵA173 * d¶ÌßÌvpeBlƵÄAepcÅwè³ê½174 * vpeBR[hðd¶ÉÝè·éB175 * 쬵½d¶ÌæªAhXÍ|C^oRÅÔ³êéB167 * プロパティ値読み出し要求電文を作成する。 168 * 電文はdeojで指定したECHONETオブジェクトを宛先とし、 169 * 電文の初めのプロパティ値として、epcで指定された 170 * プロパティコードを電文に設定する。 171 * 作成した電文の先頭アドレスはポインタ経由で返される。 176 172 */ 177 173 ER ecn_esv_get(T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc) … … 181 177 182 178 /* 183 * vpeBlÊmvd¶ì¬184 * ø185 * T_EDATA **ppk_esv æ¾µ½d¶Ìi[æ186 * ID fa_deoj ¶æÌECHONETIuWFNgID187 * uint8_t fa_epc vpeBR[h179 * プロパティ値通知要求電文作成 180 * 引数 181 * T_EDATA **ppk_esv 取得した電文の格納先 182 * ID fa_deoj 宛先のECHONETオブジェクトID 183 * uint8_t fa_epc プロパティコード 188 184 * 189 * vpeBlÊmvd¶ð쬷éB190 * d¶ÍdeojÅwèµ½ECHONETIuWFNgð¶æƵA191 * d¶ÌßÌvpeBlƵÄAepcÅwè³ê½192 * vpeBR[hðd¶ÉÝè·éB193 * 쬵½d¶ÌæªAhXÍ|C^oRÅÔ³êéB185 * プロパティ値通知要求電文を作成する。 186 * 電文はdeojで指定したECHONETオブジェクトを宛先とし、 187 * 電文の初めのプロパティ値として、epcで指定された 188 * プロパティコードを電文に設定する。 189 * 作成した電文の先頭アドレスはポインタ経由で返される。 194 190 */ 195 191 ER ecn_esv_inf_req(T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc) … … 199 195 200 196 /* 201 * vpeBl«ÝEÇÝoµvd¶ì¬202 * ø203 * T_EDATA **ppk_esv æ¾µ½d¶Ìi[æ204 * ID fa_deoj ¶æÌECHONETIuWFNgID205 * uint8_t fa_epc vpeBR[h206 * uint8_t fa_pdc vpeBlf[^TCY207 * const void *p_edt vpeBlf[^197 * プロパティ値書き込み・読み出し要求電文作成 198 * 引数 199 * T_EDATA **ppk_esv 取得した電文の格納先 200 * ID fa_deoj 宛先のECHONETオブジェクトID 201 * uint8_t fa_epc プロパティコード 202 * uint8_t fa_pdc プロパティ値データサイズ 203 * const void *p_edt プロパティ値データ 208 204 * 209 * vpeBl«ÝEÇÝoµvd¶ð쬷éB210 * d¶ÍdeojÅwèµ½ECHONETIuWFNgð¶æƵA211 * d¶ÌßÌvpeBlƵÄAepcÆpdcAp_edtÅwè³ê½212 * vpeBR[hAf[^TCYAf[^ðd¶ÉÝè·éB213 * 쬵½d¶ÌæªAhXÍ|C^oRÅÔ³êéB205 * プロパティ値書き込み・読み出し要求電文を作成する。 206 * 電文はdeojで指定したECHONETオブジェクトを宛先とし、 207 * 電文の初めのプロパティ値として、epcとpdc、p_edtで指定された 208 * プロパティコード、データサイズ、データを電文に設定する。 209 * 作成した電文の先頭アドレスはポインタ経由で返される。 214 210 */ 215 211 ER ecn_esv_set_get(T_EDATA **ppk_esv, ID fa_deoj, uint8_t fa_epc, uint8_t fa_pdc, … … 220 216 221 217 /* 222 * vpeBl«ÝEÇÝoµvd¶ì¬FÜèÔµwè223 * vpeBl«ÝEÇÝoµvd¶ì¬ÌA«ÝvpeBzñðI¦Ä224 * ÇÝoµvpeBzñÉÚéÉp¢éB218 * プロパティ値書き込み・読み出し要求電文作成:折り返し指定 219 * プロパティ値書き込み・読み出し要求電文作成中の、書き込みプロパティ配列を終えて 220 * 読み出しプロパティ配列に移る時に用いる。 225 221 */ 226 222 ER ecn_trn_set_get(T_EDATA *ppk_esv, int *p_trn_pos) … … 233 229 return E_PAR; 234 230 235 /* vpeBÇÝÝ«ÝÌwbhîñðL^*/231 /* プロパティ読み込み件数書き込み時のヘッド情報を記録 */ 236 232 *p_trn_pos = _ecn_fbs_get_datalen(*(ECN_FBS_ID *)&ppk_esv); 237 233 238 /* d¶pÉf[^ÇÁE±Ì_ÅÌd¶vpeBðL^*/234 /* 応答電文用メモリにデータ追加・この時点での応答電文中プロパティ件数を記録 */ 239 235 a_ret = _ecn_fbs_add_data_ex(*(ECN_FBS_ID *)&ppk_esv, &ppk_esv->hdr.edata.opc, 1); 240 236 if (a_ret) { … … 243 239 } 244 240 245 /* d¶vpeBð 0 Éß·i¡ãAI¹wè·éÜÅÍÇÝoµvpeBÉÈéj*/241 /* 応答電文中プロパティ件数を 0 に戻す(今後、終了指定するまでは読み出しプロパティ件数になる) */ 246 242 ppk_esv->hdr.edata.opc = 0; 247 243 … … 250 246 251 247 /* 252 * vpeBl«ÝEÇÝoµvd¶ì¬FI¹wè253 * vpeBl«ÝEÇÝoµvd¶ì¬ÌAÇÝoµvpeBzñðI¦éÉp¢éB248 * プロパティ値書き込み・読み出し要求電文作成:終了指定 249 * プロパティ値書き込み・読み出し要求電文作成中の、読み出しプロパティ配列を終える時に用いる。 254 250 */ 255 251 ER ecn_end_set_get(T_EDATA *ppk_esv, int fa_trn_pos) … … 262 258 return E_PAR; 263 259 264 /* ±Ì_ÅÌd¶vpeB(ÇÝoµvpeB)ðÛ*/260 /* この時点での応答電文中プロパティ件数(読み出しプロパティ件数)を保持 */ 265 261 a_rd_opc = ppk_esv->hdr.edata.opc; 266 262 267 /* d¶vpeB(«ÝvpeB)ðÛ¶Êu©çÇÝæè*/263 /* 応答電文中プロパティ件数(書き込みプロパティ件数)を保存位置から読み取り */ 268 264 a_wr_opc = _ecn_fbs_peek(*(ECN_FBS_ID *)&ppk_esv, fa_trn_pos); 269 265 if (a_wr_opc < 0) { … … 272 268 } 273 269 274 /* d¶vpeB(«ÝvpeB)ð³*/270 /* 応答電文中プロパティ件数(書き込みプロパティ件数)を復元 */ 275 271 ppk_esv->hdr.edata.opc = (uint8_t)a_wr_opc; 276 272 277 /* d¶vpeB(ÇÝoµvpeB)ðÛ¶ÊuÉ«Ý*/273 /* 応答電文中プロパティ件数(読み出しプロパティ件数)を保存位置に書き込み */ 278 274 a_ret = _ecn_fbs_poke(*(ECN_FBS_ID *)&ppk_esv, fa_trn_pos, a_rd_opc); 279 275 if (a_ret) { … … 286 282 287 283 /* 288 * vpeBlÊmivjd¶ì¬289 * ø290 * T_EDATA **ppk_esv æ¾µ½d¶Ìi[æ291 * ID fa_deoj ¶æÌECHONETIuWFNgID292 * ID fa_seoj M³ÌECHONETIuWFNgID293 * uint8_t fa_sepc M³ÌvpeBR[h284 * プロパティ値通知(応答要)電文作成 285 * 引数 286 * T_EDATA **ppk_esv 取得した電文の格納先 287 * ID fa_deoj 宛先のECHONETオブジェクトID 288 * ID fa_seoj 送信元のECHONETオブジェクトID 289 * uint8_t fa_sepc 送信元のプロパティコード 294 290 */ 295 291 ER ecn_esv_infc(T_EDATA **ppk_esv, ID fa_deoj, ID fa_seoj, uint8_t fa_sepc) … … 299 295 300 296 /* 301 * vd¶ÖÌvpeBwèÇÁ (vpeBf[^ªtµÈ¢êÉp¢é)297 * 要求電文へのプロパティ指定追加 (プロパティデータが付随しない場合に用いる) 302 298 */ 303 299 ER ecn_add_epc(T_EDATA *pk_esv, uint8_t epc) … … 307 303 308 304 /* 309 * vd¶ÖÌvpeBf[^ÇÁ (vpeB¨æÑtf[^ðÇÁ·é)305 * 要求電文へのプロパティデータ追加 (プロパティおよび付随データを追加する) 310 306 */ 311 307 ER ecn_add_edt(T_EDATA *pk_esv, uint8_t fa_epc, uint8_t fa_pdc, const void *p_edt) … … 316 312 317 313 if (!pk_esv) 318 return E_PAR; /* æ¾µ½FBS_IDÌi[æªNULL */314 return E_PAR; /* 取得したFBS_IDの格納先がNULL */ 319 315 if (ECHONET_MEMPOOL_BLOCK_SIZE <= fa_pdc) 320 return E_PAR; /* vpeBlTCYªå«·¬é*/316 return E_PAR; /* プロパティ値サイズが大きすぎる */ 321 317 if (!p_edt && 0 < fa_pdc) 322 return E_PAR; /* vpeBlTCYª1ÈãÈÌÉf[^|C^ªNULL */318 return E_PAR; /* プロパティ値サイズが1以上なのにデータポインタがNULL */ 323 319 324 320 a_fbs_id.ptr = (T_ECN_FST_BLK *)pk_esv; 325 321 if (((T_EDATA *)a_fbs_id.ptr)->hdr.edata.opc == 0xFF) 326 return E_PAR; /* vpeBª½·¬é*/327 328 /* vd¶pÉf[^ÇÁ*/322 return E_PAR; /* プロパティが多すぎる */ 323 324 /* 要求電文用メモリにデータ追加 */ 329 325 memset(&a_ecn_prp, 0, sizeof(a_ecn_prp)); 330 326 a_ecn_prp.epc = fa_epc; … … 338 334 } 339 335 if (0 < fa_pdc) { 340 /* tf[^ÇÁ*/336 /* 付随データ追加 */ 341 337 a_ret = _ecn_fbs_add_data_ex(a_fbs_id, p_edt, fa_pdc); 342 338 if (a_ret) { … … 347 343 } 348 344 } 349 /* vpeBCNg*/345 /* プロパティ数インクリメント */ 350 346 ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.opc++; 351 347 … … 355 351 356 352 /* 357 * vd¶ÌM358 * esv Åwè³ê½vd¶ðM·éB359 * d¶Éwè³ê½¶æ©çIPAhXðÁèµAUDPpPbgƵÄM·éB353 * 要求電文の送信 354 * esvで指定された要求電文を送信する。 355 * 電文に指定された宛先からIPアドレスを特定し、UDPパケットとして送信する。 360 356 */ 361 357 ER ecn_snd_esv(T_EDATA *pk_esv) … … 367 363 368 364 /* 369 * d¶ÌóM|[O370 * d¶ðóM·éÌðÒÂB371 * óMµ½d¶Íppk_esvÅwèµ½|C^[ÉæªAhXªÔ³êéB372 * d¶ÌóMÌL³É©©íç¸AÒ½¸ÉÖð²¯éB365 * 応答電文の受信ポーリング 366 * 応答電文を受信するのを待つ。 367 * 受信した応答電文はppk_esvで指定したポインターに先頭アドレスが返される。 368 * 応答電文の受信の有無にかかわらず、待たずに関数を抜ける。 373 369 */ 374 370 ER ecn_prcv_esv(T_EDATA **ppk_esv) … … 391 387 392 388 /* 393 * d¶Ìjü389 * 応答電文の破棄 394 390 */ 395 391 ER ecn_rel_esv(T_EDATA *pk_esv) … … 404 400 405 401 /* 406 * d¶ÌM³m[hðæ¾·é402 * 応答電文の送信元ノードを取得する 407 403 */ 408 404 ID ecn_get_enod(T_EDATA *pk_esv) … … 428 424 429 425 /* 430 * d¶ÌM³@íIuWFNgðæ¾·é426 * 応答電文の送信元機器オブジェクトを取得する 431 427 */ 432 428 ID ecn_get_eobj(T_EDATA *pk_esv) … … 439 435 p_snod = _ecn_eno_fnd(((T_ECN_FST_BLK *)pk_esv)->hdr.sender); 440 436 if (p_snod != NULL) { 441 /* m[hvt@CÌê*/437 /* ノードプロファイルの場合 */ 442 438 if ((p_esv->edata.seoj.eojx1 == EOJ_X1_PROFILE) 443 439 && (p_esv->edata.seoj.eojx2 == EOJ_X2_NODE_PROFILE)) { 444 440 p_sobj = p_snod->profile; 445 441 } 446 /* @íIuWFNgÌê*/442 /* 機器オブジェクトの場合 */ 447 443 else { 448 444 p_sobj = _ecn_eoj_fnd(p_snod, &p_esv->edata.seoj); … … 460 456 461 457 /* 462 * d¶ðÍCe[^[ú»458 * 応答電文解析イテレーター初期化 463 459 */ 464 460 ER ecn_itr_ini(T_ENUM_EPC *pk_itr, T_EDATA *pk_esv) … … 472 468 pk_itr->pk_esv = pk_esv; 473 469 pk_itr->count = pk_esv->hdr.edata.opc; 474 /* ¡ÌubNÅÌvpeB*/475 pk_itr->got_ct = 0; /* ¡ÌubNÅAÇÝæÁ½*/476 pk_itr->next_blk_ct = 0; /* ã±ubN*/477 pk_itr->is_eof = 0; /* I[ÉBµ½Añ0 */470 /* 今のブロックでのプロパティ総数 */ 471 pk_itr->got_ct = 0; /* 今のブロックで、読み取った数 */ 472 pk_itr->next_blk_ct = 0; /* 後続ブロック数 */ 473 pk_itr->is_eof = 0; /* 終端に達した時、非0 */ 478 474 pk_itr->cur = offsetof(T_ECN_EDT_HDR, ecn_prp); 479 475 480 476 switch (pk_esv->hdr.edata.esv) { 481 case ESV_SET_GET: /* 0x6E vpeBl«ÝEÇÝoµv*/482 case ESV_SET_GET_RES: /* 0x7E vpeBl«ÝEÇÝoµ*/483 case ESV_SET_GET_SNA: /* 0x5E vpeBl«ÝEÇÝoµsÂ*/477 case ESV_SET_GET: /* 0x6E プロパティ値書き込み・読み出し要求 */ 478 case ESV_SET_GET_RES: /* 0x7E プロパティ値書き込み・読み出し応答 */ 479 case ESV_SET_GET_SNA: /* 0x5E プロパティ値書き込み・読み出し不可応答 */ 484 480 pk_itr->next_blk_ct ++; 485 481 default: … … 491 487 492 488 /* 493 * d¶ðÍCe[^[CNg489 * 応答電文解析イテレーターインクリメント 494 490 */ 495 491 ER ecn_itr_nxt(T_ENUM_EPC *pk_itr, uint8_t *p_epc, uint8_t *p_pdc, void *p_edt) … … 513 509 514 510 if (pk_itr->is_eof) 515 return E_BOVR; /* f[^I¹*/511 return E_BOVR; /* データ終了 */ 516 512 if ( pk_itr->count <= pk_itr->got_ct 517 513 && pk_itr->next_blk_ct < 1) { 518 pk_itr->is_eof = 1; /* I[ÉBµ½Añ0 */519 return E_BOVR; /* f[^I¹*/514 pk_itr->is_eof = 1; /* 終端に達した時、非0 */ 515 return E_BOVR; /* データ終了 */ 520 516 } 521 517 522 518 a_fbs_id.ptr = (T_ECN_FST_BLK *)pk_itr->pk_esv; 523 519 524 /* ³ÌJ[\ÊuðÛ¶µACe[^ÌJ[\ÊuÉ·é*/520 /* 元のカーソル位置を保存し、イテレータのカーソル位置にする */ 525 521 a_rd_bak = a_fbs_id.ptr->hdr.rd; 526 522 a_fbs_id.ptr->hdr.rd = pk_itr->cur; … … 530 526 #endif 531 527 if (pk_itr->count <= pk_itr->got_ct && 0 < pk_itr->next_blk_ct) { 532 /* ubNÉÚ®*/528 /* 次ブロックに移動 */ 533 529 pk_itr->next_blk_ct --; 534 pk_itr->count = 0; /* ¡ÌubNÅÌvpeB*/535 pk_itr->got_ct = 0; /* ¡ÌubNÅAÇÝæÁ½*/536 537 /* ubNÌvpeBðÇÝæé*/530 pk_itr->count = 0; /* 今のブロックでのプロパティ総数 */ 531 pk_itr->got_ct = 0; /* 今のブロックで、読み取った数 */ 532 533 /* 次ブロックのプロパティ数を読み取る */ 538 534 a_rd_len = 0; 539 535 a_ret = _ecn_fbs_get_data(a_fbs_id, &a_ecn_prp.pdc, 1, &a_rd_len); … … 541 537 goto lb_except; 542 538 if (0 < a_rd_len) { 543 pk_itr->count = a_ecn_prp.pdc; /* ¡ÌubNÅÌvpeB*/539 pk_itr->count = a_ecn_prp.pdc; /* 今のブロックでのプロパティ総数 */ 544 540 } 545 a_ret = E_BOVR; /* f[^I¹*/541 a_ret = E_BOVR; /* データ終了 */ 546 542 goto lb_finally; 547 543 } 548 544 549 /* vpeBR[hÆf[^TCYðÇÝæé*/545 /* プロパティコードとデータサイズを読み取る */ 550 546 memset(&a_ecn_prp, 0, sizeof(a_ecn_prp)); 551 547 a_rd_len = 0; … … 556 552 ECN_DBG_PUT "ecn_itr_nxt() ecn_prp read fault." 557 553 " rd.cur=%d", pk_itr->cur ECN_DBG_END; 558 pk_itr->is_eof = 1; /* I[ÉBµ½Añ0 */559 a_ret = E_BOVR; /* f[^I¹*/554 pk_itr->is_eof = 1; /* 終端に達した時、非0 */ 555 a_ret = E_BOVR; /* データ終了 */ 560 556 goto lb_finally; 561 557 } … … 564 560 565 561 if (0 < a_ecn_prp.pdc) { 566 /* tf[^ðÇÝæé*/562 /* 付随データを読み取る */ 567 563 a_rd_len = 0; 568 564 a_ret = _ecn_fbs_get_data(a_fbs_id, p_edt, a_ecn_prp.pdc, &a_rd_len); … … 572 568 ECN_DBG_PUT "ecn_itr_nxt() edt read fault." 573 569 " rd.cur=%d,epc=0x%02X,pdc=%u", pk_itr->cur, a_ecn_prp.epc , a_ecn_prp.pdc ECN_DBG_END; 574 pk_itr->is_eof = 1; /* I[ÉBµ½Añ0 */575 a_ret = E_BOVR; /* f[^I¹*/570 pk_itr->is_eof = 1; /* 終端に達した時、非0 */ 571 a_ret = E_BOVR; /* データ終了 */ 576 572 goto lb_finally; 577 573 } … … 584 580 585 581 lb_finally: 586 /* Ce[^ÌJ[\ÊuðXV*/582 /* イテレータのカーソル位置を更新 */ 587 583 pk_itr->cur = a_fbs_id.ptr->hdr.rd; 588 584 589 585 lb_except: 590 /* ³ÌJ[\ÊuÉß·*/586 /* 元のカーソル位置に戻す */ 591 587 a_fbs_id.ptr->hdr.rd = a_rd_bak; 592 588 return a_ret; … … 594 590 595 591 /* 596 * d¶Ò¿ÌèÝM592 * 応答電文待ちの割り込み送信 597 593 */ 598 594 ER ecn_brk_wai(const void *p_dat, int fa_datsz) 599 595 { 600 596 ER a_ret; 601 ECN_FBS_ID a_fbs_id = { 0 }; /* vd¶p*/602 603 /* d¶Ò¿ÌèÝd¶ì¬*/597 ECN_FBS_ID a_fbs_id = { 0 }; /* 要求電文用メモリ */ 598 599 /* 応答電文待ちの割り込み電文作成 */ 604 600 a_ret = _ecn_mk_brk_wai(&a_fbs_id, p_dat, fa_datsz); 605 601 if (a_ret) 606 602 return a_ret; 607 603 608 /* èÝM*/604 /* 割り込み送信 */ 609 605 a_ret = _ecn_tsk_snd_mbx(a_fbs_id, true); 610 606 if (a_ret) { … … 614 610 } 615 611 616 /* ³íI¹*/612 /* 正常終了 */ 617 613 return a_ret; 618 614 619 615 lb_except: 620 /* f[^쬸sµ½çÌæðú*/616 /* データ作成失敗したら領域解放 */ 621 617 if (a_fbs_id.ptr) 622 618 _ecn_fbs_del(a_fbs_id); … … 626 622 627 623 /* 628 * èÝf[^Ìæ¾624 * 割り込みデータの取得 629 625 */ 630 626 ER ecn_get_brk_dat(T_EDATA *pk_esv, void *p_buf, int fa_bufsz, int *p_datsz) … … 646 642 } 647 643 648 /* ÇÝæèÊuðæªÉß·*/644 /* 読み取り位置を先頭に戻す */ 649 645 a_ret = _ecn_fbs_set_rpos(a_fbs, 0); 650 646 if (a_ret) { … … 654 650 } 655 651 656 /* tf[^ðÇÝÞ*/652 /* 付随データを読み込む */ 657 653 if (p_buf && 0 < fa_bufsz) { 658 654 a_len = 0; … … 671 667 #ifndef ECN_USER_DATA_PROP_SET 672 668 /* 673 * f[^ÝèÖ669 * データ設定関数 674 670 */ 675 671 int ecn_data_prop_set(const EPRPINIB *item, const void *src, int size, bool_t *anno) … … 689 685 #ifndef ECN_USER_DATA_PROP_GET 690 686 /* 691 * f[^æ¾Ö687 * データ取得関数 692 688 */ 693 689 int ecn_data_prop_get(const EPRPINIB *item, void *dst, int size) -
Property svn:mime-type
changed from
-
uKadecot/trunk/ecnl_ssp/echonet.h
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r101 r107 4 4 * Copyright (C) 2014 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¶ÌóM|[O390 * 応答電文の受信ポーリング 395 391 */ 396 392 ER ecn_prcv_esv(T_EDATA **ppk_esv); 397 393 398 394 /* 399 * d¶Ìjü395 * 応答電文の破棄 400 396 */ 401 397 ER ecn_rel_esv(T_EDATA *pk_esv); 402 398 403 399 /* 404 * d¶ÌM³m[hðæ¾·é400 * 応答電文の送信元ノードを取得する 405 401 */ 406 402 ID ecn_get_enod(T_EDATA *pk_esv); 407 403 408 404 /* 409 * d¶ÌM³@íIuWFNgðæ¾·é405 * 応答電文の送信元機器オブジェクトを取得する 410 406 */ 411 407 ID ecn_get_eobj(T_EDATA *pk_esv); 412 408 413 409 /* 414 * d¶ðÍCe[^[ú»410 * 応答電文解析イテレーター初期化 415 411 */ 416 412 ER ecn_itr_ini(T_ENUM_EPC *pk_itr, T_EDATA *pk_esv); 417 413 418 414 /* 419 * d¶ðÍCe[^[CNg415 * 応答電文解析イテレーターインクリメント 420 416 */ 421 417 ER ecn_itr_nxt(T_ENUM_EPC *pk_itr, uint8_t *p_epc, uint8_t *p_pdc, void *p_edt); 422 418 423 419 /* 424 * d¶Ò¿ÌèÝM420 * 応答電文待ちの割り込み送信 425 421 */ 426 422 ER ecn_brk_wai(const void *p_dat, int datsz); 427 423 428 424 /* 429 * èÝf[^Ìæ¾425 * 割り込みデータの取得 430 426 */ 431 427 ER ecn_get_brk_dat(T_EDATA *pk_esv, void *p_buf, int bufsz, int *p_datsz); 432 428 433 429 /* 434 * f[^ÝèÖ430 * データ設定関数 435 431 */ 436 432 int ecn_data_prop_set(const EPRPINIB *item, const void *src, int size, bool_t *anno); 437 433 438 434 /* 439 * f[^æ¾Ö435 * データ取得関数 440 436 */ 441 437 int ecn_data_prop_get(const EPRPINIB *item, void *dst, int size); -
Property svn:mime-type
changed from
-
uKadecot/trunk/ecnl_ssp/echonet.tf
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r101 r107 5 5 $ Copyright (C) 2014 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$ … … 601 597 $NL$ 602 598 603 $ ECHONET Lite m[h²ÆÌAvP[Vªvµ½d¶ÌV[PXÔ599 $ ECHONET Liteノードごとのアプリケーションが要求した電文のシーケンス番号 604 600 uint16_t _echonet_apitid_table[TNUM_ENODADR];$NL$ 605 601 $NL$ … … 610 606 611 607 $ 612 $ ECHONET Lite J[lIuWFNgID608 $ ECHONET Lite カーネルオブジェクトID 613 609 $ 614 610 const ID _echonet_ecn_svc_taskid = ECHONET_SVC_TASK;$NL$ -
Property svn:mime-type
changed from
-
uKadecot/trunk/ecnl_ssp/echonet_agent.c
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r101 r107 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 … … 183 179 184 180 /* 185 * L 186 [Ìú» 181 * キューの初期化 187 182 * 188 * p_queueÉÍL 189 [wb_ðwè·éD 183 * p_queueにはキューヘッダを指定する. 190 184 */ 191 185 Inline void … … 200 194 201 195 /* 202 * L 203 [ÌOGgÖÌ}ü 196 * キューの前エントリへの挿入 204 197 * 205 * p_queueÌOÉp_entryð}ü·éDp_queueÉL 206 [wb_ðwèµ½ê 207 * ÉÍCL 208 [ÌöÉp_entryð}ü·é±ÆÉÈéD 198 * p_queueの前にp_entryを挿入する.p_queueにキューヘッダを指定した場 199 * 合には,キューの末尾にp_entryを挿入することになる. 209 200 */ 210 201 Inline void … … 222 213 223 214 /* 224 * GgÌí215 * エントリの削除 225 216 * 226 * p_entryðL 227 [©çí·éD 217 * p_entryをキューから削除する. 228 218 */ 229 219 Inline void … … 338 328 int i = eobjid; 339 329 340 /* IuWFNgID©çÀÌðæ¾*/330 /* オブジェクトIDから実体を取得 */ 341 331 i -= (tmax_eobjid + 1); 342 332 if ((i < 0) … … 349 339 return false; 350 340 351 /* IuWFNgÌEOJðRs[*/341 /* オブジェクトのEOJをコピー */ 352 342 memcpy(eoj, &buf->obj.inib.eojx1, sizeof(*eoj)); 353 343 354 /* ®·ém[hÌIuWFNgIDðæ¾*/344 /* 所属するノードのオブジェクトIDを取得 */ 355 345 if(buf->obj.inib.enodid == 0) 356 346 i = buf->obj.eobjId; … … 364 354 } 365 355 366 /* m[hIDðæ¾*/356 /* ノードIDを取得 */ 367 357 buf = &agent->blockes[i]; 368 358 *enodid = buf->node.enodId; … … 405 395 T_ECN_EOJ *eoj, *end; 406 396 407 // vpeBÊm©æ¾ÅA397 // プロパティ通知か取得応答で、 408 398 switch (esv->hdr.edata.esv) { 409 399 case ESV_GET_RES: … … 415 405 } 416 406 417 // m[hvt@C¶Ìê407 // ノードプロファイル宛の場合 418 408 eoj = &esv->hdr.edata.seoj; 419 409 if ((eoj->eojx1 != EOJ_X1_PROFILE) || (eoj->eojx2 != EOJ_X2_NODE_PROFILE) … … 428 418 while (ecn_itr_nxt(&enm, &epc, &pdc, &edt) == E_OK) { 429 419 switch (epc) { 430 // CX^XXgÊmÌê420 // インスタンスリスト通知の場合 431 421 case 0xD5: 432 // ©m[hCX^XXgrÊmÌê422 // 自ノードインスタンスリストS通知の場合 433 423 case 0xD6: 434 // TCYªíÈ¢ê424 // サイズが合わない場合 435 425 if (pdc != (1 + edt[0] * sizeof(T_ECN_EOJ))) 436 426 return NULL; … … 773 763 ecn_obj_t *sobj; 774 764 775 /* ÃIÉè`³ê½M³Ìê*/765 /* 静的に定義された送信元の場合 */ 776 766 if ((*ppk_snod != NULL) && (*ppk_snod)->eobjs != NULL) { 777 /* µÈ¢*/767 /* 処理しない */ 778 768 return; 779 769 } … … 781 771 snod = ecn_agent_find_node2(*ppk_snod); 782 772 783 /* M³ðmçÈ©Á½ç*/773 /* 送信元を知らなかったら */ 784 774 if (snod == NULL) { 785 /* M³Ìm[hîñðVKÉì¬*/775 /* 送信元のノード情報を新規に作成 */ 786 776 snod = ecn_agent_create_node(agent, esv); 787 777 if (snod == NULL) … … 791 781 sobj = ecn_agent_find_obj2(snod, *ppk_sobj); 792 782 793 /* m[hvt@CÌê*/783 /* ノードプロファイルの場合 */ 794 784 if ((esv->hdr.edata.seoj.eojx1 == EOJ_X1_PROFILE) 795 785 && (esv->hdr.edata.seoj.eojx2 == EOJ_X2_NODE_PROFILE)) { 796 786 sobj = &snod->base; 797 787 } 798 /* @íIuWFNgÌê*/788 /* 機器オブジェクトの場合 */ 799 789 else { 800 790 sobj = ecn_agent_find_eobj(&snod->eobj, esv->hdr.edata.seoj); … … 841 831 ecn_obj_t *obj = node->current; 842 832 843 // vpeBlÇÝoµv833 // プロパティ値読み出し要求 844 834 ecn_esv_get(&esv, obj->eobjId, 0x9E); 845 835 ecn_snd_esv(esv); … … 854 844 ecn_obj_t *obj = node->current; 855 845 856 // vpeBlÇÝoµv846 // プロパティ値読み出し要求 857 847 ecn_esv_get(&esv, obj->eobjId, 0x9F); 858 848 ecn_snd_esv(esv); … … 867 857 ecn_obj_t *obj = node->current; 868 858 869 // vpeBlÇÝoµv859 // プロパティ値読み出し要求 870 860 ecn_esv_get(&esv, obj->eobjId, 0x9D); 871 861 ecn_snd_esv(esv); … … 881 871 ecn_device_t *device; 882 872 883 /* obj ªwè³êĢȢê*/873 /* objが指定されていない場合 */ 884 874 if(obj == NULL){ 885 /* ±Ìm[hðÔ·*/875 /* このノードを返す */ 886 876 node->current = &node->base; 887 877 return; 888 878 } 889 /* m[hÌê*/879 /* ノードの場合 */ 890 880 else if((obj->inib.eojx1 == EOJ_X1_PROFILE) && (obj->inib.eojx2 == EOJ_X2_NODE_PROFILE)){ 891 881 node = (ecn_node_t *)obj; 892 882 893 /* zºÌ@íðÔ·*/883 /* 配下の機器を返す */ 894 884 queue = node->devices.p_next; 895 885 device = (ecn_device_t *)cast_obj(queue); 896 886 } 897 /* @íÌê*/887 /* 機器の場合 */ 898 888 else{ 899 /* Ì@íðÔ·*/889 /* 次の機器を返す */ 900 890 node = ((ecn_device_t *)obj)->node; 901 891 queue = cast_queue(obj)->p_next; … … 903 893 } 904 894 905 /* »Ì@íªö¾Á½ê*/895 /* その機器が末尾だった場合 */ 906 896 if(&node->devices == queue){ 907 897 node->current = NULL; … … 1040 1030 bool_t has = false; 1041 1031 1042 /* m[hÌêÍCX^XXgÊmÆ©m[hCX^XXgrÊmðK{Åó¯æé*/1032 /* ノードの場合はインスタンスリスト通知と自ノードインスタンスリストS通知を必須で受け取る */ 1043 1033 if ((fp_obj->enodid == 0) && ((fa_epc == 0xD5) || (fa_epc == 0xD6))) 1044 1034 has = true; … … 1074 1064 1075 1065 switch (item->eprpcd) { 1076 /* CX^XXgÊmÌê*/1066 /* インスタンスリスト通知の場合 */ 1077 1067 case 0xD5: 1078 /* ©m[hCX^XXgrÊmÌê*/1068 /* 自ノードインスタンスリストS通知の場合 */ 1079 1069 case 0xD6: 1080 1070 if ((node != NULL) && (node->state == ecn_node_state_idle)) { … … 1094 1084 } 1095 1085 break; 1096 /* ÊmvpeB}bvÌê*/1086 /* 通知プロパティマップの場合 */ 1097 1087 case 0x9D: 1098 1088 eprpcnt = edt[0]; 1099 1089 1100 1090 if (eprpcnt < 16) { 1101 /* TCY`FbN*/1091 /* サイズチェック */ 1102 1092 if (eprpcnt + 1 != size) 1103 1093 return 0; … … 1107 1097 } 1108 1098 else { 1109 /* TCY`FbN*/1099 /* サイズチェック */ 1110 1100 if (size != 17) 1111 1101 return 0; … … 1116 1106 sobj->pmapFlag |= PMAP_FLAG_ANNO; 1117 1107 break; 1118 /* SET vpeB}bvÌê*/1108 /* SETプロパティマップの場合 */ 1119 1109 case 0x9E: 1120 1110 eprpcnt = edt[0]; 1121 1111 1122 1112 if (eprpcnt < 16) { 1123 /* TCY`FbN*/1113 /* サイズチェック */ 1124 1114 if (eprpcnt + 1 != size) 1125 1115 return 0; … … 1129 1119 } 1130 1120 else { 1131 /* TCY`FbN*/1121 /* サイズチェック */ 1132 1122 if (size != 17) 1133 1123 return 0; … … 1138 1128 sobj->pmapFlag |= PMAP_FLAG_SET; 1139 1129 break; 1140 /* GET vpeB}bvÌê*/1130 /* GETプロパティマップの場合 */ 1141 1131 case 0x9F: 1142 1132 eprpcnt = edt[0]; 1143 1133 1144 1134 if (eprpcnt < 16) { 1145 /* TCY`FbN*/1135 /* サイズチェック */ 1146 1136 if (eprpcnt + 1 != size) 1147 1137 return 0; … … 1151 1141 } 1152 1142 else { 1153 /* TCY`FbN*/1143 /* サイズチェック */ 1154 1144 if (size != 17) 1155 1145 return 0; -
Property svn:mime-type
changed from
-
uKadecot/trunk/ecnl_ssp/echonet_agent.h
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r101 r107 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 … … 118 112 typedef struct ecn_inm_get_device_item 119 113 { 120 ID eobjid; /* ECHONET Lite IuWFNgID */121 ID enodid; /* ECHONET Lite m[hvt@CIuWFNgID */122 uint8_t state; /* îñûWóÔ*/123 uint8_t eojx1; /* ECHONET Lite IuWFNgÌNXO[vR[h*/124 uint8_t eojx2; /* ECHONET Lite IuWFNgÌNXR[h*/125 uint8_t eojx3; /* ECHONET Lite IuWFNgÌCX^XR[h*/126 ECN_ENOD_ID addrid; /* IP AhXæ¾pID */114 ID eobjid; /* ECHONET Lite オブジェクトID */ 115 ID enodid; /* ECHONET Lite ノードプロファイルオブジェクトID */ 116 uint8_t state; /* 情報収集状態 */ 117 uint8_t eojx1; /* ECHONET Lite オブジェクトのクラスグループコード */ 118 uint8_t eojx2; /* ECHONET Lite オブジェクトのクラスコード */ 119 uint8_t eojx3; /* ECHONET Lite オブジェクトのインスタンスコード */ 120 ECN_ENOD_ID addrid; /* IPアドレス取得用ID */ 127 121 } ecn_inm_get_device_item_t; 128 122 … … 149 143 } ecn_inm_get_device_info_res_t; 150 144 151 /* ú»*/145 /* 初期化 */ 152 146 void ecn_agent_init(void); 153 /* m[hðõ*/147 /* ノードを検索 */ 154 148 ecn_node_t *ecn_agent_find_node(ECN_ENOD_ID enodid); 155 /* @íðõ*/149 /* 機器を検索 */ 156 150 ecn_obj_t *ecn_agent_find_eobj(const EOBJCB *pk_nod, T_ECN_EOJ eoj); 157 /* IuWFNgIDðæ¾*/151 /* オブジェクトIDを取得 */ 158 152 ID ecn_agent_get_eobj(const EOBJINIB *pk_obj); 159 /* Ì@íðæ¾*/153 /* 次の機器を取得 */ 160 154 const EOBJINIB *ecn_agent_next_eobj(const EOBJCB *pk_nod, const EOBJINIB *pk_obj); 161 /* IuWFNgID©çEOJÆm[hIDðæ¾*/155 /* オブジェクトIDからEOJとノードIDを取得 */ 162 156 bool_t ecn_agent_get_eoj_enodid(ID eobjid, T_ECN_EOJ *eoj, ECN_ENOD_ID *enodid); 163 /* ^CAEglðÔ·*/157 /* タイムアウト値を返す */ 164 158 TMO ecn_agent_get_timer(); 165 /* ^C}[ÌÔðißé*/159 /* タイマーの時間を進める */ 166 160 void ecn_agent_progress(TMO interval); 167 /* ^CAEgi̽ßÌÄÑoµj*/161 /* タイムアウト処理(のための呼び出し) */ 168 162 void ecn_agent_timeout(); 169 /* àbZ[W*/163 /* 内部メッセージ処理 */ 170 164 bool_t ecn_agent_proc_int_msg(ECN_FBS_ID fbs, uint8_t cmd); 171 /* ECHONET d¶óM*/165 /* ECHONET電文受信処理 */ 172 166 void ecn_agent_proc_ecn_msg(const EOBJCB **snod, const EOBJINIB **sobj, T_EDATA *esv); 173 /* ECHONET d¶óMI¹*/167 /* ECHONET電文受信処理終了 */ 174 168 void ecn_agent_proc_ecn_msg_end(); 175 /* vpeBðæ¾*/169 /* プロパティを取得 */ 176 170 const EPRPINIB *ecn_agent_get_property(const EOBJINIB *fp_obj, uint8_t fa_epc, const EPRPINIB *item); 177 171 -
Property svn:mime-type
changed from
-
uKadecot/trunk/ecnl_ssp/echonet_chk.tf
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r101 r107 5 5 $ Copyright (C) 2014 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
-
uKadecot/trunk/ecnl_ssp/echonet_class.h
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r101 r107 4 4 * Copyright (C) 2014 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
-
uKadecot/trunk/ecnl_ssp/echonet_dbg.c
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r101 r107 4 4 * Copyright (C) 2014 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 … … 71 67 static ER _ecn_dbg_wai_syslog(void); 72 68 /* 73 * syslog() obt@É]TªÅ«éÜÅÒÂ69 * syslog()バッファに余裕ができるまで待つ 74 70 */ 75 71 static ER _ecn_dbg_wai_syslog(void) … … 112 108 113 109 /* 114 * fobOoÍ115 * áFECN_DBG_PUT "task start" ECN_DBG_END;110 * デバッグ出力 111 * 例: ECN_DBG_PUT "task start" ECN_DBG_END; 116 112 */ 117 113 int _ecn_dbg_dbgput(const char *fp_srcloc, const char *fp_form, ...) … … 122 118 #ifdef ECN_DBG_PUT_USE_STATIC 123 119 #ifndef SEM_ECN_DBG_PUT 124 /* 256byte obt@8{[e[V*/120 /* 256byteバッファ8本ローテーション */ 125 121 static char a_buf[8][256]; 126 122 static volatile uint_t a_buf_idx = 0; 127 123 uint_t a_buf_idx_a; 128 124 #else 129 /* Z}tHðp¢ÄA1{Ìobt@ãɶñðÀ×Äg¤*/125 /* セマフォを用いて、1本のバッファ上に文字列を並べて使う */ 130 126 static char a_buf[1024]; 131 127 static volatile uint_t a_buf_pos = 0; … … 152 148 p_buf = a_buf[a_buf_idx_a & 0x07]; 153 149 #else 154 if (sizeof(a_buf) - a_buf_pos < 80) /* cèª80byte¢ÉÈÁ½çAæªÉßé*/150 if (sizeof(a_buf) - a_buf_pos < 80) /* 残りが80byte未満になったら、先頭に戻る */ 155 151 a_buf_pos = 0; 156 152 p_buf = a_buf + a_buf_pos; 157 153 a_buf_len = sizeof(a_buf) - a_buf_pos - 1; 158 if (80 * 2 <= a_buf_len) /* 80byte*2 ÈãÌ]ª 餿ÍAö80byteðc·*/154 if (80 * 2 <= a_buf_len) /* 80byte*2以上の余白があるうちは、末尾80byteを残す */ 159 155 a_buf_len -= 80; 160 156 #endif /* #ifdef SEM_ECN_DBG_PUT */ … … 180 176 #ifdef SEM_ECN_DBG_PUT 181 177 a_buf_len = strlen(p_buf) + 1; 182 /* cèª80byte¢ÉÈÁ½ç*/178 /* 残りが80byte未満になったら */ 183 179 if (sizeof(a_buf) - a_buf_pos - a_buf_len < 80) { 184 /* æªÉßé*/180 /* 先頭に戻る */ 185 181 a_buf_pos = 0; 186 182 } else { … … 190 186 #endif 191 187 192 _ECN_DBG_WAI_SYSLOG; /* syslog() obt@É]TªÅ«éÜÅÒÂ*/188 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 193 189 194 190 #ifdef SEM_ECN_DBG_PUT … … 206 202 } 207 203 208 /* ECN_ENOD_ID ̶ñÏ·*/204 /* ECN_ENOD_IDの文字列変換 */ 209 205 const char *_ecn_dbg_enod2str(ECN_ENOD_ID fa_enod_id) 210 206 { … … 254 250 255 251 /* 256 * oCi_voÍ252 * バイナリダンプ出力 257 253 */ 258 254 void _ecn_dbg_bindmp(const uint8_t *buffer, size_t len) 259 255 { 260 /* static ÌæÌobt@ðØèÖ¦éÂ(2^n) */256 /* static領域のバッファを切り替える個数(2^n) */ 261 257 #define _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT (4) 262 258 /* */ … … 264 260 #ifdef _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT 265 261 #undef _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT 266 /* Z}tH(SEM_ECN_DBG_BINDMP)ªè`³êÄ¢éêAobt@ØèÖ¦ÍsvÈÌÅundef */262 /* セマフォ(SEM_ECN_DBG_BINDMP)が定義されている場合、バッファ切り替えは不要なのでundef */ 267 263 #endif 268 264 #endif 269 265 #ifndef _ECN_FBS_DBG_BINDMP_BUFLEN 270 /* obt@TCY(bindmpÌ1sªûÜéTCY) */266 /* バッファサイズ(bindmp中の1行が収まるサイズ) */ 271 267 #define _ECN_FBS_DBG_BINDMP_BUFLEN (80) 272 268 #endif 273 269 #ifdef _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT 274 /* static ÌæÌobt@ðØèÖ¦é½ßÌÇpÏ*/270 /* static領域のバッファを切り替えるための管理用変数 */ 275 271 static volatile uint8_t a_idx_vol = 0; 276 /* static ÌæÌobt@ØèÖ¦Ìæ*/272 /* static領域のバッファ切り替え領域 */ 277 273 static char a_buf_area[1 << _ECN_FBS_DBG_BINDMP_BUF_MAX_BIT][_ECN_FBS_DBG_BINDMP_BUFLEN]; 278 274 uint8_t a_idx; 279 275 char *a_buf; 280 276 #else 281 /* static ÌæÌobt@Ìæ*/277 /* static領域のバッファ領域 */ 282 278 static char a_buf[_ECN_FBS_DBG_BINDMP_BUFLEN]; 283 279 #endif 284 const uint8_t *p = buffer; /* ÇÝæè|C^*/280 const uint8_t *p = buffer; /* 読み取りポインタ */ 285 281 int i, a_blk, a_blk_max, a_pos = 0; 286 282 const T_ECN_EDT_HDR *p_req_esv; … … 300 296 } 301 297 #ifndef ECN_DBG_BINDMP_MAXLEN 302 /* bindmp oÍÌÅåTCY*/298 /* bindmp出力の最大サイズ */ 303 299 #define ECN_DBG_BINDMP_MAXLEN 1600 304 300 #endif … … 315 311 for (a_blk = 0; p && a_blk < a_blk_max; p = ((T_ECN_FST_BLK *)buffer)->lnk.p_sub[a_blk++]->dat) { 316 312 if (0 < a_blk) { 317 _ECN_DBG_WAI_SYSLOG; /* syslog() obt@É]TªÅ«éÜÅÒÂ*/313 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 318 314 syslog(LOG_NOTICE, "p_sub[%d] (0x%08X)", a_blk - 1, p); 319 315 } … … 322 318 if (i % 16 == 0) { 323 319 if (a_buf[0]) { 324 _ECN_DBG_WAI_SYSLOG; /* syslog() obt@É]TªÅ«éÜÅÒÂ*/320 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 325 321 syslog(LOG_NOTICE, "%s", a_buf); 326 322 } … … 342 338 } 343 339 if (a_buf[0]) { 344 _ECN_DBG_WAI_SYSLOG; /* syslog() obt@É]TªÅ«éÜÅÒÂ*/340 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 345 341 syslog(LOG_NOTICE, "%s", a_buf); 346 342 } … … 353 349 case ECN_MSG_ECHONET: 354 350 p_req_esv = &((const T_ECN_FST_BLK *)buffer)->d.t_esv; 355 _ECN_DBG_WAI_SYSLOG; /* syslog() obt@É]TªÅ«éÜÅÒÂ*/351 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 356 352 syslog(LOG_NOTICE, " sender: %d %s, target: %d %s", 357 353 ((T_ECN_FST_BLK *)buffer)->hdr.sender, _ecn_dbg_enod2str(((T_ECN_FST_BLK *)buffer)->hdr.sender), 358 354 ((T_ECN_FST_BLK *)buffer)->hdr.target, _ecn_dbg_enod2str(((T_ECN_FST_BLK *)buffer)->hdr.target)); 359 _ECN_DBG_WAI_SYSLOG; /* syslog() obt@É]TªÅ«éÜÅÒÂ*/355 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 360 356 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); 361 _ECN_DBG_WAI_SYSLOG; /* syslog() obt@É]TªÅ«éÜÅÒÂ*/357 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 362 358 syslog(LOG_NOTICE, " edata: 0x%06X 0x%06X 0x%02X 0x%02X (%s)", 363 359 p_req_esv->edata.seoj.eojx1 << 16 | p_req_esv->edata.seoj.eojx2 << 8 | p_req_esv->edata.seoj.eojx3, 364 360 p_req_esv->edata.deoj.eojx1 << 16 | p_req_esv->edata.deoj.eojx2 << 8 | p_req_esv->edata.deoj.eojx3, 365 361 p_req_esv->edata.esv, p_req_esv->edata.opc, _ecn_dbg_esv2str(p_req_esv->edata.esv)); 366 _ECN_DBG_WAI_SYSLOG; /* syslog() obt@É]TªÅ«éÜÅÒÂ*/362 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 367 363 syslog(LOG_NOTICE, " ecn_prp: 0x%02X 0x%02X", p_req_esv->ecn_prp.epc, p_req_esv->ecn_prp.pdc); 368 _ECN_DBG_WAI_SYSLOG; /* syslog() obt@É]TªÅ«éÜÅÒÂ*/364 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 369 365 syslog(LOG_NOTICE, " cur(blk/pos): wr %d/%d, rd %d/%d", 370 366 (int)((T_ECN_FST_BLK *)buffer)->hdr.wr.blk, … … 403 399 && ((const T_ECN_FST_BLK *)buffer)->bin[1] == 0x81) { 404 400 p_req_esv = (const T_ECN_EDT_HDR *)&((const T_ECN_FST_BLK *)buffer)->bin[0]; 405 _ECN_DBG_WAI_SYSLOG; /* syslog() obt@É]TªÅ«éÜÅÒÂ*/401 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 406 402 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); 407 _ECN_DBG_WAI_SYSLOG; /* syslog() obt@É]TªÅ«éÜÅÒÂ*/403 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 408 404 syslog(LOG_NOTICE, " edata: 0x%06X 0x%06X 0x%02X 0x%02X (%s)", 409 405 p_req_esv->edata.seoj.eojx1 << 16 | p_req_esv->edata.seoj.eojx2 << 8 | p_req_esv->edata.seoj.eojx3, 410 406 p_req_esv->edata.deoj.eojx1 << 16 | p_req_esv->edata.deoj.eojx2 << 8 | p_req_esv->edata.deoj.eojx3, 411 407 p_req_esv->edata.esv, p_req_esv->edata.opc, _ecn_dbg_esv2str(p_req_esv->edata.esv)); 412 _ECN_DBG_WAI_SYSLOG; /* syslog() obt@É]TªÅ«éÜÅÒÂ*/408 _ECN_DBG_WAI_SYSLOG; /* syslog()バッファに余裕ができるまで待つ */ 413 409 syslog(LOG_NOTICE, " ecn_prp: 0x%02X 0x%02X", p_req_esv->ecn_prp.epc, p_req_esv->ecn_prp.pdc); 414 410 } … … 419 415 420 416 /* 421 * ECHONET Lite T[rXR[h¶ñÏ·417 * ECHONET Liteサービスコード文字列変換 422 418 */ 423 419 const char *_ecn_dbg_esv2str(uint8_t fa_esv) 424 420 { 425 421 switch (fa_esv) { 426 case ESV_SET_I_SNA: return " vpeBl«ÝvsÂ"; /* 0x50 */427 case ESV_SET_C_SNA: return " vpeBl«ÝvsÂ"; /* 0x51 */428 case ESV_GET_SNA: return " vpeBlÇÝoµsÂ"; /* 0x52 */429 case ESV_INF_SNA: return " vpeBlÊmsÂ"; /* 0x53 */430 case ESV_SET_GET_SNA: return " vpeBl«ÝEÇÝoµsÂ"; /* 0x5E */431 case ESV_SET_I: return " vpeBl«Ývisvj"; /* 0x60 */432 case ESV_SET_C: return " vpeBl«Ývivj"; /* 0x61 */433 case ESV_GET: return " vpeBlÇÝoµv"; /* 0x62 */434 case ESV_INF_REQ: return " vpeBlÊmv"; /* 0x63 */435 case ESV_SET_GET: return " vpeBl«ÝEÇÝoµv"; /* 0x6E */436 case ESV_SET_RES: return " vpeBl«Ý"; /* 0x71 */437 case ESV_GET_RES: return " vpeBlÇÝoµ"; /* 0x72 */438 case ESV_INF: return " vpeBlÊm"; /* 0x73 */439 case ESV_INFC: return " vpeBlÊmivj"; /* 0x74 */440 case ESV_SET_GET_RES: return " vpeBl«ÝEÇÝoµ"; /* 0x7E */441 case ESV_INFC_RES: return " vpeBlÊm"; /* 0x7A */422 case ESV_SET_I_SNA: return "プロパティ値書き込み要求不可応答"; /* 0x50 */ 423 case ESV_SET_C_SNA: return "プロパティ値書き込み要求不可応答"; /* 0x51 */ 424 case ESV_GET_SNA: return "プロパティ値読み出し不可応答"; /* 0x52 */ 425 case ESV_INF_SNA: return "プロパティ値通知不可応答"; /* 0x53 */ 426 case ESV_SET_GET_SNA: return "プロパティ値書き込み・読み出し不可応答"; /* 0x5E */ 427 case ESV_SET_I: return "プロパティ値書き込み要求(応答不要)"; /* 0x60 */ 428 case ESV_SET_C: return "プロパティ値書き込み要求(応答要)"; /* 0x61 */ 429 case ESV_GET: return "プロパティ値読み出し要求"; /* 0x62 */ 430 case ESV_INF_REQ: return "プロパティ値通知要求"; /* 0x63 */ 431 case ESV_SET_GET: return "プロパティ値書き込み・読み出し要求"; /* 0x6E */ 432 case ESV_SET_RES: return "プロパティ値書き込み応答"; /* 0x71 */ 433 case ESV_GET_RES: return "プロパティ値読み出し応答"; /* 0x72 */ 434 case ESV_INF: return "プロパティ値通知"; /* 0x73 */ 435 case ESV_INFC: return "プロパティ値通知(応答要)"; /* 0x74 */ 436 case ESV_SET_GET_RES: return "プロパティ値書き込み・読み出し応答"; /* 0x7E */ 437 case ESV_INFC_RES: return "プロパティ値通知応答"; /* 0x7A */ 442 438 default: 443 439 return "(unknown)"; -
Property svn:mime-type
changed from
-
uKadecot/trunk/ecnl_ssp/echonet_dbg.cfg
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r101 r107 4 4 * Copyright (C) 2014 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
-
uKadecot/trunk/ecnl_ssp/echonet_dbg.h
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r101 r107 4 4 * Copyright (C) 2014 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 … … 56 52 #define ECN_DBG_PUT syslog(LOG_WARNING, 57 53 #define ECN_DBG_END ) 58 /* áFECN_DBG_PUT "task start" ECN_DBG_END; */54 /* 例: ECN_DBG_PUT "task start" ECN_DBG_END; */ 59 55 #else 60 56 #define ECN_DBG_PUT for (;0; … … 62 58 #endif 63 59 64 /* fobOoÍ(CARP) */60 /* デバッグ出力(CARP) */ 65 61 #ifdef ECN_CAP_PUT_ENA 66 62 #define ECN_CAP_PUT syslog(LOG_DEBUG, 67 63 #define ECN_CAP_END ) 68 /* áFECN_CAP_PUT "task start" ECN_CAP_END; */64 /* 例: ECN_CAP_PUT "task start" ECN_CAP_END; */ 69 65 #else 70 66 #define ECN_CAP_PUT for (;0; -
Property svn:mime-type
changed from
-
uKadecot/trunk/ecnl_ssp/echonet_fbs.c
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r101 r107 4 4 * Copyright (C) 2014 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 … … 353 349 } 354 350 355 /* ubNæ¾ ok:|C^NG:NULL */351 /* メモリブロック取得 ok:ポインタ NG:NULL */ 356 352 void *_ecn_fbs_mbx_get(ECN_FBS_SIZE_T fa_req_size) 357 353 { … … 363 359 } 364 360 365 /* ubNðú*/361 /* メモリブロック解放 */ 366 362 ER _ecn_fbs_mbx_rel(void *p) 367 363 { … … 369 365 } 370 366 371 /* ÌæmÛ*/367 /* 領域確保 */ 372 368 ER _ecn_fbs_cre(ECN_FBS_SIZE_T fa_req_size, ECN_FBS_ID *fp_id) 373 369 { … … 375 371 } 376 372 377 /* Ìæðú*/373 /* 領域解放 */ 378 374 ER _ecn_fbs_del(ECN_FBS_ID fa_id) 379 375 { … … 381 377 } 382 378 383 /* Ûf[^ÌL³*/379 /* 保持データの有無 */ 384 380 bool_t _ecn_fbs_exist_data(ECN_FBS_ID fa_id) 385 381 { … … 387 383 } 388 384 389 /* Ûf[^·Ìæ¾*/385 /* 保持データ長の取得 */ 390 386 ECN_FBS_SSIZE_T _ecn_fbs_get_datalen(ECN_FBS_ID fa_id) 391 387 { … … 393 389 } 394 390 395 /* ÇÝæèJ[\ÌÊuæ¾*/391 /* 読み取りカーソルの位置取得 */ 396 392 ECN_FBS_SSIZE_T _ecn_fbs_get_rpos(ECN_FBS_ID fa_id) 397 393 { … … 399 395 } 400 396 401 /* ÇÝæèJ[\ÌÊuÝè*/397 /* 読み取りカーソルの位置設定 */ 402 398 ER _ecn_fbs_set_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_pos) 403 399 { 404 if (fa_id.ptr->hdr.length <= (unsigned int)fa_pos) /* Êuwèªå«·¬é*/400 if (fa_id.ptr->hdr.length <= (unsigned int)fa_pos) /* 位置指定が大きすぎる */ 405 401 return E_PAR; 406 402 … … 410 406 } 411 407 412 /* ÇÝæèJ[\ÌÊuÚ®*/408 /* 読み取りカーソルの位置移動 */ 413 409 ER _ecn_fbs_seek_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek) 414 410 { … … 420 416 } 421 417 422 /* CÓwèÊuÌ1byteÇÝæè*/418 /* 任意指定位置の1byte読み取り */ 423 419 int _ecn_fbs_peek(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek) 424 420 { … … 431 427 } 432 428 433 /* CÓwèÊuÌ1byte«Ý*/429 /* 任意指定位置の1byte書き込み */ 434 430 ER _ecn_fbs_poke(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek, int fa_val) 435 431 { … … 442 438 } 443 439 444 /* f[^ÇÁ*/440 /* データ追加 */ 445 441 ER _ecn_fbs_add_data(ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len) 446 442 { … … 452 448 } 453 449 454 /* f[^ÇÁ(Ìæð©®IÉg£·é) */450 /* データ追加(領域を自動的に拡張する) */ 455 451 ER _ecn_fbs_add_data_ex(ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len) 456 452 { … … 459 455 } 460 456 461 /* f[^æ¾*/457 /* データ取得 */ 462 458 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) 463 459 { -
Property svn:mime-type
changed from
-
uKadecot/trunk/ecnl_ssp/echonet_fbs.h
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r101 r107 4 4 * Copyright (C) 2014 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 NUM_ECHONET_MEMPOOL_BLOCK 57 #define NUM_ECHONET_MEMPOOL_BLOCK (60) /* d¶pubNÌ*/53 #define NUM_ECHONET_MEMPOOL_BLOCK (60) /* 電文用メモリブロックの数 */ 58 54 #endif /* NUM_ECHONET_MEMPOOL_BLOCK */ 59 55 60 56 #ifndef ECHONET_MEMPOOL_BLOCK_SIZE 61 #define ECHONET_MEMPOOL_BLOCK_SIZE (256) /* d¶pubNÌTCY*/57 #define ECHONET_MEMPOOL_BLOCK_SIZE (256) /* 電文用メモリブロックのサイズ */ 62 58 #endif /* ECHONET_MEMPOOL_BLOCK_SIZE */ 63 59 64 typedef unsigned int ECN_FBS_SIZE_T; /* size_t */65 typedef int ECN_FBS_SSIZE_T; /* ssize_t */66 67 /* T_EDATA ÇÌæTCY*/60 typedef unsigned int ECN_FBS_SIZE_T; /* size_t相当 */ 61 typedef int ECN_FBS_SSIZE_T; /* ssize_t相当 */ 62 63 /* T_EDATA管理領域サイズ */ 68 64 #ifdef TARGET_KERNEL_ASP 69 65 #define DEF_ECN_EDT_HDR_LEN (sizeof(T_MSG)) … … 72 68 #endif 73 69 74 /* ÇÌæTCY(64byte - sizeof(T_MSG)) */70 /* 管理領域サイズ(64byte - sizeof(T_MSG)) */ 75 71 /* #define DEF_ECN_FBS_LIB_HDR_LEN ((ECHONET_MEMPOOL_BLOCK_SIZE + sizeof(int) - 1)>> 2) // */ 76 72 #define DEF_ECN_FBS_LIB_HDR_LEN (64 - DEF_ECN_EDT_HDR_LEN) 77 73 78 /* ÇÌæðÜÞubNÉÛ·éf[^TCY*/74 /* 管理領域を含むブロックに保持するデータサイズ */ 79 75 #define DEF_ECN_FBS_FST_DAT_LEN (64) 80 76 81 /* N|C^zñÌTCY(byte) */77 /* リンクポインタ配列のサイズ(byte) */ 82 78 #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) 83 79 84 /* Åè·obt@ÅåTCY*/80 /* 固定長バッファ最大サイズ */ 85 81 #define DEF_ECN_FBS_BUF_MAXLEN ((DEF_ECN_FBS_LNK_LEN / sizeof(void *)) * ECHONET_MEMPOOL_BLOCK_SIZE + DEF_ECN_FBS_FST_DAT_LEN) 86 82 87 /* qvfobt@ÌTCY*/83 /* 子要素バッファのサイズ */ 88 84 #define DEF_ECN_FBS_SUB_BUF_LEN ECHONET_MEMPOOL_BLOCK_SIZE 89 85 90 /* d¶ÌíÊ(àeͼ) */86 /* 電文の種別(内容は仮) */ 91 87 typedef enum 92 88 { 93 ECN_FBS_TYPE_BLANK = 0, /* ¢gpXg[*/94 ECN_FBS_TYPE_INTERNAL = 1, /* àbZ[W*/95 ECN_FBS_TYPE_ECHONET = 2 /* ECHONET d¶*/89 ECN_FBS_TYPE_BLANK = 0, /* 未使用ストリーム */ 90 ECN_FBS_TYPE_INTERNAL = 1, /* 内部メッセージ */ 91 ECN_FBS_TYPE_ECHONET = 2 /* ECHONET電文 */ 96 92 } TA_ECN_MSG_TYPE; 97 93 98 /* N|C^zñÉñ³êéAqvfobt@*/94 /* リンクポインタ配列に列挙される、子要素バッファ */ 99 95 typedef struct 100 96 { … … 102 98 } T_ECN_SUB_BLK; 103 99 104 /* N|C^zñ*/100 /* リンクポインタ配列 */ 105 101 typedef union 106 102 { … … 109 105 } T_ECN_FBS_LNK; 110 106 111 /* ÇÌæ(64byte - sizeof(T_MSG)) */107 /* 管理領域(64byte - sizeof(T_MSG)) */ 112 108 typedef struct 113 109 { 114 uint16_t length; /* bZ[W·*/115 uint16_t type; /* bZ[W^Cv*/110 uint16_t length; /* メッセージ長 */ 111 uint16_t type; /* メッセージタイプ */ 116 112 union{ 117 ECN_ENOD_ID sender; /* M³m[hIDiECHONETd¶j*/118 ID sender_mbxid; /* M³[{bNXIDiàbZ[Wj*/113 ECN_ENOD_ID sender; /* 送信元ノードID(ECHONET電文) */ 114 ID sender_mbxid; /* 送信元メールボックスID(内部メッセージ) */ 119 115 }; 120 116 union{ 121 ECN_ENOD_ID target; /* Mæm[hIDiECHONETd¶j*/122 ID target_mbxid; /* Mæ[{bNXIDiàbZ[Wj*/117 ECN_ENOD_ID target; /* 送信先ノードID(ECHONET電文) */ 118 ID target_mbxid; /* 送信先メールボックスID(内部メッセージ) */ 123 119 }; 124 120 union{ 125 ECN_ENOD_ID reply; /* ÔMæm[hIDiECHONETd¶j*/126 ID reply_mbxid; /* ÔMæ[{bNXIDiàbZ[Wj*/121 ECN_ENOD_ID reply; /* 返信先ノードID(ECHONET電文) */ 122 ID reply_mbxid; /* 返信先メールボックスID(内部メッセージ) */ 127 123 }; 128 124 129 int rd; /* ÇÝæèwbhîñ*/130 int wr; /* «Ýwbhîñ*/125 int rd; /* 読み取りヘッド情報 */ 126 int wr; /* 書き込みヘッド情報 */ 131 127 } T_ECN_FBS_HDR; 132 128 133 /* ÇÌæðÜÞubNÌ\¢*/129 /* 管理領域を含むブロックの構造 */ 134 130 typedef struct 135 131 { 136 132 uint8_t _msg[DEF_ECN_EDT_HDR_LEN]; /* T_MSG */ 137 T_ECN_FBS_HDR hdr; /* ÇÌæ64byte - sizeof(T_MSG) */133 T_ECN_FBS_HDR hdr; /* 管理領域 64byte - sizeof(T_MSG) */ 138 134 uint8_t _gap[DEF_ECN_FBS_LIB_HDR_LEN - sizeof(T_ECN_FBS_HDR)]; 139 T_ECN_FBS_LNK lnk; /* N|C^zñ128byte */135 T_ECN_FBS_LNK lnk; /* リンクポインタ配列 128byte */ 140 136 uint8_t payload[DEF_ECN_FBS_FST_DAT_LEN]; 141 137 } T_ECN_FST_BLK; … … 147 143 } ECN_FBS_ID; 148 144 149 /* bZ[WL 150 [ */ 145 /* メッセージキュー */ 151 146 typedef struct ecn_fbs_queue 152 147 { 153 T_ECN_FST_BLK *pk_head; /* æªÌbZ[W*/154 T_ECN_FST_BLK *pk_last; /* öÌbZ[W*/148 T_ECN_FST_BLK *pk_head; /* 先頭のメッセージ */ 149 T_ECN_FST_BLK *pk_last; /* 末尾のメッセージ */ 155 150 } T_ECN_FBS_QUEUE; 156 151 157 /* ubNæ¾ ok:|C^NG:NULL */152 /* メモリブロック取得 ok:ポインタ NG:NULL */ 158 153 void *_ecn_fbs_mbx_get(ECN_FBS_SIZE_T fa_req_size); 159 154 160 /* ubNðú ok:0 NG:ñ0 */155 /* メモリブロック解放 ok:0 NG:非0 */ 161 156 ER _ecn_fbs_mbx_rel(void *p); 162 157 163 158 /* 164 * ÌæmÛ165 * ø166 * ECN_FBS_SIZE_T fa_req_size vobt@TCY(byte)159 * 領域確保 160 * 引数 161 * ECN_FBS_SIZE_T fa_req_size 要求バッファサイズ(byte) 167 162 * max: DEF_ECN_FBS_BUF_MAXLEN 168 * ECN_FBS_ID *fp_id mÛµ½FBS-IDÌi[æ169 * ßèl170 * ER 0:ok ñ0:NG163 * ECN_FBS_ID *fp_id 確保したFBS-IDの格納先 164 * 戻り値 165 * ER 0:ok 非0:NG 171 166 */ 172 167 ER _ecn_fbs_cre(ECN_FBS_SIZE_T fa_req_size, ECN_FBS_ID *fp_id); 173 168 174 169 /* 175 * Ìæðú176 * ø177 * ecn_fbs_id ^ mÛµ½FBS-ID178 * ßèl179 * ER 0:ok, ñ0:NG170 * 領域解放 171 * 引数 172 * ecn_fbs_id型 確保したFBS-ID 173 * 戻り値 174 * ER 0:ok, 非0:NG 180 175 */ 181 176 ER _ecn_fbs_del(ECN_FBS_ID fa_id); 182 177 183 178 /* 184 * Ûf[^ÌL³185 * ø186 * ecn_fbs_id ^ mÛµ½FBS-ID187 * ßèl188 * bool_t 0: ³µ, 1: è179 * 保持データの有無 180 * 引数 181 * ecn_fbs_id型 確保したFBS-ID 182 * 戻り値 183 * bool_t 0:無し, 1:あり 189 184 */ 190 185 bool_t _ecn_fbs_exist_data(ECN_FBS_ID fa_id); 191 186 192 187 /* 193 * Ûf[^·Ìæ¾194 * ø195 * ecn_fbs_id ^ mÛµ½FBS-ID196 * ßèl197 * ECN_FBS_SSIZE_T ۵Ģéf[^Ì·³(byte) -1:NG188 * 保持データ長の取得 189 * 引数 190 * ecn_fbs_id型 確保したFBS-ID 191 * 戻り値 192 * ECN_FBS_SSIZE_T 保持しているデータの長さ(byte) -1:NG 198 193 */ 199 194 ECN_FBS_SSIZE_T _ecn_fbs_get_datalen(ECN_FBS_ID fa_id); 200 195 201 196 /* 202 * ÇÝæèJ[\ÌÊuæ¾203 * ø204 * ecn_fbs_id ^ mÛµ½FBS-ID205 * ßèl206 * ECN_FBS_SIZE_T 檩çÌâÎÊu-1:NG197 * 読み取りカーソルの位置取得 198 * 引数 199 * ecn_fbs_id型 確保したFBS-ID 200 * 戻り値 201 * ECN_FBS_SIZE_T 先頭からの絶対位置 -1:NG 207 202 */ 208 203 ECN_FBS_SSIZE_T _ecn_fbs_get_rpos(ECN_FBS_ID fa_id); 209 204 210 205 /* 211 * ÇÝæèJ[\ÌÊuÝè212 * ø213 * ecn_fbs_id ^ mÛµ½FBS-ID214 * ECN_FBS_SIZE_T fa_pos Ýè·éÊu(檩çÌâÎÊu)215 * ßèl216 * ER 0:ok, ñ0:NG206 * 読み取りカーソルの位置設定 207 * 引数 208 * ecn_fbs_id型 確保したFBS-ID 209 * ECN_FBS_SIZE_T fa_pos 設定する位置(先頭からの絶対位置) 210 * 戻り値 211 * ER 0:ok, 非0:NG 217 212 */ 218 213 ER _ecn_fbs_set_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_pos); 219 214 220 215 /* 221 * ÇÝæèJ[\ÌÊuÚ®222 * ø223 * ecn_fbs_id ^ mÛµ½FBS-ID224 * ECN_FBS_SIZE_T fa_seek Ú®Ê(»óAOiÌÝ)225 * ßèl226 * ER 0:ok, ñ0:NG216 * 読み取りカーソルの位置移動 217 * 引数 218 * ecn_fbs_id型 確保したFBS-ID 219 * ECN_FBS_SIZE_T fa_seek 移動量(現状、前進のみ) 220 * 戻り値 221 * ER 0:ok, 非0:NG 227 222 */ 228 223 ER _ecn_fbs_seek_rpos(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek); 229 224 230 225 /* 231 * CÓwèÊuÌ1byteÇÝæè226 * 任意指定位置の1byte読み取り 232 227 */ 233 228 int _ecn_fbs_peek(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek); 234 229 235 230 /* 236 * CÓwèÊuÌ1byte«Ý231 * 任意指定位置の1byte書き込み 237 232 */ 238 233 ER _ecn_fbs_poke(ECN_FBS_ID fa_id, ECN_FBS_SSIZE_T fa_seek, int fa_val); 239 234 240 235 /* 241 * f[^ÇÁ242 * ø243 * ecn_fbs_id ^ mÛµ½FBS-ID244 * const void * fa_dat ÇÁ·éf[^245 * ECN_FBS_SSIZE_T fa_len ÇÁ·é·³(byte)246 * ßèl247 * ER 0:ok, ñ0:NG236 * データ追加 237 * 引数 238 * ecn_fbs_id型 確保したFBS-ID 239 * const void * fa_dat 追加するデータ 240 * ECN_FBS_SSIZE_T fa_len 追加する長さ(byte) 241 * 戻り値 242 * ER 0:ok, 非0:NG 248 243 */ 249 244 ER _ecn_fbs_add_data(ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len); 250 245 251 246 /* 252 * f[^ÇÁ(Ìæð©®IÉg£·é)253 * ø254 * ecn_fbs_id ^ mÛµ½FBS-ID255 * const void * fa_dat ÇÁ·éf[^256 * ECN_FBS_SSIZE_T fa_len ÇÁ·é·³(byte)257 * ßèl258 * ER 0:ok, ñ0:NG247 * データ追加(領域を自動的に拡張する) 248 * 引数 249 * ecn_fbs_id型 確保したFBS-ID 250 * const void * fa_dat 追加するデータ 251 * ECN_FBS_SSIZE_T fa_len 追加する長さ(byte) 252 * 戻り値 253 * ER 0:ok, 非0:NG 259 254 */ 260 255 ER _ecn_fbs_add_data_ex(ECN_FBS_ID fa_id, const void *fa_dat, ECN_FBS_SSIZE_T fa_len); 261 256 262 257 /* 263 * f[^æ¾264 * ø265 * ecn_fbs_id ^ mÛµ½FBS-ID266 * void * fa_buf æ¾·éobt@267 * ECN_FBS_SSIZE_T fa_maxlen æ¾·é·³(byte)268 * ECN_FBS_SSIZE_T *p_len æ¾µ½·³(byte)269 * ßèl270 * ER 0:ok, ñ0:NG258 * データ取得 259 * 引数 260 * ecn_fbs_id型 確保したFBS-ID 261 * void * fa_buf 取得するバッファ 262 * ECN_FBS_SSIZE_T fa_maxlen 取得する長さ(byte) 263 * ECN_FBS_SSIZE_T *p_len 取得した長さ(byte) 264 * 戻り値 265 * ER 0:ok, 非0:NG 271 266 */ 272 267 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
-
uKadecot/trunk/ecnl_ssp/echonet_lcl_task.h
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r101 r107 4 4 * Copyright (C) 2014 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
-
uKadecot/trunk/ecnl_ssp/echonet_rename.h
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r101 r107 4 4 * Copyright (C) 2014 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
-
uKadecot/trunk/ecnl_ssp/echonet_ssp.cfg
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r101 r107 4 4 * Copyright (C) 2014 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¶p47 * ECHONET Lite 電文用メモリ 53 48 */ 54 49 /*CRE_MPF(ECHONET_MEMPOOL, { TA_TFIFO, 60, 256, NULL, NULL });*/ 55 50 56 51 /* 57 * ECHONET Lite API p[{bNX52 * ECHONET Lite API用メールボックス 58 53 */ 59 54 CRE_DTQ(ECHONET_API_MAILBOX, { TA_TFIFO, NUM_ECHONET_API_MAILBOX, NULL }); 60 55 61 56 /* 62 * ECHONET Lite T[rX^XNp[{bNX57 * ECHONET Lite サービス処理タスク用メールボックス 63 58 */ 64 59 CRE_DTQ(ECHONET_SVC_MAILBOX, { TA_TFIFO, NUM_ECHONET_MAILBOX, 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 ^XNN®püúnh[67 * ECHONET Lite タスク起動用周期ハンドラー 73 68 */ 74 69 CRE_CYC(ECHONET_SVC_CYCHDR, { TA_NULL, ECHONET_SVC_TASK, echonet_cychdr, 1, 0 }); 75 70 76 71 /* 77 * ECHONET Lite UDP ÊMp[{bNX72 * ECHONET Lite UDP通信処理用メールボックス 78 73 */ 79 74 CRE_DTQ(ECHONET_UDP_MAILBOX, { TA_TFIFO, NUM_ECHONET_UDP_MAILBOX, NULL }); 80 75 81 76 /* 82 * ECHONET Lite UDP ÊM^XN77 * ECHONET Lite UDP通信処理タスク 83 78 */ 84 79 CRE_TSK(ECHONET_UDP_TASK, { TA_HLNG, 0, echonet_udp_task, ECHONET_UDP_TASK_PRIORITY, ECHONET_UDP_TASK_STACK_SIZE, NULL }); 85 80 86 81 /* 87 * ECHONET Lite ^XNN®püúnh[82 * ECHONET Lite タスク起動用周期ハンドラー 88 83 */ 89 84 CRE_CYC(ECHONET_UDP_CYCHDR, { TA_NULL, ECHONET_UDP_TASK, echonet_udp_cychdr, 1, 0 }); -
Property svn:mime-type
changed from
-
uKadecot/trunk/ecnl_ssp/echonet_task.c
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r101 r107 4 4 * Copyright (C) 2014 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 … … 78 74 static struct ecnl_state s; 79 75 80 /* óMbZ[WðJú·é©Û©*/76 /* 受信メッセージを開放するか否か */ 81 77 static bool_t g_release_esv; 82 78 83 /* óMbZ[Wð]·é©Û©*/79 /* 受信メッセージを転送するか否か */ 84 80 bool_t g_forward_esv; 85 81 … … 126 122 target += - ENOD_REMOTE_ID + 1; 127 123 if (from_app && (target < tnum_enodid)) { 128 /* ñ¯úÌ[gm[hÍT[rX^XNÅ·é*/124 /* 非同期のリモートノードはサービス処理タスクで処理する */ 129 125 switch (eobjcb_table[target].profile->eobjatr) { 130 126 case EOBJ_SYNC_REMOTE_NODE: … … 174 170 ECN_FBS_ID fa_fbs_id, ECN_FBS_ID *fa_fbs_anno); 175 171 176 /* W 177 [ú»tO */ 172 /* モジュール初期化フラグ */ 178 173 static uint8_t m_eobjlist_need_init = 1; 179 174 180 /* V[PXÔ*/175 /* シーケンス番号 */ 181 176 static uint16_t g_current_tid = 1; 182 177 183 178 /* 184 * ECHONET Lite ^XNÌú»iRXgN^j179 * ECHONET Lite タスクの初期化(コンストラクタ相当) 185 180 */ 186 181 void echonet_task_init(intptr_t exinf) … … 191 186 192 187 /* 193 * W 194 [ú» 188 * モジュール初期化 195 189 */ 196 190 static void _ecn_tsk_int_module_init(intptr_t exinf) … … 210 204 211 205 /* 212 * ECHONET Lite ^XNÌ{Ì206 * ECHONET Lite タスクの本体 213 207 */ 214 208 static … … 243 237 } 244 238 245 /* bZ[W[v*/239 /* メッセージループ */ 246 240 for (;;) { 247 241 a_prev = a_now; … … 283 277 284 278 switch (a_mdt.fbs_id.ptr->hdr.type) { 285 /* àgpbZ[W*/279 /* 内部使用メッセージ */ 286 280 case ECN_MSG_INTERNAL: 287 281 _ecn_tsk_int_msg(fa_exinf, a_mdt.fbs_id); 288 282 break; 289 283 290 /* ECHONET pbZ[W*/284 /* ECHONET用メッセージ */ 291 285 case ECN_MSG_ECHONET: 292 286 _ecn_tsk_ecn_msg(fa_exinf, a_mdt.fbs_id); … … 297 291 } 298 292 299 /* Ìæðú*/293 /* 領域解放 */ 300 294 if (g_release_esv) 301 295 _ecn_fbs_del(a_mdt.fbs_id); … … 312 306 313 307 /* 314 * ECHONET Lite vgXbhN®^XN308 * ECHONET Lite プロトスレッド起動タスク 315 309 */ 316 310 void echonet_task(intptr_t fa_exinf) … … 320 314 321 315 /* 322 * ECHONET Lite ^XNN®püúnh[316 * ECHONET Lite タスク起動用周期ハンドラー 323 317 */ 324 318 void echonet_cychdr(intptr_t exinf) … … 328 322 329 323 /* 330 * V[PXÔ¶¬324 * シーケンス番号生成 331 325 */ 332 326 static uint16_t _ecn_tsk_new_tid(void) … … 336 330 337 331 /* 338 * vd¶ì¬339 * ø340 * ECN_FBS_ID *fp_fbs_id æ¾µ½FBS_IDÌi[æ341 * ID fa_seoj M³ÌECHONETIuWFNgID342 * ID fa_deoj ¶æÌECHONETIuWFNgID343 * uint8_t fa_epc vpeBR[h344 * uint8_t fa_pdc vpeBlf[^TCY345 * const void *p_edt vpeBlf[^346 * ECN_SRV_CODE fa_esv ECHONET Light T[rXR[h332 * 要求電文作成 333 * 引数 334 * ECN_FBS_ID *fp_fbs_id 取得したFBS_IDの格納先 335 * ID fa_seoj 送信元のECHONETオブジェクトID 336 * ID fa_deoj 宛先のECHONETオブジェクトID 337 * uint8_t fa_epc プロパティコード 338 * uint8_t fa_pdc プロパティ値データサイズ 339 * const void *p_edt プロパティ値データ 340 * ECN_SRV_CODE fa_esv ECHONET Light サービスコード 347 341 */ 348 342 ER _ecn_tsk_mk_esv(ECN_FBS_ID *fp_fbs_id, ID fa_seoj, ID fa_deoj, … … 351 345 ER a_ret; 352 346 int a_size, i; 353 ECN_FBS_ID a_fbs_id = { 0 }; /* vd¶p*/347 ECN_FBS_ID a_fbs_id = { 0 }; /* 要求電文用メモリ */ 354 348 T_ECN_EDT_HDR a_ecn_hdp; /* ecn_hdr+edata+ecn_prp 14byte */ 355 349 ID a_enodid; … … 358 352 359 353 if (!fp_fbs_id) 360 return E_PAR; /* æ¾µ½FBS_IDÌi[æªNULL */354 return E_PAR; /* 取得したFBS_IDの格納先がNULL */ 361 355 if (ECHONET_MEMPOOL_BLOCK_SIZE <= fa_pdc) 362 return E_PAR; /* vpeBlTCYªå«·¬é*/356 return E_PAR; /* プロパティ値サイズが大きすぎる */ 363 357 if (!p_edt && 0 < fa_pdc) 364 return E_PAR; /* vpeBlTCYª1ÈãÈÌÉf[^|C^ªNULL */358 return E_PAR; /* プロパティ値サイズが1以上なのにデータポインタがNULL */ 365 359 366 360 if (fa_seoj <= EOBJ_NULL || tmax_eobjid < fa_seoj) 367 return E_NOEXS; /* ECHONET IuWFNgIDª¢è`*/361 return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */ 368 362 #ifndef ECHONET_CONTROLLER_EXTENTION 369 363 if (fa_deoj < EOBJ_NULL || tmax_eobjid < fa_deoj) 370 return E_NOEXS; /* ECHONET IuWFNgIDª¢è`*/364 return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */ 371 365 #else 372 366 if (fa_deoj < EOBJ_NULL || (tmax_eobjid + TNUM_AEOBJID) < fa_deoj) 373 return E_NOEXS; /* ECHONET IuWFNgIDª¢è`*/367 return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */ 374 368 #endif 375 369 if (fa_deoj == EOBJ_NULL && fa_esv == ESV_INFC) 376 return E_NOEXS; /* ECHONET IuWFNgIDª¢è`*/377 378 /* vŬTCYÌæ¾*/370 return E_NOEXS; /* ECHONETオブジェクトIDが未定義 */ 371 372 /* 要求最小サイズの取得 */ 379 373 a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP); 380 374 381 /* vd¶pÌæ¾*/375 /* 要求電文用メモリの取得 */ 382 376 a_ret = _ecn_fbs_cre(a_size, &a_fbs_id); 383 if (a_ret != E_OK || !a_fbs_id.ptr) { /* mÛ¸s*/377 if (a_ret != E_OK || !a_fbs_id.ptr) { /* 確保失敗 */ 384 378 ECN_DBG_PUT "_ecn_fbs_cre(%d) result = %d:%s", 385 379 a_size, … … 388 382 } 389 383 390 /* vd¶Ýè*/384 /* 要求電文設定 */ 391 385 memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp)); 392 386 a_ecn_hdp.ecn_hdr.ehd1 = ECN_EDH1_ECHONET_LITE; … … 395 389 memcpy(&a_ecn_hdp.edata.seoj, &eobjinib_table[fa_seoj - 1].eojx1, sizeof(a_ecn_hdp.edata.seoj)); 396 390 a_ecn_hdp.edata.esv = fa_esv; 397 a_ecn_hdp.edata.opc = 1; /* vpeB*/398 a_ecn_hdp.ecn_prp.epc = fa_epc; /* vpeBR[h*/399 a_ecn_hdp.ecn_prp.pdc = fa_pdc; /* tf[^TCY*/400 401 /* vd¶pÉf[^ÇÁ*/391 a_ecn_hdp.edata.opc = 1; /* 処理プロパティ数 */ 392 a_ecn_hdp.ecn_prp.epc = fa_epc; /* プロパティコード */ 393 a_ecn_hdp.ecn_prp.pdc = fa_pdc; /* 付随データサイズ */ 394 395 /* 要求電文用メモリにデータ追加 */ 402 396 a_ret = _ecn_fbs_add_data_ex(a_fbs_id, &a_ecn_hdp, a_size); 403 397 if (a_ret) { … … 408 402 } 409 403 if (0 < fa_pdc) { 410 /* tf[^ÇÁ*/404 /* 付随データ追加 */ 411 405 a_ret = _ecn_fbs_add_data_ex(a_fbs_id, p_edt, fa_pdc); 412 406 if (a_ret) { … … 418 412 } 419 413 if (fa_deoj == 0) { 420 ECN_DBG_PUT "%s", " }`LXg" ECN_DBG_END;421 /* fa_deoj == 0 : }`LXg*/414 ECN_DBG_PUT "%s", "マルチキャスト" ECN_DBG_END; 415 /* fa_deoj == 0 : マルチキャスト */ 422 416 ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx1 = EOJ_X1_PROFILE; 423 417 ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx2 = EOJ_X2_NODE_PROFILE; … … 427 421 else if (fa_deoj <= tmax_eobjid) { 428 422 ECN_DBG_PUT "fa_deoj = %d", fa_deoj ECN_DBG_END; 429 /* if (fa_deoj < 1 || tmax_eobjid < fa_deoj) cÌÙínÍÖ`ªÅOÏÝÆ·é*/423 /* if (fa_deoj < 1 || tmax_eobjid < fa_deoj) …の異常系は関数冒頭で除外済みとする */ 430 424 a_eobj = &eobjinib_table[fa_deoj - 1]; 431 425 memcpy(&((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj, &a_eobj->eojx1, 432 426 sizeof(((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj)); 433 427 434 /* e[u©çõ*/428 /* テーブルから検索 */ 435 429 a_fbs_id.ptr->hdr.target = ENOD_NOT_MATCH_ID; 436 430 a_enodid = (a_eobj->enodid == 0) ? fa_deoj : a_eobj->enodid; … … 472 466 ECN_ENOD_ID enodid; 473 467 ECN_DBG_PUT "fa_deoj = %d", fa_deoj ECN_DBG_END; 474 /* IuWFNgID©çEOJÆm[hIDðæ¾*/468 /* オブジェクトIDからEOJとノードIDを取得 */ 475 469 if(ecn_agent_get_eoj_enodid(fa_deoj, &eoj, &enodid)){ 476 470 memcpy(&((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj, &eoj, … … 505 499 a_fbs_id.ptr->hdr.reply = ENOD_API_ID; 506 500 507 /* ³íI¹*/501 /* 正常終了 */ 508 502 *fp_fbs_id = a_fbs_id; 509 503 return E_OK; 510 504 511 505 lb_except: 512 /* f[^쬸sµ½çÌæðú*/506 /* データ作成失敗したら領域解放 */ 513 507 if (a_fbs_id.ptr) 514 508 _ecn_fbs_del(a_fbs_id); … … 518 512 519 513 /* 520 * àgpbZ[W514 * 内部使用メッセージ 521 515 */ 522 516 static void _ecn_tsk_int_msg(intptr_t fa_exinf, ECN_FBS_ID fa_fbs_id) … … 549 543 550 544 /* 551 * ^XNú»545 * タスク初期化 552 546 */ 553 547 static void _ecn_tsk_int_startup(intptr_t fa_exinf) … … 558 552 _ecn_tsk_int_module_init(fa_exinf); 559 553 560 /* CX^XXgÊmÌM*/554 /* インスタンスリスト通知の送信 */ 561 555 a_ret = _ecn_tsk_ntf_inl(fa_exinf); 562 556 if (a_ret) { … … 566 560 567 561 /* 568 * CX^XXgÊmÌM569 * ECHONET-Lite_Ver.1.10_02.pdf p.43 }4-1-4562 * インスタンスリスト通知の送信 563 * ECHONET-Lite_Ver.1.10_02.pdf p.43 図4-1-4 570 564 */ 571 565 ER _ecn_tsk_ntf_inl(intptr_t fa_exinf) 572 566 { 573 const T_ECN_EOJ a_seoj = /* 0x01 : êÊm[hA0x02FMêpm[h*/567 const T_ECN_EOJ a_seoj = /* 0x01 : 一般ノード、0x02:送信専用ノード */ 574 568 { EOJ_X1_PROFILE, EOJ_X2_NODE_PROFILE, 0x01 }; 575 569 const T_ECN_EOJ a_deoj = … … 581 575 int i; 582 576 uint8_t a_count; 583 const EOBJCB *enod = &eobjcb_table[0]; /* [Jm[h*/577 const EOBJCB *enod = &eobjcb_table[0]; /* ローカルノード */ 584 578 const EOBJINIB *eobj; 585 579 … … 599 593 600 594 if (!a_eoj_ct) { 601 /* mÛEwb_i[*/602 a_hdr.ecn_hdr.tid = (uint8_t)_ecn_tsk_new_tid(); /* V[PXÔ¶¬*/595 /* メモリ確保・ヘッダ格納 */ 596 a_hdr.ecn_hdr.tid = (uint8_t)_ecn_tsk_new_tid(); /* シーケンス番号生成 */ 603 597 a_ret = _ecn_fbs_cre(sizeof(a_hdr), &a_fbs); 604 if (a_ret != E_OK) /* mÛ¸s*/598 if (a_ret != E_OK) /* 確保失敗 */ 605 599 goto lb_except; 606 600 a_ret = _ecn_fbs_add_data(a_fbs, &a_hdr, sizeof(a_hdr)); 607 if (a_ret != E_OK) /* f[^ÇÁ¸s*/601 if (a_ret != E_OK) /* データ追加失敗 */ 608 602 goto lb_except; 609 603 … … 612 606 a_fbs.ptr->hdr.target = ENOD_MULTICAST_ID; 613 607 a_fbs.ptr->hdr.reply = ENOD_LOCAL_ID; 614 ((T_EDATA *)a_fbs.ptr)->hdr.ecn_prp.pdc = 1; /* */615 /* ði[*/608 ((T_EDATA *)a_fbs.ptr)->hdr.ecn_prp.pdc = 1; /* 件数 */ 609 /* 件数を格納 */ 616 610 a_count = (uint8_t)(enod->eobjcnt - i); 617 611 if (a_count >= ECN_IST_LST_EOJ_MAX_CT) 618 612 a_count = ECN_IST_LST_EOJ_MAX_CT; 619 613 a_ret = _ecn_fbs_add_data_ex(a_fbs, &a_count, sizeof(a_count)); 620 if (a_ret != E_OK) /* f[^ÇÁ¸s*/614 if (a_ret != E_OK) /* データ追加失敗 */ 621 615 goto lb_except; 622 616 } 623 /* ECHONET IuWFNgID(3byte)ði[*/617 /* ECHONETオブジェクトID(3byte)を格納 */ 624 618 a_ret = _ecn_fbs_add_data_ex(a_fbs, &eobj->eojx1, sizeof(T_ECN_EOJ)); 625 if (a_ret != E_OK) /* f[^ÇÁ¸s*/619 if (a_ret != E_OK) /* データ追加失敗 */ 626 620 goto lb_except; 627 621 628 /* EedtTCYÁZ*/622 /* 件数・edtサイズ加算 */ 629 623 ((T_EDATA *)a_fbs.ptr)->hdr.ecn_prp.pdc += sizeof(T_ECN_EOJ); 630 624 if (++a_eoj_ct < ECN_IST_LST_EOJ_MAX_CT) 631 625 continue; 632 626 633 /* 1 AiEXÅÌãÀÉBµ½çAêUM*/627 /* 1アナウンスでの上限に達したら、一旦送信 */ 634 628 a_ret = _ecn_tsk_snd_mbx(a_fbs, false); 635 if (a_ret != E_OK) /* f[^M¸s*/629 if (a_ret != E_OK) /* データ送信失敗 */ 636 630 goto lb_except; 637 631 a_eoj_ct = 0; … … 639 633 } 640 634 if (a_eoj_ct) { 641 /* ¢Mf[^ª Á½çAM*/635 /* 未送信データがあったら、送信 */ 642 636 a_ret = _ecn_tsk_snd_mbx(a_fbs, false); 643 if (a_ret != E_OK) /* f[^M¸s*/637 if (a_ret != E_OK) /* データ送信失敗 */ 644 638 goto lb_except; 645 639 a_fbs.ptr = 0; … … 685 679 686 680 /* 687 * 3byte ÌeobjidÅzñðõ·é681 * 3byteのeobjidで配列中を検索する 688 682 */ 689 683 const EOBJINIB *_ecn_eoj_fnd(const EOBJCB *fp_nod, const T_ECN_EOJ *fp_eoj) … … 721 715 722 716 /* 723 * ECHONET pbZ[W717 * ECHONET用メッセージ 724 718 */ 725 719 static void _ecn_tsk_ecn_msg(intptr_t fa_exinf, ECN_FBS_ID fa_fbs_id) … … 749 743 } 750 744 751 /* M¶©çm[hðõ*/745 /* 送信宛からノードを検索 */ 752 746 p_nod = _ecn_eno_fnd(fa_fbs_id.ptr->hdr.target); 753 /* M³©çm[hðõ*/747 /* 送信元からノードを検索 */ 754 748 sender = fa_fbs_id.ptr->hdr.sender; 755 749 p_snod = _ecn_eno_fnd(sender); 756 750 if (p_snod != NULL) { 757 751 sobjatr = p_snod->profile->eobjatr; 758 /* m[hvt@CÌê*/752 /* ノードプロファイルの場合 */ 759 753 if ((p_esv->edata.seoj.eojx1 == EOJ_X1_PROFILE) 760 754 && (p_esv->edata.seoj.eojx2 == EOJ_X2_NODE_PROFILE)) { 761 755 p_sobj = p_snod->profile; 762 756 } 763 /* @íIuWFNgÌê*/757 /* 機器オブジェクトの場合 */ 764 758 else { 765 759 p_sobj = _ecn_eoj_fnd(p_snod, &p_esv->edata.seoj); … … 771 765 #endif 772 766 773 /* m[hàÌ@íIuWFNgðõ*/767 /* ノード内の機器オブジェクトを検索 */ 774 768 a_prc = false; 775 769 a_fwd = false; … … 778 772 eobjatr = p_nod->profile->eobjatr; 779 773 p_eoj = &p_esv->edata.deoj; 780 /* m[hvt@CÌê*/774 /* ノードプロファイルの場合 */ 781 775 if ((p_eoj->eojx1 == EOJ_X1_PROFILE) 782 776 && (p_eoj->eojx2 == EOJ_X2_NODE_PROFILE)) { 783 /* d¶Às*/777 /* 電文処理実行 */ 784 778 if (_ecn_tsk_ecn_msg_main(fa_fbs_id, p_nod->profile, eobjatr, p_sobj, sobjatr) == 1) 785 779 a_fwd = true; 786 780 a_prc = true; 787 781 } 788 /* @íIuWFNgÌê*/782 /* 機器オブジェクトの場合 */ 789 783 else { 790 784 count = p_nod->eobjcnt; … … 805 799 if (p_obj->eojx2 != p_eoj->eojx2) 806 800 continue; 807 /* CX^XR[hªOÌêA¯¶NXÌSÄÌCX^X¶*/801 /* インスタンスコードが0の場合、同じクラスの全てのインスタンス宛 */ 808 802 if ((p_obj->eojx3 != p_eoj->eojx3) && (p_eoj->eojx3 != 0)) 809 803 continue; 810 804 811 /* d¶Às*/805 /* 電文処理実行 */ 812 806 if (_ecn_tsk_ecn_msg_main(fa_fbs_id, p_obj, eobjatr, p_sobj, sobjatr) == 1) 813 807 a_fwd = true; … … 816 810 } 817 811 } 818 /* @íIuWFNgª©Â©çÈ¢êÅà*/812 /* 機器オブジェクトが見つからない場合でも */ 819 813 if (!a_prc) { 820 /* d¶ÀsióMpj*/814 /* 電文処理実行(応答受信用) */ 821 815 if (_ecn_tsk_ecn_msg_main(fa_fbs_id, NULL, EPC_NONE, p_sobj, sobjatr) == 1) 822 816 a_fwd = true; 823 817 } 824 818 825 /* ÌêAvP[VÉ]·é*/819 /* 応答の場合アプリケーションに転送する */ 826 820 if (a_fwd && ((p_esv->ecn_hdr.tid == apitid_table[sender]) 827 821 || g_forward_esv)) … … 829 823 g_release_esv = false; 830 824 831 ECN_CAP_PUT "redirect ecn_svc_mailboxid ¨ecn_api_mailboxid (esv:0x%02X)",825 ECN_CAP_PUT "redirect ecn_svc_mailboxid → ecn_api_mailboxid (esv:0x%02X)", 832 826 p_esv->edata.esv ECN_CAP_END; 833 827 fa_fbs_id.ptr->hdr.target = ENOD_API_ID; … … 853 847 854 848 switch (p_esv->edata.esv) { 855 /* 0x60 vpeBl«Ývisvj*/849 /* 0x60 プロパティ値書き込み要求(応答不要) */ 856 850 case ESV_SET_I: 857 851 if (!p_obj) { … … 865 859 break; 866 860 867 /* 0x61 vpeBl«Ývivj*/861 /* 0x61 プロパティ値書き込み要求(応答要) */ 868 862 case ESV_SET_C: 869 863 if (!p_obj) { … … 877 871 break; 878 872 879 /* 0x62 vpeBlÇÝoµv*/873 /* 0x62 プロパティ値読み出し要求 */ 880 874 case ESV_GET: 881 875 if (!p_obj) { … … 889 883 break; 890 884 891 /* 0x63 vpeBlÊmv*/885 /* 0x63 プロパティ値通知要求 */ 892 886 case ESV_INF_REQ: 893 887 if (!p_obj) { … … 902 896 break; 903 897 904 /* 0x6E vpeBl«ÝEÇÝoµv*/898 /* 0x6E プロパティ値書き込み・読み出し要求 */ 905 899 case ESV_SET_GET: 906 900 if (!p_obj) { … … 914 908 break; 915 909 916 /* 0x74 vpeBlÊmivj*/910 /* 0x74 プロパティ値通知(応答要) */ 917 911 case ESV_INFC: 918 912 if (!p_sobj) … … 925 919 break; 926 920 927 /* 0x60 vpeBl«Ývisvj*/928 case ESV_SET_I_SNA: /* 0x50 vpeBl«ÝvsÂ*/921 /* 0x60 プロパティ値書き込み要求(応答不要) */ 922 case ESV_SET_I_SNA: /* 0x50 プロパティ値書き込み要求不可応答 */ 929 923 result = 1; 930 924 break; 931 925 932 /* 0x61 vpeBl«Ývivj*/933 case ESV_SET_RES: /* 0x71 vpeBl«Ý*/934 case ESV_SET_C_SNA: /* 0x51 vpeBl«ÝvsÂ*/926 /* 0x61 プロパティ値書き込み要求(応答要) */ 927 case ESV_SET_RES: /* 0x71 プロパティ値書き込み応答 */ 928 case ESV_SET_C_SNA: /* 0x51 プロパティ値書き込み要求不可応答 */ 935 929 result = 1; 936 930 break; 937 931 938 /* 0x62 vpeBlÇÝoµv*/939 case ESV_GET_RES: /* 0x72 vpeBlÇÝoµ*/940 case ESV_GET_SNA: /* 0x52 vpeBlÇÝoµsÂ*/932 /* 0x62 プロパティ値読み出し要求 */ 933 case ESV_GET_RES: /* 0x72 プロパティ値読み出し応答 */ 934 case ESV_GET_SNA: /* 0x52 プロパティ値読み出し不可応答 */ 941 935 if (!p_sobj) { 942 936 ECN_DBG_PUT "_ecn_tsk_ecn_msg_main() eoj %06X not found.", … … 949 943 break; 950 944 951 /* 0x63 vpeBlÊmv*/952 case ESV_INF: /* 0x73 vpeBlÊm*/953 case ESV_INF_SNA: /* 0x53 vpeBlÊmsÂ*/945 /* 0x63 プロパティ値通知要求 */ 946 case ESV_INF: /* 0x73 プロパティ値通知 */ 947 case ESV_INF_SNA: /* 0x53 プロパティ値通知不可応答 */ 954 948 if (!p_sobj) { 955 949 ECN_DBG_PUT "_ecn_tsk_ecn_msg_main() eoj %06X not found.", … … 962 956 break; 963 957 964 /* 0x6E vpeBl«ÝEÇÝoµv*/965 case ESV_SET_GET_RES: /* 0x7E vpeBl«ÝEÇÝoµ*/966 case ESV_SET_GET_SNA: /* 0x5E vpeBl«ÝEÇÝoµsÂ*/958 /* 0x6E プロパティ値書き込み・読み出し要求 */ 959 case ESV_SET_GET_RES: /* 0x7E プロパティ値書き込み・読み出し応答 */ 960 case ESV_SET_GET_SNA: /* 0x5E プロパティ値書き込み・読み出し不可応答 */ 967 961 if (!p_sobj) { 968 962 ECN_DBG_PUT "_ecn_tsk_ecn_msg_main() eoj %06X not found.", … … 975 969 break; 976 970 977 /* 0x74 vpeBlÊmivj*/978 case ESV_INFC_RES: /* 0x7A vpeBlÊm*/971 /* 0x74 プロパティ値通知(応答要) */ 972 case ESV_INFC_RES: /* 0x7A プロパティ値通知応答 */ 979 973 result = 1; 980 974 break; … … 986 980 } 987 981 988 /* vpeBÊmvðM*/982 /* プロパティ通知要求を送信 */ 989 983 if (a_fbs_anno.ptr != NULL) { 990 984 ER a_ret = _ecn_tsk_snd_mbx(a_fbs_anno, true); … … 1066 1060 1067 1061 /* 1068 * ECN_FBS_ID ©çT_ECN_PRP1Æ»Ìtf[^(edt)ðoµAedtÌ|C^ðÔ·1069 * ø1070 * ECN_FBS_ID fa_fbs_id ÇÝæéFBS1071 * T_ECN_PRP *fp_prp epc+pdc Ìi[æ1072 * T_ECN_SUB_BLK * const fp_prev_blk OñgÁ½Ì|C^(³¯êÎ0)1073 * ³íF|C^NG:01074 * |C^Í_ecn_fbs_mbx_rel()Åðú·éKvª é1062 * ECN_FBS_IDからT_ECN_PRP1件とその付随データ(edt)を抽出し、edtのポインタを返す 1063 * 引数 1064 * ECN_FBS_ID fa_fbs_id 読み取るFBS 1065 * T_ECN_PRP *fp_prp epc+pdcの格納先 1066 * T_ECN_SUB_BLK * const fp_prev_blk 前回使ったメモリのポインタ(無ければ0) 1067 * 正常:ポインタ NG:0 1068 * ポインタは_ecn_fbs_mbx_rel()で解放する必要がある 1075 1069 */ 1076 1070 static T_ECN_SUB_BLK *_ecn_tsk_get_prp_pce(ECN_FBS_ID fa_fbs_id, T_ECN_PRP *fp_prp, … … 1081 1075 ER a_ret; 1082 1076 1083 /* vpeBpÌæ¾*/1077 /* プロパティ用メモリの取得 */ 1084 1078 if (fp_prev_blk) { 1085 p_blk = fp_prev_blk; /* OñgÁ½ª éÈçAÄp·é*/1079 p_blk = fp_prev_blk; /* 前回使ったメモリがあるなら、再利用する */ 1086 1080 } 1087 1081 else { … … 1089 1083 if (!p_blk) { 1090 1084 ECN_DBG_PUT "_ecn_fbs_mbx_get() fault." ECN_DBG_END; 1091 return 0; /* s«*/1085 return 0; /* メモリ不足 */ 1092 1086 } 1093 1087 } 1094 1088 memset(p_blk, 0, sizeof(*p_blk)); 1095 1089 1096 /* T_ECN_PRP ª(epc,pdc)ðÇÝæé*/1090 /* T_ECN_PRP部分(epc,pdc)を読み取る */ 1097 1091 a_size = 0; 1098 1092 a_ret = _ecn_fbs_get_data(fa_fbs_id, fp_prp, sizeof(*fp_prp), &a_size); … … 1103 1097 1104 1098 if (0 < fp_prp->pdc) { 1105 /* tf[^ª(edt)ðÇÝæé*/1099 /* 付随データ部分(edt)を読み取る */ 1106 1100 a_size = 0; 1107 1101 a_ret = _ecn_fbs_get_data(fa_fbs_id, p_blk, fp_prp->pdc, &a_size); … … 1115 1109 1116 1110 lb_except: 1117 /* vpeBpðú*/1111 /* プロパティ用メモリ解放 */ 1118 1112 if (p_blk && !fp_prev_blk) 1119 1113 _ecn_fbs_mbx_rel(p_blk); … … 1125 1119 ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, ECN_FBS_ID *fa_fbs_anno, int a_count, 1126 1120 int *p_sw_ok); 1127 /* vpeBl«ÝÀs*/1121 /* プロパティ値書き込み実行 */ 1128 1122 static ER _ecn_tsk_eoj_set_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_update, 1129 1123 ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, ECN_FBS_ID *fa_fbs_anno, int a_count, … … 1141 1135 1142 1136 for (i = 0; i < a_count; i++) { 1143 /* ECN_FBS_ID ©çT_ECN_PRP1Æ»Ìtf[^ðoµA»Ì|C^ðÔ·*/1137 /* ECN_FBS_IDからT_ECN_PRP1件とその付随データを抽出し、そのポインタを返す */ 1144 1138 p_edt = _ecn_tsk_get_prp_pce(fa_fbs_id, &a_prp, p_edt); 1145 1139 if (!p_edt) { … … 1148 1142 } 1149 1143 1150 /* vpeBÌÝèset_prp(obj, reqp, resp) */1144 /* プロパティの設定 set_prp(obj, reqp, resp) */ 1151 1145 a_size = a_prp.pdc; 1152 /* obj,epc ÉηésetÖðÄÔ*/1146 /* obj,epcに対応するset関数を呼ぶ */ 1153 1147 a_eprp = _ecn_tsk_eoj_get_property(fp_obj, a_prp.epc); 1154 1148 if ((a_eprp != NULL) … … 1172 1166 fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3, 1173 1167 a_prp.epc, p_edt->payload[0], a_size ECN_DBG_END; 1174 *p_sw_ok = 0; /* vpeBÝè¸s*/1175 /* ÌêEDTÍÝèµÈ¢*/1168 *p_sw_ok = 0; /* プロパティ設定失敗 */ 1169 /* 応答処理の場合EDTは設定しない */ 1176 1170 if (fa_update) 1177 1171 a_prp.pdc = 0; 1178 1172 } 1179 1173 1180 /* d¶pÉf[^ÇÁ(epc,pdcÌ2byte) */1174 /* 応答電文用メモリにデータ追加(epc,pdcの2byte) */ 1181 1175 a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_prp, sizeof(a_prp)); 1182 1176 if (a_ret) { … … 1186 1180 1187 1181 if (0 < a_prp.pdc) { 1188 /* d¶pÉf[^ÇÁ(edt n-byte) */1182 /* 応答電文用メモリにデータ追加(edt n-byte) */ 1189 1183 a_ret = _ecn_fbs_add_data_ex(a_fbs_res, p_edt->payload, a_prp.pdc); 1190 1184 if (a_ret) { … … 1195 1189 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc ++; 1196 1190 1197 /* vpeBÊm èÌê*/1191 /* プロパティ通知ありの場合 */ 1198 1192 if (a_anno && (a_ans == a_size)) { 1199 1193 if (fa_fbs_anno->ptr == NULL) { … … 1213 1207 1214 1208 lb_finally: 1215 /* vpeBpðú*/1209 /* プロパティ用メモリ解放 */ 1216 1210 if (p_edt) 1217 1211 _ecn_fbs_mbx_rel(p_edt); … … 1222 1216 static ER _ecn_tsk_eoj_get_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_forward, ATR fa_access, 1223 1217 ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, int a_count, int *p_sw_ok); 1224 /* vpeBlÇÝoµÀs*/1218 /* プロパティ値読み出し実行 */ 1225 1219 static ER _ecn_tsk_eoj_get_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_forward, ATR fa_access, 1226 1220 ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, int a_count, int *p_sw_ok) 1227 1221 { 1228 1222 T_ECN_SUB_BLK *p_edt = 0; 1229 void *p_prp_buf = 0; /* ìÆÌæ*/1223 void *p_prp_buf = 0; /* 作業領域 */ 1230 1224 const EPRPINIB *a_eprp; 1231 1225 ER a_ret = E_SYS; … … 1235 1229 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc = 0; 1236 1230 1237 /* ìÆÌæmÛ*/1231 /* 作業領域確保 */ 1238 1232 p_prp_buf = _ecn_fbs_mbx_get(ECHONET_MEMPOOL_BLOCK_SIZE); 1239 1233 if (!p_prp_buf) { 1240 1234 ECN_DBG_PUT "_ecn_fbs_mbx_get() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END; 1241 goto lb_except; /* s«*/1235 goto lb_except; /* メモリ不足 */ 1242 1236 } 1243 1237 1244 1238 for (i = 0; i < a_count; i++) { 1245 /* ECN_FBS_ID ©çT_ECN_PRP1Æ»Ìtf[^ðo*/1239 /* ECN_FBS_IDからT_ECN_PRP1件とその付随データを抽出 */ 1246 1240 p_edt = _ecn_tsk_get_prp_pce(fa_fbs_id, &a_prp, p_edt); 1247 1241 if (!p_edt) { … … 1250 1244 } 1251 1245 1252 /* vpeBÌæ¾get_eprp(obj, reqp, resp, size) */1246 /* プロパティの取得 get_eprp(obj, reqp, resp, size) */ 1253 1247 memset(p_prp_buf, 0, ECHONET_MEMPOOL_BLOCK_SIZE); 1254 /* obj,epc ÉηégetÖðÄÔ*/1248 /* obj,epcに対応するget関数を呼ぶ */ 1255 1249 a_eprp = _ecn_tsk_eoj_get_property(fp_obj, a_prp.epc); 1256 1250 if ((a_eprp != NULL) && (((a_eprp->eprpatr & fa_access) != 0) && (fa_eobjatr == EOBJ_LOCAL_NODE) || fa_forward)) { … … 1263 1257 a_prp.pdc = (uint8_t)a_ans; 1264 1258 } else { 1265 *p_sw_ok = 0; /* vpeB澸s*/1259 *p_sw_ok = 0; /* プロパティ取得失敗 */ 1266 1260 a_ans = 0; 1267 1261 a_prp.pdc = 0; 1268 1262 } 1269 1263 1270 /* d¶pÉf[^ÇÁ(epc,pdcÌ2byte) */1264 /* 応答電文用メモリにデータ追加(epc,pdcの2byte) */ 1271 1265 a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_prp, sizeof(a_prp)); 1272 1266 if (a_ret) { … … 1275 1269 } 1276 1270 if (0 < a_ans) { 1277 /* tf[^ÇÁ*/1271 /* 付随データ追加 */ 1278 1272 a_ret = _ecn_fbs_add_data_ex(a_fbs_res, p_prp_buf, a_ans); 1279 1273 if (a_ret) { … … 1291 1285 1292 1286 lb_finally: 1293 /* ìÆÌæðú*/1287 /* 作業領域解放 */ 1294 1288 if (p_prp_buf) 1295 1289 _ecn_fbs_mbx_rel(p_prp_buf); 1296 1290 1297 /* vpeBpðú*/1291 /* プロパティ用メモリ解放 */ 1298 1292 if (p_edt) 1299 1293 _ecn_fbs_mbx_rel(p_edt); … … 1303 1297 1304 1298 static ER _ecn_tsk_eoj_res_main(ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, int a_count, int *p_sw_ok); 1305 /* vpeBlÇÝoµÀs*/1299 /* プロパティ値読み出し実行 */ 1306 1300 static ER _ecn_tsk_eoj_res_main(ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, int a_count, int *p_sw_ok) 1307 1301 { 1308 1302 T_ECN_SUB_BLK *p_edt = 0; 1309 void *p_prp_buf = 0; /* ìÆÌæ*/1303 void *p_prp_buf = 0; /* 作業領域 */ 1310 1304 ER a_ret = E_SYS; 1311 1305 T_ECN_PRP a_prp; /* epc+pdc */ … … 1314 1308 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc = 0; 1315 1309 1316 /* ìÆÌæmÛ*/1310 /* 作業領域確保 */ 1317 1311 p_prp_buf = _ecn_fbs_mbx_get(ECHONET_MEMPOOL_BLOCK_SIZE); 1318 1312 if (!p_prp_buf) { 1319 1313 ECN_DBG_PUT "_ecn_fbs_mbx_get() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END; 1320 goto lb_except; /* s«*/1314 goto lb_except; /* メモリ不足 */ 1321 1315 } 1322 1316 1323 1317 for (i = 0; i < a_count; i++) { 1324 /* ECN_FBS_ID ©çT_ECN_PRP1Æ»Ìtf[^ðo*/1318 /* ECN_FBS_IDからT_ECN_PRP1件とその付随データを抽出 */ 1325 1319 p_edt = _ecn_tsk_get_prp_pce(fa_fbs_id, &a_prp, p_edt); 1326 1320 if (!p_edt) { … … 1331 1325 a_prp.pdc = 0; 1332 1326 1333 /* d¶pÉf[^ÇÁ(epc,pdcÌ2byte) */1327 /* 応答電文用メモリにデータ追加(epc,pdcの2byte) */ 1334 1328 a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_prp, sizeof(a_prp)); 1335 1329 if (a_ret) { … … 1346 1340 1347 1341 lb_finally: 1348 /* ìÆÌæðú*/1342 /* 作業領域解放 */ 1349 1343 if (p_prp_buf) 1350 1344 _ecn_fbs_mbx_rel(p_prp_buf); 1351 1345 1352 /* vpeBpðú*/1346 /* プロパティ用メモリ解放 */ 1353 1347 if (p_edt) 1354 1348 _ecn_fbs_mbx_rel(p_edt); … … 1357 1351 } 1358 1352 1359 /* vpeBlÇÝòεÀs*/1353 /* プロパティ値読み飛ばし実行 */ 1360 1354 static ER _ecn_tsk_eoj_skip_main(const EOBJINIB *fp_obj, ECN_FBS_ID fa_fbs_id, 1361 1355 int a_count); … … 1368 1362 1369 1363 for (i = 0; i < a_count; i++) { 1370 /* T_ECN_PRP ª(epc,pdc)ðÇÝæé*/1364 /* T_ECN_PRP部分(epc,pdc)を読み取る */ 1371 1365 a_size = 0; 1372 1366 a_ret = _ecn_fbs_get_data(fa_fbs_id, &a_prp, sizeof(a_prp), &a_size); … … 1376 1370 } 1377 1371 1378 /* pdc ªÇÝòε*/1372 /* pdc分読み飛ばし */ 1379 1373 a_ret = _ecn_fbs_seek_rpos(fa_fbs_id, a_prp.pdc); 1380 1374 if (a_ret) { … … 1395 1389 static void _ecn_tsk_mk_rsp_hdr(const EOBJINIB *fp_obj, T_ECN_EDT_HDR *fp_rsp_esv, 1396 1390 T_ECN_EDT_HDR const *fp_req_esv); 1397 /* d¶Ýè*/1391 /* 応答電文設定 */ 1398 1392 static void _ecn_tsk_mk_rsp_hdr(const EOBJINIB *fp_obj, T_ECN_EDT_HDR *fp_rsp_esv, 1399 1393 T_ECN_EDT_HDR const *fp_req_esv) … … 1420 1414 } 1421 1415 1422 /* d¶pfbsÝè*/1416 /* 応答電文用fbs設定 */ 1423 1417 static void _ecn_tsk_set_rsp_fbs(ECN_FBS_ID fa_rsp_fbs, T_ECN_FST_BLK const *fp_req_ptr); 1424 /* d¶pfbsÝè(sender/targetÌÝè) */1418 /* 応答電文用fbs設定(sender/targetの設定) */ 1425 1419 static void _ecn_tsk_set_rsp_fbs(ECN_FBS_ID fa_rsp_fbs, T_ECN_FST_BLK const *fp_req_ptr) 1426 1420 { … … 1431 1425 } 1432 1426 1433 /* vpeBl«Ýv*/1427 /* プロパティ値書き込み要求 */ 1434 1428 static void _ecn_tsk_eoj_set(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_update, 1435 1429 ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv, … … 1446 1440 memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp)); 1447 1441 1448 /* ÅåTCYÌæ¾*/1442 /* 応答最大サイズの取得 */ 1449 1443 a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP); 1450 1444 1451 /* d¶pÌæ¾*/1445 /* 応答電文用メモリの取得 */ 1452 1446 a_ret = _ecn_fbs_cre(a_size, &a_fbs_res); 1453 if (a_ret != E_OK || !a_fbs_res.ptr) /* mÛ¸s*/1447 if (a_ret != E_OK || !a_fbs_res.ptr) /* 確保失敗 */ 1454 1448 return; 1455 1449 1456 /* d¶Ýè*/1450 /* 応答電文設定 */ 1457 1451 if(p_req_esv->edata.deoj.eojx3 != 0) 1458 1452 _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv); … … 1460 1454 _ecn_tsk_mk_rsp_hdr(fp_obj, &a_ecn_hdp, p_req_esv); 1461 1455 1462 /* ³íÌd¶ªvpeBlÊmÌê*/1456 /* 正常時の応答電文がプロパティ値通知応答の場合 */ 1463 1457 if (fa_res_esv == ESV_INFC_RES) { 1464 /* M³Æ¶æðüêÖ¦*/1458 /* 送信元と宛先を入れ替え */ 1465 1459 eoj = a_ecn_hdp.edata.seoj; 1466 1460 a_ecn_hdp.edata.seoj = a_ecn_hdp.edata.deoj; … … 1468 1462 } 1469 1463 1470 f_put_fbs_eoj("_ecn_tsk_eoj_set", "fa_fbs_id", fa_fbs_id); /* s/deoj fobOoÍ*/1471 1472 /* d¶pÉf[^ÇÁ*/1464 f_put_fbs_eoj("_ecn_tsk_eoj_set", "fa_fbs_id", fa_fbs_id); /* s/deoj デバッグ出力 */ 1465 1466 /* 応答電文用メモリにデータ追加 */ 1473 1467 a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_ecn_hdp, 1474 1468 sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata)); … … 1476 1470 goto lb_except; 1477 1471 1478 /* payload æªÌT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)ðÇÝòη*/1472 /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */ 1479 1473 a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp)); 1480 1474 if (a_ret) 1481 1475 goto lb_except; 1482 1476 1483 /* d¶pfbsÝè*/1477 /* 応答電文用fbs設定 */ 1484 1478 _ecn_tsk_set_rsp_fbs(a_fbs_res, fa_fbs_id.ptr); 1485 1479 1486 /* vpeBl«ÝÀs*/1480 /* プロパティ値書き込み実行 */ 1487 1481 a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, fa_update, fa_fbs_id, a_fbs_res, 1488 1482 fa_fbs_anno, p_req_esv->edata.opc, &a_sw_ok); … … 1490 1484 goto lb_except; 1491 1485 1492 /* vÌê*/1486 /* 応答要の場合 */ 1493 1487 if (a_sw_ok) { 1494 1488 if (!fa_res_esv) { 1495 /* svÌê*/1489 /* 応答不要の場合 */ 1496 1490 _ecn_fbs_del(a_fbs_res); 1497 1491 goto lb_finally; 1498 1492 } 1499 /* Ýè¬÷*/1493 /* 設定処理成功 */ 1500 1494 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_res_esv; 1501 1495 } else { 1502 1496 if (!fa_sna_esv) { 1503 /* svÌê*/1497 /* 応答不要の場合 */ 1504 1498 _ecn_fbs_del(a_fbs_res); 1505 1499 goto lb_finally; 1506 1500 } 1507 /* Ýè¸s*/1501 /* 設定処理失敗 */ 1508 1502 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv; 1509 1503 } 1510 /* M*/1504 /* 応答送信 */ 1511 1505 a_ret = _ecn_tsk_snd_mbx(a_fbs_res, false); 1512 1506 if (a_ret == E_OK) … … 1514 1508 1515 1509 lb_except: 1516 /* f[^M¸sµ½çÌæðú*/1510 /* データ送信失敗したら領域解放 */ 1517 1511 if (a_fbs_res.ptr) 1518 1512 _ecn_fbs_del(a_fbs_res); … … 1522 1516 } 1523 1517 1524 /* vpeBlÇÝoµv*/1518 /* プロパティ値読み出し要求 */ 1525 1519 static void _ecn_tsk_eoj_get(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_forward, ATR fa_access, 1526 1520 ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv) … … 1535 1529 memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp)); 1536 1530 1537 /* úæ¾TCY*/1531 /* 初期取得サイズ */ 1538 1532 a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP); 1539 1533 1540 /* d¶pÌæ¾*/1534 /* 応答電文用メモリの取得 */ 1541 1535 a_ret = _ecn_fbs_cre(a_size, &a_fbs_res); 1542 if (a_ret != E_OK || !a_fbs_res.ptr) { /* mÛ¸s*/1536 if (a_ret != E_OK || !a_fbs_res.ptr) { /* 確保失敗 */ 1543 1537 ECN_DBG_PUT "_ecn_fbs_cre() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END; 1544 1538 goto lb_finally; 1545 1539 } 1546 1540 1547 /* d¶Ýè*/1541 /* 応答電文設定 */ 1548 1542 if(p_req_esv->edata.deoj.eojx3 != 0) 1549 1543 _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv); … … 1551 1545 _ecn_tsk_mk_rsp_hdr(fp_obj, &a_ecn_hdp, p_req_esv); 1552 1546 1553 f_put_fbs_eoj("_ecn_tsk_eoj_get", "fa_fbs_id", fa_fbs_id); /* s/deoj fobOoÍ*/1554 1555 /* d¶pÉf[^ÇÁ*/1547 f_put_fbs_eoj("_ecn_tsk_eoj_get", "fa_fbs_id", fa_fbs_id); /* s/deoj デバッグ出力 */ 1548 1549 /* 応答電文用メモリにデータ追加 */ 1556 1550 a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_ecn_hdp, 1557 1551 sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata)); … … 1561 1555 } 1562 1556 1563 /* payload æªÌT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)ðÇÝòη*/1557 /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */ 1564 1558 a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp)); 1565 1559 if (a_ret) { … … 1568 1562 } 1569 1563 1570 /* d¶pfbsÝè*/1564 /* 応答電文用fbs設定 */ 1571 1565 _ecn_tsk_set_rsp_fbs(a_fbs_res, fa_fbs_id.ptr); 1572 1566 1573 /* vpeBlÇÝÝÀs*/1567 /* プロパティ値読み込み実行 */ 1574 1568 a_ret = _ecn_tsk_eoj_get_main(fp_obj, fa_eobjatr, fa_forward, fa_access, fa_fbs_id, a_fbs_res, 1575 1569 ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc, &a_sw_ok); … … 1581 1575 if (a_sw_ok) { 1582 1576 if (!fa_res_esv) { 1583 /* svÌê*/1577 /* 応答不要の場合 */ 1584 1578 _ecn_fbs_del(a_fbs_res); 1585 1579 goto lb_finally; 1586 1580 } 1587 /* Ýè¬÷*/1581 /* 設定処理成功 */ 1588 1582 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_res_esv; 1589 1583 } else { 1590 1584 if (!fa_sna_esv) { 1591 /* svÌê*/1585 /* 応答不要の場合 */ 1592 1586 _ecn_fbs_del(a_fbs_res); 1593 1587 goto lb_finally; 1594 1588 } 1595 /* Ýè¸s*/1589 /* 設定処理失敗 */ 1596 1590 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv; 1597 1591 } 1598 /* M*/1592 /* 応答送信 */ 1599 1593 a_ret = _ecn_tsk_snd_mbx(a_fbs_res, false); 1600 1594 if (a_ret != E_OK) { … … 1605 1599 1606 1600 lb_except: 1607 /* f[^M¸sµ½çÌæðú*/1601 /* データ送信失敗したら領域解放 */ 1608 1602 if (a_fbs_res.ptr) 1609 1603 _ecn_fbs_del(a_fbs_res); … … 1613 1607 } 1614 1608 1615 /* vpeBlÇÝoµv*/1609 /* プロパティ値読み出し要求 */ 1616 1610 static void _ecn_tsk_eoj_res(ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, 1617 1611 ECN_SRV_CODE fa_sna_esv) … … 1626 1620 memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp)); 1627 1621 1628 /* úæ¾TCY*/1622 /* 初期取得サイズ */ 1629 1623 a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP); 1630 1624 1631 /* d¶pÌæ¾*/1625 /* 応答電文用メモリの取得 */ 1632 1626 a_ret = _ecn_fbs_cre(a_size, &a_fbs_res); 1633 if (a_ret != E_OK || !a_fbs_res.ptr) { /* mÛ¸s*/1627 if (a_ret != E_OK || !a_fbs_res.ptr) { /* 確保失敗 */ 1634 1628 ECN_DBG_PUT "_ecn_fbs_cre() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END; 1635 1629 goto lb_finally; 1636 1630 } 1637 1631 1638 /* d¶Ýè*/1632 /* 応答電文設定 */ 1639 1633 _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv); 1640 1634 1641 f_put_fbs_eoj("_ecn_tsk_eoj_res", "fa_fbs_id", fa_fbs_id); /* s/deoj fobOoÍ*/1642 1643 /* d¶pÉf[^ÇÁ*/1635 f_put_fbs_eoj("_ecn_tsk_eoj_res", "fa_fbs_id", fa_fbs_id); /* s/deoj デバッグ出力 */ 1636 1637 /* 応答電文用メモリにデータ追加 */ 1644 1638 a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_ecn_hdp, 1645 1639 sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata)); … … 1649 1643 } 1650 1644 1651 /* payload æªÌT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)ðÇÝòη*/1645 /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */ 1652 1646 a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp)); 1653 1647 if (a_ret) { … … 1656 1650 } 1657 1651 1658 /* d¶pfbsÝè*/1652 /* 応答電文用fbs設定 */ 1659 1653 _ecn_tsk_set_rsp_fbs(a_fbs_res, fa_fbs_id.ptr); 1660 1654 1661 /* vpeBlÇÝÝÀs*/1655 /* プロパティ値読み込み実行 */ 1662 1656 a_ret = _ecn_tsk_eoj_res_main(fa_fbs_id, a_fbs_res, 1663 1657 ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc, &a_sw_ok); … … 1669 1663 if (a_sw_ok) { 1670 1664 if (!fa_res_esv) { 1671 /* svÌê*/1665 /* 応答不要の場合 */ 1672 1666 _ecn_fbs_del(a_fbs_res); 1673 1667 goto lb_finally; 1674 1668 } 1675 /* Ýè¬÷*/1669 /* 設定処理成功 */ 1676 1670 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_res_esv; 1677 1671 } else { 1678 1672 if (!fa_sna_esv) { 1679 /* svÌê*/1673 /* 応答不要の場合 */ 1680 1674 _ecn_fbs_del(a_fbs_res); 1681 1675 goto lb_finally; 1682 1676 } 1683 /* Ýè¸s*/1677 /* 設定処理失敗 */ 1684 1678 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv; 1685 1679 } 1686 /* M*/1680 /* 応答送信 */ 1687 1681 a_ret = _ecn_tsk_snd_mbx(a_fbs_res, false); 1688 1682 if (a_ret != E_OK) { … … 1693 1687 1694 1688 lb_except: 1695 /* f[^M¸sµ½çÌæðú*/1689 /* データ送信失敗したら領域解放 */ 1696 1690 if (a_fbs_res.ptr) 1697 1691 _ecn_fbs_del(a_fbs_res); … … 1708 1702 T_ECN_EDT_HDR a_ecn_hdp; 1709 1703 ECN_FBS_ID a_fbs_res = { 0 }; 1710 int a_rdprp_wrpos; /* vpeBÇÝÝ«ÝÌwbhÊu*/1704 int a_rdprp_wrpos; /* プロパティ読み込み件数書き込み時のヘッド位置 */ 1711 1705 ER a_ret; 1712 1706 int i, a_size, a_rdlen; 1713 1707 int a_sw_ok = 1; 1714 int a_count = ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc; /* vpeB*/1708 int a_count = ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc; /* 処理プロパティ数 */ 1715 1709 1716 1710 memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp)); … … 1719 1713 fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3 ECN_DBG_END; 1720 1714 1721 /* úæ¾TCY*/1715 /* 初期取得サイズ */ 1722 1716 a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP); 1723 1717 1724 /* d¶pÌæ¾*/1718 /* 応答電文用メモリの取得 */ 1725 1719 a_ret = _ecn_fbs_cre(a_size, &a_fbs_res); 1726 if (a_ret != E_OK || !a_fbs_res.ptr) /* mÛ¸s*/1720 if (a_ret != E_OK || !a_fbs_res.ptr) /* 確保失敗 */ 1727 1721 goto lb_finally; 1728 1722 1729 /* d¶Ýè*/1723 /* 応答電文設定 */ 1730 1724 if(p_req_esv->edata.deoj.eojx3 != 0) 1731 1725 _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv); … … 1734 1728 a_size -= sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY); 1735 1729 1736 f_put_fbs_eoj("_ecn_tsk_eoj_set_get", "fa_fbs_id", fa_fbs_id); /* s/deoj fobOoÍ*/1737 1738 /* d¶pÉf[^ÇÁ*/1730 f_put_fbs_eoj("_ecn_tsk_eoj_set_get", "fa_fbs_id", fa_fbs_id); /* s/deoj デバッグ出力 */ 1731 1732 /* 応答電文用メモリにデータ追加 */ 1739 1733 a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_ecn_hdp, 1740 1734 sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata)); … … 1742 1736 goto lb_except; 1743 1737 1744 /* payload æªÌT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)ðÇÝòη*/1738 /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */ 1745 1739 a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp)); 1746 1740 if (a_ret) 1747 1741 goto lb_except; 1748 1742 1749 /* d¶pfbsÝè*/1743 /* 応答電文用fbs設定 */ 1750 1744 _ecn_tsk_set_rsp_fbs(a_fbs_res, fa_fbs_id.ptr); 1751 1745 1752 /* vpeBl«ÝÀs*/1746 /* プロパティ値書き込み実行 */ 1753 1747 a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, false, fa_fbs_id, a_fbs_res, 1754 1748 fa_fbs_anno, a_count, &a_sw_ok); … … 1763 1757 (a_sw_ok ? "true" : "false") ECN_DBG_END; 1764 1758 1765 /* ÌðÇÝæé(1byte) */1766 /* ¨ECHONET-Lite_Ver.1.10_02.pdf p.40 [OPCGet] */1759 /* 次の件数を読み取る(1byte) */ 1760 /* → ECHONET-Lite_Ver.1.10_02.pdf p.40 [OPCGet] */ 1767 1761 a_rdlen = i = 0; 1768 1762 a_ret = _ecn_fbs_get_data(fa_fbs_id, &i, 1, &a_rdlen); … … 1771 1765 a_count = *(uint8_t *)&i; 1772 1766 1773 /* vpeBÇÝÝ«ÝÌwbhîñðL^*/1767 /* プロパティ読み込み件数書き込み時のヘッド情報を記録 */ 1774 1768 a_rdprp_wrpos = _ecn_fbs_get_datalen(a_fbs_res); 1775 1769 1776 /* d¶pÉf[^ÇÁ(OPCGet 1byte) */1770 /* 応答電文用メモリにデータ追加 (OPCGet 1byte) */ 1777 1771 a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &i, 1); 1778 1772 if (a_ret) 1779 1773 goto lb_except; 1780 1774 1781 /* ±Ì_ÅÌd¶vpeBðL^*/1775 /* この時点での応答電文中プロパティ件数を記録 */ 1782 1776 i = ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc; 1783 1777 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc = 0; 1784 1778 1785 /* vpeBlÇÝÝÀs*/1779 /* プロパティ値読み込み実行 */ 1786 1780 a_ret = _ecn_tsk_eoj_get_main(fp_obj, fa_eobjatr, false, EPC_RULE_GET, fa_fbs_id, a_fbs_res, 1787 1781 a_count, &a_sw_ok); … … 1796 1790 (a_sw_ok ? "true" : "false") ECN_DBG_END; 1797 1791 1798 /* vpeBÇÝÝ«ÝÌwbhîñÅAÇÝoµðL^*/1792 /* プロパティ読み込み件数書き込み時のヘッド情報で、読み出し件数を記録 */ 1799 1793 _ecn_fbs_poke(a_fbs_res, a_rdprp_wrpos, ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc); 1800 1794 1801 /* L^µÄ¨¢½vpeBi«Ýjð«ß·*/1795 /* 記録しておいたプロパティ件数(書き込み件数)を書き戻す */ 1802 1796 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.opc = (uint8_t)i; 1803 1797 1804 /* vÌê*/1798 /* 応答要の場合 */ 1805 1799 if (a_sw_ok) { 1806 /* Ýè¬÷*/1800 /* 設定処理成功 */ 1807 1801 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_res_esv; 1808 1802 } else { 1809 /* Ýè¸s*/1803 /* 設定処理失敗 */ 1810 1804 ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv; 1811 1805 } 1812 /* M*/1806 /* 応答送信 */ 1813 1807 a_ret = _ecn_tsk_snd_mbx(a_fbs_res, false); 1814 1808 if (a_ret == E_OK) … … 1816 1810 1817 1811 lb_except: 1818 /* f[^M¸sµ½çÌæðú*/1812 /* データ送信失敗したら領域解放 */ 1819 1813 if (a_fbs_res.ptr) 1820 1814 _ecn_fbs_del(a_fbs_res); … … 1833 1827 int i, a_size, a_rdlen; 1834 1828 int a_sw_ok = 1; 1835 int a_count = ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc; /* vpeB*/1829 int a_count = ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc; /* 処理プロパティ数 */ 1836 1830 1837 1831 memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp)); … … 1840 1834 fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3 ECN_DBG_END; 1841 1835 1842 /* úæ¾TCY*/1836 /* 初期取得サイズ */ 1843 1837 a_size = sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY) + sizeof(T_ECN_PRP); 1844 1838 1845 /* d¶pi_~[jÌæ¾*/1839 /* 応答電文用メモリ(ダミー)の取得 */ 1846 1840 a_ret = _ecn_fbs_cre(a_size, &a_fbs_dmy); 1847 if (a_ret != E_OK || !a_fbs_dmy.ptr) /* mÛ¸s*/1841 if (a_ret != E_OK || !a_fbs_dmy.ptr) /* 確保失敗 */ 1848 1842 goto lb_finally; 1849 1843 1850 /* d¶Ýè*/1844 /* 応答電文設定 */ 1851 1845 _ecn_tsk_mk_rsp_hdr_res(&a_ecn_hdp, p_req_esv); 1852 1846 a_size -= sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY); 1853 1847 1854 /* payload æªÌT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)ðÇÝòη*/1848 /* payload先頭のT_ECN_HDR(ecn_hdr), T_ECN_EDATA_BODY(edata)を読み飛ばす */ 1855 1849 a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp)); 1856 1850 if (a_ret) 1857 1851 goto lb_except; 1858 1852 1859 /* vpeBl«ÝÇÝòεÀs*/1853 /* プロパティ値書き込み応答読み飛ばし実行 */ 1860 1854 a_ret = _ecn_tsk_eoj_skip_main(fp_obj, fa_fbs_id, a_count); 1861 1855 if (a_ret) { … … 1869 1863 (a_sw_ok ? "true" : "false") ECN_DBG_END; 1870 1864 1871 /* ÌðÇÝæé(1byte) */1872 /* ¨ECHONET-Lite_Ver.1.10_02.pdf p.40 [OPCGet] */1865 /* 次の件数を読み取る(1byte) */ 1866 /* → ECHONET-Lite_Ver.1.10_02.pdf p.40 [OPCGet] */ 1873 1867 a_rdlen = i = 0; 1874 1868 a_ret = _ecn_fbs_get_data(fa_fbs_id, &i, 1, &a_rdlen); … … 1877 1871 a_count = *(uint8_t *)&i; 1878 1872 1879 /* vpeBlÇÝoµÌ«ÝÀs*/1873 /* プロパティ値読み出し応答の書き込み実行 */ 1880 1874 a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, true, fa_fbs_id, a_fbs_dmy, 1881 1875 fa_fbs_anno, a_count, &a_sw_ok); … … 1893 1887 1894 1888 lb_except: 1895 /* f[^M¸sµ½çÌæðú*/1889 /* データ送信失敗したら領域解放 */ 1896 1890 if (a_fbs_dmy.ptr) 1897 1891 _ecn_fbs_del(a_fbs_dmy); … … 1902 1896 1903 1897 /* 1904 * d¶Ò¿ÌèÝd¶ì¬1898 * 応答電文待ちの割り込み電文作成 1905 1899 */ 1906 1900 ER _ecn_mk_brk_wai(ECN_FBS_ID *pk_fbs_id, const void *p_dat, size_t fa_size) 1907 1901 { 1908 1902 ER a_ret; 1909 ECN_FBS_ID a_fbs_id = { 0 }; /* vd¶p*/1903 ECN_FBS_ID a_fbs_id = { 0 }; /* 要求電文用メモリ */ 1910 1904 1911 1905 if (!pk_fbs_id) … … 1913 1907 *pk_fbs_id = a_fbs_id; 1914 1908 if (sizeof(a_fbs_id.ptr->payload) <= fa_size) 1915 return E_PAR; /* tf[^ªå«·¬é*/1909 return E_PAR; /* 付随データが大きすぎる */ 1916 1910 if (!p_dat && 0 < fa_size) 1917 return E_PAR; /* tf[^TCYª1ÈãÈÌÉf[^|C^ªNULL */1918 1919 /* vd¶pÌæ¾*/1911 return E_PAR; /* 付随データサイズが1以上なのにデータポインタがNULL */ 1912 1913 /* 要求電文用メモリの取得 */ 1920 1914 a_ret = _ecn_fbs_cre((0 < fa_size ? fa_size : 1), &a_fbs_id); 1921 if (a_ret != E_OK || !a_fbs_id.ptr) { /* mÛ¸s*/1915 if (a_ret != E_OK || !a_fbs_id.ptr) { /* 確保失敗 */ 1922 1916 syslog(LOG_WARNING, "_ecn_fbs_cre(%d) result = %d:%s", fa_size, a_ret, itron_strerror(a_ret)); 1923 1917 return a_ret; 1924 1918 } 1925 1919 1926 /* vd¶Ýè*/1920 /* 要求電文設定 */ 1927 1921 a_fbs_id.ptr->hdr.type = ECN_MSG_USER_BREAK; 1928 1922 a_fbs_id.ptr->hdr.sender = ENOD_API_ID; … … 1931 1925 1932 1926 if (0 < fa_size && p_dat) { 1933 /* tf[^ÇÁ*/1927 /* 付随データ追加 */ 1934 1928 a_ret = _ecn_fbs_add_data_ex(a_fbs_id, p_dat, fa_size); 1935 1929 if (a_ret) { … … 1943 1937 *pk_fbs_id = a_fbs_id; 1944 1938 1945 /* ³íI¹*/1939 /* 正常終了 */ 1946 1940 return a_ret; 1947 1941 1948 1942 lb_except: 1949 /* f[^쬸sµ½çÌæðú*/1943 /* データ作成失敗したら領域解放 */ 1950 1944 if (a_fbs_id.ptr) 1951 1945 _ecn_fbs_del(a_fbs_id); … … 1954 1948 } 1955 1949 1956 /* d¶pfbsÝè(sender/targetÌÝè) */1950 /* 応答電文用fbs設定(sender/targetの設定) */ 1957 1951 ER _ecn_tsk_cre_req_fbs(ID sender, uint8_t cmd, ECN_FBS_ID *pk_req) 1958 1952 { … … 1983 1977 } 1984 1978 1985 /* d¶pfbsÝè(sender/targetÌÝè) */1979 /* 応答電文用fbs設定(sender/targetの設定) */ 1986 1980 ER _ecn_tsk_cre_res_fbs(ECN_FBS_ID req, uint8_t cmd, ECN_FBS_ID *pk_res) 1987 1981 { -
Property svn:mime-type
changed from
-
uKadecot/trunk/ecnl_ssp/echonet_task.h
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r101 r107 4 4 * Copyright (C) 2014 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 … … 58 54 59 55 /* 60 * ECHONET Lite ^XNÖAÌèÌftHglÌè`56 * ECHONET Lite タスク関連の定数のデフォルト値の定義 61 57 */ 62 58 #ifndef ECHONET_TASK_PRIORITY 63 #define ECHONET_TASK_PRIORITY 6 /* úDæx*/59 #define ECHONET_TASK_PRIORITY 6 /* 初期優先度 */ 64 60 #endif /* ECHONET_TASK_PRIORITY */ 65 61 66 62 #ifndef ECHONET_TASK_STACK_SIZE 67 #define ECHONET_TASK_STACK_SIZE 1024 /* X^bNÌæÌTCY*/63 #define ECHONET_TASK_STACK_SIZE 1024 /* スタック領域のサイズ */ 68 64 #endif /* ECHONET_TASK_STACK_SIZE */ 69 65 … … 82 78 83 79 /* 84 * ECHONET Lite ^XNÌ{Ì80 * ECHONET Lite タスクの本体 85 81 */ 86 82 void echonet_task(intptr_t exinf); 87 83 88 84 /* 89 * ECHONET Lite ^XNN®p85 * ECHONET Lite タスク起動用 90 86 */ 91 87 void echonet_cychdr(intptr_t exinf); 92 88 93 /* ECHONET Lite CX^XXgÌ1AiEX½èÅåm[h*/89 /* ECHONET Lite インスタンスリストの1アナウンス当たり最大ノード数 */ 94 90 #define ECN_IST_LST_EOJ_MAX_CT (84) 95 91 96 /* ECHONET Lite IuWFNgR[h x1,x2,x3(T_ECN_EOJ)ð24bit®ÉÏ·*/92 /* ECHONET Liteオブジェクトコード x1,x2,x3(T_ECN_EOJ)を24bit整数に変換 */ 97 93 #define _ECN_EOJ2VALUE(s) (((s).eojx1 << 16) | ((s).eojx2 << 8) | (s).eojx3) 98 94 99 95 enum ecn_epc_code 100 96 { 101 ECN_EPC_INL_BCS = 0xD5 /* CX^XXgÊmvpeB*/97 ECN_EPC_INL_BCS = 0xD5 /* インスタンスリスト通知プロパティ */ 102 98 }; 103 99 … … 129 125 130 126 /* 131 * vd¶ì¬127 * 要求電文作成 132 128 */ 133 129 ER _ecn_tsk_mk_esv(ECN_FBS_ID *fp_fbs_id, ID fa_seoj, ID fa_deoj, … … 137 133 138 134 /* 139 * d¶Ò¿ÌèÝd¶ì¬135 * 応答電文待ちの割り込み電文作成 140 136 */ 141 137 ER _ecn_mk_brk_wai(ECN_FBS_ID *pk_fbs_id, const void *p_dat, size_t fa_size); -
Property svn:mime-type
changed from
-
uKadecot/trunk/ecnl_ssp/echonet_uip_task.c
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r101 r107 4 4 * Copyright (C) 2014 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 UDP ÊM^XN39 * ECHONET Lite UDP通信処理タスク 44 40 */ 45 41 #ifdef SUPPORT_UIP … … 95 91 96 92 /* 97 * óMµ½UDPf[^ðMAILBOXÉé93 * 受信したUDPデータをMAILBOXに送る 98 94 */ 99 95 ER _ecn_udp2mbx(const uint8_t *buffer, size_t fa_len, const T_IPV4EP *dst); … … 110 106 111 107 a_rcv_pkt.buffer = buffer; 112 if ( a_rcv_pkt.t_esv->ecn_hdr.ehd1 != ECN_EDH1_ECHONET_LITE /* ECHONET Lite Ki*/113 || a_rcv_pkt.t_esv->ecn_hdr.ehd2 != ECN_EDH2_FORMAT_1 /* d¶`®1 */) {108 if ( a_rcv_pkt.t_esv->ecn_hdr.ehd1 != ECN_EDH1_ECHONET_LITE /* ECHONET Lite規格 */ 109 || a_rcv_pkt.t_esv->ecn_hdr.ehd2 != ECN_EDH2_FORMAT_1 /* 電文形式1 */) { 114 110 ECN_DBG_PUT "[UDP ECHO SRV] illegal type (0x%02X,0x%02X)", a_rcv_pkt.t_esv->ecn_hdr.ehd1, a_rcv_pkt.t_esv->ecn_hdr.ehd2 ECN_DBG_END; 115 111 return E_PAR; … … 134 130 a_fbs_id.ptr->hdr.sender = ENOD_NOT_MATCH_ID; 135 131 136 /* IP AhX©ç[gECHONETm[hÖÏ·*/132 /* IPアドレスからリモートECHONETノードへ変換 */ 137 133 a_enod_id = udp_get_id((T_EDATA *)a_fbs_id.ptr, dst->ipaddr, dst->portno); 138 134 if (a_enod_id < 0 || tnum_enodadr <= a_enod_id) { … … 140 136 ip2str(NULL, dst->ipaddr) ECN_DBG_END; 141 137 } else { 142 /* M³ECHONETm[hðL^*/138 /* 送信元ECHONETノードを記録 */ 143 139 a_fbs_id.ptr->hdr.sender = a_enod_id; 144 140 } 145 141 a_fbs_id.ptr->hdr.reply = a_fbs_id.ptr->hdr.sender; 146 142 147 /* echonet_task Éé*/143 /* echonet_taskに送る */ 148 144 a_ret = psnd_dtq(ecn_svc_mailboxid, (intptr_t)a_fbs_id.ptr); 149 145 if (a_ret != E_OK) { … … 158 154 159 155 /* 160 * ECHONET UDP ÊM^XN156 * ECHONET UDP通信処理タスク 161 157 */ 162 158 static 163 159 PT_THREAD(echonet_udp_task_pt(void)) 164 160 { 165 /* UDP oÍÌæibèj*/161 /* UDP出力領域(暫定) */ 166 162 static uint_t buffer[(UIP_BUFSIZE) / sizeof(uint_t) + 1]; 167 163 … … 201 197 } 202 198 203 /* üúnhÌN®*/199 /* 周期ハンドラの起動 */ 204 200 a_ret = sta_cyc(ecn_udp_cychdrid); 205 201 if (a_ret != E_OK) { … … 220 216 } 221 217 222 /* bZ[W[v*/218 /* メッセージループ */ 223 219 for (;;) { 224 220 a_prev = a_now; … … 244 240 245 241 if (a_ret == E_OK) { 246 /* Mf[^·ðæ¾*/242 /* 送信データ長を取得 */ 247 243 a_snd_len = _ecn_fbs_get_datalen(a_mdt.fbs_id); 248 244 … … 270 266 271 267 /* 272 * ECHONET UDP ÊMvgXbhN®^XN268 * ECHONET UDP通信処理プロトスレッド起動タスク 273 269 */ 274 270 void echonet_udp_task(intptr_t exinf) … … 278 274 279 275 /* 280 * ECHONET UDP ÊM^XNN®püúnh[276 * ECHONET UDP通信処理タスク起動用周期ハンドラー 281 277 */ 282 278 void echonet_udp_cychdr(intptr_t exinf) … … 285 281 } 286 282 287 /* d¶pfbsÝè(sender/targetÌÝè) */283 /* 応答電文用fbs設定(sender/targetの設定) */ 288 284 static ER _ecn_udp_cre_req_fbs(ID sender, uint8_t cmd, ECN_FBS_ID *pk_req) 289 285 { … … 314 310 } 315 311 316 /* d¶pfbsÝè(sender/targetÌÝè) */312 /* 応答電文用fbs設定(sender/targetの設定) */ 317 313 static ER _ecn_udp_cre_res_fbs(ECN_FBS_ID req, uint8_t cmd, ECN_FBS_ID *pk_res) 318 314 { … … 344 340 345 341 /* 346 * àbZ[WóM342 * 内部メッセージ受信処理 347 343 */ 348 344 void _ecn_int_msg(ECN_FBS_ID fbs_id, ECN_FBS_SSIZE_T a_snd_len) … … 362 358 363 359 switch(cmd){ 364 // IP AhXðÔM360 // IPアドレスを返信 365 361 case ECN_UDP_MSG_GET_IPADDR_REQ: 366 362 if (a_snd_len < sizeof(msg)) { … … 431 427 432 428 /* 433 * ECHONET d¶óM429 * ECHONET 電文受信処理 434 430 */ 435 431 void _ecn_esv_msg(ECN_FBS_ID fbs_id) 436 432 { 437 /* UDP oÍÌæibèj*/433 /* UDP出力領域(暫定) */ 438 434 static uint_t buffer[(UIP_BUFSIZE) / sizeof(uint_t) + 1]; 439 435 T_IPV4EP a_dst; … … 444 440 uip_ipaddr(a_dst.ipaddr, 0,0,0,0); 445 441 a_dst.portno = 0; 446 /* MæIPAhX*/442 /* 送信先IPアドレス */ 447 443 a_ret = udp_get_ip(&a_dst, fbs_id.ptr->hdr.target); 448 444 if (!a_ret) { 449 ECN_DBG_PUT "[UDP TSK] echonet-node 0x%02X-0x%02X-0x%02X ¨udp dest(%s)",445 ECN_DBG_PUT "[UDP TSK] echonet-node 0x%02X-0x%02X-0x%02X → udp dest(%s)", 450 446 ((T_EDATA *)fbs_id.ptr)->hdr.edata.deoj.eojx1, 451 447 ((T_EDATA *)fbs_id.ptr)->hdr.edata.deoj.eojx2, … … 453 449 ip2str(NULL, a_dst.ipaddr) ECN_DBG_END; 454 450 455 /* fbs ©çoÍÌæÉf[^ðo*/451 /* fbsから出力領域にデータを抽出 */ 456 452 a_snd_len = 0; 457 453 a_ret = _ecn_fbs_get_data(fbs_id, buffer, sizeof(buffer), &a_snd_len); … … 460 456 } 461 457 else if(uip_ipaddr_cmp(a_dst.ipaddr, localhost)) { 462 /* Mæª127.0.0.1 ¨ mbxÉ]*/463 ECN_DBG_PUT "redirect ecn_udp_mailboxid ¨ecn_svc_mailboxid (esv:0x%02X)",458 /* 送信先が127.0.0.1 → mbxに転送 */ 459 ECN_DBG_PUT "redirect ecn_udp_mailboxid → ecn_svc_mailboxid (esv:0x%02X)", 464 460 ((T_EDATA *)fbs_id.ptr)->hdr.edata.esv ECN_DBG_END; 465 461 … … 475 471 _ecn_dbg_bindmp((const uint8_t *)buffer, a_snd_len); 476 472 #endif 477 /* UDP M*/473 /* UDP送信 */ 478 474 a_ret = udp_snd_dat(UDP_CEPID, &a_dst, buffer, a_snd_len); 479 475 if (a_ret < 0) { … … 482 478 } 483 479 484 /* f[^ª··¬Ä1pPbgÉûÜçÈ©Á½ê*/480 /* データが長すぎて1パケットに収まらなかった場合 */ 485 481 if (_ecn_fbs_exist_data(fbs_id)) { 486 482 ECN_DBG_PUT "[UDP TSK] send, data so long: %dbyte(s)", _ecn_fbs_get_datalen(fbs_id) ECN_DBG_END; … … 497 493 498 494 /* 499 * mubLOR[ÌR[obNÖ495 * ノンブロッキングコールのコールバック関数 500 496 */ 501 497 static … … 518 514 } 519 515 #ifdef _MSC_VER 520 /* ( Jp) ECHONETppPbgÈOÍÇÝÌÄé*/516 /* (開発用) ECHONET用パケット以外は読み捨てる */ 521 517 if (buffer[0] != 0x10 || buffer[1] != 0x81) { 522 518 PT_EXIT(&s.pt); … … 548 544 549 545 /* 550 * [gECHONETm[hÌKmF546 * リモートECHONETノードの適合確認 551 547 */ 552 548 bool_t is_match(const EOBJCB *enodcb, T_EDATA *edata, const void *_ipaddr, uint16_t portno) … … 566 562 return false; 567 563 568 /* m[hX^[gCX^XXgÊmÈOÍO*/564 /* ノードスタート時インスタンスリスト通知以外は除外 */ 569 565 if ( edata->hdr.edata.esv != ESV_INF 570 566 || edata->hdr.edata.deoj.eojx1 != EOJ_X1_PROFILE … … 588 584 } 589 585 ECN_DBG_PUT "is_match(): ecn_itr_nxt() result: epc=0x%02X, pdc=%d", epc, pdc ECN_DBG_END; 590 /* CX^XXgÊmܽͩm[hCX^XXgrÈOÍO*/586 /* インスタンスリスト通知または自ノードインスタンスリストS以外は除外 */ 591 587 if ((epc != 0xD5) && (epc != 0xD6)) { 592 588 continue; 593 589 } 594 590 595 /* QoCgÚÈ~Éeojªñ³êÄ¢é*/591 /* 2バイト目以降にeojが列挙されている */ 596 592 count = (pdc - 1) / sizeof(T_ECN_EOJ); 597 593 598 /* m[hàÌ@íIuWFNgðõ*/594 /* ノード内の機器オブジェクトを検索 */ 599 595 for (k = 0; k < enodcb->eobjcnt; k++) { 600 596 p_eobj = enodcb->eobjs[k]; 601 597 602 /* CX^XXgðmF*/598 /* インスタンスリストを確認 */ 603 599 match = false; 604 600 for (i = 0, j = 1; i < count; i++, j += sizeof(T_ECN_EOJ)) { … … 618 614 } 619 615 620 /* ·×ĵÁÄ¢½çKiCX^XXgÌûª½Äࢢ±ÆÆ·éj*/616 /* すべて揃っていたら適合(インスタンスリストの方が多くてもいいこととする) */ 621 617 return true; 622 618 } … … 626 622 627 623 /* 628 * IP AhX©ç[gECHONETm[hÖÏ·624 * IPアドレスからリモートECHONETノードへ変換 629 625 */ 630 626 ECN_ENOD_ID udp_get_id(T_EDATA *edata, const T_IN4_ADDR ipaddr, uint16_t portno) … … 638 634 return ENOD_MULTICAST_ID; 639 635 640 /* IP AhX̯¶àÌðõ*/636 /* IPアドレスの同じものを検索 */ 641 637 for (i = 0, ea = enodadrb_table; i < tnum_enodadr; i++, ea++) { 642 638 if (!ea->inuse) … … 650 646 } 651 647 652 /* ηé[gm[hðõ*/648 /* 対応するリモートノードを検索 */ 653 649 for (i = ENOD_REMOTE_ID, ea = &enodadrb_table[ENOD_REMOTE_ID]; i < tnum_enodadr; i++, ea++) { 654 650 if (!ea->inuse) … … 661 657 continue; 662 658 663 /* ηé[gm[hª êÎIPAhXðÝè*/659 /* 対応するリモートノードがあればIPアドレスを設定 */ 664 660 uip_ipaddr_copy(ea->ipaddr, ipaddr); 665 661 … … 669 665 } 670 666 671 /* ó«ÌæðTµÄ©®o^*/667 /* 空き領域を探して自動登録 */ 672 668 for (i = ENOD_REMOTE_ID, ea = &enodadrb_table[ENOD_REMOTE_ID]; i < tnum_enodadr; i++, ea++) { 673 669 if (ea->inuse) … … 686 682 687 683 /* 688 * [gECHONETm[h©çIPAhXÖÏ·684 * リモートECHONETノードからIPアドレスへ変換 689 685 */ 690 686 int udp_get_ip(T_IPV4EP *fp_ipep, ECN_ENOD_ID fa_enodid) … … 698 694 699 695 if (fa_enodid == ENOD_MULTICAST_ID) { 700 /* target ªENOD_MULTICAST_IDÌêA}`LXgðs¤*/696 /* targetがENOD_MULTICAST_IDの場合、マルチキャストを行う */ 701 697 uip_ipaddr_copy(fp_ipep->ipaddr, multicast); 702 698 return 0; /* ok */ … … 704 700 705 701 if (fa_enodid < ENOD_REMOTE_ID) { 706 /* target ª¢è`ELOCALEAPIÌêA[Jzðs¤*/702 /* targetが未定義・LOCAL・APIの場合、ローカル配送を行う */ 707 703 uip_ipaddr_copy(fp_ipep->ipaddr, localhost); 708 704 return 0; /* ok */ -
Property svn:mime-type
changed from
-
uKadecot/trunk/ecnl_ssp/echonet_uip_task.h
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r101 r107 4 4 * Copyright (C) 2014 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 … … 55 51 56 52 /* 57 * ECHONET Lite êįñAhX53 * ECHONET Lite 一斉同報アドレス 58 54 */ 59 55 #ifdef SIL_ENDIAN_LITTLE … … 64 60 65 61 /* 66 * ECHONET Lite ^XNÖAÌèÌftHglÌè`62 * ECHONET Lite タスク関連の定数のデフォルト値の定義 67 63 */ 68 64 #ifndef ECHONET_UDP_TASK_PRIORITY 69 #define ECHONET_UDP_TASK_PRIORITY 5 /* úDæx*/65 #define ECHONET_UDP_TASK_PRIORITY 5 /* 初期優先度 */ 70 66 #endif /* ECHONET_UDP_TASK_PRIORITY */ 71 67 72 68 #ifndef ECHONET_UDP_TASK_STACK_SIZE 73 #define ECHONET_UDP_TASK_STACK_SIZE 1024 /* X^bNÌæÌTCY*/69 #define ECHONET_UDP_TASK_STACK_SIZE 1024 /* スタック領域のサイズ */ 74 70 #endif /* ECHONET_UDP_TASK_STACK_SIZE */ 75 71 … … 79 75 80 76 /* 81 * ECHONET Lite ^XNÌ{Ì77 * ECHONET Lite タスクの本体 82 78 */ 83 79 void echonet_udp_task(intptr_t exinf); 84 80 85 /* mubLOR[ÌR[obNÖ*/81 /* ノンブロッキングコールのコールバック関数 */ 86 82 ER callback_nblk_udp(struct uip_udp_conn *uip_udp_conn, int fncd, void *p_parblk); 87 83 88 /* ECHONET Lite ^XNN®püúnh[*/84 /* ECHONET Lite タスク起動用周期ハンドラー */ 89 85 void echonet_udp_cychdr(intptr_t exinf); 90 86 91 87 /* 92 * [gECHONETm[hÌKmF88 * リモートECHONETノードの適合確認 93 89 */ 94 90 bool_t is_match(const EOBJCB *eobjcb, T_EDATA *edata, const void *_ipaddr, uint16_t portno); 95 91 96 /* IP AhXð¶ñÉÏ·*/92 /* IPアドレスを文字列に変換 */ 97 93 char *ipaddr2str(char *buf, int bubsz, uint8_t *ipaddr); 98 94 -
Property svn:mime-type
changed from
-
uKadecot/trunk/ecnl_ssp/fbs_string.c
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r101 r107 9 9 * Copyright (C) 2015 Cores Co., Ltd. Japan 10 10 * 11 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 12 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 13 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 14 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 15 * \¦C±Ìpð¨æѺL̳ÛØKèªC»ÌÜÜÌ`Å\[ 16 * XR[hÉÜÜêÄ¢é±ÆD 17 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 18 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 19 gip 20 * Ò}j 21 AÈÇjÉCãLÌì \¦C±Ìpð¨æѺL 22 * ̳ÛØKèðfÚ·é±ÆD 23 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 24 * pÅ«È¢`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 25 * ÆD 26 * (a) Äzzɺ¤hL 27 gipÒ}j 28 AÈÇjÉCãLÌ 29 * ì \¦C±Ìpð¨æѺL̳ÛØKèðfÚ·é±ÆD 30 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 31 * ñ·é±ÆD 32 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 33 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 34 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 35 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 36 * ÆÓ·é±ÆD 11 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 12 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 13 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 14 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 15 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 16 * スコード中に含まれていること. 17 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 18 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 19 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 20 * の無保証規定を掲載すること. 21 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 22 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 23 * と. 24 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 25 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 26 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 27 * 報告すること. 28 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 29 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 30 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 31 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 32 * 免責すること. 37 33 * 38 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨39 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI40 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF41 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»42 * ÌÓCðíÈ¢D34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 35 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 36 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 37 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 38 * の責任を負わない. 43 39 * 44 40 * @(#) $Id$ … … 51 47 52 48 /* 53 * lð¶ñÉÏ·49 * 数値を文字列に変換 54 50 */ 55 51 #define CONVERT_BUFLEN ((sizeof(uintptr_t) * CHAR_BIT + 2) / 3) 56 /* uintptr_t ^ÌlÌÅå¶*/52 /* uintptr_t型の数値の最大文字数 */ 57 53 static ER 58 54 convert(ECN_FBS_ID fbs, ECN_FBS_SSIZE_T *pos, uintptr_t val, uint_t radix, const char *radchar, … … 100 96 101 97 /* 102 * ¶ñ®`oÍ98 * 文字列整形出力 103 99 */ 104 100 static const char raddec[] = "0123456789"; -
Property svn:mime-type
changed from
-
uKadecot/trunk/ecnl_ssp/fbs_string.h
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r101 r107 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$ -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.