Changeset 265


Ignore:
Timestamp:
Nov 18, 2016, 5:30:16 PM (7 years ago)
Author:
coas-nagasima
Message:

ECNL 1.0.3の修正内容を盛り込み
内蔵Webアプリで機器が取得できないのを修正

Location:
uKadecot/trunk
Files:
1 added
1 deleted
7 edited

Legend:

Unmodified
Added
Removed
  • uKadecot/trunk/ecnl_ssp/echonet.c

    r152 r265  
    329329        if (a_ret) {
    330330                ECN_DBG_PUT("ecn_add_edt(): _ecn_fbs_add_data_ex(*, ecn_prp{epc:0x%02X}, %u) result = %d:%s",
    331                         a_ecn_prp.epc, sizeof(a_ecn_prp),
    332                         a_ret, itron_strerror(a_ret));
     331                        a_ecn_prp.epc, sizeof(a_ecn_prp), a_ret, itron_strerror(a_ret));
    333332                goto lb_except;
    334333        }
     
    338337                if (a_ret) {
    339338                        ECN_DBG_PUT("ecn_add_edt(): _ecn_fbs_add_data_ex(*, ecn_prp{epc:0x%02X} edt, %u) result = %d:%s",
    340                                 a_ecn_prp.epc, fa_pdc,
    341                                 a_ret, itron_strerror(a_ret));
     339                                a_ecn_prp.epc, fa_pdc, a_ret, itron_strerror(a_ret));
    342340                        goto lb_except;
    343341                }
     
    409407
    410408        p_esv = &pk_esv->hdr;
    411         p_snod = _ecn_eno_fnd(((T_ECN_FST_BLK *)pk_esv)->hdr.sender);
     409        p_snod = _ecn_eno_fnd(((T_ECN_FST_BLK *)pk_esv)->hdr.sender.id);
    412410        if (p_snod != NULL) {
    413411                p_sobj = p_snod->profile;
     
    433431
    434432        p_esv = &pk_esv->hdr;
    435         p_snod = _ecn_eno_fnd(((T_ECN_FST_BLK *)pk_esv)->hdr.sender);
     433        p_snod = _ecn_eno_fnd(((T_ECN_FST_BLK *)pk_esv)->hdr.sender.id);
    436434        if (p_snod != NULL) {
    437435                /* ノードプロファイルの場合 */
     
    503501        if (!p_pdc)
    504502                return E_PAR;
    505         if (!p_edt)
    506                 return E_PAR;
    507503        if (!pk_itr->pk_esv)
    508504                return E_PAR;
     
    510506        if (pk_itr->is_eof)
    511507                return E_BOVR; /* データ終了 */
    512         if (    pk_itr->count <= pk_itr->got_ct
    513         &&      pk_itr->next_blk_ct < 1) {
     508        if (pk_itr->count <= pk_itr->got_ct && pk_itr->next_blk_ct < 1) {
    514509                pk_itr->is_eof = 1;                     /* 終端に達した時、非0 */
    515510                return E_BOVR; /* データ終了 */
     
    523518
    524519#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(;
     520        ECN_CAP_PUT("ecn_itr_nxt() rd.cur=b%dp%d", pk_itr->cur.blk, pk_itr->cur.pos);
    526521#endif
    527522        if (pk_itr->count <= pk_itr->got_ct && 0 < pk_itr->next_blk_ct) {
     
    550545                goto lb_except;
    551546        if (a_rd_len < sizeof(a_ecn_prp)) {
    552                 ECN_DBG_PUT("ecn_itr_nxt() ecn_prp read fault."
    553                         " rd.cur=%d", pk_itr->cur);
     547                ECN_DBG_PUT("ecn_itr_nxt() ecn_prp read fault. rd.cur=%d", pk_itr->cur);
    554548                pk_itr->is_eof = 1;                     /* 終端に達した時、非0 */
    555549                a_ret = E_BOVR; /* データ終了 */
     
    560554
    561555        if (0 < a_ecn_prp.pdc) {
    562                 /* 付随データを読み取る */
    563                 a_rd_len = 0;
    564                 a_ret = _ecn_fbs_get_data(a_fbs_id, p_edt, a_ecn_prp.pdc, &a_rd_len);
    565                 if (a_ret != E_OK)
    566                         goto lb_except;
    567                 if (a_rd_len < (ECN_FBS_SSIZE_T)a_ecn_prp.pdc) {
    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                         pk_itr->is_eof = 1;                     /* 終端に達した時、非0 */
    571                         a_ret = E_BOVR; /* データ終了 */
    572                         goto lb_finally;
     556                if (p_edt == NULL) {
     557                        a_ret = _ecn_fbs_seek_rpos(a_fbs_id, a_ecn_prp.pdc);
     558                        if (a_ret != E_OK)
     559                                goto lb_except;
    573560                }
     561                else {
     562                        /* 付随データを読み取る */
     563                        a_rd_len = 0;
     564                        a_ret = _ecn_fbs_get_data(a_fbs_id, p_edt, a_ecn_prp.pdc, &a_rd_len);
     565                        if (a_ret != E_OK)
     566                                goto lb_except;
     567                        if (a_rd_len < (ECN_FBS_SSIZE_T)a_ecn_prp.pdc) {
     568                                ECN_DBG_PUT("ecn_itr_nxt() edt read fault. rd.cur=%d,epc=0x%02X,pdc=%u",
     569                                        pk_itr->cur, a_ecn_prp.epc , a_ecn_prp.pdc);
     570                                pk_itr->is_eof = 1;                     /* 終端に達した時、非0 */
     571                                a_ret = E_BOVR; /* データ終了 */
     572                                goto lb_finally;
     573                        }
     574                }
    574575        }
    575576        pk_itr->got_ct++;
    576577
    577578#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(;
     579        ECN_CAP_PUT("ecn_itr_nxt() read: ct=%d/%d", pk_itr->got_ct, pk_itr->count);
    579580#endif
    580581
  • uKadecot/trunk/ecnl_ssp/echonet_agent.c

    r263 r265  
    434434                        memset(result, 0, sizeof(*result));
    435435                        node = &result->node;
    436                         node->enodId = ((T_ECN_FST_BLK *)esv)->hdr.sender;
     436                        node->enodId = ((T_ECN_FST_BLK *)esv)->hdr.sender.id;
    437437                        node->base.eobjId = tmax_eobjid + 1 + (((intptr_t)result - (intptr_t)agent->blockes) / sizeof(agent->blockes[0]));
    438438                        node->base.inib.enodid = 0;
     
    570570        }
    571571
    572         ret = psnd_dtq(res.ptr->hdr.target_mbxid, (intptr_t)res.ptr);
     572        ret = psnd_dtq(res.ptr->hdr.target.mbxid, (intptr_t)res.ptr);
    573573        if (ret != E_OK) {
    574574                _ecn_fbs_del(res);
     
    634634        }
    635635
    636         ret = psnd_dtq(res.ptr->hdr.target_mbxid, (intptr_t)res.ptr);
     636        ret = psnd_dtq(res.ptr->hdr.target.mbxid, (intptr_t)res.ptr);
    637637        if (ret != E_OK) {
    638638                _ecn_fbs_del(res);
  • uKadecot/trunk/ecnl_ssp/echonet_fbs.h

    r108 r265  
    111111        uint16_t        type;                   /* メッセージタイプ */
    112112        union{
    113                 ECN_ENOD_ID sender;             /* 送信元ノードID(ECHONET電文) */
    114                 ID sender_mbxid;                /* 送信元メールボックスID(内部メッセージ) */
    115         };
     113                ECN_ENOD_ID id;                 /* 送信元ノードID(ECHONET電文) */
     114                ID mbxid;                               /* 送信元メールボックスID(内部メッセージ) */
     115        }sender;
    116116        union{
    117                 ECN_ENOD_ID target;             /* 送信先ノードID(ECHONET電文) */
    118                 ID target_mbxid;                /* 送信先メールボックスID(内部メッセージ) */
    119         };
     117                ECN_ENOD_ID id;                 /* 送信先ノードID(ECHONET電文) */
     118                ID mbxid;                               /* 送信先メールボックスID(内部メッセージ) */
     119        }target;
    120120        union{
    121                 ECN_ENOD_ID reply;              /* 返信先ノードID(ECHONET電文) */
    122                 ID reply_mbxid;                 /* 返信先メールボックスID(内部メッセージ) */
    123         };
     121                ECN_ENOD_ID id;                 /* 返信先ノードID(ECHONET電文) */
     122                ID mbxid;                               /* 返信先メールボックスID(内部メッセージ) */
     123        }reply;
    124124
    125125        int                     rd;                             /*      読み取りヘッド情報       */
  • uKadecot/trunk/ecnl_ssp/echonet_task.c

    r158 r265  
    8787        intptr_t msg = (intptr_t)fa_rsp_fbs.ptr;
    8888        ID mbxid = ecn_udp_mailboxid;
    89         ECN_ENOD_ID target = fa_rsp_fbs.ptr->hdr.target;
     89        ECN_ENOD_ID target = fa_rsp_fbs.ptr->hdr.target.id;
    9090#ifdef ECN_DBG_PUT_ENA
    9191        intptr_t a_fbs_sub1 = (intptr_t)fa_rsp_fbs.ptr->lnk.p_sub[0];
     
    412412        }
    413413        if (fa_deoj == 0) {
    414                 ECN_DBG_PUT("%s", "マルチキャスト");
     414                ECN_DBG_PUT("マルチキャスト");
    415415                /* fa_deoj == 0 : マルチキャスト */
    416416                ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx1 = EOJ_X1_PROFILE;
    417417                ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx2 = EOJ_X2_NODE_PROFILE;
    418418                ((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj.eojx3 = 0x01;
    419                 a_fbs_id.ptr->hdr.target = ENOD_MULTICAST_ID;
     419                a_fbs_id.ptr->hdr.target.id = ENOD_MULTICAST_ID;
    420420        }
    421421        else if (fa_deoj <= tmax_eobjid) {
     
    427427
    428428                /* テーブルから検索 */
    429                 a_fbs_id.ptr->hdr.target = ENOD_NOT_MATCH_ID;
     429                a_fbs_id.ptr->hdr.target.id = ENOD_NOT_MATCH_ID;
    430430                a_enodid = (a_eobj->enodid == 0) ? fa_deoj : a_eobj->enodid;
    431431                a_enod = &eobjinib_table[a_enodid - 1];
    432432                if ((a_enod->eobjatr == EOBJ_LOCAL_NODE)
    433433                        || ((a_enod->eobjatr == EOBJ_ASYNC_REMOTE_NODE) && (fa_esv == ESV_GET))) {
    434                         a_fbs_id.ptr->hdr.target = ENOD_LOCAL_ID;
     434                        a_fbs_id.ptr->hdr.target.id = ENOD_LOCAL_ID;
    435435                }
    436436                else{
     
    440440                                        continue;
    441441
    442                                 a_fbs_id.ptr->hdr.target = (ECN_ENOD_ID)(i + ENOD_REMOTE_ID - 1);
     442                                a_fbs_id.ptr->hdr.target.id = (ECN_ENOD_ID)(i + ENOD_REMOTE_ID - 1);
    443443                                break;
    444444                        }
    445445                }
    446                 if (a_fbs_id.ptr->hdr.target == ENOD_NOT_MATCH_ID) {
     446                if (a_fbs_id.ptr->hdr.target.id == ENOD_NOT_MATCH_ID) {
    447447                        goto lb_except;
    448448                        ECN_DBG_PUT("deoj = %02X %02X %02x : enod not match",
     
    470470                        memcpy(&((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj, &eoj,
    471471                                sizeof(((T_EDATA *)a_fbs_id.ptr)->hdr.edata.deoj));
    472                         a_fbs_id.ptr->hdr.target = enodid;
     472                        a_fbs_id.ptr->hdr.target.id = enodid;
    473473                }
    474474                else {
     
    491491#endif
    492492        a_fbs_id.ptr->hdr.type = ECN_MSG_ECHONET;
    493         a_fbs_id.ptr->hdr.sender = ENOD_API_ID;
     493        a_fbs_id.ptr->hdr.sender.id = ENOD_API_ID;
    494494        if (fa_esv == ESV_INFC)
    495                 a_fbs_id.ptr->hdr.reply = a_fbs_id.ptr->hdr.target;
     495                a_fbs_id.ptr->hdr.reply.id = a_fbs_id.ptr->hdr.target.id;
    496496        else if (fa_esv == ESV_INF_REQ)
    497                 a_fbs_id.ptr->hdr.reply = ENOD_MULTICAST_ID;
     497                a_fbs_id.ptr->hdr.reply.id = ENOD_MULTICAST_ID;
    498498        else
    499                 a_fbs_id.ptr->hdr.reply = ENOD_API_ID;
     499                a_fbs_id.ptr->hdr.reply.id = ENOD_API_ID;
    500500
    501501        /* 正常終了 */
     
    603603
    604604                        a_fbs.ptr->hdr.type = ECN_MSG_ECHONET;
    605                         a_fbs.ptr->hdr.sender = ENOD_LOCAL_ID;
    606                         a_fbs.ptr->hdr.target = ENOD_MULTICAST_ID;
    607                         a_fbs.ptr->hdr.reply = ENOD_LOCAL_ID;
     605                        a_fbs.ptr->hdr.sender.id = ENOD_LOCAL_ID;
     606                        a_fbs.ptr->hdr.target.id = ENOD_MULTICAST_ID;
     607                        a_fbs.ptr->hdr.reply.id = ENOD_LOCAL_ID;
    608608                        ((T_EDATA *)a_fbs.ptr)->hdr.ecn_prp.pdc = 1;    /* 件数 */
    609609                        /* 件数を格納 */
     
    711711}
    712712
     713/*
     714 * 電文の構成要素数とサイズのチェックを行う
     715 */
     716static bool_t _ecn_tsk_check_format(T_EDATA *edata, int len)
     717{
     718        ER ret;
     719        T_ENUM_EPC enm;
     720        int opc;
     721        uint8_t epc;
     722        uint8_t pdc;
     723
     724        len -= sizeof(T_ECN_HDR) + sizeof(T_ECN_EDATA_BODY);
     725
     726        ret = ecn_itr_ini(&enm, edata);
     727        if (ret != E_OK) {
     728                return false;
     729        }
     730        opc = enm.count;
     731        for (;;) {
     732                ret = ecn_itr_nxt(&enm, &epc, &pdc, NULL);
     733                if (enm.is_eof)
     734                        break;
     735                if (ret == E_BOVR){
     736                        if (opc != 0)
     737                                return false;
     738                        opc = enm.count;
     739                        len -= 1;
     740                        continue;
     741                }
     742                if (ret != E_OK)
     743                        break;
     744
     745                opc--;
     746                len -= sizeof(T_ECN_PRP) + pdc;
     747        }
     748
     749        return (opc == 0) && (len == 0);
     750}
     751
    713752static int _ecn_tsk_ecn_msg_main(ECN_FBS_ID fa_fbs_id, const EOBJINIB *p_obj, ATR eobjatr,
    714753        const EOBJINIB *p_sobj, ATR sobjatr);
     
    739778        if (p_esv->ecn_hdr.ehd1 != ECN_EDH1_ECHONET_LITE
    740779        ||      p_esv->ecn_hdr.ehd2 != ECN_EDH2_FORMAT_1) {
    741                 syslog(LOG_WARNING, "_ecn_tsk_ecn_msg() format fault: 0x%02X,0x%02X", p_esv->ecn_hdr.ehd1, p_esv->ecn_hdr.ehd2);
     780                ECN_DBG_PUT("_ecn_tsk_ecn_msg() format fault: 0x%02X,0x%02X", p_esv->ecn_hdr.ehd1, p_esv->ecn_hdr.ehd2);
    742781                return;
    743782        }
    744783
     784        if (p_esv->edata.deoj.eojx3 > 0x7F) {
     785                ECN_DBG_PUT("_ecn_tsk_ecn_msg() format fault: deoj %06X",
     786                        p_esv->edata.deoj.eojx1 << 16 | p_esv->edata.deoj.eojx2 << 8 | p_esv->edata.deoj.eojx3);
     787                return;
     788        }
     789
     790        if ((p_esv->edata.seoj.eojx3 > 0x7F) || (p_esv->edata.seoj.eojx3 == 0x00)) {
     791                ECN_DBG_PUT("_ecn_tsk_ecn_msg() format fault: seoj %06X",
     792                        p_esv->edata.seoj.eojx1 << 16 | p_esv->edata.seoj.eojx2 << 8 | p_esv->edata.seoj.eojx3);
     793                return;
     794        }
     795
     796        if ((p_esv->edata.esv & 0xC0) != 0x40) {
     797                ECN_DBG_PUT("_ecn_tsk_ecn_msg() format fault: esv 0x%02X", p_esv->edata.esv);
     798                return;
     799        }
     800
     801        if (p_esv->edata.opc == 0x00) {
     802                ECN_DBG_PUT("_ecn_tsk_ecn_msg() format fault: opc 0x%02X", p_esv->edata.opc);
     803                return;
     804        }
     805
     806        /* 電文の構成要素数とサイズのチェックを行う */
     807        if (!_ecn_tsk_check_format((T_EDATA *)fa_fbs_id.ptr, fa_fbs_id.ptr->hdr.length)) {
     808                ECN_DBG_PUT("_ecn_tsk_ecn_msg() format fault");
     809                return;
     810        }
     811
    745812        /* 送信宛からノードを検索 */
    746         p_nod = _ecn_eno_fnd(fa_fbs_id.ptr->hdr.target);
     813        p_nod = _ecn_eno_fnd(fa_fbs_id.ptr->hdr.target.id);
    747814        /* 送信元からノードを検索 */
    748         sender = fa_fbs_id.ptr->hdr.sender;
     815        sender = fa_fbs_id.ptr->hdr.sender.id;
    749816        p_snod = _ecn_eno_fnd(sender);
    750817        if (p_snod != NULL) {
     
    782849                                a_prc = true;
    783850                        }
    784                         /* 0x74 プロパティ値通知(応答要)の場合処理したことにする */
     851                        /* 0x74 プロパティ値通知(応答要)の場合の場合は電文破棄 */
    785852                        else if (p_esv->edata.esv == ESV_INFC) {
    786853                                a_prc = true;
     
    815882                                a_prc = true;
    816883                        }
     884
     885                        /* 機器オブジェクトが見つからず、0x74 プロパティ値通知(応答要)の場合は電文破棄 */
     886                        if (!a_prc && (p_esv->edata.esv == ESV_INFC)) {
     887                                a_prc = true;
     888                        }
    817889                }
    818890        }
     
    832904                ECN_CAP_PUT("redirect ecn_svc_mailboxid → ecn_api_mailboxid (esv:0x%02X)",
    833905                        p_esv->edata.esv);
    834                 fa_fbs_id.ptr->hdr.target = ENOD_API_ID;
     906                fa_fbs_id.ptr->hdr.target.id = ENOD_API_ID;
    835907                a_ret = psnd_dtq(ecn_api_mailboxid, (intptr_t)fa_fbs_id.ptr);
    836908                if (a_ret != E_OK) {
     
    899971                        break;
    900972                }
    901                 fa_fbs_id.ptr->hdr.reply = ENOD_MULTICAST_ID;
     973                fa_fbs_id.ptr->hdr.reply.id = ENOD_MULTICAST_ID;
    902974                _ecn_tsk_eoj_get(p_obj, eobjatr, false, (EPC_RULE_GET|EPC_RULE_ANNO), fa_fbs_id, ESV_INF, ESV_INF_SNA); /* 0x73; 0x53 */
    903975                result = 0;
     
    919991        case ESV_INFC:
    920992                if (!p_sobj)
    921                         _ecn_tsk_eoj_res(fa_fbs_id, ESV_INFC_RES, ESV_INFC_RES); /* 0x74; 0 */
     993                        /* 送信元が未知の他ノードであった場合、応答を返す */
     994                        _ecn_tsk_eoj_res(fa_fbs_id, ESV_INFC_RES, ESV_INFC_RES); /* 0x7A; 0x7A */
    922995                else if (fromapp)
     996                        /* アプリケーションからの要求の場合、プロパティ値通知(応答要)を送信する */
    923997                        _ecn_tsk_eoj_get(p_sobj, sobjatr, true, (EPC_RULE_GET|EPC_RULE_ANNO), fa_fbs_id, ESV_INFC, ESV_NOP); /* 0x74; 0 */
    924998                else
    925                         _ecn_tsk_eoj_set(p_sobj, sobjatr, fromapp, true, fa_fbs_id, ESV_INFC_RES, ESV_INFC_RES, &a_fbs_anno); /* 0x7A; 0 */
     999                        /* 送信元が既知の他ノードであった場合、プロパティ値を更新し応答を返す */
     1000                        _ecn_tsk_eoj_set(p_sobj, sobjatr, fromapp, true, fa_fbs_id, ESV_INFC_RES, ESV_INFC_RES, &a_fbs_anno); /* 0x7A; 0x7A */
    9261001                result = 0;
    9271002                break;
     
    10301105        }
    10311106        ECN_DBG_PUT("_ecn_tsk_eoj_get_property(0x%02X-0x%02X-0x%02X, epc:0x%02X) not found.",
    1032                 fp_obj->eojx1, fp_obj->eojx2, fp_obj->eojx3,
    1033                 fa_epc);
     1107                fp_obj->eojx1, fp_obj->eojx2, fp_obj->eojx3, fa_epc);
    10341108
    10351109        return NULL;
     
    10441118                return -1;
    10451119
    1046         ECN_DBG_PUT("_ecn_tsk_eoj_set_edt(epc:0x%02X) call eprpset()",
    1047                 fp_prp->eprpcd);
     1120        ECN_DBG_PUT("_ecn_tsk_eoj_set_edt(epc:0x%02X) call eprpset()", fp_prp->eprpcd);
    10481121
    10491122        return fp_prp->eprpset(fp_prp, fp_src, fa_srcsz, fa_anno);
     
    10581131                return -1;
    10591132
    1060         ECN_DBG_PUT("_ecn_tsk_eoj_get_edt(epc:0x%02X) call eprpget()",
    1061                 fp_prp->eprpcd);
     1133        ECN_DBG_PUT("_ecn_tsk_eoj_get_edt(epc:0x%02X) call eprpget()", fp_prp->eprpcd);
    10621134
    10631135        return fp_prp->eprpget(fp_prp, fp_dst, fp_prp->eprpsz);
     
    14281500{
    14291501        fa_rsp_fbs.ptr->hdr.type = ECN_MSG_ECHONET;
    1430         fa_rsp_fbs.ptr->hdr.sender = ENOD_LOCAL_ID;
    1431         fa_rsp_fbs.ptr->hdr.target = fp_req_ptr->hdr.reply;
    1432         fa_rsp_fbs.ptr->hdr.reply = ENOD_LOCAL_ID;
     1502        fa_rsp_fbs.ptr->hdr.sender.id = ENOD_LOCAL_ID;
     1503        fa_rsp_fbs.ptr->hdr.target.id = fp_req_ptr->hdr.reply.id;
     1504        fa_rsp_fbs.ptr->hdr.reply.id = ENOD_LOCAL_ID;
    14331505}
    14341506
     
    15971669                /* 設定処理失敗 */
    15981670                ((T_EDATA *)a_fbs_res.ptr)->hdr.edata.esv = fa_sna_esv;
     1671
     1672                /* 不可応答の場合は個別送信する */
     1673                if (a_fbs_res.ptr->hdr.target.id == ENOD_MULTICAST_ID) {
     1674                        a_fbs_res.ptr->hdr.target.id = fa_fbs_id.ptr->hdr.sender.id;
     1675                }
    15991676        }
    16001677        /* 応答送信 */
     
    19282005        /* 要求電文設定 */
    19292006        a_fbs_id.ptr->hdr.type = ECN_MSG_USER_BREAK;
    1930         a_fbs_id.ptr->hdr.sender = ENOD_API_ID;
    1931         a_fbs_id.ptr->hdr.target = ENOD_API_ID;
    1932         a_fbs_id.ptr->hdr.reply = ENOD_API_ID;
     2007        a_fbs_id.ptr->hdr.sender.id = ENOD_API_ID;
     2008        a_fbs_id.ptr->hdr.target.id = ENOD_API_ID;
     2009        a_fbs_id.ptr->hdr.reply.id = ENOD_API_ID;
    19332010
    19342011        if (0 < fa_size && p_dat) {
     
    19762053
    19772054        req.ptr->hdr.type = ECN_MSG_INTERNAL;
    1978         req.ptr->hdr.sender_mbxid = sender;
    1979         req.ptr->hdr.target_mbxid = ecn_svc_mailboxid;
    1980         req.ptr->hdr.reply_mbxid = sender;
     2055        req.ptr->hdr.sender.mbxid = sender;
     2056        req.ptr->hdr.target.mbxid = ecn_svc_mailboxid;
     2057        req.ptr->hdr.reply.mbxid = sender;
    19812058
    19822059        *pk_req = req;
     
    20052082
    20062083        res.ptr->hdr.type = ECN_MSG_INTERNAL;
    2007         res.ptr->hdr.sender_mbxid = ecn_svc_mailboxid;
    2008         res.ptr->hdr.target_mbxid = req.ptr->hdr.reply_mbxid;
    2009         res.ptr->hdr.reply_mbxid = ecn_svc_mailboxid;
     2084        res.ptr->hdr.sender.mbxid = ecn_svc_mailboxid;
     2085        res.ptr->hdr.target.mbxid = req.ptr->hdr.reply.mbxid;
     2086        res.ptr->hdr.reply.mbxid = ecn_svc_mailboxid;
    20102087
    20112088        *pk_res = res;
  • uKadecot/trunk/ecnl_ssp/echonet_uip_task.c

    r262 r265  
    127127        }
    128128        a_fbs_id.ptr->hdr.type = ECN_MSG_ECHONET;
    129         a_fbs_id.ptr->hdr.target = ENOD_LOCAL_ID;
    130         a_fbs_id.ptr->hdr.sender = ENOD_NOT_MATCH_ID;
     129        a_fbs_id.ptr->hdr.target.id = ENOD_LOCAL_ID;
     130        a_fbs_id.ptr->hdr.sender.id = ENOD_NOT_MATCH_ID;
    131131
    132132        /* IPアドレスからリモートECHONETノードへ変換 */
     
    137137        } else {
    138138                /* 送信元ECHONETノードを記録 */
    139                 a_fbs_id.ptr->hdr.sender = a_enod_id;
    140         }
    141         a_fbs_id.ptr->hdr.reply = a_fbs_id.ptr->hdr.sender;
     139                a_fbs_id.ptr->hdr.sender.id = a_enod_id;
     140        }
     141        a_fbs_id.ptr->hdr.reply.id = a_fbs_id.ptr->hdr.sender.id;
    142142
    143143        /* echonet_taskに送る */
     
    301301
    302302        req.ptr->hdr.type = ECN_MSG_INTERNAL;
    303         req.ptr->hdr.sender_mbxid = sender;
    304         req.ptr->hdr.target_mbxid = ecn_udp_mailboxid;
    305         req.ptr->hdr.reply_mbxid = sender;
     303        req.ptr->hdr.sender.mbxid = sender;
     304        req.ptr->hdr.target.mbxid = ecn_udp_mailboxid;
     305        req.ptr->hdr.reply.mbxid = sender;
    306306
    307307        *pk_req = req;
     
    330330
    331331        res.ptr->hdr.type = ECN_MSG_INTERNAL;
    332         res.ptr->hdr.sender_mbxid = ecn_udp_mailboxid;
    333         res.ptr->hdr.target_mbxid = req.ptr->hdr.reply_mbxid;
    334         res.ptr->hdr.reply_mbxid = ecn_udp_mailboxid;
     332        res.ptr->hdr.sender.mbxid = ecn_udp_mailboxid;
     333        res.ptr->hdr.target.mbxid = req.ptr->hdr.reply.mbxid;
     334        res.ptr->hdr.reply.mbxid = ecn_udp_mailboxid;
    335335
    336336        *pk_res = res;
     
    395395                }
    396396
    397                 a_ret = psnd_dtq(buf.ptr->hdr.target_mbxid, (intptr_t)buf.ptr);
     397                a_ret = psnd_dtq(buf.ptr->hdr.target.mbxid, (intptr_t)buf.ptr);
    398398                if (a_ret != E_OK) {
    399399                        _ecn_fbs_del(buf);
     
    418418        }
    419419
    420         a_ret = psnd_dtq(buf.ptr->hdr.target_mbxid, (intptr_t)buf.ptr);
     420        a_ret = psnd_dtq(buf.ptr->hdr.target.mbxid, (intptr_t)buf.ptr);
    421421        if (a_ret != E_OK) {
    422422                _ecn_fbs_del(buf);
     
    441441        a_dst.portno = 0;
    442442        /* 送信先IPアドレス */
    443         a_ret = udp_get_ip(&a_dst, fbs_id.ptr->hdr.target);
     443        a_ret = udp_get_ip(&a_dst, fbs_id.ptr->hdr.target.id);
    444444        if (!a_ret) {
    445445                ECN_DBG_PUT("[UDP TSK] echonet-node 0x%02X-0x%02X-0x%02X → udp dest(%s)",
  • uKadecot/trunk/kadecot/wamp_dealer.c

    r264 r265  
    291291                static const char setInitParams[] = "procedure.setInitParams";
    292292                static const char getInitParams[] = "procedure.getInitParams";
     293                value = &value[sizeof(jpToppersEcnl) - 1];
    293294
    294295                if (strncmp(getDeviceInfo, value, sizeof(getDeviceInfo) - 1) == 0) {
  • uKadecot/trunk/src/ukadecot/main.c

    r158 r265  
    10941094                }
    10951095
    1096                 ret = psnd_dtq(req.ptr->hdr.target_mbxid, (intptr_t)req.ptr);
     1096                ret = psnd_dtq(req.ptr->hdr.target.mbxid, (intptr_t)req.ptr);
    10971097                if (ret != E_OK) {
    10981098                        syslog(LOG_ERROR, "psnd_dtq");
     
    11541154        }
    11551155
    1156         ret = psnd_dtq(req.ptr->hdr.target_mbxid, (intptr_t)req.ptr);
     1156        ret = psnd_dtq(req.ptr->hdr.target.mbxid, (intptr_t)req.ptr);
    11571157        if (ret != E_OK) {
    11581158                syslog(LOG_ERROR, "psnd_dtq");
     
    12121212        }
    12131213
    1214         ret = psnd_dtq(req.ptr->hdr.target_mbxid, (intptr_t)req.ptr);
     1214        ret = psnd_dtq(req.ptr->hdr.target.mbxid, (intptr_t)req.ptr);
    12151215        if (ret != E_OK) {
    12161216                syslog(LOG_ERROR, "psnd_dtq");
Note: See TracChangeset for help on using the changeset viewer.