mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-13 17:17:29 -05:00
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:
@@ -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;
|
||||
|
||||
|
||||
23
src/decode/p25/message/filter/P25MessageFilterSet.java
Normal file
23
src/decode/p25/message/filter/P25MessageFilterSet.java
Normal 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;
|
||||
}
|
||||
}
|
||||
54
src/decode/p25/message/filter/PDUMessageFilter.java
Normal file
54
src/decode/p25/message/filter/PDUMessageFilter.java
Normal 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() );
|
||||
}
|
||||
}
|
||||
35
src/decode/p25/message/filter/TDUMessageFilter.java
Normal file
35
src/decode/p25/message/filter/TDUMessageFilter.java
Normal 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;
|
||||
}
|
||||
}
|
||||
54
src/decode/p25/message/filter/TSBKMessageFilter.java
Normal file
54
src/decode/p25/message/filter/TSBKMessageFilter.java
Normal 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() );
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user