private double AdjustSamplingInterval(double samplingInterval)
{
foreach (SamplingRateGroup samplingRate in m_samplingRates)
{
// groups are ordered by start rate.
if (samplingInterval <= samplingRate.Start)
{
return samplingRate.Start;
}
// check if within range specfied by the group.
double maxSamplingRate = samplingRate.Start;
if (samplingRate.Increment > 0)
{
maxSamplingRate += samplingRate.Increment*samplingRate.Count;
}
if (samplingInterval > maxSamplingRate)
{
continue;
}
// find sampling rate within rate group.
if (samplingInterval == maxSamplingRate)
{
return maxSamplingRate;
}
for (double ii = samplingRate.Start; ii <= maxSamplingRate; ii += samplingRate.Increment)
{
if (ii >= samplingInterval)
{
return ii;
}
}
}
return samplingInterval;
}