Index: uKadecot/trunk/ecnl_ssp/echonet_task.c
===================================================================
--- uKadecot/trunk/ecnl_ssp/echonet_task.c	(revision 108)
+++ uKadecot/trunk/ecnl_ssp/echonet_task.c	(revision 125)
@@ -157,5 +157,5 @@
 static void _ecn_tsk_ecn_msg(intptr_t fa_exinf, ECN_FBS_ID fa_fbs_id);
 
-static void _ecn_tsk_eoj_set(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_update,
+static void _ecn_tsk_eoj_set(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp, bool_t fa_update,
 	ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv,
 	ECN_FBS_ID *fa_fbs_anno);
@@ -164,8 +164,8 @@
 static void _ecn_tsk_eoj_res(ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv,
 	ECN_SRV_CODE fa_sna_esv);
-static void _ecn_tsk_eoj_set_get(const EOBJINIB *fp_obj, ATR fa_eobjatr,
+static void _ecn_tsk_eoj_set_get(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp,
 	ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv,
 	ECN_FBS_ID *fa_fbs_anno);
-static void _ecn_tsk_eoj_set_get_res(const EOBJINIB *fp_obj, ATR fa_eobjatr,
+static void _ecn_tsk_eoj_set_get_res(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp,
 	ECN_FBS_ID fa_fbs_id, ECN_FBS_ID *fa_fbs_anno);
 
@@ -775,8 +775,15 @@
 		if ((p_eoj->eojx1 == EOJ_X1_PROFILE)
 			&& (p_eoj->eojx2 == EOJ_X2_NODE_PROFILE)) {
-			/* 電文処理実行 */
-			if (_ecn_tsk_ecn_msg_main(fa_fbs_id, p_nod->profile, eobjatr, p_sobj, sobjatr) == 1)
-				a_fwd = true;
-			a_prc = true;
+			if ((p_eoj->eojx3 == p_nod->profile->eojx3)
+				|| (p_eoj->eojx3 == 0)) {
+				/* 電文処理実行 */
+				if (_ecn_tsk_ecn_msg_main(fa_fbs_id, p_nod->profile, eobjatr, p_sobj, sobjatr) == 1)
+					a_fwd = true;
+				a_prc = true;
+			}
+			/* 0x74 プロパティ値通知（応答要）の場合処理したことにする */
+			else if (p_esv->edata.esv == ESV_INFC) {
+				a_prc = true;
+			}
 		}
 		/* 機器オブジェクトの場合 */
@@ -843,4 +850,5 @@
 	T_ECN_EDT_HDR	*p_esv;
 	ECN_FBS_ID		a_fbs_anno = { NULL };
+	bool_t fromapp = sobjatr == EOBJ_LOCAL_NODE;
 
 	p_esv = &((T_EDATA *)fa_fbs_id.ptr)->hdr;
@@ -855,5 +863,5 @@
 			break;
 		}
-		_ecn_tsk_eoj_set(p_obj, eobjatr, false, fa_fbs_id, ESV_NOP, ESV_SET_I_SNA, &a_fbs_anno);	/* 0; 0x50 */
+		_ecn_tsk_eoj_set(p_obj, eobjatr, fromapp, false, fa_fbs_id, ESV_NOP, ESV_SET_I_SNA, &a_fbs_anno);	/* 0; 0x50 */
 		result = 0;
 		break;
@@ -867,5 +875,5 @@
 			break;
 		}
-		_ecn_tsk_eoj_set(p_obj, eobjatr, false, fa_fbs_id, ESV_SET_RES, ESV_SET_C_SNA, &a_fbs_anno); /* 0x71; 0x51 */
+		_ecn_tsk_eoj_set(p_obj, eobjatr, fromapp, false, fa_fbs_id, ESV_SET_RES, ESV_SET_C_SNA, &a_fbs_anno); /* 0x71; 0x51 */
 		result = 0;
 		break;
@@ -904,5 +912,5 @@
 			break;
 		}
-		_ecn_tsk_eoj_set_get(p_obj, eobjatr, fa_fbs_id, ESV_SET_GET_RES, ESV_SET_GET_SNA, &a_fbs_anno); /* 0x7E; 0x5E */
+		_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 */
 		result = 0;
 		break;
@@ -912,8 +920,8 @@
 		if (!p_sobj)
 			_ecn_tsk_eoj_res(fa_fbs_id, ESV_INFC_RES, ESV_INFC_RES); /* 0x74; 0 */
-		else if (sobjatr == EOBJ_LOCAL_NODE)
+		else if (fromapp)
 			_ecn_tsk_eoj_get(p_sobj, sobjatr, true, (EPC_RULE_GET|EPC_RULE_ANNO), fa_fbs_id, ESV_INFC, ESV_NOP); /* 0x74; 0 */
 		else
-			_ecn_tsk_eoj_set(p_sobj, sobjatr, true, fa_fbs_id, ESV_INFC_RES, ESV_INFC_RES, &a_fbs_anno); /* 0x7A; 0 */
+			_ecn_tsk_eoj_set(p_sobj, sobjatr, fromapp, true, fa_fbs_id, ESV_INFC_RES, ESV_INFC_RES, &a_fbs_anno); /* 0x7A; 0 */
 		result = 0;
 		break;
@@ -939,5 +947,5 @@
 			break;
 		}
