From 5eeafe3af80bfd88306bd8ad9e76c8f4b51ca35f Mon Sep 17 00:00:00 2001
From: hxb <hxb@hdlchina.com.cn>
Date: 星期四, 17 十二月 2020 14:16:20 +0800
Subject: [PATCH] 增加本地发送的重发机制

---
 HDL_ON/Entity/Function/AC.cs |  133 ++++++++++++++++++++++++++++---------------
 1 files changed, 86 insertions(+), 47 deletions(-)

diff --git a/HDL_ON/Entity/Function/AC.cs b/HDL_ON/Entity/Function/AC.cs
index 952b8b2..a24c624 100644
--- a/HDL_ON/Entity/Function/AC.cs
+++ b/HDL_ON/Entity/Function/AC.cs
@@ -6,12 +6,12 @@
     public class AC : Function
     {
         /*
-         * 绌鸿皟锛歵rait: [switch, mode, fan, temperature, swing, lock]
+         * 绌鸿皟锛歵rait: [switch, mode, fan, set_temp, swing, lock]
          * 灞炴��	鎻忚堪
          * on_off	on/off
          * mode	mode: auto, cool, heat, dry, fan
          * fan	high, medium, low, auto
-         * temperature	up,down,value
+         * set_temp	up,down,value
          * swing	up/down/left/right
          * lock	boolean (Lock閿佸畾鎺у埗)
          */
@@ -55,7 +55,7 @@
                 try
                 {
                     byte index = 0;
-                    switch (trait_mode.value.ToString())
+                    switch (trait_mode.curValue.ToString())
                     {
                         case "auto":
                             index = 3;
@@ -89,22 +89,22 @@
                 switch (value)
                 {
                     case 0:
-                        trait_mode.value = "cool";
+                        trait_mode.curValue = "cool";
                         break;
                     case 1:
-                        trait_mode.value = "heat";
+                        trait_mode.curValue = "heat";
                         break;
                     case 2:
-                        trait_mode.value = "fan";
+                        trait_mode.curValue = "fan";
                         break;
                     case 3:
-                        trait_mode.value = "auto";
+                        trait_mode.curValue = "auto";
                         break;
                     case 4:
-                        trait_mode.value = "dry";
+                        trait_mode.curValue = "dry";
                         break;
                     default:
-                        trait_mode.value = "cool";
+                        trait_mode.curValue = "cool";
                         break;
 
                 }
@@ -122,7 +122,7 @@
                 try
                 {
                     byte index = 0;
-                    switch (trait_fan.value.ToString())
+                    switch (trait_fan.curValue.ToString())
                     {
                         case "high":
                             index = 1;
@@ -153,129 +153,139 @@
                 switch (value)
                 {
                     case 0:
-                        trait_fan.value = "auto";
+                        trait_fan.curValue = "auto";
                         break;
                     case 1:
-                        trait_fan.value = "high";
+                        trait_fan.curValue = "high";
                         break;
                     case 2:
-                        trait_fan.value = "medium";
+                        trait_fan.curValue = "medium";
                         break;
                     case 3:
-                        trait_fan.value = "low";
+                        trait_fan.curValue = "low";
                         break;
                     default:
-                        trait_fan.value = "high";
+                        trait_fan.curValue = "high";
                         break;
                 }
             }
         }
 
-        Trait _trait_mode;
+        FunctionAttributes _trait_mode;
         /// <summary>
         /// 妯″紡灞炴��
         /// </summary>
         [Newtonsoft.Json.JsonIgnore]
-        public Trait trait_mode
+        public FunctionAttributes trait_mode
         {
             get
             {
                 if (_trait_mode == null)
                 {
-                    _trait_mode = function.Find((obj) => obj.name == "mode");
+                    _trait_mode = attributes.Find((obj) => obj.key == "mode");
                     //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
                     if (_trait_mode == null)
                     {
-                        _trait_mode = new Trait()
+                        _trait_mode = new FunctionAttributes()
                         {
-                            name = "mode",
-                            value_key = new List<string> { "auto", "cool", "heat", "dry", "fan" },
+                            key = "mode",
+                            value = new List<string> { "auto", "cool", "heat", "dry", "fan" },
                             max = 4,
                             min = 0,
                         };
                     }
-                    _trait_mode.value = _trait_mode.value_key.Count > 0 ? _trait_mode.value_key[0] : "";
+                    if (_trait_mode.curValue.ToString() == "{}")
+                        _trait_mode.curValue = "cool";
                 }
                 return _trait_mode;
             }
         }
 
-        Trait _trait_fan;
+        FunctionAttributes _trait_fan;
         [Newtonsoft.Json.JsonIgnore]
-        public Trait trait_fan
+        public FunctionAttributes trait_fan
         {
             get
             {
                 if (_trait_fan == null)
                 {
-                    _trait_fan = function.Find((obj) => obj.name == "fan");
+                    _trait_fan = attributes.Find((obj) => obj.key == "fan");
                     //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
                     if (_trait_fan == null)
                     {
-                        _trait_fan = new Trait()
+                        _trait_fan = new FunctionAttributes()
                         {
-                            name = "fan",
-                            value_key = new List<string> { "high", "medium", "low", "auto" },
+                            key = "fan",
+                            value = new List<string> { "high", "medium", "low", "auto" },
                             max = 3,
                             min = 0,
+                            curValue = "high"
                         };
                     }
-                    _trait_fan.value = _trait_fan.value_key.Count > 0 ? _trait_fan.value_key[0] : "";
+                    if (_trait_fan.curValue.ToString() == "{}")
+                        _trait_fan.curValue = "high";
                 }
                 return _trait_fan;
             }
         }
 
-        Trait _trait_temp;
+        FunctionAttributes _trait_temp;
         /// <summary>
         /// 褰撳墠绌鸿皟娓╁害
         /// </summary>
         [Newtonsoft.Json.JsonIgnore]
-        public Trait trait_temp
+        public FunctionAttributes trait_temp
         {
             get
             {
                 if (_trait_temp == null)
                 {
-                    _trait_temp = function.Find((obj) => obj.name == "temperature");
+                    _trait_temp = attributes.Find((obj) => obj.key == "set_temp");
                     //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
                     if (_trait_temp == null)
                     {
-                        _trait_temp = new Trait()
+                        _trait_temp = new FunctionAttributes()
                         {
-                            name = "temperature",
-                            value_key = new List<string> { },
+                            key = "set_temp",
+                            value = new List<string> { },
                             max = 32,
                             min = 16,
                         };
                     }
-                    _trait_temp.value = 16;
+                    if (_trait_temp.curValue.ToString() == "{}")
+                        _trait_temp.curValue = 16;
+                }
+                //if (_trait_temp.curValue.ToString().Length > 3)
+                {
+                    var vv = Convert.ToDouble(_trait_temp.curValue);
+                    _trait_temp.curValue = Convert.ToInt32(vv);
                 }
                 return _trait_temp;
             }
         }
 
-        Trait _trait_swting;
+        FunctionAttributes _trait_swting;
         [Newtonsoft.Json.JsonIgnore]
-        public Trait trait_swting
+        public FunctionAttributes trait_swting
         {
             get
             {
                 if (_trait_swting == null)
                 {
-                    _trait_swting = function.Find((obj) => obj.name == "swting");
+                    _trait_swting = attributes.Find((obj) => obj.key == "swting");
                     //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
                     if (_trait_swting == null)
                     {
-                        _trait_swting = new Trait()
+                        _trait_swting = new FunctionAttributes()
                         {
-                            name = "swting",
-                            value_key = new List<string> { "up", "down", "left", "right" },
+                            key = "swting",
+                            value = new List<string> { "up", "down", "left", "right" },
                             max = 3,
                             min = 0,
                         };
                     }
-                    _trait_swting.value = _trait_swting.value_key.Count > 0 ? _trait_swting.value_key[trait_mode.min] : "";
+                    if (_trait_swting.curValue.ToString() == "{}")
+                        _trait_swting.curValue = "up";
                 }
                 return _trait_swting;
             }
@@ -290,7 +300,7 @@
             {
                 try
                 {
-                    return trait_swting.value_key;
+                    return trait_swting.value;
                 }
                 catch (Exception ex)
                 {
@@ -299,11 +309,40 @@
                 }
             }
         }
+        FunctionAttributes _trait_IndoorTemp;
         /// <summary>
         /// 瀹ゅ唴娓╁害
         /// </summary>
         [Newtonsoft.Json.JsonIgnore]
-        public int indoorTemp = 20;
+        public FunctionAttributes trait_IndoorTemp
+        {
+            get
+            {
+                if (_trait_IndoorTemp == null)
+                {
+                    _trait_IndoorTemp = attributes.Find((obj) => obj.key == FunctionAttributeKey.IndoorTemp);
+                    //鎵句笉鍒板睘鎬ч渶瑕佸0鏄庝竴涓紝闃叉鎶ラ敊闂��
+                    if (_trait_IndoorTemp == null)
+                    {
+                        _trait_IndoorTemp = new FunctionAttributes()
+                        {
+                            key = FunctionAttributeKey.IndoorTemp,
+                            value = new List<string> { },
+                            max = 30,
+                            min = 0,
+                        };
+                    }
+                    if (_trait_IndoorTemp.curValue.ToString() == "{}")
+                        _trait_IndoorTemp.curValue = 0;
+                }
+                //if (_trait_IndoorTemp.curValue.ToString().Length > 3)
+                {
+                    var vv = Convert.ToDouble(_trait_IndoorTemp.curValue);
+                    _trait_IndoorTemp.curValue = Convert.ToInt32(vv);
+                }
+                return _trait_IndoorTemp;
+            }
+        }
 
         /// <summary>
         /// 褰撳墠妯″紡鐨刬con璺緞
@@ -316,7 +355,7 @@
                 try
                 {
                     var imagePath = "FunctionIcon/AC/CoolIcon.png";
-                    switch (trait_mode.value.ToString())
+                    switch (trait_mode.curValue.ToString())
                     {
                         case "auto":
                             imagePath = "FunctionIcon/AC/AutoIcon.png";
@@ -357,7 +396,7 @@
                 try
                 {
                     var imagePath = "FunctionIcon/AC/WindHighIcon.png";
-                    switch (trait_fan.value.ToString())
+                    switch (trait_fan.curValue.ToString())
                     {
                         case "high":
                             imagePath = "FunctionIcon/AC/WindHighIcon.png";

--
Gitblit v1.8.0