mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-12 16:47:31 -05:00
#1996 P25P1 traffic channel monitor now clears allocated traffic channels each time the control frequency changes, which should be after a lose-sync event. This ensures that none of the traffic channel frequencies get blocked when the monitor thinks that a channel is already allocated. (#1997)
Co-authored-by: Dennis Sheirer <dsheirer@github.com>
This commit is contained in:
@@ -70,6 +70,7 @@ import java.util.Queue;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.LinkedTransferQueue;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
import java.util.function.BiConsumer;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@@ -169,12 +170,22 @@ public class P25TrafficChannelManager extends TrafficChannelManager implements I
|
||||
|
||||
try
|
||||
{
|
||||
Channel channel = mAllocatedTrafficChannelMap.get(current);
|
||||
|
||||
if(!parentChannel.equals(channel))
|
||||
//Shutdown all existing traffic channels and clear the maps.
|
||||
mAllocatedTrafficChannelMap.forEach(new BiConsumer<Long, Channel>()
|
||||
{
|
||||
broadcast(new ChannelEvent(mAllocatedTrafficChannelMap.get(current), Event.REQUEST_DISABLE));
|
||||
}
|
||||
@Override
|
||||
public void accept(Long aLong, Channel channel)
|
||||
{
|
||||
if(!parentChannel.equals(channel))
|
||||
{
|
||||
broadcast(new ChannelEvent(channel, Event.REQUEST_DISABLE));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
mAllocatedTrafficChannelMap.clear();
|
||||
mTS1ChannelGrantEventMap.clear();
|
||||
mTS2ChannelGrantEventMap.clear();
|
||||
|
||||
//Store the control channel in the allocated channel map so that we don't allocate a traffic channel against it
|
||||
mAllocatedTrafficChannelMap.put(current, parentChannel);
|
||||
|
||||
Reference in New Issue
Block a user