/// <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]); }
/// <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]); }