Removes message broadcaster from Decoder abstract class -- processing

chain has a message broadcaster built in, so the decoder's broadcaster
is redundant.  Changes Decoder(s) to only have a single registered
message listener (ie processing chain)
This commit is contained in:
denny
2016-02-15 07:32:26 -05:00
parent 2c6e35c739
commit e7d3713791
12 changed files with 39 additions and 23 deletions

View File

@@ -4,6 +4,6 @@ import sample.Listener;
public interface IMessageProvider
{
public void addMessageListener( Listener<Message> listener );
public void removeMessageListener( Listener<Message> listener );
public void setMessageListener( Listener<Message> listener );
public void removeMessageListener();
}

View File

@@ -401,7 +401,7 @@ public class ProcessingChain implements IChannelEventListener
if( module instanceof IMessageProvider )
{
((IMessageProvider)module).addMessageListener( mMessageBroadcaster );
((IMessageProvider)module).setMessageListener( mMessageBroadcaster );
}
if( module instanceof IMetadataProvider )

View File

@@ -1,6 +1,6 @@
/*******************************************************************************
* SDR Trunk
* Copyright (C) 2014,2015 Dennis Sheirer
* Copyright (C) 2014-2016 Dennis Sheirer
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -20,13 +20,13 @@ package module.decode;
import message.IMessageProvider;
import message.Message;
import module.Module;
import sample.Broadcaster;
import sample.Listener;
public abstract class Decoder extends Module implements IMessageProvider
public abstract class Decoder extends Module
implements IMessageProvider, Listener<Message>
{
/* This has to be a broadcaster in order for references to persist */
protected Broadcaster<Message> mMessageBroadcaster = new Broadcaster<>();
protected Listener<Message> mMessageListener;
/**
* Decoder - parent class for all decoders, demodulators and components.
@@ -38,8 +38,7 @@ public abstract class Decoder extends Module implements IMessageProvider
@Override
public void dispose()
{
mMessageBroadcaster.dispose();
mMessageBroadcaster = null;
mMessageListener = null;
}
/**
@@ -52,9 +51,9 @@ public abstract class Decoder extends Module implements IMessageProvider
* Adds a listener for receiving decoded messages from this decoder
*/
@Override
public void addMessageListener( Listener<Message> listener )
public void setMessageListener( Listener<Message> listener )
{
mMessageBroadcaster.addListener( listener );
mMessageListener = listener;
}
/**
@@ -62,8 +61,25 @@ public abstract class Decoder extends Module implements IMessageProvider
* decoders
*/
@Override
public void removeMessageListener( Listener<Message> listener )
public void removeMessageListener()
{
mMessageBroadcaster.removeListener( listener );
mMessageListener = null;
}
/**
* Broadcasts the message to the registered message listener
*/
public void broadcast( Message message )
{
if( mMessageListener != null )
{
mMessageListener.receive( message );
}
}
@Override
public void receive( Message message )
{
broadcast( message );
}
}

View File

@@ -90,7 +90,7 @@ public class Fleetsync2Decoder extends Decoder implements IFilteredRealBufferLis
mMessageProcessor = new Fleetsync2MessageProcessor( aliasList );
mMessageFramer.addMessageListener( mMessageProcessor );
mMessageProcessor.setMessageListener( mMessageBroadcaster );
mMessageProcessor.setMessageListener( this );
}
public void dispose()

View File

@@ -100,7 +100,7 @@ public class LJ1200Decoder extends Decoder implements IFilteredRealBufferListene
mMessageProcessor = new LJ1200MessageProcessor( aliasList );
mTowerMessageFramer.addMessageListener( mMessageProcessor );
mTransponderMessageFramer.addMessageListener( mMessageProcessor );
mMessageProcessor.setMessageListener( mMessageBroadcaster );
mMessageProcessor.setMessageListener( this );
}
@Override

View File

@@ -74,7 +74,7 @@ public class LTRNetDecoder extends Decoder
mLTRMessageFramer.addMessageListener( mLTRMessageProcessor );
mLTRMessageProcessor.setMessageListener( mMessageBroadcaster );
mLTRMessageProcessor.setMessageListener( this );
}
@Override

View File

@@ -62,7 +62,7 @@ public class LTRStandardDecoder extends Decoder implements IUnFilteredRealBuffer
mLTRMessageProcessor = new LTRStandardMessageProcessor( direction, aliasList );
mLTRMessageFramer.addMessageListener( mLTRMessageProcessor );
mLTRMessageProcessor.setMessageListener( mMessageBroadcaster );
mLTRMessageProcessor.setMessageListener( this );
}
@Override

View File

@@ -102,7 +102,7 @@ public class MDCDecoder extends Decoder implements IFilteredRealBufferListener,
/* Message Processor */
mMessageProcessor = new MDCMessageProcessor( aliasList );
mMessageFramer.addMessageListener( mMessageProcessor );
mMessageProcessor.addMessageListener( mMessageBroadcaster );
mMessageProcessor.addMessageListener( this );
}
public void dispose()

View File

@@ -140,7 +140,7 @@ public class MPT1327Decoder extends Decoder
/* Fully decoded and framed messages processor */
mMessageProcessor = new MPT1327MessageProcessor( aliasList );
mMessageProcessor.setMessageListener( mMessageBroadcaster );
mMessageProcessor.setMessageListener( this );
mControlMessageFramer.addMessageListener( mMessageProcessor );
mTrafficMessageFramer.addMessageListener( mMessageProcessor );
}

View File

@@ -12,7 +12,7 @@ public abstract class P25Decoder extends Decoder implements Instrumentable
public P25Decoder( AliasList aliasList )
{
mMessageProcessor = new P25MessageProcessor( aliasList );
mMessageProcessor.setMessageListener( mMessageBroadcaster );
mMessageProcessor.setMessageListener( this );
}
public void dispose()

View File

@@ -63,7 +63,7 @@ public class PassportDecoder extends Decoder
mPassportMessageProcessor = new PassportMessageProcessor( aliasList );
mPassportMessageFramer.addMessageListener( mPassportMessageProcessor );
mPassportMessageProcessor.setMessageListener( mMessageBroadcaster );
mPassportMessageProcessor.setMessageListener( this );
}
@Override

View File

@@ -104,8 +104,8 @@ public class Tait1200Decoder extends Decoder implements IFilteredRealBufferListe
mMessageFramerGPS.addMessageListener( mMessageAProcessor );
mMessageFramerANI.addMessageListener( mMessageBProcessor );
mMessageAProcessor.setMessageListener( mMessageBroadcaster );
mMessageBProcessor.setMessageListener( mMessageBroadcaster );
mMessageAProcessor.setMessageListener( this );
mMessageBProcessor.setMessageListener( this );
}
public void dispose()