Changeset 107 for uKadecot/trunk/ecnl_ssp/echonet.c
- Timestamp:
- Jun 10, 2015, 8:40:31 PM (9 years ago)
- File:
-
- 1 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
Note:
See TracChangeset
for help on using the changeset viewer.