public RegisterContainer(ILoggerFactoryAdapter loggerFactoryAdapter, ICommandProcessor commandProcessor) { ConfigurationRegister = new ConfigurationRegister(loggerFactoryAdapter, commandProcessor); EnableAutoAcknowledgementRegister = new EnableAutoAcknowledgementRegister(loggerFactoryAdapter, commandProcessor); EnableReceiveAddressRegister = new EnableReceiveAddressRegister(loggerFactoryAdapter, commandProcessor); AddressWidthRegister = new SetupAddressWidthRegister(loggerFactoryAdapter, commandProcessor); SetupRetransmissionRegister = new SetupRetransmissionRegister(loggerFactoryAdapter, commandProcessor); RfChannelRegister = new RfChannelRegister(loggerFactoryAdapter, commandProcessor); RfSetupRegister = new RfSetupRegister(loggerFactoryAdapter, commandProcessor); StatusRegister = new StatusRegister(loggerFactoryAdapter, commandProcessor); ObserveTransmitRegister = new ObserveTransmitRegister(loggerFactoryAdapter, commandProcessor); ReceivedPowerDetectorRegister = new ReceivedPowerDetectorRegister(loggerFactoryAdapter, commandProcessor); TransmitAddressRegister = new AddressPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.TX_ADDR, RegisterDefaults.TX_ADDR, 0, "TX_ADDR"); FifoStatusRegister = new FifoStatusRegister(loggerFactoryAdapter, commandProcessor); DynamicPayloadLengthRegister = new DynamicPayloadLengthRegister(loggerFactoryAdapter, commandProcessor); FeatureRegister = new FeatureRegister(loggerFactoryAdapter, commandProcessor); ReceiveAddressPipeRegisters = new RegisterCollection<AddressPipeRegister> { {0, new AddressPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.RX_ADDR_P0, RegisterDefaults.RX_ADDR_P0, 0, "RX_ADDR_P0")}, {1, new AddressPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.RX_ADDR_P1, RegisterDefaults.RX_ADDR_P1, 1, "RX_ADDR_P1")}, {2, new AddressPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.RX_ADDR_P2, RegisterDefaults.RX_ADDR_P2, 2, "RX_ADDR_P2")}, {3, new AddressPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.RX_ADDR_P3, RegisterDefaults.RX_ADDR_P3, 3, "RX_ADDR_P3")}, {4, new AddressPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.RX_ADDR_P4, RegisterDefaults.RX_ADDR_P4, 4, "RX_ADDR_P4")}, {5, new AddressPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.RX_ADDR_P5, RegisterDefaults.RX_ADDR_P5, 5, "RX_ADDR_P5")}, }; ReceivePayloadWidthPipeRegisters = new RegisterCollection<ReceivePayloadWidthPipeRegister> { {0, new ReceivePayloadWidthPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.RX_PW_P0, RegisterDefaults.RX_PW_P0, 0, "RX_PW_P0")}, {1, new ReceivePayloadWidthPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.RX_PW_P1, RegisterDefaults.RX_PW_P1, 1, "RX_PW_P1")}, {2, new ReceivePayloadWidthPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.RX_PW_P2, RegisterDefaults.RX_PW_P2, 2, "RX_PW_P2")}, {3, new ReceivePayloadWidthPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.RX_PW_P3, RegisterDefaults.RX_PW_P3, 3, "RX_PW_P3")}, {4, new ReceivePayloadWidthPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.RX_PW_P4, RegisterDefaults.RX_PW_P4, 4, "RX_PW_P4")}, {5, new ReceivePayloadWidthPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.RX_PW_P5, RegisterDefaults.RX_PW_P5, 5, "RX_PW_P5")} }; AllRegisters = new RegisterCollection<IRegister> { {RegisterAddresses.CONFIG, ConfigurationRegister}, {RegisterAddresses.EN_AA, EnableAutoAcknowledgementRegister}, {RegisterAddresses.EN_RXADDR, EnableReceiveAddressRegister}, {RegisterAddresses.SETUP_AW, AddressWidthRegister}, {RegisterAddresses.SETUP_RETR, SetupRetransmissionRegister}, {RegisterAddresses.RF_CH, RfChannelRegister}, {RegisterAddresses.RF_SETUP, RfSetupRegister}, {RegisterAddresses.STATUS, StatusRegister}, {RegisterAddresses.OBSERVE_TX, ObserveTransmitRegister}, {RegisterAddresses.RPD, ReceivedPowerDetectorRegister}, {RegisterAddresses.RX_ADDR_P0, ReceiveAddressPipeRegisters[0]}, {RegisterAddresses.RX_ADDR_P1, ReceiveAddressPipeRegisters[1]}, {RegisterAddresses.RX_ADDR_P2, ReceiveAddressPipeRegisters[2]}, {RegisterAddresses.RX_ADDR_P3, ReceiveAddressPipeRegisters[3]}, {RegisterAddresses.RX_ADDR_P4, ReceiveAddressPipeRegisters[4]}, {RegisterAddresses.RX_ADDR_P5, ReceiveAddressPipeRegisters[5]}, {RegisterAddresses.TX_ADDR, TransmitAddressRegister}, {RegisterAddresses.RX_PW_P0, ReceivePayloadWidthPipeRegisters[0]}, {RegisterAddresses.RX_PW_P1, ReceivePayloadWidthPipeRegisters[1]}, {RegisterAddresses.RX_PW_P2, ReceivePayloadWidthPipeRegisters[2]}, {RegisterAddresses.RX_PW_P3, ReceivePayloadWidthPipeRegisters[3]}, {RegisterAddresses.RX_PW_P4, ReceivePayloadWidthPipeRegisters[4]}, {RegisterAddresses.RX_PW_P5, ReceivePayloadWidthPipeRegisters[5]}, {RegisterAddresses.FIFO_STATUS, FifoStatusRegister}, {RegisterAddresses.DYNPD, DynamicPayloadLengthRegister}, {RegisterAddresses.FEATURE, FeatureRegister} }; // Set the LoadStatusRegister Action of the ICommandProcessor to call // StatusRegister.Load. This will ensure that the Status register is // automatically updated after call ICommandProcessor.ExecuteCommand() commandProcessor.LoadStatusRegister = StatusRegister.Load; }
public RegisterContainer(ILoggerFactoryAdapter loggerFactoryAdapter, ICommandProcessor commandProcessor) { ConfigurationRegister = new ConfigurationRegister(loggerFactoryAdapter, commandProcessor); EnableAutoAcknowledgementRegister = new EnableAutoAcknowledgementRegister(loggerFactoryAdapter, commandProcessor); EnableReceiveAddressRegister = new EnableReceiveAddressRegister(loggerFactoryAdapter, commandProcessor); AddressWidthRegister = new SetupAddressWidthRegister(loggerFactoryAdapter, commandProcessor); SetupRetransmissionRegister = new SetupRetransmissionRegister(loggerFactoryAdapter, commandProcessor); RfChannelRegister = new RfChannelRegister(loggerFactoryAdapter, commandProcessor); RfSetupRegister = new RfSetupRegister(loggerFactoryAdapter, commandProcessor); StatusRegister = new StatusRegister(loggerFactoryAdapter, commandProcessor); ObserveTransmitRegister = new ObserveTransmitRegister(loggerFactoryAdapter, commandProcessor); ReceivedPowerDetectorRegister = new ReceivedPowerDetectorRegister(loggerFactoryAdapter, commandProcessor); TransmitAddressRegister = new AddressPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.TX_ADDR, RegisterDefaults.TX_ADDR, 0, "TX_ADDR"); FifoStatusRegister = new FifoStatusRegister(loggerFactoryAdapter, commandProcessor); DynamicPayloadLengthRegister = new DynamicPayloadLengthRegister(loggerFactoryAdapter, commandProcessor); FeatureRegister = new FeatureRegister(loggerFactoryAdapter, commandProcessor); ReceiveAddressPipeRegisters = new RegisterCollection <AddressPipeRegister> { { 0, new AddressPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.RX_ADDR_P0, RegisterDefaults.RX_ADDR_P0, 0, "RX_ADDR_P0") }, { 1, new AddressPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.RX_ADDR_P1, RegisterDefaults.RX_ADDR_P1, 1, "RX_ADDR_P1") }, { 2, new AddressPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.RX_ADDR_P2, RegisterDefaults.RX_ADDR_P2, 2, "RX_ADDR_P2") }, { 3, new AddressPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.RX_ADDR_P3, RegisterDefaults.RX_ADDR_P3, 3, "RX_ADDR_P3") }, { 4, new AddressPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.RX_ADDR_P4, RegisterDefaults.RX_ADDR_P4, 4, "RX_ADDR_P4") }, { 5, new AddressPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.RX_ADDR_P5, RegisterDefaults.RX_ADDR_P5, 5, "RX_ADDR_P5") }, }; ReceivePayloadWidthPipeRegisters = new RegisterCollection <ReceivePayloadWidthPipeRegister> { { 0, new ReceivePayloadWidthPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.RX_PW_P0, RegisterDefaults.RX_PW_P0, 0, "RX_PW_P0") }, { 1, new ReceivePayloadWidthPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.RX_PW_P1, RegisterDefaults.RX_PW_P1, 1, "RX_PW_P1") }, { 2, new ReceivePayloadWidthPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.RX_PW_P2, RegisterDefaults.RX_PW_P2, 2, "RX_PW_P2") }, { 3, new ReceivePayloadWidthPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.RX_PW_P3, RegisterDefaults.RX_PW_P3, 3, "RX_PW_P3") }, { 4, new ReceivePayloadWidthPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.RX_PW_P4, RegisterDefaults.RX_PW_P4, 4, "RX_PW_P4") }, { 5, new ReceivePayloadWidthPipeRegister(loggerFactoryAdapter, commandProcessor, RegisterAddresses.RX_PW_P5, RegisterDefaults.RX_PW_P5, 5, "RX_PW_P5") } }; AllRegisters = new RegisterCollection <IRegister> { { RegisterAddresses.CONFIG, ConfigurationRegister }, { RegisterAddresses.EN_AA, EnableAutoAcknowledgementRegister }, { RegisterAddresses.EN_RXADDR, EnableReceiveAddressRegister }, { RegisterAddresses.SETUP_AW, AddressWidthRegister }, { RegisterAddresses.SETUP_RETR, SetupRetransmissionRegister }, { RegisterAddresses.RF_CH, RfChannelRegister }, { RegisterAddresses.RF_SETUP, RfSetupRegister }, { RegisterAddresses.STATUS, StatusRegister }, { RegisterAddresses.OBSERVE_TX, ObserveTransmitRegister }, { RegisterAddresses.RPD, ReceivedPowerDetectorRegister }, { RegisterAddresses.RX_ADDR_P0, ReceiveAddressPipeRegisters[0] }, { RegisterAddresses.RX_ADDR_P1, ReceiveAddressPipeRegisters[1] }, { RegisterAddresses.RX_ADDR_P2, ReceiveAddressPipeRegisters[2] }, { RegisterAddresses.RX_ADDR_P3, ReceiveAddressPipeRegisters[3] }, { RegisterAddresses.RX_ADDR_P4, ReceiveAddressPipeRegisters[4] }, { RegisterAddresses.RX_ADDR_P5, ReceiveAddressPipeRegisters[5] }, { RegisterAddresses.TX_ADDR, TransmitAddressRegister }, { RegisterAddresses.RX_PW_P0, ReceivePayloadWidthPipeRegisters[0] }, { RegisterAddresses.RX_PW_P1, ReceivePayloadWidthPipeRegisters[1] }, { RegisterAddresses.RX_PW_P2, ReceivePayloadWidthPipeRegisters[2] }, { RegisterAddresses.RX_PW_P3, ReceivePayloadWidthPipeRegisters[3] }, { RegisterAddresses.RX_PW_P4, ReceivePayloadWidthPipeRegisters[4] }, { RegisterAddresses.RX_PW_P5, ReceivePayloadWidthPipeRegisters[5] }, { RegisterAddresses.FIFO_STATUS, FifoStatusRegister }, { RegisterAddresses.DYNPD, DynamicPayloadLengthRegister }, { RegisterAddresses.FEATURE, FeatureRegister } }; // Set the LoadStatusRegister Action of the ICommandProcessor to call // StatusRegister.Load. This will ensure that the Status register is // automatically updated after call ICommandProcessor.ExecuteCommand() commandProcessor.LoadStatusRegister = StatusRegister.Load; }