/// <summary>
        /// Initializes a new instance.
        /// </summary>
        ///
        /// <exception cref="ArgumentNullException">
        /// A null reference was passed to a method that did not accept it as a valid argument.</exception>
        public FeigReaderSettings(FeigReaderSettings settings)
        {
            Verify.NotNull(settings, nameof(settings));

            TransportSettings = new SerialTransportSettings(settings.TransportSettings);
            Address           = settings.Address;
            Timeout           = settings.Timeout;
            Protocol          = settings.Protocol;
        }
        /// <summary>
        /// Formats the request into its byte representation.
        /// </summary>
        public BufferSpan ToBufferSpan(FeigProtocol protocol = FeigProtocol.Standard)
        {
            if (protocol == FeigProtocol.Standard)
            {
                return(_ToStandardProtocolFrame());
            }

            if (protocol == FeigProtocol.Advanced)
            {
                return(_ToAdvancedProtocolFrame());
            }

            throw new NotSupportedException($"Protocol {protocol} not supported!");
        }
        /// <summary>
        /// Initializes a new instance.
        /// </summary>
        public FeigReaderSettings()
        {
            TransportSettings = new SerialTransportSettings {
                PortName  = "COM1",
                Baud      = 38400,
                DataBits  = 8,
                Parity    = Parity.Even,
                StopBits  = StopBits.One,
                Handshake = Handshake.None,
            };

            Address  = 0xFF;
            Timeout  = TimeSpan.FromMilliseconds(1000);
            Protocol = FeigProtocol.Advanced;
        }