Adds message filtering, message history clear, and message history size features to the 'Messages' tab. Filter window dynamically constructs a list of filters from the primary filter and each of the auxiliary filters enabled within the currently selected/enabled processing channel.

This commit is contained in:
dennis.sheirer
2014-12-12 04:30:31 +00:00
parent 33d18b1186
commit 0d8da161e1
28 changed files with 1693 additions and 53 deletions

View File

@@ -1,6 +1,5 @@
package decode.p25;
import java.util.Arrays;
import java.util.HashMap;
import message.Message;
@@ -8,12 +7,9 @@ import message.Message;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import bits.BitSetBuffer;
import sample.Broadcaster;
import sample.Listener;
import alias.AliasList;
import decode.mpt1327.MPT1327Message;
import decode.p25.message.tsbk.TSBKMessage;
import decode.p25.message.tsbk.osp.control.IdentifierUpdate;
import decode.p25.message.tsbk.osp.control.IdentifierUpdateReceiver;

View File

@@ -0,0 +1,23 @@
package decode.p25.message.filter;
import message.Message;
import decode.p25.message.P25Message;
import filter.FilterSet;
public class P25MessageFilterSet extends FilterSet<Message>
{
public P25MessageFilterSet()
{
super( "P25 Message Filter" );
addFilter( new PDUMessageFilter() );
addFilter( new TDUMessageFilter() );
addFilter( new TSBKMessageFilter() );
}
@Override
public boolean canProcess( Message message )
{
return message instanceof P25Message;
}
}

View File

@@ -0,0 +1,54 @@
package decode.p25.message.filter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import message.Message;
import decode.p25.message.pdu.PDUMessage;
import decode.p25.reference.Opcode;
import filter.Filter;
import filter.FilterElement;
public class PDUMessageFilter extends Filter<Message>
{
private HashMap<Opcode,FilterElement<Opcode>> mOpcodeFilterElements =
new HashMap<Opcode,FilterElement<Opcode>>();
public PDUMessageFilter()
{
super( "PDU - Packet Data Unit" );
for( Opcode opcode: Opcode.values() )
{
mOpcodeFilterElements.put( opcode, new FilterElement<Opcode>( opcode ) );
}
}
@Override
public boolean passes( Message message )
{
if( mEnabled && message instanceof PDUMessage )
{
PDUMessage pdu = (PDUMessage)message;
Opcode opcode = pdu.getOpcode();
return mOpcodeFilterElements.get( opcode ).isEnabled();
}
return false;
}
@Override
public boolean canProcess( Message message )
{
return message instanceof PDUMessage;
}
@Override
public List<FilterElement<?>> getFilterElements()
{
return new ArrayList<FilterElement<?>>( mOpcodeFilterElements.values() );
}
}

View File

@@ -0,0 +1,35 @@
package decode.p25.message.filter;
import java.util.Collections;
import java.util.List;
import message.Message;
import decode.p25.message.tdu.TDUMessage;
import filter.Filter;
import filter.FilterElement;
public class TDUMessageFilter extends Filter<Message>
{
public TDUMessageFilter()
{
super( "TDU Terminator Data Unit" );
}
@Override
public boolean passes( Message message )
{
return mEnabled && canProcess( message );
}
@Override
public boolean canProcess( Message message )
{
return message instanceof TDUMessage;
}
@Override
public List<FilterElement<?>> getFilterElements()
{
return Collections.EMPTY_LIST;
}
}

View File

@@ -0,0 +1,54 @@
package decode.p25.message.filter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import message.Message;
import decode.p25.message.tsbk.TSBKMessage;
import decode.p25.reference.Opcode;
import filter.Filter;
import filter.FilterElement;
public class TSBKMessageFilter extends Filter<Message>
{
private HashMap<Opcode,FilterElement<Opcode>> mFilterElements =
new HashMap<Opcode,FilterElement<Opcode>>();
public TSBKMessageFilter()
{
super( "TSBK Trunking Signalling Block" );
for( Opcode opcode: Opcode.values() )
{
mFilterElements.put( opcode, new FilterElement<Opcode>( opcode ) );
}
}
@Override
public boolean passes( Message message )
{
if( mEnabled && canProcess( message ) )
{
TSBKMessage tsbk = (TSBKMessage)message;
Opcode opcode = tsbk.getOpcode();
return mFilterElements.get( opcode ).isEnabled();
}
return false;
}
@Override
public boolean canProcess( Message message )
{
return message instanceof TSBKMessage;
}
@Override
public List<FilterElement<?>> getFilterElements()
{
return new ArrayList<FilterElement<?>>( mFilterElements.values() );
}
}