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