OSDP.Net 5.2.1
A .NET library for implementing the Open Supervised Device Protocol (OSDP)
Loading...
Searching...
No Matches
DeviceCapabilities.cs
2using System;
3using System.Collections.Generic;
4using System.Linq;
5using System.Text;
7
9{
14 {
19 {
20 }
21
26 public DeviceCapabilities(IEnumerable<DeviceCapability> capabilities)
27 {
28 Capabilities = capabilities;
29 }
30
34 public IEnumerable<DeviceCapability> Capabilities { get; private set; }
35
37 public override byte Code => (byte)ReplyType.PdCapabilitiesReport;
38
40 public override ReadOnlySpan<byte> SecurityControlBlock()
41 {
42 return SecurityBlock.ReplyMessageWithDataSecurity;
43 }
44
53 Capabilities.FirstOrDefault((cap) => cap.Function == funcCode);
54
59 public T Get<T>(CapabilityFunction funcCode) where T : DeviceCapability => (T)Get(funcCode);
60
64 internal static DeviceCapabilities ParseData(ReadOnlySpan<byte> data)
65 {
66 var dataArray = data.ToArray();
67 if (dataArray.Length % 3 != 0)
68 {
69 throw new Exception("Invalid size for the data");
70 }
71
72 var capabilities = new List<DeviceCapability>();
73 for (int index = 0; index < dataArray.Length; index += 3)
74 {
75 capabilities.Add(DeviceCapability.ParseData(dataArray.Skip(index).Take(3).ToArray()));
76 }
77
78 var deviceCapabilities = new DeviceCapabilities
79 {
80 Capabilities = capabilities
81 };
82
83 return deviceCapabilities;
84 }
85
86
88 public override string ToString()
89 {
90 var build = new StringBuilder();
91 foreach (var capability in Capabilities)
92 {
93 build.AppendLine(capability.ToString());
94 }
95
96 return build.ToString();
97 }
98
100 public override byte[] BuildData()
101 {
102 var data = new List<byte>();
103 foreach (var capability in Capabilities)
104 {
105 data.AddRange(capability.BuildData());
106 }
107
108 return data.ToArray();
109 }
110 }
111}
Contains standard Security Control Block data that can be used when building messages.
Base class representing a payload an OSDP message.
Definition PayloadData.cs:9
DeviceCapability Get(CapabilityFunction funcCode)
Gets a specific PD capability.
T Get< T >(CapabilityFunction funcCode)
DeviceCapabilities()
Creates a new instance of DeviceCapabilities.
DeviceCapabilities(IEnumerable< DeviceCapability > capabilities)
Initializes a new instance of DeviceCapabilities class.
override ReadOnlySpan< byte > SecurityControlBlock()
IEnumerable< DeviceCapability > Capabilities
Gets the all the PD's device capabilities.
Generic capability data for a PD.
ReplyType
Identifies the type of OSDP protocol reply (PD -> ACU) message.
Definition ReplyType.cs:7
CapabilityFunction
Definitions of the capability function codes.