xm
2020-05-07 c1de48884fa145a16a0f8bcee93274dcfaa0ff82
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlDevicePanelLogic.cs
old mode 100755 new mode 100644
@@ -82,6 +82,34 @@
        }
        /// <summary>
        /// 获取面板颜色的信息(出错会返回null)
        /// </summary>
        /// <param name="panel">按键面板的某一个回路</param>
        /// <returns></returns>
        public async Task<Panel.KeyColorData> GetPanelColorInfo(Panel panel)
        {
            panel.DeviceEpoint = 1;
            Panel.KeyNum keyNum = (Panel.KeyNum)panel.DeviceEpoint;
            var result = await panel.GetPanelColorInfoAsync(keyNum);
            //共通错误检测
            string error = HdlCheckLogic.Current.CheckCommonErrorCode(result);
            if (error != null)
            {
                this.ShowErrorMsg(error);
                return null;
            }
            if (result == null || result.keyColorData == null)
            {
                //获取按键面板颜色调节信息失败
                string msg = Language.StringByID(R.MyInternationalizationString.uGetPanelColorRegulationInfoFail);
                this.ShowErrorMsg(msg);
                return null;
            }
            return result.keyColorData;
        }
        /// <summary>
        /// 设置按键面板指定端点的【指示灯开关颜色】的信息
        /// </summary>
        /// <param name="panel">按键面板的某一个回路</param>
@@ -90,7 +118,7 @@
        public async Task<bool> SetPanelEpointColorInfo(Panel panel, Panel.KeyColorData colorData)
        {
            var keyNum = new Panel.KeyNumStatus();
            Type type = keyNum.GetType();
            Type type = keyNum.GetType();
            type.InvokeMember("Key" + panel.DeviceEpoint, System.Reflection.BindingFlags.SetField, null, keyNum, new object[] { true });
            var result = await panel.SetPanelColorInfoAsync(colorData, keyNum);
@@ -113,8 +141,39 @@
            return true;
        }
        #endregion
        /// <summary>
        /// 设置面板颜色
        /// </summary>
        /// <param name="panel">按键面板的</param>
        /// <param name="colorData">只设置开的颜色</param>
        /// <returns></returns>
        public async Task<bool> SetPanelColorInfo(Panel panel, Panel.KeyColorData colorData)
        {
            var keyNum = new Panel.KeyNumStatus();
            //默认第一个用面板第一个按键颜色作为整个面板的颜色
            keyNum.Key1 = true;
            var result = await panel.SetPanelColorInfoAsync(colorData, keyNum);
            if (result == null || result.responseData == null)
            {
                //设置按键面板指示灯颜色失败
                string msg = Language.StringByID(R.MyInternationalizationString.uSetPanelPilolightSettionFail);
                this.ShowErrorMsg(msg);
                return false;
            }
            if (result.responseData.status != 0)
            {
                //设置按键面板指示灯颜色失败
                string msg = Language.StringByID(R.MyInternationalizationString.uSetPanelPilolightSettionFail);
                this.ShowErrorMsg(msg);
                return false;
            }
            //备份设备
            await HdlGatewayLogic.Current.UpLoadDeviceBackupDataToGateway(panel, GatewayBackupEnum.A干接点颜色调节, colorData);
            return true;
        }
        #endregion
        #region ■ 亮度调节___________________________
        /// <summary>
        /// 获取设备亮度配置(ui叫亮度调节,使用返回值的panelDirectionsLevel)
@@ -203,6 +262,87 @@
            return true;
        }
        #endregion
        #region ■ 接近感应___________________________
        /// <summary>
        /// 获取接近感应配置(ui叫接近感应,使用返回值的panelProximitySensorInfo)
        /// </summary>
        /// <param name="device">设备对象</param>
        /// <returns></returns>
        public async Task<Panel.PanelProximitySensorInfo> GetDeviceProximitySensorsSettion(CommonDevice device)
        {
            //借用它的函数
            var panel = new Panel();
            panel.DeviceAddr = device.DeviceAddr;
            panel.DeviceEpoint = device.DeviceEpoint;
            panel.CurrentGateWayId = device.CurrentGateWayId;
            var result = await panel.GetProximitySensorAsync();
            panel = null;
            //共通错误检测
            string error = HdlCheckLogic.Current.CheckCommonErrorCode(result);
            if (error != null)
            {
                this.ShowErrorMsg(error);
                return null;
            }
            if (result == null || result.panelProximitySensorInfo == null || string.IsNullOrEmpty(result.errorMessageBase) == false)
            {
                //获取接近感应信息失败
                string msg = Language.StringByID(R.MyInternationalizationString.GetPanelProximityFail);
                this.ShowErrorMsg(msg);
                return null;
            }
            return result.panelProximitySensorInfo;
        }
        /// <summary>
        /// 配置接近传感
        /// </summary>
        /// <param name="device">设备对象</param>
        /// <para>sensorEnable:传感器使能</para>
        /// <returns></returns>
        public async Task<bool> SetProximitySensorStatus(CommonDevice device, bool sensorEnable)
        {
            //借用它的函数
            var panel = new Panel();
            panel.DeviceAddr = device.DeviceAddr;
            panel.DeviceEpoint = device.DeviceEpoint;
            panel.CurrentGateWayId = device.CurrentGateWayId;
            var result = await panel.SetProximitySensor(sensorEnable);
            panel = null;
            //共通错误检测
            string error = HdlCheckLogic.Current.CheckCommonErrorCode(result);
            if (error != null)
            {
                this.ShowErrorMsg(error);
                return false;
            }
            if (result == null || result.responseData == null)
            {
                //接近传感配置失败
                string msg = Language.StringByID(R.MyInternationalizationString.SetPannelProximityFail);
                //拼接上【网关回复超时】的Msg
                msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
                this.ShowTipMsg(msg);
                return false;
            }
            // 备份设备
            var backData = new Newtonsoft.Json.Linq.JObject
            {
                { "sensorEnable",sensorEnable }
            };
            //备份设备
            await HdlGatewayLogic.Current.UpLoadDeviceBackupDataToGateway(device, GatewayBackupEnum.A面板接近感应功能, backData);
            return true;
        }
        #endregion
        #region ■ 节能模式___________________________
