public void StartListening() { ConfigurationRegister configRegister = Configuration.Registers.ConfigurationRegister; configRegister.PWR_UP = true; configRegister.PRIM_RX = true; configRegister.Save(); StatusRegister statusRegister = Configuration.Registers.StatusRegister; statusRegister.RX_DR = false; statusRegister.TX_DS = false; statusRegister.MAX_RT = false; statusRegister.Save(); // Restore the pipe0 address, if exists if (_receiveAddressPipe0 > 0) { AddressPipeRegister receiveAddressPipe0Register = Configuration.Registers.ReceiveAddressPipeRegisters[0]; receiveAddressPipe0Register.Load(BitConverter.GetBytes(_receiveAddressPipe0)); receiveAddressPipe0Register.Save(); } TransmitPipe.FlushBuffer(); ReceivePipes.FlushBuffer(); ChipEnable(true); }
public void StartWrite(byte[] data) { ConfigurationRegister configRegister = Configuration.Registers.ConfigurationRegister; configRegister.PWR_UP = true; configRegister.PRIM_RX = false; configRegister.Save(); Utilities.DelayMicroseconds(150); WritePayload(data); ChipEnable(true); ChipEnable(false); }
public Radio(ICommandProcessor commandProcessor, ILoggerFactoryAdapter loggerFactoryAdapter, GpioPin powerPin, GpioPin cePin, GpioPin irqPin = null) { _syncRoot = new object(); _operatingMode = OperatingModes.PowerOff; _powerPin = powerPin; _powerPin.Write(GpioPinValue.Low); _cePin = cePin; _cePin.Write(GpioPinValue.Low); _loggerFactoryAdapter = loggerFactoryAdapter; _logger = _loggerFactoryAdapter.GetLogger(GetType()); _commandProcessor = commandProcessor; _commandProcessor.LoggerFactory = _loggerFactoryAdapter; _commandProcessor.GetOperatingMode = () => OperatingMode; RegisterContainer = new RegisterContainer(_loggerFactoryAdapter, _commandProcessor); OperatingMode = OperatingModes.PowerDown; RegisterContainer.ResetRegistersToDefault(); Configuration = new Configuration(_loggerFactoryAdapter, _commandProcessor, RegisterContainer); TransmitPipe = new TransmitPipe(_loggerFactoryAdapter, Configuration, _commandProcessor, RegisterContainer, _cePin); ReceivePipes = new ReceivePipeCollection(_loggerFactoryAdapter, Configuration, _commandProcessor, RegisterContainer); bool useIrq = irqPin != null; if (useIrq) { _irqPin = irqPin; _irqPin.Write(GpioPinValue.High); _irqPin.ValueChanged += irqPin_ValueChanged; } ConfigurationRegister configurationRegister = RegisterContainer.ConfigurationRegister; configurationRegister.MaximunTransmitRetriesMask = !useIrq; configurationRegister.ReceiveDataReadyMask = !useIrq; configurationRegister.TransmitDataSentMask = !useIrq; configurationRegister.Save(); OperatingMode = OperatingModes.StandBy; }
public void ConstantCarrierWaveOutputForTestinng() { Debug.WriteLine(_radio.GetArduinoDetails()); ConfigurationRegister configurationRegister = _radio.RegisterContainer.ConfigurationRegister; configurationRegister.PowerUp = true; configurationRegister.PrimaryReceiveMode = false; configurationRegister.Save(); Task.Delay(150).Wait(); RfSetupRegister rfSetupRegister = _radio.RegisterContainer.RfSetupRegister; rfSetupRegister.EnableContiuousCarrierTransmit = true; rfSetupRegister.ForcePllSignalLock = true; rfSetupRegister.PowerLevel = 3; rfSetupRegister.Save(); RfChannelRegister rfChannelRegister = _radio.RegisterContainer.RfChannelRegister; rfChannelRegister.RfChannel = 1; rfChannelRegister.Save(); _radio.OperatingMode = OperatingModes.ReceiveMode; }