private void EnsureUniqueFrequenciesWithinCell(FrequencyHandler freqHandler) { Random r = new Random(); for (int i = 0; i < freqHandler.Length; i++) { if (freqHandler.Count(f => f == freqHandler[i]) > 1) { int newFrequency = r.Next(0,Channels.Length); while (freqHandler.Contains(newFrequency)) { newFrequency = r.Next(0,Channels.Length); } freqHandler[i] = new TRX(newFrequency); } } }
public override void ResolveCollisions(FrequencyHandler freqHandler) { if (hasLBC(freqHandler)) { ResolveLBCCollisions(freqHandler); } if (freqHandler is FrequencyHandlerWithTabu) { FrequencyHandlerWithTabu frequencyHandler = freqHandler as FrequencyHandlerWithTabu; foreach (TRXTabu tabu in frequencyHandler.TabuList) { var collisions = FindCollisionsForTabuItem(frequencyHandler, tabu); HandleCollisions(collisions, frequencyHandler); } } else return; }
private bool hasLBC(FrequencyHandler freqHandler) { return freqHandler.GetParentCell().HasLocallyBlockedChannels(); }
private void ResolveLBCCollisions(FrequencyHandler freqHandler) { Random r = new Random(); int count = 0; for (int i = 0; i < freqHandler.Length; i++) { int channelValue = Channels[freqHandler[i]]; if (freqHandler.GetParentCell().LocallyBlocked.Contains(channelValue)) { freqHandler[i] = r.Next(0, Channels.Length); count++; if (count <= 10) { i--; } } else { count = 0; } } }
private void InitializeFrequencyHandlerIfNotNullFromCell(BasicCell basicCell) { if (basicCell.frequencyHandler != null) { frequencyHandler = CreateFrequencyHandler(); } }
public abstract void ResolveCollisions(FrequencyHandler frequencyHandler);