-		_ecn_tsk_eoj_set(p_sobj, sobjatr, true, fa_fbs_id, ESV_NOP, ESV_NOP, &a_fbs_anno); /* 0; 0 */
+		_ecn_tsk_eoj_set(p_sobj, sobjatr, fromapp, true, fa_fbs_id, ESV_NOP, ESV_NOP, &a_fbs_anno); /* 0; 0 */
 		result = 1;
 		break;
@@ -952,5 +960,5 @@
 			break;
 		}
-		_ecn_tsk_eoj_set(p_sobj, sobjatr, true, fa_fbs_id, ESV_NOP, ESV_NOP, &a_fbs_anno); /* 0; 0 */
+		_ecn_tsk_eoj_set(p_sobj, sobjatr, fromapp, true, fa_fbs_id, ESV_NOP, ESV_NOP, &a_fbs_anno); /* 0; 0 */
 		result = 1;
 		break;
@@ -965,5 +973,5 @@
 			break;
 		}
-		_ecn_tsk_eoj_set_get_res(p_sobj, sobjatr, fa_fbs_id, &a_fbs_anno); /* 0x7A; 0 */
+		_ecn_tsk_eoj_set_get_res(p_sobj, sobjatr, fromapp, fa_fbs_id, &a_fbs_anno); /* 0x7A; 0 */
 		result = 1;
 		break;
@@ -1116,9 +1124,9 @@
 }
 
-static ER _ecn_tsk_eoj_set_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_update,
+static ER _ecn_tsk_eoj_set_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp, bool_t fa_update,
 	ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, ECN_FBS_ID *fa_fbs_anno, int a_count,
 	int *p_sw_ok);
 /* プロパティ値書き込み実行 */
-static ER _ecn_tsk_eoj_set_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_update,
+static ER _ecn_tsk_eoj_set_main(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp, bool_t fa_update,
 	ECN_FBS_ID fa_fbs_id, ECN_FBS_ID a_fbs_res, ECN_FBS_ID *fa_fbs_anno, int a_count,
 	int *p_sw_ok)
@@ -1147,5 +1155,5 @@
 		a_eprp = _ecn_tsk_eoj_get_property(fp_obj, a_prp.epc);
 		if ((a_eprp != NULL)
-			&& (fa_update || (((a_eprp->eprpatr & EPC_RULE_SET) != 0) || (fa_eobjatr == EOBJ_LOCAL_NODE)))) {
+			&& (fa_update || (((a_eprp->eprpatr & EPC_RULE_SET) != 0) || fa_fromapp))) {
 			a_anno = (fa_eobjatr == EOBJ_LOCAL_NODE) && ((a_eprp->eprpatr & EPC_ANNOUNCE) != 0);
 			a_update = a_anno;
@@ -1426,5 +1434,5 @@
 
 /* プロパティ値書き込み要求	*/
-static void _ecn_tsk_eoj_set(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_update,
+static void _ecn_tsk_eoj_set(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp, bool_t fa_update,
 	ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv,
 	ECN_FBS_ID *fa_fbs_anno)
@@ -1479,5 +1487,5 @@
 
 	/* プロパティ値書き込み実行 */
-	a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, fa_update, fa_fbs_id, a_fbs_res,
+	a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, fa_fromapp, fa_update, fa_fbs_id, a_fbs_res,
 		fa_fbs_anno, p_req_esv->edata.opc, &a_sw_ok);
 	if (a_ret)
@@ -1695,5 +1703,5 @@
 }
 
-static void _ecn_tsk_eoj_set_get(const EOBJINIB *fp_obj, ATR fa_eobjatr,
+static void _ecn_tsk_eoj_set_get(const EOBJINIB *fp_obj, ATR fa_eobjatr, bool_t fa_fromapp,
 	ECN_FBS_ID fa_fbs_id, ECN_SRV_CODE fa_res_esv, ECN_SRV_CODE fa_sna_esv,
 	ECN_FBS_ID *fa_fbs_anno)
@@ -1745,5 +1753,5 @@
 
 	/* プロパティ値書き込み実行 */
-	a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, false, fa_fbs_id, a_fbs_res,
+	a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, fa_fromapp, false, fa_fbs_id, a_fbs_res,
 		fa_fbs_anno, a_count, &a_sw_ok);
 	if (a_ret) {
@@ -1819,5 +1827,5 @@
 
 static void _ecn_tsk_eoj_set_get_res(const EOBJINIB *fp_obj, ATR fa_eobjatr,
-	ECN_FBS_ID fa_fbs_id, ECN_FBS_ID *fa_fbs_anno)
+	bool_t fa_fromapp, ECN_FBS_ID fa_fbs_id, ECN_FBS_ID *fa_fbs_anno)
 {
 	T_ECN_EDT_HDR	const *p_req_esv = &((T_EDATA *)fa_fbs_id.ptr)->hdr;
@@ -1872,5 +1880,5 @@
 
 	/* プロパティ値読み出し応答の書き込み実行 */
-	a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, true, fa_fbs_id, a_fbs_dmy,
+	a_ret = _ecn_tsk_eoj_set_main(fp_obj, fa_eobjatr, fa_fromapp, true, fa_fbs_id, a_fbs_dmy,
 								  fa_fbs_anno, a_count, &a_sw_ok);
 	if (a_ret) {
