From 587c36e27131f2d028fcabc13b296a8de7470034 Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期三, 08 一月 2020 08:59:19 +0800
Subject: [PATCH] 2019.1.8
---
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDevicePanelLogic.cs | 193 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 191 insertions(+), 2 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDevicePanelLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDevicePanelLogic.cs
index ef8c355..34330b4 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDevicePanelLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDevicePanelLogic.cs
@@ -153,8 +153,8 @@
/// 璁剧疆璁惧浜害锛坲i鍙寒搴﹁皟鑺傦級
/// </summary>
/// <param name="panel">璁惧瀵硅薄</param>
- /// <param name="directionsLevel">鎸囩ず鐏寒搴� 0-100(鐜伴樁娈典笉鐢ㄨ繖涓�)</param>
- /// <param name="backlightLevel">鑳屽厜鐏寒搴� 0-100(ui鍙寒搴﹁皟鑺�)</param>
+ /// <param name="directionsLevel">0-100(杩欎釜鏄偣鍑诲悗鐨勫��)</param>
+ /// <param name="backlightLevel">0-100(杩欎釜鏄偣鍑诲墠鐨勫��)</param>
/// <returns></returns>
public async Task<bool> SetDeviceLightSettion(CommonDevice device, int directionsLevel, int backlightLevel)
{
@@ -544,6 +544,195 @@
#endregion
+ #region 鈻� 绠�绾﹂潰鏉块渿鍔ㄥ姛鑳絖__________________
+
+ /// <summary>
+ /// 鑾峰彇绠�绾﹂潰鏉块渿鍔ㄥ姛鑳界殑淇℃伅(null琛ㄧず鍑洪敊)
+ /// </summary>
+ /// <param name="device">鏌愪竴鍥炶矾</param>
+ /// <returns></returns>
+ public VibrationInfo GetPanelVibrationData(CommonDevice device)
+ {
+ var returnData = new VibrationInfo();
+ var gateway = device.Gateway;
+ if (gateway == null)
+ {
+ //閿欒:缃戝叧瀵硅薄涓㈠け
+ this.ShowTipMsg(Language.StringByID(R.MyInternationalizationString.uErrorGatewayLostMsg));
+ return null;
+ }
+ string checkTopic = HdlGatewayLogic.Current.GetGatewayId(gateway) + "/" + "ZbDataPassthrough";
+ bool canBreak = false;
+
+ Action<string, string> action = (topic, message) =>
+ {
+ if (topic == checkTopic)
+ {
+ try
+ {
+ var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+ string PassData = jobject["Data"]["PassData"].ToString();
+ if (PassData.Length != 18)
+ {
+ return;
+ }
+ string mytopic = PassData[4].ToString() + PassData[5].ToString() + PassData[2].ToString() + PassData[3].ToString();
+ if (mytopic != "0802")
+ {
+ return;
+ }
+ returnData.A闇囧姩浣胯兘 = PassData.Substring(10, 2) == "01" ? true : false;
+ returnData.A闇囧姩寮哄害 = Convert.ToInt32(PassData.Substring(12, 2), 16);
+ returnData.A闇囧姩鏃堕棿 = Convert.ToInt32(PassData.Substring(14, 4), 16);
+
+ canBreak = true;
+ }
+ catch { }
+ }
+ };
+ gateway.Actions += action;
+ try
+ {
+ var jObject = new Newtonsoft.Json.Linq.JObject { { "DeviceAddr", device.DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } };
+ var data = new Newtonsoft.Json.Linq.JObject { { "PassData", "050108110101" } };
+ jObject.Add("Data", data);
+ gateway.Send(("ClientDataPassthrough"), jObject.ToString());
+ }
+ catch { }
+
+ int TimeOut = 0;
+ while (canBreak == false && TimeOut < 60)
+ {
+ System.Threading.Thread.Sleep(100);
+ TimeOut++;
+ }
+ gateway.Actions -= action;
+
+ if (TimeOut >= 60)
+ {
+ //鑾峰彇闇囧姩鍙嶉閰嶇疆淇℃伅澶辫触
+ string errorMsg = Language.StringByID(R.MyInternationalizationString.uGetVibrationFeedbackSettionFail);
+ errorMsg = UserCenterLogic.CombineGatewayTimeOutMsg(errorMsg, null, "鍥炲瓒呮椂", false);
+ this.ShowTipMsg(errorMsg);
+ return null;
+ }
+ return returnData;
+ }
+
+ /// <summary>
+ /// 璁剧疆绠�绾﹂潰鏉块渿鍔ㄥ姛鑳界殑淇℃伅
+ /// </summary>
+ /// <param name="device">鏌愪竴鍥炶矾</param>
+ /// <param name="datainfo">璁剧疆鐨勪俊鎭�</param>
+ /// <returns></returns>
+ public bool SetPanelVibrationData(CommonDevice device, VibrationInfo datainfo)
+ {
+ var gateway = device.Gateway;
+ if (gateway == null)
+ {
+ //閿欒:缃戝叧瀵硅薄涓㈠け
+ this.ShowTipMsg(Language.StringByID(R.MyInternationalizationString.uErrorGatewayLostMsg));
+ return false;
+ }
+ string checkTopic = HdlGatewayLogic.Current.GetGatewayId(gateway) + "/" + "ZbDataPassthrough";
+ bool canBreak = false;
+
+ bool success = false;
+ Action<string, string> action = (topic, message) =>
+ {
+ if (topic == checkTopic)
+ {
+ try
+ {
+ var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+ if (jobject["DeviceAddr"].ToString() != device.DeviceAddr)
+ {
+ //涓嶆槸鍚屼竴涓笢瑗�
+ return;
+ }
+ string PassData = jobject["Data"]["PassData"].ToString();
+ if (PassData.Length != 16)
+ {
+ return;
+ }
+ string mytopic = PassData[4].ToString() + PassData[5].ToString() + PassData[2].ToString() + PassData[3].ToString();
+ if (mytopic != "0002")
+ {
+ return;
+ }
+ int command = Convert.ToInt32(PassData[10].ToString() + PassData[11].ToString() + PassData[12].ToString() + PassData[13].ToString(), 16);
+ int status = Convert.ToInt32(PassData[14].ToString() + PassData[15].ToString(), 16);
+ if (status == 0)
+ {
+ //鎴愬姛
+ success = true;
+ }
+ canBreak = true;
+ }
+ catch { }
+ }
+ };
+ gateway.Actions += action;
+ try
+ {
+ string passData = "0800081104";
+ passData += datainfo.A闇囧姩浣胯兘 ? "01" : "00";
+ passData += Convert.ToString(datainfo.A闇囧姩寮哄害, 16).PadLeft(2, '0');
+ string time = Convert.ToString(datainfo.A闇囧姩鏃堕棿, 16).PadLeft(4, '0');
+ //浣庝綅鍦ㄥ墠锛岄珮浣嶅湪鍚�
+ passData += time.Substring(2, 2);
+ passData += time.Substring(0, 2);
+
+ var jObject = new Newtonsoft.Json.Linq.JObject { { "DeviceAddr", device.DeviceAddr }, { "Epoint", 200 }, { "Cluster_ID", 64513 }, { "Command", 0 } };
+ var data = new Newtonsoft.Json.Linq.JObject { { "PassData", passData } };
+ jObject.Add("Data", data);
+ gateway.Send(("ClientDataPassthrough"), jObject.ToString());
+ }
+ catch { }
+
+ int TimeOut = 0;
+ while (canBreak == false && TimeOut < 60)
+ {
+ System.Threading.Thread.Sleep(100);
+ TimeOut++;
+ }
+ gateway.Actions -= action;
+
+ if (success == false)
+ {
+ //璁剧疆闇囧姩鍙嶉閰嶇疆淇℃伅澶辫触
+ string errorMsg = Language.StringByID(R.MyInternationalizationString.uSetVibrationFeedbackSettionFail);
+ if (TimeOut >= 60)
+ {
+ errorMsg = UserCenterLogic.CombineGatewayTimeOutMsg(errorMsg, null, "鍥炲瓒呮椂", false);
+ }
+ this.ShowTipMsg(errorMsg);
+ }
+
+ return success;
+ }
+
+ /// <summary>
+ /// 绠�绾﹂潰鏉块渿鍔ㄥ姛鑳戒俊鎭�
+ /// </summary>
+ public class VibrationInfo
+ {
+ /// <summary>
+ /// 闇囧姩浣胯兘
+ /// </summary>
+ public bool A闇囧姩浣胯兘 = false;
+ /// <summary>
+ /// 闇囧姩寮哄害(鍗佽繘鍒�)
+ /// </summary>
+ public int A闇囧姩寮哄害 = 0;
+ /// <summary>
+ /// 闇囧姩鏃堕棿(鍗佽繘鍒�)
+ /// </summary>
+ public int A闇囧姩鏃堕棿 = 0;
+ }
+
+ #endregion
+
#region 鈻� 缂撳瓨涓殑璁惧绉佹湁灞炴�______________
/// <summary>
--
Gitblit v1.8.0