OSDP.Net 5.2.1
A .NET library for implementing the Open Supervised Device Protocol (OSDP)
Loading...
Searching...
No Matches
DeviceIdentification.cs
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
7
9{
14 {
18 public DeviceIdentification(byte[] vendorCode, byte modelNumber, byte version, int serialNumber,
19 byte firmwareMajor, byte firmwareMinor, byte firmwareBuild)
20 {
21 VendorCode = vendorCode;
22 ModelNumber = modelNumber;
23 Version = version;
24 SerialNumber = serialNumber;
25 FirmwareMajor = firmwareMajor;
26 FirmwareMinor = firmwareMinor;
27 FirmwareBuild = firmwareBuild;
28 }
29
31 public IEnumerable<byte> VendorCode { get; }
32
34 public byte ModelNumber { get; }
35
37 public byte Version { get; }
38
40 public int SerialNumber { get; }
41
45 public byte FirmwareMajor { get; }
46
50 public byte FirmwareMinor { get; }
51
55 public byte FirmwareBuild { get; }
56
58 public override byte Code => (byte)ReplyType.PdIdReport;
59
61 public override ReadOnlySpan<byte> SecurityControlBlock()
62 {
63 return SecurityBlock.ReplyMessageWithDataSecurity;
64 }
65
69 public static DeviceIdentification ParseData(ReadOnlySpan<byte> data)
70 {
71 var dataArray = data.ToArray();
72 if (dataArray.Length != 12)
73 {
74 throw new Exception("Invalid size for the data");
75 }
76
77 var deviceIdentification = new DeviceIdentification(dataArray.Take(3).ToArray(), dataArray[3], dataArray[4],
78 Message.ConvertBytesToInt(dataArray.Skip(5).Take(4).ToArray()), dataArray[9], dataArray[10],
79 dataArray[11]);
80
81 return deviceIdentification;
82 }
83
85 public override byte[] BuildData()
86 {
87 var buffer = new byte[12];
88
89 VendorCode.Take(3).ToArray().CopyTo(buffer, 0);
90 buffer[3] = ModelNumber;
91 buffer[4] = Version;
92 Message.ConvertIntToBytes(SerialNumber).ToArray().CopyTo(buffer, 5);
93 buffer[9] = FirmwareMajor;
94 buffer[10] = FirmwareMinor;
95 buffer[11] = FirmwareBuild;
96
97 return buffer;
98 }
99
101 public override string ToString()
102 {
103 var build = new StringBuilder();
104 build.AppendLine($" Vendor Code: {BitConverter.ToString(VendorCode.ToArray())}");
105 build.AppendLine($" Model Number: {ModelNumber}");
106 build.AppendLine($" Version: {Version}");
107 build.AppendLine($" Serial Number: {BitConverter.ToString(Message.ConvertIntToBytes(SerialNumber).ToArray())}");
108 build.AppendLine($"Firmware Version: {FirmwareMajor}.{FirmwareMinor}.{FirmwareBuild}");
109
110 return build.ToString();
111 }
112 }
113}
A base message class for sending or replying.
Definition Message.cs:12
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
byte FirmwareMinor
Gets the firmware minor version.
static DeviceIdentification ParseData(ReadOnlySpan< byte > data)
Parses the message payload bytes.
IEnumerable< byte > VendorCode
Gets the vendor code.
byte FirmwareMajor
Gets the firmware major version.
override ReadOnlySpan< byte > SecurityControlBlock()
DeviceIdentification(byte[] vendorCode, byte modelNumber, byte version, int serialNumber, byte firmwareMajor, byte firmwareMinor, byte firmwareBuild)
Creates a new instance of DeviceIdentification.
ReplyType
Identifies the type of OSDP protocol reply (PD -> ACU) message.
Definition ReplyType.cs:7