From e747e6d8524e3146bb48dc304a713f309966b1c6 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期二, 19 五月 2020 13:10:03 +0800
Subject: [PATCH] 新版本

---
 ZigbeeApp/Shared/Common/Device.cs |  115 +++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 102 insertions(+), 13 deletions(-)

diff --git a/ZigbeeApp/Shared/Common/Device.cs b/ZigbeeApp/Shared/Common/Device.cs
index 00c334c..8426b1a 100755
--- a/ZigbeeApp/Shared/Common/Device.cs
+++ b/ZigbeeApp/Shared/Common/Device.cs
@@ -292,9 +292,9 @@
                     //鍦ㄧ鐐瑰悕瀛楃殑鍚庨潰闄勫姞銆愬洖璺�戝瓧鏍�
                     dName += "(" + device.DeviceEpoint + Language.StringByID(R.MyInternationalizationString.uDeviceCircuit) + ")";
 
-                    HdlThreadLogic.Current.RunThread(async () =>
+                    HdlThreadLogic.Current.RunThread(() =>
                     {
-                        await this.ReName(device, dName, ShowErrorMode.NO);
+                        this.ReName(device, dName, ShowErrorMode.NO);
                     });
                 }
             }
@@ -431,7 +431,7 @@
         /// <param name="device">璁惧瀵硅薄</param>
         /// <param name="newName">鏂板悕瀛�</param>
         /// <param name="mode">鏄惁鏄剧ず閿欒</param>
-        public async Task<bool> ReName(CommonDevice device, string newName, ShowErrorMode mode = ShowErrorMode.YES)
+        public bool ReName(CommonDevice device, string newName, ShowErrorMode mode = ShowErrorMode.YES)
         {
             //鍏堝埆绠¢偅涔堝锛屾洿鏀瑰悕瀛楀悗锛屽埛鏂拌澶囩紦瀛�
             this.SetEpointName(device, newName);
@@ -450,7 +450,7 @@
             //鎴愬憳鍙兘淇敼鑷繁鏈湴鐨勫悕瀛�
             if (UserCenterResourse.UserInfo.AuthorityNo != 3)
             {
-                var result = await device.RenameDeviceNameAsync(device.DeviceAddr, device.DeviceEpoint, newName);
+                var result = this.RenameDeviceNameAsync(device, newName);
                 if (result == null || result.deviceRenameData == null || result.deviceRenameData.Result == 1)
                 {
                     //璁惧鍚嶇О淇敼澶辫触
@@ -464,8 +464,6 @@
                     }
                     return false;
                 }
-                //澶囦唤鏁版嵁
-                await HdlGatewayLogic.Current.UpLoadDeviceBackupDataToGateway(device, GatewayBackupEnum.A绔偣鍚嶇О, newName);
             }
             //淇敼璁惧鍚嶅瓧鐨勮瘽,涓婚〉闇�瑕侀噸鏂板埛鏂�
             Phone.UserView.UserPage.Instance.RefreshForm = true;
@@ -478,7 +476,7 @@
         /// <param name="listDevice">璁惧瀵硅薄</param>
         /// <param name="newMacName">鏂板悕瀛�</param>
         /// <param name="mode">鏄惁鏄剧ず閿欒</param>
-        public async Task<bool> ReMacName(List<CommonDevice> listDevice, string newMacName, ShowErrorMode mode = ShowErrorMode.YES)
+        public bool ReMacName(List<CommonDevice> listDevice, string newMacName, ShowErrorMode mode = ShowErrorMode.YES)
         {
             if (listDevice.Count == 0)
             {
@@ -506,7 +504,7 @@
             if (UserCenterResourse.UserInfo.AuthorityNo != 3)
             {
                 //淇敼鐗╃悊鍚嶅瓧
-                var result = await device.RenameDeviceMacNameAsync(device.DeviceAddr, device.DeviceEpoint, newMacName);
+                var result = this.RenameDeviceMacNameAsync(device, newMacName);
                 if (result == null || result.renameDeviceMacNameData == null || result.renameDeviceMacNameData.Result != 0)
                 {
                     //璁惧鍚嶇О淇敼澶辫触
@@ -519,15 +517,13 @@
                     }
                     return false;
                 }
-                //澶囦唤鏁版嵁
-                await HdlGatewayLogic.Current.UpLoadDeviceBackupDataToGateway(device, GatewayBackupEnum.AMac鍚嶇О, newMacName);
                 //濡傛灉瀹冨彧鏈変竴涓洖璺�,鍒欐洿鏀圭鐐瑰悕瀛�
                 if (this.dicDeviceEpoint.ContainsKey(device.DeviceAddr) == true)
                 {
                     //鍙湁涓�涓鐐�
                     if (this.dicDeviceEpoint[device.DeviceAddr].Count == 1)
                     {
-                        return await this.ReName(device, newMacName);
+                        return this.ReName(device, newMacName);
                     }
                     //濡傛灉瀹冩湁涓や釜绔偣鏃�,pir浼犳劅鍣ㄧ壒娈婂鐞�
                     else if (this.dicDeviceEpoint[device.DeviceAddr].Count == 2)
@@ -539,7 +535,7 @@
                             {
                                 if (myDevice.Type == DeviceType.IASZone)
                                 {
-                                    return await this.ReName(myDevice, newMacName);
+                                    return this.ReName(myDevice, newMacName);
                                 }
                             }
                         }
@@ -547,6 +543,100 @@
                 }
             }
             return true;
