13 private const int DataStartIndex = 2;
23 Data = ConvertKeypadStringToBytes(data);
79 public byte[]
Data {
get;
private set; }
93 var length = 2 +
Data.Length;
94 var buffer =
new byte[length];
97 Data.CopyTo(buffer, 2);
107 if (data.Length < DataStartIndex)
109 throw new Exception(
"Invalid size for the data");
112 var dataBytes = data.Slice(DataStartIndex, data.Length - DataStartIndex).ToArray();
115 var keypadString = ConvertBytesToKeypadString(dataBytes);
123 var build =
new StringBuilder();
124 build.AppendLine($
"Reader Number: {ReaderNumber}");
125 build.AppendLine($
" Digit Count: {DigitCount}");
126 build.AppendLine($
" Data: {ConvertBytesToKeypadString(Data)}");
127 return build.ToString();
130 private static byte[] ConvertKeypadStringToBytes(
string data)
132 var bytes =
new byte[data.Length];
133 for (
int index = 0; index < data.Length; index++)
135 bytes[index] = data[index]
switch
139 _ => (byte)data[index]
145 private static string ConvertBytesToKeypadString(
byte[] data)
147 var build =
new StringBuilder();
148 foreach (var digit
in data)
159 build.Append(Convert.ToChar(digit));
163 return build.ToString();
Contains standard Security Control Block data that can be used when building messages.
Base class representing a payload an OSDP message.
override ReadOnlySpan< byte > SecurityControlBlock()
ushort DigitCount
Number of digits in the return data.
override string ToString()
override byte[] BuildData()
static KeypadData ParseData(ReadOnlySpan< byte > data)
Parses the message payload bytes.
KeypadData(byte readerNumber, string data)
Creates a new instance of KeypadData.
byte ReaderNumber
Reader number 0=First Reader 1=Second Reader.
ReplyType
Identifies the type of OSDP protocol reply (PD -> ACU) message.