mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-12 08:37:25 -05:00
#90 [WIP] adds AttributeMonitor and AliasedStringAttributeMonitor for managing the metadata attributes and issuing attribute change requests, so that we can remove attribute management code out of the decoder states. Adds heuristic tracking with the monitor so that we can better track the talkgroups and other attributes and smooth out the rapidly changing values when we're decoding a weak signal. This will eventually close out issue #101
This commit is contained in:
@@ -25,7 +25,7 @@ public abstract class DecoderState extends Module implements ActivitySummaryProv
|
||||
{
|
||||
/* This has to be a broadcaster in order for references to persist */
|
||||
private Broadcaster<CallEvent> mCallEventBroadcaster = new Broadcaster<>();
|
||||
private Listener<AttributeChangeRequest> mAttributeChangeRequestListener;
|
||||
private Broadcaster<AttributeChangeRequest> mAttributeChangeRequestBroadcaster = new Broadcaster<>();
|
||||
private Listener<DecoderStateEvent> mDecoderStateListener;
|
||||
|
||||
private DecoderStateEventListener mDecoderStateEventListener = new DecoderStateEventListener();
|
||||
@@ -167,10 +167,7 @@ public abstract class DecoderState extends Module implements ActivitySummaryProv
|
||||
*/
|
||||
protected void broadcast(AttributeChangeRequest<?> request)
|
||||
{
|
||||
if(mAttributeChangeRequestListener != null)
|
||||
{
|
||||
mAttributeChangeRequestListener.receive(request);
|
||||
}
|
||||
mAttributeChangeRequestBroadcaster.broadcast(request);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -179,16 +176,23 @@ public abstract class DecoderState extends Module implements ActivitySummaryProv
|
||||
@Override
|
||||
public void setAttributeChangeRequestListener(Listener<AttributeChangeRequest> listener)
|
||||
{
|
||||
mAttributeChangeRequestListener = listener;
|
||||
mAttributeChangeRequestBroadcaster.addListener(listener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes any listener from receiving attribute change requests
|
||||
*/
|
||||
@Override
|
||||
public void removeAttributeChangeRequestListener()
|
||||
public void removeAttributeChangeRequestListener(Listener<AttributeChangeRequest> listener)
|
||||
{
|
||||
mAttributeChangeRequestListener = null;
|
||||
mAttributeChangeRequestBroadcaster.removeListener(listener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Broadaster so that Attribute monitors can broadcast attribute change requests
|
||||
*/
|
||||
protected Listener<AttributeChangeRequest> getAttributeChangeRequestListener()
|
||||
{
|
||||
return mAttributeChangeRequestBroadcaster;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user