OSDP.Net 5.2.1
A .NET library for implementing the Open Supervised Device Protocol (OSDP)
Loading...
Searching...
No Matches
OutputControls.cs
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
7
9{
14 {
19 public OutputControls(IEnumerable<OutputControl> controls)
20 {
21 if (controls == null) throw new ArgumentNullException(nameof(controls));
22
23 Controls = controls.ToArray();
24
25 if (!Controls.Any())
26 {
27 throw new Exception("Requires at least one output control");
28 }
29 }
30
34 public IEnumerable<OutputControl> Controls { get; }
35
37 public override CommandType CommandType => CommandType.OutputControl;
38
40 public override ReadOnlySpan<byte> SecurityControlBlock() => SecurityBlock.CommandMessageWithDataSecurity;
41
43 public override byte Code => (byte)CommandType;
44
46 public override byte[] BuildData()
47 {
48 var data = new List<byte>();
49 foreach (var outputControl in Controls)
50 {
51 data.AddRange(outputControl.BuildData());
52 }
53
54 return data.ToArray();
55 }
56
60 public static OutputControls ParseData(ReadOnlySpan<byte> payloadData)
61 {
62 return new OutputControls(SplitData(4, data => OutputControl.ParseData(data), payloadData));
63 }
64
66 public override string ToString()
67 {
68 var sb = new StringBuilder();
69 sb.AppendLine($"Output Count: {Controls.Count()}");
70 foreach (var control in Controls)
71 {
72 sb.AppendLine($" Output #: {control.OutputNumber}");
73 sb.AppendLine($" Code: {control.OutputControlCode}");
74 sb.AppendLine($" Time: {control.Timer} (100ms units)");
75 }
76 return sb.ToString();
77 }
78 }
79}
Contains standard Security Control Block data that can be used when building messages.
Base class representing a payload of a PD command message.
Contains data to control a single output on a PD.
static OutputControl ParseData(ReadOnlySpan< byte > data)
Parses the message payload bytes.
OutputControls(IEnumerable< OutputControl > controls)
Initializes a new instance of the OutputControls class.
override ReadOnlySpan< byte > SecurityControlBlock()
IEnumerable< OutputControl > Controls
One or more commands to control the outputs of a PD.
static OutputControls ParseData(ReadOnlySpan< byte > payloadData)
Parses the message payload bytes.