gxc
2019-11-07 a4924de3136289d10cabbf2f61a228387d44ded7
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlPirSensorLogic.cs
New file
@@ -0,0 +1,161 @@
using System;
using System.Collections.Generic;
using System.Text;
using ZigBee.Device;
using System.Threading.Tasks;
namespace Shared.Phone.UserCenter
{
    /// <summary>
    /// PIR传感器的逻辑
    /// </summary>
    public class HdlPirSensorLogic
    {
        #region ■ 变量声明___________________________
        /// <summary>
        /// PIR传感器的逻辑
        /// </summary>
        private static HdlPirSensorLogic m_Current = null;
        /// <summary>
        /// PIR传感器的逻辑
        /// </summary>
        public static HdlPirSensorLogic Current
        {
            get
            {
                if (m_Current == null)
                {
                    m_Current = new HdlPirSensorLogic();
                }
                return m_Current;
            }
        }
        #endregion
        #region ■ 光感等级总刻度_____________________
        /// <summary>
        /// 获取PIR传感器的【光感等级总刻度】,错误时返回-1
        /// </summary>
        /// <param name="iASZone"></param>
        /// <returns></returns>
        public async Task<int> GetPirLightAbilitySize(IASZone iASZone)
        {
            var data = await iASZone.GetPIRLightAbilitySizeAsync();
            //共通错误检测
            string error = HdlCheckLogic.Current.CheckCommonErrorCode(data);
            if (error != null)
            {
                this.ShowErrorMsg(error);
                return -1;
            }
            if (data == null || data.errorMessageBase != null || data.LightLevelCount == -1)
            {
                //获取传感器光感等级失败
                string msg = Language.StringByID(R.MyInternationalizationString.uGetPirSensorLightPerceptionRegulationFail);
                //拼接上【网关回复超时】的Msg
                msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, data);
                this.ShowErrorMsg(msg);
                return -1;
            }
            return data.LightLevelCount;
        }
        #endregion
        #region ■ 获取灯光配置_______________________
        /// <summary>
        /// 获取PIR传感器的【灯光配置】,错误时返回null
        /// </summary>
        /// <param name="iASZone"></param>
        /// <returns></returns>
        public async Task<IASZone.ConfigureParamates> GetPirSensorLightSettion(IASZone iASZone)
        {
            var data = await iASZone.GetPIRSensorParamateAsync();
            if (data == null || data.configureParamates == null)
            {
                //获取传感器灯光设置信息失败
                string msg = Language.StringByID(R.MyInternationalizationString.uGetPirSensorLightSettionFail);
                //拼接上【网关回复超时】的Msg
                msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, data);
                this.ShowErrorMsg(msg);
                return null;
            }
            return data.configureParamates;
        }
        #endregion
        #region ■ 设置灯光配置_______________________
        /// <summary>
        /// 设置PIR传感器的【灯光配置】
        /// </summary>
        /// <param name="iASZone">传感器对象</param>
        /// <param name="configure">灯光配置</param>
        /// <returns></returns>
        public async Task<bool> SetPirSensorLightSettion(IASZone iASZone, IASZone.ConfigureParamates configure)
        {
            var result = await iASZone.SetPIRSensorParamateAsync(configure);
            if (result == null || result.responseData == null)
            {
                //设置传感器灯光配置失败
                string msg = Language.StringByID(R.MyInternationalizationString.uSetPirSensorLightSettionFail);
                //拼接上【网关回复超时】的Msg
                msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
                this.ShowErrorMsg(msg);
                return false;
            }
            if (result.responseData.status != 0)
            {
                //设置传感器灯光配置失败
                string msg = Language.StringByID(R.MyInternationalizationString.uSetPirSensorLightSettionFail);
                this.ShowErrorMsg(msg);
                return false;
            }
            //备份设置
            await HdlGatewayLogic.Current.UpLoadDeviceBackupDataToGateway(iASZone, GatewayBackupEnum.APir灯光配置, configure);
            return true;
        }
        #endregion
        #region ■ 一般方法___________________________
        /// <summary>
        /// 显示错误信息窗口
        /// </summary>
        /// <param name="msg"></param>
        private void ShowErrorMsg(string msg)
        {
            Application.RunOnMainThread(() =>
            {
                var contr = new ShowMsgControl(ShowMsgType.Error, msg);
                contr.Show();
            });
        }
        /// <summary>
        /// 显示Tip信息窗口
        /// </summary>
        /// <param name="msg"></param>
        private void ShowTipMsg(string msg)
        {
            Application.RunOnMainThread(() =>
            {
                var contr = new UserCenter.ShowMsgControl(ShowMsgType.Tip, msg);
                contr.Show();
            });
        }
        #endregion
    }
}