+        }
+
+        ///<summary >
+        /// 淇敼璁惧mac鍚嶇О
+        /// <para>macName:璁惧鍚嶇О</para>
+        /// </summary>
+        private CommonDevice.RenameDeviceMacNameAllData RenameDeviceMacNameAsync(CommonDevice device, string macName)
+        {
+            //濡傛灉褰撳墠鏄櫄鎷熶綇瀹�
+            if (Common.Config.Instance.Home.IsVirtually == true)
+            {
+                return Phone.ModelData.DeviceModelDataLogic.Current.ReDeviceMacName(device, macName, "MacRename");
+            }
+
+            //鑾峰彇缂栬緫璁惧Mac鍚嶅瓧鐨勫懡浠ゅ瓧绗�
+            var sendData = this.GetReDeviceMacNameCommandText(device.DeviceAddr, device.DeviceEpoint, macName);
+            var result = HdlDeviceCommonLogic.Current.SendJobjectDataToGateway(device, "MacRename", sendData, "MacRename_Respon");
+            if (result.ErrorMsg != null || result.ErrorMsgDiv == 0)
+            {
+                return null;
+            }
+            //鍔犵紦瀛�
+            Phone.ModelData.DeviceModelDataLogic.Current.ReDeviceMacName(device, macName, "MacRename");
+
+            var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.RenameDeviceMacNameData>(result.ReceiptData);
+            return new CommonDevice.RenameDeviceMacNameAllData { renameDeviceMacNameData = tempData };
+        }
+
+        /// <summary>
+        /// 淇敼璁惧绔彛锛堟寜閿級鍚嶇О
+        /// </summary>
+        /// <param name="device">璁惧瀵硅薄</param>
+        /// <param name="deviceName">璁惧绔偣鍚嶅瓧</param>
+        /// <returns></returns>
+        private CommonDevice.DeviceRenameAllData RenameDeviceNameAsync(CommonDevice device, string deviceName)
+        {
+            //濡傛灉褰撳墠鏄櫄鎷熶綇瀹�
+            if (Common.Config.Instance.Home.IsVirtually == true)
+            {
+                return Phone.ModelData.DeviceModelDataLogic.Current.ReDeviceEpointName(device, deviceName, "DeviceRename");
+            }
+            //鑾峰彇缂栬緫璁惧绔偣鍚嶅瓧鐨勫懡浠ゅ瓧绗�
+            var sendData = this.GetReDeviceEpointNameCommandText(device.DeviceAddr, device.DeviceEpoint, deviceName);
+            var result = HdlDeviceCommonLogic.Current.SendJobjectDataToGateway(device, "DeviceRename", sendData, "DeviceRenameRespon");
+            if (result.ErrorMsg != null || result.ErrorMsgDiv == 0)
+            {
+                return null;
+            }
+            //鍔犵紦瀛�
+            Phone.ModelData.DeviceModelDataLogic.Current.ReDeviceEpointName(device, deviceName, "DeviceRename");
+
+            var tempData = Newtonsoft.Json.JsonConvert.DeserializeObject<CommonDevice.DeviceRenameResponseData>(result.ReceiptData);
+            return new CommonDevice.DeviceRenameAllData { deviceRenameData = tempData };
+        }
+
+        /// <summary>
+        /// 鑾峰彇缂栬緫璁惧Mac鍚嶅瓧鐨勫懡浠ゅ瓧绗�
+        /// </summary>
+        /// <param name="deviceAddr"></param>
+        /// <param name="deviceEpoint"></param>
+        /// <param name="deviceName"></param>
+        /// <returns></returns>
+        public string GetReDeviceMacNameCommandText(string deviceAddr, int deviceEpoint, string deviceName)
+        {
+            var bytes = new byte[64];
+            var reamarkGwBytes = Encoding.UTF8.GetBytes(deviceName);
+            System.Array.Copy(reamarkGwBytes, 0, bytes, 0, 64 < reamarkGwBytes.Length ? 64 : reamarkGwBytes.Length);
+            deviceName = Encoding.UTF8.GetString(bytes);
+
+            var jObject = new Newtonsoft.Json.Linq.JObject { { "DeviceAddr", deviceAddr }, { "Epoint", deviceEpoint }, { "Cluster_ID", 0 }, { "Command", 100 } };
+            var data = new Newtonsoft.Json.Linq.JObject { { "MacName", deviceName } };
+            jObject.Add("Data", data);
+            return jObject.ToString();
+        }
+
+        /// <summary>
+        /// 鑾峰彇缂栬緫璁惧绔偣鍚嶅瓧鐨勫懡浠ゅ瓧绗�
+        /// </summary>
+        /// <param name="deviceAddr"></param>
+        /// <param name="deviceEpoint"></param>
+        /// <param name="deviceName"></param>
+        /// <returns></returns>
+        public string GetReDeviceEpointNameCommandText(string deviceAddr, int deviceEpoint, string deviceName)
+        {
+            var bytes = new byte[64];
+            var reamarkGwBytes = Encoding.UTF8.GetBytes(deviceName);
+            System.Array.Copy(reamarkGwBytes, 0, bytes, 0, 64 < reamarkGwBytes.Length ? 64 : reamarkGwBytes.Length);
+            deviceName = Encoding.UTF8.GetString(bytes);
+
+            var jObject = new Newtonsoft.Json.Linq.JObject { { "DeviceAddr", deviceAddr }, { "Epoint", deviceEpoint }, { "Cluster_ID", 0 }, { "Command", 96 } };
+            var data = new Newtonsoft.Json.Linq.JObject { { "DeviceName", deviceName } };
+            jObject.Add("Data", data);
+
+            return jObject.ToString();
         }
 
         /// <summary>
@@ -1441,7 +1531,6 @@
             unSelectPath = imageFilePath;
             selectPath = imageSelectFilePath;
         }
-
 
         #endregion
 

--
Gitblit v1.8.0