OSDP.Net 5.2.1
A .NET library for implementing the Open Supervised Device Protocol (OSDP)
Loading...
Searching...
No Matches
ManufacturerSpecific.cs
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
7
9{
14 {
23 public ManufacturerSpecific(byte[] vendorCode, byte[] data)
24 {
25 VendorCode = vendorCode ?? throw new ArgumentNullException(nameof(vendorCode));
26 if (VendorCode.Length != 3) throw new ArgumentOutOfRangeException(nameof(vendorCode));
27
28 Data = data ?? throw new ArgumentNullException(nameof(data));
29 }
30
34 public byte[] VendorCode { get; }
35
39 public byte[] Data { get; }
40
42 public override CommandType CommandType => CommandType.ManufacturerSpecific;
43
45 public override byte Code => (byte)CommandType;
46
48 public override ReadOnlySpan<byte> SecurityControlBlock() => SecurityBlock.CommandMessageWithDataSecurity;
49
51 public override byte[] BuildData()
52 {
53 var data = new List<byte>
54 {
55 VendorCode[0],
56 VendorCode[1],
57 VendorCode[2]
58 };
59 data.AddRange(Data);
60 return data.ToArray();
61 }
62
66 public static ManufacturerSpecific ParseData(ReadOnlySpan<byte> data)
67 {
68 return new ManufacturerSpecific(
69 data.Slice(0, 3).ToArray(),
70 data.Slice(3).ToArray()
71 );
72 }
73
75 public override string ToString()
76 {
77 var sb = new StringBuilder();
78 sb.AppendLine($"Vendor Code: {BitConverter.ToString(VendorCode.ToArray())}");
79 sb.AppendLine($" Data: {BitConverter.ToString(Data.ToArray())}");
80 return sb.ToString();
81 }
82 }
83}
Contains standard Security Control Block data that can be used when building messages.
Base class representing a payload of a PD command message.
byte[] Data
Gets the manufacture specific data.
ManufacturerSpecific(byte[] vendorCode, byte[] data)
Initializes a new instance of the ManufacturerSpecific class.
static ManufacturerSpecific ParseData(ReadOnlySpan< byte > data)
Parses the message payload bytes.
override ReadOnlySpan< byte > SecurityControlBlock()