using System;
using System.Collections.Generic;
using System.Text;
using ZigBee.Device;
using System.Threading.Tasks;
namespace Shared.Phone.UserCenter
{
///
/// PIR传感器的逻辑
///
public class HdlDevicePirSensorLogic
{
#region ■ 变量声明___________________________
///
/// PIR传感器的逻辑
///
private static HdlDevicePirSensorLogic m_Current = null;
///
/// PIR传感器的逻辑
///
public static HdlDevicePirSensorLogic Current
{
get
{
if (m_Current == null)
{
m_Current = new HdlDevicePirSensorLogic();
}
return m_Current;
}
}
#endregion
#region ■ 光感等级总刻度_____________________
///
/// 获取PIR传感器的【光感等级总刻度】,错误时返回-1
///
///
///
public async Task 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 ■ 获取配置信息_______________________
///
/// 获取PIR传感器的【配置信息】,错误时返回null
///
///
///
public async Task GetPirSensorLightSettion(IASZone iASZone)
{
var data = await iASZone.GetPIRSensorParamateAsync();
if (data == null || data.configureParamates == null)
{
//获取传感器设置信息失败
string msg = Language.StringByID(R.MyInternationalizationString.uGetPirSensorSettionFail);
//拼接上【网关回复超时】的Msg
msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, data);
this.ShowErrorMsg(msg);
return null;
}
return data.configureParamates;
}
#endregion
#region ■ 设置配置信息_______________________
///
/// 设置PIR传感器的【配置信息】
///
/// 传感器对象
/// 灯光配置
///
public async Task SetPirSensorSettion(IASZone iASZone, IASZone.ConfigureParamates configure)
{
var result = await iASZone.SetPIRSensorParamateAsync(configure);
if (result == null || result.responseData == null)
{
//设置传感器配置信息失败
string msg = Language.StringByID(R.MyInternationalizationString.uSetPirSensorSettionFail);
//拼接上【网关回复超时】的Msg
msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, result);
this.ShowErrorMsg(msg);
return false;
}
if (result.responseData.status != 0)
{
//设置传感器配置信息失败
string msg = Language.StringByID(R.MyInternationalizationString.uSetPirSensorSettionFail);
this.ShowErrorMsg(msg);
return false;
}
//备份设置
await HdlGatewayLogic.Current.UpLoadDeviceBackupDataToGateway(iASZone, GatewayBackupEnum.APir灯光配置, configure);
return true;
}
#endregion
#region ■ 一般方法___________________________
///
/// 显示错误信息窗口
///
///
private void ShowErrorMsg(string msg)
{
Application.RunOnMainThread(() =>
{
var contr = new ShowMsgControl(ShowMsgType.Error, msg);
contr.Show();
});
}
///
/// 显示Tip信息窗口
///
///
private void ShowTipMsg(string msg)
{
Application.RunOnMainThread(() =>
{
var contr = new UserCenter.ShowMsgControl(ShowMsgType.Tip, msg);
contr.Show();
});
}
#endregion
}
}