Ignore:
Timestamp:
Jul 23, 2015, 3:21:02 PM (9 years ago)
Author:
coas-nagasima
Message:

ECHONET Lite規格に準拠していない動作を修正。
WebSocketの接続先URLを/webapi.ashxから/webapiに変更。
DHCPのリトライ処理が行われていなかったのを修正。
DHCPの有効/無効設定を追加し、固定IPアドレスを設定できるよう変更。

File:
1 edited

Legend:

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

    r108 r125  
    157157static void _ecn_tsk_ecn_msg(intptr_t fa_exinf, ECN_FBS_ID fa_fbs_id);
    158158
    159 static void _ecn_tsk_eoj_set(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_update,
     159static void _ecn_tsk_eoj_set(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp, bool_t fa_update,
    160160        ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv,
    161161        ECN_FBS_ID *fa_fbs_anno);
     
    164164static void _ecn_tsk_eoj_res(ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv,
    165165        ECN_SRV_CODE fa_sna_esv);
    166 static void _ecn_tsk_eoj_set_get(const EOBJINIB *fp_obj, ATR fa_eobjatr,
     166static void _ecn_tsk_eoj_set_get(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp,
    167167        ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv,
    168168        ECN_FBS_ID *fa_fbs_anno);
    169 static void _ecn_tsk_eoj_set_get_res(const EOBJINIB *fp_obj, ATR fa_eobjatr,
     169static void _ecn_tsk_eoj_set_get_res(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp,
    170170        ECN_FBS_ID fa_fbs_id, ECN_FBS_ID *fa_fbs_anno);
    171171
     
    775775                if ((p_eoj->eojx1 == EOJ_X1_PROFILE)
    776776                        && (p_eoj->eojx2 == EOJ_X2_NODE_PROFILE)) {
    777                         /* 電文処理実行 */
    778                         if (_ecn_tsk_ecn_msg_main(fa_fbs_id, p_nod->profile, eobjatr, p_sobj, sobjatr) == 1)
    779                                 a_fwd = true;
    780                         a_prc = true;
     777                        if ((p_eoj->eojx3 == p_nod->profile->eojx3)
     778                                || (p_eoj->eojx3 == 0)) {
     779                                /* 電文処理実行 */
     780                                if (_ecn_tsk_ecn_msg_main(fa_fbs_id, p_nod->profile, eobjatr, p_sobj, sobjatr) == 1)
     781                                        a_fwd = true;
     782                                a_prc = true;
     783                        }
     784                        /* 0x74 プロパティ値通知(応答要)の場合処理したことにする */
     785                        else if (p_esv->edata.esv == ESV_INFC) {
     786                                a_prc = true;
     787                        }
    781788                }
    782789                /* 機器オブジェクトの場合 */
     
    843850        T_ECN_EDT_HDR   *p_esv;
    844851        ECN_FBS_ID              a_fbs_anno = { NULL };
     852        bool_t fromapp = sobjatr == EOBJ_LOCAL_NODE;
    845853
    846854        p_esv = &((T_EDATA *)fa_fbs_id.ptr)->hdr;
     
    855863                        break;
    856864                }
    857                 _ecn_tsk_eoj_set(p_obj, eobjatr, false, fa_fbs_id, ESV_NOP, ESV_SET_I_SNA, &a_fbs_anno);        /* 0; 0x50 */
     865                _ecn_tsk_eoj_set(p_obj, eobjatr, fromapp, false, fa_fbs_id, ESV_NOP, ESV_SET_I_SNA, &a_fbs_anno);       /* 0; 0x50 */
    858866                result = 0;
    859867                break;
     
    867875                        break;
    868876                }
    869                 _ecn_tsk_eoj_set(p_obj, eobjatr, false, fa_fbs_id, ESV_SET_RES, ESV_SET_C_SNA, &a_fbs_anno); /* 0x71; 0x51 */
     877                _ecn_tsk_eoj_set(p_obj, eobjatr, fromapp, false, fa_fbs_id, ESV_SET_RES, ESV_SET_C_SNA, &a_fbs_anno); /* 0x71; 0x51 */
    870878                result = 0;
    871879                break;
     
    904912                        break;
    905913                }
    906                 _ecn_tsk_eoj_set_get(p_obj, eobjatr, fa_fbs_id, ESV_SET_GET_RES, ESV_SET_GET_SNA, &a_fbs_anno); /* 0x7E; 0x5E */
     914                _ecn_tsk_eoj_set_get(p_obj, eobjatr, fromapp, fa_fbs_id, ESV_SET_GET_RES, ESV_SET_GET_SNA, &a_fbs_anno); /* 0x7E; 0x5E */
    907915                result = 0;
    908916                break;
     
    912920                if (!p_sobj)
    913921                        _ecn_tsk_eoj_res(fa_fbs_id, ESV_INFC_RES, ESV_INFC_RES); /* 0x74; 0 */
    914                 else if (sobjatr == EOBJ_LOCAL_NODE)
     922                else if (fromapp)
    915923                        _ecn_tsk_eoj_get(p_sobj, sobjatr, true, (EPC_RULE_GET|EPC_RULE_ANNO), fa_fbs_id, ESV_INFC, ESV_NOP); /* 0x74; 0 */
    916924                else
    917                         _ecn_tsk_eoj_set(p_sobj, sobjatr, true, fa_fbs_id, ESV_INFC_RES, ESV_INFC_RES, &a_fbs_anno); /* 0x7A; 0 */
     925                        _ecn_tsk_eoj_set(p_sobj, sobjatr, fromapp, true, fa_fbs_id, ESV_INFC_RES, ESV_INFC_RES, &a_fbs_anno); /* 0x7A; 0 */
    918926                result = 0;
    919927                break;
     
    939947                        break;
    940948                }
    941                 _ecn_tsk_eoj_set(p_sobj, sobjatr, true, fa_fbs_id, ESV_NOP, ESV_NOP, &a_fbs_anno); /* 0; 0 */
     949                _ecn_tsk_eoj_set(p_sobj, sobjatr, fromapp, true, fa_fbs_id, ESV_NOP, ESV_NOP, &a_fbs_anno); /* 0; 0 */
    942950                result = 1;
    943951                break;
     
    952960                        break;
    953961                }
    954                 _ecn_tsk_eoj_set(p_sobj, sobjatr, true, fa_fbs_id, ESV_NOP, ESV_NOP, &a_fbs_anno); /* 0; 0 */
     962                _ecn_tsk_eoj_set(p_sobj, sobjatr, fromapp, true, fa_fbs_id, ESV_NOP, ESV_NOP, &a_fbs_anno); /* 0; 0 */
    955963                result = 1;
    956964                break;
     
    965973                        break;
    966974                }
    967                 _ecn_tsk_eoj_set_get_res(p_sobj, sobjatr, fa_fbs_id, &a_fbs_anno); /* 0x7A; 0 */
     975                _ecn_tsk_eoj_set_get_res(p_sobj, sobjatr, fromapp, fa_fbs_id, &a_fbs_anno); /* 0x7A; 0 */
    968976                result = 1;
    969977                break;
     
    11161124}
    11171125
    1118 static ER _ecn_tsk_eoj_set_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_update,
     1126static ER _ecn_tsk_eoj_set_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp, bool_t fa_update,
    11191127        ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, ECN_FBS_ID *fa_fbs_anno, int a_count,
    11201128        int *p_sw_ok);
    11211129/* プロパティ値書き込み実行 */
    1122 static ER _ecn_tsk_eoj_set_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_update,
     1130static ER _ecn_tsk_eoj_set_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp, bool_t fa_update,
    11231131        ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, ECN_FBS_ID *fa_fbs_anno, int a_count,
    11241132        int *p_sw_ok)
     
    11471155                a_eprp = _ecn_tsk_eoj_get_property(fp_obj, a_prp.epc);
    11481156                if ((a_eprp != NULL)
    1149                         && (fa_update || (((a_eprp->eprpatr & EPC_RULE_SET) != 0) || (fa_eobjatr == EOBJ_LOCAL_NODE)))) {
     1157                        && (fa_update || (((a_eprp->eprpatr & EPC_RULE_SET) != 0) || fa_fromapp))) {
    11501158                        a_anno = (fa_eobjatr == EOBJ_LOCAL_NODE) && ((a_eprp->eprpatr & EPC_ANNOUNCE) != 0);
    11511159                        a_update = a_anno;
     
    14261434
    14271435/* プロパティ値書き込み要求 */
    1428 static void _ecn_tsk_eoj_set(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_update,
     1436static void _ecn_tsk_eoj_set(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp, bool_t fa_update,
    14291437        ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv,
    14301438        ECN_FBS_ID *fa_fbs_anno)
     
    14791487
    14801488        /* プロパティ値書き込み実行 */
    1481         a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, fa_update, fa_fbs_id, a_fbs_res,
     1489        a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, fa_fromapp, fa_update, fa_fbs_id, a_fbs_res,
    14821490                fa_fbs_anno, p_req_esv->edata.opc, &a_sw_ok);
    14831491        if (a_ret)
     
    16951703}
    16961704
    1697 static void _ecn_tsk_eoj_set_get(const EOBJINIB *fp_obj, ATR fa_eobjatr,
     1705static void _ecn_tsk_eoj_set_get(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp,
    16981706        ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv,
    16991707        ECN_FBS_ID *fa_fbs_anno)
     
    17451753
    17461754        /* プロパティ値書き込み実行 */
    1747         a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, false, fa_fbs_id, a_fbs_res,
     1755        a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, fa_fromapp, false, fa_fbs_id, a_fbs_res,
    17481756                fa_fbs_anno, a_count, &a_sw_ok);
    17491757        if (a_ret) {
     
    18191827
    18201828static void _ecn_tsk_eoj_set_get_res(const EOBJINIB *fp_obj, ATR fa_eobjatr,
    1821         ECN_FBS_ID fa_fbs_id, ECN_FBS_ID *fa_fbs_anno)
     1829        bool_t fa_fromapp, ECN_FBS_ID fa_fbs_id, ECN_FBS_ID *fa_fbs_anno)
    18221830{
    18231831        T_ECN_EDT_HDR   const *p_req_esv = &((T_EDATA *)fa_fbs_id.ptr)->hdr;
     
    18721880
    18731881        /* プロパティ値読み出し応答の書き込み実行 */
    1874         a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, true, fa_fbs_id, a_fbs_dmy,
     1882        a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, fa_fromapp, true, fa_fbs_id, a_fbs_dmy,
    18751883                                                                  fa_fbs_anno, a_count, &a_sw_ok);
    18761884        if (a_ret) {
Note: See TracChangeset for help on using the changeset viewer.