- Timestamp:
- Jan 14, 2016, 1:17:21 PM (7 years ago)
- Location:
- uKadecot/trunk
- Files:
-
- 1 added
- 1 deleted
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
uKadecot/trunk/csp/ukadecot/ukadecot.mtpj
r101 r152 1355 1355 </LinkOptionCommandLine-DefaultValue> 1356 1356 <IsLockedByUser>False</IsLockedByUser> 1357 <TimeTagModified--0>-8587 688264305376439</TimeTagModified--0>1357 <TimeTagModified--0>-8587488782341293937</TimeTagModified--0> 1358 1358 <LinkOptionCpu-0>False</LinkOptionCpu-0> 1359 1359 <LinkOptionForm-0>Absolute</LinkOptionForm-0> … … 1363 1363 <LinkOptionOptimize-0>None</LinkOptionOptimize-0> 1364 1364 <LinkOptionStack-0>False</LinkOptionStack-0> 1365 <LinkOptionStart-0>SI,SU/00000000,R,R_2,R_1,B,B_2,B_1/00000800,BETH_MEMORY/0001 9F00,C$VECT,P,D,D_2,D_1,W,W_2,W_1,C,C_2,C_1,L/0FFFC0000,FVECT/0FFFFFF80</LinkOptionStart-0>1365 <LinkOptionStart-0>SI,SU/00000000,R,R_2,R_1,B,B_2,B_1/00000800,BETH_MEMORY/0001C000,C$VECT,P,D,D_2,D_1,W,W_2,W_1,C,C_2,C_1,L/0FFFC0000,FVECT/0FFFFFF80</LinkOptionStart-0> 1366 1366 <LinkOptionCompress-0>False</LinkOptionCompress-0> 1367 1367 <LinkOptionCpuInformation-0 /> -
uKadecot/trunk/ecnl_ssp/echonet.c
r108 r152 235 235 a_ret = _ecn_fbs_add_data_ex(*(ECN_FBS_ID *)&ppk_esv, &ppk_esv->hdr.edata.opc, 1); 236 236 if (a_ret) { 237 ECN_DBG_PUT "ecn_trn_set_get(): _ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;237 ECN_DBG_PUT("ecn_trn_set_get(): _ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret)); 238 238 return a_ret; 239 239 } … … 264 264 a_wr_opc = _ecn_fbs_peek(*(ECN_FBS_ID *)&ppk_esv, fa_trn_pos); 265 265 if (a_wr_opc < 0) { 266 ECN_DBG_PUT "ecn_end_set_get(): _ecn_fbs_peek() result = %d:%s", a_wr_opc, itron_strerror(a_wr_opc) ECN_DBG_END;266 ECN_DBG_PUT("ecn_end_set_get(): _ecn_fbs_peek() result = %d:%s", a_wr_opc, itron_strerror(a_wr_opc)); 267 267 return a_wr_opc; 268 268 } … … 274 274 a_ret = _ecn_fbs_poke(*(ECN_FBS_ID *)&ppk_esv, fa_trn_pos, a_rd_opc); 275 275 if (a_ret) { 276 ECN_DBG_PUT "ecn_end_set_get(): _ecn_fbs_poke() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;276 ECN_DBG_PUT("ecn_end_set_get(): _ecn_fbs_poke() result = %d:%s", a_ret, itron_strerror(a_ret)); 277 277 return a_ret; 278 278 } … … 328 328 a_ret = _ecn_fbs_add_data_ex(a_fbs_id, &a_ecn_prp, sizeof(a_ecn_prp)); 329 329 if (a_ret) { 330 ECN_DBG_PUT 330 ECN_DBG_PUT("ecn_add_edt(): _ecn_fbs_add_data_ex(*, ecn_prp{epc:0x%02X}, %u) result = %d:%s", 331 331 a_ecn_prp.epc, sizeof(a_ecn_prp), 332 a_ret, itron_strerror(a_ret) ECN_DBG_END;332 a_ret, itron_strerror(a_ret)); 333 333 goto lb_except; 334 334 } … … 337 337 a_ret = _ecn_fbs_add_data_ex(a_fbs_id, p_edt, fa_pdc); 338 338 if (a_ret) { 339 ECN_DBG_PUT 339 ECN_DBG_PUT("ecn_add_edt(): _ecn_fbs_add_data_ex(*, ecn_prp{epc:0x%02X} edt, %u) result = %d:%s", 340 340 a_ecn_prp.epc, fa_pdc, 341 a_ret, itron_strerror(a_ret) ECN_DBG_END;341 a_ret, itron_strerror(a_ret)); 342 342 goto lb_except; 343 343 } … … 523 523 524 524 #ifdef ECN_ENA_ITR_NXT_CARP 525 ECN_CAP_PUT "ecn_itr_nxt() rd.cur=b%dp%d", pk_itr->cur.blk, pk_itr->cur.pos ECN_CAP_PUT;525 ECN_CAP_PUT("ecn_itr_nxt() rd.cur=b%dp%d", pk_itr->cur.blk, pk_itr->cur.pos ECN_CAP_PUT(; 526 526 #endif 527 527 if (pk_itr->count <= pk_itr->got_ct && 0 < pk_itr->next_blk_ct) { … … 550 550 goto lb_except; 551 551 if (a_rd_len < sizeof(a_ecn_prp)) { 552 ECN_DBG_PUT 553 " rd.cur=%d", pk_itr->cur ECN_DBG_END;552 ECN_DBG_PUT("ecn_itr_nxt() ecn_prp read fault." 553 " rd.cur=%d", pk_itr->cur); 554 554 pk_itr->is_eof = 1; /* 終端に達した時、非0 */ 555 555 a_ret = E_BOVR; /* データ終了 */ … … 566 566 goto lb_except; 567 567 if (a_rd_len < (ECN_FBS_SSIZE_T)a_ecn_prp.pdc) { 568 ECN_DBG_PUT 569 " rd.cur=%d,epc=0x%02X,pdc=%u", pk_itr->cur, a_ecn_prp.epc , a_ecn_prp.pdc ECN_DBG_END;568 ECN_DBG_PUT("ecn_itr_nxt() edt read fault." 569 " rd.cur=%d,epc=0x%02X,pdc=%u", pk_itr->cur, a_ecn_prp.epc , a_ecn_prp.pdc); 570 570 pk_itr->is_eof = 1; /* 終端に達した時、非0 */ 571 571 a_ret = E_BOVR; /* データ終了 */ … … 576 576 577 577 #ifdef ECN_ENA_ITR_NXT_CARP 578 ECN_CAP_PUT "ecn_itr_nxt() read: ct=%d/%d", pk_itr->got_ct, pk_itr->count ECN_CAP_PUT;578 ECN_CAP_PUT("ecn_itr_nxt() read: ct=%d/%d", pk_itr->got_ct, pk_itr->count ECN_CAP_PUT(; 579 579 #endif 580 580 … … 605 605 a_ret = _ecn_tsk_snd_mbx(a_fbs_id, true); 606 606 if (a_ret) { 607 ECN_DBG_PUT 608 a_ret, itron_strerror(a_ret) ECN_DBG_END;607 ECN_DBG_PUT("_ecn_tsk_snd_mbx() result = %d:%s", 608 a_ret, itron_strerror(a_ret)); 609 609 goto lb_except; 610 610 } … … 637 637 a_fbs.ptr = (T_ECN_FST_BLK *)pk_esv; 638 638 if (a_fbs.ptr->hdr.type != ECN_MSG_USER_BREAK) { 639 ECN_DBG_PUT 640 a_fbs.ptr->hdr.type ECN_DBG_END;639 ECN_DBG_PUT("ecn_get_brk_dat: fbs-type:%d != ECN_MSG_USER_BREAK", 640 a_fbs.ptr->hdr.type); 641 641 return E_PAR; 642 642 } … … 645 645 a_ret = _ecn_fbs_set_rpos(a_fbs, 0); 646 646 if (a_ret) { 647 ECN_DBG_PUT 648 a_ret, itron_strerror(a_ret) ECN_DBG_END;647 ECN_DBG_PUT("_ecn_fbs_set_rpos(*, 0) result = %d:%s", 648 a_ret, itron_strerror(a_ret)); 649 649 return a_ret; 650 650 } … … 655 655 a_ret = _ecn_fbs_get_data(a_fbs, p_buf, fa_bufsz, &a_len); 656 656 if (a_ret || !a_len) { 657 ECN_DBG_PUT 658 a_ret, itron_strerror(a_ret) ECN_DBG_END;657 ECN_DBG_PUT("_ecn_fbs_get_data(*, p_buf, fa_bufsz) result = %d:%s", 658 a_ret, itron_strerror(a_ret)); 659 659 return E_PAR; 660 660 } -
uKadecot/trunk/ecnl_ssp/echonet_dbg.c
r108 r152 109 109 /* 110 110 * デバッグ出力 111 * 例: ECN_DBG_PUT "task start" ECN_DBG_END;111 * 例: ECN_DBG_PUT("task start"); 112 112 */ 113 113 int _ecn_dbg_dbgput(const char *fp_srcloc, const char *fp_form, ...) -
uKadecot/trunk/ecnl_ssp/echonet_dbg.h
r108 r152 50 50 51 51 #ifdef ECN_DBG_PUT_ENA 52 #define ECN_DBG_PUT syslog(LOG_WARNING, 53 #define ECN_DBG_END ) 54 /* 例: ECN_DBG_PUT "task start" ECN_DBG_END; */ 52 #define ECN_DBG_PUT(...) syslog(LOG_WARNING, __VA_ARGS__) 55 53 #else 56 #define ECN_DBG_PUT for (;0; 57 #define ECN_DBG_END ) 54 #define ECN_DBG_PUT(...) 58 55 #endif 59 56 60 57 /* デバッグ出力(CARP) */ 61 58 #ifdef ECN_CAP_PUT_ENA 62 #define ECN_CAP_PUT syslog(LOG_DEBUG, 63 #define ECN_CAP_END ) 64 /* 例: ECN_CAP_PUT "task start" ECN_CAP_END; */ 59 #define ECN_CAP_PUT(syslog(LOG_DEBUG, __VA_ARGS__) 65 60 #else 66 #define ECN_CAP_PUT for (;0; 67 #define ECN_CAP_END ) 61 #define ECN_CAP_PUT(...) 68 62 #endif 69 63 -
uKadecot/trunk/ecnl_ssp/echonet_task.c
r125 r152 141 141 } 142 142 #ifdef ECN_DBG_PUT_ENA 143 ECN_DBG_PUT "psnd_dtq(%d, 0x%08X-0x%08X)", mbxid, (intptr_t)msg, a_fbs_sub1 ECN_DBG_END;143 ECN_DBG_PUT("psnd_dtq(%d, 0x%08X-0x%08X)", mbxid, (intptr_t)msg, a_fbs_sub1); 144 144 _ecn_dbg_bindmp((const uint8_t *)msg, 256); 145 145 #endif 146 146 a_ret = psnd_dtq(mbxid, msg); 147 147 #ifdef ECN_DBG_PUT_ENA 148 ECN_DBG_PUT "psnd_dtq(%d, 0x%08X-0x%08X) result = %d:%s", mbxid, (intptr_t)msg, a_fbs_sub1, a_ret, itron_strerror(a_ret) ECN_DBG_END;148 ECN_DBG_PUT("psnd_dtq(%d, 0x%08X-0x%08X) result = %d:%s", mbxid, (intptr_t)msg, a_fbs_sub1, a_ret, itron_strerror(a_ret)); 149 149 #endif 150 150 return a_ret; … … 193 193 return; 194 194 195 /* ECN_DBG_PUT "[ECHONET MainTask:%d] started", tskid ECN_DBG_END; */195 /* ECN_DBG_PUT("[ECHONET MainTask:%d] started", tskid); */ 196 196 syslog(LOG_NOTICE, "[ECHONET MainTask] started"); 197 197 … … 225 225 a_ret = sta_cyc(ecn_svc_cychdrid); 226 226 if (a_ret != E_OK) { 227 ECN_DBG_PUT "sta_cyc() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;227 ECN_DBG_PUT("sta_cyc() result = %d:%s", a_ret, itron_strerror(a_ret)); 228 228 PT_EXIT(&s.pt); 229 229 } … … 233 233 a_ret2 = get_tim(&a_now); 234 234 if (a_ret2 != E_OK) { 235 ECN_DBG_PUT "get_tim() result = %d:%s", a_ret2, itron_strerror(a_ret2) ECN_DBG_END;235 ECN_DBG_PUT("get_tim() result = %d:%s", a_ret2, itron_strerror(a_ret2)); 236 236 PT_EXIT(&s.pt); 237 237 } … … 256 256 || ((a_ret = timer_expired(&s.timer) ? E_TMOUT : E_WBLK) == E_TMOUT))); 257 257 if ((a_ret != E_OK) && (a_ret != E_TMOUT)) { 258 ECN_DBG_PUT "trcv_dtq() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;258 ECN_DBG_PUT("trcv_dtq() result = %d:%s", a_ret, itron_strerror(a_ret)); 259 259 PT_EXIT(&s.pt); 260 260 } … … 262 262 a_ret2 = get_tim(&a_now); 263 263 if (a_ret2 != E_OK) { 264 ECN_DBG_PUT "get_tim() result = %d:%s", a_ret2, itron_strerror(a_ret2) ECN_DBG_END;264 ECN_DBG_PUT("get_tim() result = %d:%s", a_ret2, itron_strerror(a_ret2)); 265 265 PT_EXIT(&s.pt); 266 266 } … … 273 273 274 274 if (a_ret == E_OK) { 275 ECN_DBG_PUT "trcv_dtq() mbx recv (%d byte)", _ecn_fbs_get_datalen(a_mdt.fbs_id) ECN_DBG_END;275 ECN_DBG_PUT("trcv_dtq() mbx recv (%d byte)", _ecn_fbs_get_datalen(a_mdt.fbs_id)); 276 276 g_release_esv = true; 277 277 … … 376 376 a_ret = _ecn_fbs_cre(a_size, &a_fbs_id); 377 377 if (a_ret != E_OK || !a_fbs_id.ptr) { /* 確保失敗 */ 378 ECN_DBG_PUT 378 ECN_DBG_PUT("_ecn_fbs_cre(%d) result = %d:%s", 379 379 a_size, 380 a_ret, itron_strerror(a_ret) ECN_DBG_END;380 a_ret, itron_strerror(a_ret)); 381 381 return E_NOMEM; 382 382 } … … 396 396 a_ret = _ecn_fbs_add_data_ex(a_fbs_id, &a_ecn_hdp, a_size); 397 397 if (a_ret) { 398 ECN_DBG_PUT 398 ECN_DBG_PUT("_ecn_fbs_add_data_ex(*, ecn_hdp{esv:0x%02X,epc:0x%02X}, %d) result = %d:%s", 399 399 a_ecn_hdp.edata.esv, a_ecn_hdp.ecn_prp.epc, a_size, 400 a_ret, itron_strerror(a_ret) ECN_DBG_END;400 a_ret, itron_strerror(a_ret)); 401 401 goto lb_except; 402 402 } … … 405 405 a_ret = _ecn_fbs_add_data_ex(a_fbs_id, p_edt, fa_pdc); 406 406 if (a_ret) { 407 ECN_DBG_PUT 407 ECN_DBG_PUT("_ecn_fbs_add_data_ex(*, ecn_hdp{esv:0x%02X,epc:0x%02X} edt, %d) result = %d:%s", 408 408 a_ecn_hdp.edata.esv, a_ecn_hdp.ecn_prp.epc, fa_pdc, 409 a_ret, itron_strerror(a_ret) ECN_DBG_END;409 a_ret, itron_strerror(a_ret)); 410 410 goto lb_except; 411 411 } 412 412 } 413 413 if (fa_deoj == 0) { 414 ECN_DBG_PUT "%s", "マルチキャスト" ECN_DBG_END;414 ECN_DBG_PUT("%s", "マルチキャスト"); 415 415 /* fa_deoj == 0 : マルチキャスト */ 416 416 ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx1 = EOJ_X1_PROFILE; … … 420 420 } 421 421 else if (fa_deoj <= tmax_eobjid) { 422 ECN_DBG_PUT "fa_deoj = %d", fa_deoj ECN_DBG_END;422 ECN_DBG_PUT("fa_deoj = %d", fa_deoj); 423 423 /* if (fa_deoj < 1 || tmax_eobjid < fa_deoj) …の異常系は関数冒頭で除外済みとする */ 424 424 a_eobj = &eobjinib_table[fa_deoj - 1]; … … 446 446 if (a_fbs_id.ptr->hdr.target == ENOD_NOT_MATCH_ID) { 447 447 goto lb_except; 448 ECN_DBG_PUT 448 ECN_DBG_PUT("deoj = %02X %02X %02x : enod not match", 449 449 ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx1, 450 450 ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx2, 451 ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx3 ECN_DBG_END;451 ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx3); 452 452 } 453 453 #ifdef ECN_DBG_PUT_ENA 454 454 else { 455 ECN_DBG_PUT 455 ECN_DBG_PUT("deoj = %02X %02X %02x : %s", 456 456 ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx1, 457 457 ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx2, 458 458 ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx3, 459 _ecn_dbg_enod2str(a_fbs_id.ptr->hdr.target) ECN_DBG_END;459 _ecn_dbg_enod2str(a_fbs_id.ptr->hdr.target)); 460 460 } 461 461 #endif … … 465 465 T_ECN_EOJ eoj; 466 466 ECN_ENOD_ID enodid; 467 ECN_DBG_PUT "fa_deoj = %d", fa_deoj ECN_DBG_END;467 ECN_DBG_PUT("fa_deoj = %d", fa_deoj); 468 468 /* オブジェクトIDからEOJとノードIDを取得 */ 469 469 if(ecn_agent_get_eoj_enodid(fa_deoj, &eoj, &enodid)){ … … 474 474 else { 475 475 goto lb_except; 476 ECN_DBG_PUT 476 ECN_DBG_PUT("deoj = %02X %02X %02x : enod not match", 477 477 ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx1, 478 478 ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx2, 479 ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx3 ECN_DBG_END;479 ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx3); 480 480 } 481 481 #ifdef ECN_DBG_PUT_ENA 482 482 else { 483 ECN_DBG_PUT 483 ECN_DBG_PUT("deoj = %02X %02X %02x : %s", 484 484 ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx1, 485 485 ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx2, 486 486 ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx3, 487 _ecn_dbg_enod2str(a_fbs_id.ptr->hdr.target) ECN_DBG_END;487 _ecn_dbg_enod2str(a_fbs_id.ptr->hdr.target)); 488 488 } 489 489 #endif … … 529 529 switch (a_im.command) { 530 530 case ECN_INM_NOTIFY_INSTANCELIST: 531 ECN_DBG_PUT "do _ecn_tsk_int_startup()" ECN_DBG_END;531 ECN_DBG_PUT("do _ecn_tsk_int_startup()"); 532 532 _ecn_tsk_int_startup(fa_exinf); 533 533 break; … … 537 537 break; 538 538 #endif 539 ECN_DBG_PUT "recv: unefined internal-msg: %d", a_im.command ECN_DBG_END;539 ECN_DBG_PUT("recv: unefined internal-msg: %d", a_im.command); 540 540 break; 541 541 } … … 578 578 const EOBJINIB *eobj; 579 579 580 ECN_DBG_PUT "do _ecn_tsk_ntf_inl()" ECN_DBG_END;580 ECN_DBG_PUT("do _ecn_tsk_ntf_inl()"); 581 581 582 582 memset(&a_hdr, 0, sizeof(a_hdr)); … … 830 830 g_release_esv = false; 831 831 832 ECN_CAP_PUT 833 p_esv->edata.esv ECN_CAP_END;832 ECN_CAP_PUT("redirect ecn_svc_mailboxid → ecn_api_mailboxid (esv:0x%02X)", 833 p_esv->edata.esv); 834 834 fa_fbs_id.ptr->hdr.target = ENOD_API_ID; 835 835 a_ret = psnd_dtq(ecn_api_mailboxid, (intptr_t)fa_fbs_id.ptr); … … 858 858 case ESV_SET_I: 859 859 if (!p_obj) { 860 ECN_DBG_PUT 861 p_esv->edata.deoj.eojx1 << 16 | p_esv->edata.deoj.eojx2 << 8 | p_esv->edata.deoj.eojx3 ECN_DBG_END;860 ECN_DBG_PUT("_ecn_tsk_ecn_msg_main() eoj %06X not found.", 861 p_esv->edata.deoj.eojx1 << 16 | p_esv->edata.deoj.eojx2 << 8 | p_esv->edata.deoj.eojx3); 862 862 result = -1; 863 863 break; … … 870 870 case ESV_SET_C: 871 871 if (!p_obj) { 872 ECN_DBG_PUT 873 p_esv->edata.deoj.eojx1 << 16 | p_esv->edata.deoj.eojx2 << 8 | p_esv->edata.deoj.eojx3 ECN_DBG_END;872 ECN_DBG_PUT("_ecn_tsk_ecn_msg_main() eoj %06X not found.", 873 p_esv->edata.deoj.eojx1 << 16 | p_esv->edata.deoj.eojx2 << 8 | p_esv->edata.deoj.eojx3); 874 874 result = -1; 875 875 break; … … 882 882 case ESV_GET: 883 883 if (!p_obj) { 884 ECN_DBG_PUT 885 p_esv->edata.deoj.eojx1 << 16 | p_esv->edata.deoj.eojx2 << 8 | p_esv->edata.deoj.eojx3 ECN_DBG_END;884 ECN_DBG_PUT("_ecn_tsk_ecn_msg_main() eoj %06X not found.", 885 p_esv->edata.deoj.eojx1 << 16 | p_esv->edata.deoj.eojx2 << 8 | p_esv->edata.deoj.eojx3); 886 886 result = -1; 887 887 break; … … 894 894 case ESV_INF_REQ: 895 895 if (!p_obj) { 896 ECN_DBG_PUT 897 p_esv->edata.deoj.eojx1 << 16 | p_esv->edata.deoj.eojx2 << 8 | p_esv->edata.deoj.eojx3 ECN_DBG_END;896 ECN_DBG_PUT("_ecn_tsk_ecn_msg_main() eoj %06X not found.", 897 p_esv->edata.deoj.eojx1 << 16 | p_esv->edata.deoj.eojx2 << 8 | p_esv->edata.deoj.eojx3); 898 898 result = -1; 899 899 break; … … 907 907 case ESV_SET_GET: 908 908 if (!p_obj) { 909 ECN_DBG_PUT 910 p_esv->edata.deoj.eojx1 << 16 | p_esv->edata.deoj.eojx2 << 8 | p_esv->edata.deoj.eojx3 ECN_DBG_END;909 ECN_DBG_PUT("_ecn_tsk_ecn_msg_main() eoj %06X not found.", 910 p_esv->edata.deoj.eojx1 << 16 | p_esv->edata.deoj.eojx2 << 8 | p_esv->edata.deoj.eojx3); 911 911 result = -1; 912 912 break; … … 942 942 case ESV_GET_SNA: /* 0x52 プロパティ値読み出し不可応答 */ 943 943 if (!p_sobj) { 944 ECN_DBG_PUT 945 p_esv->edata.seoj.eojx1 << 16 | p_esv->edata.seoj.eojx2 << 8 | p_esv->edata.seoj.eojx3 ECN_DBG_END;944 ECN_DBG_PUT("_ecn_tsk_ecn_msg_main() eoj %06X not found.", 945 p_esv->edata.seoj.eojx1 << 16 | p_esv->edata.seoj.eojx2 << 8 | p_esv->edata.seoj.eojx3); 946 946 result = -1; 947 947 break; … … 955 955 case ESV_INF_SNA: /* 0x53 プロパティ値通知不可応答 */ 956 956 if (!p_sobj) { 957 ECN_DBG_PUT 958 p_esv->edata.seoj.eojx1 << 16 | p_esv->edata.seoj.eojx2 << 8 | p_esv->edata.seoj.eojx3 ECN_DBG_END;957 ECN_DBG_PUT("_ecn_tsk_ecn_msg_main() eoj %06X not found.", 958 p_esv->edata.seoj.eojx1 << 16 | p_esv->edata.seoj.eojx2 << 8 | p_esv->edata.seoj.eojx3); 959 959 result = -1; 960 960 break; … … 968 968 case ESV_SET_GET_SNA: /* 0x5E プロパティ値書き込み・読み出し不可応答 */ 969 969 if (!p_sobj) { 970 ECN_DBG_PUT 971 p_esv->edata.seoj.eojx1 << 16 | p_esv->edata.seoj.eojx2 << 8 | p_esv->edata.seoj.eojx3 ECN_DBG_END;970 ECN_DBG_PUT("_ecn_tsk_ecn_msg_main() eoj %06X not found.", 971 p_esv->edata.seoj.eojx1 << 16 | p_esv->edata.seoj.eojx2 << 8 | p_esv->edata.seoj.eojx3); 972 972 result = -1; 973 973 break; … … 1004 1004 ECN_FBS_ID fa_fbs_id) 1005 1005 { 1006 ECN_DBG_PUT 1006 ECN_DBG_PUT("%s() %s eoj src:%06X dest:%06X", 1007 1007 fp_fncnm, fp_varnm, 1008 1008 ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.seoj.eojx1 << 16 | ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.seoj.eojx2 << 8 | ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.seoj.eojx3, 1009 ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.deoj.eojx1 << 16 | ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.deoj.eojx2 << 8 | ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.deoj.eojx3 ECN_DBG_END;1009 ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.deoj.eojx1 << 16 | ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.deoj.eojx2 << 8 | ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.deoj.eojx3); 1010 1010 } 1011 1011 #else … … 1029 1029 return p; 1030 1030 } 1031 ECN_DBG_PUT 1031 ECN_DBG_PUT("_ecn_tsk_eoj_get_property(0x%02X-0x%02X-0x%02X, epc:0x%02X) not found.", 1032 1032 fp_obj->eojx1, fp_obj->eojx2, fp_obj->eojx3, 1033 fa_epc ECN_DBG_END;1033 fa_epc); 1034 1034 1035 1035 return NULL; … … 1044 1044 return -1; 1045 1045 1046 ECN_DBG_PUT 1047 fp_prp->eprpcd ECN_DBG_END;1046 ECN_DBG_PUT("_ecn_tsk_eoj_set_edt(epc:0x%02X) call eprpset()", 1047 fp_prp->eprpcd); 1048 1048 1049 1049 return fp_prp->eprpset(fp_prp, fp_src, fa_srcsz, fa_anno); … … 1058 1058 return -1; 1059 1059 1060 ECN_DBG_PUT 1061 fp_prp->eprpcd ECN_DBG_END;1060 ECN_DBG_PUT("_ecn_tsk_eoj_get_edt(epc:0x%02X) call eprpget()", 1061 fp_prp->eprpcd); 1062 1062 1063 1063 return fp_prp->eprpget(fp_prp, fp_dst, fp_prp->eprpsz); … … 1090 1090 p_blk = (T_ECN_SUB_BLK *)_ecn_fbs_mbx_get(sizeof(*p_blk)); 1091 1091 if (!p_blk) { 1092 ECN_DBG_PUT "_ecn_fbs_mbx_get() fault." ECN_DBG_END;1092 ECN_DBG_PUT("_ecn_fbs_mbx_get() fault."); 1093 1093 return 0; /* メモリ不足 */ 1094 1094 } … … 1100 1100 a_ret = _ecn_fbs_get_data(fa_fbs_id, fp_prp, sizeof(*fp_prp), &a_size); 1101 1101 if (a_ret || a_size < (int)sizeof(*fp_prp)) { 1102 ECN_DBG_PUT "_ecn_fbs_get_data() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;1102 ECN_DBG_PUT("_ecn_fbs_get_data() result = %d:%s", a_ret, itron_strerror(a_ret)); 1103 1103 goto lb_except; 1104 1104 } … … 1109 1109 a_ret = _ecn_fbs_get_data(fa_fbs_id, p_blk, fp_prp->pdc, &a_size); 1110 1110 if (a_ret || a_size < (int)fp_prp->pdc) { 1111 ECN_DBG_PUT "_ecn_fbs_get_data() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;1111 ECN_DBG_PUT("_ecn_fbs_get_data() result = %d:%s", a_ret, itron_strerror(a_ret)); 1112 1112 goto lb_except; 1113 1113 } … … 1146 1146 p_edt = _ecn_tsk_get_prp_pce(fa_fbs_id, &a_prp, p_edt); 1147 1147 if (!p_edt) { 1148 ECN_DBG_PUT "_ecn_tsk_eoj_set_main(): _ecn_tsk_get_prp_pce() fault." ECN_DBG_END;1148 ECN_DBG_PUT("_ecn_tsk_eoj_set_main(): _ecn_tsk_get_prp_pce() fault."); 1149 1149 goto lb_except; 1150 1150 } … … 1166 1166 } 1167 1167 if (a_ans == a_size) { 1168 ECN_DBG_PUT 1168 ECN_DBG_PUT("_ecn_tsk_eoj_set_edt(0x%06X, 0x%02x, 0x%02X..., %u) ok.", 1169 1169 fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3, 1170 a_prp.epc, p_edt->payload[0], a_size ECN_DBG_END;1170 a_prp.epc, p_edt->payload[0], a_size); 1171 1171 a_prp.pdc = 0; 1172 1172 } else { 1173 ECN_DBG_PUT 1173 ECN_DBG_PUT("_ecn_tsk_eoj_set_edt(0x%06X, 0x%02x, 0x%02X..., %u) fault.", 1174 1174 fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3, 1175 a_prp.epc, p_edt->payload[0], a_size ECN_DBG_END;1175 a_prp.epc, p_edt->payload[0], a_size); 1176 1176 *p_sw_ok = 0; /* プロパティ設定失敗 */ 1177 1177 /* 応答処理の場合EDTは設定しない */ … … 1183 1183 a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_prp, sizeof(a_prp)); 1184 1184 if (a_ret) { 1185 ECN_DBG_PUT "_ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;1185 ECN_DBG_PUT("_ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret)); 1186 1186 goto lb_except; 1187 1187 } … … 1191 1191 a_ret = _ecn_fbs_add_data_ex(a_fbs_res, p_edt->payload, a_prp.pdc); 1192 1192 if (a_ret) { 1193 ECN_DBG_PUT "_ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;1193 ECN_DBG_PUT("_ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret)); 1194 1194 goto lb_except; 1195 1195 } … … 1240 1240 p_prp_buf = _ecn_fbs_mbx_get(ECHONET_MEMPOOL_BLOCK_SIZE); 1241 1241 if (!p_prp_buf) { 1242 ECN_DBG_PUT "_ecn_fbs_mbx_get() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;1242 ECN_DBG_PUT("_ecn_fbs_mbx_get() result = %d:%s", a_ret, itron_strerror(a_ret)); 1243 1243 goto lb_except; /* メモリ不足 */ 1244 1244 } … … 1248 1248 p_edt = _ecn_tsk_get_prp_pce(fa_fbs_id, &a_prp, p_edt); 1249 1249 if (!p_edt) { 1250 ECN_DBG_PUT "_ecn_tsk_eoj_get_main(): _ecn_tsk_get_prp_pce() fault." ECN_DBG_END;1250 ECN_DBG_PUT("_ecn_tsk_eoj_get_main(): _ecn_tsk_get_prp_pce() fault."); 1251 1251 goto lb_except; 1252 1252 } … … 1273 1273 a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_prp, sizeof(a_prp)); 1274 1274 if (a_ret) { 1275 ECN_DBG_PUT "_ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;1275 ECN_DBG_PUT("_ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret)); 1276 1276 goto lb_except; 1277 1277 } … … 1280 1280 a_ret = _ecn_fbs_add_data_ex(a_fbs_res, p_prp_buf, a_ans); 1281 1281 if (a_ret) { 1282 ECN_DBG_PUT "_ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;1282 ECN_DBG_PUT("_ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret)); 1283 1283 goto lb_except; 1284 1284 } … … 1319 1319 p_prp_buf = _ecn_fbs_mbx_get(ECHONET_MEMPOOL_BLOCK_SIZE); 1320 1320 if (!p_prp_buf) { 1321 ECN_DBG_PUT "_ecn_fbs_mbx_get() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;1321 ECN_DBG_PUT("_ecn_fbs_mbx_get() result = %d:%s", a_ret, itron_strerror(a_ret)); 1322 1322 goto lb_except; /* メモリ不足 */ 1323 1323 } … … 1327 1327 p_edt = _ecn_tsk_get_prp_pce(fa_fbs_id, &a_prp, p_edt); 1328 1328 if (!p_edt) { 1329 ECN_DBG_PUT "_ecn_tsk_eoj_get_main(): _ecn_tsk_get_prp_pce() fault." ECN_DBG_END;1329 ECN_DBG_PUT("_ecn_tsk_eoj_get_main(): _ecn_tsk_get_prp_pce() fault."); 1330 1330 goto lb_except; 1331 1331 } … … 1336 1336 a_ret = _ecn_fbs_add_data_ex(a_fbs_res, &a_prp, sizeof(a_prp)); 1337 1337 if (a_ret) { 1338 ECN_DBG_PUT "_ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;1338 ECN_DBG_PUT("_ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret)); 1339 1339 goto lb_except; 1340 1340 } … … 1374 1374 a_ret = _ecn_fbs_get_data(fa_fbs_id, &a_prp, sizeof(a_prp), &a_size); 1375 1375 if (a_ret || a_size < (int)sizeof(a_prp)) { 1376 ECN_DBG_PUT "_ecn_fbs_get_data() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;1376 ECN_DBG_PUT("_ecn_fbs_get_data() result = %d:%s", a_ret, itron_strerror(a_ret)); 1377 1377 goto lb_except; 1378 1378 } … … 1381 1381 a_ret = _ecn_fbs_seek_rpos(fa_fbs_id, a_prp.pdc); 1382 1382 if (a_ret) { 1383 ECN_DBG_PUT "_ecn_fbs_seek_rpos() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;1383 ECN_DBG_PUT("_ecn_fbs_seek_rpos() result = %d:%s", a_ret, itron_strerror(a_ret)); 1384 1384 goto lb_except; 1385 1385 } … … 1543 1543 a_ret = _ecn_fbs_cre(a_size, &a_fbs_res); 1544 1544 if (a_ret != E_OK || !a_fbs_res.ptr) { /* 確保失敗 */ 1545 ECN_DBG_PUT "_ecn_fbs_cre() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;1545 ECN_DBG_PUT("_ecn_fbs_cre() result = %d:%s", a_ret, itron_strerror(a_ret)); 1546 1546 goto lb_finally; 1547 1547 } … … 1559 1559 sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata)); 1560 1560 if (a_ret) { 1561 ECN_DBG_PUT "_ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;1561 ECN_DBG_PUT("_ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret)); 1562 1562 goto lb_except; 1563 1563 } … … 1566 1566 a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp)); 1567 1567 if (a_ret) { 1568 ECN_DBG_PUT "_ecn_fbs_set_rpos() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;1568 ECN_DBG_PUT("_ecn_fbs_set_rpos() result = %d:%s", a_ret, itron_strerror(a_ret)); 1569 1569 goto lb_except; 1570 1570 } … … 1577 1577 ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc, &a_sw_ok); 1578 1578 if (a_ret) { 1579 ECN_DBG_PUT "_ecn_tsk_eoj_get_main() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;1579 ECN_DBG_PUT("_ecn_tsk_eoj_get_main() result = %d:%s", a_ret, itron_strerror(a_ret)); 1580 1580 goto lb_except; 1581 1581 } … … 1601 1601 a_ret = _ecn_tsk_snd_mbx(a_fbs_res, false); 1602 1602 if (a_ret != E_OK) { 1603 ECN_DBG_PUT "_ecn_tsk_snd_mbx() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;1603 ECN_DBG_PUT("_ecn_tsk_snd_mbx() result = %d:%s", a_ret, itron_strerror(a_ret)); 1604 1604 goto lb_except; 1605 1605 } … … 1634 1634 a_ret = _ecn_fbs_cre(a_size, &a_fbs_res); 1635 1635 if (a_ret != E_OK || !a_fbs_res.ptr) { /* 確保失敗 */ 1636 ECN_DBG_PUT "_ecn_fbs_cre() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;1636 ECN_DBG_PUT("_ecn_fbs_cre() result = %d:%s", a_ret, itron_strerror(a_ret)); 1637 1637 goto lb_finally; 1638 1638 } … … 1647 1647 sizeof(a_ecn_hdp.ecn_hdr) + sizeof(a_ecn_hdp.edata)); 1648 1648 if (a_ret) { 1649 ECN_DBG_PUT "_ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;1649 ECN_DBG_PUT("_ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret)); 1650 1650 goto lb_except; 1651 1651 } … … 1654 1654 a_ret = _ecn_fbs_set_rpos(fa_fbs_id, offsetof(T_ECN_EDT_HDR, ecn_prp)); 1655 1655 if (a_ret) { 1656 ECN_DBG_PUT "_ecn_fbs_set_rpos() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;1656 ECN_DBG_PUT("_ecn_fbs_set_rpos() result = %d:%s", a_ret, itron_strerror(a_ret)); 1657 1657 goto lb_except; 1658 1658 } … … 1665 1665 ((T_EDATA *)fa_fbs_id.ptr)->hdr.edata.opc, &a_sw_ok); 1666 1666 if (a_ret) { 1667 ECN_DBG_PUT "_ecn_tsk_eoj_res_main() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;1667 ECN_DBG_PUT("_ecn_tsk_eoj_res_main() result = %d:%s", a_ret, itron_strerror(a_ret)); 1668 1668 goto lb_except; 1669 1669 } … … 1689 1689 a_ret = _ecn_tsk_snd_mbx(a_fbs_res, false); 1690 1690 if (a_ret != E_OK) { 1691 ECN_DBG_PUT "_ecn_tsk_snd_mbx() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;1691 ECN_DBG_PUT("_ecn_tsk_snd_mbx() result = %d:%s", a_ret, itron_strerror(a_ret)); 1692 1692 goto lb_except; 1693 1693 } … … 1718 1718 memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp)); 1719 1719 1720 ECN_DBG_PUT 1721 fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3 ECN_DBG_END;1720 ECN_DBG_PUT("_ecn_tsk_eoj_set_get() eoj:%06X", 1721 fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3); 1722 1722 1723 1723 /* 初期取得サイズ */ … … 1761 1761 goto lb_except; 1762 1762 } 1763 ECN_DBG_PUT 1763 ECN_DBG_PUT("_ecn_tsk_eoj_set_get() eoj:%06X _ecn_tsk_eoj_set_main() ok sw_ok:%s", 1764 1764 fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3, 1765 (a_sw_ok ? "true" : "false") ECN_DBG_END;1765 (a_sw_ok ? "true" : "false")); 1766 1766 1767 1767 /* 次の件数を読み取る(1byte) */ … … 1794 1794 goto lb_except; 1795 1795 } 1796 ECN_DBG_PUT 1796 ECN_DBG_PUT("_ecn_tsk_eoj_set_get() eoj:%06X _ecn_tsk_eoj_get_main() ok sw_ok:%s", 1797 1797 fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3, 1798 (a_sw_ok ? "true" : "false") ECN_DBG_END;1798 (a_sw_ok ? "true" : "false")); 1799 1799 1800 1800 /* プロパティ読み込み件数書き込み時のヘッド情報で、読み出し件数を記録 */ … … 1839 1839 memset(&a_ecn_hdp, 0, sizeof(a_ecn_hdp)); 1840 1840 1841 ECN_DBG_PUT 1842 fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3 ECN_DBG_END;1841 ECN_DBG_PUT("_ecn_tsk_eoj_set_get_res() eoj:%06X", 1842 fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3); 1843 1843 1844 1844 /* 初期取得サイズ */ … … 1867 1867 goto lb_except; 1868 1868 } 1869 ECN_DBG_PUT 1869 ECN_DBG_PUT("_ecn_tsk_eoj_set_get_res() eoj:%06X _ecn_tsk_eoj_set_main() ok sw_ok:%s", 1870 1870 fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3, 1871 (a_sw_ok ? "true" : "false") ECN_DBG_END;1871 (a_sw_ok ? "true" : "false")); 1872 1872 1873 1873 /* 次の件数を読み取る(1byte) */ … … 1888 1888 goto lb_except; 1889 1889 } 1890 ECN_DBG_PUT 1890 ECN_DBG_PUT("_ecn_tsk_eoj_set_get_res() eoj:%06X _ecn_tsk_eoj_get_main() ok sw_ok:%s", 1891 1891 fp_obj->eojx1 << 16 | fp_obj->eojx2 << 8 | fp_obj->eojx3, 1892 (a_sw_ok ? "true" : "false") ECN_DBG_END;1892 (a_sw_ok ? "true" : "false")); 1893 1893 1894 1894 goto lb_finally; … … 1964 1964 ret = _ecn_fbs_cre(1, &req); 1965 1965 if (ret != E_OK) { 1966 ECN_DBG_PUT "_ecn_tsk_cre_req_fbs() : _ecn_fbs_cre() result = %d:%s", ret, itron_strerror(ret) ECN_DBG_END;1966 ECN_DBG_PUT("_ecn_tsk_cre_req_fbs() : _ecn_fbs_cre() result = %d:%s", ret, itron_strerror(ret)); 1967 1967 return ret; 1968 1968 } … … 1971 1971 if (ret != E_OK) { 1972 1972 _ecn_fbs_del(req); 1973 ECN_DBG_PUT "_ecn_tsk_cre_req_fbs() : _ecn_fbs_add_data() result = %d:%s", ret, itron_strerror(ret) ECN_DBG_END;1973 ECN_DBG_PUT("_ecn_tsk_cre_req_fbs() : _ecn_fbs_add_data() result = %d:%s", ret, itron_strerror(ret)); 1974 1974 return ret; 1975 1975 } … … 1993 1993 ret = _ecn_fbs_cre(1, &res); 1994 1994 if (ret != E_OK) { 1995 ECN_DBG_PUT "_ecn_tsk_cre_res_fbs() : _ecn_fbs_cre() result = %d:%s", ret, itron_strerror(ret) ECN_DBG_END;1995 ECN_DBG_PUT("_ecn_tsk_cre_res_fbs() : _ecn_fbs_cre() result = %d:%s", ret, itron_strerror(ret)); 1996 1996 return ret; 1997 1997 } … … 2000 2000 if (ret != E_OK) { 2001 2001 _ecn_fbs_del(res); 2002 ECN_DBG_PUT "_ecn_tsk_cre_res_fbs() : _ecn_fbs_add_data() result = %d:%s", ret, itron_strerror(ret) ECN_DBG_END;2002 ECN_DBG_PUT("_ecn_tsk_cre_res_fbs() : _ecn_fbs_add_data() result = %d:%s", ret, itron_strerror(ret)); 2003 2003 return ret; 2004 2004 } -
uKadecot/trunk/ecnl_ssp/echonet_uip_task.c
r108 r152 108 108 if ( a_rcv_pkt.t_esv->ecn_hdr.ehd1 != ECN_EDH1_ECHONET_LITE /* ECHONET Lite規格 */ 109 109 || a_rcv_pkt.t_esv->ecn_hdr.ehd2 != ECN_EDH2_FORMAT_1 /* 電文形式1 */) { 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;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); 111 111 return E_PAR; 112 112 } … … 118 118 a_ret = _ecn_fbs_cre(fa_len, &a_fbs_id); 119 119 if (a_ret != E_OK) { 120 ECN_DBG_PUT "[UDP ECHO SRV] _ecn_fbs_cre() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;120 ECN_DBG_PUT("[UDP ECHO SRV] _ecn_fbs_cre() result = %d:%s", a_ret, itron_strerror(a_ret)); 121 121 return a_ret; 122 122 } 123 123 a_ret = _ecn_fbs_add_data_ex(a_fbs_id, buffer, fa_len); 124 124 if (a_ret) { 125 ECN_DBG_PUT "[UDP ECHO SRV] _ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;125 ECN_DBG_PUT("[UDP ECHO SRV] _ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret)); 126 126 goto lb_except; 127 127 } … … 133 133 a_enod_id = udp_get_id((T_EDATA *)a_fbs_id.ptr, dst->ipaddr, dst->portno); 134 134 if (a_enod_id < 0 || tnum_enodadr <= a_enod_id) { 135 ECN_DBG_PUT 136 ip2str(NULL, dst->ipaddr) ECN_DBG_END;135 ECN_DBG_PUT("[UDP ECHO SRV] udp src(%s) echonet-node not found.", 136 ip2str(NULL, dst->ipaddr)); 137 137 } else { 138 138 /* 送信元ECHONETノードを記録 */ … … 144 144 a_ret = psnd_dtq(ecn_svc_mailboxid, (intptr_t)a_fbs_id.ptr); 145 145 if (a_ret != E_OK) { 146 ECN_DBG_PUT "[UDP ECHO SRV] psnd_dtq(ecn_svc_mailboxid) result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;146 ECN_DBG_PUT("[UDP ECHO SRV] psnd_dtq(ecn_svc_mailboxid) result = %d:%s", a_ret, itron_strerror(a_ret)); 147 147 goto lb_except; 148 148 } … … 185 185 186 186 uip_gethostaddr(a_src); 187 ECN_DBG_PUT 187 ECN_DBG_PUT("[UDP TSK:%d] started, IP Address: %s ether_max_len: %u", 188 188 ecn_udp_taskid, 189 189 ip2str(NULL, a_src), 190 UIP_BUFSIZE ECN_DBG_END;190 UIP_BUFSIZE); 191 191 uip_ipaddr_copy(enodadrb_table[ENOD_LOCAL_ID].ipaddr, a_src); 192 192 193 193 UDP_CEPID = udp_acre_cep(&ccep); 194 194 if (UDP_CEPID == NULL) { 195 ECN_DBG_PUT "udp_acre_cep()" ECN_DBG_END;195 ECN_DBG_PUT("udp_acre_cep()"); 196 196 PT_EXIT(&pt); 197 197 } … … 200 200 a_ret = sta_cyc(ecn_udp_cychdrid); 201 201 if (a_ret != E_OK) { 202 ECN_DBG_PUT "sta_cyc() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;202 ECN_DBG_PUT("sta_cyc() result = %d:%s", a_ret, itron_strerror(a_ret)); 203 203 PT_EXIT(&pt); 204 204 } … … 206 206 a_ret = act_tsk(ecn_svc_taskid); 207 207 if (a_ret != E_OK) { 208 ECN_DBG_PUT "act_tsk() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;208 ECN_DBG_PUT("act_tsk() result = %d:%s", a_ret, itron_strerror(a_ret)); 209 209 PT_EXIT(&pt); 210 210 } … … 212 212 a_ret = get_tim(&a_now); 213 213 if (a_ret != E_OK) { 214 ECN_DBG_PUT "get_tim() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;214 ECN_DBG_PUT("get_tim() result = %d:%s", a_ret, itron_strerror(a_ret)); 215 215 PT_EXIT(&pt); 216 216 } … … 226 226 || ((a_ret = timer_expired(&timer) ? E_TMOUT : E_WBLK) == E_TMOUT))); 227 227 if ((a_ret != E_OK) && (a_ret != E_TMOUT)) { 228 ECN_DBG_PUT "trcv_dtq() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;228 ECN_DBG_PUT("trcv_dtq() result = %d:%s", a_ret, itron_strerror(a_ret)); 229 229 PT_EXIT(&pt); 230 230 } … … 232 232 a_ret2 = get_tim(&a_now); 233 233 if (a_ret2 != E_OK) { 234 ECN_DBG_PUT "get_tim() result = %d:%s", a_ret2, itron_strerror(a_ret2) ECN_DBG_END;234 ECN_DBG_PUT("get_tim() result = %d:%s", a_ret2, itron_strerror(a_ret2)); 235 235 PT_EXIT(&pt); 236 236 } … … 243 243 a_snd_len = _ecn_fbs_get_datalen(a_mdt.fbs_id); 244 244 245 ECN_DBG_PUT "[UDP TSK] trcv_dtq() mbx recv (%d byte)", a_snd_len ECN_DBG_END;245 ECN_DBG_PUT("[UDP TSK] trcv_dtq() mbx recv (%d byte)", a_snd_len); 246 246 247 247 if (0 < a_snd_len) { … … 289 289 ret = _ecn_fbs_cre(1, &req); 290 290 if (ret != E_OK) { 291 ECN_DBG_PUT "_ecn_udp_cre_req_fbs() : _ecn_fbs_cre() result = %d:%s", ret, itron_strerror(ret) ECN_DBG_END;291 ECN_DBG_PUT("_ecn_udp_cre_req_fbs() : _ecn_fbs_cre() result = %d:%s", ret, itron_strerror(ret)); 292 292 return ret; 293 293 } … … 296 296 if (ret != E_OK) { 297 297 _ecn_fbs_del(req); 298 ECN_DBG_PUT "_ecn_udp_cre_req_fbs() : _ecn_fbs_add_data() result = %d:%s", ret, itron_strerror(ret) ECN_DBG_END;298 ECN_DBG_PUT("_ecn_udp_cre_req_fbs() : _ecn_fbs_add_data() result = %d:%s", ret, itron_strerror(ret)); 299 299 return ret; 300 300 } … … 318 318 ret = _ecn_fbs_cre(1, &res); 319 319 if (ret != E_OK) { 320 ECN_DBG_PUT "_ecn_udp_cre_res_fbs() : _ecn_fbs_cre() result = %d:%s", ret, itron_strerror(ret) ECN_DBG_END;320 ECN_DBG_PUT("_ecn_udp_cre_res_fbs() : _ecn_fbs_cre() result = %d:%s", ret, itron_strerror(ret)); 321 321 return ret; 322 322 } … … 325 325 if (ret != E_OK) { 326 326 _ecn_fbs_del(res); 327 ECN_DBG_PUT "_ecn_udp_cre_res_fbs() : _ecn_fbs_add_data() result = %d:%s", ret, itron_strerror(ret) ECN_DBG_END;327 ECN_DBG_PUT("_ecn_udp_cre_res_fbs() : _ecn_fbs_add_data() result = %d:%s", ret, itron_strerror(ret)); 328 328 return ret; 329 329 } … … 353 353 a_ret = _ecn_fbs_get_data(fbs_id, &cmd, 1, &len); 354 354 if (a_ret != E_OK) { 355 ECN_DBG_PUT "[UDP TSK] _ecn_fbs_get_data() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;355 ECN_DBG_PUT("[UDP TSK] _ecn_fbs_get_data() result = %d:%s", a_ret, itron_strerror(a_ret)); 356 356 return; 357 357 } … … 368 368 a_ret = _ecn_fbs_get_data(fbs_id, &msg, sizeof(msg), &a_snd_len); 369 369 if (a_ret != E_OK) { 370 ECN_DBG_PUT "[UDP TSK] _ecn_fbs_get_data() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;370 ECN_DBG_PUT("[UDP TSK] _ecn_fbs_get_data() result = %d:%s", a_ret, itron_strerror(a_ret)); 371 371 } 372 372 … … 384 384 if (a_ret != E_OK) { 385 385 _ecn_fbs_del(buf); 386 ECN_DBG_PUT "_ecn_int_msg() : _ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;386 ECN_DBG_PUT("_ecn_int_msg() : _ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret)); 387 387 return; 388 388 } … … 391 391 if (a_ret != E_OK) { 392 392 _ecn_fbs_del(buf); 393 ECN_DBG_PUT "_ecn_int_msg() : _ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;393 ECN_DBG_PUT("_ecn_int_msg() : _ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret)); 394 394 return; 395 395 } … … 398 398 if (a_ret != E_OK) { 399 399 _ecn_fbs_del(buf); 400 ECN_DBG_PUT "_ecn_int_msg() : psnd_dtq() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;400 ECN_DBG_PUT("_ecn_int_msg() : psnd_dtq() result = %d:%s", a_ret, itron_strerror(a_ret)); 401 401 return; 402 402 } … … 414 414 if (a_ret != E_OK) { 415 415 _ecn_fbs_del(buf); 416 ECN_DBG_PUT "_ecn_int_msg() : _ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;416 ECN_DBG_PUT("_ecn_int_msg() : _ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret)); 417 417 return; 418 418 } … … 421 421 if (a_ret != E_OK) { 422 422 _ecn_fbs_del(buf); 423 ECN_DBG_PUT "_ecn_int_msg() : psnd_dtq() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;423 ECN_DBG_PUT("_ecn_int_msg() : psnd_dtq() result = %d:%s", a_ret, itron_strerror(a_ret)); 424 424 return; 425 425 } … … 443 443 a_ret = udp_get_ip(&a_dst, fbs_id.ptr->hdr.target); 444 444 if (!a_ret) { 445 ECN_DBG_PUT 445 ECN_DBG_PUT("[UDP TSK] echonet-node 0x%02X-0x%02X-0x%02X → udp dest(%s)", 446 446 ((T_EDATA *)fbs_id.ptr)->hdr.edata.deoj.eojx1, 447 447 ((T_EDATA *)fbs_id.ptr)->hdr.edata.deoj.eojx2, 448 448 ((T_EDATA *)fbs_id.ptr)->hdr.edata.deoj.eojx3, 449 ip2str(NULL, a_dst.ipaddr) ECN_DBG_END;449 ip2str(NULL, a_dst.ipaddr)); 450 450 451 451 /* fbsから出力領域にデータを抽出 */ … … 453 453 a_ret = _ecn_fbs_get_data(fbs_id, buffer, sizeof(buffer), &a_snd_len); 454 454 if (a_ret != E_OK) { 455 ECN_DBG_PUT "[UDP TSK] _ecn_fbs_get_data() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;455 ECN_DBG_PUT("[UDP TSK] _ecn_fbs_get_data() result = %d:%s", a_ret, itron_strerror(a_ret)); 456 456 } 457 457 else if(uip_ipaddr_cmp(a_dst.ipaddr, localhost)) { 458 458 /* 送信先が127.0.0.1 → mbxに転送 */ 459 ECN_DBG_PUT 460 ((T_EDATA *)fbs_id.ptr)->hdr.edata.esv ECN_DBG_END;459 ECN_DBG_PUT("redirect ecn_udp_mailboxid → ecn_svc_mailboxid (esv:0x%02X)", 460 ((T_EDATA *)fbs_id.ptr)->hdr.edata.esv); 461 461 462 462 a_ret = _ecn_udp2mbx((const uint8_t *)buffer, a_snd_len, &a_dst); … … 466 466 } 467 467 else { 468 ECN_DBG_PUT 469 ip2str(NULL, a_dst.ipaddr), a_snd_len ECN_DBG_END;468 ECN_DBG_PUT("[UDP TSK] udp_snd_dat() to:%s %ubyte(s)", 469 ip2str(NULL, a_dst.ipaddr), a_snd_len); 470 470 #ifdef ECN_DBG_PUT_ENA 471 471 _ecn_dbg_bindmp((const uint8_t *)buffer, a_snd_len); … … 474 474 a_ret = udp_snd_dat(UDP_CEPID, &a_dst, buffer, a_snd_len); 475 475 if (a_ret < 0) { 476 ECN_DBG_PUT "[UDP TSK] send, error: %s", itron_strerror(a_ret) ECN_DBG_END;476 ECN_DBG_PUT("[UDP TSK] send, error: %s", itron_strerror(a_ret)); 477 477 } 478 478 } … … 480 480 /* データが長すぎて1パケットに収まらなかった場合 */ 481 481 if (_ecn_fbs_exist_data(fbs_id)) { 482 ECN_DBG_PUT "[UDP TSK] send, data so long: %dbyte(s)", _ecn_fbs_get_datalen(fbs_id) ECN_DBG_END;482 ECN_DBG_PUT("[UDP TSK] send, data so long: %dbyte(s)", _ecn_fbs_get_datalen(fbs_id)); 483 483 } 484 484 } else { 485 ECN_DBG_PUT 485 ECN_DBG_PUT("[UDP TSK] echonet-node 0x%02X-0x%02X-0x%02X not found.", 486 486 ((T_EDATA *)fbs_id.ptr)->hdr.edata.deoj.eojx1, 487 487 ((T_EDATA *)fbs_id.ptr)->hdr.edata.deoj.eojx2, 488 ((T_EDATA *)fbs_id.ptr)->hdr.edata.deoj.eojx3 ECN_DBG_END;488 ((T_EDATA *)fbs_id.ptr)->hdr.edata.deoj.eojx3); 489 489 } 490 490 } … … 505 505 PT_BEGIN(&s.pt); 506 506 507 /* ECN_CAP_PUT "[UDP ECHO SRV] callback_nblk_udp() recv: %u", *(int *)p_parblk ECN_CAP_END; */507 /* ECN_CAP_PUT("[UDP ECHO SRV] callback_nblk_udp() recv: %u", *(int *)p_parblk); */ 508 508 memset(buffer, 0, sizeof(buffer)); 509 509 … … 519 519 } 520 520 #endif 521 ECN_CAP_PUT 522 ip2str(NULL, dst.ipaddr), dst.portno, a_len, buffer ECN_CAP_END;521 ECN_CAP_PUT("[UDP ECHO SRV] recv, addr: %s:%d, len: %d, msg: '%s'", 522 ip2str(NULL, dst.ipaddr), dst.portno, a_len, buffer); 523 523 if ((int)sizeof(buffer) <= a_len) 524 524 a_len = (int)sizeof(buffer) - 1; … … 583 583 break; 584 584 } 585 ECN_DBG_PUT "is_match(): ecn_itr_nxt() result: epc=0x%02X, pdc=%d", epc, pdc ECN_DBG_END;585 ECN_DBG_PUT("is_match(): ecn_itr_nxt() result: epc=0x%02X, pdc=%d", epc, pdc); 586 586 /* インスタンスリスト通知または自ノードインスタンスリストS以外は除外 */ 587 587 if ((epc != 0xD5) && (epc != 0xD6)) { … … 641 641 continue; 642 642 643 ECN_CAP_PUT 644 i - ENOD_REMOTE_ID, ip2str(NULL, ipaddr) ECN_CAP_END;643 ECN_CAP_PUT("udp_get_id(): ip-found remote(%d) = %s", 644 i - ENOD_REMOTE_ID, ip2str(NULL, ipaddr)); 645 645 return (ECN_ENOD_ID)i; 646 646 } … … 660 660 uip_ipaddr_copy(ea->ipaddr, ipaddr); 661 661 662 ECN_CAP_PUT 663 i - ENOD_REMOTE_ID, ip2str(NULL, ipaddr) ECN_CAP_END;662 ECN_CAP_PUT("udp_get_id(): enod-found remote(%d) = %s", 663 i - ENOD_REMOTE_ID, ip2str(NULL, ipaddr)); 664 664 return (ECN_ENOD_ID)i; 665 665 } … … 673 673 uip_ipaddr_copy(ea->ipaddr, ipaddr); 674 674 675 ECN_CAP_PUT 676 i - ENOD_REMOTE_ID, ip2str(NULL, ipaddr) ECN_CAP_END;675 ECN_CAP_PUT("udp_get_id(): empty-found remote(%d) = %s", 676 i - ENOD_REMOTE_ID, ip2str(NULL, ipaddr)); 677 677 return (ECN_ENOD_ID)i; 678 678 } … … 732 732 if (a_ret != E_OK) { 733 733 _ecn_fbs_del(req); 734 ECN_DBG_PUT "ecn_udp_get_ipaddr() : _ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;734 ECN_DBG_PUT("ecn_udp_get_ipaddr() : _ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret)); 735 735 return a_ret; 736 736 } … … 739 739 if (a_ret != E_OK) { 740 740 _ecn_fbs_del(req); 741 ECN_DBG_PUT "ecn_udp_get_ipaddr() : _ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;741 ECN_DBG_PUT("ecn_udp_get_ipaddr() : _ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret)); 742 742 return a_ret; 743 743 } … … 746 746 if (a_ret != E_OK) { 747 747 _ecn_fbs_del(req); 748 ECN_DBG_PUT "ecn_udp_get_ipaddr() : _ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret) ECN_DBG_END;748 ECN_DBG_PUT("ecn_udp_get_ipaddr() : _ecn_fbs_add_data_ex() result = %d:%s", a_ret, itron_strerror(a_ret)); 749 749 return a_ret; 750 750 } -
uKadecot/trunk/kadecot/wamp_broker.c
r148 r152 80 80 void wamp_broker_subscribe_topic(wamp_broker_t *broker, const char *value) 81 81 { 82 static const char topic[] = "com.sonycsl.kadecot.echonetlite.topic."; 82 static const char echonetlite_topic[] = "com.sonycsl.kadecot.echonetlite.topic."; 83 static const char arduino_topic[] = "com.sonycsl.kadecot.arduino.topic."; 84 85 if (strncmp(echonetlite_topic, value, sizeof(echonetlite_topic) - 1) == 0) 86 wamp_broker_subscribe_echonetlite_topic(broker, value, sizeof(echonetlite_topic) - 1); 87 else if (strncmp(arduino_topic, value, sizeof(arduino_topic) - 1) == 0) 88 wamp_broker_subscribe_arduino_topic(broker, value, sizeof(arduino_topic) - 1); 89 } 90 91 void wamp_broker_subscribe_echonetlite_topic(wamp_broker_t *broker, const char *value, int val_pos) 92 { 83 93 char *pos, *end; 84 94 wamp_subscription_t *subscription; 95 wamp_echonetlite_subscription_t *echonetlite; 85 96 uint16_t devType; 86 97 uint8_t epc; 87 98 88 if(strncmp(topic, value, sizeof(topic) - 1) != 0)89 return;90 91 99 subscription = wamp_broker_new_subscription(broker); 92 100 if(subscription == NULL) 93 101 return; 94 95 subscription->deviceName[0] = '\0'; 96 strcpy_s(subscription->deviceName, sizeof(subscription->deviceName), &value[sizeof(topic) - 1]); 97 subscription->deviceName[sizeof(subscription->deviceName) - 1] = '\0'; 98 99 end = &subscription->deviceName[sizeof(subscription->deviceName)]; 100 for(pos = subscription->deviceName; pos < end; pos++){ 102 subscription->kind = WAMP_SUBSCRIPTION_KIND_ECHONETLITE; 103 echonetlite = &subscription->echonetlite; 104 105 echonetlite->deviceName[0] = '\0'; 106 strcpy_s(echonetlite->deviceName, sizeof(echonetlite->deviceName), &value[val_pos]); 107 echonetlite->deviceName[sizeof(echonetlite->deviceName) - 1] = '\0'; 108 109 end = &echonetlite->deviceName[sizeof(echonetlite->deviceName)]; 110 for(pos = echonetlite->deviceName; pos < end; pos++){ 101 111 if(*pos != '.') 102 112 continue; 103 113 104 114 *pos = '\0'; 105 subscription->proprtyName = pos + 1;106 break; 107 } 108 109 devType = kadecot_names_get_device_type( subscription->deviceName,110 strnlen( subscription->deviceName, sizeof(subscription->deviceName)));115 echonetlite->proprtyName = pos + 1; 116 break; 117 } 118 119 devType = kadecot_names_get_device_type(echonetlite->deviceName, 120 strnlen(echonetlite->deviceName, sizeof(echonetlite->deviceName))); 111 121 if(devType == 0){ 112 122 wamp_broker_delete_subscription(broker, subscription); … … 114 124 } 115 125 116 epc = kadecot_names_get_property_code( subscription->proprtyName,117 strnlen( subscription->proprtyName, subscription->proprtyName - subscription->deviceName), devType);126 epc = kadecot_names_get_property_code(echonetlite->proprtyName, 127 strnlen(echonetlite->proprtyName, echonetlite->proprtyName - echonetlite->deviceName), devType); 118 128 if(epc == 0){ 119 129 wamp_broker_delete_subscription(broker, subscription); … … 121 131 } 122 132 123 subscription->devType = devType; 124 subscription->epc = epc; 133 echonetlite->devType = devType; 134 echonetlite->epc = epc; 135 136 wamp_subscription_t *spos, *send = &broker->subscriptions[sizeof(broker->subscriptions) / sizeof(broker->subscriptions[0])]; 137 138 for (spos = broker->subscriptions; spos < send; spos++) { 139 if ((spos == subscription) || (spos->subscriptionId == 0) || (spos->kind != WAMP_SUBSCRIPTION_KIND_ECHONETLITE)) 140 continue; 141 142 if ((spos->echonetlite.devType != devType) || (spos->echonetlite.epc != epc)) 143 continue; 144 145 wamp_broker_delete_subscription(broker, subscription); 146 subscription = spos; 147 break; 148 } 125 149 126 150 broker->current_subscription = subscription; 127 151 } 128 152 129 static void wamp_broker_subscribe_res(wamp_broker_t *broker); 153 void wamp_broker_subscribe_arduino_topic(wamp_broker_t *broker, const char *value, int val_pos) 154 { 155 char *pos, *end; 156 wamp_subscription_t *subscription; 157 wamp_arduino_subscription_t *arduino; 158 char pinno[40], *threshold = NULL; 159 160 subscription = wamp_broker_new_subscription(broker); 161 if (subscription == NULL) 162 return; 163 subscription->kind = WAMP_SUBSCRIPTION_KIND_ARDUINO; 164 arduino = &subscription->arduino; 165 166 pinno[0] = '\0'; 167 strcpy_s(pinno, sizeof(pinno), &value[val_pos]); 168 pinno[sizeof(pinno) - 1] = '\0'; 169 170 if (pinno[0] != 'p' || pinno[1] != 'i' || pinno[2] != 'n') { 171 wamp_broker_delete_subscription(broker, subscription); 172 return; 173 } 174 175 end = &pinno[sizeof(pinno)]; 176 for (pos = pinno; pos < end; pos++) { 177 if (*pos != '.') 178 continue; 179 180 *pos = '\0'; 181 threshold = pos + 1; 182 if (threshold[0] != 't' || threshold[1] != 'h' || threshold[2] != 'r') { 183 threshold = NULL; 184 } 185 break; 186 } 187 188 arduino->pinno = atoi(&pinno[3]); 189 if (threshold != NULL) { 190 arduino->threshold = atoi(&threshold[3]); 191 } 192 else { 193 arduino->threshold = 0; 194 } 195 196 wamp_subscription_t *spos, *send = &broker->subscriptions[sizeof(broker->subscriptions) / sizeof(broker->subscriptions[0])]; 197 198 for (spos = broker->subscriptions; spos < send; spos++) { 199 if ((spos == subscription) || (spos->subscriptionId == 0) || (spos->kind != WAMP_SUBSCRIPTION_KIND_ARDUINO)) 200 continue; 201 202 if ((spos->arduino.pinno != arduino->pinno) || (spos->arduino.threshold != arduino->threshold)) 203 continue; 204 205 wamp_broker_delete_subscription(broker, subscription); 206 subscription = spos; 207 break; 208 } 209 210 broker->current_subscription = subscription; 211 } 212 213 static void wamp_broker_subscribe_echonetlite_res(wamp_broker_t *broker); 214 static void wamp_broker_subscribe_arduino_res(wamp_broker_t *broker); 130 215 131 216 void wamp_broker_subscribe_close(struct wamp_state *s) … … 137 222 138 223 // send RESULT 139 wamp_broker_subscribe_res(broker); 224 if (broker->current_subscription != NULL) { 225 switch (broker->current_subscription->kind) { 226 case WAMP_SUBSCRIPTION_KIND_ECHONETLITE: 227 wamp_broker_subscribe_echonetlite_res(broker); 228 break; 229 case WAMP_SUBSCRIPTION_KIND_ARDUINO: 230 wamp_broker_subscribe_arduino_res(broker); 231 break; 232 default: 233 break; 234 } 235 } 140 236 141 237 if (broker->error != NULL){ … … 148 244 } 149 245 150 static void wamp_broker_subscribe_ res(wamp_broker_t *broker)246 static void wamp_broker_subscribe_echonetlite_res(wamp_broker_t *broker) 151 247 { 152 248 struct wamp_state *s = broker->s; … … 157 253 ER ret; 158 254 159 if ((subscription == NULL) || (subscription-> devType == 0) || (subscription->epc == 0))255 if ((subscription == NULL) || (subscription->echonetlite.devType == 0) || (subscription->echonetlite.epc == 0)) 160 256 return; 161 257 … … 175 271 ret = main_send_message(buf, s->wbsid); 176 272 if (ret != E_OK) { 177 syslog(LOG_WARNING, "wamp_broker_subscribe_close() : main_send_message() result = %d", ret); 273 syslog(LOG_WARNING, "wamp_broker_subscribe_echonetlite_res() : main_send_message() result = %d", ret); 274 return; 275 } 276 277 broker->error = NULL; 278 } 279 280 static void wamp_broker_subscribe_arduino_res(wamp_broker_t *broker) 281 { 282 struct wamp_state *s = broker->s; 283 wamp_subscription_t *subscription = broker->current_subscription; 284 // send SUBSCRIBED or ERROR 285 ECN_FBS_ID buf; 286 ECN_FBS_SSIZE_T pos = 0; 287 ER ret; 288 289 if ((subscription == NULL) 290 || ((subscription->arduino.pinno < 0) || (subscription->arduino.pinno > 19))) 291 return; 292 293 if (subscription->arduino.pinno >= 14) 294 main_add_threshold(subscription->subscriptionId, subscription->arduino.pinno, subscription->arduino.threshold); 295 296 ret = _ecn_fbs_cre(1, &buf); 297 if (ret != E_OK) { 298 syslog(LOG_WARNING, "_ecn_fbs_cre() result = %d", ret); 299 return; 300 } 301 302 ret = fbs_printf(buf, &pos, "[33,%d,%d]", broker->requestId, subscription->subscriptionId); 303 if (ret != E_OK) { 304 syslog(LOG_WARNING, "fbs_printf() result = %d", ret); 305 _ecn_fbs_del(buf); 306 return; 307 } 308 309 ret = main_send_message(buf, s->wbsid); 310 if (ret != E_OK) { 311 syslog(LOG_WARNING, "wamp_broker_subscribe_arduino_res() : main_send_message() result = %d", ret); 178 312 return; 179 313 } … … 218 352 return; 219 353 354 if (subscription->kind == WAMP_SUBSCRIPTION_KIND_ARDUINO) 355 main_del_threshold(subscription->subscriptionId); 356 220 357 wamp_broker_delete_subscription(broker, subscription); 221 358 … … 318 455 319 456 for(subscription = broker->subscriptions; subscription < end; subscription++){ 320 if ( subscription->subscriptionId == 0)321 continue; 322 323 if ((subscription-> devType != devType) || (subscription->epc != epc))457 if ((subscription->subscriptionId == 0) || (subscription->kind != WAMP_SUBSCRIPTION_KIND_ECHONETLITE)) 458 continue; 459 460 if ((subscription->echonetlite.devType != devType) || (subscription->echonetlite.epc != epc)) 324 461 continue; 325 462 … … 339 476 340 477 ret = fbs_printf(buf, &pos, "{\"propertyName\":\"%s\",\"propertyValue\":[", 341 subscription-> proprtyName);478 subscription->echonetlite.proprtyName); 342 479 if (ret != E_OK) { 343 480 syslog(LOG_WARNING, "fbs_printf() result = %d", ret); … … 374 511 } 375 512 } 513 514 void wamp_broker_publish_pin(wamp_broker_t *broker, uint16_t pubId, int deviceId, int pinno, uint16_t value) 515 { 516 struct wamp_state *s = broker->s; 517 wamp_subscription_t *subscription, *end = &broker->subscriptions[sizeof(broker->subscriptions) / sizeof(broker->subscriptions[0])]; 518 ECN_FBS_ID buf; 519 ECN_FBS_SSIZE_T pos = 0; 520 ER ret; 521 522 for (subscription = broker->subscriptions; subscription < end; subscription++) { 523 if ((subscription->subscriptionId == 0) || (subscription->kind != WAMP_SUBSCRIPTION_KIND_ARDUINO)) 524 continue; 525 526 if (subscription->arduino.pinno != pinno) 527 continue; 528 529 ret = _ecn_fbs_cre(1, &buf); 530 if (ret != E_OK) { 531 syslog(LOG_WARNING, "_ecn_fbs_cre() result = %d", ret); 532 break; 533 } 534 535 ret = fbs_printf(buf, &pos, "[36,%d,%d,{\"deviceId\":%d},[],", 536 subscription->subscriptionId, pubId, deviceId); 537 if (ret != E_OK) { 538 syslog(LOG_WARNING, "fbs_printf() result = %d", ret); 539 _ecn_fbs_del(buf); 540 break; 541 } 542 543 if ((pinno >= 0) && (pinno <= 13)) { 544 ret = fbs_printf(buf, &pos, "{\"pin\":%d,\"value\":\"%s\"}]", 545 subscription->arduino.pinno, (value == 0) ? "LOW" : "HIGH"); 546 if (ret != E_OK) { 547 syslog(LOG_WARNING, "fbs_printf() result = %d", ret); 548 _ecn_fbs_del(buf); 549 break; 550 } 551 } 552 else { 553 ret = fbs_printf(buf, &pos, "{\"pin\":%d,\"value\":%d}]", 554 subscription->arduino.pinno, value); 555 if (ret != E_OK) { 556 syslog(LOG_WARNING, "fbs_printf() result = %d", ret); 557 _ecn_fbs_del(buf); 558 break; 559 } 560 } 561 562 ret = main_send_message(buf, s->wbsid); 563 if (ret != E_OK) { 564 syslog(LOG_WARNING, "wamp_broker_publish_inf() : main_send_message() result = %d", ret); 565 } 566 break; 567 } 568 } -
uKadecot/trunk/kadecot/wamp_broker.h
r108 r152 39 39 #define WAMP_BROKER_H 40 40 41 typedef enum wamp_subscription_kind 42 { 43 WAMP_SUBSCRIPTION_KIND_NONE, 44 WAMP_SUBSCRIPTION_KIND_ECHONETLITE, 45 WAMP_SUBSCRIPTION_KIND_ARDUINO, 46 } wamp_subscription_kind_t; 47 48 typedef struct wamp_echonetlite_subscription 49 { 50 char deviceName[40]; 51 char *proprtyName; 52 uint16_t devType; 53 uint8_t epc; 54 } wamp_echonetlite_subscription_t; 55 56 typedef struct wamp_arduino_subscription 57 { 58 uint8_t pinno; 59 uint16_t threshold; 60 } wamp_arduino_subscription_t; 61 41 62 typedef struct wamp_subscription 42 63 { … … 44 65 unsigned int requestId; 45 66 int subscriptionId; 46 char deviceName[40]; 47 char *proprtyName; 48 uint16_t devType; 49 uint8_t epc; 67 wamp_subscription_kind_t kind; 68 union{ 69 wamp_echonetlite_subscription_t echonetlite; 70 wamp_arduino_subscription_t arduino; 71 }; 50 72 } wamp_subscription_t; 51 73 … … 55 77 unsigned int requestId; 56 78 int subscriptionId; 57 wamp_subscription_t subscriptions[ 10];79 wamp_subscription_t subscriptions[30]; 58 80 wamp_subscription_t *current_subscription; 59 81 const char *error; … … 66 88 void wamp_broker_subscribe_options(wamp_broker_t *broker); 67 89 void wamp_broker_subscribe_topic(wamp_broker_t *broker, const char *value); 90 void wamp_broker_subscribe_echonetlite_topic(wamp_broker_t *broker, const char *value, int pos); 91 void wamp_broker_subscribe_arduino_topic(wamp_broker_t *broker, const char *value, int pos); 68 92 void wamp_broker_subscribe_close(struct wamp_state *s); 69 93 … … 89 113 void wamp_broker_publish_inf(wamp_broker_t *broker, uint16_t pubId, int deviceId, 90 114 uint16_t devType, uint8_t epc, uint8_t pdc, uint8_t *p_edt); 115 void wamp_broker_publish_pin(wamp_broker_t *broker, uint16_t pubId, int deviceId, 116 int pinno, uint16_t value); 91 117 92 118 #endif // WAMP_BROKER_H -
uKadecot/trunk/src/ukadecot/main.c
r148 r152 1 1 /* 2 2 * TOPPERS ECHONET Lite Communication Middleware 3 * 3 * 4 4 * Copyright (C) 2014 Cores Co., Ltd. Japan 5 * 5 * 6 6 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 7 7 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 … … 26 26 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 27 27 * 免責すること. 28 * 28 * 29 29 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 30 30 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 … … 32 32 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 33 33 * の責任を負わない. 34 * 34 * 35 35 * @(#) $Id$ 36 36 */ 37 37 38 /* 38 /* 39 39 * サンプルプログラム(1)の本体 40 40 */ … … 64 64 #include "data_flash.h" 65 65 66 uint8_t mac_addr[6] = { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xB8};66 uint8_t mac_addr[6] = {0x12, 0x34, 0x56, 0x78, 0x9A, 0xB8}; 67 67 bool_t dhcp_enable = true; 68 68 … … 97 97 { 98 98 /* サイズが1以外は受け付けない */ 99 if (size != 1)99 if (size != 1) 100 100 return 0; 101 101 102 102 *anno = *((uint8_t*)item->exinf) != *((uint8_t*)src); 103 103 104 switch (*(uint8_t *)src){104 switch (*(uint8_t *)src) { 105 105 /* ONの場合 */ 106 106 case 0x30: … … 129 129 { 130 130 /* サイズが2以外は受け付けない */ 131 if (size != 2)131 if (size != 2) 132 132 return 0; 133 133 134 if ((*(uint16_t *)src >= 0x0) && (*(uint16_t *)src <= 0x3ec)){134 if ((*(uint16_t *)src >= 0x0) && (*(uint16_t *)src <= 0x3ec)) { 135 135 *((uint16_t *)item->exinf) = *((uint16_t *)src); 136 136 /* TODO: このの場合の処理*/ 137 137 } 138 138 /* 上記以外は受け付けない */ 139 else {139 else { 140 140 return 0; 141 141 } … … 150 150 { 151 151 /* サイズが1以外は受け付けない */ 152 if (size != 1)152 if (size != 1) 153 153 return 0; 154 154 155 155 *anno = *((uint8_t *)item->exinf) != *((uint8_t *)src); 156 156 157 switch (*(uint8_t *)src){157 switch (*(uint8_t *)src) { 158 158 /* 異常発生ありの場合 */ 159 159 case 0x41: … … 177 177 uint8_t *p_src; 178 178 179 if (size != 2)179 if (size != 2) 180 180 return 0; 181 181 … … 196 196 uint8_t *p_dst; 197 197 198 if (size != 2)198 if (size != 2) 199 199 return 0; 200 200 … … 214 214 uint8_t *p_src; 215 215 216 if (size != 4)216 if (size != 4) 217 217 return 0; 218 218 … … 234 234 uint8_t *p_dst; 235 235 236 if (size != 4)236 if (size != 4) 237 237 return 0; 238 238 … … 305 305 306 306 ret2 = get_tim(&now); 307 if (ret2 != E_OK) {307 if (ret2 != E_OK) { 308 308 syslog(LOG_ERROR, "get_tim"); 309 309 PT_EXIT(&main_pt); 310 310 } 311 311 312 for (;;){312 for (;;) { 313 313 prev = now; 314 314 … … 320 320 PT_WAIT_UNTIL(&main_pt, (((ret = ecn_prcv_esv(&esv)) == E_OK) || (ret == E_BRK) 321 321 || ((ret = timer_expired(&main_pt_timer) ? E_TMOUT : E_WBLK) == E_TMOUT))); 322 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) {322 if ((ret != E_OK) && (ret != E_BRK) && (ret != E_TMOUT)) { 323 323 syslog(LOG_ERROR, "ecn_trcv_esv"); 324 324 PT_EXIT(&main_pt); … … 326 326 327 327 ret2 = get_tim(&now); 328 if (ret2 != E_OK) {328 if (ret2 != E_OK) { 329 329 syslog(LOG_ERROR, "get_tim"); 330 330 PT_EXIT(&main_pt); … … 341 341 /* 領域解放 */ 342 342 ret = ecn_rel_esv(esv); 343 if (ret != E_OK) {343 if (ret != E_OK) { 344 344 syslog(LOG_ERROR, "ECNL ecn_rel_esv result = %d", ret); 345 345 PT_EXIT(&main_pt); … … 348 348 /* 応答電文待ちの割り込みの場合 */ 349 349 else if (ret == E_BRK) { 350 ECN_FBS_ID msg = { (T_ECN_FST_BLK *)esv};350 ECN_FBS_ID msg = {(T_ECN_FST_BLK *)esv}; 351 351 bool_t rel_msg = true; 352 352 switch (msg.ptr->hdr.type) { 353 case 0: 353 case 0: 354 354 rel_msg = main_wbs_msg(msg); 355 355 break; … … 360 360 /* 応答電文待ちの割り込みデータ取得 */ 361 361 ret = ecn_get_brk_dat(esv, brkdat, sizeof(brkdat), &len); 362 if (ret != E_OK) {362 if (ret != E_OK) { 363 363 syslog(LOG_ERROR, "ecn_get_brk_dat"); 364 364 PT_EXIT(&main_pt); … … 373 373 if (rel_msg) { 374 374 ret = ecn_rel_esv(esv); 375 if (ret != E_OK) {375 if (ret != E_OK) { 376 376 syslog(LOG_ERROR, "BRK ecn_rel_esv msg = %p, type = %d, result = %d", esv, msg.ptr->hdr.type, ret); 377 377 PT_EXIT(&main_pt); … … 384 384 385 385 /* キューに溜まったメッセージを処理 */ 386 while (main_wbs_que_msg());386 while (main_wbs_que_msg()); 387 387 } 388 388 … … 400 400 } 401 401 402 bool_t main_btn1_state; 403 int main_btn1_count = 0; 404 bool_t main_btn2_state; 405 int main_btn2_count = 0; 402 typedef struct gpio_state { 403 bool_t state; 404 int count; 405 } gpio_state_t; 406 407 gpio_state_t main_gpio[2/*btn1, btn2*/ + 14/*arduino pin*/]; 408 409 #define MAIN_GPIO_BTN1 0 410 #define MAIN_GPIO_BTN2 1 411 #define MAIN_GPIO_ARDUINO_PIN0 2 412 #define MAIN_GPIO_COUNT (sizeof(main_gpio) / sizeof(main_gpio[0])) 413 414 typedef struct analog_state { 415 int subscriptionId; 416 int pinno; 417 bool_t state; 418 int count; 419 uint16_t threshold; 420 } analog_state_t; 421 422 analog_state_t main_analog[16]; 423 424 #define MAIN_ANALOG_COUNT (sizeof(main_analog) / sizeof(main_analog[0])) 425 426 int main_gpio_pubid; 406 427 407 428 enum request_info_state_t { … … 430 451 wamp_state_t wamp; 431 452 453 #define MAIN_REQUEST_INFOS_COUNT (sizeof(request_infos) / sizeof(request_infos[0])) 454 432 455 /* 433 456 * 初期化 … … 448 471 449 472 ret = data_flash_init(); 450 while (ret == E_OK){473 while (ret == E_OK) { 451 474 ret = data_flash_read(0, data); 452 if (ret != E_OK){475 if (ret != E_OK) { 453 476 break; 454 477 } … … 463 486 } 464 487 465 for (i = 0, j = 0; i < sizeof(mac_addr); i++){488 for (i = 0, j = 0; i < sizeof(mac_addr); i++) { 466 489 c = mac_addr[i] >> 4; 467 490 data[j++] = (c < 10) ? ('0' + c) : ('A' - 10 + c); … … 489 512 btn1 = sil_reb_mem((uint8_t *)0x0008C04A); 490 513 /*btn1 = sil_reb_mem((uint8_t *)0x0008C040);*/ 491 btn2 = sil_reb_mem((uint8_t *) 0x0008C040); 492 main_btn1_state = (btn1 & 0x80/*0x0x20*/) != 0; 493 main_btn2_state = (btn2 & 0x80) != 0; 494 495 for (i = 0; i< sizeof(request_infos) / sizeof(request_infos[0]); i++) { 514 btn2 = sil_reb_mem((uint8_t *)0x0008C040); 515 main_gpio[MAIN_GPIO_BTN1].state = (btn1 & 0x80/*0x0x20*/) != 0; 516 main_gpio[MAIN_GPIO_BTN2].state = (btn2 & 0x80) != 0; 517 for (i = MAIN_GPIO_ARDUINO_PIN0; i < MAIN_GPIO_COUNT; i++) { 518 arduino_digital_value_t dval; 519 arduino_digitalRead(i - MAIN_GPIO_ARDUINO_PIN0, &dval); 520 main_gpio[i].state = dval == ARDUINO_DIGITAL_VALUE_HIGH; 521 } 522 523 for (i = 0; i < MAIN_ANALOG_COUNT; i++) { 524 main_analog[i].state = true; /* たぶんプルアップされている */ 525 } 526 527 for (i = 0; i < MAIN_REQUEST_INFOS_COUNT; i++) { 496 528 request_infos[i].timer = TMO_FEVR; 497 529 } … … 506 538 TMO timer = main_timer, temp; 507 539 508 for (i = 0; i < sizeof(request_infos) / sizeof(request_infos[0]); i++) {540 for (i = 0; i < sizeof(request_infos) / sizeof(request_infos[0]); i++) { 509 541 temp = request_infos[i].timer; 510 542 if (temp != TMO_FEVR) { … … 528 560 if (main_timer != TMO_FEVR) { 529 561 main_timer -= interval; 530 if (main_timer < 0){562 if (main_timer < 0) { 531 563 main_timer = 0; 532 564 } 533 565 } 534 566 535 for (i = 0; i < sizeof(request_infos) / sizeof(request_infos[0]); i++) {567 for (i = 0; i < sizeof(request_infos) / sizeof(request_infos[0]); i++) { 536 568 temp = request_infos[i].timer; 537 569 if (temp != TMO_FEVR) { 538 570 temp -= interval; 539 if (temp < 0){571 if (temp < 0) { 540 572 temp = 0; 541 573 } … … 554 586 request_info_t *request_info = &request_infos[0]; 555 587 556 switch (esv->hdr.edata.esv){588 switch (esv->hdr.edata.esv) { 557 589 case ESV_SET_RES: 558 590 case ESV_SET_C_SNA: … … 562 594 } 563 595 564 switch (request_info->state){596 switch (request_info->state) { 565 597 case request_info_state_kadecot_set: 566 598 main_kadecot_set_res(esv); … … 578 610 } 579 611 580 switch (request_info->state){612 switch (request_info->state) { 581 613 case request_info_state_kadecot_get: 582 614 main_kadecot_get_res(esv); … … 594 626 } 595 627 596 switch (request_info->state){628 switch (request_info->state) { 597 629 case request_info_state_ecnl_setget: 598 630 main_ecnl_setget_res(esv); … … 621 653 return false; 622 654 } 623 655 624 656 wamp_put_msg(&wamp, msg, ((ID *)msg.ptr->_gap)[0]); 625 657 return true; … … 660 692 } 661 693 662 switch (cmd){694 switch (cmd) { 663 695 case ECN_INM_GET_DEVICE_LIST_RES: 664 696 main_get_device_list_res(msg); … … 678 710 static void main_break_wait(uint8_t *brkdat, int32_t len) 679 711 { 680 switch (main_state){712 switch (main_state) { 681 713 case main_state_start: 682 714 main_start_service(); … … 700 732 data[0] = 0x01; 701 733 ret = ecn_brk_wai(data, sizeof(data)); 702 if (ret != E_OK){734 if (ret != E_OK) { 703 735 syslog(LOG_ERROR, "ecn_brk_wai"); 704 736 } … … 720 752 /* ECHONETミドルウェアを起動 */ 721 753 ret = ecn_sta_svc(); 722 if (ret != E_OK)754 if (ret != E_OK) 723 755 return; 724 756 } … … 739 771 } 740 772 741 for (i = 0; i < sizeof(request_infos) / sizeof(request_infos[0]); i++) {773 for (i = 0; i < sizeof(request_infos) / sizeof(request_infos[0]); i++) { 742 774 temp = request_infos[i].timer; 743 775 if (temp != 0) … … 750 782 static void main_btn1_change(bool_t push); 751 783 static void main_btn2_change(bool_t push); 784 static void main_gpio_change(int pinno, uint16_t high); 752 785 static ER main_search_device(); 753 786 754 787 static void main_btn_timeout() 755 788 { 756 uint8_t btn1, btn2; 757 758 if(main_timer != 0) 759 return; 760 761 switch(main_state){ 789 gpio_state_t *gpio; 790 analog_state_t *analog; 791 arduino_digital_value_t dval; 792 int aval; 793 bool_t val; 794 int i; 795 796 if (main_timer != 0) 797 return; 798 799 switch (main_state) { 762 800 case main_state_idle: 763 801 /* 10ms後にボタン状態を確認 */ … … 766 804 arduino_tick(); 767 805 768 /* ボタン状態読み込み */ 769 btn1 = sil_reb_mem((uint8_t *)0x0008C04A); 770 /*btn1 = sil_reb_mem((uint8_t *)0x0008C040);*/ 771 btn2 = sil_reb_mem((uint8_t *) 0x0008C040); 772 773 /* ボタン1の処理 */ 774 if(((btn1 & 0x80/*0x20*/) != 0) && !main_btn1_state){ 775 main_btn1_count++; 776 if(main_btn1_count > 10){ 777 main_btn1_count = 0; 778 main_btn1_state = true; 779 780 main_btn1_change(true); 806 for (i = 0; i < MAIN_GPIO_COUNT; i++) { 807 gpio = &main_gpio[i]; 808 809 /* GPIO状態読み込み */ 810 switch (i) { 811 case MAIN_GPIO_BTN1: 812 val = (sil_reb_mem((uint8_t *)0x0008C04A) & 0x80) != 0; 813 /*val = (sil_reb_mem((uint8_t *)0x0008C040) & 0x20) != 0;*/ 814 break; 815 case MAIN_GPIO_BTN2: 816 val = (sil_reb_mem((uint8_t *)0x0008C040) & 0x80) != 0; 817 break; 818 default: 819 arduino_digitalRead(i - MAIN_GPIO_ARDUINO_PIN0, &dval); 820 val = dval == ARDUINO_DIGITAL_VALUE_HIGH; 821 break; 781 822 } 782 } 783 else if(((btn1 & 0x80/*0x20*/) == 0) && main_btn1_state){ 784 main_btn1_count++; 785 if(main_btn1_count > 10){ 786 main_btn1_count = 0; 787 main_btn1_state = false; 788 789 main_btn1_change(false); 823 824 if (val && !gpio->state) { 825 gpio->count++; 826 if (gpio->count > 10) { 827 gpio->count = 0; 828 gpio->state = true; 829 830 switch (i) { 831 case MAIN_GPIO_BTN1: 832 main_btn1_change(true); 833 break; 834 case MAIN_GPIO_BTN2: 835 main_btn2_change(true); 836 break; 837 default: 838 main_gpio_change(i - MAIN_GPIO_ARDUINO_PIN0, 1); 839 break; 840 } 841 } 790 842 } 791 } 792 else{ 793 main_btn1_count = 0; 794 } 795 796 /* ボタン2の処理 */ 797 if(((btn2 & 0x80) != 0) && !main_btn2_state){ 798 main_btn2_count++; 799 if(main_btn2_count > 10){ 800 main_btn2_count = 0; 801 main_btn2_state = true; 802 803 main_btn2_change(true); 843 else if (!val && gpio->state) { 844 gpio->count++; 845 if (gpio->count > 10) { 846 gpio->count = 0; 847 gpio->state = false; 848 849 switch (i) { 850 case MAIN_GPIO_BTN1: 851 main_btn1_change(false); 852 break; 853 case MAIN_GPIO_BTN2: 854 main_btn2_change(false); 855 break; 856 default: 857 main_gpio_change(i - MAIN_GPIO_ARDUINO_PIN0, 0); 858 break; 859 } 860 } 804 861 } 805 } 806 else if(((btn2 & 0x80) == 0) && main_btn2_state){ 807 main_btn2_count++; 808 if(main_btn2_count > 10){ 809 main_btn2_count = 0; 810 main_btn2_state = false; 811 812 main_btn2_change(false); 862 else { 863 gpio->count = 0; 813 864 } 814 865 } 815 else{ 816 main_btn2_count = 0; 817 } 818 break; 819 } 866 867 for (i = 0; i < MAIN_ANALOG_COUNT; i++) { 868 analog = &main_analog[i]; 869 870 if (analog->subscriptionId == 0) 871 continue; 872 873 /* GPIO状態読み込み */ 874 arduino_analogRead(analog->pinno, &aval); 875 876 if (analog->state) 877 val = aval < analog->threshold; 878 else 879 val = aval > analog->threshold; 880 881 if (val && !analog->state) { 882 analog->count++; 883 if (analog->count > 10) { 884 analog->count = 0; 885 analog->state = true; 886 887 main_gpio_change(analog->pinno, aval); 888 } 889 } 890 else if (val && analog->state) { 891 analog->count++; 892 if (analog->count > 10) { 893 analog->count = 0; 894 analog->state = false; 895 896 main_gpio_change(analog->pinno, aval); 897 } 898 } 899 else { 900 analog->count = 0; 901 } 902 } 903 break; 904 } 905 } 906 907 ER main_add_threshold(int subscriptionId, int pinno, uint16_t threshold) 908 { 909 int i, aval; 910 analog_state_t *analog; 911 912 if ((pinno < 14) || (pinno > 19)) 913 return E_PAR; 914 915 for (i = 0; i < MAIN_ANALOG_COUNT; i++) { 916 analog = &main_analog[i]; 917 if (analog->subscriptionId != 0) 918 continue; 919 920 analog->subscriptionId = subscriptionId; 921 analog->pinno = pinno; 922 analog->threshold = threshold; 923 924 arduino_analogRead(analog->pinno, &aval); 925 926 analog->state = (aval < analog->threshold); 927 analog->count = 0; 928 929 return E_OK; 930 } 931 932 return E_NOMEM; 933 } 934 935 ER main_del_threshold(int subscriptionId) 936 { 937 int i; 938 analog_state_t *analog; 939 940 for (i = 0; i < MAIN_ANALOG_COUNT; i++) { 941 analog = &main_analog[i]; 942 if (analog->subscriptionId != subscriptionId) 943 continue; 944 945 analog->subscriptionId = 0; 946 947 return E_OK; 948 } 949 950 return E_OBJ; 820 951 } 821 952 … … 829 960 830 961 ret = ecn_itr_ini(&enm, esv); 831 if (ret != E_OK){962 if (ret != E_OK) { 832 963 syslog(LOG_ERROR, "ecn_itr_ini"); 833 964 return; 834 965 } 835 966 836 for (;;) {837 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {967 for (;;) { 968 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) { 838 969 switch (epc) { 839 970 case 0x80: … … 843 974 } 844 975 } 845 if (ret != E_BOVR){976 if (ret != E_BOVR) { 846 977 syslog(LOG_ERROR, "ecn_itr_nxt"); 847 978 break; 848 979 } 849 if (enm.is_eof)980 if (enm.is_eof) 850 981 break; 851 982 } … … 858 989 { 859 990 /* 押されて戻った時に処理する */ 860 if (push)991 if (push) 861 992 return; 862 993 … … 873 1004 874 1005 /* 1006 * GPIO状態変化処理 1007 */ 1008 static void main_gpio_change(int pinno, uint16_t value) 1009 { 1010 main_gpio_pubid++; 1011 1012 wamp_broker_publish_pin(&wamp.broker, main_gpio_pubid, 1, pinno, value); 1013 } 1014 1015 /* 875 1016 * 機器の検索 876 1017 */ … … 882 1023 /* 機器の検索 */ 883 1024 ret = ecn_esv_inf_req(&esv, EOBJ_NULL, 0xD6); 884 if (ret != E_OK){1025 if (ret != E_OK) { 885 1026 syslog(LOG_ERROR, "ecn_esv_inf_req"); 886 1027 return ret; … … 889 1030 /* 電文送信 */ 890 1031 ret = ecn_snd_esv(esv); 891 if (ret != E_OK){1032 if (ret != E_OK) { 892 1033 syslog(LOG_ERROR, "ecn_snd_esv"); 893 1034 return ret; … … 906 1047 907 1048 ret = psnd_dtq(WEBSOCKET_MBXID, (intptr_t)msg.ptr); 908 if (ret != E_OK){1049 if (ret != E_OK) { 909 1050 syslog(LOG_ERROR, "psnd_dtq(WEBSOCKET_MBXID) : result=%d", ret); 910 1051 _ecn_fbs_del(msg); … … 923 1064 ER ret; 924 1065 925 if (request_info->requestId != 0)1066 if (request_info->requestId != 0) 926 1067 return E_QOVR; 927 1068 928 1069 /* 機器の検索 */ 929 1070 ret = main_search_device(); 930 if (ret != E_OK){1071 if (ret != E_OK) { 931 1072 return ret; 932 1073 } … … 948 1089 for (;;) { 949 1090 ret = ecn_agent_get_device_list(ECHONET_API_MAILBOX, request_info->requestId, &req); 950 if (ret != E_OK){1091 if (ret != E_OK) { 951 1092 syslog(LOG_ERROR, "ecn_agent_get_device_list"); 952 1093 break; … … 1005 1146 ECN_FBS_ID req; 1006 1147 1007 if (request_info->requestId != 0)1148 if (request_info->requestId != 0) 1008 1149 return E_QOVR; 1009 1150 1010 1151 ret = ecn_udp_get_ipaddr(ECHONET_API_MAILBOX, requestId, addrid, &req); 1011 if (ret != E_OK){1152 if (ret != E_OK) { 1012 1153 return ret; 1013 1154 } … … 1063 1204 ECN_FBS_ID req; 1064 1205 1065 if (request_info->requestId != 0)1206 if (request_info->requestId != 0) 1066 1207 return E_QOVR; 1067 1208 1068 1209 ret = ecn_agent_get_device_info(ECHONET_API_MAILBOX, requestId, eobjid, &req); 1069 if (ret != E_OK){1210 if (ret != E_OK) { 1070 1211 return ret; 1071 1212 } … … 1118 1259 T_EDATA *esv; 1119 1260 1120 if (request_info->requestId != 0)1261 if (request_info->requestId != 0) 1121 1262 return E_QOVR; 1122 1263 1123 1264 /* プロパティ取得電文作成 */ 1124 1265 ret = ecn_esv_get(&esv, eobjid, epc); 1125 if (ret != E_OK){1266 if (ret != E_OK) { 1126 1267 syslog(LOG_ERROR, "ecn_esv_get"); 1127 1268 return ret; … … 1130 1271 /* 電文送信 */ 1131 1272 ret = ecn_snd_esv(esv); 1132 if (ret != E_OK){1273 if (ret != E_OK) { 1133 1274 syslog(LOG_ERROR, "ecn_snd_esv"); 1134 1275 return ret; … … 1156 1297 T_ENUM_EPC enm; 1157 1298 1158 if (request_info->eobjid != eobjid)1299 if (request_info->eobjid != eobjid) 1159 1300 return; 1160 1301 … … 1166 1307 1167 1308 ret = ecn_itr_ini(&enm, esv); 1168 if (ret != E_OK){1309 if (ret != E_OK) { 1169 1310 syslog(LOG_ERROR, "ecn_itr_ini"); 1170 1311 return; 1171 1312 } 1172 1313 1173 for (;;) {1174 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {1314 for (;;) { 1315 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) { 1175 1316 if (request_info->epc == epc) { 1176 1317 wamp_dealer_kadecot_get(dealer, eobjid, epc, pdc, p_edt); 1177 1318 } 1178 1319 } 1179 if (ret != E_BOVR){1320 if (ret != E_BOVR) { 1180 1321 syslog(LOG_ERROR, "ecn_itr_nxt"); 1181 1322 break; 1182 1323 } 1183 if (enm.is_eof)1324 if (enm.is_eof) 1184 1325 break; 1185 1326 } … … 1193 1334 T_EDATA *esv; 1194 1335 1195 if (request_info->requestId != 0)1336 if (request_info->requestId != 0) 1196 1337 return E_QOVR; 1197 1338 1198 1339 /* プロパティ取得電文作成 */ 1199 1340 ret = ecn_esv_setc(&esv, eobjid, epc, pdc, edt); 1200 if (ret != E_OK){1341 if (ret != E_OK) { 1201 1342 syslog(LOG_ERROR, "ecn_esv_setc"); 1202 1343 return ret; … … 1205 1346 /* 電文送信 */ 1206 1347 ret = ecn_snd_esv(esv); 1207 if (ret != E_OK){1348 if (ret != E_OK) { 1208 1349 syslog(LOG_ERROR, "ecn_snd_esv"); 1209 1350 return ret; … … 1234 1375 return; 1235 1376 1236 if (request_info->eobjid != eobjid)1377 if (request_info->eobjid != eobjid) 1237 1378 return; 1238 1379 … … 1243 1384 1244 1385 ret = ecn_itr_ini(&enm, esv); 1245 if (ret != E_OK){1386 if (ret != E_OK) { 1246 1387 syslog(LOG_ERROR, "ecn_itr_ini"); 1247 1388 return; 1248 1389 } 1249 1390 1250 for (;;) {1251 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {1391 for (;;) { 1392 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) { 1252 1393 if (request_info->epc == epc) { 1253 1394 wamp_dealer_kadecot_set(dealer, eobjid, epc); 1254 1395 } 1255 1396 } 1256 if (ret != E_BOVR){1397 if (ret != E_BOVR) { 1257 1398 syslog(LOG_ERROR, "ecn_itr_nxt"); 1258 1399 break; 1259 1400 } 1260 if (enm.is_eof)1401 if (enm.is_eof) 1261 1402 break; 1262 1403 } … … 1268 1409 ER ret; 1269 1410 1270 if (request_info->requestId != 0)1411 if (request_info->requestId != 0) 1271 1412 return E_QOVR; 1272 1413 1273 1414 /* 電文送信 */ 1274 1415 ret = ecn_snd_esv(esv); 1275 if (ret != E_OK){1416 if (ret != E_OK) { 1276 1417 syslog(LOG_ERROR, "ecn_snd_esv"); 1277 1418 return ret; … … 1304 1445 ER ret; 1305 1446 1306 if (request_info->requestId != 0)1447 if (request_info->requestId != 0) 1307 1448 return E_QOVR; 1308 1449 1309 1450 /* 電文送信 */ 1310 1451 ret = ecn_snd_esv(esv); 1311 if (ret != E_OK){1452 if (ret != E_OK) { 1312 1453 syslog(LOG_ERROR, "ecn_snd_esv"); 1313 1454 return ret; … … 1340 1481 ER ret; 1341 1482 1342 if (request_info->requestId != 0)1483 if (request_info->requestId != 0) 1343 1484 return E_QOVR; 1344 1485 1345 1486 /* 電文送信 */ 1346 1487 ret = ecn_snd_esv(esv); 1347 if (ret != E_OK){1488 if (ret != E_OK) { 1348 1489 syslog(LOG_ERROR, "ecn_snd_esv"); 1349 1490 return ret; … … 1375 1516 struct wamp_dealer *dealer = request_info->dealer; 1376 1517 1377 switch (request_info->state) {1518 switch (request_info->state) { 1378 1519 case request_info_state_search_device: 1379 1520 main_search_device_timeout(); … … 1422 1563 1423 1564 ret = ecn_itr_ini(&enm, esv); 1424 if (ret != E_OK){1565 if (ret != E_OK) { 1425 1566 syslog(LOG_ERROR, "ecn_itr_ini"); 1426 1567 return; 1427 1568 } 1428 1569 1429 for (;;) {1430 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) {1570 for (;;) { 1571 while ((ret = ecn_itr_nxt(&enm, &epc, &pdc, p_edt)) == E_OK) { 1431 1572 wamp_broker_publish_inf(&wamp.broker, esv->hdr.ecn_hdr.tid, eobjid, 1432 1573 devType, epc, pdc, p_edt); 1433 1574 } 1434 if (ret != E_BOVR){1575 if (ret != E_BOVR) { 1435 1576 syslog(LOG_ERROR, "ecn_itr_nxt"); 1436 1577 break; 1437 1578 } 1438 if (enm.is_eof)1439 break; 1440 } 1441 } 1579 if (enm.is_eof) 1580 break; 1581 } 1582 } -
uKadecot/trunk/src/ukadecot/main.h
r148 r152 191 191 ER main_ecnl_set(unsigned int requestId, struct wamp_dealer *dealer, ID eobjid, T_EDATA *esv); 192 192 ER main_ecnl_setget(unsigned int requestId, struct wamp_dealer *dealer, ID eobjid, T_EDATA *esv); 193 ER main_add_threshold(int subscriptionId, int pinno, uint16_t threshold); 194 ER main_del_threshold(int subscriptionId); 193 195 194 196 #endif /* TOPPERS_MACRO_ONLY */ -
uKadecot/trunk/uip/apps/webserver/httpd.c
r108 r152 89 89 #endif 90 90 91 #define MAX(a, b) ((a > b) ? a : b) 92 93 union temp_type_t { 94 char binary[sizeof(http_content_type_binary)]; 95 char html[sizeof(http_content_type_html)]; 96 char css[sizeof(http_content_type_css)]; 97 char js[sizeof(http_content_type_js)]; 98 char json[sizeof(http_content_type_json)]; 99 char png[sizeof(http_content_type_png)]; 100 char gif[sizeof(http_content_type_gif)]; 101 char jpg[sizeof(http_content_type_jpg)]; 102 char svg[sizeof(http_content_type_svg)]; 103 char plain[sizeof(http_content_type_plain)]; 104 }; 105 106 struct temp_buf_t{ 107 char headers[MAX(sizeof(http_header_404), sizeof(http_header_200)) 108 + sizeof(http_content_encoding_gzip) 109 + sizeof(union temp_type_t) 110 ]; 111 char ws_headers[sizeof(http_header_101) 112 + sizeof(http_upgrade) + sizeof(((struct httpd_state *)0)->message.upgrade) + sizeof(http_crnl) 113 + sizeof(http_connection) + sizeof(((struct httpd_state *)0)->message.connection) + sizeof(http_crnl) 114 + sizeof(http_sec_websocket_accept) + sizeof(((struct httpd_state *)0)->message.response_key) + sizeof(http_crnl) 115 + sizeof(http_sec_websocket_protocol) + sizeof(((struct httpd_state *)0)->message.sec_websocket_protocol) + sizeof(http_crnl) 116 + sizeof(http_crnl) 117 ]; 118 }; 119 static char temp_buf[sizeof(struct temp_buf_t)]; 120 91 121 int httpd_strnicmp(const char *s1, const char *s2, size_t n) 92 122 { … … 159 189 PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr)) 160 190 { 191 char *pos = temp_buf; 192 int len; 161 193 char *ptr; 162 194 163 195 PSOCK_BEGIN(&s->sout); 164 196 165 PSOCK_SEND_STR(&s->sout, statushdr); 166 167 PSOCK_SEND_STR(&s->sout, http_content_encoding_gzip); 197 len = strlen(statushdr); 198 memcpy(pos, statushdr, len); pos += len; 199 200 len = strlen(http_content_encoding_gzip); 201 memcpy(pos, http_content_encoding_gzip, len); pos += len; 168 202 169 203 ptr = strrchr(s->message.request_url, ISO_period); 170 204 if (ptr == NULL) { 171 PSOCK_SEND_STR(&s->sout, http_content_type_binary); 205 len = strlen(http_content_type_binary); 206 memcpy(pos, http_content_type_binary, len); pos += len; 172 207 } else if (strncmp(http_html, ptr, 5) == 0 || 173 208 strncmp(http_shtml, ptr, 6) == 0) { 174 PSOCK_SEND_STR(&s->sout, http_content_type_html); 209 len = strlen(http_content_type_html); 210 memcpy(pos, http_content_type_html, len); pos += len; 175 211 } else if (strncmp(http_css, ptr, 4) == 0) { 176 PSOCK_SEND_STR(&s->sout, http_content_type_css); 212 len = strlen(http_content_type_css); 213 memcpy(pos, http_content_type_css, len); pos += len; 177 214 } else if (strncmp(http_js, ptr, 3) == 0) { 178 PSOCK_SEND_STR(&s->sout, http_content_type_js); 215 len = strlen(http_content_type_js); 216 memcpy(pos, http_content_type_js, len); pos += len; 179 217 } else if (strncmp(http_json, ptr, 5) == 0) { 180 PSOCK_SEND_STR(&s->sout, http_content_type_json); 218 len = strlen(http_content_type_json); 219 memcpy(pos, http_content_type_json, len); pos += len; 181 220 } else if (strncmp(http_png, ptr, 4) == 0) { 182 PSOCK_SEND_STR(&s->sout, http_content_type_png); 221 len = strlen(http_content_type_png); 222 memcpy(pos, http_content_type_png, len); pos += len; 183 223 } else if (strncmp(http_gif, ptr, 4) == 0) { 184 PSOCK_SEND_STR(&s->sout, http_content_type_gif); 224 len = strlen(http_content_type_gif); 225 memcpy(pos, http_content_type_gif, len); pos += len; 185 226 } else if (strncmp(http_jpg, ptr, 4) == 0) { 186 PSOCK_SEND_STR(&s->sout, http_content_type_jpg); 227 len = strlen(http_content_type_jpg); 228 memcpy(pos, http_content_type_jpg, len); pos += len; 187 229 } else if (strncmp(http_svg, ptr, 4) == 0) { 188 PSOCK_SEND_STR(&s->sout, http_content_type_svg); 230 len = strlen(http_content_type_svg); 231 memcpy(pos, http_content_type_svg, len); pos += len; 189 232 } else { 190 PSOCK_SEND_STR(&s->sout, http_content_type_plain); 191 } 233 len = strlen(http_content_type_plain); 234 memcpy(pos, http_content_type_plain, len); pos += len; 235 } 236 *pos = '\0'; 237 238 PSOCK_SEND(&s->sout, temp_buf, pos - temp_buf); 239 192 240 PSOCK_END(&s->sout); 193 241 } … … 222 270 PT_THREAD(send_ws_headers(struct httpd_state *s, const char *statushdr)) 223 271 { 272 char *pos = temp_buf; 273 int len; 274 224 275 PSOCK_BEGIN(&s->sout); 225 276 226 PSOCK_SEND_STR(&s->sout, statushdr); 227 228 PSOCK_SEND_STR(&s->sout, http_upgrade); 229 PSOCK_SEND_STR(&s->sout, s->message.upgrade); 230 PSOCK_SEND_STR(&s->sout, http_crnl); 231 232 PSOCK_SEND_STR(&s->sout, http_connection); 233 PSOCK_SEND_STR(&s->sout, s->message.connection); 234 PSOCK_SEND_STR(&s->sout, http_crnl); 235 236 PSOCK_SEND_STR(&s->sout, http_sec_websocket_accept); 237 PSOCK_SEND_STR(&s->sout, s->message.response_key); 238 PSOCK_SEND_STR(&s->sout, http_crnl); 239 240 PSOCK_SEND_STR(&s->sout, http_sec_websocket_protocol); 241 PSOCK_SEND_STR(&s->sout, s->message.sec_websocket_protocol); 242 PSOCK_SEND_STR(&s->sout, http_crnl); 243 244 PSOCK_SEND_STR(&s->sout, http_crnl); 277 len = strlen(statushdr); 278 memcpy(pos, statushdr, len); pos += len; 279 280 len = strlen(http_upgrade); 281 memcpy(pos, http_upgrade, len); pos += len; 282 len = strlen(s->message.upgrade); 283 memcpy(pos, s->message.upgrade, len); pos += len; 284 len = strlen(http_crnl); 285 memcpy(pos, http_crnl, len); pos += len; 286 287 len = strlen(http_connection); 288 memcpy(pos, http_connection, len); pos += len; 289 len = strlen(s->message.connection); 290 memcpy(pos, s->message.connection, len); pos += len; 291 len = strlen(http_crnl); 292 memcpy(pos, http_crnl, len); pos += len; 293 294 len = strlen(http_sec_websocket_accept); 295 memcpy(pos, http_sec_websocket_accept, len); pos += len; 296 len = strlen(s->message.response_key); 297 memcpy(pos, s->message.response_key, len); pos += len; 298 len = strlen(http_crnl); 299 memcpy(pos, http_crnl, len); pos += len; 300 301 len = strlen(http_sec_websocket_protocol); 302 memcpy(pos, http_sec_websocket_protocol, len); pos += len; 303 len = strlen(s->message.sec_websocket_protocol); 304 memcpy(pos, s->message.sec_websocket_protocol, len); pos += len; 305 len = strlen(http_crnl); 306 memcpy(pos, http_crnl, len); pos += len; 307 308 len = strlen(http_crnl); 309 memcpy(pos, http_crnl, len); pos += len; 310 *pos = '\0'; 311 312 PSOCK_SEND(&s->sout, temp_buf, pos - temp_buf); 245 313 246 314 PSOCK_END(&s->sout);
Note:
See TracChangeset
for help on using the changeset viewer.