using System;
|
using System.Collections.Generic;
|
using System.Threading.Tasks;
|
using Shared.Common;
|
using Shared.Phone.Device.Category;
|
using Shared.Phone.UserCenter.Device;
|
using ZigBee.Device;
|
using static ZigBee.Device.Panel;
|
|
namespace Shared.Phone.UserCenter.DeviceBind
|
{
|
public class BindInfo
|
{
|
/// <summary>
|
/// 当前按键配置的功能
|
/// </summary>
|
public static int clusterID = 0;
|
|
/// <summary>
|
/// 检测控制面板(按键类)所拥有的功能,现支持的有以下几种(必定存在键值,出错会返回null)
|
/// </summary>
|
/// <returns>The panel key function level2.</returns>
|
/// <param name="key">Key.</param>
|
public static async System.Threading.Tasks.Task<Dictionary<string, bool>> CheckPanelKeyFunctionLevel3(Panel key)
|
{
|
Dictionary<string, bool> dicCheck = new Dictionary<string, bool>();
|
dicCheck["场景:触发"] = false;
|
dicCheck["开关:开"] = false;
|
dicCheck["开关:关"] = false;
|
dicCheck["开关:切换"] = false;
|
dicCheck["亮度:按等级调大"] = false;
|
dicCheck["亮度:按等级调小"] = false;
|
dicCheck["亮度:按等级切换"] = false;
|
dicCheck["亮度:打开"] = false;
|
dicCheck["亮度:关闭"] = false;
|
dicCheck["亮度:切换"] = false;
|
dicCheck["窗帘:开"] = false;
|
dicCheck["窗帘:关"] = false;
|
dicCheck["窗帘:停"] = false;
|
dicCheck["窗帘:上升停"] = false;
|
dicCheck["窗帘:下降停"] = false;
|
|
|
List<int> result = null;
|
//获取第一级功能
|
if (key.privateFuncFirstLevelList.Count == 0 || key.privateFuncFirstLevelList.Contains(256) == false)
|
{
|
result = await key.GetPanelDeviceFunctionLevel1();
|
if (result == null)
|
{
|
return null;
|
}
|
key.privateFuncFirstLevelList = result;
|
//面板没有按键类
|
if (result.Contains(256) == false)
|
{
|
return dicCheck;
|
}
|
}
|
else
|
{
|
result = key.privateFuncFirstLevelList;
|
}
|
|
if (key.privateFuncSecondLevelList.Count == 0 || key.privateFuncSecondLevelList.Contains(1) == false || key.privateFuncSecondLevelList.Contains(100) == false || key.privateFuncSecondLevelList.Contains(200) == false || key.privateFuncSecondLevelList.Contains(300) == false)
|
{
|
//获取第二级功能
|
result = await key.GetPanelDeviceFunctionLevel2(256);
|
if (result == null)
|
{
|
return null;
|
}
|
key.privateFuncSecondLevelList = result;
|
}
|
else
|
{
|
result = key.privateFuncSecondLevelList;
|
}
|
|
//特殊功能
|
if (result.Contains(1) == true)
|
{
|
List<int> result3 = null;
|
//获取第三级功能
|
if (key.privateFuncThirdLevelList.Count == 0 || key.privateFuncThirdLevelList.Contains(1) == false)
|
{
|
result3 = await key.GetPanelDeviceFunctionLevel3(256, 1);
|
foreach (var l3 in result3)
|
{
|
key.privateFuncThirdLevelList.Add(l3);
|
}
|
}
|
else
|
{
|
result3 = key.privateFuncThirdLevelList;
|
}
|
if (result3 != null)
|
{
|
if (result3.Contains(1) == true)
|
{
|
dicCheck["场景:触发"] = true;
|
}
|
}
|
}
|
//按键开关类
|
if (result.Contains(100) == true)
|
{
|
|
List<int> result3 = null;
|
//获取第三级功能
|
if (key.privateFuncThirdLevelList.Count == 0 || key.privateFuncThirdLevelList.Contains(100) == false || key.privateFuncThirdLevelList.Contains(101) == false || key.privateFuncThirdLevelList.Contains(102) == false)
|
{
|
result3 = await key.GetPanelDeviceFunctionLevel3(256, 100);
|
foreach (var l3 in result3)
|
{
|
key.privateFuncThirdLevelList.Add(l3);
|
}
|
}
|
else
|
{
|
result3 = key.privateFuncThirdLevelList;
|
}
|
if (result3 != null)
|
{
|
if (result3.Contains(100) == true)
|
{
|
dicCheck["开关:开"] = true;
|
}
|
if (result3.Contains(101) == true)
|
{
|
dicCheck["开关:关"] = true;
|
}
|
if (result3.Contains(102) == true)
|
{
|
dicCheck["开关:切换"] = true;
|
}
|
}
|
}
|
//按键调光类
|
if (result.Contains(200) == true)
|
{
|
List<int> result3 = null;
|
//获取第三级功能
|
if (key.privateFuncThirdLevelList.Count == 0 || key.privateFuncThirdLevelList.Contains(200) == false || key.privateFuncThirdLevelList.Contains(201) == false || key.privateFuncThirdLevelList.Contains(202) == false)
|
{
|
result3 = await key.GetPanelDeviceFunctionLevel3(256, 200);
|
foreach (var l3 in result3)
|
{
|
key.privateFuncThirdLevelList.Add(l3);
|
}
|
}
|
else
|
{
|
result3 = key.privateFuncThirdLevelList;
|
}
|
if (result3 != null)
|
{
|
if (result3.Contains(200) == true)
|
{
|
dicCheck["亮度:按等级调大"] = true;
|
}
|
if (result3.Contains(201) == true)
|
{
|
dicCheck["亮度:按等级调小"] = true;
|
}
|
if (result3.Contains(202) == true)
|
{
|
dicCheck["亮度:按等级切换"] = true;
|
}
|
if (result3.Contains(203) == true)
|
{
|
dicCheck["亮度:打开"] = true;
|
}
|
if (result3.Contains(204) == true)
|
{
|
dicCheck["亮度:关闭"] = true;
|
}
|
if (result3.Contains(205) == true)
|
{
|
dicCheck["亮度:切换"] = true;
|
}
|
}
|
}
|
//窗帘类
|
if (result.Contains(300) == true)
|
{
|
List<int> result3 = null;
|
//获取第三级功能
|
if (key.privateFuncThirdLevelList.Count == 0 || (key.privateFuncThirdLevelList.Contains(300) == false && key.privateFuncThirdLevelList.Contains(301) == false && key.privateFuncThirdLevelList.Contains(302) == false && key.privateFuncThirdLevelList.Contains(303) == false && key.privateFuncThirdLevelList.Contains(304) == false))
|
{
|
result3 = await key.GetPanelDeviceFunctionLevel3(256, 300);
|
foreach (var l3 in result3)
|
{
|
key.privateFuncThirdLevelList.Add(l3);
|
}
|
}
|
else
|
{
|
result3 = key.privateFuncThirdLevelList;
|
}
|
|
if (result3 != null)
|
{
|
if (result3.Contains(300) == true)
|
{
|
dicCheck["窗帘:开"] = true;
|
}
|
if (result3.Contains(301) == true)
|
{
|
dicCheck["窗帘:关"] = true;
|
}
|
if (result3.Contains(302) == true)
|
{
|
dicCheck["窗帘:停"] = true;
|
}
|
if (result3.Contains(303) == true)
|
{
|
dicCheck["窗帘:上升停"] = true;
|
}
|
if (result3.Contains(304) == true)
|
{
|
dicCheck["窗帘:下降停"] = true;
|
}
|
}
|
}
|
|
return dicCheck;
|
}
|
|
|
}
|
}
|