public bool Write(byte[] data, bool disableAck = false, int timeout = 1000)
        {
            Stopwatch      stopwatch      = Stopwatch.StartNew();
            StatusRegister statusRegister = _registerContainer.StatusRegister;

            while (statusRegister.TransmitFifoFull)
            {
                if (statusRegister.MaximunTransmitRetries)
                {
                    //ReuseTransmitPayload();
                    bool checkOperatingMode = _commandProcessor.CheckOperatingMode;
                    _commandProcessor.CheckOperatingMode = false;

                    statusRegister.ResetToDefault();
                    _commandProcessor.CheckOperatingMode = checkOperatingMode;
                    return(false);
                }
                //if (stopwatch.ElapsedMilliseconds() > timeout)
                //    return false;
                statusRegister.Load();
            }
            if (data.Length > Constants.MaxPayloadWidth)
            {
                throw new ArgumentOutOfRangeException(nameof(data), string.Format("Data should be 0-{0} bytes", Constants.MaxPayloadWidth));
            }
            _commandProcessor.ExecuteCommand(disableAck ? DeviceCommands.W_TX_PAYLOAD_NO_ACK : DeviceCommands.W_TX_PAYLOAD, RegisterAddresses.EMPTY_ADDRESS, data);
            return(true);
        }