using System.Collections.Concurrent;
using WCS.Core;
using WCS.Entity.Protocol.Station;
namespace WCS.WorkEngineering.Extensions
{
///
/// 设备扩展
///
public static class DeviceExtension
{
public static bool IsConv(this Device source)
{
return source.HasProtocol(typeof(IStation521)) || source.HasProtocol(typeof(IStation520)) || source.HasProtocol(typeof(IStation522));
}
#region WCS_DEVICE扩展数据
private static ConcurrentDictionary DeviceValues = new ConcurrentDictionary();
public static void AddFlag(this Device source, DF flag)
{
var df = source.Get("DeviceFlag");
df = df | flag;
source.Set("DeviceFlag", df);
}
public static bool Is(this Device source, DF flag)
{
var df = source.Get("DeviceFlag");
return (df & flag) == flag;
}
public static void Set(this Device source, string key, T value)
{
DeviceValues[source.Code + key] = value;
}
public static T Get(this Device source, string key)
{
if (!DeviceValues.ContainsKey(source.Code + key))
return default(T);
return (T)DeviceValues[source.Code + key];
}
public static short Code(this Device source)
{
return short.Parse(source.Code);
}
public static string Tunnel(this Device source)
{
return source.Get("Tunnel");
}
public static int TunnelNum(this Device source)
{
return int.Parse(source.Tunnel().Last().ToString());
}
public static int Floor(this Device source)
{
return source.Get("Floor");
}
public static Device SC(this Device source)
{
return source.Get("SC");
}
public static Device RGV(this Device source)
{
return source.Get("RGV");
}
#endregion WCS_DEVICE扩展数据
}
///
/// 设备配置
///
[Flags]
public enum DF
{
无 = 0,
SRM = 1 << 0,
SRM二级品取货 = 1 << 1,
SRM涂布取货 = 1 << 2,
SRM月台放货 = 1 << 3,
一楼RGV放货 = 1 << 4,
月台 = 1 << 5,
涂布RGV = 1 << 6,
BOPPRGV = 1 << 7,
涂布RGV取货设备组 = 1 << 8,
涂布RGV放货设备组 = 1 << 9,
涂布出库RGV取货站台 = 1 << 10,
涂布入库RGV取货站台 = 1 << 11,
SRM涂布放货 = 1 << 12,
涂布RGV取货站台 = 1 << 13,
BOPPRGV取货设备组 = 1 << 14,
BOPPRGV放货设备组 = 1 << 15,
SRMBOPP取货 = 1 << 16,
}
}