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 static void InitConfiguration() { var configurationRegister = new ConfigurationRegister(ConsulClient); configurationRegister.SetKeyValueAsync($"basic/{ServiceName}", "{\"database\":\"Database=aspros.user;\"}").Wait(); configurationRegister.AddUpdatingPathAsync("basic").Wait(); ConfigurationRegister = configurationRegister; }
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; }
/// <summary> /// Initializes a new instance of the <see cref="Validator"/> class. /// </summary> protected Validator() { configurationRegister = new ConfigurationRegister(); }
public RegisterManager(Radio radio) { ConfigurationRegister = new ConfigurationRegister(radio); EnableAutoAcknowledgementRegister = new EnableAutoAcknowledgementRegister(radio); EnableReceiveAddressRegister = new EnableReceiveAddressRegister(radio); AddressWidthRegister = new SetupAddressWidthRegister(radio); SetupRetransmissionRegister = new SetupRetransmissionRegister(radio); RfChannelRegister = new RfChannelRegister(radio); RfSetupRegister = new RfSetupRegister(radio); StatusRegister = new StatusRegister(radio); ObserveTransmitRegister = new ObserveTransmitRegister(radio); ReceivedPowerDetectorRegister = new ReceivedPowerDetectorRegister(radio); TransmitAddressRegister = new AddressPipeRegister(radio, Addresses.TX_ADDR, 0); FifoStatusRegister = new FifoStatusRegister(radio); DynamicPayloadLengthRegister = new DynamicPayloadLengthRegister(radio); FeatureRegister = new FeatureRegister(radio); ReceiveAddressPipeRegisters = new RegisterCollection<AddressPipeRegister> { {0, new AddressPipeRegister(radio, Addresses.RX_ADDR_P0, 0)}, {1, new AddressPipeRegister(radio, Addresses.RX_ADDR_P1, 1)}, {2, new AddressPipeRegister(radio, Addresses.RX_ADDR_P1, 2)}, {3, new AddressPipeRegister(radio, Addresses.RX_ADDR_P1, 3)}, {4, new AddressPipeRegister(radio, Addresses.RX_ADDR_P1, 4)}, {5, new AddressPipeRegister(radio, Addresses.RX_ADDR_P1, 5)}, }; ReceivePayloadWidthPipeRegisters = new RegisterCollection<ReceivePayloadWidthPipeRegister> { {0, new ReceivePayloadWidthPipeRegister(radio, Addresses.RX_PW_P0, 0)}, {1, new ReceivePayloadWidthPipeRegister(radio, Addresses.RX_PW_P1, 1)}, {2, new ReceivePayloadWidthPipeRegister(radio, Addresses.RX_PW_P2, 2)}, {3, new ReceivePayloadWidthPipeRegister(radio, Addresses.RX_PW_P3, 3)}, {4, new ReceivePayloadWidthPipeRegister(radio, Addresses.RX_PW_P4, 4)}, {5, new ReceivePayloadWidthPipeRegister(radio, Addresses.RX_PW_P5, 5)} }; AllRegisters = new RegisterCollection<RegisterBase> { {Addresses.CONFIG, ConfigurationRegister}, {Addresses.EN_AA, EnableAutoAcknowledgementRegister}, {Addresses.EN_RXADDR, EnableReceiveAddressRegister}, {Addresses.SETUP_AW, AddressWidthRegister}, {Addresses.SETUP_RETR, SetupRetransmissionRegister}, {Addresses.RF_CH, RfChannelRegister}, {Addresses.RF_SETUP, RfSetupRegister}, {Addresses.STATUS, StatusRegister}, {Addresses.OBSERVE_TX, ObserveTransmitRegister}, {Addresses.RPD, ReceivedPowerDetectorRegister}, {Addresses.RX_ADDR_P0, ReceiveAddressPipeRegisters[0]}, {Addresses.RX_ADDR_P1, ReceiveAddressPipeRegisters[1]}, {Addresses.RX_ADDR_P2, ReceiveAddressPipeRegisters[2]}, {Addresses.RX_ADDR_P3, ReceiveAddressPipeRegisters[3]}, {Addresses.RX_ADDR_P4, ReceiveAddressPipeRegisters[4]}, {Addresses.RX_ADDR_P5, ReceiveAddressPipeRegisters[5]}, {Addresses.TX_ADDR, TransmitAddressRegister}, {Addresses.RX_PW_P0, ReceivePayloadWidthPipeRegisters[0]}, {Addresses.RX_PW_P1, ReceivePayloadWidthPipeRegisters[1]}, {Addresses.RX_PW_P2, ReceivePayloadWidthPipeRegisters[2]}, {Addresses.RX_PW_P3, ReceivePayloadWidthPipeRegisters[3]}, {Addresses.RX_PW_P4, ReceivePayloadWidthPipeRegisters[4]}, {Addresses.RX_PW_P5, ReceivePayloadWidthPipeRegisters[5]}, {Addresses.FIFO_STATUS, FifoStatusRegister}, {Addresses.DYNPD, DynamicPayloadLengthRegister}, {Addresses.FEATURE, FeatureRegister} }; }
public RegisterManager(Radio radio) { ConfigurationRegister = new ConfigurationRegister(radio); EnableAutoAcknowledgementRegister = new EnableAutoAcknowledgementRegister(radio); EnableReceiveAddressRegister = new EnableReceiveAddressRegister(radio); AddressWidthRegister = new SetupAddressWidthRegister(radio); SetupRetransmissionRegister = new SetupRetransmissionRegister(radio); RfChannelRegister = new RfChannelRegister(radio); RfSetupRegister = new RfSetupRegister(radio); StatusRegister = new StatusRegister(radio); ObserveTransmitRegister = new ObserveTransmitRegister(radio); ReceivedPowerDetectorRegister = new ReceivedPowerDetectorRegister(radio); TransmitAddressRegister = new AddressPipeRegister(radio, Addresses.TX_ADDR, 0); FifoStatusRegister = new FifoStatusRegister(radio); DynamicPayloadLengthRegister = new DynamicPayloadLengthRegister(radio); FeatureRegister = new FeatureRegister(radio); ReceiveAddressPipeRegisters = new RegisterCollection <AddressPipeRegister> { { 0, new AddressPipeRegister(radio, Addresses.RX_ADDR_P0, 0) }, { 1, new AddressPipeRegister(radio, Addresses.RX_ADDR_P1, 1) }, { 2, new AddressPipeRegister(radio, Addresses.RX_ADDR_P1, 2) }, { 3, new AddressPipeRegister(radio, Addresses.RX_ADDR_P1, 3) }, { 4, new AddressPipeRegister(radio, Addresses.RX_ADDR_P1, 4) }, { 5, new AddressPipeRegister(radio, Addresses.RX_ADDR_P1, 5) }, }; ReceivePayloadWidthPipeRegisters = new RegisterCollection <ReceivePayloadWidthPipeRegister> { { 0, new ReceivePayloadWidthPipeRegister(radio, Addresses.RX_PW_P0, 0) }, { 1, new ReceivePayloadWidthPipeRegister(radio, Addresses.RX_PW_P1, 1) }, { 2, new ReceivePayloadWidthPipeRegister(radio, Addresses.RX_PW_P2, 2) }, { 3, new ReceivePayloadWidthPipeRegister(radio, Addresses.RX_PW_P3, 3) }, { 4, new ReceivePayloadWidthPipeRegister(radio, Addresses.RX_PW_P4, 4) }, { 5, new ReceivePayloadWidthPipeRegister(radio, Addresses.RX_PW_P5, 5) } }; AllRegisters = new RegisterCollection <RegisterBase> { { Addresses.CONFIG, ConfigurationRegister }, { Addresses.EN_AA, EnableAutoAcknowledgementRegister }, { Addresses.EN_RXADDR, EnableReceiveAddressRegister }, { Addresses.SETUP_AW, AddressWidthRegister }, { Addresses.SETUP_RETR, SetupRetransmissionRegister }, { Addresses.RF_CH, RfChannelRegister }, { Addresses.RF_SETUP, RfSetupRegister }, { Addresses.STATUS, StatusRegister }, { Addresses.OBSERVE_TX, ObserveTransmitRegister }, { Addresses.RPD, ReceivedPowerDetectorRegister }, { Addresses.RX_ADDR_P0, ReceiveAddressPipeRegisters[0] }, { Addresses.RX_ADDR_P1, ReceiveAddressPipeRegisters[1] }, { Addresses.RX_ADDR_P2, ReceiveAddressPipeRegisters[2] }, { Addresses.RX_ADDR_P3, ReceiveAddressPipeRegisters[3] }, { Addresses.RX_ADDR_P4, ReceiveAddressPipeRegisters[4] }, { Addresses.RX_ADDR_P5, ReceiveAddressPipeRegisters[5] }, { Addresses.TX_ADDR, TransmitAddressRegister }, { Addresses.RX_PW_P0, ReceivePayloadWidthPipeRegisters[0] }, { Addresses.RX_PW_P1, ReceivePayloadWidthPipeRegisters[1] }, { Addresses.RX_PW_P2, ReceivePayloadWidthPipeRegisters[2] }, { Addresses.RX_PW_P3, ReceivePayloadWidthPipeRegisters[3] }, { Addresses.RX_PW_P4, ReceivePayloadWidthPipeRegisters[4] }, { Addresses.RX_PW_P5, ReceivePayloadWidthPipeRegisters[5] }, { Addresses.FIFO_STATUS, FifoStatusRegister }, { Addresses.DYNPD, DynamicPayloadLengthRegister }, { Addresses.FEATURE, FeatureRegister } }; }
private void WriteRegister(ConfigurationRegister register, byte value) { writeBuffer[0] = (byte)((int)register | 0x80); writeBuffer[1] = value; spi.Write(writeBuffer); }
private byte ReadRegister(ConfigurationRegister register) { writeBuffer[0] = (byte)((int)register & 0x7F); spi.WriteRead(writeBuffer, readBuffer); return readBuffer[1]; }