/// <summary>
        /// Creates the device register set (typed registers).
        /// Note that the BAR and offset can be specified by the caller so the same RegisterSet
        /// class can be used to define multiple unique RegisterSet instances (different offset
        /// and or BAR).
        /// </summary>
        /// <param name="manager">the IRegManager instance to add this RegisterSet to</param>
        /// <param name="instrument">the IInstrument instance these registers are for</param>
        /// <param name="groupName">the group name used to access this RegisterSet from IRegManager</param>
        /// <param name="registerSetOffset">an offset added to all register offsets</param>
        /// <param name="barIndex">the BAR to use</param>
        public ReceiverRegisterSet(IRegManager manager, IInstrument module, string groupName, int registerSetOffset, int barIndex)
        {
            // Create the factory
            RegFactory regFactory = new RegFactory(registerSetOffset, module, Reg32.ConstructReg);

            // Determine which IRegDriver (determines default BAR)
            IRegDriver regDriver = (barIndex >= module.RegDrivers.Length) ? null : module.RegDrivers[barIndex];

            if (regDriver == null)
            {
                throw new InternalApplicationException("ReceiverRegisterSet requires RegDriver for BAR" + barIndex);
            }

            // Create the register definitions
            Registers = regFactory.CreateRegArray(
                mRegisterDefinitions,
                typeof(ReceiverRegister),
                regDriver,
                module.Name);

            regFactory.CreateBitFields(mBitFieldDefinitions, Registers, module.Name, string.Empty);

            if (manager != null)
            {
                // Adding as a group creates an IDirtyBit and attaches to each register
                manager.AddGroup(groupName, this);
            }
            SoftwareFpgaReset = new Reg32T <SoftwareFpgaResetBF>((Reg32)Registers[(Int32)ReceiverRegister.SoftwareFpgaReset]);
            RfStatus          = new Reg32T <RfStatusBF>((Reg32)Registers[(Int32)ReceiverRegister.RfStatus]);
            FpgaVersion       = new Reg32T <FpgaVersionBF>((Reg32)Registers[(Int32)ReceiverRegister.FpgaVersion]);
            Reserved          = new Reg32T <ReservedBF>((Reg32)Registers[(Int32)ReceiverRegister.Reserved]);
            RfControl1        = new Reg32T <RfControl1BF>((Reg32)Registers[(Int32)ReceiverRegister.RfControl1]);
            RfControl2        = new Reg32T <RfControl2BF>((Reg32)Registers[(Int32)ReceiverRegister.RfControl2]);
            RfControl3        = new Reg32T <RfControl3BF>((Reg32)Registers[(Int32)ReceiverRegister.RfControl3]);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Creates the device register set (typed registers).
        /// Note that the BAR and offset can be specified by the caller so the same RegisterSet
        /// class can be used to define multiple unique RegisterSet instances (different offset
        /// and or BAR).
        /// </summary>
        /// <param name="manager">the IRegManager instance to add this RegisterSet to</param>
        /// <param name="instrument">the IInstrument instance these registers are for</param>
        /// <param name="groupName">the group name used to access this RegisterSet from IRegManager</param>
        /// <param name="registerSetOffset">an offset added to all register offsets</param>
        /// <param name="barIndex">the BAR to use</param>
        public SourceRegisterSet(IRegManager manager, IInstrument module, string groupName, int registerSetOffset, int barIndex)
        {
            // Create the factory
            RegFactory regFactory = new RegFactory(registerSetOffset, module, Reg32.ConstructReg);

            // Determine which IRegDriver (determines default BAR)
            IRegDriver regDriver = (barIndex >= module.RegDrivers.Length) ? null : module.RegDrivers[barIndex];

            if (regDriver == null)
            {
                throw new InternalApplicationException("SourceRegisterSet requires RegDriver for BAR" + barIndex);
            }

            // Create the register definitions
            Registers = regFactory.CreateRegArray(
                mRegisterDefinitions,
                typeof(SourceRegister),
                regDriver,
                module.Name);

            regFactory.CreateBitFields(mBitFieldDefinitions, Registers, module.Name, string.Empty);

            if (manager != null)
            {
                // Adding as a group creates an IDirtyBit and attaches to each register
                manager.AddGroup(groupName, this);
            }
            RFCntrl_path    = new Reg32T <RFCntrl_pathBF>((Reg32)Registers[(Int32)SourceRegister.RFCntrl_path]);
            RFCntrl_Port    = new Reg32T <RFCntrl_PortBF>((Reg32)Registers[(Int32)SourceRegister.RFCntrl_Port]);
            LOCntrl         = new Reg32T <LOCntrlBF>((Reg32)Registers[(Int32)SourceRegister.LOCntrl]);
            IQCntrl         = new Reg32T <IQCntrlBF>((Reg32)Registers[(Int32)SourceRegister.IQCntrl]);
            PowerCntrl      = new Reg32T <PowerCntrlBF>((Reg32)Registers[(Int32)SourceRegister.PowerCntrl]);
            RFAtten         = new Reg32T <RFAttenBF>((Reg32)Registers[(Int32)SourceRegister.RFAtten]);
            TempSensorCntrl = new Reg32T <TempSensorCntrlBF>((Reg32)Registers[(Int32)SourceRegister.TempSensorCntrl]);
            AbusRegister    = new Reg32T <AbusRegisterBF>((Reg32)Registers[(Int32)SourceRegister.AbusRegister]);
            RFUtility       = new Reg32T <RFUtilityBF>((Reg32)Registers[(Int32)SourceRegister.RFUtility]);
            RfStatus        = new Reg32T <RfStatusBF>((Reg32)Registers[(Int32)SourceRegister.RfStatus]);
            ChipID_L        = new Reg32T <ChipID_LBF>((Reg32)Registers[(Int32)SourceRegister.ChipID_L]);
            ChipID_H        = new Reg32T <ChipID_HBF>((Reg32)Registers[(Int32)SourceRegister.ChipID_H]);
            RfFpgaVersion   = new Reg32T <RfFpgaVersionBF>((Reg32)Registers[(Int32)SourceRegister.RfFpgaVersion]);
            RfFpgaSoftReset = new Reg32T <RfFpgaSoftResetBF>((Reg32)Registers[(Int32)SourceRegister.RfFpgaSoftReset]);
        }