private static byte[] FormatMessage(ref LowLevelRequestMessage message) { var bytes = new ByteArrayBuilder() .Add(Bytes.SYN) .Add(message.Command.acronym); if (!message.Parameters.Any()) { message = message.With(parameters: new[] { string.Empty }); } foreach (var parameter in message.Parameters) { bytes .Add(parameter.Length.ToString("000")) .Add(parameter); } bytes.Add(Bytes.ETB); var crc = Crc16.Compute(bytes.Skip(1)); bytes.Add((byte)(crc / 256), (byte)(crc % 256)); return(bytes.ToArray()); }
public Task SendCommandAsync(LowLevelRequestMessage message) { var bytes = FormatMessage(ref message); return(this.rawPinPad.SendRawMessageAsync(bytes)); }