From 5727cf0b9b54da0a191dd1e23cb5abf21320fbff Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期一, 25 十一月 2019 10:34:17 +0800
Subject: [PATCH] IOS使用新的项目名称

---
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs |  104 +++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 99 insertions(+), 5 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs
index 6ae148a..1a2bc3b 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDeviceAttributeLogic.cs
@@ -50,7 +50,7 @@
         #region 鈻� 娣诲姞浜嬩欢___________________________
 
         /// <summary>
-        /// 娣诲姞鑾峰彇璁惧灞炴�х殑浜嬩欢(灞炴�т笂鎶ョ殑瀵硅薄锛歞evice.DeviceStatusReport)
+        /// 娣诲姞鑾峰彇璁惧灞炴�х殑浜嬩欢(鎺ㄩ�佸凡缁忓己鍒舵寚瀹氳繍琛屼簬涓荤嚎绋嬶紝灞炴�т笂鎶ョ殑瀵硅薄锛歞evice.DeviceStatusReport)
         /// </summary>
         /// <param name="mainKeys">鏍囪瘑浜嬩欢鐨勪富閿�(鍙互闅忎究濉�,涓昏鏄拡瀵瑰涓晫闈竴璧蜂娇鐢ㄧ殑鎯呭喌)</param>
         /// <param name="comand">鍛戒护鍖哄垎,姣斿锛欴eviceStatusReport,IASInfoReport绛夌瓑</param>
@@ -146,11 +146,24 @@
                     list.Add(this.dicEvent[keys]);
                 }
                 //鏈夊彲鑳藉湪鍥炶皟鍑芥暟涓Щ闄や簡浜嬩欢锛屽鑷存姤閿欙紝鎵�浠ュ厛鏀堕泦锛屽啀璋冪敤
-                foreach (var action in list)
+                Application.RunOnMainThread(() =>
                 {
-                    action(common);
-                }
-                list.Clear();
+                    foreach (var action in list)
+                    {
+                        try
+                        {
+                            action?.Invoke(common);
+                        }
+                        catch (Exception ex)
+                        {
+                            //Log鍑哄姏
+                            string msg = "褰撳墠婵�娲荤殑鐣岄潰[" + UserCenterResourse.NowActionFormID + "]";
+                            HdlLogLogic.Current.WriteLog(-1, msg);
+                            HdlLogLogic.Current.WriteLog(ex);
+                        }
+
+                    }
+                });
             }
         }
 
@@ -190,5 +203,86 @@
         }
 
         #endregion
+
+        #region 鈻� 鍐欏叆璁惧灞炴�______________________
+
+        /// <summary>
+        /// 璁剧疆绌鸿皟鐨勮嚜瀹氫箟妯″紡
+        /// </summary>
+        /// <param name="device">璁惧瀵硅薄</param>
+        /// <param name="clusterId">闀濱D</param>
+        /// <param name="attributeId">灞炴�D</param>
+        /// <param name="attributeDataType">鏁版嵁绫诲瀷</param>
+        /// <param name="attributeData">闇�瑕佸啓鍏ョ殑鏁版嵁</param>
+        /// <returns></returns>
+        public async System.Threading.Tasks.Task<CommonDevice.SetWritableValueResponAllData> WriteDeviceAttribute(CommonDevice device, int clusterId, int attributeId, int attributeDataType, int attributeData)
+        {
+            var MyGateway = device.Gateway;
+            if (MyGateway == null)
+            {
+                return null;
+            }
+
+            CommonDevice.SetWritableValueResponAllData d = null;
+            Action<string, string> action = (topic, message) =>
+            {
+                var gatewayID = topic.Split('/')[0];
+                var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+
+                if (topic == gatewayID + "/" + "Error_Respon")
+                {
+                    var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<ZbGateway.ErrorResponData>(jobject["Data"].ToString());
+                    if (temp == null)
+                    {
+                        d = new CommonDevice.SetWritableValueResponAllData { errorMessageBase = "缃戝叧閿欒鍥炲锛屼笖鏁版嵁鏄┖" };
+                    }
+                    else
+                    {
+                        d = new CommonDevice.SetWritableValueResponAllData { errorResponData = temp, errorMessageBase = HdlCheckLogic.Current.CheckCommonErrorCode(temp.Error) };
+                    }
+                }
+
+                if (topic == gatewayID + "/" + "SetWritableValue_Respon")
+                {
+                    var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.SetWritableValueResponData>(jobject["Data"].ToString());
+                    if (tempData == null)
+                    {
+                        d = new CommonDevice.SetWritableValueResponAllData { errorMessageBase = "缃戝叧杩斿洖鐨勬暟鎹负绌�" };
+                    }
+                    else
+                    {
+                        d = new CommonDevice.SetWritableValueResponAllData { setWritableValueResponData = tempData };
+                    }
+                }
+            };
+            MyGateway.Actions += action;
+            try
+            {
+                var jObject = new Newtonsoft.Json.Linq.JObject { { "DeviceAddr", device.DeviceAddr }, { "Epoint", device.DeviceEpoint }, { "Cluster_ID", clusterId }, { "Command", 120 } };
+                var data = new Newtonsoft.Json.Linq.JObject { { "Undivided", 0 }, { "AttributeId", attributeId }, { "AttributeDataType", attributeDataType }, { "AttributeData", attributeData } };
+                jObject.Add("Data", data);
+                MyGateway.Send("SetWritableValue", jObject.ToString());
+            }
+            catch { }
+
+            var timeOut = 0;
+            while (timeOut <= 30)
+            {
+                await System.Threading.Tasks.Task.Delay(100);
+                if (d != null)
+                {
+                    break;
+                }
+                timeOut++;
+            }
+            if (timeOut > 30 && d == null)
+            {
+                d = new CommonDevice.SetWritableValueResponAllData { errorMessageBase = " 鍥炲瓒呮椂锛岃閲嶆柊鎿嶄綔" };
+            }
+            MyGateway.Actions -= action;
+            return d;
+        }
+
+        #endregion
     }
 }

--
Gitblit v1.8.0