@@ -436,15 +576,15 @@
        /// </summary>
        /// <param name="panel">按键面板的某一个回路</param>
        /// <param name="parameter">
        /// <para>方法1:当int[]传空,返回值是“面板具有的功能大类,即返回“第一级别。1024:灯类,256:按键类,768:PIR类</para>
        /// <para>方法1:当int[]传空,返回值是“面板具有的功能大类,即返回“第一级别。1024:灯类,256:按键类,768:PIR类</para>
        /// <para>方法2:、当int[]值为第一级别PrivateFuncTypeFir中选择一个。</para>
        /// <para>返回值是“面按键发送功能类”,即返回“第二级别。</para>
        /// <para>100:Switch,开关(按键类);200:Dimmer,调光(按键类);300:Curtain,窗帘(按键类)</para>
        /// <para>0:EnergySavingMode,节能模式(灯类);1:SleepMode,睡眠模式(灯类);100:WhiteBalance,白平衡(灯类);101:RGBColor,RGB指示灯颜色(灯类);102:RGBLevel,RGB指示灯亮度(灯类)</para>
        /// <para>方法3:当int[]值为第一级别PrivateFuncTypeFir中选择一个,接着再选第二级别PrivateFunTypeSec中选择一个 </para>
        /// <para>返回值是“面按键具体功能配置”,即返回“第二级别。</para>
        /// <para>100:SwitchOpen,开关开(按键类);101:SwitchClose,开关关(按键类);102:SwitchChange,开关切换(按键类)</para>
        /// <para>200:DimmerStepUp,增大调光(按键类);201:DimmerStepDown,降低调光(按键类);202:DimmerStepChange,调光切换(按键类)</para>
        /// <para>100:SwitchOpen,开关开(按键类);101:SwitchClose,开关关(按键类);102:SwitchChange,开关切换(按键类)</para>
        /// <para>200:DimmerStepUp,增大调光(按键类);201:DimmerStepDown,降低调光(按键类);202:DimmerStepChange,调光切换(按键类)</para>
        /// <para>300:CurtainOpen,窗帘开(按键类);301:CurtainClose,窗帘关(按键类);302:CurtainStop,窗帘停;303:CurtainUpStop,窗帘上升停;304:CurtainDownstop,窗帘下降停</para>
        /// </param>
        /// <returns></returns>
@@ -479,12 +619,12 @@
        #region ■ 修改干接点私有属性_________________
        /// <summary>
        /// 修改干接点私有属性
        /// 修改干接点第三级别的私有属性
        /// </summary>
        /// <param name="panel">干接点对象</param>
        /// <param name="i_value">干接点的第三级别属性的值,具体请参照第三级别属性</param>
        /// <returns></returns>
        public async Task<bool> EditorDryContactFunction(Panel panel, int i_value)
        public async Task<bool> EditorDryContactThirdFunction(Panel panel, int i_value)
        {
            var result = await panel.ConfigureHdlKeyValueAsync((Panel.KeyMode)i_value);
            //共通错误检测
@@ -537,7 +677,7 @@
                return false;
            }
            //备份设备
            await HdlGatewayLogic.Current.UpLoadDeviceBackupDataToGateway(panel, GatewayBackupEnum.A干接点私有属性, i_value);
            await HdlGatewayLogic.Current.UpLoadDeviceBackupDataToGateway(panel, GatewayBackupEnum.A干接点第三级别私有属性, i_value);
            return true;
        }
@@ -707,7 +847,13 @@
                    errorMsg = UserCenterLogic.CombineGatewayTimeOutMsg(errorMsg, null, "回复超时", false);
                }
                this.ShowTipMsg(errorMsg);
                return false;
            }
            //备份设备
            HdlThreadLogic.Current.RunThread(async () =>
            {
                await HdlGatewayLogic.Current.UpLoadDeviceBackupDataToGateway(device, GatewayBackupEnum.A简约面板震动功能, datainfo);
            }, ShowErrorMode.NO);
            return success;
        }