You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
3.8 KiB
C#

using CFX.Structures;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Sln.Iot.CFX.CFXBusiness
{
/// <summary>
/// 设备支持能力列表
/// </summary>
public class CFXSupportedTopicList
{
public static List<SupportedTopic> SupportedTopics = new List<SupportedTopic>()
{
new SupportedTopic()
{
TopicName = "CFX",
TopicSupportType = TopicSupportType.Publisher,
SupportedMessages = new List<string>
{
"EndpointConnected",
"EndpointShuttingDown",
"GetEndpointInformationRequest/Response",
"AreYouThereRequest/Response",
"WhoIsThereRequest/Response",
"NotSupportedResponse",
"Heartbeat"
}
},
new SupportedTopic()
{
TopicName = "CFX.Production",
TopicSupportType = TopicSupportType.Publisher,
SupportedMessages = new List<string>
{
"UnitsArrived",
"WorkStarted",
"WorkStageStarted",
"WorkStageCompleted",
"WorkStagePaused",
"WorkStageResumed",
"WorkCompleted",
"UnitsDeparted",
"RecipeActivated",
"RecipeModified",
"GetActiveRecipeRequest/Response",
}
},
new SupportedTopic()
{
TopicName = "CFX.Production.Processing",
TopicSupportType = TopicSupportType.Publisher,
SupportedMessages = new List<string>
{
"UnitsProcessed",
}
},
new SupportedTopic()
{
TopicName = "CFX.InformationSystem.UnitValidation",
TopicSupportType = TopicSupportType.Publisher,
SupportedMessages = new List<string>
{
"ValidateUnitsRequest/Response",
}
},
new SupportedTopic()
{
TopicName = "CFX.ResourcePerformance",
TopicSupportType = TopicSupportType.Publisher,
SupportedMessages = new List<string>
{
"FaultOccurred",
"FaultAcknowledged",
"FaultCleared",
"HandleFaultRequest/Response",
"GetActiveFaultRequest/Response",
"LogEntryRecorded",
"StationOffline",
"StationOnline",
"StationStateChanged",
"StationParametersModified",
"ModifyStationParametersRequest/Response",
}
},
};
/// <summary>
/// 是否支持该能力列表
/// </summary>
/// <param name="topics">查询的能力列表</param>
/// <returns></returns>
public static bool IsSupportJudge(List<SupportedTopic> topics)
{
foreach (SupportedTopic topic in topics)
{
foreach (string message in topic.SupportedMessages)
{
var supportedTopic = SupportedTopics.FirstOrDefault(t => t.TopicName == topic.TopicName);
if (supportedTopic == null || !supportedTopic.SupportedMessages.Contains(message))
{
return false;
}
}
}
return true;
}
}
}