Пример #1
0
        public override Task <RFmxNRAcpResults> NRFetchAcpResults(RFmxResultQuery request, ServerCallContext context)
        {
            var instr      = sessionMap[(IntPtr)request.Session.Handle];
            var nr         = GetNRSignalConfiguration(instr, request.SignalName);
            var acpResults = RFmxNR.FetchAcp(nr, request.SelectorString);
            var response   = new RFmxNRAcpResults();

            foreach (var componentCarrierResult in acpResults.ComponentCarrierResults)
            {
                response.ComponentCarrierResults.Add(new RFmxNRAcpComponentCarrierResults()
                {
                    AbsolutePowerDBm = componentCarrierResult.AbsolutePower_dBm,
                    RelativePowerDB  = componentCarrierResult.RelativePower_dB
                });
            }
            foreach (var offsetResult in acpResults.OffsetResults)
            {
                response.OffsetResults.Add(new RFmxNRAcpOffsetResults()
                {
                    FrequencyHz            = offsetResult.Frequency_Hz,
                    IntegrationBandwidthHz = offsetResult.IntegrationBandwidth_Hz,
                    LowerAbsolutePowerDBm  = offsetResult.LowerAbsolutePower_dBm,
                    LowerRelativePowerDB   = offsetResult.LowerRelativePower_dB,
                    UpperAbsolutePowerDBm  = offsetResult.UpperAbsolutePower_dBm,
                    UpperRelativePowerDB   = offsetResult.UpperRelativePower_dB
                });
            }
            return(Task.FromResult(response));
        }
Пример #2
0
        public override Task <Empty> NRConfigureModAcc(RFmxNRModAccConfiguration request, ServerCallContext context)
        {
            var instr = sessionMap[(IntPtr)request.Session.Handle];
            var nr    = GetNRSignalConfiguration(instr, request.SignalName);
            var modAccConfiguration = new RFmxNR.ModAccConfiguration()
            {
                AveragingCount        = request.AveragingCount,
                AveragingEnabled      = (RFmxNRMXModAccAveragingEnabled)(request.AveragingEnabled ? 1 : 0),
                EvmUnit               = (RFmxNRMXModAccEvmUnit)request.EvmUnit,
                MeasurementLength     = request.MeasurementLength,
                MeasurementLengthUnit = (RFmxNRMXModAccMeasurementLengthUnit)request.MeasurementLengthUnit,
                MeasurementOffset     = request.MeasurementOffset
            };

            RFmxNR.ConfigureModacc(nr, modAccConfiguration, request.SelectorString);
            return(Task.FromResult(new Empty()));
        }
Пример #3
0
        public override Task <Empty> NRConfigureCommon(RFmxCommonConfiguration request, ServerCallContext context)
        {
            var instr        = sessionMap[(IntPtr)request.Session.Handle];
            var nr           = GetNRSignalConfiguration(instr, request.SignalName);
            var commonConfig = new CommonConfiguration()
            {
                SelectedPorts          = request.SelectedPorts,
                CenterFrequency_Hz     = request.CenterFrequencyHz,
                ReferenceLevel_dBm     = request.ReferenceLevelDBm,
                ExternalAttenuation_dB = request.ExternalAttenuationDB,
                TriggerEnabled         = request.TriggerEnabled,
                DigitalTriggerSource   = request.DigitalTriggerSource,
                TriggerDelay_s         = request.TriggerDelayS
            };

            RFmxNR.ConfigureCommon(nr, commonConfig, request.SelectorString);
            return(Task.FromResult(new Empty()));
        }
Пример #4
0
        public override Task <Empty> NRSelectAndInitiateMeasurements(RFmxNRMeasurementConfiguration request, ServerCallContext context)
        {
            var instr = sessionMap[(IntPtr)request.Session.Handle];
            var nr    = GetNRSignalConfiguration(instr, request.SignalName);

            RFmxNRMXMeasurementTypes[] measurements = new RFmxNRMXMeasurementTypes[request.Measurements.Count];
            for (int i = 0; i < request.Measurements.Count; i++)
            {
                measurements[i] = (RFmxNRMXMeasurementTypes)request.Measurements[i];
            }
            AutoLevelConfiguration autoLevelConfig = new AutoLevelConfiguration()
            {
                Enabled = request.AutoLevelConfiguration.Enabled,
                MeasurementInterval_s = request.AutoLevelConfiguration.MeasurementInterval
            };

            RFmxNR.SelectAndInitiateMeasurements(nr, measurements, autoLevelConfig, request.EnableTraces, request.SelectorString, request.ResultName);
            return(Task.FromResult(new Empty()));
        }
Пример #5
0
        public override Task <RFmxNRModAccResults> NRFetchModAccResults(RFmxResultQuery request, ServerCallContext context)
        {
            var instr         = sessionMap[(IntPtr)request.Session.Handle];
            var nr            = GetNRSignalConfiguration(instr, request.SignalName);
            var modAccResults = RFmxNR.FetchModAcc(nr, request.SelectorString);
            var response      = new RFmxNRModAccResults();

            foreach (var result in modAccResults.ComponentCarrierResults)
            {
                response.ComponentCarrierResults.Add(new RFmxNRModAccComponentCarrierResults()
                {
                    MaxPeakCompositeEvm             = result.MaxPeakCompositeEvm,
                    MeanFrequencyErrorHz            = result.MeanFrequencyError_Hz,
                    MeanRmsCompositeEvm             = result.MeanRmsCompositeEvm,
                    PeakCompositeEvmSlotIndex       = result.PeakCompositeEvmSlotIndex,
                    PeakCompositeEvmSubcarrierIndex = result.PeakCompositeEvmSubcarrierIndex,
                    PeakCompositeEvmSymbolIndex     = result.PeakCompositeEvmSymbolIndex,
                });
            }
            return(Task.FromResult(response));
        }
