From e7d3713791ef19407fd41f06c474acd7387bc87a Mon Sep 17 00:00:00 2001 From: denny Date: Mon, 15 Feb 2016 07:32:26 -0500 Subject: [PATCH] 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) --- src/message/IMessageProvider.java | 4 +-- src/module/ProcessingChain.java | 2 +- src/module/decode/Decoder.java | 36 +++++++++++++------ .../decode/fleetsync2/Fleetsync2Decoder.java | 2 +- src/module/decode/lj1200/LJ1200Decoder.java | 2 +- src/module/decode/ltrnet/LTRNetDecoder.java | 2 +- .../ltrstandard/LTRStandardDecoder.java | 2 +- src/module/decode/mdc1200/MDCDecoder.java | 2 +- src/module/decode/mpt1327/MPT1327Decoder.java | 2 +- src/module/decode/p25/P25Decoder.java | 2 +- .../decode/passport/PassportDecoder.java | 2 +- src/module/decode/tait/Tait1200Decoder.java | 4 +-- 12 files changed, 39 insertions(+), 23 deletions(-) diff --git a/src/message/IMessageProvider.java b/src/message/IMessageProvider.java index 4618020a..41b29ac3 100644 --- a/src/message/IMessageProvider.java +++ b/src/message/IMessageProvider.java @@ -4,6 +4,6 @@ import sample.Listener; public interface IMessageProvider { - public void addMessageListener( Listener listener ); - public void removeMessageListener( Listener listener ); + public void setMessageListener( Listener listener ); + public void removeMessageListener(); } diff --git a/src/module/ProcessingChain.java b/src/module/ProcessingChain.java index af501560..5cdc154a 100644 --- a/src/module/ProcessingChain.java +++ b/src/module/ProcessingChain.java @@ -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 ) diff --git a/src/module/decode/Decoder.java b/src/module/decode/Decoder.java index 80cc19b2..cc6880a7 100644 --- a/src/module/decode/Decoder.java +++ b/src/module/decode/Decoder.java @@ -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 { /* This has to be a broadcaster in order for references to persist */ - protected Broadcaster mMessageBroadcaster = new Broadcaster<>(); + protected Listener 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 listener ) + public void setMessageListener( Listener listener ) { - mMessageBroadcaster.addListener( listener ); + mMessageListener = listener; } /** @@ -62,8 +61,25 @@ public abstract class Decoder extends Module implements IMessageProvider * decoders */ @Override - public void removeMessageListener( Listener 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 ); + } } diff --git a/src/module/decode/fleetsync2/Fleetsync2Decoder.java b/src/module/decode/fleetsync2/Fleetsync2Decoder.java index f8092472..43243de6 100644 --- a/src/module/decode/fleetsync2/Fleetsync2Decoder.java +++ b/src/module/decode/fleetsync2/Fleetsync2Decoder.java @@ -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() diff --git a/src/module/decode/lj1200/LJ1200Decoder.java b/src/module/decode/lj1200/LJ1200Decoder.java index 1e20eeda..5b33ed07 100644 --- a/src/module/decode/lj1200/LJ1200Decoder.java +++ b/src/module/decode/lj1200/LJ1200Decoder.java @@ -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 diff --git a/src/module/decode/ltrnet/LTRNetDecoder.java b/src/module/decode/ltrnet/LTRNetDecoder.java index ff12edca..544d8cf6 100644 --- a/src/module/decode/ltrnet/LTRNetDecoder.java +++ b/src/module/decode/ltrnet/LTRNetDecoder.java @@ -74,7 +74,7 @@ public class LTRNetDecoder extends Decoder mLTRMessageFramer.addMessageListener( mLTRMessageProcessor ); - mLTRMessageProcessor.setMessageListener( mMessageBroadcaster ); + mLTRMessageProcessor.setMessageListener( this ); } @Override diff --git a/src/module/decode/ltrstandard/LTRStandardDecoder.java b/src/module/decode/ltrstandard/LTRStandardDecoder.java index 365bd74c..0324e029 100644 --- a/src/module/decode/ltrstandard/LTRStandardDecoder.java +++ b/src/module/decode/ltrstandard/LTRStandardDecoder.java @@ -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 diff --git a/src/module/decode/mdc1200/MDCDecoder.java b/src/module/decode/mdc1200/MDCDecoder.java index 7e973af2..d4351d56 100644 --- a/src/module/decode/mdc1200/MDCDecoder.java +++ b/src/module/decode/mdc1200/MDCDecoder.java @@ -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() diff --git a/src/module/decode/mpt1327/MPT1327Decoder.java b/src/module/decode/mpt1327/MPT1327Decoder.java index 45bc3372..9363b19c 100644 --- a/src/module/decode/mpt1327/MPT1327Decoder.java +++ b/src/module/decode/mpt1327/MPT1327Decoder.java @@ -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 ); } diff --git a/src/module/decode/p25/P25Decoder.java b/src/module/decode/p25/P25Decoder.java index ca46e81b..5c879e5e 100644 --- a/src/module/decode/p25/P25Decoder.java +++ b/src/module/decode/p25/P25Decoder.java @@ -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() diff --git a/src/module/decode/passport/PassportDecoder.java b/src/module/decode/passport/PassportDecoder.java index 46381d8d..ddae98ed 100644 --- a/src/module/decode/passport/PassportDecoder.java +++ b/src/module/decode/passport/PassportDecoder.java @@ -63,7 +63,7 @@ public class PassportDecoder extends Decoder mPassportMessageProcessor = new PassportMessageProcessor( aliasList ); mPassportMessageFramer.addMessageListener( mPassportMessageProcessor ); - mPassportMessageProcessor.setMessageListener( mMessageBroadcaster ); + mPassportMessageProcessor.setMessageListener( this ); } @Override diff --git a/src/module/decode/tait/Tait1200Decoder.java b/src/module/decode/tait/Tait1200Decoder.java index 8f21e80d..9f19f99a 100644 --- a/src/module/decode/tait/Tait1200Decoder.java +++ b/src/module/decode/tait/Tait1200Decoder.java @@ -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()