void avtVectorGlyphMapper::SetMappersMinMax(void) { if (mappers == NULL) { // // This happens when SetMin is called before the mappers are // initialized. // return; } double mmin = 0.; double mmax = 0.; if (limitsMode == 1 ) // use current plot extents { GetCurrentRange(mmin, mmax); } else // use either original data extents or user-specified limits { GetRange(mmin, mmax); } for (int i = 0 ; i < nMappers ; i++) { if (mappers[i] != NULL) { mappers[i]->SetScalarRange(mmin, mmax); } } }
void MeasuringReceiver::Recalibrate(double ¢erOut, double &powerOut, IQCapture &iqc) { int atten, gain; MeasRcvrRange level = GetCurrentRange(); switch(level) { case MeasRcvrRangeHigh: atten = 30; gain = 1; break; case MeasRcvrRangeMid: atten = 30; gain = 3; break; case MeasRcvrRangeLow: atten = 0; gain = 3; break; } emit updateLabels("", "", "", ""); emit updateRangeLevelText("Calibrating", rangeColorGreen); emit updateRangeEnabled(rangeLevelNone); emit updateEntryEnabled(false); device->ConfigureForTRFL(freqEntry->GetFrequency(), level, atten, gain, descriptor); iqc.capture.resize(descriptor.returnLen); for(int i = 0; i < 3; i++) { device->GetIQFlush(&iqc, true); } centerOut = getSignalFrequency(iqc.capture, descriptor.sampleRate); // 312500.0); centerOut /= descriptor.sampleRate; //312500.0; for(int i = 0; i < 30; i++) { // Amplitude settles in roughly 30 packets ? if(i % 10 == 0) { QString calStr = "Calibrating"; for(int j = 0; j < (i / 10) + 1; j++) calStr += "."; emit updateRangeLevelText(calStr, rangeColorGreen); } device->GetIQFlush(&iqc, true); getPeakCorrelation(&iqc.capture[0], 4096, centerOut, centerOut, powerOut, descriptor.sampleRate); std::cout << "Pre Center " << centerOut << " " << powerOut << std::endl; } emit updateRangeLevelText("", rangeColorBlack); emit updateEntryEnabled(true); recalibrate = false; }
void MeasuringReceiver::ProcessThread() { IQCapture capture; double center, power, relative, offset; std::list<double> average; std::vector<complex_f> full; while(running) { // Reinitialize to start tuned level measurements over if(reinitialize) { ampGroup->button(0)->setChecked(true); // Select high power emit updateRangeEnabled(rangeLevelNone); power = 0.0; offset = 0.0; relative = 0.0; reinitialize = false; recalibrate = true; } // Recalibrates to a new range // Range must be chosen before entering this block if(recalibrate) { offset += (power - relative); Recalibrate(center, power, capture); relative = power; full.resize(descriptor.returnLen * 3); average.clear(); } device->GetIQFlush(&capture, true); simdCopy_32fc(&capture.capture[0], &full[0], descriptor.returnLen); for(int i = 1; i < 3; i++) { device->GetIQ(&capture); simdCopy_32fc(&capture.capture[0], &full[i * descriptor.returnLen], descriptor.returnLen); } getPeakCorrelation(&full[0], descriptor.returnLen*3, center, center, power, descriptor.sampleRate); std::cout << "Post center " << center << " " << power << "\n"; if(device->ADCOverflow()) { emit updateRangeLevelText("IF Overload", rangeColorRed); } else { if(GetCurrentRange() == MeasRcvrRangeHigh) { if(power > -25.0) { emit updateRangeLevelText("", rangeColorBlack); emit updateRangeEnabled(rangeLevelNone); } else if(power < -40.0) { emit updateRangeLevelText(MeasRcvrRangeMid, "Passed Mid-Range", rangeColorRed); emit updateRangeEnabled(rangeLevelNone); } else { emit updateRangeLevelText(MeasRcvrRangeMid, "Recal at new range", rangeColorOrange); emit updateRangeEnabled(MeasRcvrRangeMid); } } else if(GetCurrentRange() == MeasRcvrRangeMid) { if(power > -50.0) { emit updateRangeLevelText("", rangeColorBlack); emit updateRangeEnabled(rangeLevelNone); } else if(power < -65.0) { emit updateRangeLevelText(MeasRcvrRangeLow, "Passed Low-Range", rangeColorRed); emit updateRangeEnabled(rangeLevelNone); } else { emit updateRangeLevelText(MeasRcvrRangeLow, "Recal at new range", rangeColorOrange); emit updateRangeEnabled(MeasRcvrRangeLow); } } else { emit updateRangeLevelText("", rangeColorBlack); emit updateRangeEnabled(rangeLevelNone); } } // Lets update our text double diff = (power - relative) + offset; average.push_front(diff); while(average.size() > 20) average.pop_back(); double avgPower = 0.0; for(double d : average) avgPower += d; avgPower /= average.size(); QString centerStr, powerStr, relativeStr, averageStr; centerStr = Frequency(freqEntry->GetFrequency() + center * descriptor.sampleRate/*312500.0*/).GetFreqString(); powerStr.sprintf("%.3f dBm", power); relativeStr.sprintf("%.3f dB", diff); averageStr.sprintf("%.3f dB", avgPower); emit updateLabels(centerStr, powerStr, relativeStr, averageStr); } device->Abort(); }