Пример #6
0
        public override Task <Empty> NRConfigureAcp(RFmxNRAcpConfiguration request, ServerCallContext context)
        {
            var instr     = sessionMap[(IntPtr)request.Session.Handle];
            var nr        = GetNRSignalConfiguration(instr, request.SignalName);
            var acpConfig = new RFmxNR.AcpConfiguration()
            {
                AveragingCount           = request.AveragingCount,
                AveragingEnabled         = (RFmxNRMXAcpAveragingEnabled)(request.AveragingEnabled ? 1 : 0),
                AveragingType            = (RFmxNRMXAcpAveragingType)request.AveragingType,
                MeasurementMethod        = (RFmxNRMXAcpMeasurementMethod)request.MeasurementMethod,
                NoiseCompensationEnabled = (RFmxNRMXAcpNoiseCompensationEnabled)(request.NoiseCompensationEnabled ? 1 : 0),
                NumberOfEndcOffsets      = request.NumberOfEndcOffsets,
                NumberOfEutraOffsets     = request.NumberOfEutraOffsets,
                NumberOfNrOffsets        = request.NumberOfNrOffsets,
                NumberOfUtraOffsets      = request.NumberOfUtraOffsets,
                SweepTimeAuto            = (RFmxNRMXAcpSweepTimeAuto)(request.SweepTimeAuto ? 1 : 0),
                SweepTimeInterval_s      = request.SweepTimeIntervalS
            };

            RFmxNR.ConfigureAcp(nr, acpConfig, request.SelectorString);
            return(Task.FromResult(new Empty()));
        }
Пример #7
0
        public override Task <Empty> NRConfigureStandard(RFmxNRStandardConfiguration request, ServerCallContext context)
        {
            var instr          = sessionMap[(IntPtr)request.Session.Handle];
            var nr             = GetNRSignalConfiguration(instr, request.SignalName);
            var standardConfig = new RFmxNR.StandardConfiguration()
            {
                AutoResourceBlockDetectionEnabled = (RFmxNRMXAutoResourceBlockDetectionEnabled)(request.AutoResourceBlockDetectionEnabled ? 1 : 0),
                Band = request.Band,
                ComponentCarrierConfigurations = new RFmxNR.ComponentCarrierConfiguration[request.ComponentCarrierConfigurations.Count],
                DownlinkTestModel             = (RFmxNRMXDownlinkTestModel)request.DownlinkTestModel,
                DownlinkTestModelDuplexScheme = (RFmxNRMXDownlinkTestModelDuplexScheme)request.DownlinkTestModelDuplexScheme,
                FrequencyRange = (RFmxNRMXFrequencyRange)request.FrequencyRange,
                LinkDirection  = (RFmxNRMXLinkDirection)request.LinkDirection
            };

            for (int i = 0; i < request.ComponentCarrierConfigurations.Count; i++)
            {
                var requestComponentCarrierConfiguration = request.ComponentCarrierConfigurations[i];
                standardConfig.ComponentCarrierConfigurations[i] = new RFmxNR.ComponentCarrierConfiguration()
                {
                    Bandwidth_Hz = requestComponentCarrierConfiguration.BandwidthHz,
                    CellId       = requestComponentCarrierConfiguration.CellId,
                    PuschDmrsAdditionalPositions   = requestComponentCarrierConfiguration.PuschDmrsAdditionalPositions,
                    PuschDmrsConfigurationType     = (RFmxNRMXPuschDmrsConfigurationType)requestComponentCarrierConfiguration.PuschDmrsConfigurationType,
                    PuschDmrsDuration              = (RFmxNRMXPuschDmrsDuration)requestComponentCarrierConfiguration.PuschDmrsDuration,
                    PuschDmrsTypeAPosition         = requestComponentCarrierConfiguration.PuschDmrsTypeAPosition,
                    PuschMappingType               = (RFmxNRMXPuschMappingType)requestComponentCarrierConfiguration.PuschMappingType,
                    PuschModulationType            = (RFmxNRMXPuschModulationType)requestComponentCarrierConfiguration.PuschModulationType,
                    PuschNumberOfResourceBlocks    = requestComponentCarrierConfiguration.PuschNumberOfResourceBlocks,
                    PuschResourceBlockOffset       = requestComponentCarrierConfiguration.PuschResourceBlockOffset,
                    PuschSlotAllocation            = requestComponentCarrierConfiguration.PuschSlotAllocation,
                    PuschSymbolAllocation          = requestComponentCarrierConfiguration.PuschSymbolAllocation,
                    PuschTransformPrecodingEnabled = (RFmxNRMXPuschTransformPrecodingEnabled)(requestComponentCarrierConfiguration.PuschTransformPrecodingEnabled ? 1 : 0),
                    SubcarrierSpacing_Hz           = requestComponentCarrierConfiguration.SubcarrierSpacingHz
                };
            }
            RFmxNR.ConfigureStandard(nr, standardConfig, request.SelectorString);
            return(Task.FromResult(new Empty()));
        }